3 <!-- Copyright (C) 2012 The Android Open Source Project
5 Licensed under the Apache License, Version 2.0 (the "License");
6 you may not use this file except in compliance with the License.
7 You may obtain a copy of the License at
9 http://www.apache.org/licenses/LICENSE-2.0
11 Unless required by applicable law or agreed to in writing, software
12 distributed under the License is distributed on an "AS IS" BASIS,
13 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 See the License for the specific language governing permissions and
15 limitations under the License.
18 <!-- automatically generated from html.mako. do NOT edit directly -->
19 <meta charset="utf-8" />
20 <title>Android Camera HAL3.4 Properties</title>
21 <style type="text/css">
22 body { background-color: #f7f7f7; font-family: Roboto, sans-serif;}
23 h1 { color: #333333; }
24 h2 { color: #333333; }
25 a:link { color: #258aaf; text-decoration: none}
26 a:hover { color: #459aaf; text-decoration: underline }
27 a:visited { color: #154a5f; text-decoration: none}
28 .section { color: #eeeeee; font-size: 1.5em; font-weight: bold; background-color: #888888; padding: 0.5em 0em 0.5em 0.5em; border-width: thick thin thin thin; border-color: #111111 #777777 #777777 #777777}
29 .kind { color: #eeeeee; font-size: 1.2em; font-weight: bold; padding-left: 1.5em; background-color: #aaaaaa }
30 .entry { background-color: #f0f0f0 }
31 .entry_cont { background-color: #f0f0f0 }
32 .entries_header { background-color: #dddddd; text-align: center}
35 .toc_section_header { font-size:1.3em; }
36 .toc_kind_header { font-size:1.2em; }
37 .toc_deprecated { text-decoration:line-through; }
39 /* table column sizes */
40 table { border-collapse:collapse; table-layout: fixed; width: 100%; word-wrap: break-word }
41 td,th { border: 1px solid; border-color: #aaaaaa; padding-left: 0.5em; padding-right: 0.5em }
42 .th_name { width: 20% }
43 .th_units { width: 10% }
44 .th_tags { width: 5% }
45 .th_details { width: 25% }
46 .th_type { width: 17% }
47 .th_description { width: 20% }
48 .th_range { width: 8% }
49 .th_hal_version { width: 5% }
50 td { font-size: 0.9em; }
52 /* hide the first thead, we need it there only to enforce column sizes */
53 .thead_dummy { visibility: hidden; }
56 .entry_name { color: #333333; padding-left:1.0em; font-size:1.1em; font-family: monospace; vertical-align:top; }
57 .entry_name_deprecated { text-decoration:line-through; }
59 /* Entry type flair */
60 .entry_type_name { font-size:1.1em; color: #669900; font-weight: bold;}
61 .entry_type_name_enum:after { color: #669900; font-weight: bold; content:" (enum)" }
62 .entry_type_visibility { font-weight: bolder; padding-left:1em}
63 .entry_type_synthetic { font-weight: bolder; color: #996600; }
64 .entry_type_hwlevel { font-weight: bolder; color: #000066; }
65 .entry_type_deprecated { font-weight: bolder; color: #4D4D4D; }
66 .entry_type_enum_name { font-family: monospace; font-weight: bolder; }
67 .entry_type_enum_notes:before { content:" - " }
68 .entry_type_enum_notes>p:first-child { display:inline; }
69 .entry_type_enum_value:before { content:" = " }
70 .entry_type_enum_value { font-family: monospace; }
71 .entry ul { margin: 0 0 0 0; list-style-position: inside; padding-left: 0.5em; }
72 .entry ul li { padding: 0 0 0 0; margin: 0 0 0 0;}
73 .entry_range_deprecated { font-weight: bolder; }
75 /* Entry tags flair */
76 .entry_tags ul { list-style-type: none; }
78 /* Entry details (full docs) flair */
79 .entry_details_header { font-weight: bold; background-color: #dddddd;
80 text-align: center; font-size: 1.1em; margin-left: 0em; margin-right: 0em; }
82 /* Entry spacer flair */
83 .entry_spacer { background-color: transparent; border-style: none; height: 0.5em; }
85 /* TODO: generate abbr element for each tag link? */
86 /* TODO for each x.y.z try to link it to the entry */
94 supposedly there is a bug in chrome that it lays out tables before
95 it knows its being printed, so the page-break-* styles are ignored
97 tr { page-break-after: always; page-break-inside: avoid; }
106 <h1>Android Camera HAL3.2 Properties</h1>
109 <h2>Table of Contents</h2>
111 <li><a href="#tag_index" class="toc_section_header">Tags</a></li>
113 <span class="toc_section_header"><a href="#section_colorCorrection">colorCorrection</a></span>
114 <ul class="toc_section">
116 <span class="toc_kind_header">controls</span>
117 <ul class="toc_section">
119 ><a href="#controls_android.colorCorrection.mode">android.colorCorrection.mode</a></li>
121 ><a href="#controls_android.colorCorrection.transform">android.colorCorrection.transform</a></li>
123 ><a href="#controls_android.colorCorrection.gains">android.colorCorrection.gains</a></li>
125 ><a href="#controls_android.colorCorrection.aberrationMode">android.colorCorrection.aberrationMode</a></li>
129 <span class="toc_kind_header">dynamic</span>
130 <ul class="toc_section">
132 ><a href="#dynamic_android.colorCorrection.mode">android.colorCorrection.mode</a></li>
134 ><a href="#dynamic_android.colorCorrection.transform">android.colorCorrection.transform</a></li>
136 ><a href="#dynamic_android.colorCorrection.gains">android.colorCorrection.gains</a></li>
138 ><a href="#dynamic_android.colorCorrection.aberrationMode">android.colorCorrection.aberrationMode</a></li>
142 <span class="toc_kind_header">static</span>
143 <ul class="toc_section">
145 ><a href="#static_android.colorCorrection.availableAberrationModes">android.colorCorrection.availableAberrationModes</a></li>
148 </ul> <!-- toc_section -->
151 <span class="toc_section_header"><a href="#section_control">control</a></span>
152 <ul class="toc_section">
154 <span class="toc_kind_header">controls</span>
155 <ul class="toc_section">
157 ><a href="#controls_android.control.aeAntibandingMode">android.control.aeAntibandingMode</a></li>
159 ><a href="#controls_android.control.aeExposureCompensation">android.control.aeExposureCompensation</a></li>
161 ><a href="#controls_android.control.aeLock">android.control.aeLock</a></li>
163 ><a href="#controls_android.control.aeMode">android.control.aeMode</a></li>
165 ><a href="#controls_android.control.aeRegions">android.control.aeRegions</a></li>
167 ><a href="#controls_android.control.aeTargetFpsRange">android.control.aeTargetFpsRange</a></li>
169 ><a href="#controls_android.control.aePrecaptureTrigger">android.control.aePrecaptureTrigger</a></li>
171 ><a href="#controls_android.control.afMode">android.control.afMode</a></li>
173 ><a href="#controls_android.control.afRegions">android.control.afRegions</a></li>
175 ><a href="#controls_android.control.afTrigger">android.control.afTrigger</a></li>
177 ><a href="#controls_android.control.awbLock">android.control.awbLock</a></li>
179 ><a href="#controls_android.control.awbMode">android.control.awbMode</a></li>
181 ><a href="#controls_android.control.awbRegions">android.control.awbRegions</a></li>
183 ><a href="#controls_android.control.captureIntent">android.control.captureIntent</a></li>
185 ><a href="#controls_android.control.effectMode">android.control.effectMode</a></li>
187 ><a href="#controls_android.control.mode">android.control.mode</a></li>
189 ><a href="#controls_android.control.sceneMode">android.control.sceneMode</a></li>
191 ><a href="#controls_android.control.videoStabilizationMode">android.control.videoStabilizationMode</a></li>
193 ><a href="#controls_android.control.postRawSensitivityBoost">android.control.postRawSensitivityBoost</a></li>
195 ><a href="#controls_android.control.enableZsl">android.control.enableZsl</a></li>
199 <span class="toc_kind_header">static</span>
200 <ul class="toc_section">
202 ><a href="#static_android.control.aeAvailableAntibandingModes">android.control.aeAvailableAntibandingModes</a></li>
204 ><a href="#static_android.control.aeAvailableModes">android.control.aeAvailableModes</a></li>
206 ><a href="#static_android.control.aeAvailableTargetFpsRanges">android.control.aeAvailableTargetFpsRanges</a></li>
208 ><a href="#static_android.control.aeCompensationRange">android.control.aeCompensationRange</a></li>
210 ><a href="#static_android.control.aeCompensationStep">android.control.aeCompensationStep</a></li>
212 ><a href="#static_android.control.afAvailableModes">android.control.afAvailableModes</a></li>
214 ><a href="#static_android.control.availableEffects">android.control.availableEffects</a></li>
216 ><a href="#static_android.control.availableSceneModes">android.control.availableSceneModes</a></li>
218 ><a href="#static_android.control.availableVideoStabilizationModes">android.control.availableVideoStabilizationModes</a></li>
220 ><a href="#static_android.control.awbAvailableModes">android.control.awbAvailableModes</a></li>
222 ><a href="#static_android.control.maxRegions">android.control.maxRegions</a></li>
224 ><a href="#static_android.control.maxRegionsAe">android.control.maxRegionsAe</a></li>
226 ><a href="#static_android.control.maxRegionsAwb">android.control.maxRegionsAwb</a></li>
228 ><a href="#static_android.control.maxRegionsAf">android.control.maxRegionsAf</a></li>
230 ><a href="#static_android.control.sceneModeOverrides">android.control.sceneModeOverrides</a></li>
232 ><a href="#static_android.control.availableHighSpeedVideoConfigurations">android.control.availableHighSpeedVideoConfigurations</a></li>
234 ><a href="#static_android.control.aeLockAvailable">android.control.aeLockAvailable</a></li>
236 ><a href="#static_android.control.awbLockAvailable">android.control.awbLockAvailable</a></li>
238 ><a href="#static_android.control.availableModes">android.control.availableModes</a></li>
240 ><a href="#static_android.control.postRawSensitivityBoostRange">android.control.postRawSensitivityBoostRange</a></li>
244 <span class="toc_kind_header">dynamic</span>
245 <ul class="toc_section">
247 class="toc_deprecated"
248 ><a href="#dynamic_android.control.aePrecaptureId">android.control.aePrecaptureId</a></li>
250 ><a href="#dynamic_android.control.aeAntibandingMode">android.control.aeAntibandingMode</a></li>
252 ><a href="#dynamic_android.control.aeExposureCompensation">android.control.aeExposureCompensation</a></li>
254 ><a href="#dynamic_android.control.aeLock">android.control.aeLock</a></li>
256 ><a href="#dynamic_android.control.aeMode">android.control.aeMode</a></li>
258 ><a href="#dynamic_android.control.aeRegions">android.control.aeRegions</a></li>
260 ><a href="#dynamic_android.control.aeTargetFpsRange">android.control.aeTargetFpsRange</a></li>
262 ><a href="#dynamic_android.control.aePrecaptureTrigger">android.control.aePrecaptureTrigger</a></li>
264 ><a href="#dynamic_android.control.aeState">android.control.aeState</a></li>
266 ><a href="#dynamic_android.control.afMode">android.control.afMode</a></li>
268 ><a href="#dynamic_android.control.afRegions">android.control.afRegions</a></li>
270 ><a href="#dynamic_android.control.afTrigger">android.control.afTrigger</a></li>
272 ><a href="#dynamic_android.control.afState">android.control.afState</a></li>
274 class="toc_deprecated"
275 ><a href="#dynamic_android.control.afTriggerId">android.control.afTriggerId</a></li>
277 ><a href="#dynamic_android.control.awbLock">android.control.awbLock</a></li>
279 ><a href="#dynamic_android.control.awbMode">android.control.awbMode</a></li>
281 ><a href="#dynamic_android.control.awbRegions">android.control.awbRegions</a></li>
283 ><a href="#dynamic_android.control.captureIntent">android.control.captureIntent</a></li>
285 ><a href="#dynamic_android.control.awbState">android.control.awbState</a></li>
287 ><a href="#dynamic_android.control.effectMode">android.control.effectMode</a></li>
289 ><a href="#dynamic_android.control.mode">android.control.mode</a></li>
291 ><a href="#dynamic_android.control.sceneMode">android.control.sceneMode</a></li>
293 ><a href="#dynamic_android.control.videoStabilizationMode">android.control.videoStabilizationMode</a></li>
295 ><a href="#dynamic_android.control.postRawSensitivityBoost">android.control.postRawSensitivityBoost</a></li>
297 ><a href="#dynamic_android.control.enableZsl">android.control.enableZsl</a></li>
299 ><a href="#dynamic_android.control.afSceneChange">android.control.afSceneChange</a></li>
302 </ul> <!-- toc_section -->
305 <span class="toc_section_header"><a href="#section_demosaic">demosaic</a></span>
306 <ul class="toc_section">
308 <span class="toc_kind_header">controls</span>
309 <ul class="toc_section">
311 ><a href="#controls_android.demosaic.mode">android.demosaic.mode</a></li>
314 </ul> <!-- toc_section -->
317 <span class="toc_section_header"><a href="#section_edge">edge</a></span>
318 <ul class="toc_section">
320 <span class="toc_kind_header">controls</span>
321 <ul class="toc_section">
323 ><a href="#controls_android.edge.mode">android.edge.mode</a></li>
325 ><a href="#controls_android.edge.strength">android.edge.strength</a></li>
329 <span class="toc_kind_header">static</span>
330 <ul class="toc_section">
332 ><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a></li>
336 <span class="toc_kind_header">dynamic</span>
337 <ul class="toc_section">
339 ><a href="#dynamic_android.edge.mode">android.edge.mode</a></li>
342 </ul> <!-- toc_section -->
345 <span class="toc_section_header"><a href="#section_flash">flash</a></span>
346 <ul class="toc_section">
348 <span class="toc_kind_header">controls</span>
349 <ul class="toc_section">
351 ><a href="#controls_android.flash.firingPower">android.flash.firingPower</a></li>
353 ><a href="#controls_android.flash.firingTime">android.flash.firingTime</a></li>
355 ><a href="#controls_android.flash.mode">android.flash.mode</a></li>
359 <span class="toc_kind_header">static</span>
360 <ul class="toc_section">
363 ><a href="#static_android.flash.info.available">android.flash.info.available</a></li>
365 ><a href="#static_android.flash.info.chargeDuration">android.flash.info.chargeDuration</a></li>
368 ><a href="#static_android.flash.colorTemperature">android.flash.colorTemperature</a></li>
370 ><a href="#static_android.flash.maxEnergy">android.flash.maxEnergy</a></li>
374 <span class="toc_kind_header">dynamic</span>
375 <ul class="toc_section">
377 ><a href="#dynamic_android.flash.firingPower">android.flash.firingPower</a></li>
379 ><a href="#dynamic_android.flash.firingTime">android.flash.firingTime</a></li>
381 ><a href="#dynamic_android.flash.mode">android.flash.mode</a></li>
383 ><a href="#dynamic_android.flash.state">android.flash.state</a></li>
386 </ul> <!-- toc_section -->
389 <span class="toc_section_header"><a href="#section_hotPixel">hotPixel</a></span>
390 <ul class="toc_section">
392 <span class="toc_kind_header">controls</span>
393 <ul class="toc_section">
395 ><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a></li>
399 <span class="toc_kind_header">static</span>
400 <ul class="toc_section">
402 ><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a></li>
406 <span class="toc_kind_header">dynamic</span>
407 <ul class="toc_section">
409 ><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a></li>
412 </ul> <!-- toc_section -->
415 <span class="toc_section_header"><a href="#section_jpeg">jpeg</a></span>
416 <ul class="toc_section">
418 <span class="toc_kind_header">controls</span>
419 <ul class="toc_section">
421 ><a href="#controls_android.jpeg.gpsLocation">android.jpeg.gpsLocation</a></li>
423 ><a href="#controls_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a></li>
425 ><a href="#controls_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a></li>
427 ><a href="#controls_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a></li>
429 ><a href="#controls_android.jpeg.orientation">android.jpeg.orientation</a></li>
431 ><a href="#controls_android.jpeg.quality">android.jpeg.quality</a></li>
433 ><a href="#controls_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a></li>
435 ><a href="#controls_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a></li>
439 <span class="toc_kind_header">static</span>
440 <ul class="toc_section">
442 ><a href="#static_android.jpeg.availableThumbnailSizes">android.jpeg.availableThumbnailSizes</a></li>
444 ><a href="#static_android.jpeg.maxSize">android.jpeg.maxSize</a></li>
448 <span class="toc_kind_header">dynamic</span>
449 <ul class="toc_section">
451 ><a href="#dynamic_android.jpeg.gpsLocation">android.jpeg.gpsLocation</a></li>
453 ><a href="#dynamic_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a></li>
455 ><a href="#dynamic_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a></li>
457 ><a href="#dynamic_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a></li>
459 ><a href="#dynamic_android.jpeg.orientation">android.jpeg.orientation</a></li>
461 ><a href="#dynamic_android.jpeg.quality">android.jpeg.quality</a></li>
463 ><a href="#dynamic_android.jpeg.size">android.jpeg.size</a></li>
465 ><a href="#dynamic_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a></li>
467 ><a href="#dynamic_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a></li>
470 </ul> <!-- toc_section -->
473 <span class="toc_section_header"><a href="#section_lens">lens</a></span>
474 <ul class="toc_section">
476 <span class="toc_kind_header">controls</span>
477 <ul class="toc_section">
479 ><a href="#controls_android.lens.aperture">android.lens.aperture</a></li>
481 ><a href="#controls_android.lens.filterDensity">android.lens.filterDensity</a></li>
483 ><a href="#controls_android.lens.focalLength">android.lens.focalLength</a></li>
485 ><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a></li>
487 ><a href="#controls_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a></li>
491 <span class="toc_kind_header">static</span>
492 <ul class="toc_section">
495 ><a href="#static_android.lens.info.availableApertures">android.lens.info.availableApertures</a></li>
497 ><a href="#static_android.lens.info.availableFilterDensities">android.lens.info.availableFilterDensities</a></li>
499 ><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a></li>
501 ><a href="#static_android.lens.info.availableOpticalStabilization">android.lens.info.availableOpticalStabilization</a></li>
503 ><a href="#static_android.lens.info.hyperfocalDistance">android.lens.info.hyperfocalDistance</a></li>
505 ><a href="#static_android.lens.info.minimumFocusDistance">android.lens.info.minimumFocusDistance</a></li>
507 ><a href="#static_android.lens.info.shadingMapSize">android.lens.info.shadingMapSize</a></li>
509 ><a href="#static_android.lens.info.focusDistanceCalibration">android.lens.info.focusDistanceCalibration</a></li>
512 ><a href="#static_android.lens.facing">android.lens.facing</a></li>
514 ><a href="#static_android.lens.poseRotation">android.lens.poseRotation</a></li>
516 ><a href="#static_android.lens.poseTranslation">android.lens.poseTranslation</a></li>
518 ><a href="#static_android.lens.intrinsicCalibration">android.lens.intrinsicCalibration</a></li>
520 ><a href="#static_android.lens.radialDistortion">android.lens.radialDistortion</a></li>
522 ><a href="#static_android.lens.poseReference">android.lens.poseReference</a></li>
526 <span class="toc_kind_header">dynamic</span>
527 <ul class="toc_section">
529 ><a href="#dynamic_android.lens.aperture">android.lens.aperture</a></li>
531 ><a href="#dynamic_android.lens.filterDensity">android.lens.filterDensity</a></li>
533 ><a href="#dynamic_android.lens.focalLength">android.lens.focalLength</a></li>
535 ><a href="#dynamic_android.lens.focusDistance">android.lens.focusDistance</a></li>
537 ><a href="#dynamic_android.lens.focusRange">android.lens.focusRange</a></li>
539 ><a href="#dynamic_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a></li>
541 ><a href="#dynamic_android.lens.state">android.lens.state</a></li>
543 ><a href="#dynamic_android.lens.poseRotation">android.lens.poseRotation</a></li>
545 ><a href="#dynamic_android.lens.poseTranslation">android.lens.poseTranslation</a></li>
547 ><a href="#dynamic_android.lens.intrinsicCalibration">android.lens.intrinsicCalibration</a></li>
549 ><a href="#dynamic_android.lens.radialDistortion">android.lens.radialDistortion</a></li>
552 </ul> <!-- toc_section -->
555 <span class="toc_section_header"><a href="#section_noiseReduction">noiseReduction</a></span>
556 <ul class="toc_section">
558 <span class="toc_kind_header">controls</span>
559 <ul class="toc_section">
561 ><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a></li>
563 ><a href="#controls_android.noiseReduction.strength">android.noiseReduction.strength</a></li>
567 <span class="toc_kind_header">static</span>
568 <ul class="toc_section">
570 ><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a></li>
574 <span class="toc_kind_header">dynamic</span>
575 <ul class="toc_section">
577 ><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a></li>
580 </ul> <!-- toc_section -->
583 <span class="toc_section_header"><a href="#section_quirks">quirks</a></span>
584 <ul class="toc_section">
586 <span class="toc_kind_header">static</span>
587 <ul class="toc_section">
589 class="toc_deprecated"
590 ><a href="#static_android.quirks.meteringCropRegion">android.quirks.meteringCropRegion</a></li>
592 class="toc_deprecated"
593 ><a href="#static_android.quirks.triggerAfWithAuto">android.quirks.triggerAfWithAuto</a></li>
595 class="toc_deprecated"
596 ><a href="#static_android.quirks.useZslFormat">android.quirks.useZslFormat</a></li>
598 class="toc_deprecated"
599 ><a href="#static_android.quirks.usePartialResult">android.quirks.usePartialResult</a></li>
603 <span class="toc_kind_header">dynamic</span>
604 <ul class="toc_section">
606 class="toc_deprecated"
607 ><a href="#dynamic_android.quirks.partialResult">android.quirks.partialResult</a></li>
610 </ul> <!-- toc_section -->
613 <span class="toc_section_header"><a href="#section_request">request</a></span>
614 <ul class="toc_section">
616 <span class="toc_kind_header">controls</span>
617 <ul class="toc_section">
619 class="toc_deprecated"
620 ><a href="#controls_android.request.frameCount">android.request.frameCount</a></li>
622 ><a href="#controls_android.request.id">android.request.id</a></li>
624 class="toc_deprecated"
625 ><a href="#controls_android.request.inputStreams">android.request.inputStreams</a></li>
627 ><a href="#controls_android.request.metadataMode">android.request.metadataMode</a></li>
629 class="toc_deprecated"
630 ><a href="#controls_android.request.outputStreams">android.request.outputStreams</a></li>
632 class="toc_deprecated"
633 ><a href="#controls_android.request.type">android.request.type</a></li>
637 <span class="toc_kind_header">static</span>
638 <ul class="toc_section">
640 ><a href="#static_android.request.maxNumOutputStreams">android.request.maxNumOutputStreams</a></li>
642 ><a href="#static_android.request.maxNumOutputRaw">android.request.maxNumOutputRaw</a></li>
644 ><a href="#static_android.request.maxNumOutputProc">android.request.maxNumOutputProc</a></li>
646 ><a href="#static_android.request.maxNumOutputProcStalling">android.request.maxNumOutputProcStalling</a></li>
648 class="toc_deprecated"
649 ><a href="#static_android.request.maxNumReprocessStreams">android.request.maxNumReprocessStreams</a></li>
651 ><a href="#static_android.request.maxNumInputStreams">android.request.maxNumInputStreams</a></li>
653 ><a href="#static_android.request.pipelineMaxDepth">android.request.pipelineMaxDepth</a></li>
655 ><a href="#static_android.request.partialResultCount">android.request.partialResultCount</a></li>
657 ><a href="#static_android.request.availableCapabilities">android.request.availableCapabilities</a></li>
659 ><a href="#static_android.request.availableRequestKeys">android.request.availableRequestKeys</a></li>
661 ><a href="#static_android.request.availableResultKeys">android.request.availableResultKeys</a></li>
663 ><a href="#static_android.request.availableCharacteristicsKeys">android.request.availableCharacteristicsKeys</a></li>
665 ><a href="#static_android.request.availableSessionKeys">android.request.availableSessionKeys</a></li>
667 ><a href="#static_android.request.availablePhysicalCameraRequestKeys">android.request.availablePhysicalCameraRequestKeys</a></li>
671 <span class="toc_kind_header">dynamic</span>
672 <ul class="toc_section">
674 class="toc_deprecated"
675 ><a href="#dynamic_android.request.frameCount">android.request.frameCount</a></li>
677 ><a href="#dynamic_android.request.id">android.request.id</a></li>
679 ><a href="#dynamic_android.request.metadataMode">android.request.metadataMode</a></li>
681 class="toc_deprecated"
682 ><a href="#dynamic_android.request.outputStreams">android.request.outputStreams</a></li>
684 ><a href="#dynamic_android.request.pipelineDepth">android.request.pipelineDepth</a></li>
687 </ul> <!-- toc_section -->
690 <span class="toc_section_header"><a href="#section_scaler">scaler</a></span>
691 <ul class="toc_section">
693 <span class="toc_kind_header">controls</span>
694 <ul class="toc_section">
696 ><a href="#controls_android.scaler.cropRegion">android.scaler.cropRegion</a></li>
700 <span class="toc_kind_header">static</span>
701 <ul class="toc_section">
703 class="toc_deprecated"
704 ><a href="#static_android.scaler.availableFormats">android.scaler.availableFormats</a></li>
706 class="toc_deprecated"
707 ><a href="#static_android.scaler.availableJpegMinDurations">android.scaler.availableJpegMinDurations</a></li>
709 class="toc_deprecated"
710 ><a href="#static_android.scaler.availableJpegSizes">android.scaler.availableJpegSizes</a></li>
712 ><a href="#static_android.scaler.availableMaxDigitalZoom">android.scaler.availableMaxDigitalZoom</a></li>
714 class="toc_deprecated"
715 ><a href="#static_android.scaler.availableProcessedMinDurations">android.scaler.availableProcessedMinDurations</a></li>
717 class="toc_deprecated"
718 ><a href="#static_android.scaler.availableProcessedSizes">android.scaler.availableProcessedSizes</a></li>
720 class="toc_deprecated"
721 ><a href="#static_android.scaler.availableRawMinDurations">android.scaler.availableRawMinDurations</a></li>
723 class="toc_deprecated"
724 ><a href="#static_android.scaler.availableRawSizes">android.scaler.availableRawSizes</a></li>
726 ><a href="#static_android.scaler.availableInputOutputFormatsMap">android.scaler.availableInputOutputFormatsMap</a></li>
728 ><a href="#static_android.scaler.availableStreamConfigurations">android.scaler.availableStreamConfigurations</a></li>
730 ><a href="#static_android.scaler.availableMinFrameDurations">android.scaler.availableMinFrameDurations</a></li>
732 ><a href="#static_android.scaler.availableStallDurations">android.scaler.availableStallDurations</a></li>
734 ><a href="#static_android.scaler.streamConfigurationMap">android.scaler.streamConfigurationMap</a></li>
736 ><a href="#static_android.scaler.croppingType">android.scaler.croppingType</a></li>
740 <span class="toc_kind_header">dynamic</span>
741 <ul class="toc_section">
743 ><a href="#dynamic_android.scaler.cropRegion">android.scaler.cropRegion</a></li>
746 </ul> <!-- toc_section -->
749 <span class="toc_section_header"><a href="#section_sensor">sensor</a></span>
750 <ul class="toc_section">
752 <span class="toc_kind_header">controls</span>
753 <ul class="toc_section">
755 ><a href="#controls_android.sensor.exposureTime">android.sensor.exposureTime</a></li>
757 ><a href="#controls_android.sensor.frameDuration">android.sensor.frameDuration</a></li>
759 ><a href="#controls_android.sensor.sensitivity">android.sensor.sensitivity</a></li>
761 ><a href="#controls_android.sensor.testPatternData">android.sensor.testPatternData</a></li>
763 ><a href="#controls_android.sensor.testPatternMode">android.sensor.testPatternMode</a></li>
767 <span class="toc_kind_header">static</span>
768 <ul class="toc_section">
771 ><a href="#static_android.sensor.info.activeArraySize">android.sensor.info.activeArraySize</a></li>
773 ><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a></li>
775 ><a href="#static_android.sensor.info.colorFilterArrangement">android.sensor.info.colorFilterArrangement</a></li>
777 ><a href="#static_android.sensor.info.exposureTimeRange">android.sensor.info.exposureTimeRange</a></li>
779 ><a href="#static_android.sensor.info.maxFrameDuration">android.sensor.info.maxFrameDuration</a></li>
781 ><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a></li>
783 ><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a></li>
785 ><a href="#static_android.sensor.info.whiteLevel">android.sensor.info.whiteLevel</a></li>
787 ><a href="#static_android.sensor.info.timestampSource">android.sensor.info.timestampSource</a></li>
789 ><a href="#static_android.sensor.info.lensShadingApplied">android.sensor.info.lensShadingApplied</a></li>
791 ><a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.sensor.info.preCorrectionActiveArraySize</a></li>
794 ><a href="#static_android.sensor.referenceIlluminant1">android.sensor.referenceIlluminant1</a></li>
796 ><a href="#static_android.sensor.referenceIlluminant2">android.sensor.referenceIlluminant2</a></li>
798 ><a href="#static_android.sensor.calibrationTransform1">android.sensor.calibrationTransform1</a></li>
800 ><a href="#static_android.sensor.calibrationTransform2">android.sensor.calibrationTransform2</a></li>
802 ><a href="#static_android.sensor.colorTransform1">android.sensor.colorTransform1</a></li>
804 ><a href="#static_android.sensor.colorTransform2">android.sensor.colorTransform2</a></li>
806 ><a href="#static_android.sensor.forwardMatrix1">android.sensor.forwardMatrix1</a></li>
808 ><a href="#static_android.sensor.forwardMatrix2">android.sensor.forwardMatrix2</a></li>
810 ><a href="#static_android.sensor.baseGainFactor">android.sensor.baseGainFactor</a></li>
812 ><a href="#static_android.sensor.blackLevelPattern">android.sensor.blackLevelPattern</a></li>
814 ><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a></li>
816 ><a href="#static_android.sensor.orientation">android.sensor.orientation</a></li>
818 ><a href="#static_android.sensor.profileHueSatMapDimensions">android.sensor.profileHueSatMapDimensions</a></li>
820 ><a href="#static_android.sensor.availableTestPatternModes">android.sensor.availableTestPatternModes</a></li>
822 ><a href="#static_android.sensor.opticalBlackRegions">android.sensor.opticalBlackRegions</a></li>
824 ><a href="#static_android.sensor.opaqueRawSize">android.sensor.opaqueRawSize</a></li>
828 <span class="toc_kind_header">dynamic</span>
829 <ul class="toc_section">
831 ><a href="#dynamic_android.sensor.exposureTime">android.sensor.exposureTime</a></li>
833 ><a href="#dynamic_android.sensor.frameDuration">android.sensor.frameDuration</a></li>
835 ><a href="#dynamic_android.sensor.sensitivity">android.sensor.sensitivity</a></li>
837 ><a href="#dynamic_android.sensor.timestamp">android.sensor.timestamp</a></li>
839 ><a href="#dynamic_android.sensor.temperature">android.sensor.temperature</a></li>
841 ><a href="#dynamic_android.sensor.neutralColorPoint">android.sensor.neutralColorPoint</a></li>
843 ><a href="#dynamic_android.sensor.noiseProfile">android.sensor.noiseProfile</a></li>
845 ><a href="#dynamic_android.sensor.profileHueSatMap">android.sensor.profileHueSatMap</a></li>
847 ><a href="#dynamic_android.sensor.profileToneCurve">android.sensor.profileToneCurve</a></li>
849 ><a href="#dynamic_android.sensor.greenSplit">android.sensor.greenSplit</a></li>
851 ><a href="#dynamic_android.sensor.testPatternData">android.sensor.testPatternData</a></li>
853 ><a href="#dynamic_android.sensor.testPatternMode">android.sensor.testPatternMode</a></li>
855 ><a href="#dynamic_android.sensor.rollingShutterSkew">android.sensor.rollingShutterSkew</a></li>
857 ><a href="#dynamic_android.sensor.dynamicBlackLevel">android.sensor.dynamicBlackLevel</a></li>
859 ><a href="#dynamic_android.sensor.dynamicWhiteLevel">android.sensor.dynamicWhiteLevel</a></li>
862 </ul> <!-- toc_section -->
865 <span class="toc_section_header"><a href="#section_shading">shading</a></span>
866 <ul class="toc_section">
868 <span class="toc_kind_header">controls</span>
869 <ul class="toc_section">
871 ><a href="#controls_android.shading.mode">android.shading.mode</a></li>
873 ><a href="#controls_android.shading.strength">android.shading.strength</a></li>
877 <span class="toc_kind_header">dynamic</span>
878 <ul class="toc_section">
880 ><a href="#dynamic_android.shading.mode">android.shading.mode</a></li>
884 <span class="toc_kind_header">static</span>
885 <ul class="toc_section">
887 ><a href="#static_android.shading.availableModes">android.shading.availableModes</a></li>
890 </ul> <!-- toc_section -->
893 <span class="toc_section_header"><a href="#section_statistics">statistics</a></span>
894 <ul class="toc_section">
896 <span class="toc_kind_header">controls</span>
897 <ul class="toc_section">
899 ><a href="#controls_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a></li>
901 ><a href="#controls_android.statistics.histogramMode">android.statistics.histogramMode</a></li>
903 ><a href="#controls_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a></li>
905 ><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a></li>
907 ><a href="#controls_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a></li>
909 ><a href="#controls_android.statistics.oisDataMode">android.statistics.oisDataMode</a></li>
913 <span class="toc_kind_header">static</span>
914 <ul class="toc_section">
917 ><a href="#static_android.statistics.info.availableFaceDetectModes">android.statistics.info.availableFaceDetectModes</a></li>
919 ><a href="#static_android.statistics.info.histogramBucketCount">android.statistics.info.histogramBucketCount</a></li>
921 ><a href="#static_android.statistics.info.maxFaceCount">android.statistics.info.maxFaceCount</a></li>
923 ><a href="#static_android.statistics.info.maxHistogramCount">android.statistics.info.maxHistogramCount</a></li>
925 ><a href="#static_android.statistics.info.maxSharpnessMapValue">android.statistics.info.maxSharpnessMapValue</a></li>
927 ><a href="#static_android.statistics.info.sharpnessMapSize">android.statistics.info.sharpnessMapSize</a></li>
929 ><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a></li>
931 ><a href="#static_android.statistics.info.availableLensShadingMapModes">android.statistics.info.availableLensShadingMapModes</a></li>
933 ><a href="#static_android.statistics.info.availableOisDataModes">android.statistics.info.availableOisDataModes</a></li>
938 <span class="toc_kind_header">dynamic</span>
939 <ul class="toc_section">
941 ><a href="#dynamic_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a></li>
943 ><a href="#dynamic_android.statistics.faceIds">android.statistics.faceIds</a></li>
945 ><a href="#dynamic_android.statistics.faceLandmarks">android.statistics.faceLandmarks</a></li>
947 ><a href="#dynamic_android.statistics.faceRectangles">android.statistics.faceRectangles</a></li>
949 ><a href="#dynamic_android.statistics.faceScores">android.statistics.faceScores</a></li>
951 ><a href="#dynamic_android.statistics.faces">android.statistics.faces</a></li>
953 ><a href="#dynamic_android.statistics.histogram">android.statistics.histogram</a></li>
955 ><a href="#dynamic_android.statistics.histogramMode">android.statistics.histogramMode</a></li>
957 ><a href="#dynamic_android.statistics.sharpnessMap">android.statistics.sharpnessMap</a></li>
959 ><a href="#dynamic_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a></li>
961 ><a href="#dynamic_android.statistics.lensShadingCorrectionMap">android.statistics.lensShadingCorrectionMap</a></li>
963 ><a href="#dynamic_android.statistics.lensShadingMap">android.statistics.lensShadingMap</a></li>
965 class="toc_deprecated"
966 ><a href="#dynamic_android.statistics.predictedColorGains">android.statistics.predictedColorGains</a></li>
968 class="toc_deprecated"
969 ><a href="#dynamic_android.statistics.predictedColorTransform">android.statistics.predictedColorTransform</a></li>
971 ><a href="#dynamic_android.statistics.sceneFlicker">android.statistics.sceneFlicker</a></li>
973 ><a href="#dynamic_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a></li>
975 ><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a></li>
977 ><a href="#dynamic_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a></li>
979 ><a href="#dynamic_android.statistics.oisDataMode">android.statistics.oisDataMode</a></li>
981 ><a href="#dynamic_android.statistics.oisTimestamps">android.statistics.oisTimestamps</a></li>
983 ><a href="#dynamic_android.statistics.oisXShifts">android.statistics.oisXShifts</a></li>
985 ><a href="#dynamic_android.statistics.oisYShifts">android.statistics.oisYShifts</a></li>
988 </ul> <!-- toc_section -->
991 <span class="toc_section_header"><a href="#section_tonemap">tonemap</a></span>
992 <ul class="toc_section">
994 <span class="toc_kind_header">controls</span>
995 <ul class="toc_section">
997 ><a href="#controls_android.tonemap.curveBlue">android.tonemap.curveBlue</a></li>
999 ><a href="#controls_android.tonemap.curveGreen">android.tonemap.curveGreen</a></li>
1001 ><a href="#controls_android.tonemap.curveRed">android.tonemap.curveRed</a></li>
1003 ><a href="#controls_android.tonemap.curve">android.tonemap.curve</a></li>
1005 ><a href="#controls_android.tonemap.mode">android.tonemap.mode</a></li>
1007 ><a href="#controls_android.tonemap.gamma">android.tonemap.gamma</a></li>
1009 ><a href="#controls_android.tonemap.presetCurve">android.tonemap.presetCurve</a></li>
1013 <span class="toc_kind_header">static</span>
1014 <ul class="toc_section">
1016 ><a href="#static_android.tonemap.maxCurvePoints">android.tonemap.maxCurvePoints</a></li>
1018 ><a href="#static_android.tonemap.availableToneMapModes">android.tonemap.availableToneMapModes</a></li>
1022 <span class="toc_kind_header">dynamic</span>
1023 <ul class="toc_section">
1025 ><a href="#dynamic_android.tonemap.curveBlue">android.tonemap.curveBlue</a></li>
1027 ><a href="#dynamic_android.tonemap.curveGreen">android.tonemap.curveGreen</a></li>
1029 ><a href="#dynamic_android.tonemap.curveRed">android.tonemap.curveRed</a></li>
1031 ><a href="#dynamic_android.tonemap.curve">android.tonemap.curve</a></li>
1033 ><a href="#dynamic_android.tonemap.mode">android.tonemap.mode</a></li>
1035 ><a href="#dynamic_android.tonemap.gamma">android.tonemap.gamma</a></li>
1037 ><a href="#dynamic_android.tonemap.presetCurve">android.tonemap.presetCurve</a></li>
1040 </ul> <!-- toc_section -->
1043 <span class="toc_section_header"><a href="#section_led">led</a></span>
1044 <ul class="toc_section">
1046 <span class="toc_kind_header">controls</span>
1047 <ul class="toc_section">
1049 ><a href="#controls_android.led.transmit">android.led.transmit</a></li>
1053 <span class="toc_kind_header">dynamic</span>
1054 <ul class="toc_section">
1056 ><a href="#dynamic_android.led.transmit">android.led.transmit</a></li>
1060 <span class="toc_kind_header">static</span>
1061 <ul class="toc_section">
1063 ><a href="#static_android.led.availableLeds">android.led.availableLeds</a></li>
1066 </ul> <!-- toc_section -->
1069 <span class="toc_section_header"><a href="#section_info">info</a></span>
1070 <ul class="toc_section">
1072 <span class="toc_kind_header">static</span>
1073 <ul class="toc_section">
1075 ><a href="#static_android.info.supportedHardwareLevel">android.info.supportedHardwareLevel</a></li>
1077 ><a href="#static_android.info.version">android.info.version</a></li>
1080 </ul> <!-- toc_section -->
1083 <span class="toc_section_header"><a href="#section_blackLevel">blackLevel</a></span>
1084 <ul class="toc_section">
1086 <span class="toc_kind_header">controls</span>
1087 <ul class="toc_section">
1089 ><a href="#controls_android.blackLevel.lock">android.blackLevel.lock</a></li>
1093 <span class="toc_kind_header">dynamic</span>
1094 <ul class="toc_section">
1096 ><a href="#dynamic_android.blackLevel.lock">android.blackLevel.lock</a></li>
1099 </ul> <!-- toc_section -->
1102 <span class="toc_section_header"><a href="#section_sync">sync</a></span>
1103 <ul class="toc_section">
1105 <span class="toc_kind_header">dynamic</span>
1106 <ul class="toc_section">
1108 ><a href="#dynamic_android.sync.frameNumber">android.sync.frameNumber</a></li>
1112 <span class="toc_kind_header">static</span>
1113 <ul class="toc_section">
1115 ><a href="#static_android.sync.maxLatency">android.sync.maxLatency</a></li>
1118 </ul> <!-- toc_section -->
1121 <span class="toc_section_header"><a href="#section_reprocess">reprocess</a></span>
1122 <ul class="toc_section">
1124 <span class="toc_kind_header">controls</span>
1125 <ul class="toc_section">
1127 ><a href="#controls_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a></li>
1131 <span class="toc_kind_header">dynamic</span>
1132 <ul class="toc_section">
1134 ><a href="#dynamic_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a></li>
1138 <span class="toc_kind_header">static</span>
1139 <ul class="toc_section">
1141 ><a href="#static_android.reprocess.maxCaptureStall">android.reprocess.maxCaptureStall</a></li>
1144 </ul> <!-- toc_section -->
1147 <span class="toc_section_header"><a href="#section_depth">depth</a></span>
1148 <ul class="toc_section">
1150 <span class="toc_kind_header">static</span>
1151 <ul class="toc_section">
1153 ><a href="#static_android.depth.maxDepthSamples">android.depth.maxDepthSamples</a></li>
1155 ><a href="#static_android.depth.availableDepthStreamConfigurations">android.depth.availableDepthStreamConfigurations</a></li>
1157 ><a href="#static_android.depth.availableDepthMinFrameDurations">android.depth.availableDepthMinFrameDurations</a></li>
1159 ><a href="#static_android.depth.availableDepthStallDurations">android.depth.availableDepthStallDurations</a></li>
1161 ><a href="#static_android.depth.depthIsExclusive">android.depth.depthIsExclusive</a></li>
1164 </ul> <!-- toc_section -->
1167 <span class="toc_section_header"><a href="#section_logicalMultiCamera">logicalMultiCamera</a></span>
1168 <ul class="toc_section">
1170 <span class="toc_kind_header">static</span>
1171 <ul class="toc_section">
1173 ><a href="#static_android.logicalMultiCamera.physicalIds">android.logicalMultiCamera.physicalIds</a></li>
1175 ><a href="#static_android.logicalMultiCamera.sensorSyncType">android.logicalMultiCamera.sensorSyncType</a></li>
1178 </ul> <!-- toc_section -->
1184 <table class="properties">
1186 <thead class="thead_dummy">
1188 <th class="th_name">Property Name</th>
1189 <th class="th_type">Type</th>
1190 <th class="th_description">Description</th>
1191 <th class="th_units">Units</th>
1192 <th class="th_range">Range</th>
1193 <th class="th_hal_version">HIDL HAL version</th>
1194 <th class="th_tags">Tags</th>
1196 </thead> <!-- so that the first occurrence of thead is not
1197 above the first occurrence of tr -->
1198 <!-- <namespace name="android"> -->
1199 <tr><td colspan="7" id="section_colorCorrection" class="section">colorCorrection</td></tr>
1202 <tr><td colspan="7" class="kind">controls</td></tr>
1204 <thead class="entries_header">
1206 <th class="th_name">Property Name</th>
1207 <th class="th_type">Type</th>
1208 <th class="th_description">Description</th>
1209 <th class="th_units">Units</th>
1210 <th class="th_range">Range</th>
1211 <th class="th_hal_version">Initial HIDL HAL version</th>
1212 <th class="th_tags">Tags</th>
1227 <tr class="entry" id="controls_android.colorCorrection.mode">
1228 <td class="entry_name
1230 android.<wbr/>color<wbr/>Correction.<wbr/>mode
1232 <td class="entry_type">
1233 <span class="entry_type_name entry_type_name_enum">byte</span>
1235 <span class="entry_type_visibility"> [public]</span>
1238 <span class="entry_type_hwlevel">[full] </span>
1242 <ul class="entry_type_enum">
1244 <span class="entry_type_enum_name">TRANSFORM_MATRIX (v3.2)</span>
1245 <span class="entry_type_enum_notes"><p>Use the <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> matrix
1246 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> to do color conversion.<wbr/></p>
1247 <p>All advanced white balance adjustments (not specified
1248 by our white balance pipeline) must be disabled.<wbr/></p>
1249 <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
1250 TRANSFORM_<wbr/>MATRIX is ignored.<wbr/> The camera device will override
1251 this value to either FAST or HIGH_<wbr/>QUALITY.<wbr/></p></span>
1254 <span class="entry_type_enum_name">FAST (v3.2)</span>
1255 <span class="entry_type_enum_notes"><p>Color correction processing must not slow down
1256 capture rate relative to sensor raw output.<wbr/></p>
1257 <p>Advanced white balance adjustments above and beyond
1258 the specified white balance pipeline may be applied.<wbr/></p>
1259 <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
1260 the camera device uses the last frame's AWB values
1261 (or defaults if AWB has never been run).<wbr/></p></span>
1264 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
1265 <span class="entry_type_enum_notes"><p>Color correction processing operates at improved
1266 quality but the capture rate might be reduced (relative to sensor
1267 raw output rate)</p>
1268 <p>Advanced white balance adjustments above and beyond
1269 the specified white balance pipeline may be applied.<wbr/></p>
1270 <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
1271 the camera device uses the last frame's AWB values
1272 (or defaults if AWB has never been run).<wbr/></p></span>
1276 </td> <!-- entry_type -->
1278 <td class="entry_description">
1279 <p>The mode control selects how the image data is converted from the
1280 sensor's native color into linear sRGB color.<wbr/></p>
1283 <td class="entry_units">
1286 <td class="entry_range">
1289 <td class="entry_hal_version">
1293 <td class="entry_tags">
1297 <tr class="entries_header">
1298 <th class="th_details" colspan="6">Details</th>
1300 <tr class="entry_cont">
1301 <td class="entry_details" colspan="6">
1302 <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
1303 control is overridden by the AWB routine.<wbr/> When AWB is disabled,<wbr/> the
1304 application controls how the color mapping is performed.<wbr/></p>
1305 <p>We define the expected processing pipeline below.<wbr/> For consistency
1306 across devices,<wbr/> this is always the case with TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1307 <p>When either FULL or HIGH_<wbr/>QUALITY is used,<wbr/> the camera device may
1308 do additional processing but <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
1309 <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> will still be provided by the
1310 camera device (in the results) and be roughly correct.<wbr/></p>
1311 <p>Switching to TRANSFORM_<wbr/>MATRIX and using the data provided from
1312 FAST or HIGH_<wbr/>QUALITY will yield a picture with the same white point
1313 as what was produced by the camera device in the earlier frame.<wbr/></p>
1314 <p>The expected processing pipeline is as follows:</p>
1315 <p><img alt="White balance processing pipeline" src="images/camera2/metadata/android.colorCorrection.mode/processing_pipeline.png"/></p>
1316 <p>The white balance is encoded by two values,<wbr/> a 4-channel white-balance
1317 gain vector (applied in the Bayer domain),<wbr/> and a 3x3 color transform
1318 matrix (applied after demosaic).<wbr/></p>
1319 <p>The 4-channel white-balance gains are defined as:</p>
1320 <pre><code><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> = [ R G_<wbr/>even G_<wbr/>odd B ]
1322 <p>where <code>G_<wbr/>even</code> is the gain for green pixels on even rows of the
1323 output,<wbr/> and <code>G_<wbr/>odd</code> is the gain for green pixels on the odd rows.<wbr/>
1324 These may be identical for a given camera device implementation; if
1325 the camera device does not support a separate gain for even/<wbr/>odd green
1326 channels,<wbr/> it will use the <code>G_<wbr/>even</code> value,<wbr/> and write <code>G_<wbr/>odd</code> equal to
1327 <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
1328 <p>The matrices for color transforms are defined as a 9-entry vector:</p>
1329 <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 ]
1331 <p>which define a transform from input sensor colors,<wbr/> <code>P_<wbr/>in = [ r g b ]</code>,<wbr/>
1332 to output linear sRGB,<wbr/> <code>P_<wbr/>out = [ r' g' b' ]</code>,<wbr/></p>
1333 <p>with colors as follows:</p>
1334 <pre><code>r' = I0r + I1g + I2b
1335 g' = I3r + I4g + I5b
1336 b' = I6r + I7g + I8b
1338 <p>Both the input and output value ranges must match.<wbr/> Overflow/<wbr/>underflow
1339 values are clipped to fit within the range.<wbr/></p>
1343 <tr class="entries_header">
1344 <th class="th_details" colspan="6">HAL Implementation Details</th>
1346 <tr class="entry_cont">
1347 <td class="entry_details" colspan="6">
1348 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if color correction control is available
1349 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
1350 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
1351 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY should generate the same output.<wbr/></p>
1355 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
1356 <!-- end of entry -->
1359 <tr class="entry" id="controls_android.colorCorrection.transform">
1360 <td class="entry_name
1362 android.<wbr/>color<wbr/>Correction.<wbr/>transform
1364 <td class="entry_type">
1365 <span class="entry_type_name">rational</span>
1366 <span class="entry_type_container">x</span>
1368 <span class="entry_type_array">
1371 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
1374 <span class="entry_type_hwlevel">[full] </span>
1377 <div class="entry_type_notes">3x3 rational matrix in row-major order</div>
1380 </td> <!-- entry_type -->
1382 <td class="entry_description">
1383 <p>A color transform matrix to use to transform
1384 from sensor RGB color space to output linear sRGB color space.<wbr/></p>
1387 <td class="entry_units">
1388 Unitless scale factors
1391 <td class="entry_range">
1394 <td class="entry_hal_version">
1398 <td class="entry_tags">
1402 <tr class="entries_header">
1403 <th class="th_details" colspan="6">Details</th>
1405 <tr class="entry_cont">
1406 <td class="entry_details" colspan="6">
1407 <p>This matrix is either set by the camera device when the request
1408 <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not TRANSFORM_<wbr/>MATRIX,<wbr/> or
1409 directly by the application in the request when the
1410 <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1411 <p>In the latter case,<wbr/> the camera device may round the matrix to account
1412 for precision issues; the final rounded matrix should be reported back
1413 in this matrix result metadata.<wbr/> The transform should keep the magnitude
1414 of the output color values within <code>[0,<wbr/> 1.<wbr/>0]</code> (assuming input color
1415 values is within the normalized range <code>[0,<wbr/> 1.<wbr/>0]</code>),<wbr/> or clipping may occur.<wbr/></p>
1416 <p>The valid range of each matrix element varies on different devices,<wbr/> but
1417 values within [-1.<wbr/>5,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
1422 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
1423 <!-- end of entry -->
1426 <tr class="entry" id="controls_android.colorCorrection.gains">
1427 <td class="entry_name
1429 android.<wbr/>color<wbr/>Correction.<wbr/>gains
1431 <td class="entry_type">
1432 <span class="entry_type_name">float</span>
1433 <span class="entry_type_container">x</span>
1435 <span class="entry_type_array">
1438 <span class="entry_type_visibility"> [public as rggbChannelVector]</span>
1441 <span class="entry_type_hwlevel">[full] </span>
1444 <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div>
1447 </td> <!-- entry_type -->
1449 <td class="entry_description">
1450 <p>Gains applying to Bayer raw color channels for
1451 white-balance.<wbr/></p>
1454 <td class="entry_units">
1455 Unitless gain factors
1458 <td class="entry_range">
1461 <td class="entry_hal_version">
1465 <td class="entry_tags">
1469 <tr class="entries_header">
1470 <th class="th_details" colspan="6">Details</th>
1472 <tr class="entry_cont">
1473 <td class="entry_details" colspan="6">
1474 <p>These per-channel gains are either set by the camera device
1475 when the request <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not
1476 TRANSFORM_<wbr/>MATRIX,<wbr/> or directly by the application in the
1477 request when the <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is
1478 TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1479 <p>The gains in the result metadata are the gains actually
1480 applied by the camera device to the current frame.<wbr/></p>
1481 <p>The valid range of gains varies on different devices,<wbr/> but gains
1482 between [1.<wbr/>0,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/> Even if a given
1483 device allows gains below 1.<wbr/>0,<wbr/> this is usually not recommended because
1484 this can create color artifacts.<wbr/></p>
1488 <tr class="entries_header">
1489 <th class="th_details" colspan="6">HAL Implementation Details</th>
1491 <tr class="entry_cont">
1492 <td class="entry_details" colspan="6">
1493 <p>The 4-channel white-balance gains are defined in
1494 the order of <code>[R G_<wbr/>even G_<wbr/>odd B]</code>,<wbr/> where <code>G_<wbr/>even</code> is the gain
1495 for green pixels on even rows of the output,<wbr/> and <code>G_<wbr/>odd</code>
1496 is the gain for green pixels on the odd rows.<wbr/></p>
1497 <p>If a HAL does not support a separate gain for even/<wbr/>odd green
1498 channels,<wbr/> it must use the <code>G_<wbr/>even</code> value,<wbr/> and write
1499 <code>G_<wbr/>odd</code> equal to <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
1503 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
1504 <!-- end of entry -->
1507 <tr class="entry" id="controls_android.colorCorrection.aberrationMode">
1508 <td class="entry_name
1510 android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode
1512 <td class="entry_type">
1513 <span class="entry_type_name entry_type_name_enum">byte</span>
1515 <span class="entry_type_visibility"> [public]</span>
1518 <span class="entry_type_hwlevel">[legacy] </span>
1522 <ul class="entry_type_enum">
1524 <span class="entry_type_enum_name">OFF (v3.2)</span>
1525 <span class="entry_type_enum_notes"><p>No aberration correction is applied.<wbr/></p></span>
1528 <span class="entry_type_enum_name">FAST (v3.2)</span>
1529 <span class="entry_type_enum_notes"><p>Aberration correction will not slow down capture rate
1530 relative to sensor raw output.<wbr/></p></span>
1533 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
1534 <span class="entry_type_enum_notes"><p>Aberration correction operates at improved quality but the capture rate might be
1535 reduced (relative to sensor raw output rate)</p></span>
1539 </td> <!-- entry_type -->
1541 <td class="entry_description">
1542 <p>Mode of operation for the chromatic aberration correction algorithm.<wbr/></p>
1545 <td class="entry_units">
1548 <td class="entry_range">
1549 <p><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></p>
1552 <td class="entry_hal_version">
1556 <td class="entry_tags">
1560 <tr class="entries_header">
1561 <th class="th_details" colspan="6">Details</th>
1563 <tr class="entry_cont">
1564 <td class="entry_details" colspan="6">
1565 <p>Chromatic (color) aberration is caused by the fact that different wavelengths of light
1566 can not focus on the same point after exiting from the lens.<wbr/> This metadata defines
1567 the high level control of chromatic aberration correction algorithm,<wbr/> which aims to
1568 minimize the chromatic artifacts that may occur along the object boundaries in an
1570 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean that camera device determined aberration
1571 correction will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device will
1572 use the highest-quality aberration correction algorithms,<wbr/> even if it slows down
1573 capture rate.<wbr/> FAST means the camera device will not slow down capture rate when
1574 applying aberration correction.<wbr/></p>
1575 <p>LEGACY devices will always be in FAST mode.<wbr/></p>
1580 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
1581 <!-- end of entry -->
1585 <!-- end of kind -->
1587 <tr><td colspan="7" class="kind">dynamic</td></tr>
1589 <thead class="entries_header">
1591 <th class="th_name">Property Name</th>
1592 <th class="th_type">Type</th>
1593 <th class="th_description">Description</th>
1594 <th class="th_units">Units</th>
1595 <th class="th_range">Range</th>
1596 <th class="th_hal_version">Initial HIDL HAL version</th>
1597 <th class="th_tags">Tags</th>
1612 <tr class="entry" id="dynamic_android.colorCorrection.mode">
1613 <td class="entry_name
1615 android.<wbr/>color<wbr/>Correction.<wbr/>mode
1617 <td class="entry_type">
1618 <span class="entry_type_name entry_type_name_enum">byte</span>
1620 <span class="entry_type_visibility"> [public]</span>
1623 <span class="entry_type_hwlevel">[full] </span>
1627 <ul class="entry_type_enum">
1629 <span class="entry_type_enum_name">TRANSFORM_MATRIX (v3.2)</span>
1630 <span class="entry_type_enum_notes"><p>Use the <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> matrix
1631 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> to do color conversion.<wbr/></p>
1632 <p>All advanced white balance adjustments (not specified
1633 by our white balance pipeline) must be disabled.<wbr/></p>
1634 <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
1635 TRANSFORM_<wbr/>MATRIX is ignored.<wbr/> The camera device will override
1636 this value to either FAST or HIGH_<wbr/>QUALITY.<wbr/></p></span>
1639 <span class="entry_type_enum_name">FAST (v3.2)</span>
1640 <span class="entry_type_enum_notes"><p>Color correction processing must not slow down
1641 capture rate relative to sensor raw output.<wbr/></p>
1642 <p>Advanced white balance adjustments above and beyond
1643 the specified white balance pipeline may be applied.<wbr/></p>
1644 <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
1645 the camera device uses the last frame's AWB values
1646 (or defaults if AWB has never been run).<wbr/></p></span>
1649 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
1650 <span class="entry_type_enum_notes"><p>Color correction processing operates at improved
1651 quality but the capture rate might be reduced (relative to sensor
1652 raw output rate)</p>
1653 <p>Advanced white balance adjustments above and beyond
1654 the specified white balance pipeline may be applied.<wbr/></p>
1655 <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
1656 the camera device uses the last frame's AWB values
1657 (or defaults if AWB has never been run).<wbr/></p></span>
1661 </td> <!-- entry_type -->
1663 <td class="entry_description">
1664 <p>The mode control selects how the image data is converted from the
1665 sensor's native color into linear sRGB color.<wbr/></p>
1668 <td class="entry_units">
1671 <td class="entry_range">
1674 <td class="entry_hal_version">
1678 <td class="entry_tags">
1682 <tr class="entries_header">
1683 <th class="th_details" colspan="6">Details</th>
1685 <tr class="entry_cont">
1686 <td class="entry_details" colspan="6">
1687 <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
1688 control is overridden by the AWB routine.<wbr/> When AWB is disabled,<wbr/> the
1689 application controls how the color mapping is performed.<wbr/></p>
1690 <p>We define the expected processing pipeline below.<wbr/> For consistency
1691 across devices,<wbr/> this is always the case with TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1692 <p>When either FULL or HIGH_<wbr/>QUALITY is used,<wbr/> the camera device may
1693 do additional processing but <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
1694 <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> will still be provided by the
1695 camera device (in the results) and be roughly correct.<wbr/></p>
1696 <p>Switching to TRANSFORM_<wbr/>MATRIX and using the data provided from
1697 FAST or HIGH_<wbr/>QUALITY will yield a picture with the same white point
1698 as what was produced by the camera device in the earlier frame.<wbr/></p>
1699 <p>The expected processing pipeline is as follows:</p>
1700 <p><img alt="White balance processing pipeline" src="images/camera2/metadata/android.colorCorrection.mode/processing_pipeline.png"/></p>
1701 <p>The white balance is encoded by two values,<wbr/> a 4-channel white-balance
1702 gain vector (applied in the Bayer domain),<wbr/> and a 3x3 color transform
1703 matrix (applied after demosaic).<wbr/></p>
1704 <p>The 4-channel white-balance gains are defined as:</p>
1705 <pre><code><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> = [ R G_<wbr/>even G_<wbr/>odd B ]
1707 <p>where <code>G_<wbr/>even</code> is the gain for green pixels on even rows of the
1708 output,<wbr/> and <code>G_<wbr/>odd</code> is the gain for green pixels on the odd rows.<wbr/>
1709 These may be identical for a given camera device implementation; if
1710 the camera device does not support a separate gain for even/<wbr/>odd green
1711 channels,<wbr/> it will use the <code>G_<wbr/>even</code> value,<wbr/> and write <code>G_<wbr/>odd</code> equal to
1712 <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
1713 <p>The matrices for color transforms are defined as a 9-entry vector:</p>
1714 <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 ]
1716 <p>which define a transform from input sensor colors,<wbr/> <code>P_<wbr/>in = [ r g b ]</code>,<wbr/>
1717 to output linear sRGB,<wbr/> <code>P_<wbr/>out = [ r' g' b' ]</code>,<wbr/></p>
1718 <p>with colors as follows:</p>
1719 <pre><code>r' = I0r + I1g + I2b
1720 g' = I3r + I4g + I5b
1721 b' = I6r + I7g + I8b
1723 <p>Both the input and output value ranges must match.<wbr/> Overflow/<wbr/>underflow
1724 values are clipped to fit within the range.<wbr/></p>
1728 <tr class="entries_header">
1729 <th class="th_details" colspan="6">HAL Implementation Details</th>
1731 <tr class="entry_cont">
1732 <td class="entry_details" colspan="6">
1733 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if color correction control is available
1734 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
1735 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
1736 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY should generate the same output.<wbr/></p>
1740 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
1741 <!-- end of entry -->
1744 <tr class="entry" id="dynamic_android.colorCorrection.transform">
1745 <td class="entry_name
1747 android.<wbr/>color<wbr/>Correction.<wbr/>transform
1749 <td class="entry_type">
1750 <span class="entry_type_name">rational</span>
1751 <span class="entry_type_container">x</span>
1753 <span class="entry_type_array">
1756 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
1759 <span class="entry_type_hwlevel">[full] </span>
1762 <div class="entry_type_notes">3x3 rational matrix in row-major order</div>
1765 </td> <!-- entry_type -->
1767 <td class="entry_description">
1768 <p>A color transform matrix to use to transform
1769 from sensor RGB color space to output linear sRGB color space.<wbr/></p>
1772 <td class="entry_units">
1773 Unitless scale factors
1776 <td class="entry_range">
1779 <td class="entry_hal_version">
1783 <td class="entry_tags">
1787 <tr class="entries_header">
1788 <th class="th_details" colspan="6">Details</th>
1790 <tr class="entry_cont">
1791 <td class="entry_details" colspan="6">
1792 <p>This matrix is either set by the camera device when the request
1793 <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not TRANSFORM_<wbr/>MATRIX,<wbr/> or
1794 directly by the application in the request when the
1795 <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1796 <p>In the latter case,<wbr/> the camera device may round the matrix to account
1797 for precision issues; the final rounded matrix should be reported back
1798 in this matrix result metadata.<wbr/> The transform should keep the magnitude
1799 of the output color values within <code>[0,<wbr/> 1.<wbr/>0]</code> (assuming input color
1800 values is within the normalized range <code>[0,<wbr/> 1.<wbr/>0]</code>),<wbr/> or clipping may occur.<wbr/></p>
1801 <p>The valid range of each matrix element varies on different devices,<wbr/> but
1802 values within [-1.<wbr/>5,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
1807 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
1808 <!-- end of entry -->
1811 <tr class="entry" id="dynamic_android.colorCorrection.gains">
1812 <td class="entry_name
1814 android.<wbr/>color<wbr/>Correction.<wbr/>gains
1816 <td class="entry_type">
1817 <span class="entry_type_name">float</span>
1818 <span class="entry_type_container">x</span>
1820 <span class="entry_type_array">
1823 <span class="entry_type_visibility"> [public as rggbChannelVector]</span>
1826 <span class="entry_type_hwlevel">[full] </span>
1829 <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div>
1832 </td> <!-- entry_type -->
1834 <td class="entry_description">
1835 <p>Gains applying to Bayer raw color channels for
1836 white-balance.<wbr/></p>
1839 <td class="entry_units">
1840 Unitless gain factors
1843 <td class="entry_range">
1846 <td class="entry_hal_version">
1850 <td class="entry_tags">
1854 <tr class="entries_header">
1855 <th class="th_details" colspan="6">Details</th>
1857 <tr class="entry_cont">
1858 <td class="entry_details" colspan="6">
1859 <p>These per-channel gains are either set by the camera device
1860 when the request <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not
1861 TRANSFORM_<wbr/>MATRIX,<wbr/> or directly by the application in the
1862 request when the <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is
1863 TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1864 <p>The gains in the result metadata are the gains actually
1865 applied by the camera device to the current frame.<wbr/></p>
1866 <p>The valid range of gains varies on different devices,<wbr/> but gains
1867 between [1.<wbr/>0,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/> Even if a given
1868 device allows gains below 1.<wbr/>0,<wbr/> this is usually not recommended because
1869 this can create color artifacts.<wbr/></p>
1873 <tr class="entries_header">
1874 <th class="th_details" colspan="6">HAL Implementation Details</th>
1876 <tr class="entry_cont">
1877 <td class="entry_details" colspan="6">
1878 <p>The 4-channel white-balance gains are defined in
1879 the order of <code>[R G_<wbr/>even G_<wbr/>odd B]</code>,<wbr/> where <code>G_<wbr/>even</code> is the gain
1880 for green pixels on even rows of the output,<wbr/> and <code>G_<wbr/>odd</code>
1881 is the gain for green pixels on the odd rows.<wbr/></p>
1882 <p>If a HAL does not support a separate gain for even/<wbr/>odd green
1883 channels,<wbr/> it must use the <code>G_<wbr/>even</code> value,<wbr/> and write
1884 <code>G_<wbr/>odd</code> equal to <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
1888 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
1889 <!-- end of entry -->
1892 <tr class="entry" id="dynamic_android.colorCorrection.aberrationMode">
1893 <td class="entry_name
1895 android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode
1897 <td class="entry_type">
1898 <span class="entry_type_name entry_type_name_enum">byte</span>
1900 <span class="entry_type_visibility"> [public]</span>
1903 <span class="entry_type_hwlevel">[legacy] </span>
1907 <ul class="entry_type_enum">
1909 <span class="entry_type_enum_name">OFF (v3.2)</span>
1910 <span class="entry_type_enum_notes"><p>No aberration correction is applied.<wbr/></p></span>
1913 <span class="entry_type_enum_name">FAST (v3.2)</span>
1914 <span class="entry_type_enum_notes"><p>Aberration correction will not slow down capture rate
1915 relative to sensor raw output.<wbr/></p></span>
1918 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
1919 <span class="entry_type_enum_notes"><p>Aberration correction operates at improved quality but the capture rate might be
1920 reduced (relative to sensor raw output rate)</p></span>
1924 </td> <!-- entry_type -->
1926 <td class="entry_description">
1927 <p>Mode of operation for the chromatic aberration correction algorithm.<wbr/></p>
1930 <td class="entry_units">
1933 <td class="entry_range">
1934 <p><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></p>
1937 <td class="entry_hal_version">
1941 <td class="entry_tags">
1945 <tr class="entries_header">
1946 <th class="th_details" colspan="6">Details</th>
1948 <tr class="entry_cont">
1949 <td class="entry_details" colspan="6">
1950 <p>Chromatic (color) aberration is caused by the fact that different wavelengths of light
1951 can not focus on the same point after exiting from the lens.<wbr/> This metadata defines
1952 the high level control of chromatic aberration correction algorithm,<wbr/> which aims to
1953 minimize the chromatic artifacts that may occur along the object boundaries in an
1955 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean that camera device determined aberration
1956 correction will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device will
1957 use the highest-quality aberration correction algorithms,<wbr/> even if it slows down
1958 capture rate.<wbr/> FAST means the camera device will not slow down capture rate when
1959 applying aberration correction.<wbr/></p>
1960 <p>LEGACY devices will always be in FAST mode.<wbr/></p>
1965 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
1966 <!-- end of entry -->
1970 <!-- end of kind -->
1972 <tr><td colspan="7" class="kind">static</td></tr>
1974 <thead class="entries_header">
1976 <th class="th_name">Property Name</th>
1977 <th class="th_type">Type</th>
1978 <th class="th_description">Description</th>
1979 <th class="th_units">Units</th>
1980 <th class="th_range">Range</th>
1981 <th class="th_hal_version">Initial HIDL HAL version</th>
1982 <th class="th_tags">Tags</th>
1997 <tr class="entry" id="static_android.colorCorrection.availableAberrationModes">
1998 <td class="entry_name
2000 android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes
2002 <td class="entry_type">
2003 <span class="entry_type_name">byte</span>
2004 <span class="entry_type_container">x</span>
2006 <span class="entry_type_array">
2009 <span class="entry_type_visibility"> [public as enumList]</span>
2012 <span class="entry_type_hwlevel">[legacy] </span>
2015 <div class="entry_type_notes">list of enums</div>
2018 </td> <!-- entry_type -->
2020 <td class="entry_description">
2021 <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
2022 supported by this camera device.<wbr/></p>
2025 <td class="entry_units">
2028 <td class="entry_range">
2029 <p>Any value listed in <a href="#controls_android.colorCorrection.aberrationMode">android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode</a></p>
2032 <td class="entry_hal_version">
2036 <td class="entry_tags">
2037 <ul class="entry_tags">
2038 <li><a href="#tag_V1">V1</a></li>
2043 <tr class="entries_header">
2044 <th class="th_details" colspan="6">Details</th>
2046 <tr class="entry_cont">
2047 <td class="entry_details" colspan="6">
2048 <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
2049 aberration correction modes are available for a device,<wbr/> this list will solely include
2050 OFF mode.<wbr/> All camera devices will support either OFF or FAST mode.<wbr/></p>
2051 <p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always list
2052 OFF mode.<wbr/> This includes all FULL level devices.<wbr/></p>
2053 <p>LEGACY devices will always only support FAST mode.<wbr/></p>
2057 <tr class="entries_header">
2058 <th class="th_details" colspan="6">HAL Implementation Details</th>
2060 <tr class="entry_cont">
2061 <td class="entry_details" colspan="6">
2062 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if chromatic aberration control is available
2063 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
2064 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
2065 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
2069 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2070 <!-- end of entry -->
2074 <!-- end of kind -->
2077 <!-- end of section -->
2078 <tr><td colspan="7" id="section_control" class="section">control</td></tr>
2081 <tr><td colspan="7" class="kind">controls</td></tr>
2083 <thead class="entries_header">
2085 <th class="th_name">Property Name</th>
2086 <th class="th_type">Type</th>
2087 <th class="th_description">Description</th>
2088 <th class="th_units">Units</th>
2089 <th class="th_range">Range</th>
2090 <th class="th_hal_version">Initial HIDL HAL version</th>
2091 <th class="th_tags">Tags</th>
2106 <tr class="entry" id="controls_android.control.aeAntibandingMode">
2107 <td class="entry_name
2109 android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode
2111 <td class="entry_type">
2112 <span class="entry_type_name entry_type_name_enum">byte</span>
2114 <span class="entry_type_visibility"> [public]</span>
2117 <span class="entry_type_hwlevel">[legacy] </span>
2121 <ul class="entry_type_enum">
2123 <span class="entry_type_enum_name">OFF (v3.2)</span>
2124 <span class="entry_type_enum_notes"><p>The camera device will not adjust exposure duration to
2125 avoid banding problems.<wbr/></p></span>
2128 <span class="entry_type_enum_name">50HZ (v3.2)</span>
2129 <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
2130 avoid banding problems with 50Hz illumination sources.<wbr/></p></span>
2133 <span class="entry_type_enum_name">60HZ (v3.2)</span>
2134 <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
2135 avoid banding problems with 60Hz illumination
2136 sources.<wbr/></p></span>
2139 <span class="entry_type_enum_name">AUTO (v3.2)</span>
2140 <span class="entry_type_enum_notes"><p>The camera device will automatically adapt its
2141 antibanding routine to the current illumination
2142 condition.<wbr/> This is the default mode if AUTO is
2143 available on given camera device.<wbr/></p></span>
2147 </td> <!-- entry_type -->
2149 <td class="entry_description">
2150 <p>The desired setting for the camera device's auto-exposure
2151 algorithm's antibanding compensation.<wbr/></p>
2154 <td class="entry_units">
2157 <td class="entry_range">
2158 <p><a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a></p>
2161 <td class="entry_hal_version">
2165 <td class="entry_tags">
2166 <ul class="entry_tags">
2167 <li><a href="#tag_BC">BC</a></li>
2172 <tr class="entries_header">
2173 <th class="th_details" colspan="6">Details</th>
2175 <tr class="entry_cont">
2176 <td class="entry_details" colspan="6">
2177 <p>Some kinds of lighting fixtures,<wbr/> such as some fluorescent
2178 lights,<wbr/> flicker at the rate of the power supply frequency
2179 (60Hz or 50Hz,<wbr/> depending on country).<wbr/> While this is
2180 typically not noticeable to a person,<wbr/> it can be visible to
2181 a camera device.<wbr/> If a camera sets its exposure time to the
2182 wrong value,<wbr/> the flicker may become visible in the
2183 viewfinder as flicker or in a final captured image,<wbr/> as a
2184 set of variable-brightness bands across the image.<wbr/></p>
2185 <p>Therefore,<wbr/> the auto-exposure routines of camera devices
2186 include antibanding routines that ensure that the chosen
2187 exposure value will not cause such banding.<wbr/> The choice of
2188 exposure time depends on the rate of flicker,<wbr/> which the
2189 camera device can detect automatically,<wbr/> or the expected
2190 rate can be selected by the application using this
2192 <p>A given camera device may not support all of the possible
2193 options for the antibanding mode.<wbr/> The
2194 <a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a> key contains
2195 the available modes for a given camera device.<wbr/></p>
2196 <p>AUTO mode is the default if it is available on given
2197 camera device.<wbr/> When AUTO mode is not available,<wbr/> the
2198 default will be either 50HZ or 60HZ,<wbr/> and both 50HZ
2199 and 60HZ will be available.<wbr/></p>
2200 <p>If manual exposure control is enabled (by setting
2201 <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/>
2202 then this setting has no effect,<wbr/> and the application must
2203 ensure it selects exposure times that do not cause banding
2204 issues.<wbr/> The <a href="#dynamic_android.statistics.sceneFlicker">android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker</a> key can assist
2205 the application in this.<wbr/></p>
2209 <tr class="entries_header">
2210 <th class="th_details" colspan="6">HAL Implementation Details</th>
2212 <tr class="entry_cont">
2213 <td class="entry_details" colspan="6">
2214 <p>For all capture request templates,<wbr/> this field must be set
2215 to AUTO if AUTO mode is available.<wbr/> If AUTO is not available,<wbr/>
2216 the default must be either 50HZ or 60HZ,<wbr/> and both 50HZ and
2217 60HZ must be available.<wbr/></p>
2218 <p>If manual exposure control is enabled (by setting
2219 <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/>
2220 then the exposure values provided by the application must not be
2221 adjusted for antibanding.<wbr/></p>
2225 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2226 <!-- end of entry -->
2229 <tr class="entry" id="controls_android.control.aeExposureCompensation">
2230 <td class="entry_name
2232 android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation
2234 <td class="entry_type">
2235 <span class="entry_type_name">int32</span>
2237 <span class="entry_type_visibility"> [public]</span>
2240 <span class="entry_type_hwlevel">[legacy] </span>
2245 </td> <!-- entry_type -->
2247 <td class="entry_description">
2248 <p>Adjustment to auto-exposure (AE) target image
2249 brightness.<wbr/></p>
2252 <td class="entry_units">
2256 <td class="entry_range">
2257 <p><a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a></p>
2260 <td class="entry_hal_version">
2264 <td class="entry_tags">
2265 <ul class="entry_tags">
2266 <li><a href="#tag_BC">BC</a></li>
2271 <tr class="entries_header">
2272 <th class="th_details" colspan="6">Details</th>
2274 <tr class="entry_cont">
2275 <td class="entry_details" colspan="6">
2276 <p>The adjustment is measured as a count of steps,<wbr/> with the
2277 step size defined by <a href="#static_android.control.aeCompensationStep">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step</a> and the
2278 allowed range by <a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a>.<wbr/></p>
2279 <p>For example,<wbr/> if the exposure value (EV) step is 0.<wbr/>333,<wbr/> '6'
2280 will mean an exposure compensation of +2 EV; -3 will mean an
2281 exposure compensation of -1 EV.<wbr/> One EV represents a doubling
2282 of image brightness.<wbr/> Note that this control will only be
2283 effective if <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>!=</code> OFF.<wbr/> This control
2284 will take effect even when <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> <code>== true</code>.<wbr/></p>
2285 <p>In the event of exposure compensation value being changed,<wbr/> camera device
2286 may take several frames to reach the newly requested exposure target.<wbr/>
2287 During that time,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> field will be in the SEARCHING
2288 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
2289 change from SEARCHING to either CONVERGED,<wbr/> LOCKED (if AE lock is enabled),<wbr/> or
2290 FLASH_<wbr/>REQUIRED (if the scene is too dark for still capture).<wbr/></p>
2295 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2296 <!-- end of entry -->
2299 <tr class="entry" id="controls_android.control.aeLock">
2300 <td class="entry_name
2302 android.<wbr/>control.<wbr/>ae<wbr/>Lock
2304 <td class="entry_type">
2305 <span class="entry_type_name entry_type_name_enum">byte</span>
2307 <span class="entry_type_visibility"> [public as boolean]</span>
2310 <span class="entry_type_hwlevel">[legacy] </span>
2314 <ul class="entry_type_enum">
2316 <span class="entry_type_enum_name">OFF (v3.2)</span>
2317 <span class="entry_type_enum_notes"><p>Auto-exposure lock is disabled; the AE algorithm
2318 is free to update its parameters.<wbr/></p></span>
2321 <span class="entry_type_enum_name">ON (v3.2)</span>
2322 <span class="entry_type_enum_notes"><p>Auto-exposure lock is enabled; the AE algorithm
2323 must not update the exposure and sensitivity parameters
2324 while the lock is active.<wbr/></p>
2325 <p><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a> setting changes
2326 will still take effect while auto-exposure is locked.<wbr/></p>
2327 <p>Some rare LEGACY devices may not support
2328 this,<wbr/> in which case the value will always be overridden to OFF.<wbr/></p></span>
2332 </td> <!-- entry_type -->
2334 <td class="entry_description">
2335 <p>Whether auto-exposure (AE) is currently locked to its latest
2336 calculated values.<wbr/></p>
2339 <td class="entry_units">
2342 <td class="entry_range">
2345 <td class="entry_hal_version">
2349 <td class="entry_tags">
2350 <ul class="entry_tags">
2351 <li><a href="#tag_BC">BC</a></li>
2356 <tr class="entries_header">
2357 <th class="th_details" colspan="6">Details</th>
2359 <tr class="entry_cont">
2360 <td class="entry_details" colspan="6">
2361 <p>When set to <code>true</code> (ON),<wbr/> the AE algorithm is locked to its latest parameters,<wbr/>
2362 and will not change exposure settings until the lock is set to <code>false</code> (OFF).<wbr/></p>
2363 <p>Note that even when AE is locked,<wbr/> the flash may be fired if
2364 the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is ON_<wbr/>AUTO_<wbr/>FLASH /<wbr/>
2365 ON_<wbr/>ALWAYS_<wbr/>FLASH /<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE.<wbr/></p>
2366 <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
2367 is ON,<wbr/> the camera device will still adjust its exposure value.<wbr/></p>
2368 <p>If AE precapture is triggered (see <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>)
2369 when AE is already locked,<wbr/> the camera device will not change the exposure time
2370 (<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>)
2371 parameters.<wbr/> The flash may be fired if the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>
2372 is ON_<wbr/>AUTO_<wbr/>FLASH/<wbr/>ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE and the scene is too dark.<wbr/> If the
2373 <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/>
2374 Similarly,<wbr/> AE precapture trigger CANCEL has no effect when AE is already locked.<wbr/></p>
2375 <p>When an AE precapture sequence is triggered,<wbr/> AE unlock will not be able to unlock
2376 the AE if AE is locked by the camera device internally during precapture metering
2377 sequence In other words,<wbr/> submitting requests with AE unlock has no effect for an
2378 ongoing precapture metering sequence.<wbr/> Otherwise,<wbr/> the precapture metering sequence
2379 will never succeed in a sequence of preview requests where AE lock is always set
2380 to <code>false</code>.<wbr/></p>
2381 <p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that
2382 get locked do not necessarily correspond to the settings that were present in the
2383 latest capture result received from the camera device,<wbr/> since additional captures
2384 and AE updates may have occurred even before the result was sent out.<wbr/> If an
2385 application is switching between automatic and manual control and wishes to eliminate
2386 any flicker during the switch,<wbr/> the following procedure is recommended:</p>
2388 <li>Starting in auto-AE mode:</li>
2390 <li>Wait for the first result to be output that has the AE locked</li>
2391 <li>Copy exposure settings from that result into a request,<wbr/> set the request to manual AE</li>
2392 <li>Submit the capture request,<wbr/> proceed to run manual AE as desired.<wbr/></li>
2394 <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>
2399 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2400 <!-- end of entry -->
2403 <tr class="entry" id="controls_android.control.aeMode">
2404 <td class="entry_name
2406 android.<wbr/>control.<wbr/>ae<wbr/>Mode
2408 <td class="entry_type">
2409 <span class="entry_type_name entry_type_name_enum">byte</span>
2411 <span class="entry_type_visibility"> [public]</span>
2414 <span class="entry_type_hwlevel">[legacy] </span>
2418 <ul class="entry_type_enum">
2420 <span class="entry_type_enum_name">OFF (v3.2)</span>
2421 <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is disabled.<wbr/></p>
2422 <p>The application-selected <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
2423 <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> and
2424 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are used by the camera
2425 device,<wbr/> along with android.<wbr/>flash.<wbr/>* fields,<wbr/> if there's
2426 a flash unit for this camera device.<wbr/></p>
2427 <p>Note that auto-white balance (AWB) and auto-focus (AF)
2428 behavior is device dependent when AE is in OFF mode.<wbr/>
2429 To have consistent behavior across different devices,<wbr/>
2430 it is recommended to either set AWB and AF to OFF mode
2431 or lock AWB and AF before setting AE to OFF.<wbr/>
2432 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/>
2433 <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>
2434 for more details.<wbr/></p>
2435 <p>LEGACY devices do not support the OFF mode and will
2436 override attempts to use this value to ON.<wbr/></p></span>
2439 <span class="entry_type_enum_name">ON (v3.2)</span>
2440 <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is active,<wbr/>
2441 with no flash control.<wbr/></p>
2442 <p>The application's values for
2443 <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
2444 <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
2445 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are ignored.<wbr/> The
2446 application has control over the various
2447 android.<wbr/>flash.<wbr/>* fields.<wbr/></p></span>
2450 <span class="entry_type_enum_name">ON_AUTO_FLASH (v3.2)</span>
2451 <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
2452 the camera's flash unit,<wbr/> firing it in low-light
2453 conditions.<wbr/></p>
2454 <p>The flash may be fired during a precapture sequence
2455 (triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and
2456 may be fired for captures for which the
2457 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to
2458 STILL_<wbr/>CAPTURE</p></span>
2461 <span class="entry_type_enum_name">ON_ALWAYS_FLASH (v3.2)</span>
2462 <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
2463 the camera's flash unit,<wbr/> always firing it for still
2465 <p>The flash may be fired during a precapture sequence
2466 (triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and
2467 will always be fired for captures for which the
2468 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to
2469 STILL_<wbr/>CAPTURE</p></span>
2472 <span class="entry_type_enum_name">ON_AUTO_FLASH_REDEYE (v3.2)</span>
2473 <span class="entry_type_enum_notes"><p>Like ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> but with automatic red eye
2474 reduction.<wbr/></p>
2475 <p>If deemed necessary by the camera device,<wbr/> a red eye
2476 reduction flash will fire during the precapture
2477 sequence.<wbr/></p></span>
2480 <span class="entry_type_enum_name">ON_EXTERNAL_FLASH (v3.3)</span>
2481 <span class="entry_type_enum_notes"><p>An external flash has been turned on.<wbr/></p>
2482 <p>It informs the camera device that an external flash has been turned on,<wbr/> and that
2483 metering (and continuous focus if active) should be quickly recaculated to account
2484 for the external flash.<wbr/> Otherwise,<wbr/> this mode acts like ON.<wbr/></p>
2485 <p>When the external flash is turned off,<wbr/> AE mode should be changed to one of the
2486 other available AE modes.<wbr/></p>
2487 <p>If the camera device supports AE external flash mode,<wbr/> aeState must be
2488 FLASH_<wbr/>REQUIRED after the camera device finishes AE scan and it's too dark without
2489 flash.<wbr/></p></span>
2493 </td> <!-- entry_type -->
2495 <td class="entry_description">
2496 <p>The desired mode for the camera device's
2497 auto-exposure routine.<wbr/></p>
2500 <td class="entry_units">
2503 <td class="entry_range">
2504 <p><a href="#static_android.control.aeAvailableModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes</a></p>
2507 <td class="entry_hal_version">
2511 <td class="entry_tags">
2512 <ul class="entry_tags">
2513 <li><a href="#tag_BC">BC</a></li>
2518 <tr class="entries_header">
2519 <th class="th_details" colspan="6">Details</th>
2521 <tr class="entry_cont">
2522 <td class="entry_details" colspan="6">
2523 <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is
2525 <p>When set to any of the ON modes,<wbr/> the camera device's
2526 auto-exposure routine is enabled,<wbr/> overriding the
2527 application's selected exposure time,<wbr/> sensor sensitivity,<wbr/>
2528 and frame duration (<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
2529 <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
2530 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>).<wbr/> If one of the FLASH modes
2531 is selected,<wbr/> the camera device's flash unit controls are
2532 also overridden.<wbr/></p>
2533 <p>The FLASH modes are only available if the camera device
2534 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>
2535 <p>If flash TORCH mode is desired,<wbr/> this field must be set to
2536 ON or OFF,<wbr/> and <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> set to TORCH.<wbr/></p>
2537 <p>When set to any of the ON modes,<wbr/> the values chosen by the
2538 camera device auto-exposure routine for the overridden
2539 fields for a given capture will be available in its
2540 CaptureResult.<wbr/></p>
2545 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2546 <!-- end of entry -->
2549 <tr class="entry" id="controls_android.control.aeRegions">
2550 <td class="entry_name
2552 android.<wbr/>control.<wbr/>ae<wbr/>Regions
2554 <td class="entry_type">
2555 <span class="entry_type_name">int32</span>
2556 <span class="entry_type_container">x</span>
2558 <span class="entry_type_array">
2561 <span class="entry_type_visibility"> [public as meteringRectangle]</span>
2568 </td> <!-- entry_type -->
2570 <td class="entry_description">
2571 <p>List of metering areas to use for auto-exposure adjustment.<wbr/></p>
2574 <td class="entry_units">
2575 Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
2578 <td class="entry_range">
2579 <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
2580 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
2583 <td class="entry_hal_version">
2587 <td class="entry_tags">
2588 <ul class="entry_tags">
2589 <li><a href="#tag_BC">BC</a></li>
2594 <tr class="entries_header">
2595 <th class="th_details" colspan="6">Details</th>
2597 <tr class="entry_cont">
2598 <td class="entry_details" colspan="6">
2599 <p>Not available if <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a> is 0.<wbr/>
2600 Otherwise will always be present.<wbr/></p>
2601 <p>The maximum number of regions supported by the device is determined by the value
2602 of <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a>.<wbr/></p>
2603 <p>The coordinate system is based on the active pixel array,<wbr/>
2604 with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
2605 (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
2606 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
2607 bottom-right pixel in the active pixel array.<wbr/></p>
2608 <p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight
2609 for every pixel in the area.<wbr/> This means that a large metering area
2610 with the same weight as a smaller area will have more effect in
2611 the metering result.<wbr/> Metering areas can partially overlap and the
2612 camera device will add the weights in the overlap region.<wbr/></p>
2613 <p>The weights are relative to weights of other exposure metering regions,<wbr/> so if only one
2614 region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0
2615 weight is ignored.<wbr/></p>
2616 <p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
2617 camera device.<wbr/></p>
2618 <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
2619 capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
2620 region and output only the intersection rectangle as the metering region in the result
2621 metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and
2622 not reported in the result metadata.<wbr/></p>
2626 <tr class="entries_header">
2627 <th class="th_details" colspan="6">HAL Implementation Details</th>
2629 <tr class="entry_cont">
2630 <td class="entry_details" colspan="6">
2631 <p>The HAL level representation of MeteringRectangle[] is a
2632 int[5 * area_<wbr/>count].<wbr/>
2633 Every five elements represent a metering region of
2634 (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
2635 The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
2636 exclusive on xmax and ymax.<wbr/></p>
2640 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2641 <!-- end of entry -->
2644 <tr class="entry" id="controls_android.control.aeTargetFpsRange">
2645 <td class="entry_name
2647 android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range
2649 <td class="entry_type">
2650 <span class="entry_type_name">int32</span>
2651 <span class="entry_type_container">x</span>
2653 <span class="entry_type_array">
2656 <span class="entry_type_visibility"> [public as rangeInt]</span>
2659 <span class="entry_type_hwlevel">[legacy] </span>
2664 </td> <!-- entry_type -->
2666 <td class="entry_description">
2667 <p>Range over which the auto-exposure routine can
2668 adjust the capture frame rate to maintain good
2672 <td class="entry_units">
2673 Frames per second (FPS)
2676 <td class="entry_range">
2677 <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>
2680 <td class="entry_hal_version">
2684 <td class="entry_tags">
2685 <ul class="entry_tags">
2686 <li><a href="#tag_BC">BC</a></li>
2691 <tr class="entries_header">
2692 <th class="th_details" colspan="6">Details</th>
2694 <tr class="entry_cont">
2695 <td class="entry_details" colspan="6">
2696 <p>Only constrains auto-exposure (AE) algorithm,<wbr/> not
2697 manual control of <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> and
2698 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>.<wbr/></p>
2703 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2704 <!-- end of entry -->
2707 <tr class="entry" id="controls_android.control.aePrecaptureTrigger">
2708 <td class="entry_name
2710 android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger
2712 <td class="entry_type">
2713 <span class="entry_type_name entry_type_name_enum">byte</span>
2715 <span class="entry_type_visibility"> [public]</span>
2718 <span class="entry_type_hwlevel">[limited] </span>
2722 <ul class="entry_type_enum">
2724 <span class="entry_type_enum_name">IDLE (v3.2)</span>
2725 <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
2728 <span class="entry_type_enum_name">START (v3.2)</span>
2729 <span class="entry_type_enum_notes"><p>The precapture metering sequence will be started
2730 by the camera device.<wbr/></p>
2731 <p>The exact effect of the precapture trigger depends on
2732 the current AE mode and state.<wbr/></p></span>
2735 <span class="entry_type_enum_name">CANCEL (v3.2)</span>
2736 <span class="entry_type_enum_notes"><p>The camera device will cancel any currently active or completed
2737 precapture metering sequence,<wbr/> the auto-exposure routine will return to its
2738 initial state.<wbr/></p></span>
2742 </td> <!-- entry_type -->
2744 <td class="entry_description">
2745 <p>Whether the camera device will trigger a precapture
2746 metering sequence when it processes this request.<wbr/></p>
2749 <td class="entry_units">
2752 <td class="entry_range">
2755 <td class="entry_hal_version">
2759 <td class="entry_tags">
2760 <ul class="entry_tags">
2761 <li><a href="#tag_BC">BC</a></li>
2766 <tr class="entries_header">
2767 <th class="th_details" colspan="6">Details</th>
2769 <tr class="entry_cont">
2770 <td class="entry_details" colspan="6">
2771 <p>This entry is normally set to IDLE,<wbr/> or is not
2772 included at all in the request settings.<wbr/> When included and
2773 set to START,<wbr/> the camera device will trigger the auto-exposure (AE)
2774 precapture metering sequence.<wbr/></p>
2775 <p>When set to CANCEL,<wbr/> the camera device will cancel any active
2776 precapture metering trigger,<wbr/> and return to its initial AE state.<wbr/>
2777 If a precapture metering sequence is already completed,<wbr/> and the camera
2778 device has implicitly locked the AE for subsequent still capture,<wbr/> the
2779 CANCEL trigger will unlock the AE and return to its initial AE state.<wbr/></p>
2780 <p>The precapture sequence should be triggered before starting a
2781 high-quality still capture for final metering decisions to
2782 be made,<wbr/> and for firing pre-capture flash pulses to estimate
2783 scene brightness and required final capture flash power,<wbr/> when
2784 the flash is enabled.<wbr/></p>
2785 <p>Normally,<wbr/> this entry should be set to START for only a
2786 single request,<wbr/> and the application should wait until the
2787 sequence completes before starting a new one.<wbr/></p>
2788 <p>When a precapture metering sequence is finished,<wbr/> the camera device
2789 may lock the auto-exposure routine internally to be able to accurately expose the
2790 subsequent still capture image (<code><a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE</code>).<wbr/>
2791 For this case,<wbr/> the AE may not resume normal scan if no subsequent still capture is
2792 submitted.<wbr/> To ensure that the AE routine restarts normal scan,<wbr/> the application should
2793 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
2794 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
2795 still capture request after the precapture sequence completes.<wbr/> Alternatively,<wbr/> for
2796 API level 23 or newer devices,<wbr/> the CANCEL can be used to unlock the camera device
2797 internally locked AE if the application doesn't submit a still capture request after
2798 the AE precapture trigger.<wbr/> Note that,<wbr/> the CANCEL was added in API level 23,<wbr/> and must not
2799 be used in devices that have earlier API levels.<wbr/></p>
2800 <p>The exact effect of auto-exposure (AE) precapture trigger
2801 depends on the current AE mode and state; see
2802 <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> for AE precapture state transition
2804 <p>On LEGACY-level devices,<wbr/> the precapture trigger is not supported;
2805 capturing a high-resolution JPEG image will automatically trigger a
2806 precapture sequence before the high-resolution capture,<wbr/> including
2807 potentially firing a pre-capture flash.<wbr/></p>
2808 <p>Using the precapture trigger and the auto-focus trigger <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>
2809 simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between
2810 the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a
2811 focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous
2812 trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and
2813 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
2815 <p>If both the precapture and the auto-focus trigger are activated on the same request,<wbr/> then
2816 the camera device will complete them in the optimal order for that device.<wbr/></p>
2820 <tr class="entries_header">
2821 <th class="th_details" colspan="6">HAL Implementation Details</th>
2823 <tr class="entry_cont">
2824 <td class="entry_details" colspan="6">
2825 <p>The HAL must support triggering the AE precapture trigger while an AF trigger is active
2826 (and vice versa),<wbr/> or at the same time as the AF trigger.<wbr/> It is acceptable for the HAL to
2827 treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the
2828 AE trigger.<wbr/> Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/>
2829 to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p>
2833 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2834 <!-- end of entry -->
2837 <tr class="entry" id="controls_android.control.afMode">
2838 <td class="entry_name
2840 android.<wbr/>control.<wbr/>af<wbr/>Mode
2842 <td class="entry_type">
2843 <span class="entry_type_name entry_type_name_enum">byte</span>
2845 <span class="entry_type_visibility"> [public]</span>
2848 <span class="entry_type_hwlevel">[legacy] </span>
2852 <ul class="entry_type_enum">
2854 <span class="entry_type_enum_name">OFF (v3.2)</span>
2855 <span class="entry_type_enum_notes"><p>The auto-focus routine does not control the lens;
2856 <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> is controlled by the
2857 application.<wbr/></p></span>
2860 <span class="entry_type_enum_name">AUTO (v3.2)</span>
2861 <span class="entry_type_enum_notes"><p>Basic automatic focus mode.<wbr/></p>
2862 <p>In this mode,<wbr/> the lens does not move unless
2863 the autofocus trigger action is called.<wbr/> When that trigger
2864 is activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
2865 the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/></p>
2866 <p>Always supported if lens is not fixed focus.<wbr/></p>
2867 <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
2868 is fixed-focus.<wbr/></p>
2869 <p>Triggering AF_<wbr/>CANCEL resets the lens position to default,<wbr/>
2870 and sets the AF state to INACTIVE.<wbr/></p></span>
2873 <span class="entry_type_enum_name">MACRO (v3.2)</span>
2874 <span class="entry_type_enum_notes"><p>Close-up focusing mode.<wbr/></p>
2875 <p>In this mode,<wbr/> the lens does not move unless the
2876 autofocus trigger action is called.<wbr/> When that trigger is
2877 activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
2878 the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/> This
2879 mode is optimized for focusing on objects very close to
2880 the camera.<wbr/></p>
2881 <p>When that trigger is activated,<wbr/> AF will transition to
2882 ACTIVE_<wbr/>SCAN,<wbr/> then to the outcome of the scan (FOCUSED or
2883 NOT_<wbr/>FOCUSED).<wbr/> Triggering cancel AF resets the lens
2884 position to default,<wbr/> and sets the AF state to
2885 INACTIVE.<wbr/></p></span>
2888 <span class="entry_type_enum_name">CONTINUOUS_VIDEO (v3.2)</span>
2889 <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
2890 position continually to attempt to provide a
2891 constantly-in-focus image stream.<wbr/></p>
2892 <p>The focusing behavior should be suitable for good quality
2893 video recording; typically this means slower focus
2894 movement and no overshoots.<wbr/> When the AF trigger is not
2895 involved,<wbr/> the AF algorithm should start in INACTIVE state,<wbr/>
2896 and then transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED
2897 states as appropriate.<wbr/> When the AF trigger is activated,<wbr/>
2898 the algorithm should immediately transition into
2899 AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the
2900 lens position until a cancel AF trigger is received.<wbr/></p>
2901 <p>Once cancel is received,<wbr/> the algorithm should transition
2902 back to INACTIVE and resume passive scan.<wbr/> Note that this
2903 behavior is not identical to CONTINUOUS_<wbr/>PICTURE,<wbr/> since an
2904 ongoing PASSIVE_<wbr/>SCAN must immediately be
2905 canceled.<wbr/></p></span>
2908 <span class="entry_type_enum_name">CONTINUOUS_PICTURE (v3.2)</span>
2909 <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
2910 position continually to attempt to provide a
2911 constantly-in-focus image stream.<wbr/></p>
2912 <p>The focusing behavior should be suitable for still image
2913 capture; typically this means focusing as fast as
2914 possible.<wbr/> When the AF trigger is not involved,<wbr/> the AF
2915 algorithm should start in INACTIVE state,<wbr/> and then
2916 transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED states as
2917 appropriate as it attempts to maintain focus.<wbr/> When the AF
2918 trigger is activated,<wbr/> the algorithm should finish its
2919 PASSIVE_<wbr/>SCAN if active,<wbr/> and then transition into
2920 AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the
2921 lens position until a cancel AF trigger is received.<wbr/></p>
2922 <p>When the AF cancel trigger is activated,<wbr/> the algorithm
2923 should transition back to INACTIVE and then act as if it
2924 has just been started.<wbr/></p></span>
2927 <span class="entry_type_enum_name">EDOF (v3.2)</span>
2928 <span class="entry_type_enum_notes"><p>Extended depth of field (digital focus) mode.<wbr/></p>
2929 <p>The camera device will produce images with an extended
2930 depth of field automatically; no special focusing
2931 operations need to be done before taking a picture.<wbr/></p>
2932 <p>AF triggers are ignored,<wbr/> and the AF state will always be
2933 INACTIVE.<wbr/></p></span>
2937 </td> <!-- entry_type -->
2939 <td class="entry_description">
2940 <p>Whether auto-focus (AF) is currently enabled,<wbr/> and what
2941 mode it is set to.<wbr/></p>
2944 <td class="entry_units">
2947 <td class="entry_range">
2948 <p><a href="#static_android.control.afAvailableModes">android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes</a></p>
2951 <td class="entry_hal_version">
2955 <td class="entry_tags">
2956 <ul class="entry_tags">
2957 <li><a href="#tag_BC">BC</a></li>
2962 <tr class="entries_header">
2963 <th class="th_details" colspan="6">Details</th>
2965 <tr class="entry_cont">
2966 <td class="entry_details" colspan="6">
2967 <p>Only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> = AUTO and the lens is not fixed focus
2968 (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
2969 when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> the behavior of AF is device
2970 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
2971 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>
2972 <p>If the lens is controlled by the camera device auto-focus algorithm,<wbr/>
2973 the camera device will report the current AF status in <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>
2974 in result metadata.<wbr/></p>
2978 <tr class="entries_header">
2979 <th class="th_details" colspan="6">HAL Implementation Details</th>
2981 <tr class="entry_cont">
2982 <td class="entry_details" colspan="6">
2983 <p>When afMode is AUTO or MACRO,<wbr/> the lens must not move until an AF trigger is sent in a
2984 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
2985 up with either FOCUSED_<wbr/>LOCKED or NOT_<wbr/>FOCUSED_<wbr/>LOCKED state (see
2986 <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
2987 locked and will not move.<wbr/> If camera movement (e.<wbr/>g.<wbr/> tilting camera) causes the lens to move
2988 after the lens is locked,<wbr/> the HAL must compensate this movement appropriately such that
2989 the same focal plane remains in focus.<wbr/></p>
2990 <p>When afMode is one of the continuous auto focus modes,<wbr/> the HAL is free to start a AF
2991 scan whenever it's not locked.<wbr/> When the lens is locked after an AF trigger
2992 (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
2993 same lock behavior as above.<wbr/></p>
2994 <p>When afMode is OFF,<wbr/> the application controls focus manually.<wbr/> The accuracy of the
2995 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/>
2996 However,<wbr/> the lens must not move regardless of the camera movement for any focus distance
2997 manual control.<wbr/></p>
2998 <p>To put this in concrete terms,<wbr/> if the camera has lens elements which may move based on
2999 camera orientation or motion (e.<wbr/>g.<wbr/> due to gravity),<wbr/> then the HAL must drive the lens to
3000 remain in a fixed position invariant to the camera's orientation or motion,<wbr/> for example,<wbr/>
3001 by using accelerometer measurements in the lens control logic.<wbr/> This is a typical issue
3002 that will arise on camera modules with open-loop VCMs.<wbr/></p>
3006 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3007 <!-- end of entry -->
3010 <tr class="entry" id="controls_android.control.afRegions">
3011 <td class="entry_name
3013 android.<wbr/>control.<wbr/>af<wbr/>Regions
3015 <td class="entry_type">
3016 <span class="entry_type_name">int32</span>
3017 <span class="entry_type_container">x</span>
3019 <span class="entry_type_array">
3022 <span class="entry_type_visibility"> [public as meteringRectangle]</span>
3029 </td> <!-- entry_type -->
3031 <td class="entry_description">
3032 <p>List of metering areas to use for auto-focus.<wbr/></p>
3035 <td class="entry_units">
3036 Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
3039 <td class="entry_range">
3040 <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
3041 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
3044 <td class="entry_hal_version">
3048 <td class="entry_tags">
3049 <ul class="entry_tags">
3050 <li><a href="#tag_BC">BC</a></li>
3055 <tr class="entries_header">
3056 <th class="th_details" colspan="6">Details</th>
3058 <tr class="entry_cont">
3059 <td class="entry_details" colspan="6">
3060 <p>Not available if <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a> is 0.<wbr/>
3061 Otherwise will always be present.<wbr/></p>
3062 <p>The maximum number of focus areas supported by the device is determined by the value
3063 of <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a>.<wbr/></p>
3064 <p>The coordinate system is based on the active pixel array,<wbr/>
3065 with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
3066 (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
3067 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
3068 bottom-right pixel in the active pixel array.<wbr/></p>
3069 <p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight
3070 for every pixel in the area.<wbr/> This means that a large metering area
3071 with the same weight as a smaller area will have more effect in
3072 the metering result.<wbr/> Metering areas can partially overlap and the
3073 camera device will add the weights in the overlap region.<wbr/></p>
3074 <p>The weights are relative to weights of other metering regions,<wbr/> so if only one region
3075 is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0 weight is
3077 <p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
3078 camera device.<wbr/></p>
3079 <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
3080 capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
3081 region and output only the intersection rectangle as the metering region in the result
3082 metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and
3083 not reported in the result metadata.<wbr/></p>
3087 <tr class="entries_header">
3088 <th class="th_details" colspan="6">HAL Implementation Details</th>
3090 <tr class="entry_cont">
3091 <td class="entry_details" colspan="6">
3092 <p>The HAL level representation of MeteringRectangle[] is a
3093 int[5 * area_<wbr/>count].<wbr/>
3094 Every five elements represent a metering region of
3095 (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
3096 The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
3097 exclusive on xmax and ymax.<wbr/></p>
3101 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3102 <!-- end of entry -->
3105 <tr class="entry" id="controls_android.control.afTrigger">
3106 <td class="entry_name
3108 android.<wbr/>control.<wbr/>af<wbr/>Trigger
3110 <td class="entry_type">
3111 <span class="entry_type_name entry_type_name_enum">byte</span>
3113 <span class="entry_type_visibility"> [public]</span>
3116 <span class="entry_type_hwlevel">[legacy] </span>
3120 <ul class="entry_type_enum">
3122 <span class="entry_type_enum_name">IDLE (v3.2)</span>
3123 <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
3126 <span class="entry_type_enum_name">START (v3.2)</span>
3127 <span class="entry_type_enum_notes"><p>Autofocus will trigger now.<wbr/></p></span>
3130 <span class="entry_type_enum_name">CANCEL (v3.2)</span>
3131 <span class="entry_type_enum_notes"><p>Autofocus will return to its initial
3132 state,<wbr/> and cancel any currently active trigger.<wbr/></p></span>
3136 </td> <!-- entry_type -->
3138 <td class="entry_description">
3139 <p>Whether the camera device will trigger autofocus for this request.<wbr/></p>
3142 <td class="entry_units">
3145 <td class="entry_range">
3148 <td class="entry_hal_version">
3152 <td class="entry_tags">
3153 <ul class="entry_tags">
3154 <li><a href="#tag_BC">BC</a></li>
3159 <tr class="entries_header">
3160 <th class="th_details" colspan="6">Details</th>
3162 <tr class="entry_cont">
3163 <td class="entry_details" colspan="6">
3164 <p>This entry is normally set to IDLE,<wbr/> or is not
3165 included at all in the request settings.<wbr/></p>
3166 <p>When included and set to START,<wbr/> the camera device will trigger the
3167 autofocus algorithm.<wbr/> If autofocus is disabled,<wbr/> this trigger has no effect.<wbr/></p>
3168 <p>When set to CANCEL,<wbr/> the camera device will cancel any active trigger,<wbr/>
3169 and return to its initial AF state.<wbr/></p>
3170 <p>Generally,<wbr/> applications should set this entry to START or CANCEL for only a
3171 single capture,<wbr/> and then return it to IDLE (or not set at all).<wbr/> Specifying
3172 START for multiple captures in a row means restarting the AF operation over
3173 and over again.<wbr/></p>
3174 <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>
3175 <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>
3176 simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between
3177 the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a
3178 focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous
3179 trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and
3180 changes to <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>,<wbr/> for example.<wbr/></p>
3184 <tr class="entries_header">
3185 <th class="th_details" colspan="6">HAL Implementation Details</th>
3187 <tr class="entry_cont">
3188 <td class="entry_details" colspan="6">
3189 <p>The HAL must support triggering the AF trigger while an AE precapture trigger is active
3190 (and vice versa),<wbr/> or at the same time as the AE trigger.<wbr/> It is acceptable for the HAL to
3191 treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the
3192 AE trigger.<wbr/> Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/>
3193 to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p>
3197 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3198 <!-- end of entry -->
3201 <tr class="entry" id="controls_android.control.awbLock">
3202 <td class="entry_name
3204 android.<wbr/>control.<wbr/>awb<wbr/>Lock
3206 <td class="entry_type">
3207 <span class="entry_type_name entry_type_name_enum">byte</span>
3209 <span class="entry_type_visibility"> [public as boolean]</span>
3212 <span class="entry_type_hwlevel">[legacy] </span>
3216 <ul class="entry_type_enum">
3218 <span class="entry_type_enum_name">OFF (v3.2)</span>
3219 <span class="entry_type_enum_notes"><p>Auto-white balance lock is disabled; the AWB
3220 algorithm is free to update its parameters if in AUTO
3221 mode.<wbr/></p></span>
3224 <span class="entry_type_enum_name">ON (v3.2)</span>
3225 <span class="entry_type_enum_notes"><p>Auto-white balance lock is enabled; the AWB
3226 algorithm will not update its parameters while the lock
3227 is active.<wbr/></p></span>
3231 </td> <!-- entry_type -->
3233 <td class="entry_description">
3234 <p>Whether auto-white balance (AWB) is currently locked to its
3235 latest calculated values.<wbr/></p>
3238 <td class="entry_units">
3241 <td class="entry_range">
3244 <td class="entry_hal_version">
3248 <td class="entry_tags">
3249 <ul class="entry_tags">
3250 <li><a href="#tag_BC">BC</a></li>
3255 <tr class="entries_header">
3256 <th class="th_details" colspan="6">Details</th>
3258 <tr class="entry_cont">
3259 <td class="entry_details" colspan="6">
3260 <p>When set to <code>true</code> (ON),<wbr/> the AWB algorithm is locked to its latest parameters,<wbr/>
3261 and will not change color balance settings until the lock is set to <code>false</code> (OFF).<wbr/></p>
3262 <p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that
3263 get locked do not necessarily correspond to the settings that were present in the
3264 latest capture result received from the camera device,<wbr/> since additional captures
3265 and AWB updates may have occurred even before the result was sent out.<wbr/> If an
3266 application is switching between automatic and manual control and wishes to eliminate
3267 any flicker during the switch,<wbr/> the following procedure is recommended:</p>
3269 <li>Starting in auto-AWB mode:</li>
3271 <li>Wait for the first result to be output that has the AWB locked</li>
3272 <li>Copy AWB settings from that result into a request,<wbr/> set the request to manual AWB</li>
3273 <li>Submit the capture request,<wbr/> proceed to run manual AWB as desired.<wbr/></li>
3275 <p>Note that AWB lock is only meaningful when
3276 <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is in the AUTO mode; in other modes,<wbr/>
3277 AWB is already fixed to a specific setting.<wbr/></p>
3278 <p>Some LEGACY devices may not support ON; the value is then overridden to OFF.<wbr/></p>
3283 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3284 <!-- end of entry -->
3287 <tr class="entry" id="controls_android.control.awbMode">
3288 <td class="entry_name
3290 android.<wbr/>control.<wbr/>awb<wbr/>Mode
3292 <td class="entry_type">
3293 <span class="entry_type_name entry_type_name_enum">byte</span>
3295 <span class="entry_type_visibility"> [public]</span>
3298 <span class="entry_type_hwlevel">[legacy] </span>
3302 <ul class="entry_type_enum">
3304 <span class="entry_type_enum_name">OFF (v3.2)</span>
3305 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled.<wbr/></p>
3306 <p>The application-selected color transform matrix
3307 (<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>) and gains
3308 (<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a>) are used by the camera
3309 device for manual white balance control.<wbr/></p></span>
3312 <span class="entry_type_enum_name">AUTO (v3.2)</span>
3313 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is active.<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">INCANDESCENT (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 incandescent 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 A.<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">FLUORESCENT (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 fluorescent light as the assumed scene
3338 illumination for white balance.<wbr/></p>
3339 <p>While the exact white balance transforms are up to the
3340 camera device,<wbr/> they will approximately match the CIE
3341 standard illuminant F2.<wbr/></p>
3342 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3343 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3344 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3345 values used by the camera device for the transform and gains
3346 will be available in the capture result for this request.<wbr/></p></span>
3349 <span class="entry_type_enum_name">WARM_FLUORESCENT (v3.2)</span>
3350 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3351 the camera device uses warm fluorescent light as the assumed scene
3352 illumination for white balance.<wbr/></p>
3353 <p>While the exact white balance transforms are up to the
3354 camera device,<wbr/> they will approximately match the CIE
3355 standard illuminant F4.<wbr/></p>
3356 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3357 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3358 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3359 values used by the camera device for the transform and gains
3360 will be available in the capture result for this request.<wbr/></p></span>
3363 <span class="entry_type_enum_name">DAYLIGHT (v3.2)</span>
3364 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3365 the camera device uses daylight light as the assumed scene
3366 illumination for white balance.<wbr/></p>
3367 <p>While the exact white balance transforms are up to the
3368 camera device,<wbr/> they will approximately match the CIE
3369 standard illuminant D65.<wbr/></p>
3370 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3371 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3372 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3373 values used by the camera device for the transform and gains
3374 will be available in the capture result for this request.<wbr/></p></span>
3377 <span class="entry_type_enum_name">CLOUDY_DAYLIGHT (v3.2)</span>
3378 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3379 the camera device uses cloudy daylight light as the assumed scene
3380 illumination for white balance.<wbr/></p>
3381 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3382 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3383 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3384 values used by the camera device for the transform and gains
3385 will be available in the capture result for this request.<wbr/></p></span>
3388 <span class="entry_type_enum_name">TWILIGHT (v3.2)</span>
3389 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3390 the camera device uses twilight light as the assumed scene
3391 illumination for white balance.<wbr/></p>
3392 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3393 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3394 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3395 values used by the camera device for the transform and gains
3396 will be available in the capture result for this request.<wbr/></p></span>
3399 <span class="entry_type_enum_name">SHADE (v3.2)</span>
3400 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3401 the camera device uses shade light as the assumed scene
3402 illumination for white balance.<wbr/></p>
3403 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3404 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3405 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3406 values used by the camera device for the transform and gains
3407 will be available in the capture result for this request.<wbr/></p></span>
3411 </td> <!-- entry_type -->
3413 <td class="entry_description">
3414 <p>Whether auto-white balance (AWB) is currently setting the color
3415 transform fields,<wbr/> and what its illumination target
3419 <td class="entry_units">
3422 <td class="entry_range">
3423 <p><a href="#static_android.control.awbAvailableModes">android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes</a></p>
3426 <td class="entry_hal_version">
3430 <td class="entry_tags">
3431 <ul class="entry_tags">
3432 <li><a href="#tag_BC">BC</a></li>
3437 <tr class="entries_header">
3438 <th class="th_details" colspan="6">Details</th>
3440 <tr class="entry_cont">
3441 <td class="entry_details" colspan="6">
3442 <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is AUTO.<wbr/></p>
3443 <p>When set to the ON mode,<wbr/> the camera device's auto-white balance
3444 routine is enabled,<wbr/> overriding the application's selected
3445 <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
3446 <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>
3447 is OFF,<wbr/> the behavior of AWB is device dependent.<wbr/> It is recommened to
3448 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
3449 setting AE mode to OFF.<wbr/></p>
3450 <p>When set to the OFF mode,<wbr/> the camera device's auto-white balance
3451 routine is disabled.<wbr/> The application manually controls the white
3452 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>
3453 and <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/></p>
3454 <p>When set to any other modes,<wbr/> the camera device's auto-white
3455 balance routine is disabled.<wbr/> The camera device uses each
3456 particular illumination target for white balance
3457 adjustment.<wbr/> The application's values for
3458 <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>,<wbr/>
3459 <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
3460 <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> are ignored.<wbr/></p>
3465 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3466 <!-- end of entry -->
3469 <tr class="entry" id="controls_android.control.awbRegions">
3470 <td class="entry_name
3472 android.<wbr/>control.<wbr/>awb<wbr/>Regions
3474 <td class="entry_type">
3475 <span class="entry_type_name">int32</span>
3476 <span class="entry_type_container">x</span>
3478 <span class="entry_type_array">
3481 <span class="entry_type_visibility"> [public as meteringRectangle]</span>
3488 </td> <!-- entry_type -->
3490 <td class="entry_description">
3491 <p>List of metering areas to use for auto-white-balance illuminant
3492 estimation.<wbr/></p>
3495 <td class="entry_units">
3496 Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
3499 <td class="entry_range">
3500 <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
3501 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
3504 <td class="entry_hal_version">
3508 <td class="entry_tags">
3509 <ul class="entry_tags">
3510 <li><a href="#tag_BC">BC</a></li>
3515 <tr class="entries_header">
3516 <th class="th_details" colspan="6">Details</th>
3518 <tr class="entry_cont">
3519 <td class="entry_details" colspan="6">
3520 <p>Not available if <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a> is 0.<wbr/>
3521 Otherwise will always be present.<wbr/></p>
3522 <p>The maximum number of regions supported by the device is determined by the value
3523 of <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a>.<wbr/></p>
3524 <p>The coordinate system is based on the active pixel array,<wbr/>
3525 with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
3526 (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
3527 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
3528 bottom-right pixel in the active pixel array.<wbr/></p>
3529 <p>The weight must range from 0 to 1000,<wbr/> and represents a weight
3530 for every pixel in the area.<wbr/> This means that a large metering area
3531 with the same weight as a smaller area will have more effect in
3532 the metering result.<wbr/> Metering areas can partially overlap and the
3533 camera device will add the weights in the overlap region.<wbr/></p>
3534 <p>The weights are relative to weights of other white balance metering regions,<wbr/> so if
3535 only one region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with
3536 0 weight is ignored.<wbr/></p>
3537 <p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
3538 camera device.<wbr/></p>
3539 <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
3540 capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
3541 region and output only the intersection rectangle as the metering region in the result
3542 metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and
3543 not reported in the result metadata.<wbr/></p>
3547 <tr class="entries_header">
3548 <th class="th_details" colspan="6">HAL Implementation Details</th>
3550 <tr class="entry_cont">
3551 <td class="entry_details" colspan="6">
3552 <p>The HAL level representation of MeteringRectangle[] is a
3553 int[5 * area_<wbr/>count].<wbr/>
3554 Every five elements represent a metering region of
3555 (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
3556 The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
3557 exclusive on xmax and ymax.<wbr/></p>
3561 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3562 <!-- end of entry -->
3565 <tr class="entry" id="controls_android.control.captureIntent">
3566 <td class="entry_name
3568 android.<wbr/>control.<wbr/>capture<wbr/>Intent
3570 <td class="entry_type">
3571 <span class="entry_type_name entry_type_name_enum">byte</span>
3573 <span class="entry_type_visibility"> [public]</span>
3576 <span class="entry_type_hwlevel">[legacy] </span>
3580 <ul class="entry_type_enum">
3582 <span class="entry_type_enum_name">CUSTOM (v3.2)</span>
3583 <span class="entry_type_enum_notes"><p>The goal of this request doesn't fall into the other
3584 categories.<wbr/> The camera device will default to preview-like
3585 behavior.<wbr/></p></span>
3588 <span class="entry_type_enum_name">PREVIEW (v3.2)</span>
3589 <span class="entry_type_enum_notes"><p>This request is for a preview-like use case.<wbr/></p>
3590 <p>The precapture trigger may be used to start off a metering
3591 w/<wbr/>flash sequence.<wbr/></p></span>
3594 <span class="entry_type_enum_name">STILL_CAPTURE (v3.2)</span>
3595 <span class="entry_type_enum_notes"><p>This request is for a still capture-type
3597 <p>If the flash unit is under automatic control,<wbr/> it may fire as needed.<wbr/></p></span>
3600 <span class="entry_type_enum_name">VIDEO_RECORD (v3.2)</span>
3601 <span class="entry_type_enum_notes"><p>This request is for a video recording
3602 use case.<wbr/></p></span>
3605 <span class="entry_type_enum_name">VIDEO_SNAPSHOT (v3.2)</span>
3606 <span class="entry_type_enum_notes"><p>This request is for a video snapshot (still
3607 image while recording video) use case.<wbr/></p>
3608 <p>The camera device should take the highest-quality image
3609 possible (given the other settings) without disrupting the
3610 frame rate of video recording.<wbr/> </p></span>
3613 <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span>
3614 <span class="entry_type_enum_notes"><p>This request is for a ZSL usecase; the
3615 application will stream full-resolution images and
3616 reprocess one or several later for a final
3617 capture.<wbr/></p></span>
3620 <span class="entry_type_enum_name">MANUAL (v3.2)</span>
3621 <span class="entry_type_enum_notes"><p>This request is for manual capture use case where
3622 the applications want to directly control the capture parameters.<wbr/></p>
3623 <p>For example,<wbr/> the application may wish to manually control
3624 <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>
3627 <span class="entry_type_enum_name">MOTION_TRACKING (v3.3)</span>
3628 <span class="entry_type_enum_notes"><p>This request is for a motion tracking use case,<wbr/> where
3629 the application will use camera and inertial sensor data to
3630 locate and track objects in the world.<wbr/></p>
3631 <p>The camera device auto-exposure routine will limit the exposure time
3632 of the camera to no more than 20 milliseconds,<wbr/> to minimize motion blur.<wbr/></p></span>
3636 </td> <!-- entry_type -->
3638 <td class="entry_description">
3639 <p>Information to the camera device 3A (auto-exposure,<wbr/>
3640 auto-focus,<wbr/> auto-white balance) routines about the purpose
3641 of this capture,<wbr/> to help the camera device to decide optimal 3A
3645 <td class="entry_units">
3648 <td class="entry_range">
3651 <td class="entry_hal_version">
3655 <td class="entry_tags">
3656 <ul class="entry_tags">
3657 <li><a href="#tag_BC">BC</a></li>
3662 <tr class="entries_header">
3663 <th class="th_details" colspan="6">Details</th>
3665 <tr class="entry_cont">
3666 <td class="entry_details" colspan="6">
3667 <p>This control (except for MANUAL) is only effective if
3668 <code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF</code> and any 3A routine is active.<wbr/></p>
3669 <p>All intents are supported by all devices,<wbr/> except that:
3670 * ZERO_<wbr/>SHUTTER_<wbr/>LAG will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
3671 PRIVATE_<wbr/>REPROCESSING or YUV_<wbr/>REPROCESSING.<wbr/>
3672 * MANUAL will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
3673 MANUAL_<wbr/>SENSOR.<wbr/>
3674 * MOTION_<wbr/>TRACKING will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
3675 MOTION_<wbr/>TRACKING.<wbr/></p>
3680 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3681 <!-- end of entry -->
3684 <tr class="entry" id="controls_android.control.effectMode">
3685 <td class="entry_name
3687 android.<wbr/>control.<wbr/>effect<wbr/>Mode
3689 <td class="entry_type">
3690 <span class="entry_type_name entry_type_name_enum">byte</span>
3692 <span class="entry_type_visibility"> [public]</span>
3695 <span class="entry_type_hwlevel">[legacy] </span>
3699 <ul class="entry_type_enum">
3701 <span class="entry_type_enum_name">OFF (v3.2)</span>
3702 <span class="entry_type_enum_notes"><p>No color effect will be applied.<wbr/></p></span>
3705 <span class="entry_type_enum_name">MONO (v3.2)</span>
3706 <span class="entry_type_enum_optional">[optional]</span>
3707 <span class="entry_type_enum_notes"><p>A "monocolor" effect where the image is mapped into
3708 a single color.<wbr/></p>
3709 <p>This will typically be grayscale.<wbr/></p></span>
3712 <span class="entry_type_enum_name">NEGATIVE (v3.2)</span>
3713 <span class="entry_type_enum_optional">[optional]</span>
3714 <span class="entry_type_enum_notes"><p>A "photo-negative" effect where the image's colors
3715 are inverted.<wbr/></p></span>
3718 <span class="entry_type_enum_name">SOLARIZE (v3.2)</span>
3719 <span class="entry_type_enum_optional">[optional]</span>
3720 <span class="entry_type_enum_notes"><p>A "solarisation" effect (Sabattier effect) where the
3721 image is wholly or partially reversed in
3722 tone.<wbr/></p></span>
3725 <span class="entry_type_enum_name">SEPIA (v3.2)</span>
3726 <span class="entry_type_enum_optional">[optional]</span>
3727 <span class="entry_type_enum_notes"><p>A "sepia" effect where the image is mapped into warm
3728 gray,<wbr/> red,<wbr/> and brown tones.<wbr/></p></span>
3731 <span class="entry_type_enum_name">POSTERIZE (v3.2)</span>
3732 <span class="entry_type_enum_optional">[optional]</span>
3733 <span class="entry_type_enum_notes"><p>A "posterization" effect where the image uses
3734 discrete regions of tone rather than a continuous
3735 gradient of tones.<wbr/></p></span>
3738 <span class="entry_type_enum_name">WHITEBOARD (v3.2)</span>
3739 <span class="entry_type_enum_optional">[optional]</span>
3740 <span class="entry_type_enum_notes"><p>A "whiteboard" effect where the image is typically displayed
3741 as regions of white,<wbr/> with black or grey details.<wbr/></p></span>
3744 <span class="entry_type_enum_name">BLACKBOARD (v3.2)</span>
3745 <span class="entry_type_enum_optional">[optional]</span>
3746 <span class="entry_type_enum_notes"><p>A "blackboard" effect where the image is typically displayed
3747 as regions of black,<wbr/> with white or grey details.<wbr/></p></span>
3750 <span class="entry_type_enum_name">AQUA (v3.2)</span>
3751 <span class="entry_type_enum_optional">[optional]</span>
3752 <span class="entry_type_enum_notes"><p>An "aqua" effect where a blue hue is added to the image.<wbr/></p></span>
3756 </td> <!-- entry_type -->
3758 <td class="entry_description">
3759 <p>A special color effect to apply.<wbr/></p>
3762 <td class="entry_units">
3765 <td class="entry_range">
3766 <p><a href="#static_android.control.availableEffects">android.<wbr/>control.<wbr/>available<wbr/>Effects</a></p>
3769 <td class="entry_hal_version">
3773 <td class="entry_tags">
3774 <ul class="entry_tags">
3775 <li><a href="#tag_BC">BC</a></li>
3780 <tr class="entries_header">
3781 <th class="th_details" colspan="6">Details</th>
3783 <tr class="entry_cont">
3784 <td class="entry_details" colspan="6">
3785 <p>When this mode is set,<wbr/> a color effect will be applied
3786 to images produced by the camera device.<wbr/> The interpretation
3787 and implementation of these color effects is left to the
3788 implementor of the camera device,<wbr/> and should not be
3789 depended on to be consistent (or present) across all
3795 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3796 <!-- end of entry -->
3799 <tr class="entry" id="controls_android.control.mode">
3800 <td class="entry_name
3802 android.<wbr/>control.<wbr/>mode
3804 <td class="entry_type">
3805 <span class="entry_type_name entry_type_name_enum">byte</span>
3807 <span class="entry_type_visibility"> [public]</span>
3810 <span class="entry_type_hwlevel">[legacy] </span>
3814 <ul class="entry_type_enum">
3816 <span class="entry_type_enum_name">OFF (v3.2)</span>
3817 <span class="entry_type_enum_notes"><p>Full application control of pipeline.<wbr/></p>
3818 <p>All control by the device's metering and focusing (3A)
3819 routines is disabled,<wbr/> and no other settings in
3820 android.<wbr/>control.<wbr/>* have any effect,<wbr/> except that
3821 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> may be used by the camera
3822 device to select post-processing values for processing
3823 blocks that do not allow for manual control,<wbr/> or are not
3824 exposed by the camera API.<wbr/></p>
3825 <p>However,<wbr/> the camera device's 3A routines may continue to
3826 collect statistics and update their internal state so that
3827 when control is switched to AUTO mode,<wbr/> good control values
3828 can be immediately applied.<wbr/></p></span>
3831 <span class="entry_type_enum_name">AUTO (v3.2)</span>
3832 <span class="entry_type_enum_notes"><p>Use settings for each individual 3A routine.<wbr/></p>
3833 <p>Manual control of capture parameters is disabled.<wbr/> All
3834 controls in android.<wbr/>control.<wbr/>* besides sceneMode take
3835 effect.<wbr/></p></span>
3838 <span class="entry_type_enum_name">USE_SCENE_MODE (v3.2)</span>
3839 <span class="entry_type_enum_optional">[optional]</span>
3840 <span class="entry_type_enum_notes"><p>Use a specific scene mode.<wbr/></p>
3841 <p>Enabling this disables control.<wbr/>aeMode,<wbr/> control.<wbr/>awbMode and
3842 control.<wbr/>afMode controls; the camera device will ignore
3843 those settings while USE_<wbr/>SCENE_<wbr/>MODE is active (except for
3844 FACE_<wbr/>PRIORITY scene mode).<wbr/> Other control entries are still active.<wbr/>
3845 This setting can only be used if scene mode is supported (i.<wbr/>e.<wbr/>
3846 <a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a>
3847 contain some modes other than DISABLED).<wbr/></p></span>
3850 <span class="entry_type_enum_name">OFF_KEEP_STATE (v3.2)</span>
3851 <span class="entry_type_enum_optional">[optional]</span>
3852 <span class="entry_type_enum_notes"><p>Same as OFF mode,<wbr/> except that this capture will not be
3853 used by camera device background auto-exposure,<wbr/> auto-white balance and
3854 auto-focus algorithms (3A) to update their statistics.<wbr/></p>
3855 <p>Specifically,<wbr/> the 3A routines are locked to the last
3856 values set from a request with AUTO,<wbr/> OFF,<wbr/> or
3857 USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> and any statistics or state updates
3858 collected from manual captures with OFF_<wbr/>KEEP_<wbr/>STATE will be
3859 discarded by the camera device.<wbr/></p></span>
3863 </td> <!-- entry_type -->
3865 <td class="entry_description">
3866 <p>Overall mode of 3A (auto-exposure,<wbr/> auto-white-balance,<wbr/> auto-focus) control
3870 <td class="entry_units">
3873 <td class="entry_range">
3874 <p><a href="#static_android.control.availableModes">android.<wbr/>control.<wbr/>available<wbr/>Modes</a></p>
3877 <td class="entry_hal_version">
3881 <td class="entry_tags">
3882 <ul class="entry_tags">
3883 <li><a href="#tag_BC">BC</a></li>
3888 <tr class="entries_header">
3889 <th class="th_details" colspan="6">Details</th>
3891 <tr class="entry_cont">
3892 <td class="entry_details" colspan="6">
3893 <p>This is a top-level 3A control switch.<wbr/> When set to OFF,<wbr/> all 3A control
3894 by the camera device is disabled.<wbr/> The application must set the fields for
3895 capture parameters itself.<wbr/></p>
3896 <p>When set to AUTO,<wbr/> the individual algorithm controls in
3897 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>
3898 <p>When set to USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> the individual controls in
3899 android.<wbr/>control.<wbr/>* are mostly disabled,<wbr/> and the camera device
3900 implements one of the scene mode settings (such as ACTION,<wbr/>
3901 SUNSET,<wbr/> or PARTY) as it wishes.<wbr/> The camera device scene mode
3902 3A settings are provided by <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">capture results</a>.<wbr/></p>
3903 <p>When set to OFF_<wbr/>KEEP_<wbr/>STATE,<wbr/> it is similar to OFF mode,<wbr/> the only difference
3904 is that this frame will not be used by camera device background 3A statistics
3905 update,<wbr/> as if this frame is never captured.<wbr/> This mode can be used in the scenario
3906 where the application doesn't want a 3A manual control capture to affect
3907 the subsequent auto 3A capture results.<wbr/></p>
3912 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3913 <!-- end of entry -->
3916 <tr class="entry" id="controls_android.control.sceneMode">
3917 <td class="entry_name
3919 android.<wbr/>control.<wbr/>scene<wbr/>Mode
3921 <td class="entry_type">
3922 <span class="entry_type_name entry_type_name_enum">byte</span>
3924 <span class="entry_type_visibility"> [public]</span>
3927 <span class="entry_type_hwlevel">[legacy] </span>
3931 <ul class="entry_type_enum">
3933 <span class="entry_type_enum_name">DISABLED (v3.2)</span>
3934 <span class="entry_type_enum_value">0</span>
3935 <span class="entry_type_enum_notes"><p>Indicates that no scene modes are set for a given capture request.<wbr/></p></span>
3938 <span class="entry_type_enum_name">FACE_PRIORITY (v3.2)</span>
3939 <span class="entry_type_enum_notes"><p>If face detection support exists,<wbr/> use face
3940 detection data for auto-focus,<wbr/> auto-white balance,<wbr/> and
3941 auto-exposure routines.<wbr/></p>
3942 <p>If face detection statistics are disabled
3943 (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/>
3944 this should still operate correctly (but will not return
3945 face detection statistics to the framework).<wbr/></p>
3946 <p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
3947 <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>
3948 remain active when FACE_<wbr/>PRIORITY is set.<wbr/></p></span>
3951 <span class="entry_type_enum_name">ACTION (v3.2)</span>
3952 <span class="entry_type_enum_optional">[optional]</span>
3953 <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving objects.<wbr/></p>
3954 <p>Similar to SPORTS.<wbr/></p></span>
3957 <span class="entry_type_enum_name">PORTRAIT (v3.2)</span>
3958 <span class="entry_type_enum_optional">[optional]</span>
3959 <span class="entry_type_enum_notes"><p>Optimized for still photos of people.<wbr/></p></span>
3962 <span class="entry_type_enum_name">LANDSCAPE (v3.2)</span>
3963 <span class="entry_type_enum_optional">[optional]</span>
3964 <span class="entry_type_enum_notes"><p>Optimized for photos of distant macroscopic objects.<wbr/></p></span>
3967 <span class="entry_type_enum_name">NIGHT (v3.2)</span>
3968 <span class="entry_type_enum_optional">[optional]</span>
3969 <span class="entry_type_enum_notes"><p>Optimized for low-light settings.<wbr/></p></span>
3972 <span class="entry_type_enum_name">NIGHT_PORTRAIT (v3.2)</span>
3973 <span class="entry_type_enum_optional">[optional]</span>
3974 <span class="entry_type_enum_notes"><p>Optimized for still photos of people in low-light
3975 settings.<wbr/></p></span>
3978 <span class="entry_type_enum_name">THEATRE (v3.2)</span>
3979 <span class="entry_type_enum_optional">[optional]</span>
3980 <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings where flash must
3981 remain off.<wbr/></p></span>
3984 <span class="entry_type_enum_name">BEACH (v3.2)</span>
3985 <span class="entry_type_enum_optional">[optional]</span>
3986 <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor beach settings.<wbr/></p></span>
3989 <span class="entry_type_enum_name">SNOW (v3.2)</span>
3990 <span class="entry_type_enum_optional">[optional]</span>
3991 <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor settings containing snow.<wbr/></p></span>
3994 <span class="entry_type_enum_name">SUNSET (v3.2)</span>
3995 <span class="entry_type_enum_optional">[optional]</span>
3996 <span class="entry_type_enum_notes"><p>Optimized for scenes of the setting sun.<wbr/></p></span>
3999 <span class="entry_type_enum_name">STEADYPHOTO (v3.2)</span>
4000 <span class="entry_type_enum_optional">[optional]</span>
4001 <span class="entry_type_enum_notes"><p>Optimized to avoid blurry photos due to small amounts of
4002 device motion (for example: due to hand shake).<wbr/></p></span>
4005 <span class="entry_type_enum_name">FIREWORKS (v3.2)</span>
4006 <span class="entry_type_enum_optional">[optional]</span>
4007 <span class="entry_type_enum_notes"><p>Optimized for nighttime photos of fireworks.<wbr/></p></span>
4010 <span class="entry_type_enum_name">SPORTS (v3.2)</span>
4011 <span class="entry_type_enum_optional">[optional]</span>
4012 <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving people.<wbr/></p>
4013 <p>Similar to ACTION.<wbr/></p></span>
4016 <span class="entry_type_enum_name">PARTY (v3.2)</span>
4017 <span class="entry_type_enum_optional">[optional]</span>
4018 <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings with multiple moving
4019 people.<wbr/></p></span>
4022 <span class="entry_type_enum_name">CANDLELIGHT (v3.2)</span>
4023 <span class="entry_type_enum_optional">[optional]</span>
4024 <span class="entry_type_enum_notes"><p>Optimized for dim settings where the main light source
4025 is a flame.<wbr/></p></span>
4028 <span class="entry_type_enum_name">BARCODE (v3.2)</span>
4029 <span class="entry_type_enum_optional">[optional]</span>
4030 <span class="entry_type_enum_notes"><p>Optimized for accurately capturing a photo of barcode
4031 for use by camera applications that wish to read the
4032 barcode value.<wbr/></p></span>
4035 <span class="entry_type_enum_name">HIGH_SPEED_VIDEO (v3.2)</span>
4036 <span class="entry_type_enum_deprecated">[deprecated]</span>
4037 <span class="entry_type_enum_optional">[optional]</span>
4038 <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>
4039 and <a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a>
4040 for high speed video recording.<wbr/></p>
4041 <p>Optimized for high speed video recording (frame rate >=60fps) use case.<wbr/></p>
4042 <p>The supported high speed video sizes and fps ranges are specified in
4043 <a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/> To get desired
4044 output frame rates,<wbr/> the application is only allowed to select video size
4045 and fps range combinations listed in this static metadata.<wbr/> The fps range
4046 can be control via <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a>.<wbr/></p>
4047 <p>In this mode,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to
4048 ON,<wbr/> ON,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode
4049 controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture
4050 and post-processing parameters is possible.<wbr/> All other controls operate the
4051 same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other
4052 android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p>
4054 <li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li>
4055 <li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li>
4056 <li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li>
4057 <li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li>
4058 <li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li>
4059 <li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li>
4060 <li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li>
4061 <li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li>
4062 <li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li>
4063 <li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li>
4065 <p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p>
4067 <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>
4068 <li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li>
4069 <li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li>
4070 <li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></li>
4072 <p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may
4073 be lower than what camera can output,<wbr/> depending on the destination Surfaces for
4074 the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/>
4075 the application need check if the video encoder is capable of supporting the
4076 high frame rate for a given video size,<wbr/> or it will end up with lower recording
4077 frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the preview frame
4078 rate will be bounded by the screen refresh rate.<wbr/></p>
4079 <p>The camera device will only support up to 2 output high speed streams
4080 (processed non-stalling format defined in <a href="#static_android.request.maxNumOutputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams</a>)
4081 in this mode.<wbr/> This control will be effective only if all of below conditions are true:</p>
4083 <li>The application created no more than maxNumHighSpeedStreams processed non-stalling
4084 format output streams,<wbr/> where maxNumHighSpeedStreams is calculated as
4085 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>
4086 <li>The stream sizes are selected from the sizes reported by
4087 <a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/></li>
4088 <li>No processed non-stalling or raw streams are configured.<wbr/></li>
4090 <p>When above conditions are NOT satistied,<wbr/> the controls of this mode and
4091 <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/>
4092 the camera device will fall back to <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> <code>==</code> AUTO,<wbr/>
4093 and the returned capture result metadata will give the fps range choosen
4094 by the camera device.<wbr/></p>
4095 <p>Switching into or out of this mode may trigger some camera ISP/<wbr/>sensor
4096 reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that
4097 the application avoids unnecessary scene mode switch as much as possible.<wbr/></p></span>
4100 <span class="entry_type_enum_name">HDR (v3.2)</span>
4101 <span class="entry_type_enum_optional">[optional]</span>
4102 <span class="entry_type_enum_notes"><p>Turn on a device-specific high dynamic range (HDR) mode.<wbr/></p>
4103 <p>In this scene mode,<wbr/> the camera device captures images
4104 that keep a larger range of scene illumination levels
4105 visible in the final image.<wbr/> For example,<wbr/> when taking a
4106 picture of a object in front of a bright window,<wbr/> both
4107 the object and the scene through the window may be
4108 visible when using HDR mode,<wbr/> while in normal AUTO mode,<wbr/>
4109 one or the other may be poorly exposed.<wbr/> As a tradeoff,<wbr/>
4110 HDR mode generally takes much longer to capture a single
4111 image,<wbr/> has no user control,<wbr/> and may have other artifacts
4112 depending on the HDR method used.<wbr/></p>
4113 <p>Therefore,<wbr/> HDR captures operate at a much slower rate
4114 than regular captures.<wbr/></p>
4115 <p>In this mode,<wbr/> on LIMITED or FULL devices,<wbr/> when a request
4116 is made with a <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> of
4117 STILL_<wbr/>CAPTURE,<wbr/> the camera device will capture an image
4118 using a high dynamic range capture technique.<wbr/> On LEGACY
4119 devices,<wbr/> captures that target a JPEG-format output will
4120 be captured with HDR,<wbr/> and the capture intent is not
4122 <p>The HDR capture may involve the device capturing a burst
4123 of images internally and combining them into one,<wbr/> or it
4124 may involve the device using specialized high dynamic
4125 range capture hardware.<wbr/> In all cases,<wbr/> a single image is
4126 produced in response to a capture request submitted
4127 while in HDR mode.<wbr/></p>
4128 <p>Since substantial post-processing is generally needed to
4129 produce an HDR image,<wbr/> only YUV,<wbr/> PRIVATE,<wbr/> and JPEG
4130 outputs are supported for LIMITED/<wbr/>FULL device HDR
4131 captures,<wbr/> and only JPEG outputs are supported for LEGACY
4132 HDR captures.<wbr/> Using a RAW output for HDR capture is not
4133 supported.<wbr/></p>
4134 <p>Some devices may also support always-on HDR,<wbr/> which
4135 applies HDR processing at full frame rate.<wbr/> For these
4136 devices,<wbr/> intents other than STILL_<wbr/>CAPTURE will also
4137 produce an HDR output with no frame rate impact compared
4138 to normal operation,<wbr/> though the quality may be lower
4139 than for STILL_<wbr/>CAPTURE intents.<wbr/></p>
4140 <p>If SCENE_<wbr/>MODE_<wbr/>HDR is used with unsupported output types
4141 or capture intents,<wbr/> the images captured will be as if
4142 the SCENE_<wbr/>MODE was not enabled at all.<wbr/></p></span>
4145 <span class="entry_type_enum_name">FACE_PRIORITY_LOW_LIGHT (v3.2)</span>
4146 <span class="entry_type_enum_optional">[optional]</span>
4147 <span class="entry_type_enum_hidden">[hidden]</span>
4148 <span class="entry_type_enum_notes"><p>Same as FACE_<wbr/>PRIORITY scene mode,<wbr/> except that the camera
4149 device will choose higher sensitivity values (<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>)
4150 under low light conditions.<wbr/></p>
4151 <p>The camera device may be tuned to expose the images in a reduced
4152 sensitivity range to produce the best quality images.<wbr/> For example,<wbr/>
4153 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/>
4154 the camera device auto-exposure routine tuning process may limit the actual
4155 exposure sensitivity range to [100,<wbr/> 1200] to ensure that the noise level isn't
4156 exessive in order to preserve the image quality.<wbr/> Under this situation,<wbr/> the image under
4157 low light may be under-exposed when the sensor max exposure time (bounded by the
4158 <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
4159 ON_<wbr/>* modes) and effective max sensitivity are reached.<wbr/> This scene mode allows the
4160 camera device auto-exposure routine to increase the sensitivity up to the max
4161 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
4162 dark and the max exposure time is reached.<wbr/> The captured images may be noisier
4163 compared with the images captured in normal FACE_<wbr/>PRIORITY mode; therefore,<wbr/> it is
4164 recommended that the application only use this scene mode when it is capable of
4165 reducing the noise level of the captured images.<wbr/></p>
4166 <p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
4167 <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>
4168 remain active when FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT is set.<wbr/></p></span>
4171 <span class="entry_type_enum_name">DEVICE_CUSTOM_START (v3.2)</span>
4172 <span class="entry_type_enum_optional">[optional]</span>
4173 <span class="entry_type_enum_hidden">[hidden]</span>
4174 <span class="entry_type_enum_value">100</span>
4175 <span class="entry_type_enum_notes"><p>Scene mode values within the range of
4176 <code>[DEVICE_<wbr/>CUSTOM_<wbr/>START,<wbr/> DEVICE_<wbr/>CUSTOM_<wbr/>END]</code> are reserved for device specific
4177 customized scene modes.<wbr/></p></span>
4180 <span class="entry_type_enum_name">DEVICE_CUSTOM_END (v3.2)</span>
4181 <span class="entry_type_enum_optional">[optional]</span>
4182 <span class="entry_type_enum_hidden">[hidden]</span>
4183 <span class="entry_type_enum_value">127</span>
4184 <span class="entry_type_enum_notes"><p>Scene mode values within the range of
4185 <code>[DEVICE_<wbr/>CUSTOM_<wbr/>START,<wbr/> DEVICE_<wbr/>CUSTOM_<wbr/>END]</code> are reserved for device specific
4186 customized scene modes.<wbr/></p></span>
4190 </td> <!-- entry_type -->
4192 <td class="entry_description">
4193 <p>Control for which scene mode is currently active.<wbr/></p>
4196 <td class="entry_units">
4199 <td class="entry_range">
4200 <p><a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a></p>
4203 <td class="entry_hal_version">
4207 <td class="entry_tags">
4208 <ul class="entry_tags">
4209 <li><a href="#tag_BC">BC</a></li>
4214 <tr class="entries_header">
4215 <th class="th_details" colspan="6">Details</th>
4217 <tr class="entry_cont">
4218 <td class="entry_details" colspan="6">
4219 <p>Scene modes are custom camera modes optimized for a certain set of conditions and
4220 capture settings.<wbr/></p>
4221 <p>This is the mode that that is active when
4222 <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
4223 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>
4224 while in use.<wbr/></p>
4225 <p>The interpretation and implementation of these scene modes is left
4226 to the implementor of the camera device.<wbr/> Their behavior will not be
4227 consistent across all devices,<wbr/> and any given device may only implement
4228 a subset of these modes.<wbr/></p>
4232 <tr class="entries_header">
4233 <th class="th_details" colspan="6">HAL Implementation Details</th>
4235 <tr class="entry_cont">
4236 <td class="entry_details" colspan="6">
4237 <p>HAL implementations that include scene modes are expected to provide
4238 the per-scene settings to use for <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
4239 <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
4240 <a href="#static_android.control.sceneModeOverrides">android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides</a>.<wbr/></p>
4241 <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
4242 HAL must list supported video size and fps range in
4243 <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/>
4244 if the HAL has two different sensor configurations for normal streaming mode and high
4245 speed streaming,<wbr/> when this scene mode is set/<wbr/>reset in a sequence of capture requests,<wbr/> the
4246 HAL may have to switch between different sensor modes.<wbr/> This mode is deprecated in legacy
4247 HAL3.<wbr/>3,<wbr/> to support high speed video recording,<wbr/> please implement
4248 <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
4249 capbility defined in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
4253 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4254 <!-- end of entry -->
4257 <tr class="entry" id="controls_android.control.videoStabilizationMode">
4258 <td class="entry_name
4260 android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode
4262 <td class="entry_type">
4263 <span class="entry_type_name entry_type_name_enum">byte</span>
4265 <span class="entry_type_visibility"> [public]</span>
4268 <span class="entry_type_hwlevel">[legacy] </span>
4272 <ul class="entry_type_enum">
4274 <span class="entry_type_enum_name">OFF (v3.2)</span>
4275 <span class="entry_type_enum_notes"><p>Video stabilization is disabled.<wbr/></p></span>
4278 <span class="entry_type_enum_name">ON (v3.2)</span>
4279 <span class="entry_type_enum_notes"><p>Video stabilization is enabled.<wbr/></p></span>
4283 </td> <!-- entry_type -->
4285 <td class="entry_description">
4286 <p>Whether video stabilization is
4290 <td class="entry_units">
4293 <td class="entry_range">
4296 <td class="entry_hal_version">
4300 <td class="entry_tags">
4301 <ul class="entry_tags">
4302 <li><a href="#tag_BC">BC</a></li>
4307 <tr class="entries_header">
4308 <th class="th_details" colspan="6">Details</th>
4310 <tr class="entry_cont">
4311 <td class="entry_details" colspan="6">
4312 <p>Video stabilization automatically warps images from
4313 the camera in order to stabilize motion between consecutive frames.<wbr/></p>
4314 <p>If enabled,<wbr/> video stabilization can modify the
4315 <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> to keep the video stream stabilized.<wbr/></p>
4316 <p>Switching between different video stabilization modes may take several
4317 frames to initialize,<wbr/> the camera device will report the current mode
4318 in capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/>
4319 the video stabilization modes in the first several capture results may
4320 still be "OFF",<wbr/> and it will become "ON" when the initialization is
4322 <p>In addition,<wbr/> not all recording sizes or frame rates may be supported for
4323 stabilization by a device that reports stabilization support.<wbr/> It is guaranteed
4324 that an output targeting a MediaRecorder or MediaCodec will be stabilized if
4325 the recording resolution is less than or equal to 1920 x 1080 (width less than
4326 or equal to 1920,<wbr/> height less than or equal to 1080),<wbr/> and the recording
4327 frame rate is less than or equal to 30fps.<wbr/> At other sizes,<wbr/> the CaptureResult
4328 <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a> field will return
4329 OFF if the recording output is not stabilized,<wbr/> or if there are no output
4330 Surface types that can be stabilized.<wbr/></p>
4331 <p>If a camera device supports both this mode and OIS
4332 (<a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may
4333 produce undesirable interaction,<wbr/> so it is recommended not to enable
4334 both at the same time.<wbr/></p>
4339 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4340 <!-- end of entry -->
4343 <tr class="entry" id="controls_android.control.postRawSensitivityBoost">
4344 <td class="entry_name
4346 android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost
4348 <td class="entry_type">
4349 <span class="entry_type_name">int32</span>
4351 <span class="entry_type_visibility"> [public]</span>
4358 </td> <!-- entry_type -->
4360 <td class="entry_description">
4361 <p>The amount of additional sensitivity boost applied to output images
4362 after RAW sensor data is captured.<wbr/></p>
4365 <td class="entry_units">
4366 ISO arithmetic units,<wbr/> the same as android.<wbr/>sensor.<wbr/>sensitivity
4369 <td class="entry_range">
4370 <p><a href="#static_android.control.postRawSensitivityBoostRange">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost<wbr/>Range</a></p>
4373 <td class="entry_hal_version">
4377 <td class="entry_tags">
4381 <tr class="entries_header">
4382 <th class="th_details" colspan="6">Details</th>
4384 <tr class="entry_cont">
4385 <td class="entry_details" colspan="6">
4386 <p>Some camera devices support additional digital sensitivity boosting in the
4387 camera processing pipeline after sensor RAW image is captured.<wbr/>
4388 Such a boost will be applied to YUV/<wbr/>JPEG format output images but will not
4389 have effect on RAW output formats like RAW_<wbr/>SENSOR,<wbr/> RAW10,<wbr/> RAW12 or RAW_<wbr/>OPAQUE.<wbr/></p>
4390 <p>This key will be <code>null</code> for devices that do not support any RAW format
4391 outputs.<wbr/> For devices that do support RAW format outputs,<wbr/> this key will always
4392 present,<wbr/> and if a device does not support post RAW sensitivity boost,<wbr/> it will
4393 list <code>100</code> in this key.<wbr/></p>
4394 <p>If the camera device cannot apply the exact boost requested,<wbr/> it will reduce the
4395 boost to the nearest supported value.<wbr/>
4396 The final boost value used will be available in the output capture result.<wbr/></p>
4397 <p>For devices that support post RAW sensitivity boost,<wbr/> the YUV/<wbr/>JPEG output images
4398 of such device will have the total sensitivity of
4399 <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>
4400 The sensitivity of RAW format images will always be <code><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></code></p>
4401 <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
4402 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
4407 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4408 <!-- end of entry -->
4411 <tr class="entry" id="controls_android.control.enableZsl">
4412 <td class="entry_name
4414 android.<wbr/>control.<wbr/>enable<wbr/>Zsl
4416 <td class="entry_type">
4417 <span class="entry_type_name entry_type_name_enum">byte</span>
4419 <span class="entry_type_visibility"> [public as boolean]</span>
4425 <ul class="entry_type_enum">
4427 <span class="entry_type_enum_name">FALSE (v3.2)</span>
4428 <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
4429 after previous requests.<wbr/></p></span>
4432 <span class="entry_type_enum_name">TRUE (v3.2)</span>
4433 <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
4434 captured before previous requests.<wbr/></p></span>
4438 </td> <!-- entry_type -->
4440 <td class="entry_description">
4441 <p>Allow camera device to enable zero-shutter-lag mode for requests with
4442 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE.<wbr/></p>
4445 <td class="entry_units">
4448 <td class="entry_range">
4451 <td class="entry_hal_version">
4455 <td class="entry_tags">
4459 <tr class="entries_header">
4460 <th class="th_details" colspan="6">Details</th>
4462 <tr class="entry_cont">
4463 <td class="entry_details" colspan="6">
4464 <p>If enableZsl is <code>true</code>,<wbr/> the camera device may enable zero-shutter-lag mode for requests with
4465 STILL_<wbr/>CAPTURE capture intent.<wbr/> The camera device may use images captured in the past to
4466 produce output images for a zero-shutter-lag request.<wbr/> The result metadata including the
4467 <a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a> reflects the source frames used to produce output images.<wbr/>
4468 Therefore,<wbr/> the contents of the output images and the result metadata may be out of order
4469 compared to previous regular requests.<wbr/> enableZsl does not affect requests with other
4470 capture intents.<wbr/></p>
4471 <p>For example,<wbr/> when requests are submitted in the following order:
4472 Request A: enableZsl is ON,<wbr/> <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> is PREVIEW
4473 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>
4474 <p>The output images for request B may have contents captured before the output images for
4475 request A,<wbr/> and the result metadata for request B may be older than the result metadata for
4476 request A.<wbr/></p>
4477 <p>Note that when enableZsl is <code>true</code>,<wbr/> it is not guaranteed to get output images captured in
4478 the past for requests with STILL_<wbr/>CAPTURE capture intent.<wbr/></p>
4479 <p>For applications targeting SDK versions O and newer,<wbr/> the value of enableZsl in
4480 TEMPLATE_<wbr/>STILL_<wbr/>CAPTURE template may be <code>true</code>.<wbr/> The value in other templates is always
4481 <code>false</code> if present.<wbr/></p>
4482 <p>For applications targeting SDK versions older than O,<wbr/> the value of enableZsl in all
4483 capture templates is always <code>false</code> if present.<wbr/></p>
4484 <p>For application-operated ZSL,<wbr/> use CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p>
4488 <tr class="entries_header">
4489 <th class="th_details" colspan="6">HAL Implementation Details</th>
4491 <tr class="entry_cont">
4492 <td class="entry_details" colspan="6">
4493 <p>It is valid for HAL to produce regular output images for requests with STILL_<wbr/>CAPTURE
4494 capture intent.<wbr/></p>
4498 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4499 <!-- end of entry -->
4503 <!-- end of kind -->
4505 <tr><td colspan="7" class="kind">static</td></tr>
4507 <thead class="entries_header">
4509 <th class="th_name">Property Name</th>
4510 <th class="th_type">Type</th>
4511 <th class="th_description">Description</th>
4512 <th class="th_units">Units</th>
4513 <th class="th_range">Range</th>
4514 <th class="th_hal_version">Initial HIDL HAL version</th>
4515 <th class="th_tags">Tags</th>
4530 <tr class="entry" id="static_android.control.aeAvailableAntibandingModes">
4531 <td class="entry_name
4533 android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes
4535 <td class="entry_type">
4536 <span class="entry_type_name">byte</span>
4537 <span class="entry_type_container">x</span>
4539 <span class="entry_type_array">
4542 <span class="entry_type_visibility"> [public as enumList]</span>
4545 <span class="entry_type_hwlevel">[legacy] </span>
4548 <div class="entry_type_notes">list of enums</div>
4551 </td> <!-- entry_type -->
4553 <td class="entry_description">
4554 <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
4555 supported by this camera device.<wbr/></p>
4558 <td class="entry_units">
4561 <td class="entry_range">
4562 <p>Any value listed in <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a></p>
4565 <td class="entry_hal_version">
4569 <td class="entry_tags">
4570 <ul class="entry_tags">
4571 <li><a href="#tag_BC">BC</a></li>
4576 <tr class="entries_header">
4577 <th class="th_details" colspan="6">Details</th>
4579 <tr class="entry_cont">
4580 <td class="entry_details" colspan="6">
4581 <p>Not all of the auto-exposure anti-banding modes may be
4582 supported by a given camera device.<wbr/> This field lists the
4583 valid anti-banding modes that the application may request
4584 for this camera device with the
4585 <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> control.<wbr/></p>
4590 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4591 <!-- end of entry -->
4594 <tr class="entry" id="static_android.control.aeAvailableModes">
4595 <td class="entry_name
4597 android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes
4599 <td class="entry_type">
4600 <span class="entry_type_name">byte</span>
4601 <span class="entry_type_container">x</span>
4603 <span class="entry_type_array">
4606 <span class="entry_type_visibility"> [public as enumList]</span>
4609 <span class="entry_type_hwlevel">[legacy] </span>
4612 <div class="entry_type_notes">list of enums</div>
4615 </td> <!-- entry_type -->
4617 <td class="entry_description">
4618 <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
4622 <td class="entry_units">
4625 <td class="entry_range">
4626 <p>Any value listed in <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a></p>
4629 <td class="entry_hal_version">
4633 <td class="entry_tags">
4634 <ul class="entry_tags">
4635 <li><a href="#tag_BC">BC</a></li>
4640 <tr class="entries_header">
4641 <th class="th_details" colspan="6">Details</th>
4643 <tr class="entry_cont">
4644 <td class="entry_details" colspan="6">
4645 <p>Not all the auto-exposure modes may be supported by a
4646 given camera device,<wbr/> especially if no flash unit is
4647 available.<wbr/> This entry lists the valid modes for
4648 <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> for this camera device.<wbr/></p>
4649 <p>All camera devices support ON,<wbr/> and all camera devices with flash
4650 units support ON_<wbr/>AUTO_<wbr/>FLASH and ON_<wbr/>ALWAYS_<wbr/>FLASH.<wbr/></p>
4651 <p>FULL mode camera devices always support OFF mode,<wbr/>
4652 which enables application control of camera exposure time,<wbr/>
4653 sensitivity,<wbr/> and frame duration.<wbr/></p>
4654 <p>LEGACY mode camera devices never support OFF mode.<wbr/>
4655 LIMITED mode devices support OFF if they support the MANUAL_<wbr/>SENSOR
4656 capability.<wbr/></p>
4661 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4662 <!-- end of entry -->
4665 <tr class="entry" id="static_android.control.aeAvailableTargetFpsRanges">
4666 <td class="entry_name
4668 android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Target<wbr/>Fps<wbr/>Ranges
4670 <td class="entry_type">
4671 <span class="entry_type_name">int32</span>
4672 <span class="entry_type_container">x</span>
4674 <span class="entry_type_array">
4677 <span class="entry_type_visibility"> [public as rangeInt]</span>
4680 <span class="entry_type_hwlevel">[legacy] </span>
4683 <div class="entry_type_notes">list of pairs of frame rates</div>
4686 </td> <!-- entry_type -->
4688 <td class="entry_description">
4689 <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
4690 this camera device.<wbr/></p>
4693 <td class="entry_units">
4694 Frames per second (FPS)
4697 <td class="entry_range">
4700 <td class="entry_hal_version">
4704 <td class="entry_tags">
4705 <ul class="entry_tags">
4706 <li><a href="#tag_BC">BC</a></li>
4711 <tr class="entries_header">
4712 <th class="th_details" colspan="6">Details</th>
4714 <tr class="entry_cont">
4715 <td class="entry_details" colspan="6">
4716 <p>For devices at the LEGACY level or above:</p>
4719 <p>For constant-framerate recording,<wbr/> for each normal
4720 <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a>,<wbr/> that is,<wbr/> a
4721 <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a> that has
4722 <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#quality">quality</a> in
4723 the range [<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#QUALITY_LOW">QUALITY_<wbr/>LOW</a>,<wbr/>
4724 <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#QUALITY_2160P">QUALITY_<wbr/>2160P</a>],<wbr/> if the profile is
4725 supported by the device and has
4726 <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#videoFrameRate">videoFrameRate</a> <code>x</code>,<wbr/> this list will
4727 always include (<code>x</code>,<wbr/><code>x</code>).<wbr/></p>
4730 <p>Also,<wbr/> a camera device must either not support any
4731 <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a>,<wbr/>
4732 or support at least one
4733 normal <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a> that has
4734 <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#videoFrameRate">videoFrameRate</a> <code>x</code> >= 24.<wbr/></p>
4737 <p>For devices at the LIMITED level or above:</p>
4739 <li>For YUV_<wbr/>420_<wbr/>888 burst capture use case,<wbr/> this list will always include (<code>min</code>,<wbr/> <code>max</code>)
4740 and (<code>max</code>,<wbr/> <code>max</code>) where <code>min</code> <= 15 and <code>max</code> = the maximum output frame rate of the
4741 maximum YUV_<wbr/>420_<wbr/>888 output size.<wbr/></li>
4747 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4748 <!-- end of entry -->
4751 <tr class="entry" id="static_android.control.aeCompensationRange">
4752 <td class="entry_name
4754 android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range
4756 <td class="entry_type">
4757 <span class="entry_type_name">int32</span>
4758 <span class="entry_type_container">x</span>
4760 <span class="entry_type_array">
4763 <span class="entry_type_visibility"> [public as rangeInt]</span>
4766 <span class="entry_type_hwlevel">[legacy] </span>
4771 </td> <!-- entry_type -->
4773 <td class="entry_description">
4774 <p>Maximum and minimum exposure compensation values for
4775 <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/>
4776 that are supported by this camera device.<wbr/></p>
4779 <td class="entry_units">
4782 <td class="entry_range">
4783 <p>Range [0,<wbr/>0] indicates that exposure compensation is not supported.<wbr/></p>
4784 <p>For LIMITED and FULL devices,<wbr/> range must follow below requirements if exposure
4785 compensation is supported (<code>range != [0,<wbr/> 0]</code>):</p>
4786 <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>
4787 <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>
4788 <p>LEGACY devices may support a smaller range than this.<wbr/></p>
4791 <td class="entry_hal_version">
4795 <td class="entry_tags">
4796 <ul class="entry_tags">
4797 <li><a href="#tag_BC">BC</a></li>
4804 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4805 <!-- end of entry -->
4808 <tr class="entry" id="static_android.control.aeCompensationStep">
4809 <td class="entry_name
4811 android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step
4813 <td class="entry_type">
4814 <span class="entry_type_name">rational</span>
4816 <span class="entry_type_visibility"> [public]</span>
4819 <span class="entry_type_hwlevel">[legacy] </span>
4824 </td> <!-- entry_type -->
4826 <td class="entry_description">
4827 <p>Smallest step by which the exposure compensation
4828 can be changed.<wbr/></p>
4831 <td class="entry_units">
4835 <td class="entry_range">
4838 <td class="entry_hal_version">
4842 <td class="entry_tags">
4843 <ul class="entry_tags">
4844 <li><a href="#tag_BC">BC</a></li>
4849 <tr class="entries_header">
4850 <th class="th_details" colspan="6">Details</th>
4852 <tr class="entry_cont">
4853 <td class="entry_details" colspan="6">
4854 <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
4855 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
4856 that the target EV offset for the auto-exposure routine is -1 EV.<wbr/></p>
4857 <p>One unit of EV compensation changes the brightness of the captured image by a factor
4858 of two.<wbr/> +1 EV doubles the image brightness,<wbr/> while -1 EV halves the image brightness.<wbr/></p>
4862 <tr class="entries_header">
4863 <th class="th_details" colspan="6">HAL Implementation Details</th>
4865 <tr class="entry_cont">
4866 <td class="entry_details" colspan="6">
4867 <p>This must be less than or equal to 1/<wbr/>2.<wbr/></p>
4871 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4872 <!-- end of entry -->
4875 <tr class="entry" id="static_android.control.afAvailableModes">
4876 <td class="entry_name
4878 android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes
4880 <td class="entry_type">
4881 <span class="entry_type_name">byte</span>
4882 <span class="entry_type_container">x</span>
4884 <span class="entry_type_array">
4887 <span class="entry_type_visibility"> [public as enumList]</span>
4890 <span class="entry_type_hwlevel">[legacy] </span>
4893 <div class="entry_type_notes">List of enums</div>
4896 </td> <!-- entry_type -->
4898 <td class="entry_description">
4899 <p>List of auto-focus (AF) modes for <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> that are
4900 supported by this camera device.<wbr/></p>
4903 <td class="entry_units">
4906 <td class="entry_range">
4907 <p>Any value listed in <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a></p>
4910 <td class="entry_hal_version">
4914 <td class="entry_tags">
4915 <ul class="entry_tags">
4916 <li><a href="#tag_BC">BC</a></li>
4921 <tr class="entries_header">
4922 <th class="th_details" colspan="6">Details</th>
4924 <tr class="entry_cont">
4925 <td class="entry_details" colspan="6">
4926 <p>Not all the auto-focus modes may be supported by a
4927 given camera device.<wbr/> This entry lists the valid modes for
4928 <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> for this camera device.<wbr/></p>
4929 <p>All LIMITED and FULL mode camera devices will support OFF mode,<wbr/> and all
4930 camera devices with adjustable focuser units
4931 (<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>
4932 <p>LEGACY devices will support OFF mode only if they support
4933 focusing to infinity (by also setting <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> to
4934 <code>0.<wbr/>0f</code>).<wbr/></p>
4939 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4940 <!-- end of entry -->
4943 <tr class="entry" id="static_android.control.availableEffects">
4944 <td class="entry_name
4946 android.<wbr/>control.<wbr/>available<wbr/>Effects
4948 <td class="entry_type">
4949 <span class="entry_type_name">byte</span>
4950 <span class="entry_type_container">x</span>
4952 <span class="entry_type_array">
4955 <span class="entry_type_visibility"> [public as enumList]</span>
4958 <span class="entry_type_hwlevel">[legacy] </span>
4961 <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>effect<wbr/>Mode).<wbr/></div>
4964 </td> <!-- entry_type -->
4966 <td class="entry_description">
4967 <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
4971 <td class="entry_units">
4974 <td class="entry_range">
4975 <p>Any value listed in <a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></p>
4978 <td class="entry_hal_version">
4982 <td class="entry_tags">
4983 <ul class="entry_tags">
4984 <li><a href="#tag_BC">BC</a></li>
4989 <tr class="entries_header">
4990 <th class="th_details" colspan="6">Details</th>
4992 <tr class="entry_cont">
4993 <td class="entry_details" colspan="6">
4994 <p>This list contains the color effect modes that can be applied to
4995 images produced by the camera device.<wbr/>
4996 Implementations are not expected to be consistent across all devices.<wbr/>
4997 If no color effect modes are available for a device,<wbr/> this will only list
4999 <p>A color effect will only be applied if
5000 <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF.<wbr/> OFF is always included in this list.<wbr/></p>
5001 <p>This control has no effect on the operation of other control routines such
5002 as auto-exposure,<wbr/> white balance,<wbr/> or focus.<wbr/></p>
5007 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5008 <!-- end of entry -->
5011 <tr class="entry" id="static_android.control.availableSceneModes">
5012 <td class="entry_name
5014 android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes
5016 <td class="entry_type">
5017 <span class="entry_type_name">byte</span>
5018 <span class="entry_type_container">x</span>
5020 <span class="entry_type_array">
5023 <span class="entry_type_visibility"> [public as enumList]</span>
5026 <span class="entry_type_hwlevel">[legacy] </span>
5029 <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>scene<wbr/>Mode).<wbr/></div>
5032 </td> <!-- entry_type -->
5034 <td class="entry_description">
5035 <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
5039 <td class="entry_units">
5042 <td class="entry_range">
5043 <p>Any value listed in <a href="#controls_android.control.sceneMode">android.<wbr/>control.<wbr/>scene<wbr/>Mode</a></p>
5046 <td class="entry_hal_version">
5050 <td class="entry_tags">
5051 <ul class="entry_tags">
5052 <li><a href="#tag_BC">BC</a></li>
5057 <tr class="entries_header">
5058 <th class="th_details" colspan="6">Details</th>
5060 <tr class="entry_cont">
5061 <td class="entry_details" colspan="6">
5062 <p>This list contains scene modes that can be set for the camera device.<wbr/>
5063 Only scene modes that have been fully implemented for the
5064 camera device may be included here.<wbr/> Implementations are not expected
5065 to be consistent across all devices.<wbr/></p>
5066 <p>If no scene modes are supported by the camera device,<wbr/> this
5067 will be set to DISABLED.<wbr/> Otherwise DISABLED will not be listed.<wbr/></p>
5068 <p>FACE_<wbr/>PRIORITY is always listed if face detection is
5069 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> >
5070 0</code>).<wbr/></p>
5075 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5076 <!-- end of entry -->
5079 <tr class="entry" id="static_android.control.availableVideoStabilizationModes">
5080 <td class="entry_name
5082 android.<wbr/>control.<wbr/>available<wbr/>Video<wbr/>Stabilization<wbr/>Modes
5084 <td class="entry_type">
5085 <span class="entry_type_name">byte</span>
5086 <span class="entry_type_container">x</span>
5088 <span class="entry_type_array">
5091 <span class="entry_type_visibility"> [public as enumList]</span>
5094 <span class="entry_type_hwlevel">[legacy] </span>
5097 <div class="entry_type_notes">List of enums.<wbr/></div>
5100 </td> <!-- entry_type -->
5102 <td class="entry_description">
5103 <p>List of video stabilization modes for <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>
5104 that are supported by this camera device.<wbr/></p>
5107 <td class="entry_units">
5110 <td class="entry_range">
5111 <p>Any value listed in <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a></p>
5114 <td class="entry_hal_version">
5118 <td class="entry_tags">
5119 <ul class="entry_tags">
5120 <li><a href="#tag_BC">BC</a></li>
5125 <tr class="entries_header">
5126 <th class="th_details" colspan="6">Details</th>
5128 <tr class="entry_cont">
5129 <td class="entry_details" colspan="6">
5130 <p>OFF will always be listed.<wbr/></p>
5135 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5136 <!-- end of entry -->
5139 <tr class="entry" id="static_android.control.awbAvailableModes">
5140 <td class="entry_name
5142 android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes
5144 <td class="entry_type">
5145 <span class="entry_type_name">byte</span>
5146 <span class="entry_type_container">x</span>
5148 <span class="entry_type_array">
5151 <span class="entry_type_visibility"> [public as enumList]</span>
5154 <span class="entry_type_hwlevel">[legacy] </span>
5157 <div class="entry_type_notes">List of enums</div>
5160 </td> <!-- entry_type -->
5162 <td class="entry_description">
5163 <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
5164 camera device.<wbr/></p>
5167 <td class="entry_units">
5170 <td class="entry_range">
5171 <p>Any value listed in <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a></p>
5174 <td class="entry_hal_version">
5178 <td class="entry_tags">
5179 <ul class="entry_tags">
5180 <li><a href="#tag_BC">BC</a></li>
5185 <tr class="entries_header">
5186 <th class="th_details" colspan="6">Details</th>
5188 <tr class="entry_cont">
5189 <td class="entry_details" colspan="6">
5190 <p>Not all the auto-white-balance modes may be supported by a
5191 given camera device.<wbr/> This entry lists the valid modes for
5192 <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> for this camera device.<wbr/></p>
5193 <p>All camera devices will support ON mode.<wbr/></p>
5194 <p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always support OFF
5195 mode,<wbr/> which enables application control of white balance,<wbr/> by using
5196 <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
5197 mode camera devices.<wbr/></p>
5202 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5203 <!-- end of entry -->
5206 <tr class="entry" id="static_android.control.maxRegions">
5207 <td class="entry_name
5209 android.<wbr/>control.<wbr/>max<wbr/>Regions
5211 <td class="entry_type">
5212 <span class="entry_type_name">int32</span>
5213 <span class="entry_type_container">x</span>
5215 <span class="entry_type_array">
5218 <span class="entry_type_visibility"> [ndk_public]</span>
5221 <span class="entry_type_hwlevel">[legacy] </span>
5226 </td> <!-- entry_type -->
5228 <td class="entry_description">
5229 <p>List of the maximum number of regions that can be used for metering in
5230 auto-exposure (AE),<wbr/> auto-white balance (AWB),<wbr/> and auto-focus (AF);
5231 this corresponds to the the maximum number of elements in
5232 <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/>
5233 and <a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a>.<wbr/></p>
5236 <td class="entry_units">
5239 <td class="entry_range">
5240 <p>Value must be >= 0 for each element.<wbr/> For full-capability devices
5241 this value must be >= 1 for AE and AF.<wbr/> The order of the elements is:
5242 <code>(AE,<wbr/> AWB,<wbr/> AF)</code>.<wbr/></p>
5245 <td class="entry_hal_version">
5249 <td class="entry_tags">
5250 <ul class="entry_tags">
5251 <li><a href="#tag_BC">BC</a></li>
5258 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5259 <!-- end of entry -->
5262 <tr class="entry" id="static_android.control.maxRegionsAe">
5263 <td class="entry_name
5265 android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae
5267 <td class="entry_type">
5268 <span class="entry_type_name">int32</span>
5270 <span class="entry_type_visibility"> [java_public]</span>
5272 <span class="entry_type_synthetic">[synthetic] </span>
5274 <span class="entry_type_hwlevel">[legacy] </span>
5279 </td> <!-- entry_type -->
5281 <td class="entry_description">
5282 <p>The maximum number of metering regions that can be used by the auto-exposure (AE)
5286 <td class="entry_units">
5289 <td class="entry_range">
5290 <p>Value will be >= 0.<wbr/> For FULL-capability devices,<wbr/> this
5291 value will be >= 1.<wbr/></p>
5294 <td class="entry_hal_version">
5298 <td class="entry_tags">
5302 <tr class="entries_header">
5303 <th class="th_details" colspan="6">Details</th>
5305 <tr class="entry_cont">
5306 <td class="entry_details" colspan="6">
5307 <p>This corresponds to the the maximum allowed number of elements in
5308 <a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a>.<wbr/></p>
5312 <tr class="entries_header">
5313 <th class="th_details" colspan="6">HAL Implementation Details</th>
5315 <tr class="entry_cont">
5316 <td class="entry_details" colspan="6">
5317 <p>This entry is private to the framework.<wbr/> Fill in
5318 maxRegions to have this entry be automatically populated.<wbr/></p>
5322 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5323 <!-- end of entry -->
5326 <tr class="entry" id="static_android.control.maxRegionsAwb">
5327 <td class="entry_name
5329 android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb
5331 <td class="entry_type">
5332 <span class="entry_type_name">int32</span>
5334 <span class="entry_type_visibility"> [java_public]</span>
5336 <span class="entry_type_synthetic">[synthetic] </span>
5338 <span class="entry_type_hwlevel">[legacy] </span>
5343 </td> <!-- entry_type -->
5345 <td class="entry_description">
5346 <p>The maximum number of metering regions that can be used by the auto-white balance (AWB)
5350 <td class="entry_units">
5353 <td class="entry_range">
5354 <p>Value will be >= 0.<wbr/></p>
5357 <td class="entry_hal_version">
5361 <td class="entry_tags">
5365 <tr class="entries_header">
5366 <th class="th_details" colspan="6">Details</th>
5368 <tr class="entry_cont">
5369 <td class="entry_details" colspan="6">
5370 <p>This corresponds to the the maximum allowed number of elements in
5371 <a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a>.<wbr/></p>
5375 <tr class="entries_header">
5376 <th class="th_details" colspan="6">HAL Implementation Details</th>
5378 <tr class="entry_cont">
5379 <td class="entry_details" colspan="6">
5380 <p>This entry is private to the framework.<wbr/> Fill in
5381 maxRegions to have this entry be automatically populated.<wbr/></p>
5385 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5386 <!-- end of entry -->
5389 <tr class="entry" id="static_android.control.maxRegionsAf">
5390 <td class="entry_name
5392 android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af
5394 <td class="entry_type">
5395 <span class="entry_type_name">int32</span>
5397 <span class="entry_type_visibility"> [java_public]</span>
5399 <span class="entry_type_synthetic">[synthetic] </span>
5401 <span class="entry_type_hwlevel">[legacy] </span>
5406 </td> <!-- entry_type -->
5408 <td class="entry_description">
5409 <p>The maximum number of metering regions that can be used by the auto-focus (AF) routine.<wbr/></p>
5412 <td class="entry_units">
5415 <td class="entry_range">
5416 <p>Value will be >= 0.<wbr/> For FULL-capability devices,<wbr/> this
5417 value will be >= 1.<wbr/></p>
5420 <td class="entry_hal_version">
5424 <td class="entry_tags">
5428 <tr class="entries_header">
5429 <th class="th_details" colspan="6">Details</th>
5431 <tr class="entry_cont">
5432 <td class="entry_details" colspan="6">
5433 <p>This corresponds to the the maximum allowed number of elements in
5434 <a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a>.<wbr/></p>
5438 <tr class="entries_header">
5439 <th class="th_details" colspan="6">HAL Implementation Details</th>
5441 <tr class="entry_cont">
5442 <td class="entry_details" colspan="6">
5443 <p>This entry is private to the framework.<wbr/> Fill in
5444 maxRegions to have this entry be automatically populated.<wbr/></p>
5448 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5449 <!-- end of entry -->
5452 <tr class="entry" id="static_android.control.sceneModeOverrides">
5453 <td class="entry_name
5455 android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides
5457 <td class="entry_type">
5458 <span class="entry_type_name">byte</span>
5459 <span class="entry_type_container">x</span>
5461 <span class="entry_type_array">
5462 3 x length(availableSceneModes)
5464 <span class="entry_type_visibility"> [system]</span>
5467 <span class="entry_type_hwlevel">[limited] </span>
5472 </td> <!-- entry_type -->
5474 <td class="entry_description">
5475 <p>Ordered list of auto-exposure,<wbr/> auto-white balance,<wbr/> and auto-focus
5476 settings to use with each available scene mode.<wbr/></p>
5479 <td class="entry_units">
5482 <td class="entry_range">
5483 <p>For each available scene mode,<wbr/> the list must contain three
5484 entries containing the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
5485 <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
5486 by the camera device.<wbr/> The entry order is <code>(aeMode,<wbr/> awbMode,<wbr/> afMode)</code>
5487 where aeMode has the lowest index position.<wbr/></p>
5490 <td class="entry_hal_version">
5494 <td class="entry_tags">
5495 <ul class="entry_tags">
5496 <li><a href="#tag_BC">BC</a></li>
5501 <tr class="entries_header">
5502 <th class="th_details" colspan="6">Details</th>
5504 <tr class="entry_cont">
5505 <td class="entry_details" colspan="6">
5506 <p>When a scene mode is enabled,<wbr/> the camera device is expected
5507 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/>
5508 and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> with its preferred settings for
5509 that scene mode.<wbr/></p>
5510 <p>The order of this list matches that of availableSceneModes,<wbr/>
5511 with 3 entries for each mode.<wbr/> The overrides listed
5512 for FACE_<wbr/>PRIORITY and FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT (if supported) are ignored,<wbr/>
5513 since for that mode the application-set <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
5514 <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
5515 used instead,<wbr/> matching the behavior when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>
5516 is set to AUTO.<wbr/> It is recommended that the FACE_<wbr/>PRIORITY and
5517 FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT (if supported) overrides should be set to 0.<wbr/></p>
5518 <p>For example,<wbr/> if availableSceneModes contains
5519 <code>(FACE_<wbr/>PRIORITY,<wbr/> ACTION,<wbr/> NIGHT)</code>,<wbr/> then the camera framework
5520 expects sceneModeOverrides to have 9 entries formatted like:
5521 <code>(0,<wbr/> 0,<wbr/> 0,<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> AUTO,<wbr/> CONTINUOUS_<wbr/>PICTURE,<wbr/>
5522 ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> INCANDESCENT,<wbr/> AUTO)</code>.<wbr/></p>
5526 <tr class="entries_header">
5527 <th class="th_details" colspan="6">HAL Implementation Details</th>
5529 <tr class="entry_cont">
5530 <td class="entry_details" colspan="6">
5531 <p>To maintain backward compatibility,<wbr/> this list will be made available
5532 in the static metadata of the camera service.<wbr/> The camera service will
5533 use these values to set <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
5534 <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
5535 mode other than FACE_<wbr/>PRIORITY and FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT (if supported).<wbr/></p>
5539 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5540 <!-- end of entry -->
5543 <tr class="entry" id="static_android.control.availableHighSpeedVideoConfigurations">
5544 <td class="entry_name
5546 android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations
5548 <td class="entry_type">
5549 <span class="entry_type_name">int32</span>
5550 <span class="entry_type_container">x</span>
5552 <span class="entry_type_array">
5555 <span class="entry_type_visibility"> [hidden as highSpeedVideoConfiguration]</span>
5558 <span class="entry_type_hwlevel">[limited] </span>
5563 </td> <!-- entry_type -->
5565 <td class="entry_description">
5566 <p>List of available high speed video size,<wbr/> fps range and max batch size configurations
5567 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>
5570 <td class="entry_units">
5573 <td class="entry_range">
5574 <p>For each configuration,<wbr/> the fps_<wbr/>max >= 120fps.<wbr/></p>
5577 <td class="entry_hal_version">
5581 <td class="entry_tags">
5582 <ul class="entry_tags">
5583 <li><a href="#tag_V1">V1</a></li>
5588 <tr class="entries_header">
5589 <th class="th_details" colspan="6">Details</th>
5591 <tr class="entry_cont">
5592 <td class="entry_details" colspan="6">
5593 <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/>
5594 this metadata will list the supported high speed video size,<wbr/> fps range and max batch size
5595 configurations.<wbr/> All the sizes listed in this configuration will be a subset of the sizes
5596 reported by <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputSizes">StreamConfigurationMap#getOutputSizes</a>
5597 for processed non-stalling formats.<wbr/></p>
5598 <p>For the high speed video use case,<wbr/> the application must
5599 select the video size and fps range from this metadata to configure the recording and
5600 preview streams and setup the recording requests.<wbr/> For example,<wbr/> if the application intends
5601 to do high speed recording,<wbr/> it can select the maximum size reported by this metadata to
5602 configure output streams.<wbr/> Once the size is selected,<wbr/> application can filter this metadata
5603 by selected size and get the supported fps ranges,<wbr/> and use these fps ranges to setup the
5604 recording requests.<wbr/> Note that for the use case of multiple output streams,<wbr/> application
5605 must select one unique size from this metadata to use (e.<wbr/>g.,<wbr/> preview and recording streams
5606 must have the same size).<wbr/> Otherwise,<wbr/> the high speed capture session creation will fail.<wbr/></p>
5607 <p>The min and max fps will be multiple times of 30fps.<wbr/></p>
5608 <p>High speed video streaming extends significant performance pressue to camera hardware,<wbr/>
5609 to achieve efficient high speed streaming,<wbr/> the camera device may have to aggregate
5610 multiple frames together and send to camera device for processing where the request
5611 controls are same for all the frames in this batch.<wbr/> Max batch size indicates
5612 the max possible number of frames the camera device will group together for this high
5613 speed stream configuration.<wbr/> This max batch size will be used to generate a high speed
5614 recording request list by
5615 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a>.<wbr/>
5616 The max batch size for each configuration will satisfy below conditions:</p>
5618 <li>Each max batch size will be a divisor of its corresponding fps_<wbr/>max /<wbr/> 30.<wbr/> For example,<wbr/>
5619 if max_<wbr/>fps is 300,<wbr/> max batch size will only be 1,<wbr/> 2,<wbr/> 5,<wbr/> or 10.<wbr/></li>
5620 <li>The camera device may choose smaller internal batch size for each configuration,<wbr/> but
5621 the actual batch size will be a divisor of max batch size.<wbr/> For example,<wbr/> if the max batch
5622 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>
5623 <li>The max batch size in each configuration entry must be no larger than 32.<wbr/></li>
5625 <p>The camera device doesn't have to support batch mode to achieve high speed video recording,<wbr/>
5626 in such case,<wbr/> batch_<wbr/>size_<wbr/>max will be reported as 1 in each configuration entry.<wbr/></p>
5627 <p>This fps ranges in this configuration list can only be used to create requests
5628 that are submitted to a high speed camera capture session created by
5629 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>.<wbr/>
5630 The fps ranges reported in this metadata must not be used to setup capture requests for
5631 normal capture session,<wbr/> or it will cause request error.<wbr/></p>
5635 <tr class="entries_header">
5636 <th class="th_details" colspan="6">HAL Implementation Details</th>
5638 <tr class="entry_cont">
5639 <td class="entry_details" colspan="6">
5640 <p>All the sizes listed in this configuration will be a subset of the sizes reported by
5641 <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> for processed non-stalling output formats.<wbr/>
5642 Note that for all high speed video configurations,<wbr/> HAL must be able to support a minimum
5643 of two streams,<wbr/> though the application might choose to configure just one stream.<wbr/></p>
5644 <p>The HAL may support multiple sensor modes for high speed outputs,<wbr/> for example,<wbr/> 120fps
5645 sensor mode and 120fps recording,<wbr/> 240fps sensor mode for 240fps recording.<wbr/> The application
5646 usually starts preview first,<wbr/> then starts recording.<wbr/> To avoid sensor mode switch caused
5647 stutter when starting recording as much as possible,<wbr/> the application may want to ensure
5648 the same sensor mode is used for preview and recording.<wbr/> Therefore,<wbr/> The HAL must advertise
5649 the variable fps range [30,<wbr/> fps_<wbr/>max] for each fixed fps range in this configuration list.<wbr/>
5650 For example,<wbr/> if the HAL advertises [120,<wbr/> 120] and [240,<wbr/> 240],<wbr/> the HAL must also advertise
5651 [30,<wbr/> 120] and [30,<wbr/> 240] for each configuration.<wbr/> In doing so,<wbr/> if the application intends to
5652 do 120fps recording,<wbr/> it can select [30,<wbr/> 120] to start preview,<wbr/> and [120,<wbr/> 120] to start
5653 recording.<wbr/> For these variable fps ranges,<wbr/> it's up to the HAL to decide the actual fps
5654 values that are suitable for smooth preview streaming.<wbr/> If the HAL sees different max_<wbr/>fps
5655 values that fall into different sensor modes in a sequence of requests,<wbr/> the HAL must
5656 switch the sensor mode as quick as possible to minimize the mode switch caused stutter.<wbr/></p>
5660 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5661 <!-- end of entry -->
5664 <tr class="entry" id="static_android.control.aeLockAvailable">
5665 <td class="entry_name
5667 android.<wbr/>control.<wbr/>ae<wbr/>Lock<wbr/>Available
5669 <td class="entry_type">
5670 <span class="entry_type_name entry_type_name_enum">byte</span>
5672 <span class="entry_type_visibility"> [public as boolean]</span>
5675 <span class="entry_type_hwlevel">[legacy] </span>
5679 <ul class="entry_type_enum">
5681 <span class="entry_type_enum_name">FALSE (v3.2)</span>
5684 <span class="entry_type_enum_name">TRUE (v3.2)</span>
5688 </td> <!-- entry_type -->
5690 <td class="entry_description">
5691 <p>Whether the camera device supports <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></p>
5694 <td class="entry_units">
5697 <td class="entry_range">
5700 <td class="entry_hal_version">
5704 <td class="entry_tags">
5705 <ul class="entry_tags">
5706 <li><a href="#tag_BC">BC</a></li>
5711 <tr class="entries_header">
5712 <th class="th_details" colspan="6">Details</th>
5714 <tr class="entry_cont">
5715 <td class="entry_details" colspan="6">
5716 <p>Devices with MANUAL_<wbr/>SENSOR capability or BURST_<wbr/>CAPTURE capability will always
5717 list <code>true</code>.<wbr/> This includes FULL devices.<wbr/></p>
5722 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5723 <!-- end of entry -->
5726 <tr class="entry" id="static_android.control.awbLockAvailable">
5727 <td class="entry_name
5729 android.<wbr/>control.<wbr/>awb<wbr/>Lock<wbr/>Available
5731 <td class="entry_type">
5732 <span class="entry_type_name entry_type_name_enum">byte</span>
5734 <span class="entry_type_visibility"> [public as boolean]</span>
5737 <span class="entry_type_hwlevel">[legacy] </span>
5741 <ul class="entry_type_enum">
5743 <span class="entry_type_enum_name">FALSE (v3.2)</span>
5746 <span class="entry_type_enum_name">TRUE (v3.2)</span>
5750 </td> <!-- entry_type -->
5752 <td class="entry_description">
5753 <p>Whether the camera device supports <a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></p>
5756 <td class="entry_units">
5759 <td class="entry_range">
5762 <td class="entry_hal_version">
5766 <td class="entry_tags">
5767 <ul class="entry_tags">
5768 <li><a href="#tag_BC">BC</a></li>
5773 <tr class="entries_header">
5774 <th class="th_details" colspan="6">Details</th>
5776 <tr class="entry_cont">
5777 <td class="entry_details" colspan="6">
5778 <p>Devices with MANUAL_<wbr/>POST_<wbr/>PROCESSING capability or BURST_<wbr/>CAPTURE capability will
5779 always list <code>true</code>.<wbr/> This includes FULL devices.<wbr/></p>
5784 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5785 <!-- end of entry -->
5788 <tr class="entry" id="static_android.control.availableModes">
5789 <td class="entry_name
5791 android.<wbr/>control.<wbr/>available<wbr/>Modes
5793 <td class="entry_type">
5794 <span class="entry_type_name">byte</span>
5795 <span class="entry_type_container">x</span>
5797 <span class="entry_type_array">
5800 <span class="entry_type_visibility"> [public as enumList]</span>
5803 <span class="entry_type_hwlevel">[legacy] </span>
5806 <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>mode).<wbr/></div>
5809 </td> <!-- entry_type -->
5811 <td class="entry_description">
5812 <p>List of control modes for <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> that are supported by this camera
5816 <td class="entry_units">
5819 <td class="entry_range">
5820 <p>Any value listed in <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a></p>
5823 <td class="entry_hal_version">
5827 <td class="entry_tags">
5831 <tr class="entries_header">
5832 <th class="th_details" colspan="6">Details</th>
5834 <tr class="entry_cont">
5835 <td class="entry_details" colspan="6">
5836 <p>This list contains control modes that can be set for the camera device.<wbr/>
5837 LEGACY mode devices will always support AUTO mode.<wbr/> LIMITED and FULL
5838 devices will always support OFF,<wbr/> AUTO modes.<wbr/></p>
5843 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5844 <!-- end of entry -->
5847 <tr class="entry" id="static_android.control.postRawSensitivityBoostRange">
5848 <td class="entry_name
5850 android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost<wbr/>Range
5852 <td class="entry_type">
5853 <span class="entry_type_name">int32</span>
5854 <span class="entry_type_container">x</span>
5856 <span class="entry_type_array">
5859 <span class="entry_type_visibility"> [public as rangeInt]</span>
5864 <div class="entry_type_notes">Range of supported post RAW sensitivitiy boosts</div>
5867 </td> <!-- entry_type -->
5869 <td class="entry_description">
5870 <p>Range of boosts for <a href="#controls_android.control.postRawSensitivityBoost">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost</a> supported
5871 by this camera device.<wbr/></p>
5874 <td class="entry_units">
5875 ISO arithmetic units,<wbr/> the same as android.<wbr/>sensor.<wbr/>sensitivity
5878 <td class="entry_range">
5881 <td class="entry_hal_version">
5885 <td class="entry_tags">
5889 <tr class="entries_header">
5890 <th class="th_details" colspan="6">Details</th>
5892 <tr class="entry_cont">
5893 <td class="entry_details" colspan="6">
5894 <p>Devices support post RAW sensitivity boost will advertise
5895 <a href="#controls_android.control.postRawSensitivityBoost">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost</a> key for controling
5896 post RAW sensitivity boost.<wbr/></p>
5897 <p>This key will be <code>null</code> for devices that do not support any RAW format
5898 outputs.<wbr/> For devices that do support RAW format outputs,<wbr/> this key will always
5899 present,<wbr/> and if a device does not support post RAW sensitivity boost,<wbr/> it will
5900 list <code>(100,<wbr/> 100)</code> in this key.<wbr/></p>
5904 <tr class="entries_header">
5905 <th class="th_details" colspan="6">HAL Implementation Details</th>
5907 <tr class="entry_cont">
5908 <td class="entry_details" colspan="6">
5909 <p>This key is added in legacy HAL3.<wbr/>4.<wbr/> For legacy HAL3.<wbr/>3 or earlier devices,<wbr/> camera
5910 framework will generate this key as <code>(100,<wbr/> 100)</code> if device supports any of RAW output
5911 formats.<wbr/> All legacy HAL3.<wbr/>4 and above devices should list this key if device supports
5912 any of RAW output formats.<wbr/></p>
5916 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5917 <!-- end of entry -->
5921 <!-- end of kind -->
5923 <tr><td colspan="7" class="kind">dynamic</td></tr>
5925 <thead class="entries_header">
5927 <th class="th_name">Property Name</th>
5928 <th class="th_type">Type</th>
5929 <th class="th_description">Description</th>
5930 <th class="th_units">Units</th>
5931 <th class="th_range">Range</th>
5932 <th class="th_hal_version">Initial HIDL HAL version</th>
5933 <th class="th_tags">Tags</th>
5948 <tr class="entry" id="dynamic_android.control.aePrecaptureId">
5949 <td class="entry_name
5950 entry_name_deprecated
5952 android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Id
5954 <td class="entry_type">
5955 <span class="entry_type_name">int32</span>
5957 <span class="entry_type_visibility"> [system]</span>
5961 <span class="entry_type_deprecated">[deprecated] </span>
5965 </td> <!-- entry_type -->
5967 <td class="entry_description">
5968 <p>The ID sent with the latest
5969 CAMERA2_<wbr/>TRIGGER_<wbr/>PRECAPTURE_<wbr/>METERING call</p>
5972 <td class="entry_units">
5975 <td class="entry_range">
5976 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
5979 <td class="entry_hal_version">
5983 <td class="entry_tags">
5987 <tr class="entries_header">
5988 <th class="th_details" colspan="6">Details</th>
5990 <tr class="entry_cont">
5991 <td class="entry_details" colspan="6">
5993 CAMERA2_<wbr/>TRIGGER_<wbr/>PRECAPTURE_<wbr/>METERING trigger received yet
5994 by HAL.<wbr/> Always updated even if AE algorithm ignores the
6000 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6001 <!-- end of entry -->
6004 <tr class="entry" id="dynamic_android.control.aeAntibandingMode">
6005 <td class="entry_name
6007 android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode
6009 <td class="entry_type">
6010 <span class="entry_type_name entry_type_name_enum">byte</span>
6012 <span class="entry_type_visibility"> [public]</span>
6015 <span class="entry_type_hwlevel">[legacy] </span>
6019 <ul class="entry_type_enum">
6021 <span class="entry_type_enum_name">OFF (v3.2)</span>
6022 <span class="entry_type_enum_notes"><p>The camera device will not adjust exposure duration to
6023 avoid banding problems.<wbr/></p></span>
6026 <span class="entry_type_enum_name">50HZ (v3.2)</span>
6027 <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
6028 avoid banding problems with 50Hz illumination sources.<wbr/></p></span>
6031 <span class="entry_type_enum_name">60HZ (v3.2)</span>
6032 <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
6033 avoid banding problems with 60Hz illumination
6034 sources.<wbr/></p></span>
6037 <span class="entry_type_enum_name">AUTO (v3.2)</span>
6038 <span class="entry_type_enum_notes"><p>The camera device will automatically adapt its
6039 antibanding routine to the current illumination
6040 condition.<wbr/> This is the default mode if AUTO is
6041 available on given camera device.<wbr/></p></span>
6045 </td> <!-- entry_type -->
6047 <td class="entry_description">
6048 <p>The desired setting for the camera device's auto-exposure
6049 algorithm's antibanding compensation.<wbr/></p>
6052 <td class="entry_units">
6055 <td class="entry_range">
6056 <p><a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a></p>
6059 <td class="entry_hal_version">
6063 <td class="entry_tags">
6064 <ul class="entry_tags">
6065 <li><a href="#tag_BC">BC</a></li>
6070 <tr class="entries_header">
6071 <th class="th_details" colspan="6">Details</th>
6073 <tr class="entry_cont">
6074 <td class="entry_details" colspan="6">
6075 <p>Some kinds of lighting fixtures,<wbr/> such as some fluorescent
6076 lights,<wbr/> flicker at the rate of the power supply frequency
6077 (60Hz or 50Hz,<wbr/> depending on country).<wbr/> While this is
6078 typically not noticeable to a person,<wbr/> it can be visible to
6079 a camera device.<wbr/> If a camera sets its exposure time to the
6080 wrong value,<wbr/> the flicker may become visible in the
6081 viewfinder as flicker or in a final captured image,<wbr/> as a
6082 set of variable-brightness bands across the image.<wbr/></p>
6083 <p>Therefore,<wbr/> the auto-exposure routines of camera devices
6084 include antibanding routines that ensure that the chosen
6085 exposure value will not cause such banding.<wbr/> The choice of
6086 exposure time depends on the rate of flicker,<wbr/> which the
6087 camera device can detect automatically,<wbr/> or the expected
6088 rate can be selected by the application using this
6090 <p>A given camera device may not support all of the possible
6091 options for the antibanding mode.<wbr/> The
6092 <a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a> key contains
6093 the available modes for a given camera device.<wbr/></p>
6094 <p>AUTO mode is the default if it is available on given
6095 camera device.<wbr/> When AUTO mode is not available,<wbr/> the
6096 default will be either 50HZ or 60HZ,<wbr/> and both 50HZ
6097 and 60HZ will be available.<wbr/></p>
6098 <p>If manual exposure control is enabled (by setting
6099 <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/>
6100 then this setting has no effect,<wbr/> and the application must
6101 ensure it selects exposure times that do not cause banding
6102 issues.<wbr/> The <a href="#dynamic_android.statistics.sceneFlicker">android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker</a> key can assist
6103 the application in this.<wbr/></p>
6107 <tr class="entries_header">
6108 <th class="th_details" colspan="6">HAL Implementation Details</th>
6110 <tr class="entry_cont">
6111 <td class="entry_details" colspan="6">
6112 <p>For all capture request templates,<wbr/> this field must be set
6113 to AUTO if AUTO mode is available.<wbr/> If AUTO is not available,<wbr/>
6114 the default must be either 50HZ or 60HZ,<wbr/> and both 50HZ and
6115 60HZ must be available.<wbr/></p>
6116 <p>If manual exposure control is enabled (by setting
6117 <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/>
6118 then the exposure values provided by the application must not be
6119 adjusted for antibanding.<wbr/></p>
6123 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6124 <!-- end of entry -->
6127 <tr class="entry" id="dynamic_android.control.aeExposureCompensation">
6128 <td class="entry_name
6130 android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation
6132 <td class="entry_type">
6133 <span class="entry_type_name">int32</span>
6135 <span class="entry_type_visibility"> [public]</span>
6138 <span class="entry_type_hwlevel">[legacy] </span>
6143 </td> <!-- entry_type -->
6145 <td class="entry_description">
6146 <p>Adjustment to auto-exposure (AE) target image
6147 brightness.<wbr/></p>
6150 <td class="entry_units">
6154 <td class="entry_range">
6155 <p><a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a></p>
6158 <td class="entry_hal_version">
6162 <td class="entry_tags">
6163 <ul class="entry_tags">
6164 <li><a href="#tag_BC">BC</a></li>
6169 <tr class="entries_header">
6170 <th class="th_details" colspan="6">Details</th>
6172 <tr class="entry_cont">
6173 <td class="entry_details" colspan="6">
6174 <p>The adjustment is measured as a count of steps,<wbr/> with the
6175 step size defined by <a href="#static_android.control.aeCompensationStep">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step</a> and the
6176 allowed range by <a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a>.<wbr/></p>
6177 <p>For example,<wbr/> if the exposure value (EV) step is 0.<wbr/>333,<wbr/> '6'
6178 will mean an exposure compensation of +2 EV; -3 will mean an
6179 exposure compensation of -1 EV.<wbr/> One EV represents a doubling
6180 of image brightness.<wbr/> Note that this control will only be
6181 effective if <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>!=</code> OFF.<wbr/> This control
6182 will take effect even when <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> <code>== true</code>.<wbr/></p>
6183 <p>In the event of exposure compensation value being changed,<wbr/> camera device
6184 may take several frames to reach the newly requested exposure target.<wbr/>
6185 During that time,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> field will be in the SEARCHING
6186 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
6187 change from SEARCHING to either CONVERGED,<wbr/> LOCKED (if AE lock is enabled),<wbr/> or
6188 FLASH_<wbr/>REQUIRED (if the scene is too dark for still capture).<wbr/></p>
6193 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6194 <!-- end of entry -->
6197 <tr class="entry" id="dynamic_android.control.aeLock">
6198 <td class="entry_name
6200 android.<wbr/>control.<wbr/>ae<wbr/>Lock
6202 <td class="entry_type">
6203 <span class="entry_type_name entry_type_name_enum">byte</span>
6205 <span class="entry_type_visibility"> [public as boolean]</span>
6208 <span class="entry_type_hwlevel">[legacy] </span>
6212 <ul class="entry_type_enum">
6214 <span class="entry_type_enum_name">OFF (v3.2)</span>
6215 <span class="entry_type_enum_notes"><p>Auto-exposure lock is disabled; the AE algorithm
6216 is free to update its parameters.<wbr/></p></span>
6219 <span class="entry_type_enum_name">ON (v3.2)</span>
6220 <span class="entry_type_enum_notes"><p>Auto-exposure lock is enabled; the AE algorithm
6221 must not update the exposure and sensitivity parameters
6222 while the lock is active.<wbr/></p>
6223 <p><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a> setting changes
6224 will still take effect while auto-exposure is locked.<wbr/></p>
6225 <p>Some rare LEGACY devices may not support
6226 this,<wbr/> in which case the value will always be overridden to OFF.<wbr/></p></span>
6230 </td> <!-- entry_type -->
6232 <td class="entry_description">
6233 <p>Whether auto-exposure (AE) is currently locked to its latest
6234 calculated values.<wbr/></p>
6237 <td class="entry_units">
6240 <td class="entry_range">
6243 <td class="entry_hal_version">
6247 <td class="entry_tags">
6248 <ul class="entry_tags">
6249 <li><a href="#tag_BC">BC</a></li>
6254 <tr class="entries_header">
6255 <th class="th_details" colspan="6">Details</th>
6257 <tr class="entry_cont">
6258 <td class="entry_details" colspan="6">
6259 <p>When set to <code>true</code> (ON),<wbr/> the AE algorithm is locked to its latest parameters,<wbr/>
6260 and will not change exposure settings until the lock is set to <code>false</code> (OFF).<wbr/></p>
6261 <p>Note that even when AE is locked,<wbr/> the flash may be fired if
6262 the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is ON_<wbr/>AUTO_<wbr/>FLASH /<wbr/>
6263 ON_<wbr/>ALWAYS_<wbr/>FLASH /<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE.<wbr/></p>
6264 <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
6265 is ON,<wbr/> the camera device will still adjust its exposure value.<wbr/></p>
6266 <p>If AE precapture is triggered (see <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>)
6267 when AE is already locked,<wbr/> the camera device will not change the exposure time
6268 (<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>)
6269 parameters.<wbr/> The flash may be fired if the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>
6270 is ON_<wbr/>AUTO_<wbr/>FLASH/<wbr/>ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE and the scene is too dark.<wbr/> If the
6271 <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/>
6272 Similarly,<wbr/> AE precapture trigger CANCEL has no effect when AE is already locked.<wbr/></p>
6273 <p>When an AE precapture sequence is triggered,<wbr/> AE unlock will not be able to unlock
6274 the AE if AE is locked by the camera device internally during precapture metering
6275 sequence In other words,<wbr/> submitting requests with AE unlock has no effect for an
6276 ongoing precapture metering sequence.<wbr/> Otherwise,<wbr/> the precapture metering sequence
6277 will never succeed in a sequence of preview requests where AE lock is always set
6278 to <code>false</code>.<wbr/></p>
6279 <p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that
6280 get locked do not necessarily correspond to the settings that were present in the
6281 latest capture result received from the camera device,<wbr/> since additional captures
6282 and AE updates may have occurred even before the result was sent out.<wbr/> If an
6283 application is switching between automatic and manual control and wishes to eliminate
6284 any flicker during the switch,<wbr/> the following procedure is recommended:</p>
6286 <li>Starting in auto-AE mode:</li>
6288 <li>Wait for the first result to be output that has the AE locked</li>
6289 <li>Copy exposure settings from that result into a request,<wbr/> set the request to manual AE</li>
6290 <li>Submit the capture request,<wbr/> proceed to run manual AE as desired.<wbr/></li>
6292 <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>
6297 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6298 <!-- end of entry -->
6301 <tr class="entry" id="dynamic_android.control.aeMode">
6302 <td class="entry_name
6304 android.<wbr/>control.<wbr/>ae<wbr/>Mode
6306 <td class="entry_type">
6307 <span class="entry_type_name entry_type_name_enum">byte</span>
6309 <span class="entry_type_visibility"> [public]</span>
6312 <span class="entry_type_hwlevel">[legacy] </span>
6316 <ul class="entry_type_enum">
6318 <span class="entry_type_enum_name">OFF (v3.2)</span>
6319 <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is disabled.<wbr/></p>
6320 <p>The application-selected <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
6321 <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> and
6322 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are used by the camera
6323 device,<wbr/> along with android.<wbr/>flash.<wbr/>* fields,<wbr/> if there's
6324 a flash unit for this camera device.<wbr/></p>
6325 <p>Note that auto-white balance (AWB) and auto-focus (AF)
6326 behavior is device dependent when AE is in OFF mode.<wbr/>
6327 To have consistent behavior across different devices,<wbr/>
6328 it is recommended to either set AWB and AF to OFF mode
6329 or lock AWB and AF before setting AE to OFF.<wbr/>
6330 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/>
6331 <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>
6332 for more details.<wbr/></p>
6333 <p>LEGACY devices do not support the OFF mode and will
6334 override attempts to use this value to ON.<wbr/></p></span>
6337 <span class="entry_type_enum_name">ON (v3.2)</span>
6338 <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is active,<wbr/>
6339 with no flash control.<wbr/></p>
6340 <p>The application's values for
6341 <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
6342 <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
6343 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are ignored.<wbr/> The
6344 application has control over the various
6345 android.<wbr/>flash.<wbr/>* fields.<wbr/></p></span>
6348 <span class="entry_type_enum_name">ON_AUTO_FLASH (v3.2)</span>
6349 <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
6350 the camera's flash unit,<wbr/> firing it in low-light
6351 conditions.<wbr/></p>
6352 <p>The flash may be fired during a precapture sequence
6353 (triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and
6354 may be fired for captures for which the
6355 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to
6356 STILL_<wbr/>CAPTURE</p></span>
6359 <span class="entry_type_enum_name">ON_ALWAYS_FLASH (v3.2)</span>
6360 <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
6361 the camera's flash unit,<wbr/> always firing it for still
6363 <p>The flash may be fired during a precapture sequence
6364 (triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and
6365 will always be fired for captures for which the
6366 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to
6367 STILL_<wbr/>CAPTURE</p></span>
6370 <span class="entry_type_enum_name">ON_AUTO_FLASH_REDEYE (v3.2)</span>
6371 <span class="entry_type_enum_notes"><p>Like ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> but with automatic red eye
6372 reduction.<wbr/></p>
6373 <p>If deemed necessary by the camera device,<wbr/> a red eye
6374 reduction flash will fire during the precapture
6375 sequence.<wbr/></p></span>
6378 <span class="entry_type_enum_name">ON_EXTERNAL_FLASH (v3.3)</span>
6379 <span class="entry_type_enum_notes"><p>An external flash has been turned on.<wbr/></p>
6380 <p>It informs the camera device that an external flash has been turned on,<wbr/> and that
6381 metering (and continuous focus if active) should be quickly recaculated to account
6382 for the external flash.<wbr/> Otherwise,<wbr/> this mode acts like ON.<wbr/></p>
6383 <p>When the external flash is turned off,<wbr/> AE mode should be changed to one of the
6384 other available AE modes.<wbr/></p>
6385 <p>If the camera device supports AE external flash mode,<wbr/> aeState must be
6386 FLASH_<wbr/>REQUIRED after the camera device finishes AE scan and it's too dark without
6387 flash.<wbr/></p></span>
6391 </td> <!-- entry_type -->
6393 <td class="entry_description">
6394 <p>The desired mode for the camera device's
6395 auto-exposure routine.<wbr/></p>
6398 <td class="entry_units">
6401 <td class="entry_range">
6402 <p><a href="#static_android.control.aeAvailableModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes</a></p>
6405 <td class="entry_hal_version">
6409 <td class="entry_tags">
6410 <ul class="entry_tags">
6411 <li><a href="#tag_BC">BC</a></li>
6416 <tr class="entries_header">
6417 <th class="th_details" colspan="6">Details</th>
6419 <tr class="entry_cont">
6420 <td class="entry_details" colspan="6">
6421 <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is
6423 <p>When set to any of the ON modes,<wbr/> the camera device's
6424 auto-exposure routine is enabled,<wbr/> overriding the
6425 application's selected exposure time,<wbr/> sensor sensitivity,<wbr/>
6426 and frame duration (<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
6427 <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
6428 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>).<wbr/> If one of the FLASH modes
6429 is selected,<wbr/> the camera device's flash unit controls are
6430 also overridden.<wbr/></p>
6431 <p>The FLASH modes are only available if the camera device
6432 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>
6433 <p>If flash TORCH mode is desired,<wbr/> this field must be set to
6434 ON or OFF,<wbr/> and <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> set to TORCH.<wbr/></p>
6435 <p>When set to any of the ON modes,<wbr/> the values chosen by the
6436 camera device auto-exposure routine for the overridden
6437 fields for a given capture will be available in its
6438 CaptureResult.<wbr/></p>
6443 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6444 <!-- end of entry -->
6447 <tr class="entry" id="dynamic_android.control.aeRegions">
6448 <td class="entry_name
6450 android.<wbr/>control.<wbr/>ae<wbr/>Regions
6452 <td class="entry_type">
6453 <span class="entry_type_name">int32</span>
6454 <span class="entry_type_container">x</span>
6456 <span class="entry_type_array">
6459 <span class="entry_type_visibility"> [public as meteringRectangle]</span>
6466 </td> <!-- entry_type -->
6468 <td class="entry_description">
6469 <p>List of metering areas to use for auto-exposure adjustment.<wbr/></p>
6472 <td class="entry_units">
6473 Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
6476 <td class="entry_range">
6477 <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
6478 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
6481 <td class="entry_hal_version">
6485 <td class="entry_tags">
6486 <ul class="entry_tags">
6487 <li><a href="#tag_BC">BC</a></li>
6492 <tr class="entries_header">
6493 <th class="th_details" colspan="6">Details</th>
6495 <tr class="entry_cont">
6496 <td class="entry_details" colspan="6">
6497 <p>Not available if <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a> is 0.<wbr/>
6498 Otherwise will always be present.<wbr/></p>
6499 <p>The maximum number of regions supported by the device is determined by the value
6500 of <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a>.<wbr/></p>
6501 <p>The coordinate system is based on the active pixel array,<wbr/>
6502 with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
6503 (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
6504 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
6505 bottom-right pixel in the active pixel array.<wbr/></p>
6506 <p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight
6507 for every pixel in the area.<wbr/> This means that a large metering area
6508 with the same weight as a smaller area will have more effect in
6509 the metering result.<wbr/> Metering areas can partially overlap and the
6510 camera device will add the weights in the overlap region.<wbr/></p>
6511 <p>The weights are relative to weights of other exposure metering regions,<wbr/> so if only one
6512 region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0
6513 weight is ignored.<wbr/></p>
6514 <p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
6515 camera device.<wbr/></p>
6516 <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
6517 capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
6518 region and output only the intersection rectangle as the metering region in the result
6519 metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and
6520 not reported in the result metadata.<wbr/></p>
6524 <tr class="entries_header">
6525 <th class="th_details" colspan="6">HAL Implementation Details</th>
6527 <tr class="entry_cont">
6528 <td class="entry_details" colspan="6">
6529 <p>The HAL level representation of MeteringRectangle[] is a
6530 int[5 * area_<wbr/>count].<wbr/>
6531 Every five elements represent a metering region of
6532 (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
6533 The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
6534 exclusive on xmax and ymax.<wbr/></p>
6538 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6539 <!-- end of entry -->
6542 <tr class="entry" id="dynamic_android.control.aeTargetFpsRange">
6543 <td class="entry_name
6545 android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range
6547 <td class="entry_type">
6548 <span class="entry_type_name">int32</span>
6549 <span class="entry_type_container">x</span>
6551 <span class="entry_type_array">
6554 <span class="entry_type_visibility"> [public as rangeInt]</span>
6557 <span class="entry_type_hwlevel">[legacy] </span>
6562 </td> <!-- entry_type -->
6564 <td class="entry_description">
6565 <p>Range over which the auto-exposure routine can
6566 adjust the capture frame rate to maintain good
6570 <td class="entry_units">
6571 Frames per second (FPS)
6574 <td class="entry_range">
6575 <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>
6578 <td class="entry_hal_version">
6582 <td class="entry_tags">
6583 <ul class="entry_tags">
6584 <li><a href="#tag_BC">BC</a></li>
6589 <tr class="entries_header">
6590 <th class="th_details" colspan="6">Details</th>
6592 <tr class="entry_cont">
6593 <td class="entry_details" colspan="6">
6594 <p>Only constrains auto-exposure (AE) algorithm,<wbr/> not
6595 manual control of <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> and
6596 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>.<wbr/></p>
6601 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6602 <!-- end of entry -->
6605 <tr class="entry" id="dynamic_android.control.aePrecaptureTrigger">
6606 <td class="entry_name
6608 android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger
6610 <td class="entry_type">
6611 <span class="entry_type_name entry_type_name_enum">byte</span>
6613 <span class="entry_type_visibility"> [public]</span>
6616 <span class="entry_type_hwlevel">[limited] </span>
6620 <ul class="entry_type_enum">
6622 <span class="entry_type_enum_name">IDLE (v3.2)</span>
6623 <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
6626 <span class="entry_type_enum_name">START (v3.2)</span>
6627 <span class="entry_type_enum_notes"><p>The precapture metering sequence will be started
6628 by the camera device.<wbr/></p>
6629 <p>The exact effect of the precapture trigger depends on
6630 the current AE mode and state.<wbr/></p></span>
6633 <span class="entry_type_enum_name">CANCEL (v3.2)</span>
6634 <span class="entry_type_enum_notes"><p>The camera device will cancel any currently active or completed
6635 precapture metering sequence,<wbr/> the auto-exposure routine will return to its
6636 initial state.<wbr/></p></span>
6640 </td> <!-- entry_type -->
6642 <td class="entry_description">
6643 <p>Whether the camera device will trigger a precapture
6644 metering sequence when it processes this request.<wbr/></p>
6647 <td class="entry_units">
6650 <td class="entry_range">
6653 <td class="entry_hal_version">
6657 <td class="entry_tags">
6658 <ul class="entry_tags">
6659 <li><a href="#tag_BC">BC</a></li>
6664 <tr class="entries_header">
6665 <th class="th_details" colspan="6">Details</th>
6667 <tr class="entry_cont">
6668 <td class="entry_details" colspan="6">
6669 <p>This entry is normally set to IDLE,<wbr/> or is not
6670 included at all in the request settings.<wbr/> When included and
6671 set to START,<wbr/> the camera device will trigger the auto-exposure (AE)
6672 precapture metering sequence.<wbr/></p>
6673 <p>When set to CANCEL,<wbr/> the camera device will cancel any active
6674 precapture metering trigger,<wbr/> and return to its initial AE state.<wbr/>
6675 If a precapture metering sequence is already completed,<wbr/> and the camera
6676 device has implicitly locked the AE for subsequent still capture,<wbr/> the
6677 CANCEL trigger will unlock the AE and return to its initial AE state.<wbr/></p>
6678 <p>The precapture sequence should be triggered before starting a
6679 high-quality still capture for final metering decisions to
6680 be made,<wbr/> and for firing pre-capture flash pulses to estimate
6681 scene brightness and required final capture flash power,<wbr/> when
6682 the flash is enabled.<wbr/></p>
6683 <p>Normally,<wbr/> this entry should be set to START for only a
6684 single request,<wbr/> and the application should wait until the
6685 sequence completes before starting a new one.<wbr/></p>
6686 <p>When a precapture metering sequence is finished,<wbr/> the camera device
6687 may lock the auto-exposure routine internally to be able to accurately expose the
6688 subsequent still capture image (<code><a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE</code>).<wbr/>
6689 For this case,<wbr/> the AE may not resume normal scan if no subsequent still capture is
6690 submitted.<wbr/> To ensure that the AE routine restarts normal scan,<wbr/> the application should
6691 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
6692 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
6693 still capture request after the precapture sequence completes.<wbr/> Alternatively,<wbr/> for
6694 API level 23 or newer devices,<wbr/> the CANCEL can be used to unlock the camera device
6695 internally locked AE if the application doesn't submit a still capture request after
6696 the AE precapture trigger.<wbr/> Note that,<wbr/> the CANCEL was added in API level 23,<wbr/> and must not
6697 be used in devices that have earlier API levels.<wbr/></p>
6698 <p>The exact effect of auto-exposure (AE) precapture trigger
6699 depends on the current AE mode and state; see
6700 <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> for AE precapture state transition
6702 <p>On LEGACY-level devices,<wbr/> the precapture trigger is not supported;
6703 capturing a high-resolution JPEG image will automatically trigger a
6704 precapture sequence before the high-resolution capture,<wbr/> including
6705 potentially firing a pre-capture flash.<wbr/></p>
6706 <p>Using the precapture trigger and the auto-focus trigger <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>
6707 simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between
6708 the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a
6709 focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous
6710 trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and
6711 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
6713 <p>If both the precapture and the auto-focus trigger are activated on the same request,<wbr/> then
6714 the camera device will complete them in the optimal order for that device.<wbr/></p>
6718 <tr class="entries_header">
6719 <th class="th_details" colspan="6">HAL Implementation Details</th>
6721 <tr class="entry_cont">
6722 <td class="entry_details" colspan="6">
6723 <p>The HAL must support triggering the AE precapture trigger while an AF trigger is active
6724 (and vice versa),<wbr/> or at the same time as the AF trigger.<wbr/> It is acceptable for the HAL to
6725 treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the
6726 AE trigger.<wbr/> Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/>
6727 to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p>
6731 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6732 <!-- end of entry -->
6735 <tr class="entry" id="dynamic_android.control.aeState">
6736 <td class="entry_name
6738 android.<wbr/>control.<wbr/>ae<wbr/>State
6740 <td class="entry_type">
6741 <span class="entry_type_name entry_type_name_enum">byte</span>
6743 <span class="entry_type_visibility"> [public]</span>
6746 <span class="entry_type_hwlevel">[limited] </span>
6750 <ul class="entry_type_enum">
6752 <span class="entry_type_enum_name">INACTIVE (v3.2)</span>
6753 <span class="entry_type_enum_notes"><p>AE is off or recently reset.<wbr/></p>
6754 <p>When a camera device is opened,<wbr/> it starts in
6755 this state.<wbr/> This is a transient state,<wbr/> the camera device may skip reporting
6756 this state in capture result.<wbr/></p></span>
6759 <span class="entry_type_enum_name">SEARCHING (v3.2)</span>
6760 <span class="entry_type_enum_notes"><p>AE doesn't yet have a good set of control values
6761 for the current scene.<wbr/></p>
6762 <p>This is a transient state,<wbr/> the camera device may skip
6763 reporting this state in capture result.<wbr/></p></span>
6766 <span class="entry_type_enum_name">CONVERGED (v3.2)</span>
6767 <span class="entry_type_enum_notes"><p>AE has a good set of control values for the
6768 current scene.<wbr/></p></span>
6771 <span class="entry_type_enum_name">LOCKED (v3.2)</span>
6772 <span class="entry_type_enum_notes"><p>AE has been locked.<wbr/></p></span>
6775 <span class="entry_type_enum_name">FLASH_REQUIRED (v3.2)</span>
6776 <span class="entry_type_enum_notes"><p>AE has a good set of control values,<wbr/> but flash
6777 needs to be fired for good quality still
6778 capture.<wbr/></p></span>
6781 <span class="entry_type_enum_name">PRECAPTURE (v3.2)</span>
6782 <span class="entry_type_enum_notes"><p>AE has been asked to do a precapture sequence
6783 and is currently executing it.<wbr/></p>
6784 <p>Precapture can be triggered through setting
6785 <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> to START.<wbr/> Currently
6786 active and completed (if it causes camera device internal AE lock) precapture
6787 metering sequence can be canceled through setting
6788 <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> to CANCEL.<wbr/></p>
6789 <p>Once PRECAPTURE completes,<wbr/> AE will transition to CONVERGED
6790 or FLASH_<wbr/>REQUIRED as appropriate.<wbr/> This is a transient
6791 state,<wbr/> the camera device may skip reporting this state in
6792 capture result.<wbr/></p></span>
6796 </td> <!-- entry_type -->
6798 <td class="entry_description">
6799 <p>Current state of the auto-exposure (AE) algorithm.<wbr/></p>
6802 <td class="entry_units">
6805 <td class="entry_range">
6808 <td class="entry_hal_version">
6812 <td class="entry_tags">
6816 <tr class="entries_header">
6817 <th class="th_details" colspan="6">Details</th>
6819 <tr class="entry_cont">
6820 <td class="entry_details" colspan="6">
6821 <p>Switching between or enabling AE modes (<a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>) always
6822 resets the AE state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/>
6823 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
6824 the algorithm states to INACTIVE.<wbr/></p>
6825 <p>The camera device can do several state transitions between two results,<wbr/> if it is
6826 allowed by the state transition table.<wbr/> For example: INACTIVE may never actually be
6827 seen in a result.<wbr/></p>
6828 <p>The state in the result is the state for this image (in sync with this image): if
6829 AE state becomes CONVERGED,<wbr/> then the image data associated with this result should
6830 be good to use.<wbr/></p>
6831 <p>Below are state transition tables for different AE modes.<wbr/></p>
6835 <th align="center">State</th>
6836 <th align="center">Transition Cause</th>
6837 <th align="center">New State</th>
6838 <th align="center">Notes</th>
6843 <td align="center">INACTIVE</td>
6844 <td align="center"></td>
6845 <td align="center">INACTIVE</td>
6846 <td align="center">Camera device auto exposure algorithm is disabled</td>
6850 <p>When <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is AE_<wbr/>MODE_<wbr/>ON*:</p>
6854 <th align="center">State</th>
6855 <th align="center">Transition Cause</th>
6856 <th align="center">New State</th>
6857 <th align="center">Notes</th>
6862 <td align="center">INACTIVE</td>
6863 <td align="center">Camera device initiates AE scan</td>
6864 <td align="center">SEARCHING</td>
6865 <td align="center">Values changing</td>
6868 <td align="center">INACTIVE</td>
6869 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
6870 <td align="center">LOCKED</td>
6871 <td align="center">Values locked</td>
6874 <td align="center">SEARCHING</td>
6875 <td align="center">Camera device finishes AE scan</td>
6876 <td align="center">CONVERGED</td>
6877 <td align="center">Good values,<wbr/> not changing</td>
6880 <td align="center">SEARCHING</td>
6881 <td align="center">Camera device finishes AE scan</td>
6882 <td align="center">FLASH_<wbr/>REQUIRED</td>
6883 <td align="center">Converged but too dark w/<wbr/>o flash</td>
6886 <td align="center">SEARCHING</td>
6887 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
6888 <td align="center">LOCKED</td>
6889 <td align="center">Values locked</td>
6892 <td align="center">CONVERGED</td>
6893 <td align="center">Camera device initiates AE scan</td>
6894 <td align="center">SEARCHING</td>
6895 <td align="center">Values changing</td>
6898 <td align="center">CONVERGED</td>
6899 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
6900 <td align="center">LOCKED</td>
6901 <td align="center">Values locked</td>
6904 <td align="center">FLASH_<wbr/>REQUIRED</td>
6905 <td align="center">Camera device initiates AE scan</td>
6906 <td align="center">SEARCHING</td>
6907 <td align="center">Values changing</td>
6910 <td align="center">FLASH_<wbr/>REQUIRED</td>
6911 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
6912 <td align="center">LOCKED</td>
6913 <td align="center">Values locked</td>
6916 <td align="center">LOCKED</td>
6917 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td>
6918 <td align="center">SEARCHING</td>
6919 <td align="center">Values not good after unlock</td>
6922 <td align="center">LOCKED</td>
6923 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td>
6924 <td align="center">CONVERGED</td>
6925 <td align="center">Values good after unlock</td>
6928 <td align="center">LOCKED</td>
6929 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td>
6930 <td align="center">FLASH_<wbr/>REQUIRED</td>
6931 <td align="center">Exposure good,<wbr/> but too dark</td>
6934 <td align="center">PRECAPTURE</td>
6935 <td align="center">Sequence done.<wbr/> <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td>
6936 <td align="center">CONVERGED</td>
6937 <td align="center">Ready for high-quality capture</td>
6940 <td align="center">PRECAPTURE</td>
6941 <td align="center">Sequence done.<wbr/> <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
6942 <td align="center">LOCKED</td>
6943 <td align="center">Ready for high-quality capture</td>
6946 <td align="center">LOCKED</td>
6947 <td align="center">aeLock is ON and aePrecaptureTrigger is START</td>
6948 <td align="center">LOCKED</td>
6949 <td align="center">Precapture trigger is ignored when AE is already locked</td>
6952 <td align="center">LOCKED</td>
6953 <td align="center">aeLock is ON and aePrecaptureTrigger is CANCEL</td>
6954 <td align="center">LOCKED</td>
6955 <td align="center">Precapture trigger is ignored when AE is already locked</td>
6958 <td align="center">Any state (excluding LOCKED)</td>
6959 <td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is START</td>
6960 <td align="center">PRECAPTURE</td>
6961 <td align="center">Start AE precapture metering sequence</td>
6964 <td align="center">Any state (excluding LOCKED)</td>
6965 <td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL</td>
6966 <td align="center">INACTIVE</td>
6967 <td align="center">Currently active precapture metering sequence is canceled</td>
6971 <p>If the camera device supports AE external flash mode (ON_<wbr/>EXTERNAL_<wbr/>FLASH is included in
6972 <a href="#static_android.control.aeAvailableModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes</a>),<wbr/> aeState must be FLASH_<wbr/>REQUIRED after the camera device
6973 finishes AE scan and it's too dark without flash.<wbr/></p>
6974 <p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen
6975 without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that
6976 can be skipped in that manner is called a transient state.<wbr/></p>
6977 <p>For example,<wbr/> for above AE modes (AE_<wbr/>MODE_<wbr/>ON*),<wbr/> in addition to the state transitions
6978 listed in above table,<wbr/> it is also legal for the camera device to skip one or more
6979 transient states between two results.<wbr/> See below table for examples:</p>
6983 <th align="center">State</th>
6984 <th align="center">Transition Cause</th>
6985 <th align="center">New State</th>
6986 <th align="center">Notes</th>
6991 <td align="center">INACTIVE</td>
6992 <td align="center">Camera device finished AE scan</td>
6993 <td align="center">CONVERGED</td>
6994 <td align="center">Values are already good,<wbr/> transient states are skipped by camera device.<wbr/></td>
6997 <td align="center">Any state (excluding LOCKED)</td>
6998 <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>
6999 <td align="center">FLASH_<wbr/>REQUIRED</td>
7000 <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>
7003 <td align="center">Any state (excluding LOCKED)</td>
7004 <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>
7005 <td align="center">CONVERGED</td>
7006 <td align="center">Converged after a precapture sequence,<wbr/> transient states are skipped by camera device.<wbr/></td>
7009 <td align="center">Any state (excluding LOCKED)</td>
7010 <td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL,<wbr/> converged</td>
7011 <td align="center">FLASH_<wbr/>REQUIRED</td>
7012 <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>
7015 <td align="center">Any state (excluding LOCKED)</td>
7016 <td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL,<wbr/> converged</td>
7017 <td align="center">CONVERGED</td>
7018 <td align="center">Converged after a precapture sequenceis canceled,<wbr/> transient states are skipped by camera device.<wbr/></td>
7021 <td align="center">CONVERGED</td>
7022 <td align="center">Camera device finished AE scan</td>
7023 <td align="center">FLASH_<wbr/>REQUIRED</td>
7024 <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>
7027 <td align="center">FLASH_<wbr/>REQUIRED</td>
7028 <td align="center">Camera device finished AE scan</td>
7029 <td align="center">CONVERGED</td>
7030 <td align="center">Converged after a new scan,<wbr/> transient states are skipped by camera device.<wbr/></td>
7038 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
7039 <!-- end of entry -->
7042 <tr class="entry" id="dynamic_android.control.afMode">
7043 <td class="entry_name
7045 android.<wbr/>control.<wbr/>af<wbr/>Mode
7047 <td class="entry_type">
7048 <span class="entry_type_name entry_type_name_enum">byte</span>
7050 <span class="entry_type_visibility"> [public]</span>
7053 <span class="entry_type_hwlevel">[legacy] </span>
7057 <ul class="entry_type_enum">
7059 <span class="entry_type_enum_name">OFF (v3.2)</span>
7060 <span class="entry_type_enum_notes"><p>The auto-focus routine does not control the lens;
7061 <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> is controlled by the
7062 application.<wbr/></p></span>
7065 <span class="entry_type_enum_name">AUTO (v3.2)</span>
7066 <span class="entry_type_enum_notes"><p>Basic automatic focus mode.<wbr/></p>
7067 <p>In this mode,<wbr/> the lens does not move unless
7068 the autofocus trigger action is called.<wbr/> When that trigger
7069 is activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
7070 the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/></p>
7071 <p>Always supported if lens is not fixed focus.<wbr/></p>
7072 <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
7073 is fixed-focus.<wbr/></p>
7074 <p>Triggering AF_<wbr/>CANCEL resets the lens position to default,<wbr/>
7075 and sets the AF state to INACTIVE.<wbr/></p></span>
7078 <span class="entry_type_enum_name">MACRO (v3.2)</span>
7079 <span class="entry_type_enum_notes"><p>Close-up focusing mode.<wbr/></p>
7080 <p>In this mode,<wbr/> the lens does not move unless the
7081 autofocus trigger action is called.<wbr/> When that trigger is
7082 activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
7083 the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/> This
7084 mode is optimized for focusing on objects very close to
7085 the camera.<wbr/></p>
7086 <p>When that trigger is activated,<wbr/> AF will transition to
7087 ACTIVE_<wbr/>SCAN,<wbr/> then to the outcome of the scan (FOCUSED or
7088 NOT_<wbr/>FOCUSED).<wbr/> Triggering cancel AF resets the lens
7089 position to default,<wbr/> and sets the AF state to
7090 INACTIVE.<wbr/></p></span>
7093 <span class="entry_type_enum_name">CONTINUOUS_VIDEO (v3.2)</span>
7094 <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
7095 position continually to attempt to provide a
7096 constantly-in-focus image stream.<wbr/></p>
7097 <p>The focusing behavior should be suitable for good quality
7098 video recording; typically this means slower focus
7099 movement and no overshoots.<wbr/> When the AF trigger is not
7100 involved,<wbr/> the AF algorithm should start in INACTIVE state,<wbr/>
7101 and then transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED
7102 states as appropriate.<wbr/> When the AF trigger is activated,<wbr/>
7103 the algorithm should immediately transition into
7104 AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the
7105 lens position until a cancel AF trigger is received.<wbr/></p>
7106 <p>Once cancel is received,<wbr/> the algorithm should transition
7107 back to INACTIVE and resume passive scan.<wbr/> Note that this
7108 behavior is not identical to CONTINUOUS_<wbr/>PICTURE,<wbr/> since an
7109 ongoing PASSIVE_<wbr/>SCAN must immediately be
7110 canceled.<wbr/></p></span>
7113 <span class="entry_type_enum_name">CONTINUOUS_PICTURE (v3.2)</span>
7114 <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
7115 position continually to attempt to provide a
7116 constantly-in-focus image stream.<wbr/></p>
7117 <p>The focusing behavior should be suitable for still image
7118 capture; typically this means focusing as fast as
7119 possible.<wbr/> When the AF trigger is not involved,<wbr/> the AF
7120 algorithm should start in INACTIVE state,<wbr/> and then
7121 transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED states as
7122 appropriate as it attempts to maintain focus.<wbr/> When the AF
7123 trigger is activated,<wbr/> the algorithm should finish its
7124 PASSIVE_<wbr/>SCAN if active,<wbr/> and then transition into
7125 AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the
7126 lens position until a cancel AF trigger is received.<wbr/></p>
7127 <p>When the AF cancel trigger is activated,<wbr/> the algorithm
7128 should transition back to INACTIVE and then act as if it
7129 has just been started.<wbr/></p></span>
7132 <span class="entry_type_enum_name">EDOF (v3.2)</span>
7133 <span class="entry_type_enum_notes"><p>Extended depth of field (digital focus) mode.<wbr/></p>
7134 <p>The camera device will produce images with an extended
7135 depth of field automatically; no special focusing
7136 operations need to be done before taking a picture.<wbr/></p>
7137 <p>AF triggers are ignored,<wbr/> and the AF state will always be
7138 INACTIVE.<wbr/></p></span>
7142 </td> <!-- entry_type -->
7144 <td class="entry_description">
7145 <p>Whether auto-focus (AF) is currently enabled,<wbr/> and what
7146 mode it is set to.<wbr/></p>
7149 <td class="entry_units">
7152 <td class="entry_range">
7153 <p><a href="#static_android.control.afAvailableModes">android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes</a></p>
7156 <td class="entry_hal_version">
7160 <td class="entry_tags">
7161 <ul class="entry_tags">
7162 <li><a href="#tag_BC">BC</a></li>
7167 <tr class="entries_header">
7168 <th class="th_details" colspan="6">Details</th>
7170 <tr class="entry_cont">
7171 <td class="entry_details" colspan="6">
7172 <p>Only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> = AUTO and the lens is not fixed focus
7173 (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
7174 when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> the behavior of AF is device
7175 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
7176 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>
7177 <p>If the lens is controlled by the camera device auto-focus algorithm,<wbr/>
7178 the camera device will report the current AF status in <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>
7179 in result metadata.<wbr/></p>
7183 <tr class="entries_header">
7184 <th class="th_details" colspan="6">HAL Implementation Details</th>
7186 <tr class="entry_cont">
7187 <td class="entry_details" colspan="6">
7188 <p>When afMode is AUTO or MACRO,<wbr/> the lens must not move until an AF trigger is sent in a
7189 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
7190 up with either FOCUSED_<wbr/>LOCKED or NOT_<wbr/>FOCUSED_<wbr/>LOCKED state (see
7191 <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
7192 locked and will not move.<wbr/> If camera movement (e.<wbr/>g.<wbr/> tilting camera) causes the lens to move
7193 after the lens is locked,<wbr/> the HAL must compensate this movement appropriately such that
7194 the same focal plane remains in focus.<wbr/></p>
7195 <p>When afMode is one of the continuous auto focus modes,<wbr/> the HAL is free to start a AF
7196 scan whenever it's not locked.<wbr/> When the lens is locked after an AF trigger
7197 (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
7198 same lock behavior as above.<wbr/></p>
7199 <p>When afMode is OFF,<wbr/> the application controls focus manually.<wbr/> The accuracy of the
7200 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/>
7201 However,<wbr/> the lens must not move regardless of the camera movement for any focus distance
7202 manual control.<wbr/></p>
7203 <p>To put this in concrete terms,<wbr/> if the camera has lens elements which may move based on
7204 camera orientation or motion (e.<wbr/>g.<wbr/> due to gravity),<wbr/> then the HAL must drive the lens to
7205 remain in a fixed position invariant to the camera's orientation or motion,<wbr/> for example,<wbr/>
7206 by using accelerometer measurements in the lens control logic.<wbr/> This is a typical issue
7207 that will arise on camera modules with open-loop VCMs.<wbr/></p>
7211 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
7212 <!-- end of entry -->
7215 <tr class="entry" id="dynamic_android.control.afRegions">
7216 <td class="entry_name
7218 android.<wbr/>control.<wbr/>af<wbr/>Regions
7220 <td class="entry_type">
7221 <span class="entry_type_name">int32</span>
7222 <span class="entry_type_container">x</span>
7224 <span class="entry_type_array">
7227 <span class="entry_type_visibility"> [public as meteringRectangle]</span>
7234 </td> <!-- entry_type -->
7236 <td class="entry_description">
7237 <p>List of metering areas to use for auto-focus.<wbr/></p>
7240 <td class="entry_units">
7241 Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
7244 <td class="entry_range">
7245 <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
7246 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
7249 <td class="entry_hal_version">
7253 <td class="entry_tags">
7254 <ul class="entry_tags">
7255 <li><a href="#tag_BC">BC</a></li>
7260 <tr class="entries_header">
7261 <th class="th_details" colspan="6">Details</th>
7263 <tr class="entry_cont">
7264 <td class="entry_details" colspan="6">
7265 <p>Not available if <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a> is 0.<wbr/>
7266 Otherwise will always be present.<wbr/></p>
7267 <p>The maximum number of focus areas supported by the device is determined by the value
7268 of <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a>.<wbr/></p>
7269 <p>The coordinate system is based on the active pixel array,<wbr/>
7270 with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
7271 (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
7272 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
7273 bottom-right pixel in the active pixel array.<wbr/></p>
7274 <p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight
7275 for every pixel in the area.<wbr/> This means that a large metering area
7276 with the same weight as a smaller area will have more effect in
7277 the metering result.<wbr/> Metering areas can partially overlap and the
7278 camera device will add the weights in the overlap region.<wbr/></p>
7279 <p>The weights are relative to weights of other metering regions,<wbr/> so if only one region
7280 is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0 weight is
7282 <p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
7283 camera device.<wbr/></p>
7284 <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
7285 capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
7286 region and output only the intersection rectangle as the metering region in the result
7287 metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and
7288 not reported in the result metadata.<wbr/></p>
7292 <tr class="entries_header">
7293 <th class="th_details" colspan="6">HAL Implementation Details</th>
7295 <tr class="entry_cont">
7296 <td class="entry_details" colspan="6">
7297 <p>The HAL level representation of MeteringRectangle[] is a
7298 int[5 * area_<wbr/>count].<wbr/>
7299 Every five elements represent a metering region of
7300 (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
7301 The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
7302 exclusive on xmax and ymax.<wbr/></p>
7306 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
7307 <!-- end of entry -->
7310 <tr class="entry" id="dynamic_android.control.afTrigger">
7311 <td class="entry_name
7313 android.<wbr/>control.<wbr/>af<wbr/>Trigger
7315 <td class="entry_type">
7316 <span class="entry_type_name entry_type_name_enum">byte</span>
7318 <span class="entry_type_visibility"> [public]</span>
7321 <span class="entry_type_hwlevel">[legacy] </span>
7325 <ul class="entry_type_enum">
7327 <span class="entry_type_enum_name">IDLE (v3.2)</span>
7328 <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
7331 <span class="entry_type_enum_name">START (v3.2)</span>
7332 <span class="entry_type_enum_notes"><p>Autofocus will trigger now.<wbr/></p></span>
7335 <span class="entry_type_enum_name">CANCEL (v3.2)</span>
7336 <span class="entry_type_enum_notes"><p>Autofocus will return to its initial
7337 state,<wbr/> and cancel any currently active trigger.<wbr/></p></span>
7341 </td> <!-- entry_type -->
7343 <td class="entry_description">
7344 <p>Whether the camera device will trigger autofocus for this request.<wbr/></p>
7347 <td class="entry_units">
7350 <td class="entry_range">
7353 <td class="entry_hal_version">
7357 <td class="entry_tags">
7358 <ul class="entry_tags">
7359 <li><a href="#tag_BC">BC</a></li>
7364 <tr class="entries_header">
7365 <th class="th_details" colspan="6">Details</th>
7367 <tr class="entry_cont">
7368 <td class="entry_details" colspan="6">
7369 <p>This entry is normally set to IDLE,<wbr/> or is not
7370 included at all in the request settings.<wbr/></p>
7371 <p>When included and set to START,<wbr/> the camera device will trigger the
7372 autofocus algorithm.<wbr/> If autofocus is disabled,<wbr/> this trigger has no effect.<wbr/></p>
7373 <p>When set to CANCEL,<wbr/> the camera device will cancel any active trigger,<wbr/>
7374 and return to its initial AF state.<wbr/></p>
7375 <p>Generally,<wbr/> applications should set this entry to START or CANCEL for only a
7376 single capture,<wbr/> and then return it to IDLE (or not set at all).<wbr/> Specifying
7377 START for multiple captures in a row means restarting the AF operation over
7378 and over again.<wbr/></p>
7379 <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>
7380 <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>
7381 simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between
7382 the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a
7383 focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous
7384 trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and
7385 changes to <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>,<wbr/> for example.<wbr/></p>
7389 <tr class="entries_header">
7390 <th class="th_details" colspan="6">HAL Implementation Details</th>
7392 <tr class="entry_cont">
7393 <td class="entry_details" colspan="6">
7394 <p>The HAL must support triggering the AF trigger while an AE precapture trigger is active
7395 (and vice versa),<wbr/> or at the same time as the AE trigger.<wbr/> It is acceptable for the HAL to
7396 treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the
7397 AE trigger.<wbr/> Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/>
7398 to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p>
7402 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
7403 <!-- end of entry -->
7406 <tr class="entry" id="dynamic_android.control.afState">
7407 <td class="entry_name
7409 android.<wbr/>control.<wbr/>af<wbr/>State
7411 <td class="entry_type">
7412 <span class="entry_type_name entry_type_name_enum">byte</span>
7414 <span class="entry_type_visibility"> [public]</span>
7417 <span class="entry_type_hwlevel">[legacy] </span>
7421 <ul class="entry_type_enum">
7423 <span class="entry_type_enum_name">INACTIVE (v3.2)</span>
7424 <span class="entry_type_enum_notes"><p>AF is off or has not yet tried to scan/<wbr/>been asked
7426 <p>When a camera device is opened,<wbr/> it starts in this
7427 state.<wbr/> This is a transient state,<wbr/> the camera device may
7428 skip reporting this state in capture
7429 result.<wbr/></p></span>
7432 <span class="entry_type_enum_name">PASSIVE_SCAN (v3.2)</span>
7433 <span class="entry_type_enum_notes"><p>AF is currently performing an AF scan initiated the
7434 camera device in a continuous autofocus mode.<wbr/></p>
7435 <p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient
7436 state,<wbr/> the camera device may skip reporting this state in
7437 capture result.<wbr/></p></span>
7440 <span class="entry_type_enum_name">PASSIVE_FOCUSED (v3.2)</span>
7441 <span class="entry_type_enum_notes"><p>AF currently believes it is in focus,<wbr/> but may
7442 restart scanning at any time.<wbr/></p>
7443 <p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient
7444 state,<wbr/> the camera device may skip reporting this state in
7445 capture result.<wbr/></p></span>
7448 <span class="entry_type_enum_name">ACTIVE_SCAN (v3.2)</span>
7449 <span class="entry_type_enum_notes"><p>AF is performing an AF scan because it was
7450 triggered by AF trigger.<wbr/></p>
7451 <p>Only used by AUTO or MACRO AF modes.<wbr/> This is a transient
7452 state,<wbr/> the camera device may skip reporting this state in
7453 capture result.<wbr/></p></span>
7456 <span class="entry_type_enum_name">FOCUSED_LOCKED (v3.2)</span>
7457 <span class="entry_type_enum_notes"><p>AF believes it is focused correctly and has locked
7459 <p>This state is reached only after an explicit START AF trigger has been
7460 sent (<a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>),<wbr/> when good focus has been obtained.<wbr/></p>
7461 <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
7462 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>
7465 <span class="entry_type_enum_name">NOT_FOCUSED_LOCKED (v3.2)</span>
7466 <span class="entry_type_enum_notes"><p>AF has failed to focus successfully and has locked
7468 <p>This state is reached only after an explicit START AF trigger has been
7469 sent (<a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>),<wbr/> when good focus cannot be obtained.<wbr/></p>
7470 <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
7471 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>
7474 <span class="entry_type_enum_name">PASSIVE_UNFOCUSED (v3.2)</span>
7475 <span class="entry_type_enum_notes"><p>AF finished a passive scan without finding focus,<wbr/>
7476 and may restart scanning at any time.<wbr/></p>
7477 <p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient state,<wbr/> the camera
7478 device may skip reporting this state in capture result.<wbr/></p>
7479 <p>LEGACY camera devices do not support this state.<wbr/> When a passive
7480 scan has finished,<wbr/> it will always go to PASSIVE_<wbr/>FOCUSED.<wbr/></p></span>
7484 </td> <!-- entry_type -->
7486 <td class="entry_description">
7487 <p>Current state of auto-focus (AF) algorithm.<wbr/></p>
7490 <td class="entry_units">
7493 <td class="entry_range">
7496 <td class="entry_hal_version">
7500 <td class="entry_tags">
7504 <tr class="entries_header">
7505 <th class="th_details" colspan="6">Details</th>
7507 <tr class="entry_cont">
7508 <td class="entry_details" colspan="6">
7509 <p>Switching between or enabling AF modes (<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>) always
7510 resets the AF state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/>
7511 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
7512 the algorithm states to INACTIVE.<wbr/></p>
7513 <p>The camera device can do several state transitions between two results,<wbr/> if it is
7514 allowed by the state transition table.<wbr/> For example: INACTIVE may never actually be
7515 seen in a result.<wbr/></p>
7516 <p>The state in the result is the state for this image (in sync with this image): if
7517 AF state becomes FOCUSED,<wbr/> then the image data associated with this result should
7519 <p>Below are state transition tables for different AF modes.<wbr/></p>
7520 <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>
7524 <th align="center">State</th>
7525 <th align="center">Transition Cause</th>
7526 <th align="center">New State</th>
7527 <th align="center">Notes</th>
7532 <td align="center">INACTIVE</td>
7533 <td align="center"></td>
7534 <td align="center">INACTIVE</td>
7535 <td align="center">Never changes</td>
7539 <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>
7543 <th align="center">State</th>
7544 <th align="center">Transition Cause</th>
7545 <th align="center">New State</th>
7546 <th align="center">Notes</th>
7551 <td align="center">INACTIVE</td>
7552 <td align="center">AF_<wbr/>TRIGGER</td>
7553 <td align="center">ACTIVE_<wbr/>SCAN</td>
7554 <td align="center">Start AF sweep,<wbr/> Lens now moving</td>
7557 <td align="center">ACTIVE_<wbr/>SCAN</td>
7558 <td align="center">AF sweep done</td>
7559 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7560 <td align="center">Focused,<wbr/> Lens now locked</td>
7563 <td align="center">ACTIVE_<wbr/>SCAN</td>
7564 <td align="center">AF sweep done</td>
7565 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7566 <td align="center">Not focused,<wbr/> Lens now locked</td>
7569 <td align="center">ACTIVE_<wbr/>SCAN</td>
7570 <td align="center">AF_<wbr/>CANCEL</td>
7571 <td align="center">INACTIVE</td>
7572 <td align="center">Cancel/<wbr/>reset AF,<wbr/> Lens now locked</td>
7575 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7576 <td align="center">AF_<wbr/>CANCEL</td>
7577 <td align="center">INACTIVE</td>
7578 <td align="center">Cancel/<wbr/>reset AF</td>
7581 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7582 <td align="center">AF_<wbr/>TRIGGER</td>
7583 <td align="center">ACTIVE_<wbr/>SCAN</td>
7584 <td align="center">Start new sweep,<wbr/> Lens now moving</td>
7587 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7588 <td align="center">AF_<wbr/>CANCEL</td>
7589 <td align="center">INACTIVE</td>
7590 <td align="center">Cancel/<wbr/>reset AF</td>
7593 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7594 <td align="center">AF_<wbr/>TRIGGER</td>
7595 <td align="center">ACTIVE_<wbr/>SCAN</td>
7596 <td align="center">Start new sweep,<wbr/> Lens now moving</td>
7599 <td align="center">Any state</td>
7600 <td align="center">Mode change</td>
7601 <td align="center">INACTIVE</td>
7602 <td align="center"></td>
7606 <p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen
7607 without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that
7608 can be skipped in that manner is called a transient state.<wbr/></p>
7609 <p>For example,<wbr/> for these AF modes (AF_<wbr/>MODE_<wbr/>AUTO and AF_<wbr/>MODE_<wbr/>MACRO),<wbr/> in addition to the
7610 state transitions listed in above table,<wbr/> it is also legal for the camera device to skip
7611 one or more transient states between two results.<wbr/> See below table for examples:</p>
7615 <th align="center">State</th>
7616 <th align="center">Transition Cause</th>
7617 <th align="center">New State</th>
7618 <th align="center">Notes</th>
7623 <td align="center">INACTIVE</td>
7624 <td align="center">AF_<wbr/>TRIGGER</td>
7625 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7626 <td align="center">Focus is already good or good after a scan,<wbr/> lens is now locked.<wbr/></td>
7629 <td align="center">INACTIVE</td>
7630 <td align="center">AF_<wbr/>TRIGGER</td>
7631 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7632 <td align="center">Focus failed after a scan,<wbr/> lens is now locked.<wbr/></td>
7635 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7636 <td align="center">AF_<wbr/>TRIGGER</td>
7637 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7638 <td align="center">Focus is already good or good after a scan,<wbr/> lens is now locked.<wbr/></td>
7641 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7642 <td align="center">AF_<wbr/>TRIGGER</td>
7643 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7644 <td align="center">Focus is good after a scan,<wbr/> lens is not locked.<wbr/></td>
7648 <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>
7652 <th align="center">State</th>
7653 <th align="center">Transition Cause</th>
7654 <th align="center">New State</th>
7655 <th align="center">Notes</th>
7660 <td align="center">INACTIVE</td>
7661 <td align="center">Camera device initiates new scan</td>
7662 <td align="center">PASSIVE_<wbr/>SCAN</td>
7663 <td align="center">Start AF scan,<wbr/> Lens now moving</td>
7666 <td align="center">INACTIVE</td>
7667 <td align="center">AF_<wbr/>TRIGGER</td>
7668 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7669 <td align="center">AF state query,<wbr/> Lens now locked</td>
7672 <td align="center">PASSIVE_<wbr/>SCAN</td>
7673 <td align="center">Camera device completes current scan</td>
7674 <td align="center">PASSIVE_<wbr/>FOCUSED</td>
7675 <td align="center">End AF scan,<wbr/> Lens now locked</td>
7678 <td align="center">PASSIVE_<wbr/>SCAN</td>
7679 <td align="center">Camera device fails current scan</td>
7680 <td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7681 <td align="center">End AF scan,<wbr/> Lens now locked</td>
7684 <td align="center">PASSIVE_<wbr/>SCAN</td>
7685 <td align="center">AF_<wbr/>TRIGGER</td>
7686 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7687 <td align="center">Immediate transition,<wbr/> if focus is good.<wbr/> Lens now locked</td>
7690 <td align="center">PASSIVE_<wbr/>SCAN</td>
7691 <td align="center">AF_<wbr/>TRIGGER</td>
7692 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7693 <td align="center">Immediate transition,<wbr/> if focus is bad.<wbr/> Lens now locked</td>
7696 <td align="center">PASSIVE_<wbr/>SCAN</td>
7697 <td align="center">AF_<wbr/>CANCEL</td>
7698 <td align="center">INACTIVE</td>
7699 <td align="center">Reset lens position,<wbr/> Lens now locked</td>
7702 <td align="center">PASSIVE_<wbr/>FOCUSED</td>
7703 <td align="center">Camera device initiates new scan</td>
7704 <td align="center">PASSIVE_<wbr/>SCAN</td>
7705 <td align="center">Start AF scan,<wbr/> Lens now moving</td>
7708 <td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7709 <td align="center">Camera device initiates new scan</td>
7710 <td align="center">PASSIVE_<wbr/>SCAN</td>
7711 <td align="center">Start AF scan,<wbr/> Lens now moving</td>
7714 <td align="center">PASSIVE_<wbr/>FOCUSED</td>
7715 <td align="center">AF_<wbr/>TRIGGER</td>
7716 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7717 <td align="center">Immediate transition,<wbr/> lens now locked</td>
7720 <td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7721 <td align="center">AF_<wbr/>TRIGGER</td>
7722 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7723 <td align="center">Immediate transition,<wbr/> lens now locked</td>
7726 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7727 <td align="center">AF_<wbr/>TRIGGER</td>
7728 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7729 <td align="center">No effect</td>
7732 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7733 <td align="center">AF_<wbr/>CANCEL</td>
7734 <td align="center">INACTIVE</td>
7735 <td align="center">Restart AF scan</td>
7738 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7739 <td align="center">AF_<wbr/>TRIGGER</td>
7740 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7741 <td align="center">No effect</td>
7744 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7745 <td align="center">AF_<wbr/>CANCEL</td>
7746 <td align="center">INACTIVE</td>
7747 <td align="center">Restart AF scan</td>
7751 <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>
7755 <th align="center">State</th>
7756 <th align="center">Transition Cause</th>
7757 <th align="center">New State</th>
7758 <th align="center">Notes</th>
7763 <td align="center">INACTIVE</td>
7764 <td align="center">Camera device initiates new scan</td>
7765 <td align="center">PASSIVE_<wbr/>SCAN</td>
7766 <td align="center">Start AF scan,<wbr/> Lens now moving</td>
7769 <td align="center">INACTIVE</td>
7770 <td align="center">AF_<wbr/>TRIGGER</td>
7771 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7772 <td align="center">AF state query,<wbr/> Lens now locked</td>
7775 <td align="center">PASSIVE_<wbr/>SCAN</td>
7776 <td align="center">Camera device completes current scan</td>
7777 <td align="center">PASSIVE_<wbr/>FOCUSED</td>
7778 <td align="center">End AF scan,<wbr/> Lens now locked</td>
7781 <td align="center">PASSIVE_<wbr/>SCAN</td>
7782 <td align="center">Camera device fails current scan</td>
7783 <td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7784 <td align="center">End AF scan,<wbr/> Lens now locked</td>
7787 <td align="center">PASSIVE_<wbr/>SCAN</td>
7788 <td align="center">AF_<wbr/>TRIGGER</td>
7789 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7790 <td align="center">Eventual transition once the focus is good.<wbr/> Lens now locked</td>
7793 <td align="center">PASSIVE_<wbr/>SCAN</td>
7794 <td align="center">AF_<wbr/>TRIGGER</td>
7795 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7796 <td align="center">Eventual transition if cannot find focus.<wbr/> Lens now locked</td>
7799 <td align="center">PASSIVE_<wbr/>SCAN</td>
7800 <td align="center">AF_<wbr/>CANCEL</td>
7801 <td align="center">INACTIVE</td>
7802 <td align="center">Reset lens position,<wbr/> Lens now locked</td>
7805 <td align="center">PASSIVE_<wbr/>FOCUSED</td>
7806 <td align="center">Camera device initiates new scan</td>
7807 <td align="center">PASSIVE_<wbr/>SCAN</td>
7808 <td align="center">Start AF scan,<wbr/> Lens now moving</td>
7811 <td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7812 <td align="center">Camera device initiates new scan</td>
7813 <td align="center">PASSIVE_<wbr/>SCAN</td>
7814 <td align="center">Start AF scan,<wbr/> Lens now moving</td>
7817 <td align="center">PASSIVE_<wbr/>FOCUSED</td>
7818 <td align="center">AF_<wbr/>TRIGGER</td>
7819 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7820 <td align="center">Immediate trans.<wbr/> Lens now locked</td>
7823 <td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7824 <td align="center">AF_<wbr/>TRIGGER</td>
7825 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7826 <td align="center">Immediate trans.<wbr/> Lens now locked</td>
7829 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7830 <td align="center">AF_<wbr/>TRIGGER</td>
7831 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7832 <td align="center">No effect</td>
7835 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7836 <td align="center">AF_<wbr/>CANCEL</td>
7837 <td align="center">INACTIVE</td>
7838 <td align="center">Restart AF scan</td>
7841 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7842 <td align="center">AF_<wbr/>TRIGGER</td>
7843 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7844 <td align="center">No effect</td>
7847 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7848 <td align="center">AF_<wbr/>CANCEL</td>
7849 <td align="center">INACTIVE</td>
7850 <td align="center">Restart AF scan</td>
7854 <p>When switch between AF_<wbr/>MODE_<wbr/>CONTINUOUS_<wbr/>* (CAF modes) and AF_<wbr/>MODE_<wbr/>AUTO/<wbr/>AF_<wbr/>MODE_<wbr/>MACRO
7855 (AUTO modes),<wbr/> the initial INACTIVE or PASSIVE_<wbr/>SCAN states may be skipped by the
7856 camera device.<wbr/> When a trigger is included in a mode switch request,<wbr/> the trigger
7857 will be evaluated in the context of the new mode in the request.<wbr/>
7858 See below table for examples:</p>
7862 <th align="center">State</th>
7863 <th align="center">Transition Cause</th>
7864 <th align="center">New State</th>
7865 <th align="center">Notes</th>
7870 <td align="center">any state</td>
7871 <td align="center">CAF-->AUTO mode switch</td>
7872 <td align="center">INACTIVE</td>
7873 <td align="center">Mode switch without trigger,<wbr/> initial state must be INACTIVE</td>
7876 <td align="center">any state</td>
7877 <td align="center">CAF-->AUTO mode switch with AF_<wbr/>TRIGGER</td>
7878 <td align="center">trigger-reachable states from INACTIVE</td>
7879 <td align="center">Mode switch with trigger,<wbr/> INACTIVE is skipped</td>
7882 <td align="center">any state</td>
7883 <td align="center">AUTO-->CAF mode switch</td>
7884 <td align="center">passively reachable states from INACTIVE</td>
7885 <td align="center">Mode switch without trigger,<wbr/> passive transient state is skipped</td>
7893 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
7894 <!-- end of entry -->
7897 <tr class="entry" id="dynamic_android.control.afTriggerId">
7898 <td class="entry_name
7899 entry_name_deprecated
7901 android.<wbr/>control.<wbr/>af<wbr/>Trigger<wbr/>Id
7903 <td class="entry_type">
7904 <span class="entry_type_name">int32</span>
7906 <span class="entry_type_visibility"> [system]</span>
7910 <span class="entry_type_deprecated">[deprecated] </span>
7914 </td> <!-- entry_type -->
7916 <td class="entry_description">
7917 <p>The ID sent with the latest
7918 CAMERA2_<wbr/>TRIGGER_<wbr/>AUTOFOCUS call</p>
7921 <td class="entry_units">
7924 <td class="entry_range">
7925 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
7928 <td class="entry_hal_version">
7932 <td class="entry_tags">
7936 <tr class="entries_header">
7937 <th class="th_details" colspan="6">Details</th>
7939 <tr class="entry_cont">
7940 <td class="entry_details" colspan="6">
7941 <p>Must be 0 if no CAMERA2_<wbr/>TRIGGER_<wbr/>AUTOFOCUS trigger
7942 received yet by HAL.<wbr/> Always updated even if AF algorithm
7943 ignores the trigger</p>
7948 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
7949 <!-- end of entry -->
7952 <tr class="entry" id="dynamic_android.control.awbLock">
7953 <td class="entry_name
7955 android.<wbr/>control.<wbr/>awb<wbr/>Lock
7957 <td class="entry_type">
7958 <span class="entry_type_name entry_type_name_enum">byte</span>
7960 <span class="entry_type_visibility"> [public as boolean]</span>
7963 <span class="entry_type_hwlevel">[legacy] </span>
7967 <ul class="entry_type_enum">
7969 <span class="entry_type_enum_name">OFF (v3.2)</span>
7970 <span class="entry_type_enum_notes"><p>Auto-white balance lock is disabled; the AWB
7971 algorithm is free to update its parameters if in AUTO
7972 mode.<wbr/></p></span>
7975 <span class="entry_type_enum_name">ON (v3.2)</span>
7976 <span class="entry_type_enum_notes"><p>Auto-white balance lock is enabled; the AWB
7977 algorithm will not update its parameters while the lock
7978 is active.<wbr/></p></span>
7982 </td> <!-- entry_type -->
7984 <td class="entry_description">
7985 <p>Whether auto-white balance (AWB) is currently locked to its
7986 latest calculated values.<wbr/></p>
7989 <td class="entry_units">
7992 <td class="entry_range">
7995 <td class="entry_hal_version">
7999 <td class="entry_tags">
8000 <ul class="entry_tags">
8001 <li><a href="#tag_BC">BC</a></li>
8006 <tr class="entries_header">
8007 <th class="th_details" colspan="6">Details</th>
8009 <tr class="entry_cont">
8010 <td class="entry_details" colspan="6">
8011 <p>When set to <code>true</code> (ON),<wbr/> the AWB algorithm is locked to its latest parameters,<wbr/>
8012 and will not change color balance settings until the lock is set to <code>false</code> (OFF).<wbr/></p>
8013 <p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that
8014 get locked do not necessarily correspond to the settings that were present in the
8015 latest capture result received from the camera device,<wbr/> since additional captures
8016 and AWB updates may have occurred even before the result was sent out.<wbr/> If an
8017 application is switching between automatic and manual control and wishes to eliminate
8018 any flicker during the switch,<wbr/> the following procedure is recommended:</p>
8020 <li>Starting in auto-AWB mode:</li>
8022 <li>Wait for the first result to be output that has the AWB locked</li>
8023 <li>Copy AWB settings from that result into a request,<wbr/> set the request to manual AWB</li>
8024 <li>Submit the capture request,<wbr/> proceed to run manual AWB as desired.<wbr/></li>
8026 <p>Note that AWB lock is only meaningful when
8027 <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is in the AUTO mode; in other modes,<wbr/>
8028 AWB is already fixed to a specific setting.<wbr/></p>
8029 <p>Some LEGACY devices may not support ON; the value is then overridden to OFF.<wbr/></p>
8034 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
8035 <!-- end of entry -->
8038 <tr class="entry" id="dynamic_android.control.awbMode">
8039 <td class="entry_name
8041 android.<wbr/>control.<wbr/>awb<wbr/>Mode
8043 <td class="entry_type">
8044 <span class="entry_type_name entry_type_name_enum">byte</span>
8046 <span class="entry_type_visibility"> [public]</span>
8049 <span class="entry_type_hwlevel">[legacy] </span>
8053 <ul class="entry_type_enum">
8055 <span class="entry_type_enum_name">OFF (v3.2)</span>
8056 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled.<wbr/></p>
8057 <p>The application-selected color transform matrix
8058 (<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>) and gains
8059 (<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a>) are used by the camera
8060 device for manual white balance control.<wbr/></p></span>
8063 <span class="entry_type_enum_name">AUTO (v3.2)</span>
8064 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is active.<wbr/></p>
8065 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
8066 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
8067 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
8068 values used by the camera device for the transform and gains
8069 will be available in the capture result for this request.<wbr/></p></span>
8072 <span class="entry_type_enum_name">INCANDESCENT (v3.2)</span>
8073 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
8074 the camera device uses incandescent light as the assumed scene
8075 illumination for white balance.<wbr/></p>
8076 <p>While the exact white balance transforms are up to the
8077 camera device,<wbr/> they will approximately match the CIE
8078 standard illuminant A.<wbr/></p>
8079 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
8080 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
8081 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
8082 values used by the camera device for the transform and gains
8083 will be available in the capture result for this request.<wbr/></p></span>
8086 <span class="entry_type_enum_name">FLUORESCENT (v3.2)</span>
8087 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
8088 the camera device uses fluorescent light as the assumed scene
8089 illumination for white balance.<wbr/></p>
8090 <p>While the exact white balance transforms are up to the
8091 camera device,<wbr/> they will approximately match the CIE
8092 standard illuminant F2.<wbr/></p>
8093 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
8094 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
8095 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
8096 values used by the camera device for the transform and gains
8097 will be available in the capture result for this request.<wbr/></p></span>
8100 <span class="entry_type_enum_name">WARM_FLUORESCENT (v3.2)</span>
8101 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
8102 the camera device uses warm fluorescent light as the assumed scene
8103 illumination for white balance.<wbr/></p>
8104 <p>While the exact white balance transforms are up to the
8105 camera device,<wbr/> they will approximately match the CIE
8106 standard illuminant F4.<wbr/></p>
8107 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
8108 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
8109 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
8110 values used by the camera device for the transform and gains
8111 will be available in the capture result for this request.<wbr/></p></span>
8114 <span class="entry_type_enum_name">DAYLIGHT (v3.2)</span>
8115 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
8116 the camera device uses daylight light as the assumed scene
8117 illumination for white balance.<wbr/></p>
8118 <p>While the exact white balance transforms are up to the
8119 camera device,<wbr/> they will approximately match the CIE
8120 standard illuminant D65.<wbr/></p>
8121 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
8122 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
8123 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
8124 values used by the camera device for the transform and gains
8125 will be available in the capture result for this request.<wbr/></p></span>
8128 <span class="entry_type_enum_name">CLOUDY_DAYLIGHT (v3.2)</span>
8129 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
8130 the camera device uses cloudy daylight light as the assumed scene
8131 illumination for white balance.<wbr/></p>
8132 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
8133 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
8134 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
8135 values used by the camera device for the transform and gains
8136 will be available in the capture result for this request.<wbr/></p></span>
8139 <span class="entry_type_enum_name">TWILIGHT (v3.2)</span>
8140 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
8141 the camera device uses twilight light as the assumed scene
8142 illumination for white balance.<wbr/></p>
8143 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
8144 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
8145 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
8146 values used by the camera device for the transform and gains
8147 will be available in the capture result for this request.<wbr/></p></span>
8150 <span class="entry_type_enum_name">SHADE (v3.2)</span>
8151 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
8152 the camera device uses shade light as the assumed scene
8153 illumination for white balance.<wbr/></p>
8154 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
8155 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
8156 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
8157 values used by the camera device for the transform and gains
8158 will be available in the capture result for this request.<wbr/></p></span>
8162 </td> <!-- entry_type -->
8164 <td class="entry_description">
8165 <p>Whether auto-white balance (AWB) is currently setting the color
8166 transform fields,<wbr/> and what its illumination target
8170 <td class="entry_units">
8173 <td class="entry_range">
8174 <p><a href="#static_android.control.awbAvailableModes">android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes</a></p>
8177 <td class="entry_hal_version">
8181 <td class="entry_tags">
8182 <ul class="entry_tags">
8183 <li><a href="#tag_BC">BC</a></li>
8188 <tr class="entries_header">
8189 <th class="th_details" colspan="6">Details</th>
8191 <tr class="entry_cont">
8192 <td class="entry_details" colspan="6">
8193 <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is AUTO.<wbr/></p>
8194 <p>When set to the ON mode,<wbr/> the camera device's auto-white balance
8195 routine is enabled,<wbr/> overriding the application's selected
8196 <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
8197 <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>
8198 is OFF,<wbr/> the behavior of AWB is device dependent.<wbr/> It is recommened to
8199 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
8200 setting AE mode to OFF.<wbr/></p>
8201 <p>When set to the OFF mode,<wbr/> the camera device's auto-white balance
8202 routine is disabled.<wbr/> The application manually controls the white
8203 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>
8204 and <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/></p>
8205 <p>When set to any other modes,<wbr/> the camera device's auto-white
8206 balance routine is disabled.<wbr/> The camera device uses each
8207 particular illumination target for white balance
8208 adjustment.<wbr/> The application's values for
8209 <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>,<wbr/>
8210 <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
8211 <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> are ignored.<wbr/></p>
8216 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
8217 <!-- end of entry -->
8220 <tr class="entry" id="dynamic_android.control.awbRegions">
8221 <td class="entry_name
8223 android.<wbr/>control.<wbr/>awb<wbr/>Regions
8225 <td class="entry_type">
8226 <span class="entry_type_name">int32</span>
8227 <span class="entry_type_container">x</span>
8229 <span class="entry_type_array">
8232 <span class="entry_type_visibility"> [public as meteringRectangle]</span>
8239 </td> <!-- entry_type -->
8241 <td class="entry_description">
8242 <p>List of metering areas to use for auto-white-balance illuminant
8243 estimation.<wbr/></p>
8246 <td class="entry_units">
8247 Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
8250 <td class="entry_range">
8251 <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
8252 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
8255 <td class="entry_hal_version">
8259 <td class="entry_tags">
8260 <ul class="entry_tags">
8261 <li><a href="#tag_BC">BC</a></li>
8266 <tr class="entries_header">
8267 <th class="th_details" colspan="6">Details</th>
8269 <tr class="entry_cont">
8270 <td class="entry_details" colspan="6">
8271 <p>Not available if <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a> is 0.<wbr/>
8272 Otherwise will always be present.<wbr/></p>
8273 <p>The maximum number of regions supported by the device is determined by the value
8274 of <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a>.<wbr/></p>
8275 <p>The coordinate system is based on the active pixel array,<wbr/>
8276 with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
8277 (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
8278 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
8279 bottom-right pixel in the active pixel array.<wbr/></p>
8280 <p>The weight must range from 0 to 1000,<wbr/> and represents a weight
8281 for every pixel in the area.<wbr/> This means that a large metering area
8282 with the same weight as a smaller area will have more effect in
8283 the metering result.<wbr/> Metering areas can partially overlap and the
8284 camera device will add the weights in the overlap region.<wbr/></p>
8285 <p>The weights are relative to weights of other white balance metering regions,<wbr/> so if
8286 only one region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with
8287 0 weight is ignored.<wbr/></p>
8288 <p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
8289 camera device.<wbr/></p>
8290 <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
8291 capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
8292 region and output only the intersection rectangle as the metering region in the result
8293 metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and
8294 not reported in the result metadata.<wbr/></p>
8298 <tr class="entries_header">
8299 <th class="th_details" colspan="6">HAL Implementation Details</th>
8301 <tr class="entry_cont">
8302 <td class="entry_details" colspan="6">
8303 <p>The HAL level representation of MeteringRectangle[] is a
8304 int[5 * area_<wbr/>count].<wbr/>
8305 Every five elements represent a metering region of
8306 (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
8307 The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
8308 exclusive on xmax and ymax.<wbr/></p>
8312 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
8313 <!-- end of entry -->
8316 <tr class="entry" id="dynamic_android.control.captureIntent">
8317 <td class="entry_name
8319 android.<wbr/>control.<wbr/>capture<wbr/>Intent
8321 <td class="entry_type">
8322 <span class="entry_type_name entry_type_name_enum">byte</span>
8324 <span class="entry_type_visibility"> [public]</span>
8327 <span class="entry_type_hwlevel">[legacy] </span>
8331 <ul class="entry_type_enum">
8333 <span class="entry_type_enum_name">CUSTOM (v3.2)</span>
8334 <span class="entry_type_enum_notes"><p>The goal of this request doesn't fall into the other
8335 categories.<wbr/> The camera device will default to preview-like
8336 behavior.<wbr/></p></span>
8339 <span class="entry_type_enum_name">PREVIEW (v3.2)</span>
8340 <span class="entry_type_enum_notes"><p>This request is for a preview-like use case.<wbr/></p>
8341 <p>The precapture trigger may be used to start off a metering
8342 w/<wbr/>flash sequence.<wbr/></p></span>
8345 <span class="entry_type_enum_name">STILL_CAPTURE (v3.2)</span>
8346 <span class="entry_type_enum_notes"><p>This request is for a still capture-type
8348 <p>If the flash unit is under automatic control,<wbr/> it may fire as needed.<wbr/></p></span>
8351 <span class="entry_type_enum_name">VIDEO_RECORD (v3.2)</span>
8352 <span class="entry_type_enum_notes"><p>This request is for a video recording
8353 use case.<wbr/></p></span>
8356 <span class="entry_type_enum_name">VIDEO_SNAPSHOT (v3.2)</span>
8357 <span class="entry_type_enum_notes"><p>This request is for a video snapshot (still
8358 image while recording video) use case.<wbr/></p>
8359 <p>The camera device should take the highest-quality image
8360 possible (given the other settings) without disrupting the
8361 frame rate of video recording.<wbr/> </p></span>
8364 <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span>
8365 <span class="entry_type_enum_notes"><p>This request is for a ZSL usecase; the
8366 application will stream full-resolution images and
8367 reprocess one or several later for a final
8368 capture.<wbr/></p></span>
8371 <span class="entry_type_enum_name">MANUAL (v3.2)</span>
8372 <span class="entry_type_enum_notes"><p>This request is for manual capture use case where
8373 the applications want to directly control the capture parameters.<wbr/></p>
8374 <p>For example,<wbr/> the application may wish to manually control
8375 <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>
8378 <span class="entry_type_enum_name">MOTION_TRACKING (v3.3)</span>
8379 <span class="entry_type_enum_notes"><p>This request is for a motion tracking use case,<wbr/> where
8380 the application will use camera and inertial sensor data to
8381 locate and track objects in the world.<wbr/></p>
8382 <p>The camera device auto-exposure routine will limit the exposure time
8383 of the camera to no more than 20 milliseconds,<wbr/> to minimize motion blur.<wbr/></p></span>
8387 </td> <!-- entry_type -->
8389 <td class="entry_description">
8390 <p>Information to the camera device 3A (auto-exposure,<wbr/>
8391 auto-focus,<wbr/> auto-white balance) routines about the purpose
8392 of this capture,<wbr/> to help the camera device to decide optimal 3A
8396 <td class="entry_units">
8399 <td class="entry_range">
8402 <td class="entry_hal_version">
8406 <td class="entry_tags">
8407 <ul class="entry_tags">
8408 <li><a href="#tag_BC">BC</a></li>
8413 <tr class="entries_header">
8414 <th class="th_details" colspan="6">Details</th>
8416 <tr class="entry_cont">
8417 <td class="entry_details" colspan="6">
8418 <p>This control (except for MANUAL) is only effective if
8419 <code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF</code> and any 3A routine is active.<wbr/></p>
8420 <p>All intents are supported by all devices,<wbr/> except that:
8421 * ZERO_<wbr/>SHUTTER_<wbr/>LAG will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
8422 PRIVATE_<wbr/>REPROCESSING or YUV_<wbr/>REPROCESSING.<wbr/>
8423 * MANUAL will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
8424 MANUAL_<wbr/>SENSOR.<wbr/>
8425 * MOTION_<wbr/>TRACKING will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
8426 MOTION_<wbr/>TRACKING.<wbr/></p>
8431 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
8432 <!-- end of entry -->
8435 <tr class="entry" id="dynamic_android.control.awbState">
8436 <td class="entry_name
8438 android.<wbr/>control.<wbr/>awb<wbr/>State
8440 <td class="entry_type">
8441 <span class="entry_type_name entry_type_name_enum">byte</span>
8443 <span class="entry_type_visibility"> [public]</span>
8446 <span class="entry_type_hwlevel">[limited] </span>
8450 <ul class="entry_type_enum">
8452 <span class="entry_type_enum_name">INACTIVE (v3.2)</span>
8453 <span class="entry_type_enum_notes"><p>AWB is not in auto mode,<wbr/> or has not yet started metering.<wbr/></p>
8454 <p>When a camera device is opened,<wbr/> it starts in this
8455 state.<wbr/> This is a transient state,<wbr/> the camera device may
8456 skip reporting this state in capture
8457 result.<wbr/></p></span>
8460 <span class="entry_type_enum_name">SEARCHING (v3.2)</span>
8461 <span class="entry_type_enum_notes"><p>AWB doesn't yet have a good set of control
8462 values for the current scene.<wbr/></p>
8463 <p>This is a transient state,<wbr/> the camera device
8464 may skip reporting this state in capture result.<wbr/></p></span>
8467 <span class="entry_type_enum_name">CONVERGED (v3.2)</span>
8468 <span class="entry_type_enum_notes"><p>AWB has a good set of control values for the
8469 current scene.<wbr/></p></span>
8472 <span class="entry_type_enum_name">LOCKED (v3.2)</span>
8473 <span class="entry_type_enum_notes"><p>AWB has been locked.<wbr/></p></span>
8477 </td> <!-- entry_type -->
8479 <td class="entry_description">
8480 <p>Current state of auto-white balance (AWB) algorithm.<wbr/></p>
8483 <td class="entry_units">
8486 <td class="entry_range">
8489 <td class="entry_hal_version">
8493 <td class="entry_tags">
8497 <tr class="entries_header">
8498 <th class="th_details" colspan="6">Details</th>
8500 <tr class="entry_cont">
8501 <td class="entry_details" colspan="6">
8502 <p>Switching between or enabling AWB modes (<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>) always
8503 resets the AWB state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/>
8504 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
8505 the algorithm states to INACTIVE.<wbr/></p>
8506 <p>The camera device can do several state transitions between two results,<wbr/> if it is
8507 allowed by the state transition table.<wbr/> So INACTIVE may never actually be seen in
8509 <p>The state in the result is the state for this image (in sync with this image): if
8510 AWB state becomes CONVERGED,<wbr/> then the image data associated with this result should
8511 be good to use.<wbr/></p>
8512 <p>Below are state transition tables for different AWB modes.<wbr/></p>
8513 <p>When <code><a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> != AWB_<wbr/>MODE_<wbr/>AUTO</code>:</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"></td>
8527 <td align="center">INACTIVE</td>
8528 <td align="center">Camera device auto white balance algorithm is disabled</td>
8532 <p>When <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is AWB_<wbr/>MODE_<wbr/>AUTO:</p>
8536 <th align="center">State</th>
8537 <th align="center">Transition Cause</th>
8538 <th align="center">New State</th>
8539 <th align="center">Notes</th>
8544 <td align="center">INACTIVE</td>
8545 <td align="center">Camera device initiates AWB scan</td>
8546 <td align="center">SEARCHING</td>
8547 <td align="center">Values changing</td>
8550 <td align="center">INACTIVE</td>
8551 <td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td>
8552 <td align="center">LOCKED</td>
8553 <td align="center">Values locked</td>
8556 <td align="center">SEARCHING</td>
8557 <td align="center">Camera device finishes AWB scan</td>
8558 <td align="center">CONVERGED</td>
8559 <td align="center">Good values,<wbr/> not changing</td>
8562 <td align="center">SEARCHING</td>
8563 <td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td>
8564 <td align="center">LOCKED</td>
8565 <td align="center">Values locked</td>
8568 <td align="center">CONVERGED</td>
8569 <td align="center">Camera device initiates AWB scan</td>
8570 <td align="center">SEARCHING</td>
8571 <td align="center">Values changing</td>
8574 <td align="center">CONVERGED</td>
8575 <td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td>
8576 <td align="center">LOCKED</td>
8577 <td align="center">Values locked</td>
8580 <td align="center">LOCKED</td>
8581 <td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is OFF</td>
8582 <td align="center">SEARCHING</td>
8583 <td align="center">Values not good after unlock</td>
8587 <p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen
8588 without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that
8589 can be skipped in that manner is called a transient state.<wbr/></p>
8590 <p>For example,<wbr/> for this AWB mode (AWB_<wbr/>MODE_<wbr/>AUTO),<wbr/> in addition to the state transitions
8591 listed in above table,<wbr/> it is also legal for the camera device to skip one or more
8592 transient states between two results.<wbr/> See below table for examples:</p>
8596 <th align="center">State</th>
8597 <th align="center">Transition Cause</th>
8598 <th align="center">New State</th>
8599 <th align="center">Notes</th>
8604 <td align="center">INACTIVE</td>
8605 <td align="center">Camera device finished AWB scan</td>
8606 <td align="center">CONVERGED</td>
8607 <td align="center">Values are already good,<wbr/> transient states are skipped by camera device.<wbr/></td>
8610 <td align="center">LOCKED</td>
8611 <td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is OFF</td>
8612 <td align="center">CONVERGED</td>
8613 <td align="center">Values good after unlock,<wbr/> transient states are skipped by camera device.<wbr/></td>
8621 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
8622 <!-- end of entry -->
8625 <tr class="entry" id="dynamic_android.control.effectMode">
8626 <td class="entry_name
8628 android.<wbr/>control.<wbr/>effect<wbr/>Mode
8630 <td class="entry_type">
8631 <span class="entry_type_name entry_type_name_enum">byte</span>
8633 <span class="entry_type_visibility"> [public]</span>
8636 <span class="entry_type_hwlevel">[legacy] </span>
8640 <ul class="entry_type_enum">
8642 <span class="entry_type_enum_name">OFF (v3.2)</span>
8643 <span class="entry_type_enum_notes"><p>No color effect will be applied.<wbr/></p></span>
8646 <span class="entry_type_enum_name">MONO (v3.2)</span>
8647 <span class="entry_type_enum_optional">[optional]</span>
8648 <span class="entry_type_enum_notes"><p>A "monocolor" effect where the image is mapped into
8649 a single color.<wbr/></p>
8650 <p>This will typically be grayscale.<wbr/></p></span>
8653 <span class="entry_type_enum_name">NEGATIVE (v3.2)</span>
8654 <span class="entry_type_enum_optional">[optional]</span>
8655 <span class="entry_type_enum_notes"><p>A "photo-negative" effect where the image's colors
8656 are inverted.<wbr/></p></span>
8659 <span class="entry_type_enum_name">SOLARIZE (v3.2)</span>
8660 <span class="entry_type_enum_optional">[optional]</span>
8661 <span class="entry_type_enum_notes"><p>A "solarisation" effect (Sabattier effect) where the
8662 image is wholly or partially reversed in
8663 tone.<wbr/></p></span>
8666 <span class="entry_type_enum_name">SEPIA (v3.2)</span>
8667 <span class="entry_type_enum_optional">[optional]</span>
8668 <span class="entry_type_enum_notes"><p>A "sepia" effect where the image is mapped into warm
8669 gray,<wbr/> red,<wbr/> and brown tones.<wbr/></p></span>
8672 <span class="entry_type_enum_name">POSTERIZE (v3.2)</span>
8673 <span class="entry_type_enum_optional">[optional]</span>
8674 <span class="entry_type_enum_notes"><p>A "posterization" effect where the image uses
8675 discrete regions of tone rather than a continuous
8676 gradient of tones.<wbr/></p></span>
8679 <span class="entry_type_enum_name">WHITEBOARD (v3.2)</span>
8680 <span class="entry_type_enum_optional">[optional]</span>
8681 <span class="entry_type_enum_notes"><p>A "whiteboard" effect where the image is typically displayed
8682 as regions of white,<wbr/> with black or grey details.<wbr/></p></span>
8685 <span class="entry_type_enum_name">BLACKBOARD (v3.2)</span>
8686 <span class="entry_type_enum_optional">[optional]</span>
8687 <span class="entry_type_enum_notes"><p>A "blackboard" effect where the image is typically displayed
8688 as regions of black,<wbr/> with white or grey details.<wbr/></p></span>
8691 <span class="entry_type_enum_name">AQUA (v3.2)</span>
8692 <span class="entry_type_enum_optional">[optional]</span>
8693 <span class="entry_type_enum_notes"><p>An "aqua" effect where a blue hue is added to the image.<wbr/></p></span>
8697 </td> <!-- entry_type -->
8699 <td class="entry_description">
8700 <p>A special color effect to apply.<wbr/></p>
8703 <td class="entry_units">
8706 <td class="entry_range">
8707 <p><a href="#static_android.control.availableEffects">android.<wbr/>control.<wbr/>available<wbr/>Effects</a></p>
8710 <td class="entry_hal_version">
8714 <td class="entry_tags">
8715 <ul class="entry_tags">
8716 <li><a href="#tag_BC">BC</a></li>
8721 <tr class="entries_header">
8722 <th class="th_details" colspan="6">Details</th>
8724 <tr class="entry_cont">
8725 <td class="entry_details" colspan="6">
8726 <p>When this mode is set,<wbr/> a color effect will be applied
8727 to images produced by the camera device.<wbr/> The interpretation
8728 and implementation of these color effects is left to the
8729 implementor of the camera device,<wbr/> and should not be
8730 depended on to be consistent (or present) across all
8736 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
8737 <!-- end of entry -->
8740 <tr class="entry" id="dynamic_android.control.mode">
8741 <td class="entry_name
8743 android.<wbr/>control.<wbr/>mode
8745 <td class="entry_type">
8746 <span class="entry_type_name entry_type_name_enum">byte</span>
8748 <span class="entry_type_visibility"> [public]</span>
8751 <span class="entry_type_hwlevel">[legacy] </span>
8755 <ul class="entry_type_enum">
8757 <span class="entry_type_enum_name">OFF (v3.2)</span>
8758 <span class="entry_type_enum_notes"><p>Full application control of pipeline.<wbr/></p>
8759 <p>All control by the device's metering and focusing (3A)
8760 routines is disabled,<wbr/> and no other settings in
8761 android.<wbr/>control.<wbr/>* have any effect,<wbr/> except that
8762 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> may be used by the camera
8763 device to select post-processing values for processing
8764 blocks that do not allow for manual control,<wbr/> or are not
8765 exposed by the camera API.<wbr/></p>
8766 <p>However,<wbr/> the camera device's 3A routines may continue to
8767 collect statistics and update their internal state so that
8768 when control is switched to AUTO mode,<wbr/> good control values
8769 can be immediately applied.<wbr/></p></span>
8772 <span class="entry_type_enum_name">AUTO (v3.2)</span>
8773 <span class="entry_type_enum_notes"><p>Use settings for each individual 3A routine.<wbr/></p>
8774 <p>Manual control of capture parameters is disabled.<wbr/> All
8775 controls in android.<wbr/>control.<wbr/>* besides sceneMode take
8776 effect.<wbr/></p></span>
8779 <span class="entry_type_enum_name">USE_SCENE_MODE (v3.2)</span>
8780 <span class="entry_type_enum_optional">[optional]</span>
8781 <span class="entry_type_enum_notes"><p>Use a specific scene mode.<wbr/></p>
8782 <p>Enabling this disables control.<wbr/>aeMode,<wbr/> control.<wbr/>awbMode and
8783 control.<wbr/>afMode controls; the camera device will ignore
8784 those settings while USE_<wbr/>SCENE_<wbr/>MODE is active (except for
8785 FACE_<wbr/>PRIORITY scene mode).<wbr/> Other control entries are still active.<wbr/>
8786 This setting can only be used if scene mode is supported (i.<wbr/>e.<wbr/>
8787 <a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a>
8788 contain some modes other than DISABLED).<wbr/></p></span>
8791 <span class="entry_type_enum_name">OFF_KEEP_STATE (v3.2)</span>
8792 <span class="entry_type_enum_optional">[optional]</span>
8793 <span class="entry_type_enum_notes"><p>Same as OFF mode,<wbr/> except that this capture will not be
8794 used by camera device background auto-exposure,<wbr/> auto-white balance and
8795 auto-focus algorithms (3A) to update their statistics.<wbr/></p>
8796 <p>Specifically,<wbr/> the 3A routines are locked to the last
8797 values set from a request with AUTO,<wbr/> OFF,<wbr/> or
8798 USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> and any statistics or state updates
8799 collected from manual captures with OFF_<wbr/>KEEP_<wbr/>STATE will be
8800 discarded by the camera device.<wbr/></p></span>
8804 </td> <!-- entry_type -->
8806 <td class="entry_description">
8807 <p>Overall mode of 3A (auto-exposure,<wbr/> auto-white-balance,<wbr/> auto-focus) control
8811 <td class="entry_units">
8814 <td class="entry_range">
8815 <p><a href="#static_android.control.availableModes">android.<wbr/>control.<wbr/>available<wbr/>Modes</a></p>
8818 <td class="entry_hal_version">
8822 <td class="entry_tags">
8823 <ul class="entry_tags">
8824 <li><a href="#tag_BC">BC</a></li>
8829 <tr class="entries_header">
8830 <th class="th_details" colspan="6">Details</th>
8832 <tr class="entry_cont">
8833 <td class="entry_details" colspan="6">
8834 <p>This is a top-level 3A control switch.<wbr/> When set to OFF,<wbr/> all 3A control
8835 by the camera device is disabled.<wbr/> The application must set the fields for
8836 capture parameters itself.<wbr/></p>
8837 <p>When set to AUTO,<wbr/> the individual algorithm controls in
8838 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>
8839 <p>When set to USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> the individual controls in
8840 android.<wbr/>control.<wbr/>* are mostly disabled,<wbr/> and the camera device
8841 implements one of the scene mode settings (such as ACTION,<wbr/>
8842 SUNSET,<wbr/> or PARTY) as it wishes.<wbr/> The camera device scene mode
8843 3A settings are provided by <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">capture results</a>.<wbr/></p>
8844 <p>When set to OFF_<wbr/>KEEP_<wbr/>STATE,<wbr/> it is similar to OFF mode,<wbr/> the only difference
8845 is that this frame will not be used by camera device background 3A statistics
8846 update,<wbr/> as if this frame is never captured.<wbr/> This mode can be used in the scenario
8847 where the application doesn't want a 3A manual control capture to affect
8848 the subsequent auto 3A capture results.<wbr/></p>
8853 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
8854 <!-- end of entry -->
8857 <tr class="entry" id="dynamic_android.control.sceneMode">
8858 <td class="entry_name
8860 android.<wbr/>control.<wbr/>scene<wbr/>Mode
8862 <td class="entry_type">
8863 <span class="entry_type_name entry_type_name_enum">byte</span>
8865 <span class="entry_type_visibility"> [public]</span>
8868 <span class="entry_type_hwlevel">[legacy] </span>
8872 <ul class="entry_type_enum">
8874 <span class="entry_type_enum_name">DISABLED (v3.2)</span>
8875 <span class="entry_type_enum_value">0</span>
8876 <span class="entry_type_enum_notes"><p>Indicates that no scene modes are set for a given capture request.<wbr/></p></span>
8879 <span class="entry_type_enum_name">FACE_PRIORITY (v3.2)</span>
8880 <span class="entry_type_enum_notes"><p>If face detection support exists,<wbr/> use face
8881 detection data for auto-focus,<wbr/> auto-white balance,<wbr/> and
8882 auto-exposure routines.<wbr/></p>
8883 <p>If face detection statistics are disabled
8884 (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/>
8885 this should still operate correctly (but will not return
8886 face detection statistics to the framework).<wbr/></p>
8887 <p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
8888 <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>
8889 remain active when FACE_<wbr/>PRIORITY is set.<wbr/></p></span>
8892 <span class="entry_type_enum_name">ACTION (v3.2)</span>
8893 <span class="entry_type_enum_optional">[optional]</span>
8894 <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving objects.<wbr/></p>
8895 <p>Similar to SPORTS.<wbr/></p></span>
8898 <span class="entry_type_enum_name">PORTRAIT (v3.2)</span>
8899 <span class="entry_type_enum_optional">[optional]</span>
8900 <span class="entry_type_enum_notes"><p>Optimized for still photos of people.<wbr/></p></span>
8903 <span class="entry_type_enum_name">LANDSCAPE (v3.2)</span>
8904 <span class="entry_type_enum_optional">[optional]</span>
8905 <span class="entry_type_enum_notes"><p>Optimized for photos of distant macroscopic objects.<wbr/></p></span>
8908 <span class="entry_type_enum_name">NIGHT (v3.2)</span>
8909 <span class="entry_type_enum_optional">[optional]</span>
8910 <span class="entry_type_enum_notes"><p>Optimized for low-light settings.<wbr/></p></span>
8913 <span class="entry_type_enum_name">NIGHT_PORTRAIT (v3.2)</span>
8914 <span class="entry_type_enum_optional">[optional]</span>
8915 <span class="entry_type_enum_notes"><p>Optimized for still photos of people in low-light
8916 settings.<wbr/></p></span>
8919 <span class="entry_type_enum_name">THEATRE (v3.2)</span>
8920 <span class="entry_type_enum_optional">[optional]</span>
8921 <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings where flash must
8922 remain off.<wbr/></p></span>
8925 <span class="entry_type_enum_name">BEACH (v3.2)</span>
8926 <span class="entry_type_enum_optional">[optional]</span>
8927 <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor beach settings.<wbr/></p></span>
8930 <span class="entry_type_enum_name">SNOW (v3.2)</span>
8931 <span class="entry_type_enum_optional">[optional]</span>
8932 <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor settings containing snow.<wbr/></p></span>
8935 <span class="entry_type_enum_name">SUNSET (v3.2)</span>
8936 <span class="entry_type_enum_optional">[optional]</span>
8937 <span class="entry_type_enum_notes"><p>Optimized for scenes of the setting sun.<wbr/></p></span>
8940 <span class="entry_type_enum_name">STEADYPHOTO (v3.2)</span>
8941 <span class="entry_type_enum_optional">[optional]</span>
8942 <span class="entry_type_enum_notes"><p>Optimized to avoid blurry photos due to small amounts of
8943 device motion (for example: due to hand shake).<wbr/></p></span>
8946 <span class="entry_type_enum_name">FIREWORKS (v3.2)</span>
8947 <span class="entry_type_enum_optional">[optional]</span>
8948 <span class="entry_type_enum_notes"><p>Optimized for nighttime photos of fireworks.<wbr/></p></span>
8951 <span class="entry_type_enum_name">SPORTS (v3.2)</span>
8952 <span class="entry_type_enum_optional">[optional]</span>
8953 <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving people.<wbr/></p>
8954 <p>Similar to ACTION.<wbr/></p></span>
8957 <span class="entry_type_enum_name">PARTY (v3.2)</span>
8958 <span class="entry_type_enum_optional">[optional]</span>
8959 <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings with multiple moving
8960 people.<wbr/></p></span>
8963 <span class="entry_type_enum_name">CANDLELIGHT (v3.2)</span>
8964 <span class="entry_type_enum_optional">[optional]</span>
8965 <span class="entry_type_enum_notes"><p>Optimized for dim settings where the main light source
8966 is a flame.<wbr/></p></span>
8969 <span class="entry_type_enum_name">BARCODE (v3.2)</span>
8970 <span class="entry_type_enum_optional">[optional]</span>
8971 <span class="entry_type_enum_notes"><p>Optimized for accurately capturing a photo of barcode
8972 for use by camera applications that wish to read the
8973 barcode value.<wbr/></p></span>
8976 <span class="entry_type_enum_name">HIGH_SPEED_VIDEO (v3.2)</span>
8977 <span class="entry_type_enum_deprecated">[deprecated]</span>
8978 <span class="entry_type_enum_optional">[optional]</span>
8979 <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>
8980 and <a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a>
8981 for high speed video recording.<wbr/></p>
8982 <p>Optimized for high speed video recording (frame rate >=60fps) use case.<wbr/></p>
8983 <p>The supported high speed video sizes and fps ranges are specified in
8984 <a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/> To get desired
8985 output frame rates,<wbr/> the application is only allowed to select video size
8986 and fps range combinations listed in this static metadata.<wbr/> The fps range
8987 can be control via <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a>.<wbr/></p>
8988 <p>In this mode,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to
8989 ON,<wbr/> ON,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode
8990 controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture
8991 and post-processing parameters is possible.<wbr/> All other controls operate the
8992 same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other
8993 android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p>
8995 <li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li>
8996 <li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li>
8997 <li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li>
8998 <li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li>
8999 <li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li>
9000 <li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li>
9001 <li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li>
9002 <li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li>
9003 <li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li>
9004 <li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li>
9006 <p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p>
9008 <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>
9009 <li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li>
9010 <li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li>
9011 <li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></li>
9013 <p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may
9014 be lower than what camera can output,<wbr/> depending on the destination Surfaces for
9015 the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/>
9016 the application need check if the video encoder is capable of supporting the
9017 high frame rate for a given video size,<wbr/> or it will end up with lower recording
9018 frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the preview frame
9019 rate will be bounded by the screen refresh rate.<wbr/></p>
9020 <p>The camera device will only support up to 2 output high speed streams
9021 (processed non-stalling format defined in <a href="#static_android.request.maxNumOutputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams</a>)
9022 in this mode.<wbr/> This control will be effective only if all of below conditions are true:</p>
9024 <li>The application created no more than maxNumHighSpeedStreams processed non-stalling
9025 format output streams,<wbr/> where maxNumHighSpeedStreams is calculated as
9026 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>
9027 <li>The stream sizes are selected from the sizes reported by
9028 <a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/></li>
9029 <li>No processed non-stalling or raw streams are configured.<wbr/></li>
9031 <p>When above conditions are NOT satistied,<wbr/> the controls of this mode and
9032 <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/>
9033 the camera device will fall back to <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> <code>==</code> AUTO,<wbr/>
9034 and the returned capture result metadata will give the fps range choosen
9035 by the camera device.<wbr/></p>
9036 <p>Switching into or out of this mode may trigger some camera ISP/<wbr/>sensor
9037 reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that
9038 the application avoids unnecessary scene mode switch as much as possible.<wbr/></p></span>
9041 <span class="entry_type_enum_name">HDR (v3.2)</span>
9042 <span class="entry_type_enum_optional">[optional]</span>
9043 <span class="entry_type_enum_notes"><p>Turn on a device-specific high dynamic range (HDR) mode.<wbr/></p>
9044 <p>In this scene mode,<wbr/> the camera device captures images
9045 that keep a larger range of scene illumination levels
9046 visible in the final image.<wbr/> For example,<wbr/> when taking a
9047 picture of a object in front of a bright window,<wbr/> both
9048 the object and the scene through the window may be
9049 visible when using HDR mode,<wbr/> while in normal AUTO mode,<wbr/>
9050 one or the other may be poorly exposed.<wbr/> As a tradeoff,<wbr/>
9051 HDR mode generally takes much longer to capture a single
9052 image,<wbr/> has no user control,<wbr/> and may have other artifacts
9053 depending on the HDR method used.<wbr/></p>
9054 <p>Therefore,<wbr/> HDR captures operate at a much slower rate
9055 than regular captures.<wbr/></p>
9056 <p>In this mode,<wbr/> on LIMITED or FULL devices,<wbr/> when a request
9057 is made with a <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> of
9058 STILL_<wbr/>CAPTURE,<wbr/> the camera device will capture an image
9059 using a high dynamic range capture technique.<wbr/> On LEGACY
9060 devices,<wbr/> captures that target a JPEG-format output will
9061 be captured with HDR,<wbr/> and the capture intent is not
9063 <p>The HDR capture may involve the device capturing a burst
9064 of images internally and combining them into one,<wbr/> or it
9065 may involve the device using specialized high dynamic
9066 range capture hardware.<wbr/> In all cases,<wbr/> a single image is
9067 produced in response to a capture request submitted
9068 while in HDR mode.<wbr/></p>
9069 <p>Since substantial post-processing is generally needed to
9070 produce an HDR image,<wbr/> only YUV,<wbr/> PRIVATE,<wbr/> and JPEG
9071 outputs are supported for LIMITED/<wbr/>FULL device HDR
9072 captures,<wbr/> and only JPEG outputs are supported for LEGACY
9073 HDR captures.<wbr/> Using a RAW output for HDR capture is not
9074 supported.<wbr/></p>
9075 <p>Some devices may also support always-on HDR,<wbr/> which
9076 applies HDR processing at full frame rate.<wbr/> For these
9077 devices,<wbr/> intents other than STILL_<wbr/>CAPTURE will also
9078 produce an HDR output with no frame rate impact compared
9079 to normal operation,<wbr/> though the quality may be lower
9080 than for STILL_<wbr/>CAPTURE intents.<wbr/></p>
9081 <p>If SCENE_<wbr/>MODE_<wbr/>HDR is used with unsupported output types
9082 or capture intents,<wbr/> the images captured will be as if
9083 the SCENE_<wbr/>MODE was not enabled at all.<wbr/></p></span>
9086 <span class="entry_type_enum_name">FACE_PRIORITY_LOW_LIGHT (v3.2)</span>
9087 <span class="entry_type_enum_optional">[optional]</span>
9088 <span class="entry_type_enum_hidden">[hidden]</span>
9089 <span class="entry_type_enum_notes"><p>Same as FACE_<wbr/>PRIORITY scene mode,<wbr/> except that the camera
9090 device will choose higher sensitivity values (<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>)
9091 under low light conditions.<wbr/></p>
9092 <p>The camera device may be tuned to expose the images in a reduced
9093 sensitivity range to produce the best quality images.<wbr/> For example,<wbr/>
9094 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/>
9095 the camera device auto-exposure routine tuning process may limit the actual
9096 exposure sensitivity range to [100,<wbr/> 1200] to ensure that the noise level isn't
9097 exessive in order to preserve the image quality.<wbr/> Under this situation,<wbr/> the image under
9098 low light may be under-exposed when the sensor max exposure time (bounded by the
9099 <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
9100 ON_<wbr/>* modes) and effective max sensitivity are reached.<wbr/> This scene mode allows the
9101 camera device auto-exposure routine to increase the sensitivity up to the max
9102 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
9103 dark and the max exposure time is reached.<wbr/> The captured images may be noisier
9104 compared with the images captured in normal FACE_<wbr/>PRIORITY mode; therefore,<wbr/> it is
9105 recommended that the application only use this scene mode when it is capable of
9106 reducing the noise level of the captured images.<wbr/></p>
9107 <p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
9108 <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>
9109 remain active when FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT is set.<wbr/></p></span>
9112 <span class="entry_type_enum_name">DEVICE_CUSTOM_START (v3.2)</span>
9113 <span class="entry_type_enum_optional">[optional]</span>
9114 <span class="entry_type_enum_hidden">[hidden]</span>
9115 <span class="entry_type_enum_value">100</span>
9116 <span class="entry_type_enum_notes"><p>Scene mode values within the range of
9117 <code>[DEVICE_<wbr/>CUSTOM_<wbr/>START,<wbr/> DEVICE_<wbr/>CUSTOM_<wbr/>END]</code> are reserved for device specific
9118 customized scene modes.<wbr/></p></span>
9121 <span class="entry_type_enum_name">DEVICE_CUSTOM_END (v3.2)</span>
9122 <span class="entry_type_enum_optional">[optional]</span>
9123 <span class="entry_type_enum_hidden">[hidden]</span>
9124 <span class="entry_type_enum_value">127</span>
9125 <span class="entry_type_enum_notes"><p>Scene mode values within the range of
9126 <code>[DEVICE_<wbr/>CUSTOM_<wbr/>START,<wbr/> DEVICE_<wbr/>CUSTOM_<wbr/>END]</code> are reserved for device specific
9127 customized scene modes.<wbr/></p></span>
9131 </td> <!-- entry_type -->
9133 <td class="entry_description">
9134 <p>Control for which scene mode is currently active.<wbr/></p>
9137 <td class="entry_units">
9140 <td class="entry_range">
9141 <p><a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a></p>
9144 <td class="entry_hal_version">
9148 <td class="entry_tags">
9149 <ul class="entry_tags">
9150 <li><a href="#tag_BC">BC</a></li>
9155 <tr class="entries_header">
9156 <th class="th_details" colspan="6">Details</th>
9158 <tr class="entry_cont">
9159 <td class="entry_details" colspan="6">
9160 <p>Scene modes are custom camera modes optimized for a certain set of conditions and
9161 capture settings.<wbr/></p>
9162 <p>This is the mode that that is active when
9163 <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
9164 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>
9165 while in use.<wbr/></p>
9166 <p>The interpretation and implementation of these scene modes is left
9167 to the implementor of the camera device.<wbr/> Their behavior will not be
9168 consistent across all devices,<wbr/> and any given device may only implement
9169 a subset of these modes.<wbr/></p>
9173 <tr class="entries_header">
9174 <th class="th_details" colspan="6">HAL Implementation Details</th>
9176 <tr class="entry_cont">
9177 <td class="entry_details" colspan="6">
9178 <p>HAL implementations that include scene modes are expected to provide
9179 the per-scene settings to use for <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
9180 <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
9181 <a href="#static_android.control.sceneModeOverrides">android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides</a>.<wbr/></p>
9182 <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
9183 HAL must list supported video size and fps range in
9184 <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/>
9185 if the HAL has two different sensor configurations for normal streaming mode and high
9186 speed streaming,<wbr/> when this scene mode is set/<wbr/>reset in a sequence of capture requests,<wbr/> the
9187 HAL may have to switch between different sensor modes.<wbr/> This mode is deprecated in legacy
9188 HAL3.<wbr/>3,<wbr/> to support high speed video recording,<wbr/> please implement
9189 <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
9190 capbility defined in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
9194 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9195 <!-- end of entry -->
9198 <tr class="entry" id="dynamic_android.control.videoStabilizationMode">
9199 <td class="entry_name
9201 android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode
9203 <td class="entry_type">
9204 <span class="entry_type_name entry_type_name_enum">byte</span>
9206 <span class="entry_type_visibility"> [public]</span>
9209 <span class="entry_type_hwlevel">[legacy] </span>
9213 <ul class="entry_type_enum">
9215 <span class="entry_type_enum_name">OFF (v3.2)</span>
9216 <span class="entry_type_enum_notes"><p>Video stabilization is disabled.<wbr/></p></span>
9219 <span class="entry_type_enum_name">ON (v3.2)</span>
9220 <span class="entry_type_enum_notes"><p>Video stabilization is enabled.<wbr/></p></span>
9224 </td> <!-- entry_type -->
9226 <td class="entry_description">
9227 <p>Whether video stabilization is
9231 <td class="entry_units">
9234 <td class="entry_range">
9237 <td class="entry_hal_version">
9241 <td class="entry_tags">
9242 <ul class="entry_tags">
9243 <li><a href="#tag_BC">BC</a></li>
9248 <tr class="entries_header">
9249 <th class="th_details" colspan="6">Details</th>
9251 <tr class="entry_cont">
9252 <td class="entry_details" colspan="6">
9253 <p>Video stabilization automatically warps images from
9254 the camera in order to stabilize motion between consecutive frames.<wbr/></p>
9255 <p>If enabled,<wbr/> video stabilization can modify the
9256 <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> to keep the video stream stabilized.<wbr/></p>
9257 <p>Switching between different video stabilization modes may take several
9258 frames to initialize,<wbr/> the camera device will report the current mode
9259 in capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/>
9260 the video stabilization modes in the first several capture results may
9261 still be "OFF",<wbr/> and it will become "ON" when the initialization is
9263 <p>In addition,<wbr/> not all recording sizes or frame rates may be supported for
9264 stabilization by a device that reports stabilization support.<wbr/> It is guaranteed
9265 that an output targeting a MediaRecorder or MediaCodec will be stabilized if
9266 the recording resolution is less than or equal to 1920 x 1080 (width less than
9267 or equal to 1920,<wbr/> height less than or equal to 1080),<wbr/> and the recording
9268 frame rate is less than or equal to 30fps.<wbr/> At other sizes,<wbr/> the CaptureResult
9269 <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a> field will return
9270 OFF if the recording output is not stabilized,<wbr/> or if there are no output
9271 Surface types that can be stabilized.<wbr/></p>
9272 <p>If a camera device supports both this mode and OIS
9273 (<a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may
9274 produce undesirable interaction,<wbr/> so it is recommended not to enable
9275 both at the same time.<wbr/></p>
9280 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9281 <!-- end of entry -->
9284 <tr class="entry" id="dynamic_android.control.postRawSensitivityBoost">
9285 <td class="entry_name
9287 android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost
9289 <td class="entry_type">
9290 <span class="entry_type_name">int32</span>
9292 <span class="entry_type_visibility"> [public]</span>
9299 </td> <!-- entry_type -->
9301 <td class="entry_description">
9302 <p>The amount of additional sensitivity boost applied to output images
9303 after RAW sensor data is captured.<wbr/></p>
9306 <td class="entry_units">
9307 ISO arithmetic units,<wbr/> the same as android.<wbr/>sensor.<wbr/>sensitivity
9310 <td class="entry_range">
9311 <p><a href="#static_android.control.postRawSensitivityBoostRange">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost<wbr/>Range</a></p>
9314 <td class="entry_hal_version">
9318 <td class="entry_tags">
9322 <tr class="entries_header">
9323 <th class="th_details" colspan="6">Details</th>
9325 <tr class="entry_cont">
9326 <td class="entry_details" colspan="6">
9327 <p>Some camera devices support additional digital sensitivity boosting in the
9328 camera processing pipeline after sensor RAW image is captured.<wbr/>
9329 Such a boost will be applied to YUV/<wbr/>JPEG format output images but will not
9330 have effect on RAW output formats like RAW_<wbr/>SENSOR,<wbr/> RAW10,<wbr/> RAW12 or RAW_<wbr/>OPAQUE.<wbr/></p>
9331 <p>This key will be <code>null</code> for devices that do not support any RAW format
9332 outputs.<wbr/> For devices that do support RAW format outputs,<wbr/> this key will always
9333 present,<wbr/> and if a device does not support post RAW sensitivity boost,<wbr/> it will
9334 list <code>100</code> in this key.<wbr/></p>
9335 <p>If the camera device cannot apply the exact boost requested,<wbr/> it will reduce the
9336 boost to the nearest supported value.<wbr/>
9337 The final boost value used will be available in the output capture result.<wbr/></p>
9338 <p>For devices that support post RAW sensitivity boost,<wbr/> the YUV/<wbr/>JPEG output images
9339 of such device will have the total sensitivity of
9340 <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>
9341 The sensitivity of RAW format images will always be <code><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></code></p>
9342 <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
9343 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
9348 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9349 <!-- end of entry -->
9352 <tr class="entry" id="dynamic_android.control.enableZsl">
9353 <td class="entry_name
9355 android.<wbr/>control.<wbr/>enable<wbr/>Zsl
9357 <td class="entry_type">
9358 <span class="entry_type_name entry_type_name_enum">byte</span>
9360 <span class="entry_type_visibility"> [public as boolean]</span>
9366 <ul class="entry_type_enum">
9368 <span class="entry_type_enum_name">FALSE (v3.2)</span>
9369 <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
9370 after previous requests.<wbr/></p></span>
9373 <span class="entry_type_enum_name">TRUE (v3.2)</span>
9374 <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
9375 captured before previous requests.<wbr/></p></span>
9379 </td> <!-- entry_type -->
9381 <td class="entry_description">
9382 <p>Allow camera device to enable zero-shutter-lag mode for requests with
9383 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE.<wbr/></p>
9386 <td class="entry_units">
9389 <td class="entry_range">
9392 <td class="entry_hal_version">
9396 <td class="entry_tags">
9400 <tr class="entries_header">
9401 <th class="th_details" colspan="6">Details</th>
9403 <tr class="entry_cont">
9404 <td class="entry_details" colspan="6">
9405 <p>If enableZsl is <code>true</code>,<wbr/> the camera device may enable zero-shutter-lag mode for requests with
9406 STILL_<wbr/>CAPTURE capture intent.<wbr/> The camera device may use images captured in the past to
9407 produce output images for a zero-shutter-lag request.<wbr/> The result metadata including the
9408 <a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a> reflects the source frames used to produce output images.<wbr/>
9409 Therefore,<wbr/> the contents of the output images and the result metadata may be out of order
9410 compared to previous regular requests.<wbr/> enableZsl does not affect requests with other
9411 capture intents.<wbr/></p>
9412 <p>For example,<wbr/> when requests are submitted in the following order:
9413 Request A: enableZsl is ON,<wbr/> <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> is PREVIEW
9414 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>
9415 <p>The output images for request B may have contents captured before the output images for
9416 request A,<wbr/> and the result metadata for request B may be older than the result metadata for
9417 request A.<wbr/></p>
9418 <p>Note that when enableZsl is <code>true</code>,<wbr/> it is not guaranteed to get output images captured in
9419 the past for requests with STILL_<wbr/>CAPTURE capture intent.<wbr/></p>
9420 <p>For applications targeting SDK versions O and newer,<wbr/> the value of enableZsl in
9421 TEMPLATE_<wbr/>STILL_<wbr/>CAPTURE template may be <code>true</code>.<wbr/> The value in other templates is always
9422 <code>false</code> if present.<wbr/></p>
9423 <p>For applications targeting SDK versions older than O,<wbr/> the value of enableZsl in all
9424 capture templates is always <code>false</code> if present.<wbr/></p>
9425 <p>For application-operated ZSL,<wbr/> use CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p>
9429 <tr class="entries_header">
9430 <th class="th_details" colspan="6">HAL Implementation Details</th>
9432 <tr class="entry_cont">
9433 <td class="entry_details" colspan="6">
9434 <p>It is valid for HAL to produce regular output images for requests with STILL_<wbr/>CAPTURE
9435 capture intent.<wbr/></p>
9439 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9440 <!-- end of entry -->
9443 <tr class="entry" id="dynamic_android.control.afSceneChange">
9444 <td class="entry_name
9446 android.<wbr/>control.<wbr/>af<wbr/>Scene<wbr/>Change
9448 <td class="entry_type">
9449 <span class="entry_type_name entry_type_name_enum">byte</span>
9451 <span class="entry_type_visibility"> [public]</span>
9457 <ul class="entry_type_enum">
9459 <span class="entry_type_enum_name">NOT_DETECTED (v3.3)</span>
9460 <span class="entry_type_enum_notes"><p>Scene change is not detected within the AF region(s).<wbr/></p></span>
9463 <span class="entry_type_enum_name">DETECTED (v3.3)</span>
9464 <span class="entry_type_enum_notes"><p>Scene change is detected within the AF region(s).<wbr/></p></span>
9468 </td> <!-- entry_type -->
9470 <td class="entry_description">
9471 <p>Whether a significant scene change is detected within the currently-set AF
9472 region(s).<wbr/></p>
9475 <td class="entry_units">
9478 <td class="entry_range">
9481 <td class="entry_hal_version">
9485 <td class="entry_tags">
9489 <tr class="entries_header">
9490 <th class="th_details" colspan="6">Details</th>
9492 <tr class="entry_cont">
9493 <td class="entry_details" colspan="6">
9494 <p>When the camera focus routine detects a change in the scene it is looking at,<wbr/>
9495 such as a large shift in camera viewpoint,<wbr/> significant motion in the scene,<wbr/> or a
9496 significant illumination change,<wbr/> this value will be set to DETECTED for a single capture
9497 result.<wbr/> Otherwise the value will be NOT_<wbr/>DETECTED.<wbr/> The threshold for detection is similar
9498 to what would trigger a new passive focus scan to begin in CONTINUOUS autofocus modes.<wbr/></p>
9499 <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>
9504 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9505 <!-- end of entry -->
9509 <!-- end of kind -->
9512 <!-- end of section -->
9513 <tr><td colspan="7" id="section_demosaic" class="section">demosaic</td></tr>
9516 <tr><td colspan="7" class="kind">controls</td></tr>
9518 <thead class="entries_header">
9520 <th class="th_name">Property Name</th>
9521 <th class="th_type">Type</th>
9522 <th class="th_description">Description</th>
9523 <th class="th_units">Units</th>
9524 <th class="th_range">Range</th>
9525 <th class="th_hal_version">Initial HIDL HAL version</th>
9526 <th class="th_tags">Tags</th>
9541 <tr class="entry" id="controls_android.demosaic.mode">
9542 <td class="entry_name
9544 android.<wbr/>demosaic.<wbr/>mode
9546 <td class="entry_type">
9547 <span class="entry_type_name entry_type_name_enum">byte</span>
9549 <span class="entry_type_visibility"> [system]</span>
9555 <ul class="entry_type_enum">
9557 <span class="entry_type_enum_name">FAST (v3.2)</span>
9558 <span class="entry_type_enum_notes"><p>Minimal or no slowdown of frame rate compared to
9559 Bayer RAW output.<wbr/></p></span>
9562 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
9563 <span class="entry_type_enum_notes"><p>Improved processing quality but the frame rate might be slowed down
9564 relative to raw output.<wbr/></p></span>
9568 </td> <!-- entry_type -->
9570 <td class="entry_description">
9571 <p>Controls the quality of the demosaicing
9572 processing.<wbr/></p>
9575 <td class="entry_units">
9578 <td class="entry_range">
9581 <td class="entry_hal_version">
9585 <td class="entry_tags">
9586 <ul class="entry_tags">
9587 <li><a href="#tag_FUTURE">FUTURE</a></li>
9594 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9595 <!-- end of entry -->
9599 <!-- end of kind -->
9602 <!-- end of section -->
9603 <tr><td colspan="7" id="section_edge" class="section">edge</td></tr>
9606 <tr><td colspan="7" class="kind">controls</td></tr>
9608 <thead class="entries_header">
9610 <th class="th_name">Property Name</th>
9611 <th class="th_type">Type</th>
9612 <th class="th_description">Description</th>
9613 <th class="th_units">Units</th>
9614 <th class="th_range">Range</th>
9615 <th class="th_hal_version">Initial HIDL HAL version</th>
9616 <th class="th_tags">Tags</th>
9631 <tr class="entry" id="controls_android.edge.mode">
9632 <td class="entry_name
9634 android.<wbr/>edge.<wbr/>mode
9636 <td class="entry_type">
9637 <span class="entry_type_name entry_type_name_enum">byte</span>
9639 <span class="entry_type_visibility"> [public]</span>
9642 <span class="entry_type_hwlevel">[full] </span>
9646 <ul class="entry_type_enum">
9648 <span class="entry_type_enum_name">OFF (v3.2)</span>
9649 <span class="entry_type_enum_notes"><p>No edge enhancement is applied.<wbr/></p></span>
9652 <span class="entry_type_enum_name">FAST (v3.2)</span>
9653 <span class="entry_type_enum_notes"><p>Apply edge enhancement at a quality level that does not slow down frame rate
9654 relative to sensor output.<wbr/> It may be the same as OFF if edge enhancement will
9655 slow down frame rate relative to sensor.<wbr/></p></span>
9658 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
9659 <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>
9662 <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span>
9663 <span class="entry_type_enum_optional">[optional]</span>
9664 <span class="entry_type_enum_notes"><p>Edge enhancement is applied at different
9665 levels for different output streams,<wbr/> based on resolution.<wbr/> Streams at maximum recording
9666 resolution (see <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">CameraDevice#createCaptureSession</a>)
9667 or below have edge enhancement applied,<wbr/> while higher-resolution streams have no edge
9668 enhancement applied.<wbr/> The level of edge enhancement for low-resolution streams is tuned
9669 so that frame rate is not impacted,<wbr/> and the quality is equal to or better than FAST
9670 (since it is only applied to lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p>
9671 <p>This mode is intended to be used by applications operating in a zero-shutter-lag mode
9672 with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures
9673 high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is
9674 produced via reprocessing when a user takes a picture.<wbr/> For such a use case,<wbr/> the
9675 high-resolution buffers must not have edge enhancement applied to maximize efficiency of
9676 preview and to avoid double-applying enhancement when reprocessed,<wbr/> while low-resolution
9677 buffers (used for recording or preview,<wbr/> generally) need edge enhancement applied for
9678 reasonable preview quality.<wbr/></p>
9679 <p>This mode is guaranteed to be supported by devices that support either the
9680 YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities
9681 (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will
9682 be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span>
9686 </td> <!-- entry_type -->
9688 <td class="entry_description">
9689 <p>Operation mode for edge
9690 enhancement.<wbr/></p>
9693 <td class="entry_units">
9696 <td class="entry_range">
9697 <p><a href="#static_android.edge.availableEdgeModes">android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes</a></p>
9700 <td class="entry_hal_version">
9704 <td class="entry_tags">
9705 <ul class="entry_tags">
9706 <li><a href="#tag_V1">V1</a></li>
9707 <li><a href="#tag_REPROC">REPROC</a></li>
9712 <tr class="entries_header">
9713 <th class="th_details" colspan="6">Details</th>
9715 <tr class="entry_cont">
9716 <td class="entry_details" colspan="6">
9717 <p>Edge enhancement improves sharpness and details in the captured image.<wbr/> OFF means
9718 no enhancement will be applied by the camera device.<wbr/></p>
9719 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined enhancement
9720 will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the
9721 camera device will use the highest-quality enhancement algorithms,<wbr/>
9722 even if it slows down capture rate.<wbr/> FAST means the camera device will
9723 not slow down capture rate when applying edge enhancement.<wbr/> FAST may be the same as OFF if
9724 edge enhancement will slow down capture rate.<wbr/> Every output stream will have a similar
9725 amount of enhancement applied.<wbr/></p>
9726 <p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular
9727 buffer of high-resolution images during preview and reprocess image(s) from that buffer
9728 into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies
9729 edge enhancement to low-resolution streams (below maximum recording resolution) to
9730 maximize preview quality,<wbr/> but does not apply edge enhancement to high-resolution streams,<wbr/>
9731 since those will be reprocessed later if necessary.<wbr/></p>
9732 <p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera
9733 device will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV-domain edge enhancement,<wbr/> respectively.<wbr/>
9734 The camera device may adjust its internal edge enhancement parameters for best
9735 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>
9739 <tr class="entries_header">
9740 <th class="th_details" colspan="6">HAL Implementation Details</th>
9742 <tr class="entry_cont">
9743 <td class="entry_details" colspan="6">
9744 <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
9745 adjust the internal edge enhancement reduction parameters appropriately to get the best
9746 quality images.<wbr/></p>
9750 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9751 <!-- end of entry -->
9754 <tr class="entry" id="controls_android.edge.strength">
9755 <td class="entry_name
9757 android.<wbr/>edge.<wbr/>strength
9759 <td class="entry_type">
9760 <span class="entry_type_name">byte</span>
9762 <span class="entry_type_visibility"> [system]</span>
9769 </td> <!-- entry_type -->
9771 <td class="entry_description">
9772 <p>Control the amount of edge enhancement
9773 applied to the images</p>
9776 <td class="entry_units">
9777 1-10; 10 is maximum sharpening
9780 <td class="entry_range">
9783 <td class="entry_hal_version">
9787 <td class="entry_tags">
9788 <ul class="entry_tags">
9789 <li><a href="#tag_FUTURE">FUTURE</a></li>
9796 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9797 <!-- end of entry -->
9801 <!-- end of kind -->
9803 <tr><td colspan="7" class="kind">static</td></tr>
9805 <thead class="entries_header">
9807 <th class="th_name">Property Name</th>
9808 <th class="th_type">Type</th>
9809 <th class="th_description">Description</th>
9810 <th class="th_units">Units</th>
9811 <th class="th_range">Range</th>
9812 <th class="th_hal_version">Initial HIDL HAL version</th>
9813 <th class="th_tags">Tags</th>
9828 <tr class="entry" id="static_android.edge.availableEdgeModes">
9829 <td class="entry_name
9831 android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes
9833 <td class="entry_type">
9834 <span class="entry_type_name">byte</span>
9835 <span class="entry_type_container">x</span>
9837 <span class="entry_type_array">
9840 <span class="entry_type_visibility"> [public as enumList]</span>
9843 <span class="entry_type_hwlevel">[full] </span>
9846 <div class="entry_type_notes">list of enums</div>
9849 </td> <!-- entry_type -->
9851 <td class="entry_description">
9852 <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
9856 <td class="entry_units">
9859 <td class="entry_range">
9860 <p>Any value listed in <a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></p>
9863 <td class="entry_hal_version">
9867 <td class="entry_tags">
9868 <ul class="entry_tags">
9869 <li><a href="#tag_V1">V1</a></li>
9870 <li><a href="#tag_REPROC">REPROC</a></li>
9875 <tr class="entries_header">
9876 <th class="th_details" colspan="6">Details</th>
9878 <tr class="entry_cont">
9879 <td class="entry_details" colspan="6">
9880 <p>Full-capability camera devices must always support OFF; camera devices that support
9881 YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING will list ZERO_<wbr/>SHUTTER_<wbr/>LAG; all devices will
9882 list FAST.<wbr/></p>
9886 <tr class="entries_header">
9887 <th class="th_details" colspan="6">HAL Implementation Details</th>
9889 <tr class="entry_cont">
9890 <td class="entry_details" colspan="6">
9891 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if edge enhancement control is available
9892 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
9893 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
9894 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
9898 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9899 <!-- end of entry -->
9903 <!-- end of kind -->
9905 <tr><td colspan="7" class="kind">dynamic</td></tr>
9907 <thead class="entries_header">
9909 <th class="th_name">Property Name</th>
9910 <th class="th_type">Type</th>
9911 <th class="th_description">Description</th>
9912 <th class="th_units">Units</th>
9913 <th class="th_range">Range</th>
9914 <th class="th_hal_version">Initial HIDL HAL version</th>
9915 <th class="th_tags">Tags</th>
9930 <tr class="entry" id="dynamic_android.edge.mode">
9931 <td class="entry_name
9933 android.<wbr/>edge.<wbr/>mode
9935 <td class="entry_type">
9936 <span class="entry_type_name entry_type_name_enum">byte</span>
9938 <span class="entry_type_visibility"> [public]</span>
9941 <span class="entry_type_hwlevel">[full] </span>
9945 <ul class="entry_type_enum">
9947 <span class="entry_type_enum_name">OFF (v3.2)</span>
9948 <span class="entry_type_enum_notes"><p>No edge enhancement is applied.<wbr/></p></span>
9951 <span class="entry_type_enum_name">FAST (v3.2)</span>
9952 <span class="entry_type_enum_notes"><p>Apply edge enhancement at a quality level that does not slow down frame rate
9953 relative to sensor output.<wbr/> It may be the same as OFF if edge enhancement will
9954 slow down frame rate relative to sensor.<wbr/></p></span>
9957 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
9958 <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>
9961 <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span>
9962 <span class="entry_type_enum_optional">[optional]</span>
9963 <span class="entry_type_enum_notes"><p>Edge enhancement is applied at different
9964 levels for different output streams,<wbr/> based on resolution.<wbr/> Streams at maximum recording
9965 resolution (see <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">CameraDevice#createCaptureSession</a>)
9966 or below have edge enhancement applied,<wbr/> while higher-resolution streams have no edge
9967 enhancement applied.<wbr/> The level of edge enhancement for low-resolution streams is tuned
9968 so that frame rate is not impacted,<wbr/> and the quality is equal to or better than FAST
9969 (since it is only applied to lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p>
9970 <p>This mode is intended to be used by applications operating in a zero-shutter-lag mode
9971 with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures
9972 high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is
9973 produced via reprocessing when a user takes a picture.<wbr/> For such a use case,<wbr/> the
9974 high-resolution buffers must not have edge enhancement applied to maximize efficiency of
9975 preview and to avoid double-applying enhancement when reprocessed,<wbr/> while low-resolution
9976 buffers (used for recording or preview,<wbr/> generally) need edge enhancement applied for
9977 reasonable preview quality.<wbr/></p>
9978 <p>This mode is guaranteed to be supported by devices that support either the
9979 YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities
9980 (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will
9981 be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span>
9985 </td> <!-- entry_type -->
9987 <td class="entry_description">
9988 <p>Operation mode for edge
9989 enhancement.<wbr/></p>
9992 <td class="entry_units">
9995 <td class="entry_range">
9996 <p><a href="#static_android.edge.availableEdgeModes">android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes</a></p>
9999 <td class="entry_hal_version">
10003 <td class="entry_tags">
10004 <ul class="entry_tags">
10005 <li><a href="#tag_V1">V1</a></li>
10006 <li><a href="#tag_REPROC">REPROC</a></li>
10011 <tr class="entries_header">
10012 <th class="th_details" colspan="6">Details</th>
10014 <tr class="entry_cont">
10015 <td class="entry_details" colspan="6">
10016 <p>Edge enhancement improves sharpness and details in the captured image.<wbr/> OFF means
10017 no enhancement will be applied by the camera device.<wbr/></p>
10018 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined enhancement
10019 will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the
10020 camera device will use the highest-quality enhancement algorithms,<wbr/>
10021 even if it slows down capture rate.<wbr/> FAST means the camera device will
10022 not slow down capture rate when applying edge enhancement.<wbr/> FAST may be the same as OFF if
10023 edge enhancement will slow down capture rate.<wbr/> Every output stream will have a similar
10024 amount of enhancement applied.<wbr/></p>
10025 <p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular
10026 buffer of high-resolution images during preview and reprocess image(s) from that buffer
10027 into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies
10028 edge enhancement to low-resolution streams (below maximum recording resolution) to
10029 maximize preview quality,<wbr/> but does not apply edge enhancement to high-resolution streams,<wbr/>
10030 since those will be reprocessed later if necessary.<wbr/></p>
10031 <p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera
10032 device will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV-domain edge enhancement,<wbr/> respectively.<wbr/>
10033 The camera device may adjust its internal edge enhancement parameters for best
10034 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>
10038 <tr class="entries_header">
10039 <th class="th_details" colspan="6">HAL Implementation Details</th>
10041 <tr class="entry_cont">
10042 <td class="entry_details" colspan="6">
10043 <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
10044 adjust the internal edge enhancement reduction parameters appropriately to get the best
10045 quality images.<wbr/></p>
10049 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10050 <!-- end of entry -->
10054 <!-- end of kind -->
10057 <!-- end of section -->
10058 <tr><td colspan="7" id="section_flash" class="section">flash</td></tr>
10061 <tr><td colspan="7" class="kind">controls</td></tr>
10063 <thead class="entries_header">
10065 <th class="th_name">Property Name</th>
10066 <th class="th_type">Type</th>
10067 <th class="th_description">Description</th>
10068 <th class="th_units">Units</th>
10069 <th class="th_range">Range</th>
10070 <th class="th_hal_version">Initial HIDL HAL version</th>
10071 <th class="th_tags">Tags</th>
10086 <tr class="entry" id="controls_android.flash.firingPower">
10087 <td class="entry_name
10089 android.<wbr/>flash.<wbr/>firing<wbr/>Power
10091 <td class="entry_type">
10092 <span class="entry_type_name">byte</span>
10094 <span class="entry_type_visibility"> [system]</span>
10101 </td> <!-- entry_type -->
10103 <td class="entry_description">
10104 <p>Power for flash firing/<wbr/>torch</p>
10107 <td class="entry_units">
10108 10 is max power; 0 is no flash.<wbr/> Linear
10111 <td class="entry_range">
10115 <td class="entry_hal_version">
10119 <td class="entry_tags">
10120 <ul class="entry_tags">
10121 <li><a href="#tag_FUTURE">FUTURE</a></li>
10126 <tr class="entries_header">
10127 <th class="th_details" colspan="6">Details</th>
10129 <tr class="entry_cont">
10130 <td class="entry_details" colspan="6">
10131 <p>Power for snapshot may use a different scale than
10132 for torch mode.<wbr/> Only one entry for torch mode will be
10138 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10139 <!-- end of entry -->
10142 <tr class="entry" id="controls_android.flash.firingTime">
10143 <td class="entry_name
10145 android.<wbr/>flash.<wbr/>firing<wbr/>Time
10147 <td class="entry_type">
10148 <span class="entry_type_name">int64</span>
10150 <span class="entry_type_visibility"> [system]</span>
10157 </td> <!-- entry_type -->
10159 <td class="entry_description">
10160 <p>Firing time of flash relative to start of
10164 <td class="entry_units">
10168 <td class="entry_range">
10169 <p>0-(exposure time-flash duration)</p>
10172 <td class="entry_hal_version">
10176 <td class="entry_tags">
10177 <ul class="entry_tags">
10178 <li><a href="#tag_FUTURE">FUTURE</a></li>
10183 <tr class="entries_header">
10184 <th class="th_details" colspan="6">Details</th>
10186 <tr class="entry_cont">
10187 <td class="entry_details" colspan="6">
10188 <p>Clamped to (0,<wbr/> exposure time - flash
10189 duration).<wbr/></p>
10194 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10195 <!-- end of entry -->
10198 <tr class="entry" id="controls_android.flash.mode">
10199 <td class="entry_name
10201 android.<wbr/>flash.<wbr/>mode
10203 <td class="entry_type">
10204 <span class="entry_type_name entry_type_name_enum">byte</span>
10206 <span class="entry_type_visibility"> [public]</span>
10209 <span class="entry_type_hwlevel">[legacy] </span>
10213 <ul class="entry_type_enum">
10215 <span class="entry_type_enum_name">OFF (v3.2)</span>
10216 <span class="entry_type_enum_notes"><p>Do not fire the flash for this capture.<wbr/></p></span>
10219 <span class="entry_type_enum_name">SINGLE (v3.2)</span>
10220 <span class="entry_type_enum_notes"><p>If the flash is available and charged,<wbr/> fire flash
10221 for this capture.<wbr/></p></span>
10224 <span class="entry_type_enum_name">TORCH (v3.2)</span>
10225 <span class="entry_type_enum_notes"><p>Transition flash to continuously on.<wbr/></p></span>
10229 </td> <!-- entry_type -->
10231 <td class="entry_description">
10232 <p>The desired mode for for the camera device's flash control.<wbr/></p>
10235 <td class="entry_units">
10238 <td class="entry_range">
10241 <td class="entry_hal_version">
10245 <td class="entry_tags">
10246 <ul class="entry_tags">
10247 <li><a href="#tag_BC">BC</a></li>
10252 <tr class="entries_header">
10253 <th class="th_details" colspan="6">Details</th>
10255 <tr class="entry_cont">
10256 <td class="entry_details" colspan="6">
10257 <p>This control is only effective when flash unit is available
10258 (<code><a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> == true</code>).<wbr/></p>
10259 <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/>
10260 Otherwise,<wbr/> the camera device auto-exposure related flash control (ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/>
10261 ON_<wbr/>ALWAYS_<wbr/>FLASH,<wbr/> or ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE) will override this control.<wbr/></p>
10262 <p>When set to OFF,<wbr/> the camera device will not fire flash for this capture.<wbr/></p>
10263 <p>When set to SINGLE,<wbr/> the camera device will fire flash regardless of the camera
10264 device's auto-exposure routine's result.<wbr/> When used in still capture case,<wbr/> this
10265 control should be used along with auto-exposure (AE) precapture metering sequence
10266 (<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>
10267 <p>When set to TORCH,<wbr/> the flash will be on continuously.<wbr/> This mode can be used
10268 for use cases such as preview,<wbr/> auto-focus assist,<wbr/> still capture,<wbr/> or video recording.<wbr/></p>
10269 <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>
10274 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10275 <!-- end of entry -->
10279 <!-- end of kind -->
10281 <tr><td colspan="7" class="kind">static</td></tr>
10283 <thead class="entries_header">
10285 <th class="th_name">Property Name</th>
10286 <th class="th_type">Type</th>
10287 <th class="th_description">Description</th>
10288 <th class="th_units">Units</th>
10289 <th class="th_range">Range</th>
10290 <th class="th_hal_version">Initial HIDL HAL version</th>
10291 <th class="th_tags">Tags</th>
10308 <tr class="entry" id="static_android.flash.info.available">
10309 <td class="entry_name
10311 android.<wbr/>flash.<wbr/>info.<wbr/>available
10313 <td class="entry_type">
10314 <span class="entry_type_name entry_type_name_enum">byte</span>
10316 <span class="entry_type_visibility"> [public as boolean]</span>
10319 <span class="entry_type_hwlevel">[legacy] </span>
10323 <ul class="entry_type_enum">
10325 <span class="entry_type_enum_name">FALSE (v3.2)</span>
10328 <span class="entry_type_enum_name">TRUE (v3.2)</span>
10332 </td> <!-- entry_type -->
10334 <td class="entry_description">
10335 <p>Whether this camera device has a
10336 flash unit.<wbr/></p>
10339 <td class="entry_units">
10342 <td class="entry_range">
10345 <td class="entry_hal_version">
10349 <td class="entry_tags">
10350 <ul class="entry_tags">
10351 <li><a href="#tag_BC">BC</a></li>
10356 <tr class="entries_header">
10357 <th class="th_details" colspan="6">Details</th>
10359 <tr class="entry_cont">
10360 <td class="entry_details" colspan="6">
10361 <p>Will be <code>false</code> if no flash is available.<wbr/></p>
10362 <p>If there is no flash unit,<wbr/> none of the flash controls do
10363 anything.<wbr/></p>
10368 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10369 <!-- end of entry -->
10372 <tr class="entry" id="static_android.flash.info.chargeDuration">
10373 <td class="entry_name
10375 android.<wbr/>flash.<wbr/>info.<wbr/>charge<wbr/>Duration
10377 <td class="entry_type">
10378 <span class="entry_type_name">int64</span>
10380 <span class="entry_type_visibility"> [system]</span>
10387 </td> <!-- entry_type -->
10389 <td class="entry_description">
10390 <p>Time taken before flash can fire
10394 <td class="entry_units">
10398 <td class="entry_range">
10402 <td class="entry_hal_version">
10406 <td class="entry_tags">
10407 <ul class="entry_tags">
10408 <li><a href="#tag_FUTURE">FUTURE</a></li>
10413 <tr class="entries_header">
10414 <th class="th_details" colspan="6">Details</th>
10416 <tr class="entry_cont">
10417 <td class="entry_details" colspan="6">
10418 <p>1 second too long/<wbr/>too short for recharge? Should
10419 this be power-dependent?</p>
10424 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10425 <!-- end of entry -->
10431 <tr class="entry" id="static_android.flash.colorTemperature">
10432 <td class="entry_name
10434 android.<wbr/>flash.<wbr/>color<wbr/>Temperature
10436 <td class="entry_type">
10437 <span class="entry_type_name">byte</span>
10439 <span class="entry_type_visibility"> [system]</span>
10446 </td> <!-- entry_type -->
10448 <td class="entry_description">
10449 <p>The x,<wbr/>y whitepoint of the
10453 <td class="entry_units">
10457 <td class="entry_range">
10458 <p>0-1 for both</p>
10461 <td class="entry_hal_version">
10465 <td class="entry_tags">
10466 <ul class="entry_tags">
10467 <li><a href="#tag_FUTURE">FUTURE</a></li>
10474 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10475 <!-- end of entry -->
10478 <tr class="entry" id="static_android.flash.maxEnergy">
10479 <td class="entry_name
10481 android.<wbr/>flash.<wbr/>max<wbr/>Energy
10483 <td class="entry_type">
10484 <span class="entry_type_name">byte</span>
10486 <span class="entry_type_visibility"> [system]</span>
10493 </td> <!-- entry_type -->
10495 <td class="entry_description">
10496 <p>Max energy output of the flash for a full
10497 power single flash</p>
10500 <td class="entry_units">
10504 <td class="entry_range">
10508 <td class="entry_hal_version">
10512 <td class="entry_tags">
10513 <ul class="entry_tags">
10514 <li><a href="#tag_FUTURE">FUTURE</a></li>
10521 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10522 <!-- end of entry -->
10526 <!-- end of kind -->
10528 <tr><td colspan="7" class="kind">dynamic</td></tr>
10530 <thead class="entries_header">
10532 <th class="th_name">Property Name</th>
10533 <th class="th_type">Type</th>
10534 <th class="th_description">Description</th>
10535 <th class="th_units">Units</th>
10536 <th class="th_range">Range</th>
10537 <th class="th_hal_version">Initial HIDL HAL version</th>
10538 <th class="th_tags">Tags</th>
10553 <tr class="entry" id="dynamic_android.flash.firingPower">
10554 <td class="entry_name
10556 android.<wbr/>flash.<wbr/>firing<wbr/>Power
10558 <td class="entry_type">
10559 <span class="entry_type_name">byte</span>
10561 <span class="entry_type_visibility"> [system]</span>
10568 </td> <!-- entry_type -->
10570 <td class="entry_description">
10571 <p>Power for flash firing/<wbr/>torch</p>
10574 <td class="entry_units">
10575 10 is max power; 0 is no flash.<wbr/> Linear
10578 <td class="entry_range">
10582 <td class="entry_hal_version">
10586 <td class="entry_tags">
10587 <ul class="entry_tags">
10588 <li><a href="#tag_FUTURE">FUTURE</a></li>
10593 <tr class="entries_header">
10594 <th class="th_details" colspan="6">Details</th>
10596 <tr class="entry_cont">
10597 <td class="entry_details" colspan="6">
10598 <p>Power for snapshot may use a different scale than
10599 for torch mode.<wbr/> Only one entry for torch mode will be
10605 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10606 <!-- end of entry -->
10609 <tr class="entry" id="dynamic_android.flash.firingTime">
10610 <td class="entry_name
10612 android.<wbr/>flash.<wbr/>firing<wbr/>Time
10614 <td class="entry_type">
10615 <span class="entry_type_name">int64</span>
10617 <span class="entry_type_visibility"> [system]</span>
10624 </td> <!-- entry_type -->
10626 <td class="entry_description">
10627 <p>Firing time of flash relative to start of
10631 <td class="entry_units">
10635 <td class="entry_range">
10636 <p>0-(exposure time-flash duration)</p>
10639 <td class="entry_hal_version">
10643 <td class="entry_tags">
10644 <ul class="entry_tags">
10645 <li><a href="#tag_FUTURE">FUTURE</a></li>
10650 <tr class="entries_header">
10651 <th class="th_details" colspan="6">Details</th>
10653 <tr class="entry_cont">
10654 <td class="entry_details" colspan="6">
10655 <p>Clamped to (0,<wbr/> exposure time - flash
10656 duration).<wbr/></p>
10661 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10662 <!-- end of entry -->
10665 <tr class="entry" id="dynamic_android.flash.mode">
10666 <td class="entry_name
10668 android.<wbr/>flash.<wbr/>mode
10670 <td class="entry_type">
10671 <span class="entry_type_name entry_type_name_enum">byte</span>
10673 <span class="entry_type_visibility"> [public]</span>
10676 <span class="entry_type_hwlevel">[legacy] </span>
10680 <ul class="entry_type_enum">
10682 <span class="entry_type_enum_name">OFF (v3.2)</span>
10683 <span class="entry_type_enum_notes"><p>Do not fire the flash for this capture.<wbr/></p></span>
10686 <span class="entry_type_enum_name">SINGLE (v3.2)</span>
10687 <span class="entry_type_enum_notes"><p>If the flash is available and charged,<wbr/> fire flash
10688 for this capture.<wbr/></p></span>
10691 <span class="entry_type_enum_name">TORCH (v3.2)</span>
10692 <span class="entry_type_enum_notes"><p>Transition flash to continuously on.<wbr/></p></span>
10696 </td> <!-- entry_type -->
10698 <td class="entry_description">
10699 <p>The desired mode for for the camera device's flash control.<wbr/></p>
10702 <td class="entry_units">
10705 <td class="entry_range">
10708 <td class="entry_hal_version">
10712 <td class="entry_tags">
10713 <ul class="entry_tags">
10714 <li><a href="#tag_BC">BC</a></li>
10719 <tr class="entries_header">
10720 <th class="th_details" colspan="6">Details</th>
10722 <tr class="entry_cont">
10723 <td class="entry_details" colspan="6">
10724 <p>This control is only effective when flash unit is available
10725 (<code><a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> == true</code>).<wbr/></p>
10726 <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/>
10727 Otherwise,<wbr/> the camera device auto-exposure related flash control (ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/>
10728 ON_<wbr/>ALWAYS_<wbr/>FLASH,<wbr/> or ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE) will override this control.<wbr/></p>
10729 <p>When set to OFF,<wbr/> the camera device will not fire flash for this capture.<wbr/></p>
10730 <p>When set to SINGLE,<wbr/> the camera device will fire flash regardless of the camera
10731 device's auto-exposure routine's result.<wbr/> When used in still capture case,<wbr/> this
10732 control should be used along with auto-exposure (AE) precapture metering sequence
10733 (<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>
10734 <p>When set to TORCH,<wbr/> the flash will be on continuously.<wbr/> This mode can be used
10735 for use cases such as preview,<wbr/> auto-focus assist,<wbr/> still capture,<wbr/> or video recording.<wbr/></p>
10736 <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>
10741 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10742 <!-- end of entry -->
10745 <tr class="entry" id="dynamic_android.flash.state">
10746 <td class="entry_name
10748 android.<wbr/>flash.<wbr/>state
10750 <td class="entry_type">
10751 <span class="entry_type_name entry_type_name_enum">byte</span>
10753 <span class="entry_type_visibility"> [public]</span>
10756 <span class="entry_type_hwlevel">[limited] </span>
10760 <ul class="entry_type_enum">
10762 <span class="entry_type_enum_name">UNAVAILABLE (v3.2)</span>
10763 <span class="entry_type_enum_notes"><p>No flash on camera.<wbr/></p></span>
10766 <span class="entry_type_enum_name">CHARGING (v3.2)</span>
10767 <span class="entry_type_enum_notes"><p>Flash is charging and cannot be fired.<wbr/></p></span>
10770 <span class="entry_type_enum_name">READY (v3.2)</span>
10771 <span class="entry_type_enum_notes"><p>Flash is ready to fire.<wbr/></p></span>
10774 <span class="entry_type_enum_name">FIRED (v3.2)</span>
10775 <span class="entry_type_enum_notes"><p>Flash fired for this capture.<wbr/></p></span>
10778 <span class="entry_type_enum_name">PARTIAL (v3.2)</span>
10779 <span class="entry_type_enum_notes"><p>Flash partially illuminated this frame.<wbr/></p>
10780 <p>This is usually due to the next or previous frame having
10781 the flash fire,<wbr/> and the flash spilling into this capture
10782 due to hardware limitations.<wbr/></p></span>
10786 </td> <!-- entry_type -->
10788 <td class="entry_description">
10789 <p>Current state of the flash
10793 <td class="entry_units">
10796 <td class="entry_range">
10799 <td class="entry_hal_version">
10803 <td class="entry_tags">
10807 <tr class="entries_header">
10808 <th class="th_details" colspan="6">Details</th>
10810 <tr class="entry_cont">
10811 <td class="entry_details" colspan="6">
10812 <p>When the camera device doesn't have flash unit
10813 (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/>
10814 Other states indicate the current flash status.<wbr/></p>
10815 <p>In certain conditions,<wbr/> this will be available on LEGACY devices:</p>
10817 <li>Flash-less cameras always return UNAVAILABLE.<wbr/></li>
10818 <li>Using <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>==</code> ON_<wbr/>ALWAYS_<wbr/>FLASH
10819 will always return FIRED.<wbr/></li>
10820 <li>Using <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> <code>==</code> TORCH
10821 will always return FIRED.<wbr/></li>
10823 <p>In all other conditions the state will not be available on
10824 LEGACY devices (i.<wbr/>e.<wbr/> it will be <code>null</code>).<wbr/></p>
10829 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10830 <!-- end of entry -->
10834 <!-- end of kind -->
10837 <!-- end of section -->
10838 <tr><td colspan="7" id="section_hotPixel" class="section">hotPixel</td></tr>
10841 <tr><td colspan="7" class="kind">controls</td></tr>
10843 <thead class="entries_header">
10845 <th class="th_name">Property Name</th>
10846 <th class="th_type">Type</th>
10847 <th class="th_description">Description</th>
10848 <th class="th_units">Units</th>
10849 <th class="th_range">Range</th>
10850 <th class="th_hal_version">Initial HIDL HAL version</th>
10851 <th class="th_tags">Tags</th>
10866 <tr class="entry" id="controls_android.hotPixel.mode">
10867 <td class="entry_name
10869 android.<wbr/>hot<wbr/>Pixel.<wbr/>mode
10871 <td class="entry_type">
10872 <span class="entry_type_name entry_type_name_enum">byte</span>
10874 <span class="entry_type_visibility"> [public]</span>
10880 <ul class="entry_type_enum">
10882 <span class="entry_type_enum_name">OFF (v3.2)</span>
10883 <span class="entry_type_enum_notes"><p>No hot pixel correction is applied.<wbr/></p>
10884 <p>The frame rate must not be reduced relative to sensor raw output
10885 for this option.<wbr/></p>
10886 <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>
10889 <span class="entry_type_enum_name">FAST (v3.2)</span>
10890 <span class="entry_type_enum_notes"><p>Hot pixel correction is applied,<wbr/> without reducing frame
10891 rate relative to sensor raw output.<wbr/></p>
10892 <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>
10895 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
10896 <span class="entry_type_enum_notes"><p>High-quality hot pixel correction is applied,<wbr/> at a cost
10897 of possibly reduced frame rate relative to sensor raw output.<wbr/></p>
10898 <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>
10902 </td> <!-- entry_type -->
10904 <td class="entry_description">
10905 <p>Operational mode for hot pixel correction.<wbr/></p>
10908 <td class="entry_units">
10911 <td class="entry_range">
10912 <p><a href="#static_android.hotPixel.availableHotPixelModes">android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes</a></p>
10915 <td class="entry_hal_version">
10919 <td class="entry_tags">
10920 <ul class="entry_tags">
10921 <li><a href="#tag_V1">V1</a></li>
10922 <li><a href="#tag_RAW">RAW</a></li>
10927 <tr class="entries_header">
10928 <th class="th_details" colspan="6">Details</th>
10930 <tr class="entry_cont">
10931 <td class="entry_details" colspan="6">
10932 <p>Hotpixel correction interpolates out,<wbr/> or otherwise removes,<wbr/> pixels
10933 that do not accurately measure the incoming light (i.<wbr/>e.<wbr/> pixels that
10934 are stuck at an arbitrary value or are oversensitive).<wbr/></p>
10939 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10940 <!-- end of entry -->
10944 <!-- end of kind -->
10946 <tr><td colspan="7" class="kind">static</td></tr>
10948 <thead class="entries_header">
10950 <th class="th_name">Property Name</th>
10951 <th class="th_type">Type</th>
10952 <th class="th_description">Description</th>
10953 <th class="th_units">Units</th>
10954 <th class="th_range">Range</th>
10955 <th class="th_hal_version">Initial HIDL HAL version</th>
10956 <th class="th_tags">Tags</th>
10971 <tr class="entry" id="static_android.hotPixel.availableHotPixelModes">
10972 <td class="entry_name
10974 android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes
10976 <td class="entry_type">
10977 <span class="entry_type_name">byte</span>
10978 <span class="entry_type_container">x</span>
10980 <span class="entry_type_array">
10983 <span class="entry_type_visibility"> [public as enumList]</span>
10988 <div class="entry_type_notes">list of enums</div>
10991 </td> <!-- entry_type -->
10993 <td class="entry_description">
10994 <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
10995 camera device.<wbr/></p>
10998 <td class="entry_units">
11001 <td class="entry_range">
11002 <p>Any value listed in <a href="#controls_android.hotPixel.mode">android.<wbr/>hot<wbr/>Pixel.<wbr/>mode</a></p>
11005 <td class="entry_hal_version">
11009 <td class="entry_tags">
11010 <ul class="entry_tags">
11011 <li><a href="#tag_V1">V1</a></li>
11012 <li><a href="#tag_RAW">RAW</a></li>
11017 <tr class="entries_header">
11018 <th class="th_details" colspan="6">Details</th>
11020 <tr class="entry_cont">
11021 <td class="entry_details" colspan="6">
11022 <p>FULL mode camera devices will always support FAST.<wbr/></p>
11026 <tr class="entries_header">
11027 <th class="th_details" colspan="6">HAL Implementation Details</th>
11029 <tr class="entry_cont">
11030 <td class="entry_details" colspan="6">
11031 <p>To avoid performance issues,<wbr/> there will be significantly fewer hot
11032 pixels than actual pixels on the camera sensor.<wbr/>
11033 HAL must support both FAST and HIGH_<wbr/>QUALITY if hot pixel correction control is available
11034 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
11035 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
11036 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
11040 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11041 <!-- end of entry -->
11045 <!-- end of kind -->
11047 <tr><td colspan="7" class="kind">dynamic</td></tr>
11049 <thead class="entries_header">
11051 <th class="th_name">Property Name</th>
11052 <th class="th_type">Type</th>
11053 <th class="th_description">Description</th>
11054 <th class="th_units">Units</th>
11055 <th class="th_range">Range</th>
11056 <th class="th_hal_version">Initial HIDL HAL version</th>
11057 <th class="th_tags">Tags</th>
11072 <tr class="entry" id="dynamic_android.hotPixel.mode">
11073 <td class="entry_name
11075 android.<wbr/>hot<wbr/>Pixel.<wbr/>mode
11077 <td class="entry_type">
11078 <span class="entry_type_name entry_type_name_enum">byte</span>
11080 <span class="entry_type_visibility"> [public]</span>
11086 <ul class="entry_type_enum">
11088 <span class="entry_type_enum_name">OFF (v3.2)</span>
11089 <span class="entry_type_enum_notes"><p>No hot pixel correction is applied.<wbr/></p>
11090 <p>The frame rate must not be reduced relative to sensor raw output
11091 for this option.<wbr/></p>
11092 <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>
11095 <span class="entry_type_enum_name">FAST (v3.2)</span>
11096 <span class="entry_type_enum_notes"><p>Hot pixel correction is applied,<wbr/> without reducing frame
11097 rate relative to sensor raw output.<wbr/></p>
11098 <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>
11101 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
11102 <span class="entry_type_enum_notes"><p>High-quality hot pixel correction is applied,<wbr/> at a cost
11103 of possibly reduced frame rate relative to sensor raw output.<wbr/></p>
11104 <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>
11108 </td> <!-- entry_type -->
11110 <td class="entry_description">
11111 <p>Operational mode for hot pixel correction.<wbr/></p>
11114 <td class="entry_units">
11117 <td class="entry_range">
11118 <p><a href="#static_android.hotPixel.availableHotPixelModes">android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes</a></p>
11121 <td class="entry_hal_version">
11125 <td class="entry_tags">
11126 <ul class="entry_tags">
11127 <li><a href="#tag_V1">V1</a></li>
11128 <li><a href="#tag_RAW">RAW</a></li>
11133 <tr class="entries_header">
11134 <th class="th_details" colspan="6">Details</th>
11136 <tr class="entry_cont">
11137 <td class="entry_details" colspan="6">
11138 <p>Hotpixel correction interpolates out,<wbr/> or otherwise removes,<wbr/> pixels
11139 that do not accurately measure the incoming light (i.<wbr/>e.<wbr/> pixels that
11140 are stuck at an arbitrary value or are oversensitive).<wbr/></p>
11145 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11146 <!-- end of entry -->
11150 <!-- end of kind -->
11153 <!-- end of section -->
11154 <tr><td colspan="7" id="section_jpeg" class="section">jpeg</td></tr>
11157 <tr><td colspan="7" class="kind">controls</td></tr>
11159 <thead class="entries_header">
11161 <th class="th_name">Property Name</th>
11162 <th class="th_type">Type</th>
11163 <th class="th_description">Description</th>
11164 <th class="th_units">Units</th>
11165 <th class="th_range">Range</th>
11166 <th class="th_hal_version">Initial HIDL HAL version</th>
11167 <th class="th_tags">Tags</th>
11182 <tr class="entry" id="controls_android.jpeg.gpsLocation">
11183 <td class="entry_name
11185 android.<wbr/>jpeg.<wbr/>gps<wbr/>Location
11187 <td class="entry_type">
11188 <span class="entry_type_name">byte</span>
11190 <span class="entry_type_visibility"> [java_public as location]</span>
11192 <span class="entry_type_synthetic">[synthetic] </span>
11194 <span class="entry_type_hwlevel">[legacy] </span>
11199 </td> <!-- entry_type -->
11201 <td class="entry_description">
11202 <p>A location object to use when generating image GPS metadata.<wbr/></p>
11205 <td class="entry_units">
11208 <td class="entry_range">
11211 <td class="entry_hal_version">
11215 <td class="entry_tags">
11219 <tr class="entries_header">
11220 <th class="th_details" colspan="6">Details</th>
11222 <tr class="entry_cont">
11223 <td class="entry_details" colspan="6">
11224 <p>Setting a location object in a request will include the GPS coordinates of the location
11225 into any JPEG images captured based on the request.<wbr/> These coordinates can then be
11226 viewed by anyone who receives the JPEG image.<wbr/></p>
11231 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11232 <!-- end of entry -->
11235 <tr class="entry" id="controls_android.jpeg.gpsCoordinates">
11236 <td class="entry_name
11238 android.<wbr/>jpeg.<wbr/>gps<wbr/>Coordinates
11240 <td class="entry_type">
11241 <span class="entry_type_name">double</span>
11242 <span class="entry_type_container">x</span>
11244 <span class="entry_type_array">
11247 <span class="entry_type_visibility"> [ndk_public]</span>
11250 <span class="entry_type_hwlevel">[legacy] </span>
11253 <div class="entry_type_notes">latitude,<wbr/> longitude,<wbr/> altitude.<wbr/> First two in degrees,<wbr/> the third in meters</div>
11256 </td> <!-- entry_type -->
11258 <td class="entry_description">
11259 <p>GPS coordinates to include in output JPEG
11263 <td class="entry_units">
11266 <td class="entry_range">
11267 <p>(-180 - 180],<wbr/> [-90,<wbr/>90],<wbr/> [-inf,<wbr/> inf]</p>
11270 <td class="entry_hal_version">
11274 <td class="entry_tags">
11275 <ul class="entry_tags">
11276 <li><a href="#tag_BC">BC</a></li>
11283 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11284 <!-- end of entry -->
11287 <tr class="entry" id="controls_android.jpeg.gpsProcessingMethod">
11288 <td class="entry_name
11290 android.<wbr/>jpeg.<wbr/>gps<wbr/>Processing<wbr/>Method
11292 <td class="entry_type">
11293 <span class="entry_type_name">byte</span>
11295 <span class="entry_type_visibility"> [ndk_public as string]</span>
11298 <span class="entry_type_hwlevel">[legacy] </span>
11303 </td> <!-- entry_type -->
11305 <td class="entry_description">
11306 <p>32 characters describing GPS algorithm to
11307 include in EXIF.<wbr/></p>
11310 <td class="entry_units">
11311 UTF-8 null-terminated string
11314 <td class="entry_range">
11317 <td class="entry_hal_version">
11321 <td class="entry_tags">
11322 <ul class="entry_tags">
11323 <li><a href="#tag_BC">BC</a></li>
11330 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11331 <!-- end of entry -->
11334 <tr class="entry" id="controls_android.jpeg.gpsTimestamp">
11335 <td class="entry_name
11337 android.<wbr/>jpeg.<wbr/>gps<wbr/>Timestamp
11339 <td class="entry_type">
11340 <span class="entry_type_name">int64</span>
11342 <span class="entry_type_visibility"> [ndk_public]</span>
11345 <span class="entry_type_hwlevel">[legacy] </span>
11350 </td> <!-- entry_type -->
11352 <td class="entry_description">
11353 <p>Time GPS fix was made to include in
11357 <td class="entry_units">
11358 UTC in seconds since January 1,<wbr/> 1970
11361 <td class="entry_range">
11364 <td class="entry_hal_version">
11368 <td class="entry_tags">
11369 <ul class="entry_tags">
11370 <li><a href="#tag_BC">BC</a></li>
11377 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11378 <!-- end of entry -->
11381 <tr class="entry" id="controls_android.jpeg.orientation">
11382 <td class="entry_name
11384 android.<wbr/>jpeg.<wbr/>orientation
11386 <td class="entry_type">
11387 <span class="entry_type_name">int32</span>
11389 <span class="entry_type_visibility"> [public]</span>
11392 <span class="entry_type_hwlevel">[legacy] </span>
11397 </td> <!-- entry_type -->
11399 <td class="entry_description">
11400 <p>The orientation for a JPEG image.<wbr/></p>
11403 <td class="entry_units">
11404 Degrees in multiples of 90
11407 <td class="entry_range">
11408 <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p>
11411 <td class="entry_hal_version">
11415 <td class="entry_tags">
11416 <ul class="entry_tags">
11417 <li><a href="#tag_BC">BC</a></li>
11422 <tr class="entries_header">
11423 <th class="th_details" colspan="6">Details</th>
11425 <tr class="entry_cont">
11426 <td class="entry_details" colspan="6">
11427 <p>The clockwise rotation angle in degrees,<wbr/> relative to the orientation
11428 to the camera,<wbr/> that the JPEG picture needs to be rotated by,<wbr/> to be viewed
11430 <p>Camera devices may either encode this value into the JPEG EXIF header,<wbr/> or
11431 rotate the image data to match this orientation.<wbr/> When the image data is rotated,<wbr/>
11432 the thumbnail data will also be rotated.<wbr/></p>
11433 <p>Note that this orientation is relative to the orientation of the camera sensor,<wbr/> given
11434 by <a href="#static_android.sensor.orientation">android.<wbr/>sensor.<wbr/>orientation</a>.<wbr/></p>
11435 <p>To translate from the device orientation given by the Android sensor APIs,<wbr/> the following
11436 sample code may be used:</p>
11437 <pre><code>private int getJpegOrientation(CameraCharacteristics c,<wbr/> int deviceOrientation) {
11438 if (deviceOrientation == android.<wbr/>view.<wbr/>Orientation<wbr/>Event<wbr/>Listener.<wbr/>ORIENTATION_<wbr/>UNKNOWN) return 0;
11439 int sensorOrientation = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>SENSOR_<wbr/>ORIENTATION);
11441 //<wbr/> Round device orientation to a multiple of 90
11442 deviceOrientation = (deviceOrientation + 45) /<wbr/> 90 * 90;
11444 //<wbr/> Reverse device orientation for front-facing cameras
11445 boolean facingFront = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING) == Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING_<wbr/>FRONT;
11446 if (facingFront) deviceOrientation = -deviceOrientation;
11448 //<wbr/> Calculate desired JPEG orientation relative to camera orientation to make
11449 //<wbr/> the image upright relative to the device orientation
11450 int jpegOrientation = (sensorOrientation + deviceOrientation + 360) % 360;
11452 return jpegOrientation;
11459 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11460 <!-- end of entry -->
11463 <tr class="entry" id="controls_android.jpeg.quality">
11464 <td class="entry_name
11466 android.<wbr/>jpeg.<wbr/>quality
11468 <td class="entry_type">
11469 <span class="entry_type_name">byte</span>
11471 <span class="entry_type_visibility"> [public]</span>
11474 <span class="entry_type_hwlevel">[legacy] </span>
11479 </td> <!-- entry_type -->
11481 <td class="entry_description">
11482 <p>Compression quality of the final JPEG
11486 <td class="entry_units">
11489 <td class="entry_range">
11490 <p>1-100; larger is higher quality</p>
11493 <td class="entry_hal_version">
11497 <td class="entry_tags">
11498 <ul class="entry_tags">
11499 <li><a href="#tag_BC">BC</a></li>
11504 <tr class="entries_header">
11505 <th class="th_details" colspan="6">Details</th>
11507 <tr class="entry_cont">
11508 <td class="entry_details" colspan="6">
11509 <p>85-95 is typical usage range.<wbr/></p>
11514 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11515 <!-- end of entry -->
11518 <tr class="entry" id="controls_android.jpeg.thumbnailQuality">
11519 <td class="entry_name
11521 android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Quality
11523 <td class="entry_type">
11524 <span class="entry_type_name">byte</span>
11526 <span class="entry_type_visibility"> [public]</span>
11529 <span class="entry_type_hwlevel">[legacy] </span>
11534 </td> <!-- entry_type -->
11536 <td class="entry_description">
11537 <p>Compression quality of JPEG
11538 thumbnail.<wbr/></p>
11541 <td class="entry_units">
11544 <td class="entry_range">
11545 <p>1-100; larger is higher quality</p>
11548 <td class="entry_hal_version">
11552 <td class="entry_tags">
11553 <ul class="entry_tags">
11554 <li><a href="#tag_BC">BC</a></li>
11561 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11562 <!-- end of entry -->
11565 <tr class="entry" id="controls_android.jpeg.thumbnailSize">
11566 <td class="entry_name
11568 android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size
11570 <td class="entry_type">
11571 <span class="entry_type_name">int32</span>
11572 <span class="entry_type_container">x</span>
11574 <span class="entry_type_array">
11577 <span class="entry_type_visibility"> [public as size]</span>
11580 <span class="entry_type_hwlevel">[legacy] </span>
11585 </td> <!-- entry_type -->
11587 <td class="entry_description">
11588 <p>Resolution of embedded JPEG thumbnail.<wbr/></p>
11591 <td class="entry_units">
11594 <td class="entry_range">
11595 <p><a href="#static_android.jpeg.availableThumbnailSizes">android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes</a></p>
11598 <td class="entry_hal_version">
11602 <td class="entry_tags">
11603 <ul class="entry_tags">
11604 <li><a href="#tag_BC">BC</a></li>
11609 <tr class="entries_header">
11610 <th class="th_details" colspan="6">Details</th>
11612 <tr class="entry_cont">
11613 <td class="entry_details" colspan="6">
11614 <p>When set to (0,<wbr/> 0) value,<wbr/> the JPEG EXIF will not contain thumbnail,<wbr/>
11615 but the captured JPEG will still be a valid image.<wbr/></p>
11616 <p>For best results,<wbr/> when issuing a request for a JPEG image,<wbr/> the thumbnail size selected
11617 should have the same aspect ratio as the main JPEG output.<wbr/></p>
11618 <p>If the thumbnail image aspect ratio differs from the JPEG primary image aspect
11619 ratio,<wbr/> the camera device creates the thumbnail by cropping it from the primary image.<wbr/>
11620 For example,<wbr/> if the primary image has 4:3 aspect ratio,<wbr/> the thumbnail image has
11621 16:9 aspect ratio,<wbr/> the primary image will be cropped vertically (letterbox) to
11622 generate the thumbnail image.<wbr/> The thumbnail image will always have a smaller Field
11623 Of View (FOV) than the primary image when aspect ratios differ.<wbr/></p>
11624 <p>When an <a href="#controls_android.jpeg.orientation">android.<wbr/>jpeg.<wbr/>orientation</a> of non-zero degree is requested,<wbr/>
11625 the camera device will handle thumbnail rotation in one of the following ways:</p>
11627 <li>Set the <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>
11628 and keep jpeg and thumbnail image data unrotated.<wbr/></li>
11629 <li>Rotate the jpeg and thumbnail image data and not set
11630 <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>.<wbr/> In this
11631 case,<wbr/> LIMITED or FULL hardware level devices will report rotated thumnail size in
11632 capture result,<wbr/> so the width and height will be interchanged if 90 or 270 degree
11633 orientation is requested.<wbr/> LEGACY device will always report unrotated thumbnail
11639 <tr class="entries_header">
11640 <th class="th_details" colspan="6">HAL Implementation Details</th>
11642 <tr class="entry_cont">
11643 <td class="entry_details" colspan="6">
11644 <p>The HAL must not squeeze or stretch the downscaled primary image to generate thumbnail.<wbr/>
11645 The cropping must be done on the primary jpeg image rather than the sensor active array.<wbr/>
11646 The stream cropping rule specified by "S5.<wbr/> Cropping" in camera3.<wbr/>h doesn't apply to the
11647 thumbnail image cropping.<wbr/></p>
11651 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11652 <!-- end of entry -->
11656 <!-- end of kind -->
11658 <tr><td colspan="7" class="kind">static</td></tr>
11660 <thead class="entries_header">
11662 <th class="th_name">Property Name</th>
11663 <th class="th_type">Type</th>
11664 <th class="th_description">Description</th>
11665 <th class="th_units">Units</th>
11666 <th class="th_range">Range</th>
11667 <th class="th_hal_version">Initial HIDL HAL version</th>
11668 <th class="th_tags">Tags</th>
11683 <tr class="entry" id="static_android.jpeg.availableThumbnailSizes">
11684 <td class="entry_name
11686 android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes
11688 <td class="entry_type">
11689 <span class="entry_type_name">int32</span>
11690 <span class="entry_type_container">x</span>
11692 <span class="entry_type_array">
11695 <span class="entry_type_visibility"> [public as size]</span>
11698 <span class="entry_type_hwlevel">[legacy] </span>
11703 </td> <!-- entry_type -->
11705 <td class="entry_description">
11706 <p>List of JPEG thumbnail sizes for <a href="#controls_android.jpeg.thumbnailSize">android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size</a> supported by this
11707 camera device.<wbr/></p>
11710 <td class="entry_units">
11713 <td class="entry_range">
11716 <td class="entry_hal_version">
11720 <td class="entry_tags">
11721 <ul class="entry_tags">
11722 <li><a href="#tag_BC">BC</a></li>
11727 <tr class="entries_header">
11728 <th class="th_details" colspan="6">Details</th>
11730 <tr class="entry_cont">
11731 <td class="entry_details" colspan="6">
11732 <p>This list will include at least one non-zero resolution,<wbr/> plus <code>(0,<wbr/>0)</code> for indicating no
11733 thumbnail should be generated.<wbr/></p>
11734 <p>Below condiditions will be satisfied for this size list:</p>
11736 <li>The sizes will be sorted by increasing pixel area (width x height).<wbr/>
11737 If several resolutions have the same area,<wbr/> they will be sorted by increasing width.<wbr/></li>
11738 <li>The aspect ratio of the largest thumbnail size will be same as the
11739 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/>
11740 The largest size is defined as the size that has the largest pixel area
11741 in a given size list.<wbr/></li>
11742 <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
11743 one corresponding size that has the same aspect ratio in availableThumbnailSizes,<wbr/>
11744 and vice versa.<wbr/></li>
11745 <li>All non-<code>(0,<wbr/> 0)</code> sizes will have non-zero widths and heights.<wbr/></li>
11751 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11752 <!-- end of entry -->
11755 <tr class="entry" id="static_android.jpeg.maxSize">
11756 <td class="entry_name
11758 android.<wbr/>jpeg.<wbr/>max<wbr/>Size
11760 <td class="entry_type">
11761 <span class="entry_type_name">int32</span>
11763 <span class="entry_type_visibility"> [system]</span>
11770 </td> <!-- entry_type -->
11772 <td class="entry_description">
11773 <p>Maximum size in bytes for the compressed
11777 <td class="entry_units">
11780 <td class="entry_range">
11781 <p>Must be large enough to fit any JPEG produced by
11785 <td class="entry_hal_version">
11789 <td class="entry_tags">
11793 <tr class="entries_header">
11794 <th class="th_details" colspan="6">Details</th>
11796 <tr class="entry_cont">
11797 <td class="entry_details" colspan="6">
11798 <p>This is used for sizing the gralloc buffers for
11804 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11805 <!-- end of entry -->
11809 <!-- end of kind -->
11811 <tr><td colspan="7" class="kind">dynamic</td></tr>
11813 <thead class="entries_header">
11815 <th class="th_name">Property Name</th>
11816 <th class="th_type">Type</th>
11817 <th class="th_description">Description</th>
11818 <th class="th_units">Units</th>
11819 <th class="th_range">Range</th>
11820 <th class="th_hal_version">Initial HIDL HAL version</th>
11821 <th class="th_tags">Tags</th>
11836 <tr class="entry" id="dynamic_android.jpeg.gpsLocation">
11837 <td class="entry_name
11839 android.<wbr/>jpeg.<wbr/>gps<wbr/>Location
11841 <td class="entry_type">
11842 <span class="entry_type_name">byte</span>
11844 <span class="entry_type_visibility"> [java_public as location]</span>
11846 <span class="entry_type_synthetic">[synthetic] </span>
11848 <span class="entry_type_hwlevel">[legacy] </span>
11853 </td> <!-- entry_type -->
11855 <td class="entry_description">
11856 <p>A location object to use when generating image GPS metadata.<wbr/></p>
11859 <td class="entry_units">
11862 <td class="entry_range">
11865 <td class="entry_hal_version">
11869 <td class="entry_tags">
11873 <tr class="entries_header">
11874 <th class="th_details" colspan="6">Details</th>
11876 <tr class="entry_cont">
11877 <td class="entry_details" colspan="6">
11878 <p>Setting a location object in a request will include the GPS coordinates of the location
11879 into any JPEG images captured based on the request.<wbr/> These coordinates can then be
11880 viewed by anyone who receives the JPEG image.<wbr/></p>
11885 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11886 <!-- end of entry -->
11889 <tr class="entry" id="dynamic_android.jpeg.gpsCoordinates">
11890 <td class="entry_name
11892 android.<wbr/>jpeg.<wbr/>gps<wbr/>Coordinates
11894 <td class="entry_type">
11895 <span class="entry_type_name">double</span>
11896 <span class="entry_type_container">x</span>
11898 <span class="entry_type_array">
11901 <span class="entry_type_visibility"> [ndk_public]</span>
11904 <span class="entry_type_hwlevel">[legacy] </span>
11907 <div class="entry_type_notes">latitude,<wbr/> longitude,<wbr/> altitude.<wbr/> First two in degrees,<wbr/> the third in meters</div>
11910 </td> <!-- entry_type -->
11912 <td class="entry_description">
11913 <p>GPS coordinates to include in output JPEG
11917 <td class="entry_units">
11920 <td class="entry_range">
11921 <p>(-180 - 180],<wbr/> [-90,<wbr/>90],<wbr/> [-inf,<wbr/> inf]</p>
11924 <td class="entry_hal_version">
11928 <td class="entry_tags">
11929 <ul class="entry_tags">
11930 <li><a href="#tag_BC">BC</a></li>
11937 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11938 <!-- end of entry -->
11941 <tr class="entry" id="dynamic_android.jpeg.gpsProcessingMethod">
11942 <td class="entry_name
11944 android.<wbr/>jpeg.<wbr/>gps<wbr/>Processing<wbr/>Method
11946 <td class="entry_type">
11947 <span class="entry_type_name">byte</span>
11949 <span class="entry_type_visibility"> [ndk_public as string]</span>
11952 <span class="entry_type_hwlevel">[legacy] </span>
11957 </td> <!-- entry_type -->
11959 <td class="entry_description">
11960 <p>32 characters describing GPS algorithm to
11961 include in EXIF.<wbr/></p>
11964 <td class="entry_units">
11965 UTF-8 null-terminated string
11968 <td class="entry_range">
11971 <td class="entry_hal_version">
11975 <td class="entry_tags">
11976 <ul class="entry_tags">
11977 <li><a href="#tag_BC">BC</a></li>
11984 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11985 <!-- end of entry -->
11988 <tr class="entry" id="dynamic_android.jpeg.gpsTimestamp">
11989 <td class="entry_name
11991 android.<wbr/>jpeg.<wbr/>gps<wbr/>Timestamp
11993 <td class="entry_type">
11994 <span class="entry_type_name">int64</span>
11996 <span class="entry_type_visibility"> [ndk_public]</span>
11999 <span class="entry_type_hwlevel">[legacy] </span>
12004 </td> <!-- entry_type -->
12006 <td class="entry_description">
12007 <p>Time GPS fix was made to include in
12011 <td class="entry_units">
12012 UTC in seconds since January 1,<wbr/> 1970
12015 <td class="entry_range">
12018 <td class="entry_hal_version">
12022 <td class="entry_tags">
12023 <ul class="entry_tags">
12024 <li><a href="#tag_BC">BC</a></li>
12031 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12032 <!-- end of entry -->
12035 <tr class="entry" id="dynamic_android.jpeg.orientation">
12036 <td class="entry_name
12038 android.<wbr/>jpeg.<wbr/>orientation
12040 <td class="entry_type">
12041 <span class="entry_type_name">int32</span>
12043 <span class="entry_type_visibility"> [public]</span>
12046 <span class="entry_type_hwlevel">[legacy] </span>
12051 </td> <!-- entry_type -->
12053 <td class="entry_description">
12054 <p>The orientation for a JPEG image.<wbr/></p>
12057 <td class="entry_units">
12058 Degrees in multiples of 90
12061 <td class="entry_range">
12062 <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p>
12065 <td class="entry_hal_version">
12069 <td class="entry_tags">
12070 <ul class="entry_tags">
12071 <li><a href="#tag_BC">BC</a></li>
12076 <tr class="entries_header">
12077 <th class="th_details" colspan="6">Details</th>
12079 <tr class="entry_cont">
12080 <td class="entry_details" colspan="6">
12081 <p>The clockwise rotation angle in degrees,<wbr/> relative to the orientation
12082 to the camera,<wbr/> that the JPEG picture needs to be rotated by,<wbr/> to be viewed
12084 <p>Camera devices may either encode this value into the JPEG EXIF header,<wbr/> or
12085 rotate the image data to match this orientation.<wbr/> When the image data is rotated,<wbr/>
12086 the thumbnail data will also be rotated.<wbr/></p>
12087 <p>Note that this orientation is relative to the orientation of the camera sensor,<wbr/> given
12088 by <a href="#static_android.sensor.orientation">android.<wbr/>sensor.<wbr/>orientation</a>.<wbr/></p>
12089 <p>To translate from the device orientation given by the Android sensor APIs,<wbr/> the following
12090 sample code may be used:</p>
12091 <pre><code>private int getJpegOrientation(CameraCharacteristics c,<wbr/> int deviceOrientation) {
12092 if (deviceOrientation == android.<wbr/>view.<wbr/>Orientation<wbr/>Event<wbr/>Listener.<wbr/>ORIENTATION_<wbr/>UNKNOWN) return 0;
12093 int sensorOrientation = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>SENSOR_<wbr/>ORIENTATION);
12095 //<wbr/> Round device orientation to a multiple of 90
12096 deviceOrientation = (deviceOrientation + 45) /<wbr/> 90 * 90;
12098 //<wbr/> Reverse device orientation for front-facing cameras
12099 boolean facingFront = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING) == Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING_<wbr/>FRONT;
12100 if (facingFront) deviceOrientation = -deviceOrientation;
12102 //<wbr/> Calculate desired JPEG orientation relative to camera orientation to make
12103 //<wbr/> the image upright relative to the device orientation
12104 int jpegOrientation = (sensorOrientation + deviceOrientation + 360) % 360;
12106 return jpegOrientation;
12113 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12114 <!-- end of entry -->
12117 <tr class="entry" id="dynamic_android.jpeg.quality">
12118 <td class="entry_name
12120 android.<wbr/>jpeg.<wbr/>quality
12122 <td class="entry_type">
12123 <span class="entry_type_name">byte</span>
12125 <span class="entry_type_visibility"> [public]</span>
12128 <span class="entry_type_hwlevel">[legacy] </span>
12133 </td> <!-- entry_type -->
12135 <td class="entry_description">
12136 <p>Compression quality of the final JPEG
12140 <td class="entry_units">
12143 <td class="entry_range">
12144 <p>1-100; larger is higher quality</p>
12147 <td class="entry_hal_version">
12151 <td class="entry_tags">
12152 <ul class="entry_tags">
12153 <li><a href="#tag_BC">BC</a></li>
12158 <tr class="entries_header">
12159 <th class="th_details" colspan="6">Details</th>
12161 <tr class="entry_cont">
12162 <td class="entry_details" colspan="6">
12163 <p>85-95 is typical usage range.<wbr/></p>
12168 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12169 <!-- end of entry -->
12172 <tr class="entry" id="dynamic_android.jpeg.size">
12173 <td class="entry_name
12175 android.<wbr/>jpeg.<wbr/>size
12177 <td class="entry_type">
12178 <span class="entry_type_name">int32</span>
12180 <span class="entry_type_visibility"> [system]</span>
12187 </td> <!-- entry_type -->
12189 <td class="entry_description">
12190 <p>The size of the compressed JPEG image,<wbr/> in
12194 <td class="entry_units">
12197 <td class="entry_range">
12201 <td class="entry_hal_version">
12205 <td class="entry_tags">
12206 <ul class="entry_tags">
12207 <li><a href="#tag_FUTURE">FUTURE</a></li>
12212 <tr class="entries_header">
12213 <th class="th_details" colspan="6">Details</th>
12215 <tr class="entry_cont">
12216 <td class="entry_details" colspan="6">
12217 <p>If no JPEG output is produced for the request,<wbr/>
12218 this must be 0.<wbr/></p>
12219 <p>Otherwise,<wbr/> this describes the real size of the compressed
12220 JPEG image placed in the output stream.<wbr/> More specifically,<wbr/>
12221 if <a href="#static_android.jpeg.maxSize">android.<wbr/>jpeg.<wbr/>max<wbr/>Size</a> = 1000000,<wbr/> and a specific capture
12222 has <a href="#dynamic_android.jpeg.size">android.<wbr/>jpeg.<wbr/>size</a> = 500000,<wbr/> then the output buffer from
12223 the JPEG stream will be 1000000 bytes,<wbr/> of which the first
12224 500000 make up the real data.<wbr/></p>
12229 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12230 <!-- end of entry -->
12233 <tr class="entry" id="dynamic_android.jpeg.thumbnailQuality">
12234 <td class="entry_name
12236 android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Quality
12238 <td class="entry_type">
12239 <span class="entry_type_name">byte</span>
12241 <span class="entry_type_visibility"> [public]</span>
12244 <span class="entry_type_hwlevel">[legacy] </span>
12249 </td> <!-- entry_type -->
12251 <td class="entry_description">
12252 <p>Compression quality of JPEG
12253 thumbnail.<wbr/></p>
12256 <td class="entry_units">
12259 <td class="entry_range">
12260 <p>1-100; larger is higher quality</p>
12263 <td class="entry_hal_version">
12267 <td class="entry_tags">
12268 <ul class="entry_tags">
12269 <li><a href="#tag_BC">BC</a></li>
12276 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12277 <!-- end of entry -->
12280 <tr class="entry" id="dynamic_android.jpeg.thumbnailSize">
12281 <td class="entry_name
12283 android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size
12285 <td class="entry_type">
12286 <span class="entry_type_name">int32</span>
12287 <span class="entry_type_container">x</span>
12289 <span class="entry_type_array">
12292 <span class="entry_type_visibility"> [public as size]</span>
12295 <span class="entry_type_hwlevel">[legacy] </span>
12300 </td> <!-- entry_type -->
12302 <td class="entry_description">
12303 <p>Resolution of embedded JPEG thumbnail.<wbr/></p>
12306 <td class="entry_units">
12309 <td class="entry_range">
12310 <p><a href="#static_android.jpeg.availableThumbnailSizes">android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes</a></p>
12313 <td class="entry_hal_version">
12317 <td class="entry_tags">
12318 <ul class="entry_tags">
12319 <li><a href="#tag_BC">BC</a></li>
12324 <tr class="entries_header">
12325 <th class="th_details" colspan="6">Details</th>
12327 <tr class="entry_cont">
12328 <td class="entry_details" colspan="6">
12329 <p>When set to (0,<wbr/> 0) value,<wbr/> the JPEG EXIF will not contain thumbnail,<wbr/>
12330 but the captured JPEG will still be a valid image.<wbr/></p>
12331 <p>For best results,<wbr/> when issuing a request for a JPEG image,<wbr/> the thumbnail size selected
12332 should have the same aspect ratio as the main JPEG output.<wbr/></p>
12333 <p>If the thumbnail image aspect ratio differs from the JPEG primary image aspect
12334 ratio,<wbr/> the camera device creates the thumbnail by cropping it from the primary image.<wbr/>
12335 For example,<wbr/> if the primary image has 4:3 aspect ratio,<wbr/> the thumbnail image has
12336 16:9 aspect ratio,<wbr/> the primary image will be cropped vertically (letterbox) to
12337 generate the thumbnail image.<wbr/> The thumbnail image will always have a smaller Field
12338 Of View (FOV) than the primary image when aspect ratios differ.<wbr/></p>
12339 <p>When an <a href="#controls_android.jpeg.orientation">android.<wbr/>jpeg.<wbr/>orientation</a> of non-zero degree is requested,<wbr/>
12340 the camera device will handle thumbnail rotation in one of the following ways:</p>
12342 <li>Set the <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>
12343 and keep jpeg and thumbnail image data unrotated.<wbr/></li>
12344 <li>Rotate the jpeg and thumbnail image data and not set
12345 <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>.<wbr/> In this
12346 case,<wbr/> LIMITED or FULL hardware level devices will report rotated thumnail size in
12347 capture result,<wbr/> so the width and height will be interchanged if 90 or 270 degree
12348 orientation is requested.<wbr/> LEGACY device will always report unrotated thumbnail
12354 <tr class="entries_header">
12355 <th class="th_details" colspan="6">HAL Implementation Details</th>
12357 <tr class="entry_cont">
12358 <td class="entry_details" colspan="6">
12359 <p>The HAL must not squeeze or stretch the downscaled primary image to generate thumbnail.<wbr/>
12360 The cropping must be done on the primary jpeg image rather than the sensor active array.<wbr/>
12361 The stream cropping rule specified by "S5.<wbr/> Cropping" in camera3.<wbr/>h doesn't apply to the
12362 thumbnail image cropping.<wbr/></p>
12366 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12367 <!-- end of entry -->
12371 <!-- end of kind -->
12374 <!-- end of section -->
12375 <tr><td colspan="7" id="section_lens" class="section">lens</td></tr>
12378 <tr><td colspan="7" class="kind">controls</td></tr>
12380 <thead class="entries_header">
12382 <th class="th_name">Property Name</th>
12383 <th class="th_type">Type</th>
12384 <th class="th_description">Description</th>
12385 <th class="th_units">Units</th>
12386 <th class="th_range">Range</th>
12387 <th class="th_hal_version">Initial HIDL HAL version</th>
12388 <th class="th_tags">Tags</th>
12403 <tr class="entry" id="controls_android.lens.aperture">
12404 <td class="entry_name
12406 android.<wbr/>lens.<wbr/>aperture
12408 <td class="entry_type">
12409 <span class="entry_type_name">float</span>
12411 <span class="entry_type_visibility"> [public]</span>
12414 <span class="entry_type_hwlevel">[full] </span>
12419 </td> <!-- entry_type -->
12421 <td class="entry_description">
12422 <p>The desired lens aperture size,<wbr/> as a ratio of lens focal length to the
12423 effective aperture diameter.<wbr/></p>
12426 <td class="entry_units">
12427 The f-number (f/<wbr/>N)
12430 <td class="entry_range">
12431 <p><a href="#static_android.lens.info.availableApertures">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures</a></p>
12434 <td class="entry_hal_version">
12438 <td class="entry_tags">
12439 <ul class="entry_tags">
12440 <li><a href="#tag_V1">V1</a></li>
12445 <tr class="entries_header">
12446 <th class="th_details" colspan="6">Details</th>
12448 <tr class="entry_cont">
12449 <td class="entry_details" colspan="6">
12450 <p>Setting this value is only supported on the camera devices that have a variable
12451 aperture lens.<wbr/></p>
12452 <p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/>
12453 this can be set along with <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
12454 <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>
12455 to achieve manual exposure control.<wbr/></p>
12456 <p>The requested aperture value may take several frames to reach the
12457 requested value; the camera device will report the current (intermediate)
12458 aperture size in capture result metadata while the aperture is changing.<wbr/>
12459 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>
12460 <p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is one of
12461 the ON modes,<wbr/> this will be overridden by the camera device
12462 auto-exposure algorithm,<wbr/> the overridden values are then provided
12463 back to the user in the corresponding result.<wbr/></p>
12468 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12469 <!-- end of entry -->
12472 <tr class="entry" id="controls_android.lens.filterDensity">
12473 <td class="entry_name
12475 android.<wbr/>lens.<wbr/>filter<wbr/>Density
12477 <td class="entry_type">
12478 <span class="entry_type_name">float</span>
12480 <span class="entry_type_visibility"> [public]</span>
12483 <span class="entry_type_hwlevel">[full] </span>
12488 </td> <!-- entry_type -->
12490 <td class="entry_description">
12491 <p>The desired setting for the lens neutral density filter(s).<wbr/></p>
12494 <td class="entry_units">
12495 Exposure Value (EV)
12498 <td class="entry_range">
12499 <p><a href="#static_android.lens.info.availableFilterDensities">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities</a></p>
12502 <td class="entry_hal_version">
12506 <td class="entry_tags">
12507 <ul class="entry_tags">
12508 <li><a href="#tag_V1">V1</a></li>
12513 <tr class="entries_header">
12514 <th class="th_details" colspan="6">Details</th>
12516 <tr class="entry_cont">
12517 <td class="entry_details" colspan="6">
12518 <p>This control will not be supported on most camera devices.<wbr/></p>
12519 <p>Lens filters are typically used to lower the amount of light the
12520 sensor is exposed to (measured in steps of EV).<wbr/> As used here,<wbr/> an EV
12521 step is the standard logarithmic representation,<wbr/> which are
12522 non-negative,<wbr/> and inversely proportional to the amount of light
12523 hitting the sensor.<wbr/> For example,<wbr/> setting this to 0 would result
12524 in no reduction of the incoming light,<wbr/> and setting this to 2 would
12525 mean that the filter is set to reduce incoming light by two stops
12526 (allowing 1/<wbr/>4 of the prior amount of light to the sensor).<wbr/></p>
12527 <p>It may take several frames before the lens filter density changes
12528 to the requested value.<wbr/> While the filter density is still changing,<wbr/>
12529 <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p>
12534 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12535 <!-- end of entry -->
12538 <tr class="entry" id="controls_android.lens.focalLength">
12539 <td class="entry_name
12541 android.<wbr/>lens.<wbr/>focal<wbr/>Length
12543 <td class="entry_type">
12544 <span class="entry_type_name">float</span>
12546 <span class="entry_type_visibility"> [public]</span>
12549 <span class="entry_type_hwlevel">[legacy] </span>
12554 </td> <!-- entry_type -->
12556 <td class="entry_description">
12557 <p>The desired lens focal length; used for optical zoom.<wbr/></p>
12560 <td class="entry_units">
12564 <td class="entry_range">
12565 <p><a href="#static_android.lens.info.availableFocalLengths">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths</a></p>
12568 <td class="entry_hal_version">
12572 <td class="entry_tags">
12573 <ul class="entry_tags">
12574 <li><a href="#tag_V1">V1</a></li>
12579 <tr class="entries_header">
12580 <th class="th_details" colspan="6">Details</th>
12582 <tr class="entry_cont">
12583 <td class="entry_details" colspan="6">
12584 <p>This setting controls the physical focal length of the camera
12585 device's lens.<wbr/> Changing the focal length changes the field of
12586 view of the camera device,<wbr/> and is usually used for optical zoom.<wbr/></p>
12587 <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
12588 setting won't be applied instantaneously,<wbr/> and it may take several
12589 frames before the lens can change to the requested focal length.<wbr/>
12590 While the focal length is still changing,<wbr/> <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will
12591 be set to MOVING.<wbr/></p>
12592 <p>Optical zoom will not be supported on most devices.<wbr/></p>
12597 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12598 <!-- end of entry -->
12601 <tr class="entry" id="controls_android.lens.focusDistance">
12602 <td class="entry_name
12604 android.<wbr/>lens.<wbr/>focus<wbr/>Distance
12606 <td class="entry_type">
12607 <span class="entry_type_name">float</span>
12609 <span class="entry_type_visibility"> [public]</span>
12612 <span class="entry_type_hwlevel">[full] </span>
12617 </td> <!-- entry_type -->
12619 <td class="entry_description">
12620 <p>Desired distance to plane of sharpest focus,<wbr/>
12621 measured from frontmost surface of the lens.<wbr/></p>
12624 <td class="entry_units">
12625 See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
12628 <td class="entry_range">
12632 <td class="entry_hal_version">
12636 <td class="entry_tags">
12637 <ul class="entry_tags">
12638 <li><a href="#tag_BC">BC</a></li>
12639 <li><a href="#tag_V1">V1</a></li>
12644 <tr class="entries_header">
12645 <th class="th_details" colspan="6">Details</th>
12647 <tr class="entry_cont">
12648 <td class="entry_details" colspan="6">
12649 <p>This control can be used for setting manual focus,<wbr/> on devices that support
12650 the MANUAL_<wbr/>SENSOR capability and have a variable-focus lens (see
12651 <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a>).<wbr/></p>
12652 <p>A value of <code>0.<wbr/>0f</code> means infinity focus.<wbr/> The value set will be clamped to
12653 <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>
12654 <p>Like <a href="#controls_android.lens.focalLength">android.<wbr/>lens.<wbr/>focal<wbr/>Length</a>,<wbr/> this setting won't be applied
12655 instantaneously,<wbr/> and it may take several frames before the lens
12656 can move to the requested focus distance.<wbr/> While the lens is still moving,<wbr/>
12657 <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p>
12658 <p>LEGACY devices support at most setting this to <code>0.<wbr/>0f</code>
12659 for infinity focus.<wbr/></p>
12664 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12665 <!-- end of entry -->
12668 <tr class="entry" id="controls_android.lens.opticalStabilizationMode">
12669 <td class="entry_name
12671 android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode
12673 <td class="entry_type">
12674 <span class="entry_type_name entry_type_name_enum">byte</span>
12676 <span class="entry_type_visibility"> [public]</span>
12679 <span class="entry_type_hwlevel">[limited] </span>
12683 <ul class="entry_type_enum">
12685 <span class="entry_type_enum_name">OFF (v3.2)</span>
12686 <span class="entry_type_enum_notes"><p>Optical stabilization is unavailable.<wbr/></p></span>
12689 <span class="entry_type_enum_name">ON (v3.2)</span>
12690 <span class="entry_type_enum_optional">[optional]</span>
12691 <span class="entry_type_enum_notes"><p>Optical stabilization is enabled.<wbr/></p></span>
12695 </td> <!-- entry_type -->
12697 <td class="entry_description">
12698 <p>Sets whether the camera device uses optical image stabilization (OIS)
12699 when capturing images.<wbr/></p>
12702 <td class="entry_units">
12705 <td class="entry_range">
12706 <p><a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a></p>
12709 <td class="entry_hal_version">
12713 <td class="entry_tags">
12714 <ul class="entry_tags">
12715 <li><a href="#tag_V1">V1</a></li>
12720 <tr class="entries_header">
12721 <th class="th_details" colspan="6">Details</th>
12723 <tr class="entry_cont">
12724 <td class="entry_details" colspan="6">
12725 <p>OIS is used to compensate for motion blur due to small
12726 movements of the camera during capture.<wbr/> Unlike digital image
12727 stabilization (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> OIS
12728 makes use of mechanical elements to stabilize the camera
12729 sensor,<wbr/> and thus allows for longer exposure times before
12730 camera shake becomes apparent.<wbr/></p>
12731 <p>Switching between different optical stabilization modes may take several
12732 frames to initialize,<wbr/> the camera device will report the current mode in
12733 capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/> the
12734 optical stabilization modes in the first several capture results may still
12735 be "OFF",<wbr/> and it will become "ON" when the initialization is done.<wbr/></p>
12736 <p>If a camera device supports both OIS and digital image stabilization
12737 (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may produce undesirable
12738 interaction,<wbr/> so it is recommended not to enable both at the same time.<wbr/></p>
12739 <p>Not all devices will support OIS; see
12740 <a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a> for
12741 available controls.<wbr/></p>
12746 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12747 <!-- end of entry -->
12751 <!-- end of kind -->
12753 <tr><td colspan="7" class="kind">static</td></tr>
12755 <thead class="entries_header">
12757 <th class="th_name">Property Name</th>
12758 <th class="th_type">Type</th>
12759 <th class="th_description">Description</th>
12760 <th class="th_units">Units</th>
12761 <th class="th_range">Range</th>
12762 <th class="th_hal_version">Initial HIDL HAL version</th>
12763 <th class="th_tags">Tags</th>
12780 <tr class="entry" id="static_android.lens.info.availableApertures">
12781 <td class="entry_name
12783 android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures
12785 <td class="entry_type">
12786 <span class="entry_type_name">float</span>
12787 <span class="entry_type_container">x</span>
12789 <span class="entry_type_array">
12792 <span class="entry_type_visibility"> [public]</span>
12795 <span class="entry_type_hwlevel">[full] </span>
12800 </td> <!-- entry_type -->
12802 <td class="entry_description">
12803 <p>List of aperture size values for <a href="#controls_android.lens.aperture">android.<wbr/>lens.<wbr/>aperture</a> that are
12804 supported by this camera device.<wbr/></p>
12807 <td class="entry_units">
12808 The aperture f-number
12811 <td class="entry_range">
12814 <td class="entry_hal_version">
12818 <td class="entry_tags">
12819 <ul class="entry_tags">
12820 <li><a href="#tag_V1">V1</a></li>
12825 <tr class="entries_header">
12826 <th class="th_details" colspan="6">Details</th>
12828 <tr class="entry_cont">
12829 <td class="entry_details" colspan="6">
12830 <p>If the camera device doesn't support a variable lens aperture,<wbr/>
12831 this list will contain only one value,<wbr/> which is the fixed aperture size.<wbr/></p>
12832 <p>If the camera device supports a variable aperture,<wbr/> the aperture values
12833 in this list will be sorted in ascending order.<wbr/></p>
12838 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12839 <!-- end of entry -->
12842 <tr class="entry" id="static_android.lens.info.availableFilterDensities">
12843 <td class="entry_name
12845 android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities
12847 <td class="entry_type">
12848 <span class="entry_type_name">float</span>
12849 <span class="entry_type_container">x</span>
12851 <span class="entry_type_array">
12854 <span class="entry_type_visibility"> [public]</span>
12857 <span class="entry_type_hwlevel">[full] </span>
12862 </td> <!-- entry_type -->
12864 <td class="entry_description">
12865 <p>List of neutral density filter values for
12866 <a href="#controls_android.lens.filterDensity">android.<wbr/>lens.<wbr/>filter<wbr/>Density</a> that are supported by this camera device.<wbr/></p>
12869 <td class="entry_units">
12870 Exposure value (EV)
12873 <td class="entry_range">
12874 <p>Values are >= 0</p>
12877 <td class="entry_hal_version">
12881 <td class="entry_tags">
12882 <ul class="entry_tags">
12883 <li><a href="#tag_V1">V1</a></li>
12888 <tr class="entries_header">
12889 <th class="th_details" colspan="6">Details</th>
12891 <tr class="entry_cont">
12892 <td class="entry_details" colspan="6">
12893 <p>If a neutral density filter is not supported by this camera device,<wbr/>
12894 this list will contain only 0.<wbr/> Otherwise,<wbr/> this list will include every
12895 filter density supported by the camera device,<wbr/> in ascending order.<wbr/></p>
12900 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12901 <!-- end of entry -->
12904 <tr class="entry" id="static_android.lens.info.availableFocalLengths">
12905 <td class="entry_name
12907 android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths
12909 <td class="entry_type">
12910 <span class="entry_type_name">float</span>
12911 <span class="entry_type_container">x</span>
12913 <span class="entry_type_array">
12916 <span class="entry_type_visibility"> [public]</span>
12919 <span class="entry_type_hwlevel">[legacy] </span>
12922 <div class="entry_type_notes">The list of available focal lengths</div>
12925 </td> <!-- entry_type -->
12927 <td class="entry_description">
12928 <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
12932 <td class="entry_units">
12936 <td class="entry_range">
12937 <p>Values are > 0</p>
12940 <td class="entry_hal_version">
12944 <td class="entry_tags">
12945 <ul class="entry_tags">
12946 <li><a href="#tag_BC">BC</a></li>
12947 <li><a href="#tag_V1">V1</a></li>
12952 <tr class="entries_header">
12953 <th class="th_details" colspan="6">Details</th>
12955 <tr class="entry_cont">
12956 <td class="entry_details" colspan="6">
12957 <p>If optical zoom is not supported,<wbr/> this list will only contain
12958 a single value corresponding to the fixed focal length of the
12959 device.<wbr/> Otherwise,<wbr/> this list will include every focal length supported
12960 by the camera device,<wbr/> in ascending order.<wbr/></p>
12965 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12966 <!-- end of entry -->
12969 <tr class="entry" id="static_android.lens.info.availableOpticalStabilization">
12970 <td class="entry_name
12972 android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization
12974 <td class="entry_type">
12975 <span class="entry_type_name">byte</span>
12976 <span class="entry_type_container">x</span>
12978 <span class="entry_type_array">
12981 <span class="entry_type_visibility"> [public as enumList]</span>
12984 <span class="entry_type_hwlevel">[limited] </span>
12987 <div class="entry_type_notes">list of enums</div>
12990 </td> <!-- entry_type -->
12992 <td class="entry_description">
12993 <p>List of optical image stabilization (OIS) modes for
12994 <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>
12997 <td class="entry_units">
13000 <td class="entry_range">
13001 <p>Any value listed in <a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a></p>
13004 <td class="entry_hal_version">
13008 <td class="entry_tags">
13009 <ul class="entry_tags">
13010 <li><a href="#tag_V1">V1</a></li>
13015 <tr class="entries_header">
13016 <th class="th_details" colspan="6">Details</th>
13018 <tr class="entry_cont">
13019 <td class="entry_details" colspan="6">
13020 <p>If OIS is not supported by a given camera device,<wbr/> this list will
13021 contain only OFF.<wbr/></p>
13026 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13027 <!-- end of entry -->
13030 <tr class="entry" id="static_android.lens.info.hyperfocalDistance">
13031 <td class="entry_name
13033 android.<wbr/>lens.<wbr/>info.<wbr/>hyperfocal<wbr/>Distance
13035 <td class="entry_type">
13036 <span class="entry_type_name">float</span>
13038 <span class="entry_type_visibility"> [public]</span>
13041 <span class="entry_type_hwlevel">[limited] </span>
13046 </td> <!-- entry_type -->
13048 <td class="entry_description">
13049 <p>Hyperfocal distance for this lens.<wbr/></p>
13052 <td class="entry_units">
13053 See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
13056 <td class="entry_range">
13057 <p>If lens is fixed focus,<wbr/> >= 0.<wbr/> If lens has focuser unit,<wbr/> the value is
13058 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>
13061 <td class="entry_hal_version">
13065 <td class="entry_tags">
13069 <tr class="entries_header">
13070 <th class="th_details" colspan="6">Details</th>
13072 <tr class="entry_cont">
13073 <td class="entry_details" colspan="6">
13074 <p>If the lens is not fixed focus,<wbr/> the camera device will report this
13075 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>
13080 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13081 <!-- end of entry -->
13084 <tr class="entry" id="static_android.lens.info.minimumFocusDistance">
13085 <td class="entry_name
13087 android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance
13089 <td class="entry_type">
13090 <span class="entry_type_name">float</span>
13092 <span class="entry_type_visibility"> [public]</span>
13095 <span class="entry_type_hwlevel">[limited] </span>
13100 </td> <!-- entry_type -->
13102 <td class="entry_description">
13103 <p>Shortest distance from frontmost surface
13104 of the lens that can be brought into sharp focus.<wbr/></p>
13107 <td class="entry_units">
13108 See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
13111 <td class="entry_range">
13115 <td class="entry_hal_version">
13119 <td class="entry_tags">
13120 <ul class="entry_tags">
13121 <li><a href="#tag_V1">V1</a></li>
13126 <tr class="entries_header">
13127 <th class="th_details" colspan="6">Details</th>
13129 <tr class="entry_cont">
13130 <td class="entry_details" colspan="6">
13131 <p>If the lens is fixed-focus,<wbr/> this will be
13136 <tr class="entries_header">
13137 <th class="th_details" colspan="6">HAL Implementation Details</th>
13139 <tr class="entry_cont">
13140 <td class="entry_details" colspan="6">
13141 <p>Mandatory for FULL devices; LIMITED devices
13142 must always set this value to 0 for fixed-focus; and may omit
13143 the minimum focus distance otherwise.<wbr/></p>
13144 <p>This field is also mandatory for all devices advertising
13145 the MANUAL_<wbr/>SENSOR capability.<wbr/></p>
13149 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13150 <!-- end of entry -->
13153 <tr class="entry" id="static_android.lens.info.shadingMapSize">
13154 <td class="entry_name
13156 android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size
13158 <td class="entry_type">
13159 <span class="entry_type_name">int32</span>
13160 <span class="entry_type_container">x</span>
13162 <span class="entry_type_array">
13165 <span class="entry_type_visibility"> [ndk_public as size]</span>
13168 <span class="entry_type_hwlevel">[full] </span>
13171 <div class="entry_type_notes">width and height (N,<wbr/> M) of lens shading map provided by the camera device.<wbr/></div>
13174 </td> <!-- entry_type -->
13176 <td class="entry_description">
13177 <p>Dimensions of lens shading map.<wbr/></p>
13180 <td class="entry_units">
13183 <td class="entry_range">
13184 <p>Both values >= 1</p>
13187 <td class="entry_hal_version">
13191 <td class="entry_tags">
13192 <ul class="entry_tags">
13193 <li><a href="#tag_V1">V1</a></li>
13198 <tr class="entries_header">
13199 <th class="th_details" colspan="6">Details</th>
13201 <tr class="entry_cont">
13202 <td class="entry_details" colspan="6">
13203 <p>The map should be on the order of 30-40 rows and columns,<wbr/> and
13204 must be smaller than 64x64.<wbr/></p>
13209 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13210 <!-- end of entry -->
13213 <tr class="entry" id="static_android.lens.info.focusDistanceCalibration">
13214 <td class="entry_name
13216 android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration
13218 <td class="entry_type">
13219 <span class="entry_type_name entry_type_name_enum">byte</span>
13221 <span class="entry_type_visibility"> [public]</span>
13224 <span class="entry_type_hwlevel">[limited] </span>
13228 <ul class="entry_type_enum">
13230 <span class="entry_type_enum_name">UNCALIBRATED (v3.2)</span>
13231 <span class="entry_type_enum_notes"><p>The lens focus distance is not accurate,<wbr/> and the units used for
13232 <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> do not correspond to any physical units.<wbr/></p>
13233 <p>Setting the lens to the same focus distance on separate occasions may
13234 result in a different real focus distance,<wbr/> depending on factors such
13235 as the orientation of the device,<wbr/> the age of the focusing mechanism,<wbr/>
13236 and the device temperature.<wbr/> The focus distance value will still be
13237 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
13238 represents the farthest focus.<wbr/></p></span>
13241 <span class="entry_type_enum_name">APPROXIMATE (v3.2)</span>
13242 <span class="entry_type_enum_notes"><p>The lens focus distance is measured in diopters.<wbr/></p>
13243 <p>However,<wbr/> setting the lens to the same focus distance
13244 on separate occasions may result in a different real
13245 focus distance,<wbr/> depending on factors such as the
13246 orientation of the device,<wbr/> the age of the focusing
13247 mechanism,<wbr/> and the device temperature.<wbr/></p></span>
13250 <span class="entry_type_enum_name">CALIBRATED (v3.2)</span>
13251 <span class="entry_type_enum_notes"><p>The lens focus distance is measured in diopters,<wbr/> and
13252 is calibrated.<wbr/></p>
13253 <p>The lens mechanism is calibrated so that setting the
13254 same focus distance is repeatable on multiple
13255 occasions with good accuracy,<wbr/> and the focus distance
13256 corresponds to the real physical distance to the plane
13257 of best focus.<wbr/></p></span>
13261 </td> <!-- entry_type -->
13263 <td class="entry_description">
13264 <p>The lens focus distance calibration quality.<wbr/></p>
13267 <td class="entry_units">
13270 <td class="entry_range">
13273 <td class="entry_hal_version">
13277 <td class="entry_tags">
13278 <ul class="entry_tags">
13279 <li><a href="#tag_V1">V1</a></li>
13284 <tr class="entries_header">
13285 <th class="th_details" colspan="6">Details</th>
13287 <tr class="entry_cont">
13288 <td class="entry_details" colspan="6">
13289 <p>The lens focus distance calibration quality determines the reliability of
13290 focus related metadata entries,<wbr/> i.<wbr/>e.<wbr/> <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a>,<wbr/>
13291 <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
13292 <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a>.<wbr/></p>
13293 <p>APPROXIMATE and CALIBRATED devices report the focus metadata in
13294 units of diopters (1/<wbr/>meter),<wbr/> so <code>0.<wbr/>0f</code> represents focusing at infinity,<wbr/>
13295 and increasing positive numbers represent focusing closer and closer
13296 to the camera device.<wbr/> The focus distance control also uses diopters
13297 on these devices.<wbr/></p>
13298 <p>UNCALIBRATED devices do not use units that are directly comparable
13299 to any real physical measurement,<wbr/> but <code>0.<wbr/>0f</code> still represents farthest
13300 focus,<wbr/> and <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a> represents the
13301 nearest focus the device can achieve.<wbr/></p>
13305 <tr class="entries_header">
13306 <th class="th_details" colspan="6">HAL Implementation Details</th>
13308 <tr class="entry_cont">
13309 <td class="entry_details" colspan="6">
13310 <p>For devices advertise APPROXIMATE quality or higher,<wbr/> diopters 0 (infinity
13311 focus) must work.<wbr/> When autofocus is disabled (<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> == OFF)
13312 and the lens focus distance is set to 0 diopters
13313 (<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> == 0),<wbr/> the lens will move to focus at infinity
13314 and is stably focused at infinity even if the device tilts.<wbr/> It may take the
13315 lens some time to move; during the move the lens state should be MOVING and
13316 the output diopter value should be changing toward 0.<wbr/></p>
13320 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13321 <!-- end of entry -->
13327 <tr class="entry" id="static_android.lens.facing">
13328 <td class="entry_name
13330 android.<wbr/>lens.<wbr/>facing
13332 <td class="entry_type">
13333 <span class="entry_type_name entry_type_name_enum">byte</span>
13335 <span class="entry_type_visibility"> [public]</span>
13338 <span class="entry_type_hwlevel">[legacy] </span>
13342 <ul class="entry_type_enum">
13344 <span class="entry_type_enum_name">FRONT (v3.2)</span>
13345 <span class="entry_type_enum_notes"><p>The camera device faces the same direction as the device's screen.<wbr/></p></span>
13348 <span class="entry_type_enum_name">BACK (v3.2)</span>
13349 <span class="entry_type_enum_notes"><p>The camera device faces the opposite direction as the device's screen.<wbr/></p></span>
13352 <span class="entry_type_enum_name">EXTERNAL (v3.2)</span>
13353 <span class="entry_type_enum_notes"><p>The camera device is an external camera,<wbr/> and has no fixed facing relative to the
13354 device's screen.<wbr/></p></span>
13358 </td> <!-- entry_type -->
13360 <td class="entry_description">
13361 <p>Direction the camera faces relative to
13362 device screen.<wbr/></p>
13365 <td class="entry_units">
13368 <td class="entry_range">
13371 <td class="entry_hal_version">
13375 <td class="entry_tags">
13381 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13382 <!-- end of entry -->
13385 <tr class="entry" id="static_android.lens.poseRotation">
13386 <td class="entry_name
13388 android.<wbr/>lens.<wbr/>pose<wbr/>Rotation
13390 <td class="entry_type">
13391 <span class="entry_type_name">float</span>
13392 <span class="entry_type_container">x</span>
13394 <span class="entry_type_array">
13397 <span class="entry_type_visibility"> [public]</span>
13404 </td> <!-- entry_type -->
13406 <td class="entry_description">
13407 <p>The orientation of the camera relative to the sensor
13408 coordinate system.<wbr/></p>
13411 <td class="entry_units">
13413 Quaternion coefficients
13417 <td class="entry_range">
13420 <td class="entry_hal_version">
13424 <td class="entry_tags">
13425 <ul class="entry_tags">
13426 <li><a href="#tag_DEPTH">DEPTH</a></li>
13431 <tr class="entries_header">
13432 <th class="th_details" colspan="6">Details</th>
13434 <tr class="entry_cont">
13435 <td class="entry_details" colspan="6">
13436 <p>The four coefficients that describe the quaternion
13437 rotation from the Android sensor coordinate system to a
13438 camera-aligned coordinate system where the X-axis is
13439 aligned with the long side of the image sensor,<wbr/> the Y-axis
13440 is aligned with the short side of the image sensor,<wbr/> and
13441 the Z-axis is aligned with the optical axis of the sensor.<wbr/></p>
13442 <p>To convert from the quaternion coefficients <code>(x,<wbr/>y,<wbr/>z,<wbr/>w)</code>
13443 to the axis of rotation <code>(a_<wbr/>x,<wbr/> a_<wbr/>y,<wbr/> a_<wbr/>z)</code> and rotation
13444 amount <code>theta</code>,<wbr/> the following formulas can be used:</p>
13445 <pre><code> theta = 2 * acos(w)
13446 a_<wbr/>x = x /<wbr/> sin(theta/<wbr/>2)
13447 a_<wbr/>y = y /<wbr/> sin(theta/<wbr/>2)
13448 a_<wbr/>z = z /<wbr/> sin(theta/<wbr/>2)
13450 <p>To create a 3x3 rotation matrix that applies the rotation
13451 defined by this quaternion,<wbr/> the following matrix can be
13453 <pre><code>R = [ 1 - 2y^2 - 2z^2,<wbr/> 2xy - 2zw,<wbr/> 2xz + 2yw,<wbr/>
13454 2xy + 2zw,<wbr/> 1 - 2x^2 - 2z^2,<wbr/> 2yz - 2xw,<wbr/>
13455 2xz - 2yw,<wbr/> 2yz + 2xw,<wbr/> 1 - 2x^2 - 2y^2 ]
13457 <p>This matrix can then be used to apply the rotation to a
13458 column vector point with</p>
13459 <p><code>p' = Rp</code></p>
13460 <p>where <code>p</code> is in the device sensor coordinate system,<wbr/> and
13461 <code>p'</code> is in the camera-oriented coordinate system.<wbr/></p>
13466 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13467 <!-- end of entry -->
13470 <tr class="entry" id="static_android.lens.poseTranslation">
13471 <td class="entry_name
13473 android.<wbr/>lens.<wbr/>pose<wbr/>Translation
13475 <td class="entry_type">
13476 <span class="entry_type_name">float</span>
13477 <span class="entry_type_container">x</span>
13479 <span class="entry_type_array">
13482 <span class="entry_type_visibility"> [public]</span>
13489 </td> <!-- entry_type -->
13491 <td class="entry_description">
13492 <p>Position of the camera optical center.<wbr/></p>
13495 <td class="entry_units">
13499 <td class="entry_range">
13502 <td class="entry_hal_version">
13506 <td class="entry_tags">
13507 <ul class="entry_tags">
13508 <li><a href="#tag_DEPTH">DEPTH</a></li>
13513 <tr class="entries_header">
13514 <th class="th_details" colspan="6">Details</th>
13516 <tr class="entry_cont">
13517 <td class="entry_details" colspan="6">
13518 <p>The position of the camera device's lens optical center,<wbr/>
13519 as a three-dimensional vector <code>(x,<wbr/>y,<wbr/>z)</code>.<wbr/></p>
13520 <p>Prior to Android P,<wbr/> or when <a href="#static_android.lens.poseReference">android.<wbr/>lens.<wbr/>pose<wbr/>Reference</a> is PRIMARY_<wbr/>CAMERA,<wbr/> this position
13521 is relative to the optical center of the largest camera device facing in the same
13522 direction as this camera,<wbr/> in the <a href="https://developer.android.com/reference/android/hardware/SensorEvent.html">Android sensor
13523 coordinate axes</a>.<wbr/> Note that only the axis definitions are shared with the sensor
13524 coordinate system,<wbr/> but not the origin.<wbr/></p>
13525 <p>If this device is the largest or only camera device with a given facing,<wbr/> then this
13526 position will be <code>(0,<wbr/> 0,<wbr/> 0)</code>; a camera device with a lens optical center located 3 cm
13527 from the main sensor along the +X axis (to the right from the user's perspective) will
13528 report <code>(0.<wbr/>03,<wbr/> 0,<wbr/> 0)</code>.<wbr/></p>
13529 <p>To transform a pixel coordinates between two cameras facing the same direction,<wbr/> first
13530 the source camera <a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a> must be corrected for.<wbr/> Then the source
13531 camera <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> needs to be applied,<wbr/> followed by the
13532 <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> of the source camera,<wbr/> the translation of the source camera
13533 relative to the destination camera,<wbr/> the <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> of the destination
13534 camera,<wbr/> and finally the inverse of <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> of the destination
13535 camera.<wbr/> This obtains a radial-distortion-free coordinate in the destination camera pixel
13536 coordinates.<wbr/></p>
13537 <p>To compare this against a real image from the destination camera,<wbr/> the destination camera
13538 image then needs to be corrected for radial distortion before comparison or sampling.<wbr/></p>
13539 <p>When <a href="#static_android.lens.poseReference">android.<wbr/>lens.<wbr/>pose<wbr/>Reference</a> is GYROSCOPE,<wbr/> then this position is relative to
13540 the center of the primary gyroscope on the device.<wbr/></p>
13545 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13546 <!-- end of entry -->
13549 <tr class="entry" id="static_android.lens.intrinsicCalibration">
13550 <td class="entry_name
13552 android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration
13554 <td class="entry_type">
13555 <span class="entry_type_name">float</span>
13556 <span class="entry_type_container">x</span>
13558 <span class="entry_type_array">
13561 <span class="entry_type_visibility"> [public]</span>
13568 </td> <!-- entry_type -->
13570 <td class="entry_description">
13571 <p>The parameters for this camera device's intrinsic
13572 calibration.<wbr/></p>
13575 <td class="entry_units">
13578 android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size
13579 coordinate system.<wbr/>
13583 <td class="entry_range">
13586 <td class="entry_hal_version">
13590 <td class="entry_tags">
13591 <ul class="entry_tags">
13592 <li><a href="#tag_DEPTH">DEPTH</a></li>
13597 <tr class="entries_header">
13598 <th class="th_details" colspan="6">Details</th>
13600 <tr class="entry_cont">
13601 <td class="entry_details" colspan="6">
13602 <p>The five calibration parameters that describe the
13603 transform from camera-centric 3D coordinates to sensor
13604 pixel coordinates:</p>
13605 <pre><code>[f_<wbr/>x,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>x,<wbr/> c_<wbr/>y,<wbr/> s]
13607 <p>Where <code>f_<wbr/>x</code> and <code>f_<wbr/>y</code> are the horizontal and vertical
13608 focal lengths,<wbr/> <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code> is the position of the optical
13609 axis,<wbr/> and <code>s</code> is a skew parameter for the sensor plane not
13610 being aligned with the lens plane.<wbr/></p>
13611 <p>These are typically used within a transformation matrix K:</p>
13612 <pre><code>K = [ f_<wbr/>x,<wbr/> s,<wbr/> c_<wbr/>x,<wbr/>
13613 0,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>y,<wbr/>
13616 <p>which can then be combined with the camera pose rotation
13617 <code>R</code> and translation <code>t</code> (<a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> and
13618 <a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a>,<wbr/> respective) to calculate the
13619 complete transform from world coordinates to pixel
13621 <pre><code>P = [ K 0 * [ R t
13624 <p>and with <code>p_<wbr/>w</code> being a point in the world coordinate system
13625 and <code>p_<wbr/>s</code> being a point in the camera active pixel array
13626 coordinate system,<wbr/> and with the mapping including the
13627 homogeneous division by z:</p>
13628 <pre><code> p_<wbr/>h = (x_<wbr/>h,<wbr/> y_<wbr/>h,<wbr/> z_<wbr/>h) = P p_<wbr/>w
13629 p_<wbr/>s = p_<wbr/>h /<wbr/> z_<wbr/>h
13631 <p>so <code>[x_<wbr/>s,<wbr/> y_<wbr/>s]</code> is the pixel coordinates of the world
13632 point,<wbr/> <code>z_<wbr/>s = 1</code>,<wbr/> and <code>w_<wbr/>s</code> is a measurement of disparity
13633 (depth) in pixel coordinates.<wbr/></p>
13634 <p>Note that the coordinate system for this transform is the
13635 <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/>
13636 where <code>(0,<wbr/>0)</code> is the top-left of the
13637 preCorrectionActiveArraySize rectangle.<wbr/> Once the pose and
13638 intrinsic calibration transforms have been applied to a
13639 world point,<wbr/> then the <a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a>
13640 transform needs to be applied,<wbr/> and the result adjusted to
13641 be in the <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> coordinate
13642 system (where <code>(0,<wbr/> 0)</code> is the top-left of the
13643 activeArraySize rectangle),<wbr/> to determine the final pixel
13644 coordinate of the world point for processed (non-RAW)
13645 output buffers.<wbr/></p>
13650 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13651 <!-- end of entry -->
13654 <tr class="entry" id="static_android.lens.radialDistortion">
13655 <td class="entry_name
13657 android.<wbr/>lens.<wbr/>radial<wbr/>Distortion
13659 <td class="entry_type">
13660 <span class="entry_type_name">float</span>
13661 <span class="entry_type_container">x</span>
13663 <span class="entry_type_array">
13666 <span class="entry_type_visibility"> [public]</span>
13673 </td> <!-- entry_type -->
13675 <td class="entry_description">
13676 <p>The correction coefficients to correct for this camera device's
13677 radial and tangential lens distortion.<wbr/></p>
13680 <td class="entry_units">
13682 Unitless coefficients.<wbr/>
13686 <td class="entry_range">
13689 <td class="entry_hal_version">
13693 <td class="entry_tags">
13694 <ul class="entry_tags">
13695 <li><a href="#tag_DEPTH">DEPTH</a></li>
13700 <tr class="entries_header">
13701 <th class="th_details" colspan="6">Details</th>
13703 <tr class="entry_cont">
13704 <td class="entry_details" colspan="6">
13705 <p>Four radial distortion coefficients <code>[kappa_<wbr/>0,<wbr/> kappa_<wbr/>1,<wbr/> kappa_<wbr/>2,<wbr/>
13706 kappa_<wbr/>3]</code> and two tangential distortion coefficients
13707 <code>[kappa_<wbr/>4,<wbr/> kappa_<wbr/>5]</code> that can be used to correct the
13708 lens's geometric distortion with the mapping equations:</p>
13709 <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 ) +
13710 kappa_<wbr/>4 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>5 * ( r^2 + 2 * x_<wbr/>i^2 )
13711 y_<wbr/>c = y_<wbr/>i * ( kappa_<wbr/>0 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) +
13712 kappa_<wbr/>5 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>4 * ( r^2 + 2 * y_<wbr/>i^2 )
13714 <p>Here,<wbr/> <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> are the coordinates to sample in the
13715 input image that correspond to the pixel values in the
13716 corrected image at the coordinate <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code>:</p>
13717 <pre><code> correctedImage(x_<wbr/>i,<wbr/> y_<wbr/>i) = sample_<wbr/>at(x_<wbr/>c,<wbr/> y_<wbr/>c,<wbr/> inputImage)
13719 <p>The pixel coordinates are defined in a normalized
13720 coordinate system related to the
13721 <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> calibration fields.<wbr/>
13722 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
13723 lens optical center <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code>.<wbr/> The maximum magnitudes
13724 of both x and y coordinates are normalized to be 1 at the
13725 edge further from the optical center,<wbr/> so the range
13726 for both dimensions is <code>-1 <= x <= 1</code>.<wbr/></p>
13727 <p>Finally,<wbr/> <code>r</code> represents the radial distance from the
13728 optical center,<wbr/> <code>r^2 = x_<wbr/>i^2 + y_<wbr/>i^2</code>,<wbr/> and its magnitude
13729 is therefore no larger than <code>|<wbr/>r|<wbr/> <= sqrt(2)</code>.<wbr/></p>
13730 <p>The distortion model used is the Brown-Conrady model.<wbr/></p>
13735 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13736 <!-- end of entry -->
13739 <tr class="entry" id="static_android.lens.poseReference">
13740 <td class="entry_name
13742 android.<wbr/>lens.<wbr/>pose<wbr/>Reference
13744 <td class="entry_type">
13745 <span class="entry_type_name entry_type_name_enum">byte</span>
13747 <span class="entry_type_visibility"> [public]</span>
13753 <ul class="entry_type_enum">
13755 <span class="entry_type_enum_name">PRIMARY_CAMERA (v3.3)</span>
13756 <span class="entry_type_enum_notes"><p>The value of <a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a> is relative to the optical center of
13757 the largest camera device facing the same direction as this camera.<wbr/></p>
13758 <p>This is the default value for API levels before Android P.<wbr/></p></span>
13761 <span class="entry_type_enum_name">GYROSCOPE (v3.3)</span>
13762 <span class="entry_type_enum_notes"><p>The value of <a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a> is relative to the position of the
13763 primary gyroscope of this Android device.<wbr/></p></span>
13767 </td> <!-- entry_type -->
13769 <td class="entry_description">
13770 <p>The origin for <a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a>.<wbr/></p>
13773 <td class="entry_units">
13776 <td class="entry_range">
13779 <td class="entry_hal_version">
13783 <td class="entry_tags">
13787 <tr class="entries_header">
13788 <th class="th_details" colspan="6">Details</th>
13790 <tr class="entry_cont">
13791 <td class="entry_details" colspan="6">
13792 <p>Different calibration methods and use cases can produce better or worse results
13793 depending on the selected coordinate origin.<wbr/></p>
13798 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13799 <!-- end of entry -->
13803 <!-- end of kind -->
13805 <tr><td colspan="7" class="kind">dynamic</td></tr>
13807 <thead class="entries_header">
13809 <th class="th_name">Property Name</th>
13810 <th class="th_type">Type</th>
13811 <th class="th_description">Description</th>
13812 <th class="th_units">Units</th>
13813 <th class="th_range">Range</th>
13814 <th class="th_hal_version">Initial HIDL HAL version</th>
13815 <th class="th_tags">Tags</th>
13830 <tr class="entry" id="dynamic_android.lens.aperture">
13831 <td class="entry_name
13833 android.<wbr/>lens.<wbr/>aperture
13835 <td class="entry_type">
13836 <span class="entry_type_name">float</span>
13838 <span class="entry_type_visibility"> [public]</span>
13841 <span class="entry_type_hwlevel">[full] </span>
13846 </td> <!-- entry_type -->
13848 <td class="entry_description">
13849 <p>The desired lens aperture size,<wbr/> as a ratio of lens focal length to the
13850 effective aperture diameter.<wbr/></p>
13853 <td class="entry_units">
13854 The f-number (f/<wbr/>N)
13857 <td class="entry_range">
13858 <p><a href="#static_android.lens.info.availableApertures">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures</a></p>
13861 <td class="entry_hal_version">
13865 <td class="entry_tags">
13866 <ul class="entry_tags">
13867 <li><a href="#tag_V1">V1</a></li>
13872 <tr class="entries_header">
13873 <th class="th_details" colspan="6">Details</th>
13875 <tr class="entry_cont">
13876 <td class="entry_details" colspan="6">
13877 <p>Setting this value is only supported on the camera devices that have a variable
13878 aperture lens.<wbr/></p>
13879 <p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/>
13880 this can be set along with <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
13881 <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>
13882 to achieve manual exposure control.<wbr/></p>
13883 <p>The requested aperture value may take several frames to reach the
13884 requested value; the camera device will report the current (intermediate)
13885 aperture size in capture result metadata while the aperture is changing.<wbr/>
13886 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>
13887 <p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is one of
13888 the ON modes,<wbr/> this will be overridden by the camera device
13889 auto-exposure algorithm,<wbr/> the overridden values are then provided
13890 back to the user in the corresponding result.<wbr/></p>
13895 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13896 <!-- end of entry -->
13899 <tr class="entry" id="dynamic_android.lens.filterDensity">
13900 <td class="entry_name
13902 android.<wbr/>lens.<wbr/>filter<wbr/>Density
13904 <td class="entry_type">
13905 <span class="entry_type_name">float</span>
13907 <span class="entry_type_visibility"> [public]</span>
13910 <span class="entry_type_hwlevel">[full] </span>
13915 </td> <!-- entry_type -->
13917 <td class="entry_description">
13918 <p>The desired setting for the lens neutral density filter(s).<wbr/></p>
13921 <td class="entry_units">
13922 Exposure Value (EV)
13925 <td class="entry_range">
13926 <p><a href="#static_android.lens.info.availableFilterDensities">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities</a></p>
13929 <td class="entry_hal_version">
13933 <td class="entry_tags">
13934 <ul class="entry_tags">
13935 <li><a href="#tag_V1">V1</a></li>
13940 <tr class="entries_header">
13941 <th class="th_details" colspan="6">Details</th>
13943 <tr class="entry_cont">
13944 <td class="entry_details" colspan="6">
13945 <p>This control will not be supported on most camera devices.<wbr/></p>
13946 <p>Lens filters are typically used to lower the amount of light the
13947 sensor is exposed to (measured in steps of EV).<wbr/> As used here,<wbr/> an EV
13948 step is the standard logarithmic representation,<wbr/> which are
13949 non-negative,<wbr/> and inversely proportional to the amount of light
13950 hitting the sensor.<wbr/> For example,<wbr/> setting this to 0 would result
13951 in no reduction of the incoming light,<wbr/> and setting this to 2 would
13952 mean that the filter is set to reduce incoming light by two stops
13953 (allowing 1/<wbr/>4 of the prior amount of light to the sensor).<wbr/></p>
13954 <p>It may take several frames before the lens filter density changes
13955 to the requested value.<wbr/> While the filter density is still changing,<wbr/>
13956 <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p>
13961 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13962 <!-- end of entry -->
13965 <tr class="entry" id="dynamic_android.lens.focalLength">
13966 <td class="entry_name
13968 android.<wbr/>lens.<wbr/>focal<wbr/>Length
13970 <td class="entry_type">
13971 <span class="entry_type_name">float</span>
13973 <span class="entry_type_visibility"> [public]</span>
13976 <span class="entry_type_hwlevel">[legacy] </span>
13981 </td> <!-- entry_type -->
13983 <td class="entry_description">
13984 <p>The desired lens focal length; used for optical zoom.<wbr/></p>
13987 <td class="entry_units">
13991 <td class="entry_range">
13992 <p><a href="#static_android.lens.info.availableFocalLengths">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths</a></p>
13995 <td class="entry_hal_version">
13999 <td class="entry_tags">
14000 <ul class="entry_tags">
14001 <li><a href="#tag_BC">BC</a></li>
14006 <tr class="entries_header">
14007 <th class="th_details" colspan="6">Details</th>
14009 <tr class="entry_cont">
14010 <td class="entry_details" colspan="6">
14011 <p>This setting controls the physical focal length of the camera
14012 device's lens.<wbr/> Changing the focal length changes the field of
14013 view of the camera device,<wbr/> and is usually used for optical zoom.<wbr/></p>
14014 <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
14015 setting won't be applied instantaneously,<wbr/> and it may take several
14016 frames before the lens can change to the requested focal length.<wbr/>
14017 While the focal length is still changing,<wbr/> <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will
14018 be set to MOVING.<wbr/></p>
14019 <p>Optical zoom will not be supported on most devices.<wbr/></p>
14024 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14025 <!-- end of entry -->
14028 <tr class="entry" id="dynamic_android.lens.focusDistance">
14029 <td class="entry_name
14031 android.<wbr/>lens.<wbr/>focus<wbr/>Distance
14033 <td class="entry_type">
14034 <span class="entry_type_name">float</span>
14036 <span class="entry_type_visibility"> [public]</span>
14039 <span class="entry_type_hwlevel">[full] </span>
14044 </td> <!-- entry_type -->
14046 <td class="entry_description">
14047 <p>Desired distance to plane of sharpest focus,<wbr/>
14048 measured from frontmost surface of the lens.<wbr/></p>
14051 <td class="entry_units">
14052 See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
14055 <td class="entry_range">
14059 <td class="entry_hal_version">
14063 <td class="entry_tags">
14064 <ul class="entry_tags">
14065 <li><a href="#tag_BC">BC</a></li>
14070 <tr class="entries_header">
14071 <th class="th_details" colspan="6">Details</th>
14073 <tr class="entry_cont">
14074 <td class="entry_details" colspan="6">
14075 <p>Should be zero for fixed-focus cameras</p>
14080 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14081 <!-- end of entry -->
14084 <tr class="entry" id="dynamic_android.lens.focusRange">
14085 <td class="entry_name
14087 android.<wbr/>lens.<wbr/>focus<wbr/>Range
14089 <td class="entry_type">
14090 <span class="entry_type_name">float</span>
14091 <span class="entry_type_container">x</span>
14093 <span class="entry_type_array">
14096 <span class="entry_type_visibility"> [public as pairFloatFloat]</span>
14099 <span class="entry_type_hwlevel">[limited] </span>
14102 <div class="entry_type_notes">Range of scene distances that are in focus</div>
14105 </td> <!-- entry_type -->
14107 <td class="entry_description">
14108 <p>The range of scene distances that are in
14109 sharp focus (depth of field).<wbr/></p>
14112 <td class="entry_units">
14113 A pair of focus distances in diopters: (near,<wbr/>
14114 far); see android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details.<wbr/>
14117 <td class="entry_range">
14121 <td class="entry_hal_version">
14125 <td class="entry_tags">
14126 <ul class="entry_tags">
14127 <li><a href="#tag_BC">BC</a></li>
14132 <tr class="entries_header">
14133 <th class="th_details" colspan="6">Details</th>
14135 <tr class="entry_cont">
14136 <td class="entry_details" colspan="6">
14137 <p>If variable focus not supported,<wbr/> can still report
14138 fixed depth of field range</p>
14143 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14144 <!-- end of entry -->
14147 <tr class="entry" id="dynamic_android.lens.opticalStabilizationMode">
14148 <td class="entry_name
14150 android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode
14152 <td class="entry_type">
14153 <span class="entry_type_name entry_type_name_enum">byte</span>
14155 <span class="entry_type_visibility"> [public]</span>
14158 <span class="entry_type_hwlevel">[limited] </span>
14162 <ul class="entry_type_enum">
14164 <span class="entry_type_enum_name">OFF (v3.2)</span>
14165 <span class="entry_type_enum_notes"><p>Optical stabilization is unavailable.<wbr/></p></span>
14168 <span class="entry_type_enum_name">ON (v3.2)</span>
14169 <span class="entry_type_enum_optional">[optional]</span>
14170 <span class="entry_type_enum_notes"><p>Optical stabilization is enabled.<wbr/></p></span>
14174 </td> <!-- entry_type -->
14176 <td class="entry_description">
14177 <p>Sets whether the camera device uses optical image stabilization (OIS)
14178 when capturing images.<wbr/></p>
14181 <td class="entry_units">
14184 <td class="entry_range">
14185 <p><a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a></p>
14188 <td class="entry_hal_version">
14192 <td class="entry_tags">
14193 <ul class="entry_tags">
14194 <li><a href="#tag_V1">V1</a></li>
14199 <tr class="entries_header">
14200 <th class="th_details" colspan="6">Details</th>
14202 <tr class="entry_cont">
14203 <td class="entry_details" colspan="6">
14204 <p>OIS is used to compensate for motion blur due to small
14205 movements of the camera during capture.<wbr/> Unlike digital image
14206 stabilization (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> OIS
14207 makes use of mechanical elements to stabilize the camera
14208 sensor,<wbr/> and thus allows for longer exposure times before
14209 camera shake becomes apparent.<wbr/></p>
14210 <p>Switching between different optical stabilization modes may take several
14211 frames to initialize,<wbr/> the camera device will report the current mode in
14212 capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/> the
14213 optical stabilization modes in the first several capture results may still
14214 be "OFF",<wbr/> and it will become "ON" when the initialization is done.<wbr/></p>
14215 <p>If a camera device supports both OIS and digital image stabilization
14216 (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may produce undesirable
14217 interaction,<wbr/> so it is recommended not to enable both at the same time.<wbr/></p>
14218 <p>Not all devices will support OIS; see
14219 <a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a> for
14220 available controls.<wbr/></p>
14225 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14226 <!-- end of entry -->
14229 <tr class="entry" id="dynamic_android.lens.state">
14230 <td class="entry_name
14232 android.<wbr/>lens.<wbr/>state
14234 <td class="entry_type">
14235 <span class="entry_type_name entry_type_name_enum">byte</span>
14237 <span class="entry_type_visibility"> [public]</span>
14240 <span class="entry_type_hwlevel">[limited] </span>
14244 <ul class="entry_type_enum">
14246 <span class="entry_type_enum_name">STATIONARY (v3.2)</span>
14247 <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/>
14248 <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>
14251 <span class="entry_type_enum_name">MOVING (v3.2)</span>
14252 <span class="entry_type_enum_notes"><p>One or several of the lens parameters
14253 (<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/>
14254 <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
14255 currently changing.<wbr/></p></span>
14259 </td> <!-- entry_type -->
14261 <td class="entry_description">
14262 <p>Current lens status.<wbr/></p>
14265 <td class="entry_units">
14268 <td class="entry_range">
14271 <td class="entry_hal_version">
14275 <td class="entry_tags">
14276 <ul class="entry_tags">
14277 <li><a href="#tag_V1">V1</a></li>
14282 <tr class="entries_header">
14283 <th class="th_details" colspan="6">Details</th>
14285 <tr class="entry_cont">
14286 <td class="entry_details" colspan="6">
14287 <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/>
14288 <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/>
14289 they may take several frames to reach the requested values.<wbr/> This state indicates
14290 the current status of the lens parameters.<wbr/></p>
14291 <p>When the state is STATIONARY,<wbr/> the lens parameters are not changing.<wbr/> This could be
14292 either because the parameters are all fixed,<wbr/> or because the lens has had enough
14293 time to reach the most recently-requested values.<wbr/>
14294 If all these lens parameters are not changable for a camera device,<wbr/> as listed below:</p>
14296 <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
14297 <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> parameter will always be 0.<wbr/></li>
14298 <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/>
14299 which means the optical zoom is not supported.<wbr/></li>
14300 <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>
14301 <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>
14303 <p>Then this state will always be STATIONARY.<wbr/></p>
14304 <p>When the state is MOVING,<wbr/> it indicates that at least one of the lens parameters
14305 is changing.<wbr/></p>
14310 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14311 <!-- end of entry -->
14314 <tr class="entry" id="dynamic_android.lens.poseRotation">
14315 <td class="entry_name
14317 android.<wbr/>lens.<wbr/>pose<wbr/>Rotation
14319 <td class="entry_type">
14320 <span class="entry_type_name">float</span>
14321 <span class="entry_type_container">x</span>
14323 <span class="entry_type_array">
14326 <span class="entry_type_visibility"> [public]</span>
14333 </td> <!-- entry_type -->
14335 <td class="entry_description">
14336 <p>The orientation of the camera relative to the sensor
14337 coordinate system.<wbr/></p>
14340 <td class="entry_units">
14342 Quaternion coefficients
14346 <td class="entry_range">
14349 <td class="entry_hal_version">
14353 <td class="entry_tags">
14354 <ul class="entry_tags">
14355 <li><a href="#tag_DEPTH">DEPTH</a></li>
14360 <tr class="entries_header">
14361 <th class="th_details" colspan="6">Details</th>
14363 <tr class="entry_cont">
14364 <td class="entry_details" colspan="6">
14365 <p>The four coefficients that describe the quaternion
14366 rotation from the Android sensor coordinate system to a
14367 camera-aligned coordinate system where the X-axis is
14368 aligned with the long side of the image sensor,<wbr/> the Y-axis
14369 is aligned with the short side of the image sensor,<wbr/> and
14370 the Z-axis is aligned with the optical axis of the sensor.<wbr/></p>
14371 <p>To convert from the quaternion coefficients <code>(x,<wbr/>y,<wbr/>z,<wbr/>w)</code>
14372 to the axis of rotation <code>(a_<wbr/>x,<wbr/> a_<wbr/>y,<wbr/> a_<wbr/>z)</code> and rotation
14373 amount <code>theta</code>,<wbr/> the following formulas can be used:</p>
14374 <pre><code> theta = 2 * acos(w)
14375 a_<wbr/>x = x /<wbr/> sin(theta/<wbr/>2)
14376 a_<wbr/>y = y /<wbr/> sin(theta/<wbr/>2)
14377 a_<wbr/>z = z /<wbr/> sin(theta/<wbr/>2)
14379 <p>To create a 3x3 rotation matrix that applies the rotation
14380 defined by this quaternion,<wbr/> the following matrix can be
14382 <pre><code>R = [ 1 - 2y^2 - 2z^2,<wbr/> 2xy - 2zw,<wbr/> 2xz + 2yw,<wbr/>
14383 2xy + 2zw,<wbr/> 1 - 2x^2 - 2z^2,<wbr/> 2yz - 2xw,<wbr/>
14384 2xz - 2yw,<wbr/> 2yz + 2xw,<wbr/> 1 - 2x^2 - 2y^2 ]
14386 <p>This matrix can then be used to apply the rotation to a
14387 column vector point with</p>
14388 <p><code>p' = Rp</code></p>
14389 <p>where <code>p</code> is in the device sensor coordinate system,<wbr/> and
14390 <code>p'</code> is in the camera-oriented coordinate system.<wbr/></p>
14395 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14396 <!-- end of entry -->
14399 <tr class="entry" id="dynamic_android.lens.poseTranslation">
14400 <td class="entry_name
14402 android.<wbr/>lens.<wbr/>pose<wbr/>Translation
14404 <td class="entry_type">
14405 <span class="entry_type_name">float</span>
14406 <span class="entry_type_container">x</span>
14408 <span class="entry_type_array">
14411 <span class="entry_type_visibility"> [public]</span>
14418 </td> <!-- entry_type -->
14420 <td class="entry_description">
14421 <p>Position of the camera optical center.<wbr/></p>
14424 <td class="entry_units">
14428 <td class="entry_range">
14431 <td class="entry_hal_version">
14435 <td class="entry_tags">
14436 <ul class="entry_tags">
14437 <li><a href="#tag_DEPTH">DEPTH</a></li>
14442 <tr class="entries_header">
14443 <th class="th_details" colspan="6">Details</th>
14445 <tr class="entry_cont">
14446 <td class="entry_details" colspan="6">
14447 <p>The position of the camera device's lens optical center,<wbr/>
14448 as a three-dimensional vector <code>(x,<wbr/>y,<wbr/>z)</code>.<wbr/></p>
14449 <p>Prior to Android P,<wbr/> or when <a href="#static_android.lens.poseReference">android.<wbr/>lens.<wbr/>pose<wbr/>Reference</a> is PRIMARY_<wbr/>CAMERA,<wbr/> this position
14450 is relative to the optical center of the largest camera device facing in the same
14451 direction as this camera,<wbr/> in the <a href="https://developer.android.com/reference/android/hardware/SensorEvent.html">Android sensor
14452 coordinate axes</a>.<wbr/> Note that only the axis definitions are shared with the sensor
14453 coordinate system,<wbr/> but not the origin.<wbr/></p>
14454 <p>If this device is the largest or only camera device with a given facing,<wbr/> then this
14455 position will be <code>(0,<wbr/> 0,<wbr/> 0)</code>; a camera device with a lens optical center located 3 cm
14456 from the main sensor along the +X axis (to the right from the user's perspective) will
14457 report <code>(0.<wbr/>03,<wbr/> 0,<wbr/> 0)</code>.<wbr/></p>
14458 <p>To transform a pixel coordinates between two cameras facing the same direction,<wbr/> first
14459 the source camera <a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a> must be corrected for.<wbr/> Then the source
14460 camera <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> needs to be applied,<wbr/> followed by the
14461 <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> of the source camera,<wbr/> the translation of the source camera
14462 relative to the destination camera,<wbr/> the <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> of the destination
14463 camera,<wbr/> and finally the inverse of <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> of the destination
14464 camera.<wbr/> This obtains a radial-distortion-free coordinate in the destination camera pixel
14465 coordinates.<wbr/></p>
14466 <p>To compare this against a real image from the destination camera,<wbr/> the destination camera
14467 image then needs to be corrected for radial distortion before comparison or sampling.<wbr/></p>
14468 <p>When <a href="#static_android.lens.poseReference">android.<wbr/>lens.<wbr/>pose<wbr/>Reference</a> is GYROSCOPE,<wbr/> then this position is relative to
14469 the center of the primary gyroscope on the device.<wbr/></p>
14474 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14475 <!-- end of entry -->
14478 <tr class="entry" id="dynamic_android.lens.intrinsicCalibration">
14479 <td class="entry_name
14481 android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration
14483 <td class="entry_type">
14484 <span class="entry_type_name">float</span>
14485 <span class="entry_type_container">x</span>
14487 <span class="entry_type_array">
14490 <span class="entry_type_visibility"> [public]</span>
14497 </td> <!-- entry_type -->
14499 <td class="entry_description">
14500 <p>The parameters for this camera device's intrinsic
14501 calibration.<wbr/></p>
14504 <td class="entry_units">
14507 android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size
14508 coordinate system.<wbr/>
14512 <td class="entry_range">
14515 <td class="entry_hal_version">
14519 <td class="entry_tags">
14520 <ul class="entry_tags">
14521 <li><a href="#tag_DEPTH">DEPTH</a></li>
14526 <tr class="entries_header">
14527 <th class="th_details" colspan="6">Details</th>
14529 <tr class="entry_cont">
14530 <td class="entry_details" colspan="6">
14531 <p>The five calibration parameters that describe the
14532 transform from camera-centric 3D coordinates to sensor
14533 pixel coordinates:</p>
14534 <pre><code>[f_<wbr/>x,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>x,<wbr/> c_<wbr/>y,<wbr/> s]
14536 <p>Where <code>f_<wbr/>x</code> and <code>f_<wbr/>y</code> are the horizontal and vertical
14537 focal lengths,<wbr/> <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code> is the position of the optical
14538 axis,<wbr/> and <code>s</code> is a skew parameter for the sensor plane not
14539 being aligned with the lens plane.<wbr/></p>
14540 <p>These are typically used within a transformation matrix K:</p>
14541 <pre><code>K = [ f_<wbr/>x,<wbr/> s,<wbr/> c_<wbr/>x,<wbr/>
14542 0,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>y,<wbr/>
14545 <p>which can then be combined with the camera pose rotation
14546 <code>R</code> and translation <code>t</code> (<a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> and
14547 <a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a>,<wbr/> respective) to calculate the
14548 complete transform from world coordinates to pixel
14550 <pre><code>P = [ K 0 * [ R t
14553 <p>and with <code>p_<wbr/>w</code> being a point in the world coordinate system
14554 and <code>p_<wbr/>s</code> being a point in the camera active pixel array
14555 coordinate system,<wbr/> and with the mapping including the
14556 homogeneous division by z:</p>
14557 <pre><code> p_<wbr/>h = (x_<wbr/>h,<wbr/> y_<wbr/>h,<wbr/> z_<wbr/>h) = P p_<wbr/>w
14558 p_<wbr/>s = p_<wbr/>h /<wbr/> z_<wbr/>h
14560 <p>so <code>[x_<wbr/>s,<wbr/> y_<wbr/>s]</code> is the pixel coordinates of the world
14561 point,<wbr/> <code>z_<wbr/>s = 1</code>,<wbr/> and <code>w_<wbr/>s</code> is a measurement of disparity
14562 (depth) in pixel coordinates.<wbr/></p>
14563 <p>Note that the coordinate system for this transform is the
14564 <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/>
14565 where <code>(0,<wbr/>0)</code> is the top-left of the
14566 preCorrectionActiveArraySize rectangle.<wbr/> Once the pose and
14567 intrinsic calibration transforms have been applied to a
14568 world point,<wbr/> then the <a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a>
14569 transform needs to be applied,<wbr/> and the result adjusted to
14570 be in the <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> coordinate
14571 system (where <code>(0,<wbr/> 0)</code> is the top-left of the
14572 activeArraySize rectangle),<wbr/> to determine the final pixel
14573 coordinate of the world point for processed (non-RAW)
14574 output buffers.<wbr/></p>
14579 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14580 <!-- end of entry -->
14583 <tr class="entry" id="dynamic_android.lens.radialDistortion">
14584 <td class="entry_name
14586 android.<wbr/>lens.<wbr/>radial<wbr/>Distortion
14588 <td class="entry_type">
14589 <span class="entry_type_name">float</span>
14590 <span class="entry_type_container">x</span>
14592 <span class="entry_type_array">
14595 <span class="entry_type_visibility"> [public]</span>
14602 </td> <!-- entry_type -->
14604 <td class="entry_description">
14605 <p>The correction coefficients to correct for this camera device's
14606 radial and tangential lens distortion.<wbr/></p>
14609 <td class="entry_units">
14611 Unitless coefficients.<wbr/>
14615 <td class="entry_range">
14618 <td class="entry_hal_version">
14622 <td class="entry_tags">
14623 <ul class="entry_tags">
14624 <li><a href="#tag_DEPTH">DEPTH</a></li>
14629 <tr class="entries_header">
14630 <th class="th_details" colspan="6">Details</th>
14632 <tr class="entry_cont">
14633 <td class="entry_details" colspan="6">
14634 <p>Four radial distortion coefficients <code>[kappa_<wbr/>0,<wbr/> kappa_<wbr/>1,<wbr/> kappa_<wbr/>2,<wbr/>
14635 kappa_<wbr/>3]</code> and two tangential distortion coefficients
14636 <code>[kappa_<wbr/>4,<wbr/> kappa_<wbr/>5]</code> that can be used to correct the
14637 lens's geometric distortion with the mapping equations:</p>
14638 <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 ) +
14639 kappa_<wbr/>4 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>5 * ( r^2 + 2 * x_<wbr/>i^2 )
14640 y_<wbr/>c = y_<wbr/>i * ( kappa_<wbr/>0 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) +
14641 kappa_<wbr/>5 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>4 * ( r^2 + 2 * y_<wbr/>i^2 )
14643 <p>Here,<wbr/> <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> are the coordinates to sample in the
14644 input image that correspond to the pixel values in the
14645 corrected image at the coordinate <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code>:</p>
14646 <pre><code> correctedImage(x_<wbr/>i,<wbr/> y_<wbr/>i) = sample_<wbr/>at(x_<wbr/>c,<wbr/> y_<wbr/>c,<wbr/> inputImage)
14648 <p>The pixel coordinates are defined in a normalized
14649 coordinate system related to the
14650 <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> calibration fields.<wbr/>
14651 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
14652 lens optical center <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code>.<wbr/> The maximum magnitudes
14653 of both x and y coordinates are normalized to be 1 at the
14654 edge further from the optical center,<wbr/> so the range
14655 for both dimensions is <code>-1 <= x <= 1</code>.<wbr/></p>
14656 <p>Finally,<wbr/> <code>r</code> represents the radial distance from the
14657 optical center,<wbr/> <code>r^2 = x_<wbr/>i^2 + y_<wbr/>i^2</code>,<wbr/> and its magnitude
14658 is therefore no larger than <code>|<wbr/>r|<wbr/> <= sqrt(2)</code>.<wbr/></p>
14659 <p>The distortion model used is the Brown-Conrady model.<wbr/></p>
14664 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14665 <!-- end of entry -->
14669 <!-- end of kind -->
14672 <!-- end of section -->
14673 <tr><td colspan="7" id="section_noiseReduction" class="section">noiseReduction</td></tr>
14676 <tr><td colspan="7" class="kind">controls</td></tr>
14678 <thead class="entries_header">
14680 <th class="th_name">Property Name</th>
14681 <th class="th_type">Type</th>
14682 <th class="th_description">Description</th>
14683 <th class="th_units">Units</th>
14684 <th class="th_range">Range</th>
14685 <th class="th_hal_version">Initial HIDL HAL version</th>
14686 <th class="th_tags">Tags</th>
14701 <tr class="entry" id="controls_android.noiseReduction.mode">
14702 <td class="entry_name
14704 android.<wbr/>noise<wbr/>Reduction.<wbr/>mode
14706 <td class="entry_type">
14707 <span class="entry_type_name entry_type_name_enum">byte</span>
14709 <span class="entry_type_visibility"> [public]</span>
14712 <span class="entry_type_hwlevel">[full] </span>
14716 <ul class="entry_type_enum">
14718 <span class="entry_type_enum_name">OFF (v3.2)</span>
14719 <span class="entry_type_enum_notes"><p>No noise reduction is applied.<wbr/></p></span>
14722 <span class="entry_type_enum_name">FAST (v3.2)</span>
14723 <span class="entry_type_enum_notes"><p>Noise reduction is applied without reducing frame rate relative to sensor
14724 output.<wbr/> It may be the same as OFF if noise reduction will reduce frame rate
14725 relative to sensor.<wbr/></p></span>
14728 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
14729 <span class="entry_type_enum_notes"><p>High-quality noise reduction is applied,<wbr/> at the cost of possibly reduced frame
14730 rate relative to sensor output.<wbr/></p></span>
14733 <span class="entry_type_enum_name">MINIMAL (v3.2)</span>
14734 <span class="entry_type_enum_optional">[optional]</span>
14735 <span class="entry_type_enum_notes"><p>MINIMAL noise reduction is applied without reducing frame rate relative to
14736 sensor output.<wbr/> </p></span>
14739 <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span>
14740 <span class="entry_type_enum_optional">[optional]</span>
14741 <span class="entry_type_enum_notes"><p>Noise reduction is applied at different levels for different output streams,<wbr/>
14742 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>)
14743 or below have noise reduction applied,<wbr/> while higher-resolution streams have MINIMAL (if
14744 supported) or no noise reduction applied (if MINIMAL is not supported.<wbr/>) The degree of
14745 noise reduction for low-resolution streams is tuned so that frame rate is not impacted,<wbr/>
14746 and the quality is equal to or better than FAST (since it is only applied to
14747 lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p>
14748 <p>This mode is intended to be used by applications operating in a zero-shutter-lag mode
14749 with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures
14750 high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is
14751 produced via reprocessing when a user takes a picture.<wbr/> For such a use case,<wbr/> the
14752 high-resolution buffers must not have noise reduction applied to maximize efficiency of
14753 preview and to avoid over-applying noise filtering when reprocessing,<wbr/> while
14754 low-resolution buffers (used for recording or preview,<wbr/> generally) need noise reduction
14755 applied for reasonable preview quality.<wbr/></p>
14756 <p>This mode is guaranteed to be supported by devices that support either the
14757 YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities
14758 (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will
14759 be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span>
14763 </td> <!-- entry_type -->
14765 <td class="entry_description">
14766 <p>Mode of operation for the noise reduction algorithm.<wbr/></p>
14769 <td class="entry_units">
14772 <td class="entry_range">
14773 <p><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a></p>
14776 <td class="entry_hal_version">
14780 <td class="entry_tags">
14781 <ul class="entry_tags">
14782 <li><a href="#tag_V1">V1</a></li>
14783 <li><a href="#tag_REPROC">REPROC</a></li>
14788 <tr class="entries_header">
14789 <th class="th_details" colspan="6">Details</th>
14791 <tr class="entry_cont">
14792 <td class="entry_details" colspan="6">
14793 <p>The noise reduction algorithm attempts to improve image quality by removing
14794 excessive noise added by the capture process,<wbr/> especially in dark conditions.<wbr/></p>
14795 <p>OFF means no noise reduction will be applied by the camera device,<wbr/> for both raw and
14796 YUV domain.<wbr/></p>
14797 <p>MINIMAL means that only sensor raw domain basic noise reduction is enabled ,<wbr/>to remove
14798 demosaicing or other processing artifacts.<wbr/> For YUV_<wbr/>REPROCESSING,<wbr/> MINIMAL is same as OFF.<wbr/>
14799 This mode is optional,<wbr/> may not be support by all devices.<wbr/> The application should check
14800 <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>
14801 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined noise filtering
14802 will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device
14803 will use the highest-quality noise filtering algorithms,<wbr/>
14804 even if it slows down capture rate.<wbr/> FAST means the camera device will not
14805 slow down capture rate when applying noise filtering.<wbr/> FAST may be the same as MINIMAL if
14806 MINIMAL is listed,<wbr/> or the same as OFF if any noise filtering will slow down capture rate.<wbr/>
14807 Every output stream will have a similar amount of enhancement applied.<wbr/></p>
14808 <p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular
14809 buffer of high-resolution images during preview and reprocess image(s) from that buffer
14810 into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies
14811 noise reduction to low-resolution streams (below maximum recording resolution) to maximize
14812 preview quality,<wbr/> but does not apply noise reduction to high-resolution streams,<wbr/> since
14813 those will be reprocessed later if necessary.<wbr/></p>
14814 <p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera device
14815 will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV domain noise reduction,<wbr/> respectively.<wbr/> The camera device
14816 may adjust the noise reduction parameters for best image quality based on the
14817 <a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a> if it is set.<wbr/></p>
14821 <tr class="entries_header">
14822 <th class="th_details" colspan="6">HAL Implementation Details</th>
14824 <tr class="entry_cont">
14825 <td class="entry_details" colspan="6">
14826 <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
14827 adjust the internal noise reduction parameters appropriately to get the best quality
14832 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14833 <!-- end of entry -->
14836 <tr class="entry" id="controls_android.noiseReduction.strength">
14837 <td class="entry_name
14839 android.<wbr/>noise<wbr/>Reduction.<wbr/>strength
14841 <td class="entry_type">
14842 <span class="entry_type_name">byte</span>
14844 <span class="entry_type_visibility"> [system]</span>
14851 </td> <!-- entry_type -->
14853 <td class="entry_description">
14854 <p>Control the amount of noise reduction
14855 applied to the images</p>
14858 <td class="entry_units">
14859 1-10; 10 is max noise reduction
14862 <td class="entry_range">
14866 <td class="entry_hal_version">
14870 <td class="entry_tags">
14871 <ul class="entry_tags">
14872 <li><a href="#tag_FUTURE">FUTURE</a></li>
14879 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14880 <!-- end of entry -->
14884 <!-- end of kind -->
14886 <tr><td colspan="7" class="kind">static</td></tr>
14888 <thead class="entries_header">
14890 <th class="th_name">Property Name</th>
14891 <th class="th_type">Type</th>
14892 <th class="th_description">Description</th>
14893 <th class="th_units">Units</th>
14894 <th class="th_range">Range</th>
14895 <th class="th_hal_version">Initial HIDL HAL version</th>
14896 <th class="th_tags">Tags</th>
14911 <tr class="entry" id="static_android.noiseReduction.availableNoiseReductionModes">
14912 <td class="entry_name
14914 android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes
14916 <td class="entry_type">
14917 <span class="entry_type_name">byte</span>
14918 <span class="entry_type_container">x</span>
14920 <span class="entry_type_array">
14923 <span class="entry_type_visibility"> [public as enumList]</span>
14926 <span class="entry_type_hwlevel">[limited] </span>
14929 <div class="entry_type_notes">list of enums</div>
14932 </td> <!-- entry_type -->
14934 <td class="entry_description">
14935 <p>List of noise reduction modes for <a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a> that are supported
14936 by this camera device.<wbr/></p>
14939 <td class="entry_units">
14942 <td class="entry_range">
14943 <p>Any value listed in <a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></p>
14946 <td class="entry_hal_version">
14950 <td class="entry_tags">
14951 <ul class="entry_tags">
14952 <li><a href="#tag_V1">V1</a></li>
14953 <li><a href="#tag_REPROC">REPROC</a></li>
14958 <tr class="entries_header">
14959 <th class="th_details" colspan="6">Details</th>
14961 <tr class="entry_cont">
14962 <td class="entry_details" colspan="6">
14963 <p>Full-capability camera devices will always support OFF and FAST.<wbr/></p>
14964 <p>Camera devices that support YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING will support
14965 ZERO_<wbr/>SHUTTER_<wbr/>LAG.<wbr/></p>
14966 <p>Legacy-capability camera devices will only support FAST mode.<wbr/></p>
14970 <tr class="entries_header">
14971 <th class="th_details" colspan="6">HAL Implementation Details</th>
14973 <tr class="entry_cont">
14974 <td class="entry_details" colspan="6">
14975 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if noise reduction control is available
14976 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
14977 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
14978 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
14982 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14983 <!-- end of entry -->
14987 <!-- end of kind -->
14989 <tr><td colspan="7" class="kind">dynamic</td></tr>
14991 <thead class="entries_header">
14993 <th class="th_name">Property Name</th>
14994 <th class="th_type">Type</th>
14995 <th class="th_description">Description</th>
14996 <th class="th_units">Units</th>
14997 <th class="th_range">Range</th>
14998 <th class="th_hal_version">Initial HIDL HAL version</th>
14999 <th class="th_tags">Tags</th>
15014 <tr class="entry" id="dynamic_android.noiseReduction.mode">
15015 <td class="entry_name
15017 android.<wbr/>noise<wbr/>Reduction.<wbr/>mode
15019 <td class="entry_type">
15020 <span class="entry_type_name entry_type_name_enum">byte</span>
15022 <span class="entry_type_visibility"> [public]</span>
15025 <span class="entry_type_hwlevel">[full] </span>
15029 <ul class="entry_type_enum">
15031 <span class="entry_type_enum_name">OFF (v3.2)</span>
15032 <span class="entry_type_enum_notes"><p>No noise reduction is applied.<wbr/></p></span>
15035 <span class="entry_type_enum_name">FAST (v3.2)</span>
15036 <span class="entry_type_enum_notes"><p>Noise reduction is applied without reducing frame rate relative to sensor
15037 output.<wbr/> It may be the same as OFF if noise reduction will reduce frame rate
15038 relative to sensor.<wbr/></p></span>
15041 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
15042 <span class="entry_type_enum_notes"><p>High-quality noise reduction is applied,<wbr/> at the cost of possibly reduced frame
15043 rate relative to sensor output.<wbr/></p></span>
15046 <span class="entry_type_enum_name">MINIMAL (v3.2)</span>
15047 <span class="entry_type_enum_optional">[optional]</span>
15048 <span class="entry_type_enum_notes"><p>MINIMAL noise reduction is applied without reducing frame rate relative to
15049 sensor output.<wbr/> </p></span>
15052 <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span>
15053 <span class="entry_type_enum_optional">[optional]</span>
15054 <span class="entry_type_enum_notes"><p>Noise reduction is applied at different levels for different output streams,<wbr/>
15055 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>)
15056 or below have noise reduction applied,<wbr/> while higher-resolution streams have MINIMAL (if
15057 supported) or no noise reduction applied (if MINIMAL is not supported.<wbr/>) The degree of
15058 noise reduction for low-resolution streams is tuned so that frame rate is not impacted,<wbr/>
15059 and the quality is equal to or better than FAST (since it is only applied to
15060 lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p>
15061 <p>This mode is intended to be used by applications operating in a zero-shutter-lag mode
15062 with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures
15063 high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is
15064 produced via reprocessing when a user takes a picture.<wbr/> For such a use case,<wbr/> the
15065 high-resolution buffers must not have noise reduction applied to maximize efficiency of
15066 preview and to avoid over-applying noise filtering when reprocessing,<wbr/> while
15067 low-resolution buffers (used for recording or preview,<wbr/> generally) need noise reduction
15068 applied for reasonable preview quality.<wbr/></p>
15069 <p>This mode is guaranteed to be supported by devices that support either the
15070 YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities
15071 (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will
15072 be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span>
15076 </td> <!-- entry_type -->
15078 <td class="entry_description">
15079 <p>Mode of operation for the noise reduction algorithm.<wbr/></p>
15082 <td class="entry_units">
15085 <td class="entry_range">
15086 <p><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a></p>
15089 <td class="entry_hal_version">
15093 <td class="entry_tags">
15094 <ul class="entry_tags">
15095 <li><a href="#tag_V1">V1</a></li>
15096 <li><a href="#tag_REPROC">REPROC</a></li>
15101 <tr class="entries_header">
15102 <th class="th_details" colspan="6">Details</th>
15104 <tr class="entry_cont">
15105 <td class="entry_details" colspan="6">
15106 <p>The noise reduction algorithm attempts to improve image quality by removing
15107 excessive noise added by the capture process,<wbr/> especially in dark conditions.<wbr/></p>
15108 <p>OFF means no noise reduction will be applied by the camera device,<wbr/> for both raw and
15109 YUV domain.<wbr/></p>
15110 <p>MINIMAL means that only sensor raw domain basic noise reduction is enabled ,<wbr/>to remove
15111 demosaicing or other processing artifacts.<wbr/> For YUV_<wbr/>REPROCESSING,<wbr/> MINIMAL is same as OFF.<wbr/>
15112 This mode is optional,<wbr/> may not be support by all devices.<wbr/> The application should check
15113 <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>
15114 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined noise filtering
15115 will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device
15116 will use the highest-quality noise filtering algorithms,<wbr/>
15117 even if it slows down capture rate.<wbr/> FAST means the camera device will not
15118 slow down capture rate when applying noise filtering.<wbr/> FAST may be the same as MINIMAL if
15119 MINIMAL is listed,<wbr/> or the same as OFF if any noise filtering will slow down capture rate.<wbr/>
15120 Every output stream will have a similar amount of enhancement applied.<wbr/></p>
15121 <p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular
15122 buffer of high-resolution images during preview and reprocess image(s) from that buffer
15123 into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies
15124 noise reduction to low-resolution streams (below maximum recording resolution) to maximize
15125 preview quality,<wbr/> but does not apply noise reduction to high-resolution streams,<wbr/> since
15126 those will be reprocessed later if necessary.<wbr/></p>
15127 <p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera device
15128 will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV domain noise reduction,<wbr/> respectively.<wbr/> The camera device
15129 may adjust the noise reduction parameters for best image quality based on the
15130 <a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a> if it is set.<wbr/></p>
15134 <tr class="entries_header">
15135 <th class="th_details" colspan="6">HAL Implementation Details</th>
15137 <tr class="entry_cont">
15138 <td class="entry_details" colspan="6">
15139 <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
15140 adjust the internal noise reduction parameters appropriately to get the best quality
15145 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15146 <!-- end of entry -->
15150 <!-- end of kind -->
15153 <!-- end of section -->
15154 <tr><td colspan="7" id="section_quirks" class="section">quirks</td></tr>
15157 <tr><td colspan="7" class="kind">static</td></tr>
15159 <thead class="entries_header">
15161 <th class="th_name">Property Name</th>
15162 <th class="th_type">Type</th>
15163 <th class="th_description">Description</th>
15164 <th class="th_units">Units</th>
15165 <th class="th_range">Range</th>
15166 <th class="th_hal_version">Initial HIDL HAL version</th>
15167 <th class="th_tags">Tags</th>
15182 <tr class="entry" id="static_android.quirks.meteringCropRegion">
15183 <td class="entry_name
15184 entry_name_deprecated
15186 android.<wbr/>quirks.<wbr/>metering<wbr/>Crop<wbr/>Region
15188 <td class="entry_type">
15189 <span class="entry_type_name">byte</span>
15191 <span class="entry_type_visibility"> [system]</span>
15195 <span class="entry_type_deprecated">[deprecated] </span>
15199 </td> <!-- entry_type -->
15201 <td class="entry_description">
15202 <p>If set to 1,<wbr/> the camera service does not
15203 scale 'normalized' coordinates with respect to the crop
15204 region.<wbr/> This applies to metering input (a{e,<wbr/>f,<wbr/>wb}Region
15205 and output (face rectangles).<wbr/></p>
15208 <td class="entry_units">
15211 <td class="entry_range">
15212 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15215 <td class="entry_hal_version">
15219 <td class="entry_tags">
15223 <tr class="entries_header">
15224 <th class="th_details" colspan="6">Details</th>
15226 <tr class="entry_cont">
15227 <td class="entry_details" colspan="6">
15228 <p>Normalized coordinates refer to those in the
15229 (-1000,<wbr/>1000) range mentioned in the
15230 android.<wbr/>hardware.<wbr/>Camera API.<wbr/></p>
15231 <p>HAL implementations should instead always use and emit
15232 sensor array-relative coordinates for all region data.<wbr/> Does
15233 not need to be listed in static metadata.<wbr/> Support will be
15234 removed in future versions of camera service.<wbr/></p>
15239 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15240 <!-- end of entry -->
15243 <tr class="entry" id="static_android.quirks.triggerAfWithAuto">
15244 <td class="entry_name
15245 entry_name_deprecated
15247 android.<wbr/>quirks.<wbr/>trigger<wbr/>Af<wbr/>With<wbr/>Auto
15249 <td class="entry_type">
15250 <span class="entry_type_name">byte</span>
15252 <span class="entry_type_visibility"> [system]</span>
15256 <span class="entry_type_deprecated">[deprecated] </span>
15260 </td> <!-- entry_type -->
15262 <td class="entry_description">
15263 <p>If set to 1,<wbr/> then the camera service always
15264 switches to FOCUS_<wbr/>MODE_<wbr/>AUTO before issuing a AF
15268 <td class="entry_units">
15271 <td class="entry_range">
15272 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15275 <td class="entry_hal_version">
15279 <td class="entry_tags">
15283 <tr class="entries_header">
15284 <th class="th_details" colspan="6">Details</th>
15286 <tr class="entry_cont">
15287 <td class="entry_details" colspan="6">
15288 <p>HAL implementations should implement AF trigger
15289 modes for AUTO,<wbr/> MACRO,<wbr/> CONTINUOUS_<wbr/>FOCUS,<wbr/> and
15290 CONTINUOUS_<wbr/>PICTURE modes instead of using this flag.<wbr/> Does
15291 not need to be listed in static metadata.<wbr/> Support will be
15292 removed in future versions of camera service</p>
15297 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15298 <!-- end of entry -->
15301 <tr class="entry" id="static_android.quirks.useZslFormat">
15302 <td class="entry_name
15303 entry_name_deprecated
15305 android.<wbr/>quirks.<wbr/>use<wbr/>Zsl<wbr/>Format
15307 <td class="entry_type">
15308 <span class="entry_type_name">byte</span>
15310 <span class="entry_type_visibility"> [system]</span>
15314 <span class="entry_type_deprecated">[deprecated] </span>
15318 </td> <!-- entry_type -->
15320 <td class="entry_description">
15321 <p>If set to 1,<wbr/> the camera service uses
15322 CAMERA2_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>ZSL instead of
15323 HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>IMPLEMENTATION_<wbr/>DEFINED for the zero
15324 shutter lag stream</p>
15327 <td class="entry_units">
15330 <td class="entry_range">
15331 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15334 <td class="entry_hal_version">
15338 <td class="entry_tags">
15342 <tr class="entries_header">
15343 <th class="th_details" colspan="6">Details</th>
15345 <tr class="entry_cont">
15346 <td class="entry_details" colspan="6">
15347 <p>HAL implementations should use gralloc usage flags
15348 to determine that a stream will be used for
15349 zero-shutter-lag,<wbr/> instead of relying on an explicit
15350 format setting.<wbr/> Does not need to be listed in static
15351 metadata.<wbr/> Support will be removed in future versions of
15352 camera service.<wbr/></p>
15357 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15358 <!-- end of entry -->
15361 <tr class="entry" id="static_android.quirks.usePartialResult">
15362 <td class="entry_name
15363 entry_name_deprecated
15365 android.<wbr/>quirks.<wbr/>use<wbr/>Partial<wbr/>Result
15367 <td class="entry_type">
15368 <span class="entry_type_name">byte</span>
15370 <span class="entry_type_visibility"> [hidden]</span>
15374 <span class="entry_type_deprecated">[deprecated] </span>
15378 </td> <!-- entry_type -->
15380 <td class="entry_description">
15381 <p>If set to 1,<wbr/> the HAL will always split result
15382 metadata for a single capture into multiple buffers,<wbr/>
15383 returned using multiple process_<wbr/>capture_<wbr/>result calls.<wbr/></p>
15386 <td class="entry_units">
15389 <td class="entry_range">
15390 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15393 <td class="entry_hal_version">
15397 <td class="entry_tags">
15401 <tr class="entries_header">
15402 <th class="th_details" colspan="6">Details</th>
15404 <tr class="entry_cont">
15405 <td class="entry_details" colspan="6">
15406 <p>Does not need to be listed in static
15407 metadata.<wbr/> Support for partial results will be reworked in
15408 future versions of camera service.<wbr/> This quirk will stop
15409 working at that point; DO NOT USE without careful
15410 consideration of future support.<wbr/></p>
15414 <tr class="entries_header">
15415 <th class="th_details" colspan="6">HAL Implementation Details</th>
15417 <tr class="entry_cont">
15418 <td class="entry_details" colspan="6">
15419 <p>Refer to <code>camera3_<wbr/>capture_<wbr/>result::partial_<wbr/>result</code>
15420 for information on how to implement partial results.<wbr/></p>
15424 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15425 <!-- end of entry -->
15429 <!-- end of kind -->
15431 <tr><td colspan="7" class="kind">dynamic</td></tr>
15433 <thead class="entries_header">
15435 <th class="th_name">Property Name</th>
15436 <th class="th_type">Type</th>
15437 <th class="th_description">Description</th>
15438 <th class="th_units">Units</th>
15439 <th class="th_range">Range</th>
15440 <th class="th_hal_version">Initial HIDL HAL version</th>
15441 <th class="th_tags">Tags</th>
15456 <tr class="entry" id="dynamic_android.quirks.partialResult">
15457 <td class="entry_name
15458 entry_name_deprecated
15460 android.<wbr/>quirks.<wbr/>partial<wbr/>Result
15462 <td class="entry_type">
15463 <span class="entry_type_name entry_type_name_enum">byte</span>
15465 <span class="entry_type_visibility"> [hidden as boolean]</span>
15469 <span class="entry_type_deprecated">[deprecated] </span>
15472 <ul class="entry_type_enum">
15474 <span class="entry_type_enum_name">FINAL (v3.2)</span>
15475 <span class="entry_type_enum_notes"><p>The last or only metadata result buffer
15476 for this capture.<wbr/></p></span>
15479 <span class="entry_type_enum_name">PARTIAL (v3.2)</span>
15480 <span class="entry_type_enum_notes"><p>A partial buffer of result metadata for this
15481 capture.<wbr/> More result buffers for this capture will be sent
15482 by the camera device,<wbr/> the last of which will be marked
15483 FINAL.<wbr/></p></span>
15487 </td> <!-- entry_type -->
15489 <td class="entry_description">
15490 <p>Whether a result given to the framework is the
15491 final one for the capture,<wbr/> or only a partial that contains a
15492 subset of the full set of dynamic metadata
15496 <td class="entry_units">
15499 <td class="entry_range">
15500 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15501 <p>Optional.<wbr/> Default value is FINAL.<wbr/></p>
15504 <td class="entry_hal_version">
15508 <td class="entry_tags">
15512 <tr class="entries_header">
15513 <th class="th_details" colspan="6">Details</th>
15515 <tr class="entry_cont">
15516 <td class="entry_details" colspan="6">
15517 <p>The entries in the result metadata buffers for a
15518 single capture may not overlap,<wbr/> except for this entry.<wbr/> The
15519 FINAL buffers must retain FIFO ordering relative to the
15520 requests that generate them,<wbr/> so the FINAL buffer for frame 3 must
15521 always be sent to the framework after the FINAL buffer for frame 2,<wbr/> and
15522 before the FINAL buffer for frame 4.<wbr/> PARTIAL buffers may be returned
15523 in any order relative to other frames,<wbr/> but all PARTIAL buffers for a given
15524 capture must arrive before the FINAL buffer for that capture.<wbr/> This entry may
15525 only be used by the camera device if quirks.<wbr/>usePartialResult is set to 1.<wbr/></p>
15529 <tr class="entries_header">
15530 <th class="th_details" colspan="6">HAL Implementation Details</th>
15532 <tr class="entry_cont">
15533 <td class="entry_details" colspan="6">
15534 <p>Refer to <code>camera3_<wbr/>capture_<wbr/>result::partial_<wbr/>result</code>
15535 for information on how to implement partial results.<wbr/></p>
15539 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15540 <!-- end of entry -->
15544 <!-- end of kind -->
15547 <!-- end of section -->
15548 <tr><td colspan="7" id="section_request" class="section">request</td></tr>
15551 <tr><td colspan="7" class="kind">controls</td></tr>
15553 <thead class="entries_header">
15555 <th class="th_name">Property Name</th>
15556 <th class="th_type">Type</th>
15557 <th class="th_description">Description</th>
15558 <th class="th_units">Units</th>
15559 <th class="th_range">Range</th>
15560 <th class="th_hal_version">Initial HIDL HAL version</th>
15561 <th class="th_tags">Tags</th>
15576 <tr class="entry" id="controls_android.request.frameCount">
15577 <td class="entry_name
15578 entry_name_deprecated
15580 android.<wbr/>request.<wbr/>frame<wbr/>Count
15582 <td class="entry_type">
15583 <span class="entry_type_name">int32</span>
15585 <span class="entry_type_visibility"> [system]</span>
15589 <span class="entry_type_deprecated">[deprecated] </span>
15593 </td> <!-- entry_type -->
15595 <td class="entry_description">
15596 <p>A frame counter set by the framework.<wbr/> Must
15597 be maintained unchanged in output frame.<wbr/> This value monotonically
15598 increases with every new result (that is,<wbr/> each new result has a unique
15599 frameCount value).<wbr/></p>
15602 <td class="entry_units">
15603 incrementing integer
15606 <td class="entry_range">
15607 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15608 <p>Any int.<wbr/></p>
15611 <td class="entry_hal_version">
15615 <td class="entry_tags">
15621 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15622 <!-- end of entry -->
15625 <tr class="entry" id="controls_android.request.id">
15626 <td class="entry_name
15628 android.<wbr/>request.<wbr/>id
15630 <td class="entry_type">
15631 <span class="entry_type_name">int32</span>
15633 <span class="entry_type_visibility"> [hidden]</span>
15640 </td> <!-- entry_type -->
15642 <td class="entry_description">
15643 <p>An application-specified ID for the current
15644 request.<wbr/> Must be maintained unchanged in output
15648 <td class="entry_units">
15649 arbitrary integer assigned by application
15652 <td class="entry_range">
15656 <td class="entry_hal_version">
15660 <td class="entry_tags">
15661 <ul class="entry_tags">
15662 <li><a href="#tag_V1">V1</a></li>
15669 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15670 <!-- end of entry -->
15673 <tr class="entry" id="controls_android.request.inputStreams">
15674 <td class="entry_name
15675 entry_name_deprecated
15677 android.<wbr/>request.<wbr/>input<wbr/>Streams
15679 <td class="entry_type">
15680 <span class="entry_type_name">int32</span>
15681 <span class="entry_type_container">x</span>
15683 <span class="entry_type_array">
15686 <span class="entry_type_visibility"> [system]</span>
15690 <span class="entry_type_deprecated">[deprecated] </span>
15694 </td> <!-- entry_type -->
15696 <td class="entry_description">
15697 <p>List which camera reprocess stream is used
15698 for the source of reprocessing data.<wbr/></p>
15701 <td class="entry_units">
15702 List of camera reprocess stream IDs
15705 <td class="entry_range">
15706 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15707 <p>Typically,<wbr/> only one entry allowed,<wbr/> must be a valid reprocess stream ID.<wbr/></p>
15710 <td class="entry_hal_version">
15714 <td class="entry_tags">
15715 <ul class="entry_tags">
15716 <li><a href="#tag_HAL2">HAL2</a></li>
15721 <tr class="entries_header">
15722 <th class="th_details" colspan="6">Details</th>
15724 <tr class="entry_cont">
15725 <td class="entry_details" colspan="6">
15726 <p>Only meaningful when <a href="#controls_android.request.type">android.<wbr/>request.<wbr/>type</a> ==
15727 REPROCESS.<wbr/> Ignored otherwise</p>
15732 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15733 <!-- end of entry -->
15736 <tr class="entry" id="controls_android.request.metadataMode">
15737 <td class="entry_name
15739 android.<wbr/>request.<wbr/>metadata<wbr/>Mode
15741 <td class="entry_type">
15742 <span class="entry_type_name entry_type_name_enum">byte</span>
15744 <span class="entry_type_visibility"> [system]</span>
15750 <ul class="entry_type_enum">
15752 <span class="entry_type_enum_name">NONE (v3.2)</span>
15753 <span class="entry_type_enum_notes"><p>No metadata should be produced on output,<wbr/> except
15754 for application-bound buffer data.<wbr/> If no
15755 application-bound streams exist,<wbr/> no frame should be
15756 placed in the output frame queue.<wbr/> If such streams
15757 exist,<wbr/> a frame should be placed on the output queue
15758 with null metadata but with the necessary output buffer
15759 information.<wbr/> Timestamp information should still be
15760 included with any output stream buffers</p></span>
15763 <span class="entry_type_enum_name">FULL (v3.2)</span>
15764 <span class="entry_type_enum_notes"><p>All metadata should be produced.<wbr/> Statistics will
15765 only be produced if they are separately
15770 </td> <!-- entry_type -->
15772 <td class="entry_description">
15773 <p>How much metadata to produce on
15777 <td class="entry_units">
15780 <td class="entry_range">
15783 <td class="entry_hal_version">
15787 <td class="entry_tags">
15788 <ul class="entry_tags">
15789 <li><a href="#tag_FUTURE">FUTURE</a></li>
15796 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15797 <!-- end of entry -->
15800 <tr class="entry" id="controls_android.request.outputStreams">
15801 <td class="entry_name
15802 entry_name_deprecated
15804 android.<wbr/>request.<wbr/>output<wbr/>Streams
15806 <td class="entry_type">
15807 <span class="entry_type_name">int32</span>
15808 <span class="entry_type_container">x</span>
15810 <span class="entry_type_array">
15813 <span class="entry_type_visibility"> [system]</span>
15817 <span class="entry_type_deprecated">[deprecated] </span>
15821 </td> <!-- entry_type -->
15823 <td class="entry_description">
15824 <p>Lists which camera output streams image data
15825 from this capture must be sent to</p>
15828 <td class="entry_units">
15829 List of camera stream IDs
15832 <td class="entry_range">
15833 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15834 <p>List must only include streams that have been
15838 <td class="entry_hal_version">
15842 <td class="entry_tags">
15843 <ul class="entry_tags">
15844 <li><a href="#tag_HAL2">HAL2</a></li>
15849 <tr class="entries_header">
15850 <th class="th_details" colspan="6">Details</th>
15852 <tr class="entry_cont">
15853 <td class="entry_details" colspan="6">
15854 <p>If no output streams are listed,<wbr/> then the image
15855 data should simply be discarded.<wbr/> The image data must
15856 still be captured for metadata and statistics production,<wbr/>
15857 and the lens and flash must operate as requested.<wbr/></p>
15862 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15863 <!-- end of entry -->
15866 <tr class="entry" id="controls_android.request.type">
15867 <td class="entry_name
15868 entry_name_deprecated
15870 android.<wbr/>request.<wbr/>type
15872 <td class="entry_type">
15873 <span class="entry_type_name entry_type_name_enum">byte</span>
15875 <span class="entry_type_visibility"> [system]</span>
15879 <span class="entry_type_deprecated">[deprecated] </span>
15882 <ul class="entry_type_enum">
15884 <span class="entry_type_enum_name">CAPTURE (v3.2)</span>
15885 <span class="entry_type_enum_notes"><p>Capture a new image from the imaging hardware,<wbr/>
15886 and process it according to the
15887 settings</p></span>
15890 <span class="entry_type_enum_name">REPROCESS (v3.2)</span>
15891 <span class="entry_type_enum_notes"><p>Process previously captured data; the
15892 <a href="#controls_android.request.inputStreams">android.<wbr/>request.<wbr/>input<wbr/>Streams</a> parameter determines the
15893 source reprocessing stream.<wbr/> TODO: Mark dynamic metadata
15894 needed for reprocessing with [RP]</p></span>
15898 </td> <!-- entry_type -->
15900 <td class="entry_description">
15901 <p>The type of the request; either CAPTURE or
15902 REPROCESS.<wbr/> For legacy HAL3,<wbr/> this tag is redundant.<wbr/></p>
15905 <td class="entry_units">
15908 <td class="entry_range">
15909 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15912 <td class="entry_hal_version">
15916 <td class="entry_tags">
15917 <ul class="entry_tags">
15918 <li><a href="#tag_HAL2">HAL2</a></li>
15925 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15926 <!-- end of entry -->
15930 <!-- end of kind -->
15932 <tr><td colspan="7" class="kind">static</td></tr>
15934 <thead class="entries_header">
15936 <th class="th_name">Property Name</th>
15937 <th class="th_type">Type</th>
15938 <th class="th_description">Description</th>
15939 <th class="th_units">Units</th>
15940 <th class="th_range">Range</th>
15941 <th class="th_hal_version">Initial HIDL HAL version</th>
15942 <th class="th_tags">Tags</th>
15957 <tr class="entry" id="static_android.request.maxNumOutputStreams">
15958 <td class="entry_name
15960 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams
15962 <td class="entry_type">
15963 <span class="entry_type_name">int32</span>
15964 <span class="entry_type_container">x</span>
15966 <span class="entry_type_array">
15969 <span class="entry_type_visibility"> [ndk_public]</span>
15972 <span class="entry_type_hwlevel">[legacy] </span>
15977 </td> <!-- entry_type -->
15979 <td class="entry_description">
15980 <p>The maximum numbers of different types of output streams
15981 that can be configured and used simultaneously by a camera device.<wbr/></p>
15984 <td class="entry_units">
15987 <td class="entry_range">
15988 <p>For processed (and stalling) format streams,<wbr/> >= 1.<wbr/></p>
15989 <p>For Raw format (either stalling or non-stalling) streams,<wbr/> >= 0.<wbr/></p>
15990 <p>For processed (but not stalling) format streams,<wbr/> >= 3
15991 for FULL mode devices (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL</code>);
15992 >= 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>
15995 <td class="entry_hal_version">
15999 <td class="entry_tags">
16000 <ul class="entry_tags">
16001 <li><a href="#tag_BC">BC</a></li>
16006 <tr class="entries_header">
16007 <th class="th_details" colspan="6">Details</th>
16009 <tr class="entry_cont">
16010 <td class="entry_details" colspan="6">
16011 <p>This is a 3 element tuple that contains the max number of output simultaneous
16012 streams for raw sensor,<wbr/> processed (but not stalling),<wbr/> and processed (and stalling)
16013 formats respectively.<wbr/> For example,<wbr/> assuming that JPEG is typically a processed and
16014 stalling stream,<wbr/> if max raw sensor format output stream number is 1,<wbr/> max YUV streams
16015 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>
16016 <p>This lists the upper bound of the number of output streams supported by
16017 the camera device.<wbr/> Using more streams simultaneously may require more hardware and
16018 CPU resources that will consume more power.<wbr/> The image format for an output stream can
16019 be any supported format provided by <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a>.<wbr/>
16020 The formats defined in <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> can be catergorized
16021 into the 3 stream types as below:</p>
16023 <li>Processed (but stalling): any non-RAW format with a stallDurations > 0.<wbr/>
16024 Typically <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">JPEG format</a>.<wbr/></li>
16025 <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
16026 <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW12">RAW12</a>.<wbr/></li>
16027 <li>Processed (but not-stalling): any non-RAW format without a stall duration.<wbr/> Typically
16028 <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">YUV_<wbr/>420_<wbr/>888</a>,<wbr/>
16029 <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>
16035 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16036 <!-- end of entry -->
16039 <tr class="entry" id="static_android.request.maxNumOutputRaw">
16040 <td class="entry_name
16042 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Raw
16044 <td class="entry_type">
16045 <span class="entry_type_name">int32</span>
16047 <span class="entry_type_visibility"> [java_public]</span>
16049 <span class="entry_type_synthetic">[synthetic] </span>
16051 <span class="entry_type_hwlevel">[legacy] </span>
16056 </td> <!-- entry_type -->
16058 <td class="entry_description">
16059 <p>The maximum numbers of different types of output streams
16060 that can be configured and used simultaneously by a camera device
16061 for any <code>RAW</code> formats.<wbr/></p>
16064 <td class="entry_units">
16067 <td class="entry_range">
16071 <td class="entry_hal_version">
16075 <td class="entry_tags">
16079 <tr class="entries_header">
16080 <th class="th_details" colspan="6">Details</th>
16082 <tr class="entry_cont">
16083 <td class="entry_details" colspan="6">
16084 <p>This value contains the max number of output simultaneous
16085 streams from the raw sensor.<wbr/></p>
16086 <p>This lists the upper bound of the number of output streams supported by
16087 the camera device.<wbr/> Using more streams simultaneously may require more hardware and
16088 CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can
16089 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>
16090 <p>In particular,<wbr/> a <code>RAW</code> format is typically one of:</p>
16092 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_SENSOR">RAW_<wbr/>SENSOR</a></li>
16093 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW10">RAW10</a></li>
16094 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW12">RAW12</a></li>
16096 <p>LEGACY mode devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> <code>==</code> LEGACY)
16097 never support raw streams.<wbr/></p>
16102 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16103 <!-- end of entry -->
16106 <tr class="entry" id="static_android.request.maxNumOutputProc">
16107 <td class="entry_name
16109 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Proc
16111 <td class="entry_type">
16112 <span class="entry_type_name">int32</span>
16114 <span class="entry_type_visibility"> [java_public]</span>
16116 <span class="entry_type_synthetic">[synthetic] </span>
16118 <span class="entry_type_hwlevel">[legacy] </span>
16123 </td> <!-- entry_type -->
16125 <td class="entry_description">
16126 <p>The maximum numbers of different types of output streams
16127 that can be configured and used simultaneously by a camera device
16128 for any processed (but not-stalling) formats.<wbr/></p>
16131 <td class="entry_units">
16134 <td class="entry_range">
16136 for FULL mode devices (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL</code>);
16137 >= 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>
16140 <td class="entry_hal_version">
16144 <td class="entry_tags">
16148 <tr class="entries_header">
16149 <th class="th_details" colspan="6">Details</th>
16151 <tr class="entry_cont">
16152 <td class="entry_details" colspan="6">
16153 <p>This value contains the max number of output simultaneous
16154 streams for any processed (but not-stalling) formats.<wbr/></p>
16155 <p>This lists the upper bound of the number of output streams supported by
16156 the camera device.<wbr/> Using more streams simultaneously may require more hardware and
16157 CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can
16158 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>
16159 <p>Processed (but not-stalling) is defined as any non-RAW format without a stall duration.<wbr/>
16162 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">YUV_<wbr/>420_<wbr/>888</a></li>
16163 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#NV21">NV21</a></li>
16164 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YV12">YV12</a></li>
16165 <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>
16167 <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
16168 processed format -- it will return 0 for a non-stalling stream.<wbr/></p>
16169 <p>LEGACY devices will support at least 2 processing/<wbr/>non-stalling streams.<wbr/></p>
16174 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16175 <!-- end of entry -->
16178 <tr class="entry" id="static_android.request.maxNumOutputProcStalling">
16179 <td class="entry_name
16181 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Proc<wbr/>Stalling
16183 <td class="entry_type">
16184 <span class="entry_type_name">int32</span>
16186 <span class="entry_type_visibility"> [java_public]</span>
16188 <span class="entry_type_synthetic">[synthetic] </span>
16190 <span class="entry_type_hwlevel">[legacy] </span>
16195 </td> <!-- entry_type -->
16197 <td class="entry_description">
16198 <p>The maximum numbers of different types of output streams
16199 that can be configured and used simultaneously by a camera device
16200 for any processed (and stalling) formats.<wbr/></p>
16203 <td class="entry_units">
16206 <td class="entry_range">
16210 <td class="entry_hal_version">
16214 <td class="entry_tags">
16218 <tr class="entries_header">
16219 <th class="th_details" colspan="6">Details</th>
16221 <tr class="entry_cont">
16222 <td class="entry_details" colspan="6">
16223 <p>This value contains the max number of output simultaneous
16224 streams for any processed (but not-stalling) formats.<wbr/></p>
16225 <p>This lists the upper bound of the number of output streams supported by
16226 the camera device.<wbr/> Using more streams simultaneously may require more hardware and
16227 CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can
16228 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>
16229 <p>A processed and stalling format is defined as any non-RAW format with a stallDurations
16230 > 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>
16231 <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
16232 processed format -- it will return a non-0 value for a stalling stream.<wbr/></p>
16233 <p>LEGACY devices will support up to 1 processing/<wbr/>stalling stream.<wbr/></p>
16238 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16239 <!-- end of entry -->
16242 <tr class="entry" id="static_android.request.maxNumReprocessStreams">
16243 <td class="entry_name
16244 entry_name_deprecated
16246 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Reprocess<wbr/>Streams
16248 <td class="entry_type">
16249 <span class="entry_type_name">int32</span>
16250 <span class="entry_type_container">x</span>
16252 <span class="entry_type_array">
16255 <span class="entry_type_visibility"> [system]</span>
16259 <span class="entry_type_deprecated">[deprecated] </span>
16263 </td> <!-- entry_type -->
16265 <td class="entry_description">
16266 <p>How many reprocessing streams of any type
16267 can be allocated at the same time.<wbr/></p>
16270 <td class="entry_units">
16273 <td class="entry_range">
16274 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
16278 <td class="entry_hal_version">
16282 <td class="entry_tags">
16283 <ul class="entry_tags">
16284 <li><a href="#tag_HAL2">HAL2</a></li>
16289 <tr class="entries_header">
16290 <th class="th_details" colspan="6">Details</th>
16292 <tr class="entry_cont">
16293 <td class="entry_details" colspan="6">
16294 <p>Only used by HAL2.<wbr/>x.<wbr/></p>
16295 <p>When set to 0,<wbr/> it means no reprocess stream is supported.<wbr/></p>
16300 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16301 <!-- end of entry -->
16304 <tr class="entry" id="static_android.request.maxNumInputStreams">
16305 <td class="entry_name
16307 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Input<wbr/>Streams
16309 <td class="entry_type">
16310 <span class="entry_type_name">int32</span>
16312 <span class="entry_type_visibility"> [java_public]</span>
16315 <span class="entry_type_hwlevel">[full] </span>
16320 </td> <!-- entry_type -->
16322 <td class="entry_description">
16323 <p>The maximum numbers of any type of input streams
16324 that can be configured and used simultaneously by a camera device.<wbr/></p>
16327 <td class="entry_units">
16330 <td class="entry_range">
16331 <p>0 or 1.<wbr/></p>
16334 <td class="entry_hal_version">
16338 <td class="entry_tags">
16339 <ul class="entry_tags">
16340 <li><a href="#tag_REPROC">REPROC</a></li>
16345 <tr class="entries_header">
16346 <th class="th_details" colspan="6">Details</th>
16348 <tr class="entry_cont">
16349 <td class="entry_details" colspan="6">
16350 <p>When set to 0,<wbr/> it means no input stream is supported.<wbr/></p>
16351 <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
16352 input stream,<wbr/> there must be at least one output stream configured to to receive the
16353 reprocessed images.<wbr/></p>
16354 <p>When an input stream and some output streams are used in a reprocessing request,<wbr/>
16355 only the input buffer will be used to produce these output stream buffers,<wbr/> and a
16356 new sensor image will not be captured.<wbr/></p>
16357 <p>For example,<wbr/> for Zero Shutter Lag (ZSL) still capture use case,<wbr/> the input
16358 stream image format will be PRIVATE,<wbr/> the associated output stream image format
16359 should be JPEG.<wbr/></p>
16363 <tr class="entries_header">
16364 <th class="th_details" colspan="6">HAL Implementation Details</th>
16366 <tr class="entry_cont">
16367 <td class="entry_details" colspan="6">
16368 <p>For the reprocessing flow and controls,<wbr/> see
16369 hardware/<wbr/>libhardware/<wbr/>include/<wbr/>hardware/<wbr/>camera3.<wbr/>h Section 10 for more details.<wbr/></p>
16373 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16374 <!-- end of entry -->
16377 <tr class="entry" id="static_android.request.pipelineMaxDepth">
16378 <td class="entry_name
16380 android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth
16382 <td class="entry_type">
16383 <span class="entry_type_name">byte</span>
16385 <span class="entry_type_visibility"> [public]</span>
16388 <span class="entry_type_hwlevel">[legacy] </span>
16393 </td> <!-- entry_type -->
16395 <td class="entry_description">
16396 <p>Specifies the number of maximum pipeline stages a frame
16397 has to go through from when it's exposed to when it's available
16398 to the framework.<wbr/></p>
16401 <td class="entry_units">
16404 <td class="entry_range">
16407 <td class="entry_hal_version">
16411 <td class="entry_tags">
16415 <tr class="entries_header">
16416 <th class="th_details" colspan="6">Details</th>
16418 <tr class="entry_cont">
16419 <td class="entry_details" colspan="6">
16420 <p>A typical minimum value for this is 2 (one stage to expose,<wbr/>
16421 one stage to readout) from the sensor.<wbr/> The ISP then usually adds
16422 its own stages to do custom HW processing.<wbr/> Further stages may be
16423 added by SW processing.<wbr/></p>
16424 <p>Depending on what settings are used (e.<wbr/>g.<wbr/> YUV,<wbr/> JPEG) and what
16425 processing is enabled (e.<wbr/>g.<wbr/> face detection),<wbr/> the actual pipeline
16426 depth (specified by <a href="#dynamic_android.request.pipelineDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Depth</a>) may be less than
16427 the max pipeline depth.<wbr/></p>
16428 <p>A pipeline depth of X stages is equivalent to a pipeline latency of
16429 X frame intervals.<wbr/></p>
16430 <p>This value will normally be 8 or less,<wbr/> however,<wbr/> for high speed capture session,<wbr/>
16431 the max pipeline depth will be up to 8 x size of high speed capture request list.<wbr/></p>
16435 <tr class="entries_header">
16436 <th class="th_details" colspan="6">HAL Implementation Details</th>
16438 <tr class="entry_cont">
16439 <td class="entry_details" colspan="6">
16440 <p>This value should be 4 or less,<wbr/> expect for the high speed recording session,<wbr/> where the
16441 max batch sizes may be larger than 1.<wbr/></p>
16445 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16446 <!-- end of entry -->
16449 <tr class="entry" id="static_android.request.partialResultCount">
16450 <td class="entry_name
16452 android.<wbr/>request.<wbr/>partial<wbr/>Result<wbr/>Count
16454 <td class="entry_type">
16455 <span class="entry_type_name">int32</span>
16457 <span class="entry_type_visibility"> [public]</span>
16464 </td> <!-- entry_type -->
16466 <td class="entry_description">
16467 <p>Defines how many sub-components
16468 a result will be composed of.<wbr/></p>
16471 <td class="entry_units">
16474 <td class="entry_range">
16478 <td class="entry_hal_version">
16482 <td class="entry_tags">
16486 <tr class="entries_header">
16487 <th class="th_details" colspan="6">Details</th>
16489 <tr class="entry_cont">
16490 <td class="entry_details" colspan="6">
16491 <p>In order to combat the pipeline latency,<wbr/> partial results
16492 may be delivered to the application layer from the camera device as
16493 soon as they are available.<wbr/></p>
16494 <p>Optional; defaults to 1.<wbr/> A value of 1 means that partial
16495 results are not supported,<wbr/> and only the final TotalCaptureResult will
16496 be produced by the camera device.<wbr/></p>
16497 <p>A typical use case for this might be: after requesting an
16498 auto-focus (AF) lock the new AF state might be available 50%
16499 of the way through the pipeline.<wbr/> The camera device could
16500 then immediately dispatch this state via a partial result to
16501 the application,<wbr/> and the rest of the metadata via later
16502 partial results.<wbr/></p>
16507 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16508 <!-- end of entry -->
16511 <tr class="entry" id="static_android.request.availableCapabilities">
16512 <td class="entry_name
16514 android.<wbr/>request.<wbr/>available<wbr/>Capabilities
16516 <td class="entry_type">
16517 <span class="entry_type_name entry_type_name_enum">byte</span>
16518 <span class="entry_type_container">x</span>
16520 <span class="entry_type_array">
16523 <span class="entry_type_visibility"> [public]</span>
16526 <span class="entry_type_hwlevel">[legacy] </span>
16530 <ul class="entry_type_enum">
16532 <span class="entry_type_enum_name">BACKWARD_COMPATIBLE (v3.2)</span>
16533 <span class="entry_type_enum_notes"><p>The minimal set of capabilities that every camera
16534 device (regardless of <a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>)
16535 supports.<wbr/></p>
16536 <p>This capability is listed by all normal devices,<wbr/> and
16537 indicates that the camera device has a feature set
16538 that's comparable to the baseline requirements for the
16539 older android.<wbr/>hardware.<wbr/>Camera API.<wbr/></p>
16540 <p>Devices with the DEPTH_<wbr/>OUTPUT capability might not list this
16541 capability,<wbr/> indicating that they support only depth measurement,<wbr/>
16542 not standard color output.<wbr/></p></span>
16545 <span class="entry_type_enum_name">MANUAL_SENSOR (v3.2)</span>
16546 <span class="entry_type_enum_optional">[optional]</span>
16547 <span class="entry_type_enum_notes"><p>The camera device can be manually controlled (3A algorithms such
16548 as auto-exposure,<wbr/> and auto-focus can be bypassed).<wbr/>
16549 The camera device supports basic manual control of the sensor image
16550 acquisition related stages.<wbr/> This means the following controls are
16551 guaranteed to be supported:</p>
16553 <li>Manual frame duration control<ul>
16554 <li><a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a></li>
16555 <li><a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a></li>
16558 <li>Manual exposure control<ul>
16559 <li><a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a></li>
16560 <li><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></li>
16563 <li>Manual sensitivity control<ul>
16564 <li><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></li>
16565 <li><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></li>
16568 <li>Manual lens control (if the lens is adjustable)<ul>
16569 <li>android.<wbr/>lens.<wbr/>*</li>
16572 <li>Manual flash control (if a flash unit is present)<ul>
16573 <li>android.<wbr/>flash.<wbr/>*</li>
16576 <li>Manual black level locking<ul>
16577 <li><a href="#controls_android.blackLevel.lock">android.<wbr/>black<wbr/>Level.<wbr/>lock</a></li>
16580 <li>Auto exposure lock<ul>
16581 <li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li>
16585 <p>If any of the above 3A algorithms are enabled,<wbr/> then the camera
16586 device will accurately report the values applied by 3A in the
16588 <p>A given camera device may also support additional manual sensor controls,<wbr/>
16589 but this capability only covers the above list of controls.<wbr/></p>
16590 <p>If this is supported,<wbr/> <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> will
16591 additionally return a min frame duration that is greater than
16592 zero for each supported size-format combination.<wbr/></p></span>
16595 <span class="entry_type_enum_name">MANUAL_POST_PROCESSING (v3.2)</span>
16596 <span class="entry_type_enum_optional">[optional]</span>
16597 <span class="entry_type_enum_notes"><p>The camera device post-processing stages can be manually controlled.<wbr/>
16598 The camera device supports basic manual control of the image post-processing
16599 stages.<wbr/> This means the following controls are guaranteed to be supported:</p>
16602 <p>Manual tonemap control</p>
16604 <li><a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a></li>
16605 <li><a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a></li>
16606 <li><a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></li>
16607 <li><a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a></li>
16608 <li><a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a></li>
16612 <p>Manual white balance control</p>
16614 <li><a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a></li>
16615 <li><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a></li>
16618 <li>Manual lens shading map control<ul>
16619 <li><a href="#controls_android.shading.mode">android.<wbr/>shading.<wbr/>mode</a></li>
16620 <li><a href="#controls_android.statistics.lensShadingMapMode">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode</a></li>
16621 <li><a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a></li>
16622 <li><a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a></li>
16625 <li>Manual aberration correction control (if aberration correction is supported)<ul>
16626 <li><a href="#controls_android.colorCorrection.aberrationMode">android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode</a></li>
16627 <li><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></li>
16630 <li>Auto white balance lock<ul>
16631 <li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li>
16635 <p>If auto white balance is enabled,<wbr/> then the camera device
16636 will accurately report the values applied by AWB in the result.<wbr/></p>
16637 <p>A given camera device may also support additional post-processing
16638 controls,<wbr/> but this capability only covers the above list of controls.<wbr/></p></span>
16641 <span class="entry_type_enum_name">RAW (v3.2)</span>
16642 <span class="entry_type_enum_optional">[optional]</span>
16643 <span class="entry_type_enum_notes"><p>The camera device supports outputting RAW buffers and
16644 metadata for interpreting them.<wbr/></p>
16645 <p>Devices supporting the RAW capability allow both for
16646 saving DNG files,<wbr/> and for direct application processing of
16647 raw sensor images.<wbr/></p>
16649 <li>RAW_<wbr/>SENSOR is supported as an output format.<wbr/></li>
16650 <li>The maximum available resolution for RAW_<wbr/>SENSOR streams
16651 will match either the value in
16652 <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a> or
16653 <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>
16654 <li>All DNG-related optional metadata entries are provided
16655 by the camera device.<wbr/></li>
16659 <span class="entry_type_enum_name">PRIVATE_REPROCESSING (v3.2)</span>
16660 <span class="entry_type_enum_optional">[optional]</span>
16661 <span class="entry_type_enum_notes"><p>The camera device supports the Zero Shutter Lag reprocessing use case.<wbr/></p>
16663 <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>
16664 <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/>
16665 that is,<wbr/> <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> is included in the lists of
16666 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>
16667 <li><a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getValidOutputFormatsForInput">StreamConfigurationMap#getValidOutputFormatsForInput</a>
16668 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>
16669 <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>
16670 <li>Using <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> does not cause a frame rate drop
16671 relative to the sensor's maximum capture rate (at that resolution).<wbr/></li>
16672 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> will be reprocessable into both
16673 <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a> and
16674 <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a> formats.<wbr/></li>
16675 <li>The maximum available resolution for PRIVATE streams
16676 (both input/<wbr/>output) will match the maximum available
16677 resolution of JPEG streams.<wbr/></li>
16678 <li>Static metadata <a href="#static_android.reprocess.maxCaptureStall">android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall</a>.<wbr/></li>
16679 <li>Only below controls are effective for reprocessing requests and
16680 will be present in capture results,<wbr/> other controls in reprocess
16681 requests will be ignored by the camera device.<wbr/><ul>
16682 <li>android.<wbr/>jpeg.<wbr/>*</li>
16683 <li><a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></li>
16684 <li><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></li>
16687 <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a> and
16688 <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>
16692 <span class="entry_type_enum_name">READ_SENSOR_SETTINGS (v3.2)</span>
16693 <span class="entry_type_enum_optional">[optional]</span>
16694 <span class="entry_type_enum_notes"><p>The camera device supports accurately reporting the sensor settings for many of
16695 the sensor controls while the built-in 3A algorithm is running.<wbr/> This allows
16696 reporting of sensor settings even when these settings cannot be manually changed.<wbr/></p>
16697 <p>The values reported for the following controls are guaranteed to be available
16698 in the CaptureResult,<wbr/> including when 3A is enabled:</p>
16700 <li>Exposure control<ul>
16701 <li><a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a></li>
16704 <li>Sensitivity control<ul>
16705 <li><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></li>
16708 <li>Lens controls (if the lens is adjustable)<ul>
16709 <li><a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a></li>
16710 <li><a href="#controls_android.lens.aperture">android.<wbr/>lens.<wbr/>aperture</a></li>
16714 <p>This capability is a subset of the MANUAL_<wbr/>SENSOR control capability,<wbr/> and will
16715 always be included if the MANUAL_<wbr/>SENSOR capability is available.<wbr/></p></span>
16718 <span class="entry_type_enum_name">BURST_CAPTURE (v3.2)</span>
16719 <span class="entry_type_enum_optional">[optional]</span>
16720 <span class="entry_type_enum_notes"><p>The camera device supports capturing high-resolution images at >= 20 frames per
16721 second,<wbr/> in at least the uncompressed YUV format,<wbr/> when post-processing settings are set
16722 to FAST.<wbr/> Additionally,<wbr/> maximum-resolution images can be captured at >= 10 frames
16723 per second.<wbr/> Here,<wbr/> 'high resolution' means at least 8 megapixels,<wbr/> or the maximum
16724 resolution of the device,<wbr/> whichever is smaller.<wbr/></p></span>
16727 <span class="entry_type_enum_name">YUV_REPROCESSING (v3.2)</span>
16728 <span class="entry_type_enum_optional">[optional]</span>
16729 <span class="entry_type_enum_notes"><p>The camera device supports the YUV_<wbr/>420_<wbr/>888 reprocessing use case,<wbr/> similar as
16730 PRIVATE_<wbr/>REPROCESSING,<wbr/> This capability requires the camera device to support the
16733 <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>
16734 <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
16735 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>
16736 <li><a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getValidOutputFormatsForInput">StreamConfigurationMap#getValidOutputFormatsForInput</a>
16737 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>
16738 <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>
16739 <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
16740 drop relative to the sensor's maximum capture rate (at that resolution).<wbr/></li>
16741 <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
16742 <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>
16743 <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
16744 maximum available resolution of <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a> streams.<wbr/></li>
16745 <li>Static metadata <a href="#static_android.reprocess.maxCaptureStall">android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall</a>.<wbr/></li>
16746 <li>Only the below controls are effective for reprocessing requests and will be present
16747 in capture results.<wbr/> The reprocess requests are from the original capture results
16748 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
16749 reprocess requests will be ignored by the camera device.<wbr/><ul>
16750 <li>android.<wbr/>jpeg.<wbr/>*</li>
16751 <li><a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></li>
16752 <li><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></li>
16753 <li><a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a></li>
16756 <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a> and
16757 <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>
16761 <span class="entry_type_enum_name">DEPTH_OUTPUT (v3.2)</span>
16762 <span class="entry_type_enum_optional">[optional]</span>
16763 <span class="entry_type_enum_notes"><p>The camera device can produce depth measurements from its field of view.<wbr/></p>
16764 <p>This capability requires the camera device to support the following:</p>
16766 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#DEPTH16">ImageFormat#DEPTH16</a> is supported as
16767 an output format.<wbr/></li>
16768 <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
16769 optionally supported as an output format.<wbr/></li>
16770 <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
16771 list the following calibration metadata entries in both <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html">CameraCharacteristics</a>
16772 and <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">CaptureResult</a>:<ul>
16773 <li><a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a></li>
16774 <li><a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a></li>
16775 <li><a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a></li>
16776 <li><a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a></li>
16779 <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>
16780 <li>As of Android P,<wbr/> the <a href="#static_android.lens.poseReference">android.<wbr/>lens.<wbr/>pose<wbr/>Reference</a> entry is listed by this device.<wbr/></li>
16781 <li>A LIMITED camera with only the DEPTH_<wbr/>OUTPUT capability does not have to support
16782 normal YUV_<wbr/>420_<wbr/>888,<wbr/> JPEG,<wbr/> and PRIV-format outputs.<wbr/> It only has to support the DEPTH16
16785 <p>Generally,<wbr/> depth output operates at a slower frame rate than standard color capture,<wbr/>
16786 so the DEPTH16 and DEPTH_<wbr/>POINT_<wbr/>CLOUD formats will commonly have a stall duration that
16787 should be accounted for (see <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a>).<wbr/>
16788 On a device that supports both depth and color-based output,<wbr/> to enable smooth preview,<wbr/>
16789 using a repeating burst is recommended,<wbr/> where a depth-output target is only included
16790 once every N frames,<wbr/> where N is the ratio between preview output rate and depth output
16791 rate,<wbr/> including depth stall time.<wbr/></p></span>
16794 <span class="entry_type_enum_name">CONSTRAINED_HIGH_SPEED_VIDEO (v3.2)</span>
16795 <span class="entry_type_enum_optional">[optional]</span>
16796 <span class="entry_type_enum_notes"><p>The device supports constrained high speed video recording (frame rate >=120fps) use
16797 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
16798 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>
16799 <p>A camera device can still support high speed video streaming by advertising the high
16800 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
16801 normal capture request per frame control and synchronization requirements will apply
16802 to the high speed fps ranges,<wbr/> the same as all other fps ranges.<wbr/> This capability
16803 describes the capability of a specialized operating mode with many limitations (see
16804 below),<wbr/> which is only targeted at high speed video recording.<wbr/></p>
16805 <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/>
16806 To get desired output frame rates,<wbr/> the application is only allowed to select video
16807 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
16808 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>
16809 <p>In this capability,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to
16810 ON,<wbr/> AUTO,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode
16811 controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture
16812 and post-processing parameters is possible.<wbr/> All other controls operate the
16813 same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other
16814 android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p>
16816 <li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li>
16817 <li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li>
16818 <li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li>
16819 <li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li>
16820 <li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li>
16821 <li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li>
16822 <li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li>
16823 <li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li>
16824 <li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li>
16825 <li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li>
16827 <p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p>
16829 <li><a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> (TORCH mode only,<wbr/> automatic flash for still capture will not
16830 work since aeMode is ON)</li>
16831 <li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li>
16832 <li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li>
16833 <li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> (if it is supported)</li>
16835 <p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may
16836 be lower than what camera can output,<wbr/> depending on the destination Surfaces for
16837 the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/>
16838 the application need check if the video encoder is capable of supporting the
16839 high frame rate for a given video size,<wbr/> or it will end up with lower recording
16840 frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the actual preview frame
16841 rate will be bounded by the screen refresh rate.<wbr/></p>
16842 <p>The camera device will only support up to 2 high speed simultaneous output surfaces
16843 (preview and recording surfaces) in this mode.<wbr/> Above controls will be effective only
16844 if all of below conditions are true:</p>
16846 <li>The application creates a camera capture session with no more than 2 surfaces via
16847 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>.<wbr/> The
16848 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
16849 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>
16850 <li>The stream sizes are selected from the sizes reported by
16851 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighSpeedVideoSizes">StreamConfigurationMap#getHighSpeedVideoSizes</a>.<wbr/></li>
16852 <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>
16854 <p>When above conditions are NOT satistied,<wbr/>
16855 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>
16856 will fail.<wbr/></p>
16857 <p>Switching to a FPS range that has different maximum FPS may trigger some camera device
16858 reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that
16859 the application avoids unnecessary maximum target FPS changes as much as possible
16860 during high speed streaming.<wbr/></p></span>
16863 <span class="entry_type_enum_name">MOTION_TRACKING (v3.3)</span>
16864 <span class="entry_type_enum_optional">[optional]</span>
16865 <span class="entry_type_enum_notes"><p>The camera device supports the MOTION_<wbr/>TRACKING value for
16866 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a>,<wbr/> which limits maximum exposure time to 20 ms.<wbr/></p>
16867 <p>This limits the motion blur of capture images,<wbr/> resulting in better image tracking
16868 results for use cases such as image stabilization or augmented reality.<wbr/></p></span>
16871 <span class="entry_type_enum_name">LOGICAL_MULTI_CAMERA (v3.3)</span>
16872 <span class="entry_type_enum_optional">[optional]</span>
16873 <span class="entry_type_enum_notes"><p>The camera device is a logical camera backed by two or more physical cameras that are
16874 also exposed to the application.<wbr/></p>
16875 <p>This capability requires the camera device to support the following:</p>
16877 <li>This camera device must list the following static metadata entries in <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html">CameraCharacteristics</a>:<ul>
16878 <li><a href="#static_android.logicalMultiCamera.physicalIds">android.<wbr/>logical<wbr/>Multi<wbr/>Camera.<wbr/>physical<wbr/>Ids</a></li>
16879 <li><a href="#static_android.logicalMultiCamera.sensorSyncType">android.<wbr/>logical<wbr/>Multi<wbr/>Camera.<wbr/>sensor<wbr/>Sync<wbr/>Type</a></li>
16882 <li>The underlying physical cameras' static metadata must list the following entries,<wbr/>
16883 so that the application can correlate pixels from the physical streams:<ul>
16884 <li><a href="#static_android.lens.poseReference">android.<wbr/>lens.<wbr/>pose<wbr/>Reference</a></li>
16885 <li><a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a></li>
16886 <li><a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a></li>
16887 <li><a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a></li>
16888 <li><a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a></li>
16891 <li>The SENSOR_<wbr/>INFO_<wbr/>TIMESTAMP_<wbr/>SOURCE of the logical device and physical devices must be
16892 the same.<wbr/></li>
16893 <li>The logical camera device must be LIMITED or higher device.<wbr/></li>
16895 <p>Both the logical camera device and its underlying physical devices support the
16896 mandatory stream combinations required for their device levels.<wbr/></p>
16897 <p>Additionally,<wbr/> for each guaranteed stream combination,<wbr/> the logical camera supports:</p>
16899 <li>For each guaranteed stream combination,<wbr/> the logical camera supports replacing one
16900 logical <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">YUV_<wbr/>420_<wbr/>888</a>
16901 or raw stream with two physical streams of the same size and format,<wbr/> each from a
16902 separate physical camera,<wbr/> given that the size and format are supported by both
16903 physical cameras.<wbr/></li>
16904 <li>If the logical camera doesn't advertise RAW capability,<wbr/> but the underlying physical
16905 cameras do,<wbr/> the logical camera will support guaranteed stream combinations for RAW
16906 capability,<wbr/> except that the RAW streams will be physical streams,<wbr/> each from a separate
16907 physical camera.<wbr/> This is usually the case when the physical cameras have different
16908 sensor sizes.<wbr/></li>
16910 <p>Using physical streams in place of a logical stream of the same size and format will
16911 not slow down the frame rate of the capture,<wbr/> as long as the minimum frame duration
16912 of the physical and logical streams are the same.<wbr/></p></span>
16916 </td> <!-- entry_type -->
16918 <td class="entry_description">
16919 <p>List of capabilities that this camera device
16920 advertises as fully supporting.<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>A capability is a contract that the camera device makes in order
16943 to be able to satisfy one or more use cases.<wbr/></p>
16944 <p>Listing a capability guarantees that the whole set of features
16945 required to support a common use will all be available.<wbr/></p>
16946 <p>Using a subset of the functionality provided by an unsupported
16947 capability may be possible on a specific camera device implementation;
16948 to do this query each of <a href="#static_android.request.availableRequestKeys">android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys</a>,<wbr/>
16949 <a href="#static_android.request.availableResultKeys">android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys</a>,<wbr/>
16950 <a href="#static_android.request.availableCharacteristicsKeys">android.<wbr/>request.<wbr/>available<wbr/>Characteristics<wbr/>Keys</a>.<wbr/></p>
16951 <p>The following capabilities are guaranteed to be available on
16952 <a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> <code>==</code> FULL devices:</p>
16954 <li>MANUAL_<wbr/>SENSOR</li>
16955 <li>MANUAL_<wbr/>POST_<wbr/>PROCESSING</li>
16957 <p>Other capabilities may be available on either FULL or LIMITED
16958 devices,<wbr/> but the application should query this key to be sure.<wbr/></p>
16962 <tr class="entries_header">
16963 <th class="th_details" colspan="6">HAL Implementation Details</th>
16965 <tr class="entry_cont">
16966 <td class="entry_details" colspan="6">
16967 <p>Additional constraint details per-capability will be available
16968 in the Compatibility Test Suite.<wbr/></p>
16969 <p>Minimum baseline requirements required for the
16970 BACKWARD_<wbr/>COMPATIBLE capability are not explicitly listed.<wbr/>
16971 Instead refer to "BC" tags and the camera CTS tests in the
16972 android.<wbr/>hardware.<wbr/>camera2.<wbr/>cts package.<wbr/></p>
16973 <p>Listed controls that can be either request or result (e.<wbr/>g.<wbr/>
16974 <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>) must be available both in the
16975 request and the result in order to be considered to be
16976 capability-compliant.<wbr/></p>
16977 <p>For example,<wbr/> if the HAL claims to support MANUAL control,<wbr/>
16978 then exposure time must be configurable via the request <em>and</em>
16979 the actual exposure applied must be available via
16980 the result.<wbr/></p>
16981 <p>If MANUAL_<wbr/>SENSOR is omitted,<wbr/> the HAL may choose to omit the
16982 <a href="#static_android.scaler.availableMinFrameDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Min<wbr/>Frame<wbr/>Durations</a> static property entirely.<wbr/></p>
16983 <p>For PRIVATE_<wbr/>REPROCESSING and YUV_<wbr/>REPROCESSING capabilities,<wbr/> see
16984 hardware/<wbr/>libhardware/<wbr/>include/<wbr/>hardware/<wbr/>camera3.<wbr/>h Section 10 for more information.<wbr/></p>
16985 <p>Devices that support the MANUAL_<wbr/>SENSOR capability must support the
16986 CAMERA3_<wbr/>TEMPLATE_<wbr/>MANUAL template defined in camera3.<wbr/>h.<wbr/></p>
16987 <p>Devices that support the PRIVATE_<wbr/>REPROCESSING capability or the
16988 YUV_<wbr/>REPROCESSING capability must support the
16989 CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template defined in camera3.<wbr/>h.<wbr/></p>
16990 <p>For DEPTH_<wbr/>OUTPUT,<wbr/> the depth-format keys
16991 <a href="#static_android.depth.availableDepthStreamConfigurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stream<wbr/>Configurations</a>,<wbr/>
16992 <a href="#static_android.depth.availableDepthMinFrameDurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Min<wbr/>Frame<wbr/>Durations</a>,<wbr/>
16993 <a href="#static_android.depth.availableDepthStallDurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stall<wbr/>Durations</a> must be available,<wbr/> in
16994 addition to the other keys explicitly mentioned in the DEPTH_<wbr/>OUTPUT
16995 enum notes.<wbr/> The entry <a href="#static_android.depth.maxDepthSamples">android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples</a> must be available
16996 if the DEPTH_<wbr/>POINT_<wbr/>CLOUD format is supported (HAL pixel format BLOB,<wbr/> dataspace
16998 <p>For a camera device with LOGICAL_<wbr/>MULTI_<wbr/>CAMERA capability,<wbr/> it should operate in the
16999 same way as a physical camera device based on its hardware level and capabilities.<wbr/>
17000 It's recommended that its feature set is superset of that of individual physical cameras.<wbr/></p>
17004 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17005 <!-- end of entry -->
17008 <tr class="entry" id="static_android.request.availableRequestKeys">
17009 <td class="entry_name
17011 android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys
17013 <td class="entry_type">
17014 <span class="entry_type_name">int32</span>
17015 <span class="entry_type_container">x</span>
17017 <span class="entry_type_array">
17020 <span class="entry_type_visibility"> [ndk_public]</span>
17023 <span class="entry_type_hwlevel">[legacy] </span>
17028 </td> <!-- entry_type -->
17030 <td class="entry_description">
17031 <p>A list of all keys that the camera device has available
17032 to use with <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureRequest.html">CaptureRequest</a>.<wbr/></p>
17035 <td class="entry_units">
17038 <td class="entry_range">
17041 <td class="entry_hal_version">
17045 <td class="entry_tags">
17049 <tr class="entries_header">
17050 <th class="th_details" colspan="6">Details</th>
17052 <tr class="entry_cont">
17053 <td class="entry_details" colspan="6">
17054 <p>Attempting to set a key into a CaptureRequest that is not
17055 listed here will result in an invalid request and will be rejected
17056 by the camera device.<wbr/></p>
17057 <p>This field can be used to query the feature set of a camera device
17058 at a more granular level than capabilities.<wbr/> This is especially
17059 important for optional keys that are not listed under any capability
17060 in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
17064 <tr class="entries_header">
17065 <th class="th_details" colspan="6">HAL Implementation Details</th>
17067 <tr class="entry_cont">
17068 <td class="entry_details" colspan="6">
17069 <p>Vendor tags can be listed here.<wbr/> Vendor tag metadata should also
17070 use the extensions C api (refer to camera3.<wbr/>h for more details).<wbr/></p>
17071 <p>Setting/<wbr/>getting vendor tags will be checked against the metadata
17072 vendor extensions API and not against this field.<wbr/></p>
17073 <p>The HAL must not consume any request tags that are not listed either
17074 here or in the vendor tag list.<wbr/></p>
17075 <p>The public camera2 API will always make the vendor tags visible
17077 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a>.<wbr/></p>
17081 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17082 <!-- end of entry -->
17085 <tr class="entry" id="static_android.request.availableResultKeys">
17086 <td class="entry_name
17088 android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys
17090 <td class="entry_type">
17091 <span class="entry_type_name">int32</span>
17092 <span class="entry_type_container">x</span>
17094 <span class="entry_type_array">
17097 <span class="entry_type_visibility"> [ndk_public]</span>
17100 <span class="entry_type_hwlevel">[legacy] </span>
17105 </td> <!-- entry_type -->
17107 <td class="entry_description">
17108 <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>
17111 <td class="entry_units">
17114 <td class="entry_range">
17117 <td class="entry_hal_version">
17121 <td class="entry_tags">
17125 <tr class="entries_header">
17126 <th class="th_details" colspan="6">Details</th>
17128 <tr class="entry_cont">
17129 <td class="entry_details" colspan="6">
17130 <p>Attempting to get a key from a CaptureResult that is not
17131 listed here will always return a <code>null</code> value.<wbr/> Getting a key from
17132 a CaptureResult that is listed here will generally never return a <code>null</code>
17134 <p>The following keys may return <code>null</code> unless they are enabled:</p>
17136 <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>
17138 <p>(Those sometimes-null keys will nevertheless be listed here
17139 if they are available.<wbr/>)</p>
17140 <p>This field can be used to query the feature set of a camera device
17141 at a more granular level than capabilities.<wbr/> This is especially
17142 important for optional keys that are not listed under any capability
17143 in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
17147 <tr class="entries_header">
17148 <th class="th_details" colspan="6">HAL Implementation Details</th>
17150 <tr class="entry_cont">
17151 <td class="entry_details" colspan="6">
17152 <p>Tags listed here must always have an entry in the result metadata,<wbr/>
17153 even if that size is 0 elements.<wbr/> Only array-type tags (e.<wbr/>g.<wbr/> lists,<wbr/>
17154 matrices,<wbr/> strings) are allowed to have 0 elements.<wbr/></p>
17155 <p>Vendor tags can be listed here.<wbr/> Vendor tag metadata should also
17156 use the extensions C api (refer to camera3.<wbr/>h for more details).<wbr/></p>
17157 <p>Setting/<wbr/>getting vendor tags will be checked against the metadata
17158 vendor extensions API and not against this field.<wbr/></p>
17159 <p>The HAL must not produce any result tags that are not listed either
17160 here or in the vendor tag list.<wbr/></p>
17161 <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>
17165 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17166 <!-- end of entry -->
17169 <tr class="entry" id="static_android.request.availableCharacteristicsKeys">
17170 <td class="entry_name
17172 android.<wbr/>request.<wbr/>available<wbr/>Characteristics<wbr/>Keys
17174 <td class="entry_type">
17175 <span class="entry_type_name">int32</span>
17176 <span class="entry_type_container">x</span>
17178 <span class="entry_type_array">
17181 <span class="entry_type_visibility"> [ndk_public]</span>
17184 <span class="entry_type_hwlevel">[legacy] </span>
17189 </td> <!-- entry_type -->
17191 <td class="entry_description">
17192 <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>
17195 <td class="entry_units">
17198 <td class="entry_range">
17201 <td class="entry_hal_version">
17205 <td class="entry_tags">
17209 <tr class="entries_header">
17210 <th class="th_details" colspan="6">Details</th>
17212 <tr class="entry_cont">
17213 <td class="entry_details" colspan="6">
17214 <p>This entry follows the same rules as
17215 <a href="#static_android.request.availableResultKeys">android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys</a> (except that it applies for
17216 CameraCharacteristics instead of CaptureResult).<wbr/> See above for more
17221 <tr class="entries_header">
17222 <th class="th_details" colspan="6">HAL Implementation Details</th>
17224 <tr class="entry_cont">
17225 <td class="entry_details" colspan="6">
17226 <p>Keys listed here must always have an entry in the static info metadata,<wbr/>
17227 even if that size is 0 elements.<wbr/> Only array-type tags (e.<wbr/>g.<wbr/> lists,<wbr/>
17228 matrices,<wbr/> strings) are allowed to have 0 elements.<wbr/></p>
17229 <p>Vendor tags can listed here.<wbr/> Vendor tag metadata should also use
17230 the extensions C api (refer to camera3.<wbr/>h for more details).<wbr/></p>
17231 <p>Setting/<wbr/>getting vendor tags will be checked against the metadata
17232 vendor extensions API and not against this field.<wbr/></p>
17233 <p>The HAL must not have any tags in its static info that are not listed
17234 either here or in the vendor tag list.<wbr/></p>
17235 <p>The public camera2 API will always make the vendor tags visible
17236 via <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getKeys">CameraCharacteristics#getKeys</a>.<wbr/></p>
17240 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17241 <!-- end of entry -->
17244 <tr class="entry" id="static_android.request.availableSessionKeys">
17245 <td class="entry_name
17247 android.<wbr/>request.<wbr/>available<wbr/>Session<wbr/>Keys
17249 <td class="entry_type">
17250 <span class="entry_type_name">int32</span>
17251 <span class="entry_type_container">x</span>
17253 <span class="entry_type_array">
17256 <span class="entry_type_visibility"> [ndk_public]</span>
17259 <span class="entry_type_hwlevel">[legacy] </span>
17264 </td> <!-- entry_type -->
17266 <td class="entry_description">
17267 <p>A subset of the available request keys that the camera device
17268 can pass as part of the capture session initialization.<wbr/></p>
17271 <td class="entry_units">
17274 <td class="entry_range">
17277 <td class="entry_hal_version">
17281 <td class="entry_tags">
17285 <tr class="entries_header">
17286 <th class="th_details" colspan="6">Details</th>
17288 <tr class="entry_cont">
17289 <td class="entry_details" colspan="6">
17290 <p>This is a subset of <a href="#static_android.request.availableRequestKeys">android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys</a> which
17291 contains a list of keys that are difficult to apply per-frame and
17292 can result in unexpected delays when modified during the capture session
17293 lifetime.<wbr/> Typical examples include parameters that require a
17294 time-consuming hardware re-configuration or internal camera pipeline
17295 change.<wbr/> For performance reasons we advise clients to pass their initial
17297 <a href="https://developer.android.com/reference/SessionConfiguration.html#setSessionParameters">SessionConfiguration#setSessionParameters</a>.<wbr/>
17298 Once the camera capture session is enabled it is also recommended to avoid
17299 changing them from their initial values set in
17300 <a href="https://developer.android.com/reference/SessionConfiguration.html#setSessionParameters">SessionConfiguration#setSessionParameters</a>.<wbr/>
17301 Control over session parameters can still be exerted in capture requests
17302 but clients should be aware and expect delays during their application.<wbr/>
17303 An example usage scenario could look like this:</p>
17305 <li>The camera client starts by quering the session parameter key list via
17306 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableSessionKeys">CameraCharacteristics#getAvailableSessionKeys</a>.<wbr/></li>
17307 <li>Before triggering the capture session create sequence,<wbr/> a capture request
17309 <a href="https://developer.android.com/reference/CameraDevice.html#createCaptureRequest">CameraDevice#createCaptureRequest</a>
17310 using an appropriate template matching the particular use case.<wbr/></li>
17311 <li>The client should go over the list of session parameters and check
17312 whether some of the keys listed matches with the parameters that
17313 they intend to modify as part of the first capture request.<wbr/></li>
17314 <li>If there is no such match,<wbr/> the capture request can be passed
17316 <a href="https://developer.android.com/reference/SessionConfiguration.html#setSessionParameters">SessionConfiguration#setSessionParameters</a>.<wbr/></li>
17317 <li>If matches do exist,<wbr/> the client should update the respective values
17318 and pass the request to
17319 <a href="https://developer.android.com/reference/SessionConfiguration.html#setSessionParameters">SessionConfiguration#setSessionParameters</a>.<wbr/></li>
17320 <li>After the capture session initialization completes the session parameter
17321 key list can continue to serve as reference when posting or updating
17322 further requests.<wbr/> As mentioned above further changes to session
17323 parameters should ideally be avoided,<wbr/> if updates are necessary
17324 however clients could expect a delay/<wbr/>glitch during the
17325 parameter switch.<wbr/></li>
17330 <tr class="entries_header">
17331 <th class="th_details" colspan="6">HAL Implementation Details</th>
17333 <tr class="entry_cont">
17334 <td class="entry_details" colspan="6">
17335 <p>Vendor tags can be listed here.<wbr/> Vendor tag metadata should also
17336 use the extensions C api (refer to
17337 android.<wbr/>hardware.<wbr/>camera.<wbr/>device.<wbr/>V3_<wbr/>4.<wbr/>Stream<wbr/>Configuration.<wbr/>session<wbr/>Params for more details).<wbr/></p>
17338 <p>Setting/<wbr/>getting vendor tags will be checked against the metadata
17339 vendor extensions API and not against this field.<wbr/></p>
17340 <p>The HAL must not consume any request tags in the session parameters that
17341 are not listed either here or in the vendor tag list.<wbr/></p>
17342 <p>The public camera2 API will always make the vendor tags visible
17344 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableSessionKeys">CameraCharacteristics#getAvailableSessionKeys</a>.<wbr/></p>
17348 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17349 <!-- end of entry -->
17352 <tr class="entry" id="static_android.request.availablePhysicalCameraRequestKeys">
17353 <td class="entry_name
17355 android.<wbr/>request.<wbr/>available<wbr/>Physical<wbr/>Camera<wbr/>Request<wbr/>Keys
17357 <td class="entry_type">
17358 <span class="entry_type_name">int32</span>
17359 <span class="entry_type_container">x</span>
17361 <span class="entry_type_array">
17364 <span class="entry_type_visibility"> [hidden]</span>
17367 <span class="entry_type_hwlevel">[limited] </span>
17372 </td> <!-- entry_type -->
17374 <td class="entry_description">
17375 <p>A subset of the available request keys that can be overriden for
17376 physical devices backing a logical multi-camera.<wbr/></p>
17379 <td class="entry_units">
17382 <td class="entry_range">
17385 <td class="entry_hal_version">
17389 <td class="entry_tags">
17393 <tr class="entries_header">
17394 <th class="th_details" colspan="6">Details</th>
17396 <tr class="entry_cont">
17397 <td class="entry_details" colspan="6">
17398 <p>This is a subset of <a href="#static_android.request.availableRequestKeys">android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys</a> which contains a list
17399 of keys that can be overriden using <a href="https://developer.android.com/reference/CaptureRequest/Builder.html#setPhysicalCameraKey">Builder#setPhysicalCameraKey</a>.<wbr/>
17400 The respective value of such request key can be obtained by calling
17401 <a href="https://developer.android.com/reference/CaptureRequest/Builder.html#getPhysicalCameraKey">Builder#getPhysicalCameraKey</a>.<wbr/> Capture requests that contain
17402 individual physical device requests must be built via
17403 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureRequest(int,">Set)</a>.<wbr/>
17404 Such extended capture requests can be passed only to
17405 <a href="https://developer.android.com/reference/CameraCaptureSession.html#capture">CameraCaptureSession#capture</a> or <a href="https://developer.android.com/reference/CameraCaptureSession.html#captureBurst">CameraCaptureSession#captureBurst</a> and
17406 not to <a href="https://developer.android.com/reference/CameraCaptureSession.html#setRepeatingRequest">CameraCaptureSession#setRepeatingRequest</a> or
17407 <a href="https://developer.android.com/reference/CameraCaptureSession.html#setRepeatingBurst">CameraCaptureSession#setRepeatingBurst</a>.<wbr/></p>
17411 <tr class="entries_header">
17412 <th class="th_details" colspan="6">HAL Implementation Details</th>
17414 <tr class="entry_cont">
17415 <td class="entry_details" colspan="6">
17416 <p>Vendor tags can be listed here.<wbr/> Vendor tag metadata should also
17417 use the extensions C api (refer to
17418 android.<wbr/>hardware.<wbr/>camera.<wbr/>device.<wbr/>V3_<wbr/>4.<wbr/>Capture<wbr/>Request.<wbr/>physical<wbr/>Camera<wbr/>Settings for more
17419 details).<wbr/></p>
17420 <p>Setting/<wbr/>getting vendor tags will be checked against the metadata
17421 vendor extensions API and not against this field.<wbr/></p>
17422 <p>The HAL must not consume any request tags in the session parameters that
17423 are not listed either here or in the vendor tag list.<wbr/></p>
17424 <p>The public camera2 API will always make the vendor tags visible
17426 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailablePhysicalCameraRequestKeys">CameraCharacteristics#getAvailablePhysicalCameraRequestKeys</a>.<wbr/></p>
17430 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17431 <!-- end of entry -->
17435 <!-- end of kind -->
17437 <tr><td colspan="7" class="kind">dynamic</td></tr>
17439 <thead class="entries_header">
17441 <th class="th_name">Property Name</th>
17442 <th class="th_type">Type</th>
17443 <th class="th_description">Description</th>
17444 <th class="th_units">Units</th>
17445 <th class="th_range">Range</th>
17446 <th class="th_hal_version">Initial HIDL HAL version</th>
17447 <th class="th_tags">Tags</th>
17462 <tr class="entry" id="dynamic_android.request.frameCount">
17463 <td class="entry_name
17464 entry_name_deprecated
17466 android.<wbr/>request.<wbr/>frame<wbr/>Count
17468 <td class="entry_type">
17469 <span class="entry_type_name">int32</span>
17471 <span class="entry_type_visibility"> [hidden]</span>
17475 <span class="entry_type_deprecated">[deprecated] </span>
17479 </td> <!-- entry_type -->
17481 <td class="entry_description">
17482 <p>A frame counter set by the framework.<wbr/> This value monotonically
17483 increases with every new result (that is,<wbr/> each new result has a unique
17484 frameCount value).<wbr/></p>
17487 <td class="entry_units">
17491 <td class="entry_range">
17492 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
17496 <td class="entry_hal_version">
17500 <td class="entry_tags">
17504 <tr class="entries_header">
17505 <th class="th_details" colspan="6">Details</th>
17507 <tr class="entry_cont">
17508 <td class="entry_details" colspan="6">
17509 <p>Reset on release()</p>
17514 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17515 <!-- end of entry -->
17518 <tr class="entry" id="dynamic_android.request.id">
17519 <td class="entry_name
17521 android.<wbr/>request.<wbr/>id
17523 <td class="entry_type">
17524 <span class="entry_type_name">int32</span>
17526 <span class="entry_type_visibility"> [hidden]</span>
17533 </td> <!-- entry_type -->
17535 <td class="entry_description">
17536 <p>An application-specified ID for the current
17537 request.<wbr/> Must be maintained unchanged in output
17541 <td class="entry_units">
17542 arbitrary integer assigned by application
17545 <td class="entry_range">
17549 <td class="entry_hal_version">
17553 <td class="entry_tags">
17554 <ul class="entry_tags">
17555 <li><a href="#tag_V1">V1</a></li>
17562 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17563 <!-- end of entry -->
17566 <tr class="entry" id="dynamic_android.request.metadataMode">
17567 <td class="entry_name
17569 android.<wbr/>request.<wbr/>metadata<wbr/>Mode
17571 <td class="entry_type">
17572 <span class="entry_type_name entry_type_name_enum">byte</span>
17574 <span class="entry_type_visibility"> [system]</span>
17580 <ul class="entry_type_enum">
17582 <span class="entry_type_enum_name">NONE (v3.2)</span>
17583 <span class="entry_type_enum_notes"><p>No metadata should be produced on output,<wbr/> except
17584 for application-bound buffer data.<wbr/> If no
17585 application-bound streams exist,<wbr/> no frame should be
17586 placed in the output frame queue.<wbr/> If such streams
17587 exist,<wbr/> a frame should be placed on the output queue
17588 with null metadata but with the necessary output buffer
17589 information.<wbr/> Timestamp information should still be
17590 included with any output stream buffers</p></span>
17593 <span class="entry_type_enum_name">FULL (v3.2)</span>
17594 <span class="entry_type_enum_notes"><p>All metadata should be produced.<wbr/> Statistics will
17595 only be produced if they are separately
17600 </td> <!-- entry_type -->
17602 <td class="entry_description">
17603 <p>How much metadata to produce on
17607 <td class="entry_units">
17610 <td class="entry_range">
17613 <td class="entry_hal_version">
17617 <td class="entry_tags">
17618 <ul class="entry_tags">
17619 <li><a href="#tag_FUTURE">FUTURE</a></li>
17626 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17627 <!-- end of entry -->
17630 <tr class="entry" id="dynamic_android.request.outputStreams">
17631 <td class="entry_name
17632 entry_name_deprecated
17634 android.<wbr/>request.<wbr/>output<wbr/>Streams
17636 <td class="entry_type">
17637 <span class="entry_type_name">int32</span>
17638 <span class="entry_type_container">x</span>
17640 <span class="entry_type_array">
17643 <span class="entry_type_visibility"> [system]</span>
17647 <span class="entry_type_deprecated">[deprecated] </span>
17651 </td> <!-- entry_type -->
17653 <td class="entry_description">
17654 <p>Lists which camera output streams image data
17655 from this capture must be sent to</p>
17658 <td class="entry_units">
17659 List of camera stream IDs
17662 <td class="entry_range">
17663 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
17664 <p>List must only include streams that have been
17668 <td class="entry_hal_version">
17672 <td class="entry_tags">
17673 <ul class="entry_tags">
17674 <li><a href="#tag_HAL2">HAL2</a></li>
17679 <tr class="entries_header">
17680 <th class="th_details" colspan="6">Details</th>
17682 <tr class="entry_cont">
17683 <td class="entry_details" colspan="6">
17684 <p>If no output streams are listed,<wbr/> then the image
17685 data should simply be discarded.<wbr/> The image data must
17686 still be captured for metadata and statistics production,<wbr/>
17687 and the lens and flash must operate as requested.<wbr/></p>
17692 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17693 <!-- end of entry -->
17696 <tr class="entry" id="dynamic_android.request.pipelineDepth">
17697 <td class="entry_name
17699 android.<wbr/>request.<wbr/>pipeline<wbr/>Depth
17701 <td class="entry_type">
17702 <span class="entry_type_name">byte</span>
17704 <span class="entry_type_visibility"> [public]</span>
17707 <span class="entry_type_hwlevel">[legacy] </span>
17712 </td> <!-- entry_type -->
17714 <td class="entry_description">
17715 <p>Specifies the number of pipeline stages the frame went
17716 through from when it was exposed to when the final completed result
17717 was available to the framework.<wbr/></p>
17720 <td class="entry_units">
17723 <td class="entry_range">
17724 <p><= <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a></p>
17727 <td class="entry_hal_version">
17731 <td class="entry_tags">
17735 <tr class="entries_header">
17736 <th class="th_details" colspan="6">Details</th>
17738 <tr class="entry_cont">
17739 <td class="entry_details" colspan="6">
17740 <p>Depending on what settings are used in the request,<wbr/> and
17741 what streams are configured,<wbr/> the data may undergo less processing,<wbr/>
17742 and some pipeline stages skipped.<wbr/></p>
17743 <p>See <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a> for more details.<wbr/></p>
17747 <tr class="entries_header">
17748 <th class="th_details" colspan="6">HAL Implementation Details</th>
17750 <tr class="entry_cont">
17751 <td class="entry_details" colspan="6">
17752 <p>This value must always represent the accurate count of how many
17753 pipeline stages were actually used.<wbr/></p>
17757 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17758 <!-- end of entry -->
17762 <!-- end of kind -->
17765 <!-- end of section -->
17766 <tr><td colspan="7" id="section_scaler" class="section">scaler</td></tr>
17769 <tr><td colspan="7" class="kind">controls</td></tr>
17771 <thead class="entries_header">
17773 <th class="th_name">Property Name</th>
17774 <th class="th_type">Type</th>
17775 <th class="th_description">Description</th>
17776 <th class="th_units">Units</th>
17777 <th class="th_range">Range</th>
17778 <th class="th_hal_version">Initial HIDL HAL version</th>
17779 <th class="th_tags">Tags</th>
17794 <tr class="entry" id="controls_android.scaler.cropRegion">
17795 <td class="entry_name
17797 android.<wbr/>scaler.<wbr/>crop<wbr/>Region
17799 <td class="entry_type">
17800 <span class="entry_type_name">int32</span>
17801 <span class="entry_type_container">x</span>
17803 <span class="entry_type_array">
17806 <span class="entry_type_visibility"> [public as rectangle]</span>
17809 <span class="entry_type_hwlevel">[legacy] </span>
17814 </td> <!-- entry_type -->
17816 <td class="entry_description">
17817 <p>The desired region of the sensor to read out for this capture.<wbr/></p>
17820 <td class="entry_units">
17821 Pixel coordinates relative to
17822 android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
17825 <td class="entry_range">
17828 <td class="entry_hal_version">
17832 <td class="entry_tags">
17833 <ul class="entry_tags">
17834 <li><a href="#tag_BC">BC</a></li>
17839 <tr class="entries_header">
17840 <th class="th_details" colspan="6">Details</th>
17842 <tr class="entry_cont">
17843 <td class="entry_details" colspan="6">
17844 <p>This control can be used to implement digital zoom.<wbr/></p>
17845 <p>The crop region coordinate system is based off
17846 <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
17847 top-left corner of the sensor active array.<wbr/></p>
17848 <p>Output streams use this rectangle to produce their output,<wbr/>
17849 cropping to a smaller region if necessary to maintain the
17850 stream's aspect ratio,<wbr/> then scaling the sensor input to
17851 match the output's configured resolution.<wbr/></p>
17852 <p>The crop region is applied after the RAW to other color
17853 space (e.<wbr/>g.<wbr/> YUV) conversion.<wbr/> Since raw streams
17854 (e.<wbr/>g.<wbr/> RAW16) don't have the conversion stage,<wbr/> they are not
17855 croppable.<wbr/> The crop region will be ignored by raw streams.<wbr/></p>
17856 <p>For non-raw streams,<wbr/> any additional per-stream cropping will
17857 be done to maximize the final pixel area of the stream.<wbr/></p>
17858 <p>For example,<wbr/> if the crop region is set to a 4:3 aspect
17859 ratio,<wbr/> then 4:3 streams will use the exact crop
17860 region.<wbr/> 16:9 streams will further crop vertically
17861 (letterbox).<wbr/></p>
17862 <p>Conversely,<wbr/> if the crop region is set to a 16:9,<wbr/> then 4:3
17863 outputs will crop horizontally (pillarbox),<wbr/> and 16:9
17864 streams will match exactly.<wbr/> These additional crops will
17865 be centered within the crop region.<wbr/></p>
17866 <p>The width and height of the crop region cannot
17867 be set to be smaller than
17868 <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
17869 <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>
17870 <p>The camera device may adjust the crop region to account
17871 for rounding and other hardware requirements; the final
17872 crop region used will be included in the output capture
17877 <tr class="entries_header">
17878 <th class="th_details" colspan="6">HAL Implementation Details</th>
17880 <tr class="entry_cont">
17881 <td class="entry_details" colspan="6">
17882 <p>The output streams must maintain square pixels at all
17883 times,<wbr/> no matter what the relative aspect ratios of the
17884 crop region and the stream are.<wbr/> Negative values for
17885 corner are allowed for raw output if full pixel array is
17886 larger than active pixel array.<wbr/> Width and height may be
17887 rounded to nearest larger supportable width,<wbr/> especially
17888 for raw output,<wbr/> where only a few fixed scales may be
17889 possible.<wbr/></p>
17890 <p>For a set of output streams configured,<wbr/> if the sensor output is cropped to a smaller
17891 size than active array size,<wbr/> the HAL need follow below cropping rules:</p>
17894 <p>The HAL need handle the cropRegion as if the sensor crop size is the effective active
17895 array size.<wbr/>More specifically,<wbr/> the HAL must transform the request cropRegion from
17896 <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>
17898 <li>Translate the requested cropRegion w.<wbr/>r.<wbr/>t.,<wbr/> the left top corner of the sensor
17899 cropped pixel area by (tx,<wbr/> ty),<wbr/>
17900 where <code>tx = sensorCrop.<wbr/>top * (sensorCrop.<wbr/>height /<wbr/> activeArraySize.<wbr/>height)</code>
17901 and <code>tx = sensorCrop.<wbr/>left * (sensorCrop.<wbr/>width /<wbr/> activeArraySize.<wbr/>width)</code>.<wbr/> The
17902 (sensorCrop.<wbr/>top,<wbr/> sensorCrop.<wbr/>left) is the coordinate based off the
17903 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></li>
17904 <li>Scale the width and height of requested cropRegion with scaling factor of
17905 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
17906 respectively.<wbr/>
17907 Once this new cropRegion is calculated,<wbr/> the HAL must use this region to crop the image
17908 with regard to the sensor crop size (effective active array size).<wbr/> The HAL still need
17909 follow the general cropping rule for this new cropRegion and effective active
17910 array size.<wbr/></li>
17914 <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/>
17915 The HAL need convert the new cropRegion generated above w.<wbr/>r.<wbr/>t.,<wbr/> full active array size.<wbr/>
17916 The reported cropRegion may be slightly different with the requested cropRegion since
17917 the HAL may adjust the crop region to account for rounding,<wbr/> conversion error,<wbr/> or other
17918 hardware limitations.<wbr/></p>
17921 <p>HAL2.<wbr/>x uses only (x,<wbr/> y,<wbr/> width)</p>
17925 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17926 <!-- end of entry -->
17930 <!-- end of kind -->
17932 <tr><td colspan="7" class="kind">static</td></tr>
17934 <thead class="entries_header">
17936 <th class="th_name">Property Name</th>
17937 <th class="th_type">Type</th>
17938 <th class="th_description">Description</th>
17939 <th class="th_units">Units</th>
17940 <th class="th_range">Range</th>
17941 <th class="th_hal_version">Initial HIDL HAL version</th>
17942 <th class="th_tags">Tags</th>
17957 <tr class="entry" id="static_android.scaler.availableFormats">
17958 <td class="entry_name
17959 entry_name_deprecated
17961 android.<wbr/>scaler.<wbr/>available<wbr/>Formats
17963 <td class="entry_type">
17964 <span class="entry_type_name entry_type_name_enum">int32</span>
17965 <span class="entry_type_container">x</span>
17967 <span class="entry_type_array">
17970 <span class="entry_type_visibility"> [hidden as imageFormat]</span>
17974 <span class="entry_type_deprecated">[deprecated] </span>
17977 <ul class="entry_type_enum">
17979 <span class="entry_type_enum_name">RAW16 (v3.2)</span>
17980 <span class="entry_type_enum_optional">[optional]</span>
17981 <span class="entry_type_enum_value">0x20</span>
17982 <span class="entry_type_enum_notes"><p>RAW16 is a standard,<wbr/> cross-platform format for raw image
17983 buffers with 16-bit pixels.<wbr/></p>
17984 <p>Buffers of this format are typically expected to have a
17985 Bayer Color Filter Array (CFA) layout,<wbr/> which is given in
17986 <a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a>.<wbr/> Sensors with
17987 CFAs that are not representable by a format in
17988 <a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a> should not
17989 use this format.<wbr/></p>
17990 <p>Buffers of this format will also follow the constraints given for
17991 RAW_<wbr/>OPAQUE buffers,<wbr/> but with relaxed performance constraints.<wbr/></p>
17992 <p>This format is intended to give users access to the full contents
17993 of the buffers coming directly from the image sensor prior to any
17994 cropping or scaling operations,<wbr/> and all coordinate systems for
17995 metadata used for this format are relative to the size of the
17996 active region of the image sensor before any geometric distortion
17997 correction has been applied (i.<wbr/>e.<wbr/>
17998 <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
17999 dimensions for this format are limited to the full dimensions of
18000 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
18001 <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
18002 only supported output size).<wbr/></p>
18003 <p>See <a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a> for
18004 the full set of performance guarantees.<wbr/></p></span>
18007 <span class="entry_type_enum_name">RAW_OPAQUE (v3.2)</span>
18008 <span class="entry_type_enum_optional">[optional]</span>
18009 <span class="entry_type_enum_value">0x24</span>
18010 <span class="entry_type_enum_notes"><p>RAW_<wbr/>OPAQUE (or
18011 <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_PRIVATE">RAW_<wbr/>PRIVATE</a>
18012 as referred in public API) is a format for raw image buffers
18013 coming from an image sensor.<wbr/></p>
18014 <p>The actual structure of buffers of this format is
18015 platform-specific,<wbr/> but must follow several constraints:</p>
18017 <li>No image post-processing operations may have been applied to
18018 buffers of this type.<wbr/> These buffers contain raw image data coming
18019 directly from the image sensor.<wbr/></li>
18020 <li>If a buffer of this format is passed to the camera device for
18021 reprocessing,<wbr/> the resulting images will be identical to the images
18022 produced if the buffer had come directly from the sensor and was
18023 processed with the same settings.<wbr/></li>
18025 <p>The intended use for this format is to allow access to the native
18026 raw format buffers coming directly from the camera sensor without
18027 any additional conversions or decrease in framerate.<wbr/></p>
18028 <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
18029 performance guarantees.<wbr/></p></span>
18032 <span class="entry_type_enum_name">YV12 (v3.2)</span>
18033 <span class="entry_type_enum_optional">[optional]</span>
18034 <span class="entry_type_enum_value">0x32315659</span>
18035 <span class="entry_type_enum_notes"><p>YCrCb 4:2:0 Planar</p></span>
18038 <span class="entry_type_enum_name">YCrCb_420_SP (v3.2)</span>
18039 <span class="entry_type_enum_optional">[optional]</span>
18040 <span class="entry_type_enum_value">0x11</span>
18041 <span class="entry_type_enum_notes"><p>NV21</p></span>
18044 <span class="entry_type_enum_name">IMPLEMENTATION_DEFINED (v3.2)</span>
18045 <span class="entry_type_enum_value">0x22</span>
18046 <span class="entry_type_enum_notes"><p>System internal format,<wbr/> not application-accessible</p></span>
18049 <span class="entry_type_enum_name">YCbCr_420_888 (v3.2)</span>
18050 <span class="entry_type_enum_value">0x23</span>
18051 <span class="entry_type_enum_notes"><p>Flexible YUV420 Format</p></span>
18054 <span class="entry_type_enum_name">BLOB (v3.2)</span>
18055 <span class="entry_type_enum_value">0x21</span>
18056 <span class="entry_type_enum_notes"><p>JPEG format</p></span>
18060 </td> <!-- entry_type -->
18062 <td class="entry_description">
18063 <p>The list of image formats that are supported by this
18064 camera device for output streams.<wbr/></p>
18067 <td class="entry_units">
18070 <td class="entry_range">
18071 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
18074 <td class="entry_hal_version">
18078 <td class="entry_tags">
18079 <ul class="entry_tags">
18080 <li><a href="#tag_BC">BC</a></li>
18085 <tr class="entries_header">
18086 <th class="th_details" colspan="6">Details</th>
18088 <tr class="entry_cont">
18089 <td class="entry_details" colspan="6">
18090 <p>All camera devices will support JPEG and YUV_<wbr/>420_<wbr/>888 formats.<wbr/></p>
18091 <p>When set to YUV_<wbr/>420_<wbr/>888,<wbr/> application can access the YUV420 data directly.<wbr/></p>
18095 <tr class="entries_header">
18096 <th class="th_details" colspan="6">HAL Implementation Details</th>
18098 <tr class="entry_cont">
18099 <td class="entry_details" colspan="6">
18100 <p>These format values are from HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>* in
18101 system/<wbr/>core/<wbr/>include/<wbr/>system/<wbr/>graphics.<wbr/>h.<wbr/></p>
18102 <p>When IMPLEMENTATION_<wbr/>DEFINED is used,<wbr/> the platform
18103 gralloc module will select a format based on the usage flags provided
18104 by the camera HAL device and the other endpoint of the stream.<wbr/> It is
18105 usually used by preview and recording streams,<wbr/> where the application doesn't
18106 need access the image data.<wbr/></p>
18107 <p>YCb<wbr/>Cr_<wbr/>420_<wbr/>888 format must be supported by the HAL.<wbr/> When an image stream
18108 needs CPU/<wbr/>application direct access,<wbr/> this format will be used.<wbr/></p>
18109 <p>The BLOB format must be supported by the HAL.<wbr/> This is used for the JPEG stream.<wbr/></p>
18110 <p>A RAW_<wbr/>OPAQUE buffer should contain only pixel data.<wbr/> It is strongly
18111 recommended that any information used by the camera device when
18112 processing images is fully expressed by the result metadata
18113 for that image buffer.<wbr/></p>
18117 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18118 <!-- end of entry -->
18121 <tr class="entry" id="static_android.scaler.availableJpegMinDurations">
18122 <td class="entry_name
18123 entry_name_deprecated
18125 android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Min<wbr/>Durations
18127 <td class="entry_type">
18128 <span class="entry_type_name">int64</span>
18129 <span class="entry_type_container">x</span>
18131 <span class="entry_type_array">
18134 <span class="entry_type_visibility"> [hidden]</span>
18138 <span class="entry_type_deprecated">[deprecated] </span>
18142 </td> <!-- entry_type -->
18144 <td class="entry_description">
18145 <p>The minimum frame duration that is supported
18146 for each resolution in <a href="#static_android.scaler.availableJpegSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes</a>.<wbr/></p>
18149 <td class="entry_units">
18153 <td class="entry_range">
18154 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
18155 <p>TODO: Remove property.<wbr/></p>
18158 <td class="entry_hal_version">
18162 <td class="entry_tags">
18163 <ul class="entry_tags">
18164 <li><a href="#tag_BC">BC</a></li>
18169 <tr class="entries_header">
18170 <th class="th_details" colspan="6">Details</th>
18172 <tr class="entry_cont">
18173 <td class="entry_details" colspan="6">
18174 <p>This corresponds to the minimum steady-state frame duration when only
18175 that JPEG stream is active and captured in a burst,<wbr/> with all
18176 processing (typically in android.<wbr/>*.<wbr/>mode) set to FAST.<wbr/></p>
18177 <p>When multiple streams are configured,<wbr/> the minimum
18178 frame duration will be >= max(individual stream min
18184 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18185 <!-- end of entry -->
18188 <tr class="entry" id="static_android.scaler.availableJpegSizes">
18189 <td class="entry_name
18190 entry_name_deprecated
18192 android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes
18194 <td class="entry_type">
18195 <span class="entry_type_name">int32</span>
18196 <span class="entry_type_container">x</span>
18198 <span class="entry_type_array">
18201 <span class="entry_type_visibility"> [hidden as size]</span>
18205 <span class="entry_type_deprecated">[deprecated] </span>
18209 </td> <!-- entry_type -->
18211 <td class="entry_description">
18212 <p>The JPEG resolutions that are supported by this camera device.<wbr/></p>
18215 <td class="entry_units">
18218 <td class="entry_range">
18219 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
18220 <p>TODO: Remove property.<wbr/></p>
18223 <td class="entry_hal_version">
18227 <td class="entry_tags">
18228 <ul class="entry_tags">
18229 <li><a href="#tag_BC">BC</a></li>
18234 <tr class="entries_header">
18235 <th class="th_details" colspan="6">Details</th>
18237 <tr class="entry_cont">
18238 <td class="entry_details" colspan="6">
18239 <p>The resolutions are listed as <code>(width,<wbr/> height)</code> pairs.<wbr/> All camera devices will support
18240 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>
18244 <tr class="entries_header">
18245 <th class="th_details" colspan="6">HAL Implementation Details</th>
18247 <tr class="entry_cont">
18248 <td class="entry_details" colspan="6">
18249 <p>The HAL must include sensor maximum resolution
18250 (defined by <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>),<wbr/>
18251 and should include half/<wbr/>quarter of sensor maximum resolution.<wbr/></p>
18255 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18256 <!-- end of entry -->
18259 <tr class="entry" id="static_android.scaler.availableMaxDigitalZoom">
18260 <td class="entry_name
18262 android.<wbr/>scaler.<wbr/>available<wbr/>Max<wbr/>Digital<wbr/>Zoom
18264 <td class="entry_type">
18265 <span class="entry_type_name">float</span>
18267 <span class="entry_type_visibility"> [public]</span>
18270 <span class="entry_type_hwlevel">[legacy] </span>
18275 </td> <!-- entry_type -->
18277 <td class="entry_description">
18278 <p>The maximum ratio between both active area width
18279 and crop region width,<wbr/> and active area height and
18280 crop region height,<wbr/> for <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></p>
18283 <td class="entry_units">
18287 <td class="entry_range">
18291 <td class="entry_hal_version">
18295 <td class="entry_tags">
18296 <ul class="entry_tags">
18297 <li><a href="#tag_BC">BC</a></li>
18302 <tr class="entries_header">
18303 <th class="th_details" colspan="6">Details</th>
18305 <tr class="entry_cont">
18306 <td class="entry_details" colspan="6">
18307 <p>This represents the maximum amount of zooming possible by
18308 the camera device,<wbr/> or equivalently,<wbr/> the minimum cropping
18309 window size.<wbr/></p>
18310 <p>Crop regions that have a width or height that is smaller
18311 than this ratio allows will be rounded up to the minimum
18312 allowed size by the camera device.<wbr/></p>
18317 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18318 <!-- end of entry -->
18321 <tr class="entry" id="static_android.scaler.availableProcessedMinDurations">
18322 <td class="entry_name
18323 entry_name_deprecated
18325 android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Min<wbr/>Durations
18327 <td class="entry_type">
18328 <span class="entry_type_name">int64</span>
18329 <span class="entry_type_container">x</span>
18331 <span class="entry_type_array">
18334 <span class="entry_type_visibility"> [hidden]</span>
18338 <span class="entry_type_deprecated">[deprecated] </span>
18342 </td> <!-- entry_type -->
18344 <td class="entry_description">
18345 <p>For each available processed output size (defined in
18346 <a href="#static_android.scaler.availableProcessedSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Sizes</a>),<wbr/> this property lists the
18347 minimum supportable frame duration for that size.<wbr/></p>
18350 <td class="entry_units">
18354 <td class="entry_range">
18355 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
18358 <td class="entry_hal_version">
18362 <td class="entry_tags">
18363 <ul class="entry_tags">
18364 <li><a href="#tag_BC">BC</a></li>
18369 <tr class="entries_header">
18370 <th class="th_details" colspan="6">Details</th>
18372 <tr class="entry_cont">
18373 <td class="entry_details" colspan="6">
18374 <p>This should correspond to the frame duration when only that processed
18375 stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode)
18376 set to FAST.<wbr/></p>
18377 <p>When multiple streams are configured,<wbr/> the minimum frame duration will
18378 be >= max(individual stream min durations).<wbr/></p>
18383 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18384 <!-- end of entry -->
18387 <tr class="entry" id="static_android.scaler.availableProcessedSizes">
18388 <td class="entry_name
18389 entry_name_deprecated
18391 android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Sizes
18393 <td class="entry_type">
18394 <span class="entry_type_name">int32</span>
18395 <span class="entry_type_container">x</span>
18397 <span class="entry_type_array">
18400 <span class="entry_type_visibility"> [hidden as size]</span>
18404 <span class="entry_type_deprecated">[deprecated] </span>
18408 </td> <!-- entry_type -->
18410 <td class="entry_description">
18411 <p>The resolutions available for use with
18412 processed output streams,<wbr/> such as YV12,<wbr/> NV12,<wbr/> and
18413 platform opaque YUV/<wbr/>RGB streams to the GPU or video
18414 encoders.<wbr/></p>
18417 <td class="entry_units">
18420 <td class="entry_range">
18421 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
18424 <td class="entry_hal_version">
18428 <td class="entry_tags">
18429 <ul class="entry_tags">
18430 <li><a href="#tag_BC">BC</a></li>
18435 <tr class="entries_header">
18436 <th class="th_details" colspan="6">Details</th>
18438 <tr class="entry_cont">
18439 <td class="entry_details" colspan="6">
18440 <p>The resolutions are listed as <code>(width,<wbr/> height)</code> pairs.<wbr/></p>
18441 <p>For a given use case,<wbr/> the actual maximum supported resolution
18442 may be lower than what is listed here,<wbr/> depending on the destination
18443 Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/>
18444 the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p)
18445 smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448)
18446 can provide.<wbr/></p>
18447 <p>Please reference the documentation for the image data destination to
18448 check if it limits the maximum size for image data.<wbr/></p>
18452 <tr class="entries_header">
18453 <th class="th_details" colspan="6">HAL Implementation Details</th>
18455 <tr class="entry_cont">
18456 <td class="entry_details" colspan="6">
18457 <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/>
18458 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>
18459 and each below resolution if it is smaller than or equal to the sensor
18460 maximum resolution (if they are not listed in JPEG sizes already):</p>
18462 <li>240p (320 x 240)</li>
18463 <li>480p (640 x 480)</li>
18464 <li>720p (1280 x 720)</li>
18465 <li>1080p (1920 x 1080)</li>
18467 <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/>
18468 the HAL only has to list up to the maximum video size supported by the devices.<wbr/></p>
18472 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18473 <!-- end of entry -->
18476 <tr class="entry" id="static_android.scaler.availableRawMinDurations">
18477 <td class="entry_name
18478 entry_name_deprecated
18480 android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Min<wbr/>Durations
18482 <td class="entry_type">
18483 <span class="entry_type_name">int64</span>
18484 <span class="entry_type_container">x</span>
18486 <span class="entry_type_array">
18489 <span class="entry_type_visibility"> [system]</span>
18493 <span class="entry_type_deprecated">[deprecated] </span>
18497 </td> <!-- entry_type -->
18499 <td class="entry_description">
18500 <p>For each available raw output size (defined in
18501 <a href="#static_android.scaler.availableRawSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Sizes</a>),<wbr/> this property lists the minimum
18502 supportable frame duration for that size.<wbr/></p>
18505 <td class="entry_units">
18509 <td class="entry_range">
18510 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
18513 <td class="entry_hal_version">
18517 <td class="entry_tags">
18518 <ul class="entry_tags">
18519 <li><a href="#tag_BC">BC</a></li>
18524 <tr class="entries_header">
18525 <th class="th_details" colspan="6">Details</th>
18527 <tr class="entry_cont">
18528 <td class="entry_details" colspan="6">
18529 <p>Should correspond to the frame duration when only the raw stream is
18531 <p>When multiple streams are configured,<wbr/> the minimum
18532 frame duration will be >= max(individual stream min
18538 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18539 <!-- end of entry -->
18542 <tr class="entry" id="static_android.scaler.availableRawSizes">
18543 <td class="entry_name
18544 entry_name_deprecated
18546 android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Sizes
18548 <td class="entry_type">
18549 <span class="entry_type_name">int32</span>
18550 <span class="entry_type_container">x</span>
18552 <span class="entry_type_array">
18555 <span class="entry_type_visibility"> [system as size]</span>
18559 <span class="entry_type_deprecated">[deprecated] </span>
18563 </td> <!-- entry_type -->
18565 <td class="entry_description">
18566 <p>The resolutions available for use with raw
18567 sensor output streams,<wbr/> listed as width,<wbr/>
18571 <td class="entry_units">
18574 <td class="entry_range">
18575 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
18578 <td class="entry_hal_version">
18582 <td class="entry_tags">
18588 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18589 <!-- end of entry -->
18592 <tr class="entry" id="static_android.scaler.availableInputOutputFormatsMap">
18593 <td class="entry_name
18595 android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map
18597 <td class="entry_type">
18598 <span class="entry_type_name">int32</span>
18600 <span class="entry_type_visibility"> [hidden as reprocessFormatsMap]</span>
18607 </td> <!-- entry_type -->
18609 <td class="entry_description">
18610 <p>The mapping of image formats that are supported by this
18611 camera device for input streams,<wbr/> to their corresponding output formats.<wbr/></p>
18614 <td class="entry_units">
18617 <td class="entry_range">
18620 <td class="entry_hal_version">
18624 <td class="entry_tags">
18625 <ul class="entry_tags">
18626 <li><a href="#tag_REPROC">REPROC</a></li>
18631 <tr class="entries_header">
18632 <th class="th_details" colspan="6">Details</th>
18634 <tr class="entry_cont">
18635 <td class="entry_details" colspan="6">
18636 <p>All camera devices with at least 1
18637 <a href="#static_android.request.maxNumInputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Input<wbr/>Streams</a> will have at least one
18638 available input format.<wbr/></p>
18639 <p>The camera device will support the following map of formats,<wbr/>
18640 if its dependent capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>) is supported:</p>
18644 <th align="left">Input Format</th>
18645 <th align="left">Output Format</th>
18646 <th align="left">Capability</th>
18651 <td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td>
18652 <td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
18653 <td align="left">PRIVATE_<wbr/>REPROCESSING</td>
18656 <td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td>
18657 <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>
18658 <td align="left">PRIVATE_<wbr/>REPROCESSING</td>
18661 <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>
18662 <td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
18663 <td align="left">YUV_<wbr/>REPROCESSING</td>
18666 <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>
18667 <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>
18668 <td align="left">YUV_<wbr/>REPROCESSING</td>
18672 <p>PRIVATE refers to a device-internal format that is not directly application-visible.<wbr/> A
18673 PRIVATE input surface can be acquired by <a href="https://developer.android.com/reference/android/media/ImageReader.html#newInstance">ImageReader#newInstance</a>
18674 with <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> as the format.<wbr/></p>
18675 <p>For a PRIVATE_<wbr/>REPROCESSING-capable camera device,<wbr/> using the PRIVATE format as either input
18676 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>
18677 <p>Attempting to configure an input stream with output streams not
18678 listed as available in this map is not valid.<wbr/></p>
18682 <tr class="entries_header">
18683 <th class="th_details" colspan="6">HAL Implementation Details</th>
18685 <tr class="entry_cont">
18686 <td class="entry_details" colspan="6">
18687 <p>For the formats,<wbr/> see <code>system/<wbr/>core/<wbr/>include/<wbr/>system/<wbr/>graphics.<wbr/>h</code> for a definition
18688 of the image format enumerations.<wbr/> The PRIVATE format refers to the
18689 HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>IMPLEMENTATION_<wbr/>DEFINED format.<wbr/> The HAL could determine
18690 the actual format by using the gralloc usage flags.<wbr/>
18691 For ZSL use case in particular,<wbr/> the HAL could choose appropriate format (partially
18692 processed YUV or RAW based format) by checking the format and GRALLOC_<wbr/>USAGE_<wbr/>HW_<wbr/>CAMERA_<wbr/>ZSL.<wbr/>
18693 See camera3.<wbr/>h for more details.<wbr/></p>
18694 <p>This value is encoded as a variable-size array-of-arrays.<wbr/>
18695 The inner array always contains <code>[format,<wbr/> length,<wbr/> ...<wbr/>]</code> where
18696 <code>...<wbr/></code> has <code>length</code> elements.<wbr/> An inner array is followed by another
18697 inner array if the total metadata entry size hasn't yet been exceeded.<wbr/></p>
18698 <p>A code sample to read/<wbr/>write this encoding (with a device that
18699 supports reprocessing IMPLEMENTATION_<wbr/>DEFINED to YUV_<wbr/>420_<wbr/>888,<wbr/> and JPEG,<wbr/>
18700 and reprocessing YUV_<wbr/>420_<wbr/>888 to YUV_<wbr/>420_<wbr/>888 and JPEG):</p>
18701 <pre><code>//<wbr/> reading
18702 int32_<wbr/>t* contents = &entry.<wbr/>i32[0];
18703 for (size_<wbr/>t i = 0; i < entry.<wbr/>count; ) {
18704 int32_<wbr/>t format = contents[i++];
18705 int32_<wbr/>t length = contents[i++];
18706 int32_<wbr/>t output_<wbr/>formats[length];
18707 memcpy(&output_<wbr/>formats[0],<wbr/> &contents[i],<wbr/>
18708 length * sizeof(int32_<wbr/>t));
18712 //<wbr/> writing (static example,<wbr/> PRIVATE_<wbr/>REPROCESSING + YUV_<wbr/>REPROCESSING)
18713 int32_<wbr/>t[] contents = {
18714 IMPLEMENTATION_<wbr/>DEFINED,<wbr/> 2,<wbr/> YUV_<wbr/>420_<wbr/>888,<wbr/> BLOB,<wbr/>
18715 YUV_<wbr/>420_<wbr/>888,<wbr/> 2,<wbr/> YUV_<wbr/>420_<wbr/>888,<wbr/> BLOB,<wbr/>
18717 update_<wbr/>camera_<wbr/>metadata_<wbr/>entry(metadata,<wbr/> index,<wbr/> &contents[0],<wbr/>
18718 sizeof(contents)/<wbr/>sizeof(contents[0]),<wbr/> &updated_<wbr/>entry);
18720 <p>If the HAL claims to support any of the capabilities listed in the
18721 above details,<wbr/> then it must also support all the input-output
18722 combinations listed for that capability.<wbr/> It can optionally support
18723 additional formats if it so chooses.<wbr/></p>
18727 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18728 <!-- end of entry -->
18731 <tr class="entry" id="static_android.scaler.availableStreamConfigurations">
18732 <td class="entry_name
18734 android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations
18736 <td class="entry_type">
18737 <span class="entry_type_name entry_type_name_enum">int32</span>
18738 <span class="entry_type_container">x</span>
18740 <span class="entry_type_array">
18743 <span class="entry_type_visibility"> [ndk_public as streamConfiguration]</span>
18746 <span class="entry_type_hwlevel">[legacy] </span>
18750 <ul class="entry_type_enum">
18752 <span class="entry_type_enum_name">OUTPUT (v3.2)</span>
18755 <span class="entry_type_enum_name">INPUT (v3.2)</span>
18759 </td> <!-- entry_type -->
18761 <td class="entry_description">
18762 <p>The available stream configurations that this
18763 camera device supports
18764 (i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p>
18767 <td class="entry_units">
18770 <td class="entry_range">
18773 <td class="entry_hal_version">
18777 <td class="entry_tags">
18781 <tr class="entries_header">
18782 <th class="th_details" colspan="6">Details</th>
18784 <tr class="entry_cont">
18785 <td class="entry_details" colspan="6">
18786 <p>The configurations are listed as <code>(format,<wbr/> width,<wbr/> height,<wbr/> input?)</code>
18788 <p>For a given use case,<wbr/> the actual maximum supported resolution
18789 may be lower than what is listed here,<wbr/> depending on the destination
18790 Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/>
18791 the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p)
18792 smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448)
18793 can provide.<wbr/></p>
18794 <p>Please reference the documentation for the image data destination to
18795 check if it limits the maximum size for image data.<wbr/></p>
18796 <p>Not all output formats may be supported in a configuration with
18797 an input stream of a particular format.<wbr/> For more details,<wbr/> see
18798 <a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a>.<wbr/></p>
18799 <p>The following table describes the minimum required output stream
18800 configurations based on the hardware level
18801 (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>):</p>
18805 <th align="center">Format</th>
18806 <th align="center">Size</th>
18807 <th align="center">Hardware Level</th>
18808 <th align="center">Notes</th>
18813 <td align="center">JPEG</td>
18814 <td align="center"><a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></td>
18815 <td align="center">Any</td>
18816 <td align="center"></td>
18819 <td align="center">JPEG</td>
18820 <td align="center">1920x1080 (1080p)</td>
18821 <td align="center">Any</td>
18822 <td align="center">if 1080p <= activeArraySize</td>
18825 <td align="center">JPEG</td>
18826 <td align="center">1280x720 (720)</td>
18827 <td align="center">Any</td>
18828 <td align="center">if 720p <= activeArraySize</td>
18831 <td align="center">JPEG</td>
18832 <td align="center">640x480 (480p)</td>
18833 <td align="center">Any</td>
18834 <td align="center">if 480p <= activeArraySize</td>
18837 <td align="center">JPEG</td>
18838 <td align="center">320x240 (240p)</td>
18839 <td align="center">Any</td>
18840 <td align="center">if 240p <= activeArraySize</td>
18843 <td align="center">YUV_<wbr/>420_<wbr/>888</td>
18844 <td align="center">all output sizes available for JPEG</td>
18845 <td align="center">FULL</td>
18846 <td align="center"></td>
18849 <td align="center">YUV_<wbr/>420_<wbr/>888</td>
18850 <td align="center">all output sizes available for JPEG,<wbr/> up to the maximum video size</td>
18851 <td align="center">LIMITED</td>
18852 <td align="center"></td>
18855 <td align="center">IMPLEMENTATION_<wbr/>DEFINED</td>
18856 <td align="center">same as YUV_<wbr/>420_<wbr/>888</td>
18857 <td align="center">Any</td>
18858 <td align="center"></td>
18862 <p>Refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> for additional
18863 mandatory stream configurations on a per-capability basis.<wbr/></p>
18867 <tr class="entries_header">
18868 <th class="th_details" colspan="6">HAL Implementation Details</th>
18870 <tr class="entry_cont">
18871 <td class="entry_details" colspan="6">
18872 <p>It is recommended (but not mandatory) to also include half/<wbr/>quarter
18873 of sensor maximum resolution for JPEG formats (regardless of hardware
18875 <p>(The following is a rewording of the above required table):</p>
18876 <p>For JPEG format,<wbr/> the sizes may be restricted by below conditions:</p>
18878 <li>The HAL may choose the aspect ratio of each Jpeg size to be one of well known ones
18879 (e.<wbr/>g.<wbr/> 4:3,<wbr/> 16:9,<wbr/> 3:2 etc.<wbr/>).<wbr/> If the sensor maximum resolution
18880 (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/>
18881 it does not have to be included in the supported JPEG sizes.<wbr/></li>
18882 <li>Some hardware JPEG encoders may have pixel boundary alignment requirements,<wbr/> such as
18883 the dimensions being a multiple of 16.<wbr/></li>
18885 <p>Therefore,<wbr/> the maximum JPEG size may be smaller than sensor maximum resolution.<wbr/>
18886 However,<wbr/> the largest JPEG size must be as close as possible to the sensor maximum
18887 resolution given above constraints.<wbr/> It is required that after aspect ratio adjustments,<wbr/>
18888 additional size reduction due to other issues must be less than 3% in area.<wbr/> For example,<wbr/>
18889 if the sensor maximum resolution is 3280x2464,<wbr/> if the maximum JPEG size has aspect
18890 ratio 4:3,<wbr/> the JPEG encoder alignment requirement is 16,<wbr/> the maximum JPEG size will be
18891 3264x2448.<wbr/></p>
18892 <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/>
18893 the HAL must include all YUV_<wbr/>420_<wbr/>888 sizes that have JPEG sizes listed
18894 here as output streams.<wbr/></p>
18895 <p>It must also include each below resolution if it is smaller than or
18896 equal to the sensor maximum resolution (for both YUV_<wbr/>420_<wbr/>888 and JPEG
18897 formats),<wbr/> as output streams:</p>
18899 <li>240p (320 x 240)</li>
18900 <li>480p (640 x 480)</li>
18901 <li>720p (1280 x 720)</li>
18902 <li>1080p (1920 x 1080)</li>
18904 <p>For LIMITED capability devices
18905 (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == LIMITED</code>),<wbr/>
18906 the HAL only has to list up to the maximum video size
18907 supported by the device.<wbr/></p>
18908 <p>Regardless of hardware level,<wbr/> every output resolution available for
18909 YUV_<wbr/>420_<wbr/>888 must also be available for IMPLEMENTATION_<wbr/>DEFINED.<wbr/></p>
18910 <p>This supercedes the following fields,<wbr/> which are now deprecated:</p>
18912 <li>availableFormats</li>
18913 <li>available[Processed,<wbr/>Raw,<wbr/>Jpeg]Sizes</li>
18918 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18919 <!-- end of entry -->
18922 <tr class="entry" id="static_android.scaler.availableMinFrameDurations">
18923 <td class="entry_name
18925 android.<wbr/>scaler.<wbr/>available<wbr/>Min<wbr/>Frame<wbr/>Durations
18927 <td class="entry_type">
18928 <span class="entry_type_name">int64</span>
18929 <span class="entry_type_container">x</span>
18931 <span class="entry_type_array">
18934 <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
18937 <span class="entry_type_hwlevel">[legacy] </span>
18942 </td> <!-- entry_type -->
18944 <td class="entry_description">
18945 <p>This lists the minimum frame duration for each
18946 format/<wbr/>size combination.<wbr/></p>
18949 <td class="entry_units">
18950 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
18953 <td class="entry_range">
18956 <td class="entry_hal_version">
18960 <td class="entry_tags">
18961 <ul class="entry_tags">
18962 <li><a href="#tag_V1">V1</a></li>
18967 <tr class="entries_header">
18968 <th class="th_details" colspan="6">Details</th>
18970 <tr class="entry_cont">
18971 <td class="entry_details" colspan="6">
18972 <p>This should correspond to the frame duration when only that
18973 stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode)
18974 set to either OFF or FAST.<wbr/></p>
18975 <p>When multiple streams are used in a request,<wbr/> the minimum frame
18976 duration will be max(individual stream min durations).<wbr/></p>
18977 <p>The minimum frame duration of a stream (of a particular format,<wbr/> size)
18978 is the same regardless of whether the stream is input or output.<wbr/></p>
18979 <p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> and
18980 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for more details about
18981 calculating the max frame rate.<wbr/></p>
18986 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18987 <!-- end of entry -->
18990 <tr class="entry" id="static_android.scaler.availableStallDurations">
18991 <td class="entry_name
18993 android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations
18995 <td class="entry_type">
18996 <span class="entry_type_name">int64</span>
18997 <span class="entry_type_container">x</span>
18999 <span class="entry_type_array">
19002 <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
19005 <span class="entry_type_hwlevel">[legacy] </span>
19010 </td> <!-- entry_type -->
19012 <td class="entry_description">
19013 <p>This lists the maximum stall duration for each
19014 output format/<wbr/>size combination.<wbr/></p>
19017 <td class="entry_units">
19018 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
19021 <td class="entry_range">
19024 <td class="entry_hal_version">
19028 <td class="entry_tags">
19029 <ul class="entry_tags">
19030 <li><a href="#tag_V1">V1</a></li>
19035 <tr class="entries_header">
19036 <th class="th_details" colspan="6">Details</th>
19038 <tr class="entry_cont">
19039 <td class="entry_details" colspan="6">
19040 <p>A stall duration is how much extra time would get added
19041 to the normal minimum frame duration for a repeating request
19042 that has streams with non-zero stall.<wbr/></p>
19043 <p>For example,<wbr/> consider JPEG captures which have the following
19044 characteristics:</p>
19046 <li>JPEG streams act like processed YUV streams in requests for which
19047 they are not included; in requests in which they are directly
19048 referenced,<wbr/> they act as JPEG streams.<wbr/> This is because supporting a
19049 JPEG stream requires the underlying YUV data to always be ready for
19050 use by a JPEG encoder,<wbr/> but the encoder will only be used (and impact
19051 frame duration) on requests that actually reference a JPEG stream.<wbr/></li>
19052 <li>The JPEG processor can run concurrently to the rest of the camera
19053 pipeline,<wbr/> but cannot process more than 1 capture at a time.<wbr/></li>
19055 <p>In other words,<wbr/> using a repeating YUV request would result
19056 in a steady frame rate (let's say it's 30 FPS).<wbr/> If a single
19057 JPEG request is submitted periodically,<wbr/> the frame rate will stay
19058 at 30 FPS (as long as we wait for the previous JPEG to return each
19059 time).<wbr/> If we try to submit a repeating YUV + JPEG request,<wbr/> then
19060 the frame rate will drop from 30 FPS.<wbr/></p>
19061 <p>In general,<wbr/> submitting a new request with a non-0 stall time
19062 stream will <em>not</em> cause a frame rate drop unless there are still
19063 outstanding buffers for that stream from previous requests.<wbr/></p>
19064 <p>Submitting a repeating request with streams (call this <code>S</code>)
19065 is the same as setting the minimum frame duration from
19066 the normal minimum frame duration corresponding to <code>S</code>,<wbr/> added with
19067 the maximum stall duration for <code>S</code>.<wbr/></p>
19068 <p>If interleaving requests with and without a stall duration,<wbr/>
19069 a request will stall by the maximum of the remaining times
19070 for each can-stall stream with outstanding buffers.<wbr/></p>
19071 <p>This means that a stalling request will not have an exposure start
19072 until the stall has completed.<wbr/></p>
19073 <p>This should correspond to the stall duration when only that stream is
19074 active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode) set to FAST
19075 or OFF.<wbr/> Setting any of the processing modes to HIGH_<wbr/>QUALITY
19076 effectively results in an indeterminate stall duration for all
19077 streams in a request (the regular stall calculation rules are
19078 ignored).<wbr/></p>
19079 <p>The following formats may always have a stall duration:</p>
19081 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></li>
19082 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_SENSOR">ImageFormat#RAW_<wbr/>SENSOR</a></li>
19084 <p>The following formats will never have a stall duration:</p>
19086 <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>
19087 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW10">ImageFormat#RAW10</a></li>
19088 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW12">ImageFormat#RAW12</a></li>
19090 <p>All other formats may or may not have an allowed stall duration on
19091 a per-capability basis; refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>
19092 for more details.<wbr/></p>
19093 <p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> for more information about
19094 calculating the max frame rate (absent stalls).<wbr/></p>
19098 <tr class="entries_header">
19099 <th class="th_details" colspan="6">HAL Implementation Details</th>
19101 <tr class="entry_cont">
19102 <td class="entry_details" colspan="6">
19103 <p>If possible,<wbr/> it is recommended that all non-JPEG formats
19104 (such as RAW16) should not have a stall duration.<wbr/> RAW10,<wbr/> RAW12,<wbr/> RAW_<wbr/>OPAQUE
19105 and IMPLEMENTATION_<wbr/>DEFINED must not have stall durations.<wbr/></p>
19109 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19110 <!-- end of entry -->
19113 <tr class="entry" id="static_android.scaler.streamConfigurationMap">
19114 <td class="entry_name
19116 android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map
19118 <td class="entry_type">
19119 <span class="entry_type_name">int32</span>
19121 <span class="entry_type_visibility"> [java_public as streamConfigurationMap]</span>
19123 <span class="entry_type_synthetic">[synthetic] </span>
19125 <span class="entry_type_hwlevel">[legacy] </span>
19130 </td> <!-- entry_type -->
19132 <td class="entry_description">
19133 <p>The available stream configurations that this
19134 camera device supports; also includes the minimum frame durations
19135 and the stall durations for each format/<wbr/>size combination.<wbr/></p>
19138 <td class="entry_units">
19141 <td class="entry_range">
19144 <td class="entry_hal_version">
19148 <td class="entry_tags">
19152 <tr class="entries_header">
19153 <th class="th_details" colspan="6">Details</th>
19155 <tr class="entry_cont">
19156 <td class="entry_details" colspan="6">
19157 <p>All camera devices will support sensor maximum resolution (defined by
19158 <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>
19159 <p>For a given use case,<wbr/> the actual maximum supported resolution
19160 may be lower than what is listed here,<wbr/> depending on the destination
19161 Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/>
19162 the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p)
19163 smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448)
19164 can provide.<wbr/></p>
19165 <p>Please reference the documentation for the image data destination to
19166 check if it limits the maximum size for image data.<wbr/></p>
19167 <p>The following table describes the minimum required output stream
19168 configurations based on the hardware level
19169 (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>):</p>
19173 <th align="center">Format</th>
19174 <th align="center">Size</th>
19175 <th align="center">Hardware Level</th>
19176 <th align="center">Notes</th>
19181 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
19182 <td align="center"><a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> (*1)</td>
19183 <td align="center">Any</td>
19184 <td align="center"></td>
19187 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
19188 <td align="center">1920x1080 (1080p)</td>
19189 <td align="center">Any</td>
19190 <td align="center">if 1080p <= activeArraySize</td>
19193 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
19194 <td align="center">1280x720 (720p)</td>
19195 <td align="center">Any</td>
19196 <td align="center">if 720p <= activeArraySize</td>
19199 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
19200 <td align="center">640x480 (480p)</td>
19201 <td align="center">Any</td>
19202 <td align="center">if 480p <= activeArraySize</td>
19205 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
19206 <td align="center">320x240 (240p)</td>
19207 <td align="center">Any</td>
19208 <td align="center">if 240p <= activeArraySize</td>
19211 <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>
19212 <td align="center">all output sizes available for JPEG</td>
19213 <td align="center">FULL</td>
19214 <td align="center"></td>
19217 <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>
19218 <td align="center">all output sizes available for JPEG,<wbr/> up to the maximum video size</td>
19219 <td align="center">LIMITED</td>
19220 <td align="center"></td>
19223 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td>
19224 <td align="center">same as YUV_<wbr/>420_<wbr/>888</td>
19225 <td align="center">Any</td>
19226 <td align="center"></td>
19230 <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
19231 stream configurations on a per-capability basis.<wbr/></p>
19232 <p>*1: For JPEG format,<wbr/> the sizes may be restricted by below conditions:</p>
19234 <li>The HAL may choose the aspect ratio of each Jpeg size to be one of well known ones
19235 (e.<wbr/>g.<wbr/> 4:3,<wbr/> 16:9,<wbr/> 3:2 etc.<wbr/>).<wbr/> If the sensor maximum resolution
19236 (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/>
19237 it does not have to be included in the supported JPEG sizes.<wbr/></li>
19238 <li>Some hardware JPEG encoders may have pixel boundary alignment requirements,<wbr/> such as
19239 the dimensions being a multiple of 16.<wbr/>
19240 Therefore,<wbr/> the maximum JPEG size may be smaller than sensor maximum resolution.<wbr/>
19241 However,<wbr/> the largest JPEG size will be as close as possible to the sensor maximum
19242 resolution given above constraints.<wbr/> It is required that after aspect ratio adjustments,<wbr/>
19243 additional size reduction due to other issues must be less than 3% in area.<wbr/> For example,<wbr/>
19244 if the sensor maximum resolution is 3280x2464,<wbr/> if the maximum JPEG size has aspect
19245 ratio 4:3,<wbr/> and the JPEG encoder alignment requirement is 16,<wbr/> the maximum JPEG size will be
19246 3264x2448.<wbr/></li>
19251 <tr class="entries_header">
19252 <th class="th_details" colspan="6">HAL Implementation Details</th>
19254 <tr class="entry_cont">
19255 <td class="entry_details" colspan="6">
19256 <p>Do not set this property directly
19257 (it is synthetic and will not be available at the HAL layer);
19258 set the <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> instead.<wbr/></p>
19259 <p>Not all output formats may be supported in a configuration with
19260 an input stream of a particular format.<wbr/> For more details,<wbr/> see
19261 <a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a>.<wbr/></p>
19262 <p>It is recommended (but not mandatory) to also include half/<wbr/>quarter
19263 of sensor maximum resolution for JPEG formats (regardless of hardware
19265 <p>(The following is a rewording of the above required table):</p>
19266 <p>The HAL must include sensor maximum resolution (defined by
19267 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>).<wbr/></p>
19268 <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/>
19269 the HAL must include all YUV_<wbr/>420_<wbr/>888 sizes that have JPEG sizes listed
19270 here as output streams.<wbr/></p>
19271 <p>It must also include each below resolution if it is smaller than or
19272 equal to the sensor maximum resolution (for both YUV_<wbr/>420_<wbr/>888 and JPEG
19273 formats),<wbr/> as output streams:</p>
19275 <li>240p (320 x 240)</li>
19276 <li>480p (640 x 480)</li>
19277 <li>720p (1280 x 720)</li>
19278 <li>1080p (1920 x 1080)</li>
19280 <p>For LIMITED capability devices
19281 (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == LIMITED</code>),<wbr/>
19282 the HAL only has to list up to the maximum video size
19283 supported by the device.<wbr/></p>
19284 <p>Regardless of hardware level,<wbr/> every output resolution available for
19285 YUV_<wbr/>420_<wbr/>888 must also be available for IMPLEMENTATION_<wbr/>DEFINED.<wbr/></p>
19286 <p>This supercedes the following fields,<wbr/> which are now deprecated:</p>
19288 <li>availableFormats</li>
19289 <li>available[Processed,<wbr/>Raw,<wbr/>Jpeg]Sizes</li>
19294 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19295 <!-- end of entry -->
19298 <tr class="entry" id="static_android.scaler.croppingType">
19299 <td class="entry_name
19301 android.<wbr/>scaler.<wbr/>cropping<wbr/>Type
19303 <td class="entry_type">
19304 <span class="entry_type_name entry_type_name_enum">byte</span>
19306 <span class="entry_type_visibility"> [public]</span>
19309 <span class="entry_type_hwlevel">[legacy] </span>
19313 <ul class="entry_type_enum">
19315 <span class="entry_type_enum_name">CENTER_ONLY (v3.2)</span>
19316 <span class="entry_type_enum_notes"><p>The camera device only supports centered crop regions.<wbr/></p></span>
19319 <span class="entry_type_enum_name">FREEFORM (v3.2)</span>
19320 <span class="entry_type_enum_notes"><p>The camera device supports arbitrarily chosen crop regions.<wbr/></p></span>
19324 </td> <!-- entry_type -->
19326 <td class="entry_description">
19327 <p>The crop type that this camera device supports.<wbr/></p>
19330 <td class="entry_units">
19333 <td class="entry_range">
19336 <td class="entry_hal_version">
19340 <td class="entry_tags">
19344 <tr class="entries_header">
19345 <th class="th_details" colspan="6">Details</th>
19347 <tr class="entry_cont">
19348 <td class="entry_details" colspan="6">
19349 <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
19350 device that only supports CENTER_<wbr/>ONLY cropping,<wbr/> the camera device will move the
19351 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>)
19352 and keep the crop region width and height unchanged.<wbr/> The camera device will return the
19353 final used crop region in metadata result <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></p>
19354 <p>Camera devices that support FREEFORM cropping will support any crop region that
19355 is inside of the active array.<wbr/> The camera device will apply the same crop region and
19356 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>
19357 <p>LEGACY capability devices will only support CENTER_<wbr/>ONLY cropping.<wbr/></p>
19362 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19363 <!-- end of entry -->
19367 <!-- end of kind -->
19369 <tr><td colspan="7" class="kind">dynamic</td></tr>
19371 <thead class="entries_header">
19373 <th class="th_name">Property Name</th>
19374 <th class="th_type">Type</th>
19375 <th class="th_description">Description</th>
19376 <th class="th_units">Units</th>
19377 <th class="th_range">Range</th>
19378 <th class="th_hal_version">Initial HIDL HAL version</th>
19379 <th class="th_tags">Tags</th>
19394 <tr class="entry" id="dynamic_android.scaler.cropRegion">
19395 <td class="entry_name
19397 android.<wbr/>scaler.<wbr/>crop<wbr/>Region
19399 <td class="entry_type">
19400 <span class="entry_type_name">int32</span>
19401 <span class="entry_type_container">x</span>
19403 <span class="entry_type_array">
19406 <span class="entry_type_visibility"> [public as rectangle]</span>
19409 <span class="entry_type_hwlevel">[legacy] </span>
19414 </td> <!-- entry_type -->
19416 <td class="entry_description">
19417 <p>The desired region of the sensor to read out for this capture.<wbr/></p>
19420 <td class="entry_units">
19421 Pixel coordinates relative to
19422 android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
19425 <td class="entry_range">
19428 <td class="entry_hal_version">
19432 <td class="entry_tags">
19433 <ul class="entry_tags">
19434 <li><a href="#tag_BC">BC</a></li>
19439 <tr class="entries_header">
19440 <th class="th_details" colspan="6">Details</th>
19442 <tr class="entry_cont">
19443 <td class="entry_details" colspan="6">
19444 <p>This control can be used to implement digital zoom.<wbr/></p>
19445 <p>The crop region coordinate system is based off
19446 <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
19447 top-left corner of the sensor active array.<wbr/></p>
19448 <p>Output streams use this rectangle to produce their output,<wbr/>
19449 cropping to a smaller region if necessary to maintain the
19450 stream's aspect ratio,<wbr/> then scaling the sensor input to
19451 match the output's configured resolution.<wbr/></p>
19452 <p>The crop region is applied after the RAW to other color
19453 space (e.<wbr/>g.<wbr/> YUV) conversion.<wbr/> Since raw streams
19454 (e.<wbr/>g.<wbr/> RAW16) don't have the conversion stage,<wbr/> they are not
19455 croppable.<wbr/> The crop region will be ignored by raw streams.<wbr/></p>
19456 <p>For non-raw streams,<wbr/> any additional per-stream cropping will
19457 be done to maximize the final pixel area of the stream.<wbr/></p>
19458 <p>For example,<wbr/> if the crop region is set to a 4:3 aspect
19459 ratio,<wbr/> then 4:3 streams will use the exact crop
19460 region.<wbr/> 16:9 streams will further crop vertically
19461 (letterbox).<wbr/></p>
19462 <p>Conversely,<wbr/> if the crop region is set to a 16:9,<wbr/> then 4:3
19463 outputs will crop horizontally (pillarbox),<wbr/> and 16:9
19464 streams will match exactly.<wbr/> These additional crops will
19465 be centered within the crop region.<wbr/></p>
19466 <p>The width and height of the crop region cannot
19467 be set to be smaller than
19468 <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
19469 <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>
19470 <p>The camera device may adjust the crop region to account
19471 for rounding and other hardware requirements; the final
19472 crop region used will be included in the output capture
19477 <tr class="entries_header">
19478 <th class="th_details" colspan="6">HAL Implementation Details</th>
19480 <tr class="entry_cont">
19481 <td class="entry_details" colspan="6">
19482 <p>The output streams must maintain square pixels at all
19483 times,<wbr/> no matter what the relative aspect ratios of the
19484 crop region and the stream are.<wbr/> Negative values for
19485 corner are allowed for raw output if full pixel array is
19486 larger than active pixel array.<wbr/> Width and height may be
19487 rounded to nearest larger supportable width,<wbr/> especially
19488 for raw output,<wbr/> where only a few fixed scales may be
19489 possible.<wbr/></p>
19490 <p>For a set of output streams configured,<wbr/> if the sensor output is cropped to a smaller
19491 size than active array size,<wbr/> the HAL need follow below cropping rules:</p>
19494 <p>The HAL need handle the cropRegion as if the sensor crop size is the effective active
19495 array size.<wbr/>More specifically,<wbr/> the HAL must transform the request cropRegion from
19496 <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>
19498 <li>Translate the requested cropRegion w.<wbr/>r.<wbr/>t.,<wbr/> the left top corner of the sensor
19499 cropped pixel area by (tx,<wbr/> ty),<wbr/>
19500 where <code>tx = sensorCrop.<wbr/>top * (sensorCrop.<wbr/>height /<wbr/> activeArraySize.<wbr/>height)</code>
19501 and <code>tx = sensorCrop.<wbr/>left * (sensorCrop.<wbr/>width /<wbr/> activeArraySize.<wbr/>width)</code>.<wbr/> The
19502 (sensorCrop.<wbr/>top,<wbr/> sensorCrop.<wbr/>left) is the coordinate based off the
19503 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></li>
19504 <li>Scale the width and height of requested cropRegion with scaling factor of
19505 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
19506 respectively.<wbr/>
19507 Once this new cropRegion is calculated,<wbr/> the HAL must use this region to crop the image
19508 with regard to the sensor crop size (effective active array size).<wbr/> The HAL still need
19509 follow the general cropping rule for this new cropRegion and effective active
19510 array size.<wbr/></li>
19514 <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/>
19515 The HAL need convert the new cropRegion generated above w.<wbr/>r.<wbr/>t.,<wbr/> full active array size.<wbr/>
19516 The reported cropRegion may be slightly different with the requested cropRegion since
19517 the HAL may adjust the crop region to account for rounding,<wbr/> conversion error,<wbr/> or other
19518 hardware limitations.<wbr/></p>
19521 <p>HAL2.<wbr/>x uses only (x,<wbr/> y,<wbr/> width)</p>
19525 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19526 <!-- end of entry -->
19530 <!-- end of kind -->
19533 <!-- end of section -->
19534 <tr><td colspan="7" id="section_sensor" class="section">sensor</td></tr>
19537 <tr><td colspan="7" class="kind">controls</td></tr>
19539 <thead class="entries_header">
19541 <th class="th_name">Property Name</th>
19542 <th class="th_type">Type</th>
19543 <th class="th_description">Description</th>
19544 <th class="th_units">Units</th>
19545 <th class="th_range">Range</th>
19546 <th class="th_hal_version">Initial HIDL HAL version</th>
19547 <th class="th_tags">Tags</th>
19562 <tr class="entry" id="controls_android.sensor.exposureTime">
19563 <td class="entry_name
19565 android.<wbr/>sensor.<wbr/>exposure<wbr/>Time
19567 <td class="entry_type">
19568 <span class="entry_type_name">int64</span>
19570 <span class="entry_type_visibility"> [public]</span>
19573 <span class="entry_type_hwlevel">[full] </span>
19578 </td> <!-- entry_type -->
19580 <td class="entry_description">
19581 <p>Duration each pixel is exposed to
19585 <td class="entry_units">
19589 <td class="entry_range">
19590 <p><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></p>
19593 <td class="entry_hal_version">
19597 <td class="entry_tags">
19598 <ul class="entry_tags">
19599 <li><a href="#tag_V1">V1</a></li>
19604 <tr class="entries_header">
19605 <th class="th_details" colspan="6">Details</th>
19607 <tr class="entry_cont">
19608 <td class="entry_details" colspan="6">
19609 <p>If the sensor can't expose this exact duration,<wbr/> it will shorten the
19610 duration exposed to the nearest possible value (rather than expose longer).<wbr/>
19611 The final exposure time used will be available in the output capture result.<wbr/></p>
19612 <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
19613 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
19618 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19619 <!-- end of entry -->
19622 <tr class="entry" id="controls_android.sensor.frameDuration">
19623 <td class="entry_name
19625 android.<wbr/>sensor.<wbr/>frame<wbr/>Duration
19627 <td class="entry_type">
19628 <span class="entry_type_name">int64</span>
19630 <span class="entry_type_visibility"> [public]</span>
19633 <span class="entry_type_hwlevel">[full] </span>
19638 </td> <!-- entry_type -->
19640 <td class="entry_description">
19641 <p>Duration from start of frame exposure to
19642 start of next frame exposure.<wbr/></p>
19645 <td class="entry_units">
19649 <td class="entry_range">
19650 <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/>
19651 The duration is capped to <code>max(duration,<wbr/> exposureTime + overhead)</code>.<wbr/></p>
19654 <td class="entry_hal_version">
19658 <td class="entry_tags">
19659 <ul class="entry_tags">
19660 <li><a href="#tag_V1">V1</a></li>
19665 <tr class="entries_header">
19666 <th class="th_details" colspan="6">Details</th>
19668 <tr class="entry_cont">
19669 <td class="entry_details" colspan="6">
19670 <p>The maximum frame rate that can be supported by a camera subsystem is
19671 a function of many factors:</p>
19673 <li>Requested resolutions of output image streams</li>
19674 <li>Availability of binning /<wbr/> skipping modes on the imager</li>
19675 <li>The bandwidth of the imager interface</li>
19676 <li>The bandwidth of the various ISP processing blocks</li>
19678 <p>Since these factors can vary greatly between different ISPs and
19679 sensors,<wbr/> the camera abstraction tries to represent the bandwidth
19680 restrictions with as simple a model as possible.<wbr/></p>
19681 <p>The model presented has the following characteristics:</p>
19683 <li>The image sensor is always configured to output the smallest
19684 resolution possible given the application's requested output stream
19685 sizes.<wbr/> The smallest resolution is defined as being at least as large
19686 as the largest requested output stream size; the camera pipeline must
19687 never digitally upsample sensor data when the crop region covers the
19688 whole sensor.<wbr/> In general,<wbr/> this means that if only small output stream
19689 resolutions are configured,<wbr/> the sensor can provide a higher frame
19691 <li>Since any request may use any or all the currently configured
19692 output streams,<wbr/> the sensor and ISP must be configured to support
19693 scaling a single capture to all the streams at the same time.<wbr/> This
19694 means the camera pipeline must be ready to produce the largest
19695 requested output size without any delay.<wbr/> Therefore,<wbr/> the overall
19696 frame rate of a given configured stream set is governed only by the
19697 largest requested stream resolution.<wbr/></li>
19698 <li>Using more than one output stream in a request does not affect the
19699 frame duration.<wbr/></li>
19700 <li>Certain format-streams may need to do additional background processing
19701 before data is consumed/<wbr/>produced by that stream.<wbr/> These processors
19702 can run concurrently to the rest of the camera pipeline,<wbr/> but
19703 cannot process more than 1 capture at a time.<wbr/></li>
19705 <p>The necessary information for the application,<wbr/> given the model above,<wbr/> is provided via
19706 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/>
19707 These are used to determine the maximum frame rate /<wbr/> minimum frame duration that is
19708 possible for a given stream configuration.<wbr/></p>
19709 <p>Specifically,<wbr/> the application can use the following rules to
19710 determine the minimum frame duration it can request from the camera
19713 <li>Let the set of currently configured input/<wbr/>output streams be called <code>S</code>.<wbr/></li>
19714 <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>
19715 (with its respective size/<wbr/>format).<wbr/> Let this set of frame durations be called <code>F</code>.<wbr/></li>
19716 <li>For any given request <code>R</code>,<wbr/> the minimum frame duration allowed for <code>R</code> is the maximum
19717 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>
19719 <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>
19720 using its respective size/<wbr/>format),<wbr/> then the frame duration in <code>F</code> determines the steady
19721 state frame rate that the application will get if it uses <code>R</code> as a repeating request.<wbr/> Let
19722 this special kind of request be called <code>Rsimple</code>.<wbr/></p>
19723 <p>A repeating request <code>Rsimple</code> can be <em>occasionally</em> interleaved by a single capture of a
19724 new request <code>Rstall</code> (which has at least one in-use stream with a non-0 stall time) and if
19725 <code>Rstall</code> has the same minimum frame duration this will not cause a frame rate loss if all
19726 buffers from the previous <code>Rstall</code> have already been delivered.<wbr/></p>
19727 <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>
19728 <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
19729 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
19733 <tr class="entries_header">
19734 <th class="th_details" colspan="6">HAL Implementation Details</th>
19736 <tr class="entry_cont">
19737 <td class="entry_details" colspan="6">
19738 <p>For more details about stalling,<wbr/> see
19739 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>.<wbr/></p>
19743 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19744 <!-- end of entry -->
19747 <tr class="entry" id="controls_android.sensor.sensitivity">
19748 <td class="entry_name
19750 android.<wbr/>sensor.<wbr/>sensitivity
19752 <td class="entry_type">
19753 <span class="entry_type_name">int32</span>
19755 <span class="entry_type_visibility"> [public]</span>
19758 <span class="entry_type_hwlevel">[full] </span>
19763 </td> <!-- entry_type -->
19765 <td class="entry_description">
19766 <p>The amount of gain applied to sensor data
19767 before processing.<wbr/></p>
19770 <td class="entry_units">
19771 ISO arithmetic units
19774 <td class="entry_range">
19775 <p><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></p>
19778 <td class="entry_hal_version">
19782 <td class="entry_tags">
19783 <ul class="entry_tags">
19784 <li><a href="#tag_V1">V1</a></li>
19789 <tr class="entries_header">
19790 <th class="th_details" colspan="6">Details</th>
19792 <tr class="entry_cont">
19793 <td class="entry_details" colspan="6">
19794 <p>The sensitivity is the standard ISO sensitivity value,<wbr/>
19795 as defined in ISO 12232:2006.<wbr/></p>
19796 <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
19797 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
19798 is guaranteed to use only analog amplification for applying the gain.<wbr/></p>
19799 <p>If the camera device cannot apply the exact sensitivity
19800 requested,<wbr/> it will reduce the gain to the nearest supported
19801 value.<wbr/> The final sensitivity used will be available in the
19802 output capture result.<wbr/></p>
19803 <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
19804 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
19808 <tr class="entries_header">
19809 <th class="th_details" colspan="6">HAL Implementation Details</th>
19811 <tr class="entry_cont">
19812 <td class="entry_details" colspan="6">
19813 <p>ISO 12232:2006 REI method is acceptable.<wbr/></p>
19817 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19818 <!-- end of entry -->
19821 <tr class="entry" id="controls_android.sensor.testPatternData">
19822 <td class="entry_name
19824 android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data
19826 <td class="entry_type">
19827 <span class="entry_type_name">int32</span>
19828 <span class="entry_type_container">x</span>
19830 <span class="entry_type_array">
19833 <span class="entry_type_visibility"> [public]</span>
19840 </td> <!-- entry_type -->
19842 <td class="entry_description">
19843 <p>A pixel <code>[R,<wbr/> G_<wbr/>even,<wbr/> G_<wbr/>odd,<wbr/> B]</code> that supplies the test pattern
19844 when <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a> is SOLID_<wbr/>COLOR.<wbr/></p>
19847 <td class="entry_units">
19850 <td class="entry_range">
19853 <td class="entry_hal_version">
19857 <td class="entry_tags">
19861 <tr class="entries_header">
19862 <th class="th_details" colspan="6">Details</th>
19864 <tr class="entry_cont">
19865 <td class="entry_details" colspan="6">
19866 <p>Each color channel is treated as an unsigned 32-bit integer.<wbr/>
19867 The camera device then uses the most significant X bits
19868 that correspond to how many bits are in its Bayer raw sensor
19870 <p>For example,<wbr/> a sensor with RAW10 Bayer output would use the
19871 10 most significant bits from each color channel.<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">
19884 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19885 <!-- end of entry -->
19888 <tr class="entry" id="controls_android.sensor.testPatternMode">
19889 <td class="entry_name
19891 android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode
19893 <td class="entry_type">
19894 <span class="entry_type_name entry_type_name_enum">int32</span>
19896 <span class="entry_type_visibility"> [public]</span>
19902 <ul class="entry_type_enum">
19904 <span class="entry_type_enum_name">OFF (v3.2)</span>
19905 <span class="entry_type_enum_notes"><p>No test pattern mode is used,<wbr/> and the camera
19906 device returns captures from the image sensor.<wbr/></p>
19907 <p>This is the default if the key is not set.<wbr/></p></span>
19910 <span class="entry_type_enum_name">SOLID_COLOR (v3.2)</span>
19911 <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
19912 respective color channel provided in
19913 <a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a>.<wbr/></p>
19914 <p>For example:</p>
19915 <pre><code>android.<wbr/>testPatternData = [0,<wbr/> 0xFFFFFFFF,<wbr/> 0xFFFFFFFF,<wbr/> 0]
19917 <p>All green pixels are 100% green.<wbr/> All red/<wbr/>blue pixels are black.<wbr/></p>
19918 <pre><code>android.<wbr/>testPatternData = [0xFFFFFFFF,<wbr/> 0,<wbr/> 0xFFFFFFFF,<wbr/> 0]
19920 <p>All red pixels are 100% red.<wbr/> Only the odd green pixels
19921 are 100% green.<wbr/> All blue pixels are 100% black.<wbr/></p></span>
19924 <span class="entry_type_enum_name">COLOR_BARS (v3.2)</span>
19925 <span class="entry_type_enum_notes"><p>All pixel data is replaced with an 8-bar color pattern.<wbr/></p>
19926 <p>The vertical bars (left-to-right) are as follows:</p>
19928 <li>100% white</li>
19937 <p>In general the image would look like the following:</p>
19938 <pre><code>W Y C G M R B K
19943 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
19944 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
19945 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
19947 (B = Blue,<wbr/> K = Black)
19949 <p>Each bar should take up 1/<wbr/>8 of the sensor pixel array width.<wbr/>
19950 When this is not possible,<wbr/> the bar size should be rounded
19951 down to the nearest integer and the pattern can repeat
19952 on the right side.<wbr/></p>
19953 <p>Each bar's height must always take up the full sensor
19954 pixel array height.<wbr/></p>
19955 <p>Each pixel in this test pattern must be set to either
19956 0% intensity or 100% intensity.<wbr/></p></span>
19959 <span class="entry_type_enum_name">COLOR_BARS_FADE_TO_GRAY (v3.2)</span>
19960 <span class="entry_type_enum_notes"><p>The test pattern is similar to COLOR_<wbr/>BARS,<wbr/> except that
19961 each bar should start at its specified color at the top,<wbr/>
19962 and fade to gray at the bottom.<wbr/></p>
19963 <p>Furthermore each bar is further subdivided into a left and
19964 right half.<wbr/> The left half should have a smooth gradient,<wbr/>
19965 and the right half should have a quantized gradient.<wbr/></p>
19966 <p>In particular,<wbr/> the right half's should consist of blocks of the
19967 same color for 1/<wbr/>16th active sensor pixel array width.<wbr/></p>
19968 <p>The least significant bits in the quantized gradient should
19969 be copied from the most significant bits of the smooth gradient.<wbr/></p>
19970 <p>The height of each bar should always be a multiple of 128.<wbr/>
19971 When this is not the case,<wbr/> the pattern should repeat at the bottom
19972 of the image.<wbr/></p></span>
19975 <span class="entry_type_enum_name">PN9 (v3.2)</span>
19976 <span class="entry_type_enum_notes"><p>All pixel data is replaced by a pseudo-random sequence
19977 generated from a PN9 512-bit sequence (typically implemented
19978 in hardware with a linear feedback shift register).<wbr/></p>
19979 <p>The generator should be reset at the beginning of each frame,<wbr/>
19980 and thus each subsequent raw frame with this test pattern should
19981 be exactly the same as the last.<wbr/></p></span>
19984 <span class="entry_type_enum_name">CUSTOM1 (v3.2)</span>
19985 <span class="entry_type_enum_value">256</span>
19986 <span class="entry_type_enum_notes"><p>The first custom test pattern.<wbr/> All custom patterns that are
19987 available only on this camera device are at least this numeric
19989 <p>All of the custom test patterns will be static
19990 (that is the raw image must not vary from frame to frame).<wbr/></p></span>
19994 </td> <!-- entry_type -->
19996 <td class="entry_description">
19997 <p>When enabled,<wbr/> the sensor sends a test pattern instead of
19998 doing a real exposure from the camera.<wbr/></p>
20001 <td class="entry_units">
20004 <td class="entry_range">
20005 <p><a href="#static_android.sensor.availableTestPatternModes">android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes</a></p>
20008 <td class="entry_hal_version">
20012 <td class="entry_tags">
20016 <tr class="entries_header">
20017 <th class="th_details" colspan="6">Details</th>
20019 <tr class="entry_cont">
20020 <td class="entry_details" colspan="6">
20021 <p>When a test pattern is enabled,<wbr/> all manual sensor controls specified
20022 by android.<wbr/>sensor.<wbr/>* will be ignored.<wbr/> All other controls should
20023 work as normal.<wbr/></p>
20024 <p>For example,<wbr/> if manual flash is enabled,<wbr/> flash firing should still
20025 occur (and that the test pattern remain unmodified,<wbr/> since the flash
20026 would not actually affect it).<wbr/></p>
20027 <p>Defaults to OFF.<wbr/></p>
20031 <tr class="entries_header">
20032 <th class="th_details" colspan="6">HAL Implementation Details</th>
20034 <tr class="entry_cont">
20035 <td class="entry_details" colspan="6">
20036 <p>All test patterns are specified in the Bayer domain.<wbr/></p>
20037 <p>The HAL may choose to substitute test patterns from the sensor
20038 with test patterns from on-device memory.<wbr/> In that case,<wbr/> it should be
20039 indistinguishable to the ISP whether the data came from the
20040 sensor interconnect bus (such as CSI2) or memory.<wbr/></p>
20044 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20045 <!-- end of entry -->
20049 <!-- end of kind -->
20051 <tr><td colspan="7" class="kind">static</td></tr>
20053 <thead class="entries_header">
20055 <th class="th_name">Property Name</th>
20056 <th class="th_type">Type</th>
20057 <th class="th_description">Description</th>
20058 <th class="th_units">Units</th>
20059 <th class="th_range">Range</th>
20060 <th class="th_hal_version">Initial HIDL HAL version</th>
20061 <th class="th_tags">Tags</th>
20078 <tr class="entry" id="static_android.sensor.info.activeArraySize">
20079 <td class="entry_name
20081 android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
20083 <td class="entry_type">
20084 <span class="entry_type_name">int32</span>
20085 <span class="entry_type_container">x</span>
20087 <span class="entry_type_array">
20090 <span class="entry_type_visibility"> [public as rectangle]</span>
20093 <span class="entry_type_hwlevel">[legacy] </span>
20096 <div class="entry_type_notes">Four ints defining the active pixel rectangle</div>
20099 </td> <!-- entry_type -->
20101 <td class="entry_description">
20102 <p>The area of the image sensor which corresponds to active pixels after any geometric
20103 distortion correction has been applied.<wbr/></p>
20106 <td class="entry_units">
20107 Pixel coordinates on the image sensor
20110 <td class="entry_range">
20113 <td class="entry_hal_version">
20117 <td class="entry_tags">
20118 <ul class="entry_tags">
20119 <li><a href="#tag_RAW">RAW</a></li>
20124 <tr class="entries_header">
20125 <th class="th_details" colspan="6">Details</th>
20127 <tr class="entry_cont">
20128 <td class="entry_details" colspan="6">
20129 <p>This is the rectangle representing the size of the active region of the sensor (i.<wbr/>e.<wbr/>
20130 the region that actually receives light from the scene) after any geometric correction
20131 has been applied,<wbr/> and should be treated as the maximum size in pixels of any of the
20132 image output formats aside from the raw formats.<wbr/></p>
20133 <p>This rectangle is defined relative to the full pixel array; (0,<wbr/>0) is the top-left of
20134 the full pixel array,<wbr/> and the size of the full pixel array is given by
20135 <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
20136 <p>The coordinate system for most other keys that list pixel coordinates,<wbr/> including
20137 <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
20138 this field,<wbr/> with <code>(0,<wbr/> 0)</code> being the top-left of this rectangle.<wbr/></p>
20139 <p>The active array may be smaller than the full pixel array,<wbr/> since the full array may
20140 include black calibration pixels or other inactive regions,<wbr/> and geometric correction
20141 resulting in scaling or cropping may have been applied.<wbr/></p>
20145 <tr class="entries_header">
20146 <th class="th_details" colspan="6">HAL Implementation Details</th>
20148 <tr class="entry_cont">
20149 <td class="entry_details" colspan="6">
20150 <p>This array contains <code>(xmin,<wbr/> ymin,<wbr/> width,<wbr/> height)</code>.<wbr/> The <code>(xmin,<wbr/> ymin)</code> must be
20151 >= <code>(0,<wbr/>0)</code>.<wbr/>
20152 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>
20156 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20157 <!-- end of entry -->
20160 <tr class="entry" id="static_android.sensor.info.sensitivityRange">
20161 <td class="entry_name
20163 android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range
20165 <td class="entry_type">
20166 <span class="entry_type_name">int32</span>
20167 <span class="entry_type_container">x</span>
20169 <span class="entry_type_array">
20172 <span class="entry_type_visibility"> [public as rangeInt]</span>
20175 <span class="entry_type_hwlevel">[full] </span>
20178 <div class="entry_type_notes">Range of supported sensitivities</div>
20181 </td> <!-- entry_type -->
20183 <td class="entry_description">
20184 <p>Range of sensitivities for <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> supported by this
20185 camera device.<wbr/></p>
20188 <td class="entry_units">
20191 <td class="entry_range">
20192 <p>Min <= 100,<wbr/> Max >= 800</p>
20195 <td class="entry_hal_version">
20199 <td class="entry_tags">
20200 <ul class="entry_tags">
20201 <li><a href="#tag_BC">BC</a></li>
20202 <li><a href="#tag_V1">V1</a></li>
20207 <tr class="entries_header">
20208 <th class="th_details" colspan="6">Details</th>
20210 <tr class="entry_cont">
20211 <td class="entry_details" colspan="6">
20212 <p>The values are the standard ISO sensitivity values,<wbr/>
20213 as defined in ISO 12232:2006.<wbr/></p>
20218 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20219 <!-- end of entry -->
20222 <tr class="entry" id="static_android.sensor.info.colorFilterArrangement">
20223 <td class="entry_name
20225 android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement
20227 <td class="entry_type">
20228 <span class="entry_type_name entry_type_name_enum">byte</span>
20230 <span class="entry_type_visibility"> [public]</span>
20233 <span class="entry_type_hwlevel">[full] </span>
20237 <ul class="entry_type_enum">
20239 <span class="entry_type_enum_name">RGGB (v3.2)</span>
20242 <span class="entry_type_enum_name">GRBG (v3.2)</span>
20245 <span class="entry_type_enum_name">GBRG (v3.2)</span>
20248 <span class="entry_type_enum_name">BGGR (v3.2)</span>
20251 <span class="entry_type_enum_name">RGB (v3.2)</span>
20252 <span class="entry_type_enum_notes"><p>Sensor is not Bayer; output has 3 16-bit
20253 values for each pixel,<wbr/> instead of just 1 16-bit value
20254 per pixel.<wbr/></p></span>
20258 </td> <!-- entry_type -->
20260 <td class="entry_description">
20261 <p>The arrangement of color filters on sensor;
20262 represents the colors in the top-left 2x2 section of
20263 the sensor,<wbr/> in reading order.<wbr/></p>
20266 <td class="entry_units">
20269 <td class="entry_range">
20272 <td class="entry_hal_version">
20276 <td class="entry_tags">
20277 <ul class="entry_tags">
20278 <li><a href="#tag_RAW">RAW</a></li>
20285 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20286 <!-- end of entry -->
20289 <tr class="entry" id="static_android.sensor.info.exposureTimeRange">
20290 <td class="entry_name
20292 android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range
20294 <td class="entry_type">
20295 <span class="entry_type_name">int64</span>
20296 <span class="entry_type_container">x</span>
20298 <span class="entry_type_array">
20301 <span class="entry_type_visibility"> [public as rangeLong]</span>
20304 <span class="entry_type_hwlevel">[full] </span>
20307 <div class="entry_type_notes">nanoseconds</div>
20310 </td> <!-- entry_type -->
20312 <td class="entry_description">
20313 <p>The range of image exposure times for <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> supported
20314 by this camera device.<wbr/></p>
20317 <td class="entry_units">
20321 <td class="entry_range">
20322 <p>The minimum exposure time will be less than 100 us.<wbr/> For FULL
20323 capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/>
20324 the maximum exposure time will be greater than 100ms.<wbr/></p>
20327 <td class="entry_hal_version">
20331 <td class="entry_tags">
20332 <ul class="entry_tags">
20333 <li><a href="#tag_V1">V1</a></li>
20339 <tr class="entries_header">
20340 <th class="th_details" colspan="6">HAL Implementation Details</th>
20342 <tr class="entry_cont">
20343 <td class="entry_details" colspan="6">
20344 <p>For FULL capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/>
20345 The maximum of the range SHOULD be at least 1 second (1e9),<wbr/> MUST be at least
20350 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20351 <!-- end of entry -->
20354 <tr class="entry" id="static_android.sensor.info.maxFrameDuration">
20355 <td class="entry_name
20357 android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration
20359 <td class="entry_type">
20360 <span class="entry_type_name">int64</span>
20362 <span class="entry_type_visibility"> [public]</span>
20365 <span class="entry_type_hwlevel">[full] </span>
20370 </td> <!-- entry_type -->
20372 <td class="entry_description">
20373 <p>The maximum possible frame duration (minimum frame rate) for
20374 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> that is supported this camera device.<wbr/></p>
20377 <td class="entry_units">
20381 <td class="entry_range">
20382 <p>For FULL capability devices
20383 (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/> at least 100ms.<wbr/></p>
20386 <td class="entry_hal_version">
20390 <td class="entry_tags">
20391 <ul class="entry_tags">
20392 <li><a href="#tag_V1">V1</a></li>
20397 <tr class="entries_header">
20398 <th class="th_details" colspan="6">Details</th>
20400 <tr class="entry_cont">
20401 <td class="entry_details" colspan="6">
20402 <p>Attempting to use frame durations beyond the maximum will result in the frame
20403 duration being clipped to the maximum.<wbr/> See that control for a full definition of frame
20404 durations.<wbr/></p>
20405 <p>Refer to <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>
20406 for the minimum frame duration values.<wbr/></p>
20410 <tr class="entries_header">
20411 <th class="th_details" colspan="6">HAL Implementation Details</th>
20413 <tr class="entry_cont">
20414 <td class="entry_details" colspan="6">
20415 <p>For FULL capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/>
20416 The maximum of the range SHOULD be at least
20417 1 second (1e9),<wbr/> MUST be at least 100ms (100e6).<wbr/></p>
20418 <p><a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a> must be greater or
20419 equal to the <a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a> max
20420 value (since exposure time overrides frame duration).<wbr/></p>
20421 <p>Available minimum frame durations for JPEG must be no greater
20422 than that of the YUV_<wbr/>420_<wbr/>888/<wbr/>IMPLEMENTATION_<wbr/>DEFINED
20423 minimum frame durations (for that respective size).<wbr/></p>
20424 <p>Since JPEG processing is considered offline and can take longer than
20425 a single uncompressed capture,<wbr/> refer to
20426 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>
20427 for details about encoding this scenario.<wbr/></p>
20431 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20432 <!-- end of entry -->
20435 <tr class="entry" id="static_android.sensor.info.physicalSize">
20436 <td class="entry_name
20438 android.<wbr/>sensor.<wbr/>info.<wbr/>physical<wbr/>Size
20440 <td class="entry_type">
20441 <span class="entry_type_name">float</span>
20442 <span class="entry_type_container">x</span>
20444 <span class="entry_type_array">
20447 <span class="entry_type_visibility"> [public as sizeF]</span>
20450 <span class="entry_type_hwlevel">[legacy] </span>
20453 <div class="entry_type_notes">width x height</div>
20456 </td> <!-- entry_type -->
20458 <td class="entry_description">
20459 <p>The physical dimensions of the full pixel
20463 <td class="entry_units">
20467 <td class="entry_range">
20470 <td class="entry_hal_version">
20474 <td class="entry_tags">
20475 <ul class="entry_tags">
20476 <li><a href="#tag_V1">V1</a></li>
20477 <li><a href="#tag_BC">BC</a></li>
20482 <tr class="entries_header">
20483 <th class="th_details" colspan="6">Details</th>
20485 <tr class="entry_cont">
20486 <td class="entry_details" colspan="6">
20487 <p>This is the physical size of the sensor pixel
20488 array defined by <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
20492 <tr class="entries_header">
20493 <th class="th_details" colspan="6">HAL Implementation Details</th>
20495 <tr class="entry_cont">
20496 <td class="entry_details" colspan="6">
20497 <p>Needed for FOV calculation for old API</p>
20501 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20502 <!-- end of entry -->
20505 <tr class="entry" id="static_android.sensor.info.pixelArraySize">
20506 <td class="entry_name
20508 android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size
20510 <td class="entry_type">
20511 <span class="entry_type_name">int32</span>
20512 <span class="entry_type_container">x</span>
20514 <span class="entry_type_array">
20517 <span class="entry_type_visibility"> [public as size]</span>
20520 <span class="entry_type_hwlevel">[legacy] </span>
20525 </td> <!-- entry_type -->
20527 <td class="entry_description">
20528 <p>Dimensions of the full pixel array,<wbr/> possibly
20529 including black calibration pixels.<wbr/></p>
20532 <td class="entry_units">
20536 <td class="entry_range">
20539 <td class="entry_hal_version">
20543 <td class="entry_tags">
20544 <ul class="entry_tags">
20545 <li><a href="#tag_RAW">RAW</a></li>
20546 <li><a href="#tag_BC">BC</a></li>
20551 <tr class="entries_header">
20552 <th class="th_details" colspan="6">Details</th>
20554 <tr class="entry_cont">
20555 <td class="entry_details" colspan="6">
20556 <p>The pixel count of the full pixel array of the image sensor,<wbr/> which covers
20557 <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
20558 the raw buffers produced by this sensor.<wbr/></p>
20559 <p>If a camera device supports raw sensor formats,<wbr/> either this or
20560 <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
20561 output formats listed in <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html">StreamConfigurationMap</a>
20562 (this depends on whether or not the image sensor returns buffers containing pixels that
20563 are not part of the active array region for blacklevel calibration or other purposes).<wbr/></p>
20564 <p>Some parts of the full pixel array may not receive light from the scene,<wbr/>
20565 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
20566 defines the rectangle of active pixels that will be included in processed image
20572 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20573 <!-- end of entry -->
20576 <tr class="entry" id="static_android.sensor.info.whiteLevel">
20577 <td class="entry_name
20579 android.<wbr/>sensor.<wbr/>info.<wbr/>white<wbr/>Level
20581 <td class="entry_type">
20582 <span class="entry_type_name">int32</span>
20584 <span class="entry_type_visibility"> [public]</span>
20591 </td> <!-- entry_type -->
20593 <td class="entry_description">
20594 <p>Maximum raw value output by sensor.<wbr/></p>
20597 <td class="entry_units">
20600 <td class="entry_range">
20601 <p>> 255 (8-bit output)</p>
20604 <td class="entry_hal_version">
20608 <td class="entry_tags">
20609 <ul class="entry_tags">
20610 <li><a href="#tag_RAW">RAW</a></li>
20615 <tr class="entries_header">
20616 <th class="th_details" colspan="6">Details</th>
20618 <tr class="entry_cont">
20619 <td class="entry_details" colspan="6">
20620 <p>This specifies the fully-saturated encoding level for the raw
20621 sample values from the sensor.<wbr/> This is typically caused by the
20622 sensor becoming highly non-linear or clipping.<wbr/> The minimum for
20623 each channel is specified by the offset in the
20624 <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> key.<wbr/></p>
20625 <p>The white level is typically determined either by sensor bit depth
20626 (8-14 bits is expected),<wbr/> or by the point where the sensor response
20627 becomes too non-linear to be useful.<wbr/> The default value for this is
20628 maximum representable value for a 16-bit raw sample (2^16 - 1).<wbr/></p>
20629 <p>The white level values of captured images may vary for different
20630 capture settings (e.<wbr/>g.,<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>).<wbr/> This key
20631 represents a coarse approximation for such case.<wbr/> It is recommended
20632 to use <a href="#dynamic_android.sensor.dynamicWhiteLevel">android.<wbr/>sensor.<wbr/>dynamic<wbr/>White<wbr/>Level</a> for captures when supported
20633 by the camera device,<wbr/> which provides more accurate white level values.<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>The full bit depth of the sensor must be available in the raw data,<wbr/>
20643 so the value for linear sensors should not be significantly lower
20644 than maximum raw value supported,<wbr/> i.<wbr/>e.<wbr/> 2^(sensor bits per pixel).<wbr/></p>
20648 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20649 <!-- end of entry -->
20652 <tr class="entry" id="static_android.sensor.info.timestampSource">
20653 <td class="entry_name
20655 android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source
20657 <td class="entry_type">
20658 <span class="entry_type_name entry_type_name_enum">byte</span>
20660 <span class="entry_type_visibility"> [public]</span>
20663 <span class="entry_type_hwlevel">[legacy] </span>
20667 <ul class="entry_type_enum">
20669 <span class="entry_type_enum_name">UNKNOWN (v3.2)</span>
20670 <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/>
20671 but can not be compared to timestamps from other subsystems
20672 (e.<wbr/>g.<wbr/> accelerometer,<wbr/> gyro etc.<wbr/>),<wbr/> or other instances of the same or different
20673 camera devices in the same system.<wbr/> Timestamps between streams and results for
20674 a single camera instance are comparable,<wbr/> and the timestamps for all buffers
20675 and the result metadata generated by a single capture are identical.<wbr/></p></span>
20678 <span class="entry_type_enum_name">REALTIME (v3.2)</span>
20679 <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
20680 <a href="https://developer.android.com/reference/android/os/SystemClock.html#elapsedRealtimeNanos">SystemClock#elapsedRealtimeNanos</a>,<wbr/>
20681 and they can be compared to other timestamps using that base.<wbr/></p></span>
20685 </td> <!-- entry_type -->
20687 <td class="entry_description">
20688 <p>The time base source for sensor capture start timestamps.<wbr/></p>
20691 <td class="entry_units">
20694 <td class="entry_range">
20697 <td class="entry_hal_version">
20701 <td class="entry_tags">
20702 <ul class="entry_tags">
20703 <li><a href="#tag_V1">V1</a></li>
20708 <tr class="entries_header">
20709 <th class="th_details" colspan="6">Details</th>
20711 <tr class="entry_cont">
20712 <td class="entry_details" colspan="6">
20713 <p>The timestamps provided for captures are always in nanoseconds and monotonic,<wbr/> but
20714 may not based on a time source that can be compared to other system time sources.<wbr/></p>
20715 <p>This characteristic defines the source for the timestamps,<wbr/> and therefore whether they
20716 can be compared against other system time sources/<wbr/>timestamps.<wbr/></p>
20720 <tr class="entries_header">
20721 <th class="th_details" colspan="6">HAL Implementation Details</th>
20723 <tr class="entry_cont">
20724 <td class="entry_details" colspan="6">
20725 <p>For camera devices implement UNKNOWN,<wbr/> the camera framework expects that the timestamp
20726 source to be SYSTEM_<wbr/>TIME_<wbr/>MONOTONIC.<wbr/> For camera devices implement REALTIME,<wbr/> the camera
20727 framework expects that the timestamp source to be SYSTEM_<wbr/>TIME_<wbr/>BOOTTIME.<wbr/> See
20728 system/<wbr/>core/<wbr/>include/<wbr/>utils/<wbr/>Timers.<wbr/>h for the definition of SYSTEM_<wbr/>TIME_<wbr/>MONOTONIC and
20729 SYSTEM_<wbr/>TIME_<wbr/>BOOTTIME.<wbr/> Note that HAL must follow above expectation; otherwise video
20730 recording might suffer unexpected behavior.<wbr/></p>
20731 <p>Also,<wbr/> camera devices which implement REALTIME must pass the ITS sensor fusion test which
20732 tests the alignment between camera timestamps and gyro sensor timestamps.<wbr/></p>
20736 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20737 <!-- end of entry -->
20740 <tr class="entry" id="static_android.sensor.info.lensShadingApplied">
20741 <td class="entry_name
20743 android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied
20745 <td class="entry_type">
20746 <span class="entry_type_name entry_type_name_enum">byte</span>
20748 <span class="entry_type_visibility"> [public as boolean]</span>
20754 <ul class="entry_type_enum">
20756 <span class="entry_type_enum_name">FALSE (v3.2)</span>
20759 <span class="entry_type_enum_name">TRUE (v3.2)</span>
20763 </td> <!-- entry_type -->
20765 <td class="entry_description">
20766 <p>Whether the RAW images output from this camera device are subject to
20767 lens shading correction.<wbr/></p>
20770 <td class="entry_units">
20773 <td class="entry_range">
20776 <td class="entry_hal_version">
20780 <td class="entry_tags">
20784 <tr class="entries_header">
20785 <th class="th_details" colspan="6">Details</th>
20787 <tr class="entry_cont">
20788 <td class="entry_details" colspan="6">
20789 <p>If TRUE,<wbr/> all images produced by the camera device in the RAW image formats will
20790 have lens shading correction already applied to it.<wbr/> If FALSE,<wbr/> the images will
20791 not be adjusted for lens shading correction.<wbr/>
20792 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>
20793 <p>This key will be <code>null</code> for all devices do not report this information.<wbr/>
20794 Devices with RAW capability will always report this information in this key.<wbr/></p>
20799 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20800 <!-- end of entry -->
20803 <tr class="entry" id="static_android.sensor.info.preCorrectionActiveArraySize">
20804 <td class="entry_name
20806 android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size
20808 <td class="entry_type">
20809 <span class="entry_type_name">int32</span>
20810 <span class="entry_type_container">x</span>
20812 <span class="entry_type_array">
20815 <span class="entry_type_visibility"> [public as rectangle]</span>
20818 <span class="entry_type_hwlevel">[legacy] </span>
20821 <div class="entry_type_notes">Four ints defining the active pixel rectangle</div>
20824 </td> <!-- entry_type -->
20826 <td class="entry_description">
20827 <p>The area of the image sensor which corresponds to active pixels prior to the
20828 application of any geometric distortion correction.<wbr/></p>
20831 <td class="entry_units">
20832 Pixel coordinates on the image sensor
20835 <td class="entry_range">
20838 <td class="entry_hal_version">
20842 <td class="entry_tags">
20843 <ul class="entry_tags">
20844 <li><a href="#tag_RAW">RAW</a></li>
20849 <tr class="entries_header">
20850 <th class="th_details" colspan="6">Details</th>
20852 <tr class="entry_cont">
20853 <td class="entry_details" colspan="6">
20854 <p>This is the rectangle representing the size of the active region of the sensor (i.<wbr/>e.<wbr/>
20855 the region that actually receives light from the scene) before any geometric correction
20856 has been applied,<wbr/> and should be treated as the active region rectangle for any of the
20857 raw formats.<wbr/> All metadata associated with raw processing (e.<wbr/>g.<wbr/> the lens shading
20858 correction map,<wbr/> and radial distortion fields) treats the top,<wbr/> left of this rectangle as
20859 the origin,<wbr/> (0,<wbr/>0).<wbr/></p>
20860 <p>The size of this region determines the maximum field of view and the maximum number of
20861 pixels that an image from this sensor can contain,<wbr/> prior to the application of
20862 geometric distortion correction.<wbr/> The effective maximum pixel dimensions of a
20863 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>
20864 field,<wbr/> and the effective maximum field of view for a post-distortion-corrected image
20865 can be calculated by applying the geometric distortion correction fields to this
20866 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>
20867 <p>E.<wbr/>g.<wbr/> to calculate position of a pixel,<wbr/> (x,<wbr/>y),<wbr/> in a processed YUV output image with the
20868 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/>
20869 (x',<wbr/> y'),<wbr/> in the raw pixel array with dimensions give in
20870 <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>:</p>
20872 <li>Choose a pixel (x',<wbr/> y') within the active array region of the raw buffer given in
20873 <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
20874 to be outside of the FOV,<wbr/> and will not be shown in the processed output image.<wbr/></li>
20875 <li>Apply geometric distortion correction to get the post-distortion pixel coordinate,<wbr/>
20876 (x_<wbr/>i,<wbr/> y_<wbr/>i).<wbr/> When applying geometric correction metadata,<wbr/> note that metadata for raw
20877 buffers is defined relative to the top,<wbr/> left of the
20878 <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>
20879 <li>If the resulting corrected pixel coordinate is within the region given in
20880 <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
20881 processed output image buffer is <code>(x_<wbr/>i - activeArray.<wbr/>left,<wbr/> y_<wbr/>i - activeArray.<wbr/>top)</code>,<wbr/>
20882 when the top,<wbr/> left coordinate of that buffer is treated as (0,<wbr/> 0).<wbr/></li>
20884 <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>
20885 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/>
20886 <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
20887 correction doesn't change the pixel coordinate,<wbr/> the resulting pixel selected in
20888 pixel coordinates would be x,<wbr/>y = (25,<wbr/> 25) relative to the top,<wbr/>left of the raw buffer
20889 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)
20890 relative to the top,<wbr/>left of post-processed YUV output buffer with dimensions given in
20891 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
20892 <p>The currently supported fields that correct for geometric distortion are:</p>
20894 <li><a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a>.<wbr/></li>
20896 <p>If all of the geometric distortion fields are no-ops,<wbr/> this rectangle will be the same
20897 as the post-distortion-corrected rectangle given in
20898 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
20899 <p>This rectangle is defined relative to the full pixel array; (0,<wbr/>0) is the top-left of
20900 the full pixel array,<wbr/> and the size of the full pixel array is given by
20901 <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
20902 <p>The pre-correction active array may be smaller than the full pixel array,<wbr/> since the
20903 full array may include black calibration pixels or other inactive regions.<wbr/></p>
20907 <tr class="entries_header">
20908 <th class="th_details" colspan="6">HAL Implementation Details</th>
20910 <tr class="entry_cont">
20911 <td class="entry_details" colspan="6">
20912 <p>This array contains <code>(xmin,<wbr/> ymin,<wbr/> width,<wbr/> height)</code>.<wbr/> The <code>(xmin,<wbr/> ymin)</code> must be
20913 >= <code>(0,<wbr/>0)</code>.<wbr/>
20914 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>
20915 <p>If omitted by the HAL implementation,<wbr/> the camera framework will assume that this is
20916 the same as the post-correction active array region given in
20917 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
20921 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20922 <!-- end of entry -->
20928 <tr class="entry" id="static_android.sensor.referenceIlluminant1">
20929 <td class="entry_name
20931 android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1
20933 <td class="entry_type">
20934 <span class="entry_type_name entry_type_name_enum">byte</span>
20936 <span class="entry_type_visibility"> [public]</span>
20942 <ul class="entry_type_enum">
20944 <span class="entry_type_enum_name">DAYLIGHT (v3.2)</span>
20945 <span class="entry_type_enum_value">1</span>
20948 <span class="entry_type_enum_name">FLUORESCENT (v3.2)</span>
20949 <span class="entry_type_enum_value">2</span>
20952 <span class="entry_type_enum_name">TUNGSTEN (v3.2)</span>
20953 <span class="entry_type_enum_value">3</span>
20954 <span class="entry_type_enum_notes"><p>Incandescent light</p></span>
20957 <span class="entry_type_enum_name">FLASH (v3.2)</span>
20958 <span class="entry_type_enum_value">4</span>
20961 <span class="entry_type_enum_name">FINE_WEATHER (v3.2)</span>
20962 <span class="entry_type_enum_value">9</span>
20965 <span class="entry_type_enum_name">CLOUDY_WEATHER (v3.2)</span>
20966 <span class="entry_type_enum_value">10</span>
20969 <span class="entry_type_enum_name">SHADE (v3.2)</span>
20970 <span class="entry_type_enum_value">11</span>
20973 <span class="entry_type_enum_name">DAYLIGHT_FLUORESCENT (v3.2)</span>
20974 <span class="entry_type_enum_value">12</span>
20975 <span class="entry_type_enum_notes"><p>D 5700 - 7100K</p></span>
20978 <span class="entry_type_enum_name">DAY_WHITE_FLUORESCENT (v3.2)</span>
20979 <span class="entry_type_enum_value">13</span>
20980 <span class="entry_type_enum_notes"><p>N 4600 - 5400K</p></span>
20983 <span class="entry_type_enum_name">COOL_WHITE_FLUORESCENT (v3.2)</span>
20984 <span class="entry_type_enum_value">14</span>
20985 <span class="entry_type_enum_notes"><p>W 3900 - 4500K</p></span>
20988 <span class="entry_type_enum_name">WHITE_FLUORESCENT (v3.2)</span>
20989 <span class="entry_type_enum_value">15</span>
20990 <span class="entry_type_enum_notes"><p>WW 3200 - 3700K</p></span>
20993 <span class="entry_type_enum_name">STANDARD_A (v3.2)</span>
20994 <span class="entry_type_enum_value">17</span>
20997 <span class="entry_type_enum_name">STANDARD_B (v3.2)</span>
20998 <span class="entry_type_enum_value">18</span>
21001 <span class="entry_type_enum_name">STANDARD_C (v3.2)</span>
21002 <span class="entry_type_enum_value">19</span>
21005 <span class="entry_type_enum_name">D55 (v3.2)</span>
21006 <span class="entry_type_enum_value">20</span>
21009 <span class="entry_type_enum_name">D65 (v3.2)</span>
21010 <span class="entry_type_enum_value">21</span>
21013 <span class="entry_type_enum_name">D75 (v3.2)</span>
21014 <span class="entry_type_enum_value">22</span>
21017 <span class="entry_type_enum_name">D50 (v3.2)</span>
21018 <span class="entry_type_enum_value">23</span>
21021 <span class="entry_type_enum_name">ISO_STUDIO_TUNGSTEN (v3.2)</span>
21022 <span class="entry_type_enum_value">24</span>
21026 </td> <!-- entry_type -->
21028 <td class="entry_description">
21029 <p>The standard reference illuminant used as the scene light source when
21030 calculating the <a href="#static_android.sensor.colorTransform1">android.<wbr/>sensor.<wbr/>color<wbr/>Transform1</a>,<wbr/>
21031 <a href="#static_android.sensor.calibrationTransform1">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1</a>,<wbr/> and
21032 <a href="#static_android.sensor.forwardMatrix1">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1</a> matrices.<wbr/></p>
21035 <td class="entry_units">
21038 <td class="entry_range">
21041 <td class="entry_hal_version">
21045 <td class="entry_tags">
21046 <ul class="entry_tags">
21047 <li><a href="#tag_RAW">RAW</a></li>
21052 <tr class="entries_header">
21053 <th class="th_details" colspan="6">Details</th>
21055 <tr class="entry_cont">
21056 <td class="entry_details" colspan="6">
21057 <p>The values in this key correspond to the values defined for the
21058 EXIF LightSource tag.<wbr/> These illuminants are standard light sources
21059 that are often used calibrating camera devices.<wbr/></p>
21060 <p>If this key is present,<wbr/> then <a href="#static_android.sensor.colorTransform1">android.<wbr/>sensor.<wbr/>color<wbr/>Transform1</a>,<wbr/>
21061 <a href="#static_android.sensor.calibrationTransform1">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1</a>,<wbr/> and
21062 <a href="#static_android.sensor.forwardMatrix1">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1</a> will also be present.<wbr/></p>
21063 <p>Some devices may choose to provide a second set of calibration
21064 information for improved quality,<wbr/> including
21065 <a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> and its corresponding matrices.<wbr/></p>
21069 <tr class="entries_header">
21070 <th class="th_details" colspan="6">HAL Implementation Details</th>
21072 <tr class="entry_cont">
21073 <td class="entry_details" colspan="6">
21074 <p>The first reference illuminant (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>)
21075 and corresponding matrices must be present to support the RAW capability
21076 and DNG output.<wbr/></p>
21077 <p>When producing raw images with a color profile that has only been
21078 calibrated against a single light source,<wbr/> it is valid to omit
21079 <a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> along with the
21080 <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/>
21081 and <a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> matrices.<wbr/></p>
21082 <p>If only <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> is included,<wbr/> it should be
21083 chosen so that it is representative of typical scene lighting.<wbr/> In
21084 general,<wbr/> D50 or DAYLIGHT will be chosen for this case.<wbr/></p>
21085 <p>If both <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> and
21086 <a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> are included,<wbr/> they should be
21087 chosen to represent the typical range of scene lighting conditions.<wbr/>
21088 In general,<wbr/> low color temperature illuminant such as Standard-A will
21089 be chosen for the first reference illuminant and a higher color
21090 temperature illuminant such as D65 will be chosen for the second
21091 reference illuminant.<wbr/></p>
21095 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21096 <!-- end of entry -->
21099 <tr class="entry" id="static_android.sensor.referenceIlluminant2">
21100 <td class="entry_name
21102 android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2
21104 <td class="entry_type">
21105 <span class="entry_type_name">byte</span>
21107 <span class="entry_type_visibility"> [public]</span>
21114 </td> <!-- entry_type -->
21116 <td class="entry_description">
21117 <p>The standard reference illuminant used as the scene light source when
21118 calculating the <a href="#static_android.sensor.colorTransform2">android.<wbr/>sensor.<wbr/>color<wbr/>Transform2</a>,<wbr/>
21119 <a href="#static_android.sensor.calibrationTransform2">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2</a>,<wbr/> and
21120 <a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> matrices.<wbr/></p>
21123 <td class="entry_units">
21126 <td class="entry_range">
21127 <p>Any value listed in <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a></p>
21130 <td class="entry_hal_version">
21134 <td class="entry_tags">
21135 <ul class="entry_tags">
21136 <li><a href="#tag_RAW">RAW</a></li>
21141 <tr class="entries_header">
21142 <th class="th_details" colspan="6">Details</th>
21144 <tr class="entry_cont">
21145 <td class="entry_details" colspan="6">
21146 <p>See <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> for more details.<wbr/></p>
21147 <p>If this key is present,<wbr/> then <a href="#static_android.sensor.colorTransform2">android.<wbr/>sensor.<wbr/>color<wbr/>Transform2</a>,<wbr/>
21148 <a href="#static_android.sensor.calibrationTransform2">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2</a>,<wbr/> and
21149 <a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> will also be present.<wbr/></p>
21154 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21155 <!-- end of entry -->
21158 <tr class="entry" id="static_android.sensor.calibrationTransform1">
21159 <td class="entry_name
21161 android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1
21163 <td class="entry_type">
21164 <span class="entry_type_name">rational</span>
21165 <span class="entry_type_container">x</span>
21167 <span class="entry_type_array">
21170 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
21175 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
21178 </td> <!-- entry_type -->
21180 <td class="entry_description">
21181 <p>A per-device calibration transform matrix that maps from the
21182 reference sensor colorspace to the actual device sensor colorspace.<wbr/></p>
21185 <td class="entry_units">
21188 <td class="entry_range">
21191 <td class="entry_hal_version">
21195 <td class="entry_tags">
21196 <ul class="entry_tags">
21197 <li><a href="#tag_RAW">RAW</a></li>
21202 <tr class="entries_header">
21203 <th class="th_details" colspan="6">Details</th>
21205 <tr class="entry_cont">
21206 <td class="entry_details" colspan="6">
21207 <p>This matrix is used to correct for per-device variations in the
21208 sensor colorspace,<wbr/> and is used for processing raw buffer data.<wbr/></p>
21209 <p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
21210 contains a per-device calibration transform that maps colors
21211 from reference sensor color space (i.<wbr/>e.<wbr/> the "golden module"
21212 colorspace) into this camera device's native sensor color
21213 space under the first reference illuminant
21214 (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>).<wbr/></p>
21219 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21220 <!-- end of entry -->
21223 <tr class="entry" id="static_android.sensor.calibrationTransform2">
21224 <td class="entry_name
21226 android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2
21228 <td class="entry_type">
21229 <span class="entry_type_name">rational</span>
21230 <span class="entry_type_container">x</span>
21232 <span class="entry_type_array">
21235 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
21240 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
21243 </td> <!-- entry_type -->
21245 <td class="entry_description">
21246 <p>A per-device calibration transform matrix that maps from the
21247 reference sensor colorspace to the actual device sensor colorspace
21248 (this is the colorspace of the raw buffer data).<wbr/></p>
21251 <td class="entry_units">
21254 <td class="entry_range">
21257 <td class="entry_hal_version">
21261 <td class="entry_tags">
21262 <ul class="entry_tags">
21263 <li><a href="#tag_RAW">RAW</a></li>
21268 <tr class="entries_header">
21269 <th class="th_details" colspan="6">Details</th>
21271 <tr class="entry_cont">
21272 <td class="entry_details" colspan="6">
21273 <p>This matrix is used to correct for per-device variations in the
21274 sensor colorspace,<wbr/> and is used for processing raw buffer data.<wbr/></p>
21275 <p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
21276 contains a per-device calibration transform that maps colors
21277 from reference sensor color space (i.<wbr/>e.<wbr/> the "golden module"
21278 colorspace) into this camera device's native sensor color
21279 space under the second reference illuminant
21280 (<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>).<wbr/></p>
21281 <p>This matrix will only be present if the second reference
21282 illuminant is present.<wbr/></p>
21287 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21288 <!-- end of entry -->
21291 <tr class="entry" id="static_android.sensor.colorTransform1">
21292 <td class="entry_name
21294 android.<wbr/>sensor.<wbr/>color<wbr/>Transform1
21296 <td class="entry_type">
21297 <span class="entry_type_name">rational</span>
21298 <span class="entry_type_container">x</span>
21300 <span class="entry_type_array">
21303 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
21308 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
21311 </td> <!-- entry_type -->
21313 <td class="entry_description">
21314 <p>A matrix that transforms color values from CIE XYZ color space to
21315 reference sensor color space.<wbr/></p>
21318 <td class="entry_units">
21321 <td class="entry_range">
21324 <td class="entry_hal_version">
21328 <td class="entry_tags">
21329 <ul class="entry_tags">
21330 <li><a href="#tag_RAW">RAW</a></li>
21335 <tr class="entries_header">
21336 <th class="th_details" colspan="6">Details</th>
21338 <tr class="entry_cont">
21339 <td class="entry_details" colspan="6">
21340 <p>This matrix is used to convert from the standard CIE XYZ color
21341 space to the reference sensor colorspace,<wbr/> and is used when processing
21342 raw buffer data.<wbr/></p>
21343 <p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
21344 contains a color transform matrix that maps colors from the CIE
21345 XYZ color space to the reference sensor color space (i.<wbr/>e.<wbr/> the
21346 "golden module" colorspace) under the first reference illuminant
21347 (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>).<wbr/></p>
21348 <p>The white points chosen in both the reference sensor color space
21349 and the CIE XYZ colorspace when calculating this transform will
21350 match the standard white point for the first reference illuminant
21351 (i.<wbr/>e.<wbr/> no chromatic adaptation will be applied by this transform).<wbr/></p>
21356 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21357 <!-- end of entry -->
21360 <tr class="entry" id="static_android.sensor.colorTransform2">
21361 <td class="entry_name
21363 android.<wbr/>sensor.<wbr/>color<wbr/>Transform2
21365 <td class="entry_type">
21366 <span class="entry_type_name">rational</span>
21367 <span class="entry_type_container">x</span>
21369 <span class="entry_type_array">
21372 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
21377 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
21380 </td> <!-- entry_type -->
21382 <td class="entry_description">
21383 <p>A matrix that transforms color values from CIE XYZ color space to
21384 reference sensor color space.<wbr/></p>
21387 <td class="entry_units">
21390 <td class="entry_range">
21393 <td class="entry_hal_version">
21397 <td class="entry_tags">
21398 <ul class="entry_tags">
21399 <li><a href="#tag_RAW">RAW</a></li>
21404 <tr class="entries_header">
21405 <th class="th_details" colspan="6">Details</th>
21407 <tr class="entry_cont">
21408 <td class="entry_details" colspan="6">
21409 <p>This matrix is used to convert from the standard CIE XYZ color
21410 space to the reference sensor colorspace,<wbr/> and is used when processing
21411 raw buffer data.<wbr/></p>
21412 <p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
21413 contains a color transform matrix that maps colors from the CIE
21414 XYZ color space to the reference sensor color space (i.<wbr/>e.<wbr/> the
21415 "golden module" colorspace) under the second reference illuminant
21416 (<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>).<wbr/></p>
21417 <p>The white points chosen in both the reference sensor color space
21418 and the CIE XYZ colorspace when calculating this transform will
21419 match the standard white point for the second reference illuminant
21420 (i.<wbr/>e.<wbr/> no chromatic adaptation will be applied by this transform).<wbr/></p>
21421 <p>This matrix will only be present if the second reference
21422 illuminant is present.<wbr/></p>
21427 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21428 <!-- end of entry -->
21431 <tr class="entry" id="static_android.sensor.forwardMatrix1">
21432 <td class="entry_name
21434 android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1
21436 <td class="entry_type">
21437 <span class="entry_type_name">rational</span>
21438 <span class="entry_type_container">x</span>
21440 <span class="entry_type_array">
21443 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
21448 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
21451 </td> <!-- entry_type -->
21453 <td class="entry_description">
21454 <p>A matrix that transforms white balanced camera colors from the reference
21455 sensor colorspace to the CIE XYZ colorspace with a D50 whitepoint.<wbr/></p>
21458 <td class="entry_units">
21461 <td class="entry_range">
21464 <td class="entry_hal_version">
21468 <td class="entry_tags">
21469 <ul class="entry_tags">
21470 <li><a href="#tag_RAW">RAW</a></li>
21475 <tr class="entries_header">
21476 <th class="th_details" colspan="6">Details</th>
21478 <tr class="entry_cont">
21479 <td class="entry_details" colspan="6">
21480 <p>This matrix is used to convert to the standard CIE XYZ colorspace,<wbr/> and
21481 is used when processing raw buffer data.<wbr/></p>
21482 <p>This matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and contains
21483 a color transform matrix that maps white balanced colors from the
21484 reference sensor color space to the CIE XYZ color space with a D50 white
21486 <p>Under the first reference illuminant (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>)
21487 this matrix is chosen so that the standard white point for this reference
21488 illuminant in the reference sensor colorspace is mapped to D50 in the
21489 CIE XYZ colorspace.<wbr/></p>
21494 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21495 <!-- end of entry -->
21498 <tr class="entry" id="static_android.sensor.forwardMatrix2">
21499 <td class="entry_name
21501 android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2
21503 <td class="entry_type">
21504 <span class="entry_type_name">rational</span>
21505 <span class="entry_type_container">x</span>
21507 <span class="entry_type_array">
21510 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
21515 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
21518 </td> <!-- entry_type -->
21520 <td class="entry_description">
21521 <p>A matrix that transforms white balanced camera colors from the reference
21522 sensor colorspace to the CIE XYZ colorspace with a D50 whitepoint.<wbr/></p>
21525 <td class="entry_units">
21528 <td class="entry_range">
21531 <td class="entry_hal_version">
21535 <td class="entry_tags">
21536 <ul class="entry_tags">
21537 <li><a href="#tag_RAW">RAW</a></li>
21542 <tr class="entries_header">
21543 <th class="th_details" colspan="6">Details</th>
21545 <tr class="entry_cont">
21546 <td class="entry_details" colspan="6">
21547 <p>This matrix is used to convert to the standard CIE XYZ colorspace,<wbr/> and
21548 is used when processing raw buffer data.<wbr/></p>
21549 <p>This matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and contains
21550 a color transform matrix that maps white balanced colors from the
21551 reference sensor color space to the CIE XYZ color space with a D50 white
21553 <p>Under the second reference illuminant (<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>)
21554 this matrix is chosen so that the standard white point for this reference
21555 illuminant in the reference sensor colorspace is mapped to D50 in the
21556 CIE XYZ colorspace.<wbr/></p>
21557 <p>This matrix will only be present if the second reference
21558 illuminant is present.<wbr/></p>
21563 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21564 <!-- end of entry -->
21567 <tr class="entry" id="static_android.sensor.baseGainFactor">
21568 <td class="entry_name
21570 android.<wbr/>sensor.<wbr/>base<wbr/>Gain<wbr/>Factor
21572 <td class="entry_type">
21573 <span class="entry_type_name">rational</span>
21575 <span class="entry_type_visibility"> [system]</span>
21582 </td> <!-- entry_type -->
21584 <td class="entry_description">
21585 <p>Gain factor from electrons to raw units when
21589 <td class="entry_units">
21592 <td class="entry_range">
21595 <td class="entry_hal_version">
21599 <td class="entry_tags">
21600 <ul class="entry_tags">
21601 <li><a href="#tag_FUTURE">FUTURE</a></li>
21608 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21609 <!-- end of entry -->
21612 <tr class="entry" id="static_android.sensor.blackLevelPattern">
21613 <td class="entry_name
21615 android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern
21617 <td class="entry_type">
21618 <span class="entry_type_name">int32</span>
21619 <span class="entry_type_container">x</span>
21621 <span class="entry_type_array">
21624 <span class="entry_type_visibility"> [public as blackLevelPattern]</span>
21629 <div class="entry_type_notes">2x2 raw count block</div>
21632 </td> <!-- entry_type -->
21634 <td class="entry_description">
21635 <p>A fixed black level offset for each of the color filter arrangement
21636 (CFA) mosaic channels.<wbr/></p>
21639 <td class="entry_units">
21642 <td class="entry_range">
21643 <p>>= 0 for each.<wbr/></p>
21646 <td class="entry_hal_version">
21650 <td class="entry_tags">
21651 <ul class="entry_tags">
21652 <li><a href="#tag_RAW">RAW</a></li>
21657 <tr class="entries_header">
21658 <th class="th_details" colspan="6">Details</th>
21660 <tr class="entry_cont">
21661 <td class="entry_details" colspan="6">
21662 <p>This key specifies the zero light value for each of the CFA mosaic
21663 channels in the camera sensor.<wbr/> The maximal value output by the
21664 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>
21665 <p>The values are given in the same order as channels listed for the CFA
21666 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
21667 nth value given corresponds to the black level offset for the nth
21668 color channel listed in the CFA.<wbr/></p>
21669 <p>The black level values of captured images may vary for different
21670 capture settings (e.<wbr/>g.,<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>).<wbr/> This key
21671 represents a coarse approximation for such case.<wbr/> It is recommended to
21672 use <a href="#dynamic_android.sensor.dynamicBlackLevel">android.<wbr/>sensor.<wbr/>dynamic<wbr/>Black<wbr/>Level</a> or use pixels from
21673 <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a> directly for captures when
21674 supported by the camera device,<wbr/> which provides more accurate black
21675 level values.<wbr/> For raw capture in particular,<wbr/> it is recommended to use
21676 pixels from <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a> to calculate black
21677 level values for each frame.<wbr/></p>
21681 <tr class="entries_header">
21682 <th class="th_details" colspan="6">HAL Implementation Details</th>
21684 <tr class="entry_cont">
21685 <td class="entry_details" colspan="6">
21686 <p>The values are given in row-column scan order,<wbr/> with the first value
21687 corresponding to the element of the CFA in row=0,<wbr/> column=0.<wbr/></p>
21691 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21692 <!-- end of entry -->
21695 <tr class="entry" id="static_android.sensor.maxAnalogSensitivity">
21696 <td class="entry_name
21698 android.<wbr/>sensor.<wbr/>max<wbr/>Analog<wbr/>Sensitivity
21700 <td class="entry_type">
21701 <span class="entry_type_name">int32</span>
21703 <span class="entry_type_visibility"> [public]</span>
21706 <span class="entry_type_hwlevel">[full] </span>
21711 </td> <!-- entry_type -->
21713 <td class="entry_description">
21714 <p>Maximum sensitivity that is implemented
21715 purely through analog gain.<wbr/></p>
21718 <td class="entry_units">
21721 <td class="entry_range">
21724 <td class="entry_hal_version">
21728 <td class="entry_tags">
21729 <ul class="entry_tags">
21730 <li><a href="#tag_V1">V1</a></li>
21731 <li><a href="#tag_FULL">FULL</a></li>
21736 <tr class="entries_header">
21737 <th class="th_details" colspan="6">Details</th>
21739 <tr class="entry_cont">
21740 <td class="entry_details" colspan="6">
21741 <p>For <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> values less than or
21742 equal to this,<wbr/> all applied gain must be analog.<wbr/> For
21743 values above this,<wbr/> the gain applied can be a mix of analog and
21749 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21750 <!-- end of entry -->
21753 <tr class="entry" id="static_android.sensor.orientation">
21754 <td class="entry_name
21756 android.<wbr/>sensor.<wbr/>orientation
21758 <td class="entry_type">
21759 <span class="entry_type_name">int32</span>
21761 <span class="entry_type_visibility"> [public]</span>
21764 <span class="entry_type_hwlevel">[legacy] </span>
21769 </td> <!-- entry_type -->
21771 <td class="entry_description">
21772 <p>Clockwise angle through which the output image needs to be rotated to be
21773 upright on the device screen in its native orientation.<wbr/></p>
21776 <td class="entry_units">
21777 Degrees of clockwise rotation; always a multiple of
21781 <td class="entry_range">
21782 <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p>
21785 <td class="entry_hal_version">
21789 <td class="entry_tags">
21790 <ul class="entry_tags">
21791 <li><a href="#tag_BC">BC</a></li>
21796 <tr class="entries_header">
21797 <th class="th_details" colspan="6">Details</th>
21799 <tr class="entry_cont">
21800 <td class="entry_details" colspan="6">
21801 <p>Also defines the direction of rolling shutter readout,<wbr/> which is from top to bottom in
21802 the sensor's coordinate system.<wbr/></p>
21807 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21808 <!-- end of entry -->
21811 <tr class="entry" id="static_android.sensor.profileHueSatMapDimensions">
21812 <td class="entry_name
21814 android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map<wbr/>Dimensions
21816 <td class="entry_type">
21817 <span class="entry_type_name">int32</span>
21818 <span class="entry_type_container">x</span>
21820 <span class="entry_type_array">
21823 <span class="entry_type_visibility"> [system]</span>
21828 <div class="entry_type_notes">Number of samples for hue,<wbr/> saturation,<wbr/> and value</div>
21831 </td> <!-- entry_type -->
21833 <td class="entry_description">
21834 <p>The number of input samples for each dimension of
21835 <a href="#dynamic_android.sensor.profileHueSatMap">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map</a>.<wbr/></p>
21838 <td class="entry_units">
21841 <td class="entry_range">
21842 <p>Hue >= 1,<wbr/>
21843 Saturation >= 2,<wbr/>
21847 <td class="entry_hal_version">
21851 <td class="entry_tags">
21852 <ul class="entry_tags">
21853 <li><a href="#tag_RAW">RAW</a></li>
21858 <tr class="entries_header">
21859 <th class="th_details" colspan="6">Details</th>
21861 <tr class="entry_cont">
21862 <td class="entry_details" colspan="6">
21863 <p>The number of input samples for the hue,<wbr/> saturation,<wbr/> and value
21864 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
21865 dimensions given is hue,<wbr/> saturation,<wbr/> value; where hue is the 0th
21871 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21872 <!-- end of entry -->
21875 <tr class="entry" id="static_android.sensor.availableTestPatternModes">
21876 <td class="entry_name
21878 android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes
21880 <td class="entry_type">
21881 <span class="entry_type_name">int32</span>
21882 <span class="entry_type_container">x</span>
21884 <span class="entry_type_array">
21887 <span class="entry_type_visibility"> [public]</span>
21892 <div class="entry_type_notes">list of enums</div>
21895 </td> <!-- entry_type -->
21897 <td class="entry_description">
21898 <p>List of sensor test pattern modes for <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a>
21899 supported by this camera device.<wbr/></p>
21902 <td class="entry_units">
21905 <td class="entry_range">
21906 <p>Any value listed in <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a></p>
21909 <td class="entry_hal_version">
21913 <td class="entry_tags">
21917 <tr class="entries_header">
21918 <th class="th_details" colspan="6">Details</th>
21920 <tr class="entry_cont">
21921 <td class="entry_details" colspan="6">
21922 <p>Defaults to OFF,<wbr/> and always includes OFF if defined.<wbr/></p>
21926 <tr class="entries_header">
21927 <th class="th_details" colspan="6">HAL Implementation Details</th>
21929 <tr class="entry_cont">
21930 <td class="entry_details" colspan="6">
21931 <p>All custom modes must be >= CUSTOM1.<wbr/></p>
21935 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21936 <!-- end of entry -->
21939 <tr class="entry" id="static_android.sensor.opticalBlackRegions">
21940 <td class="entry_name
21942 android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions
21944 <td class="entry_type">
21945 <span class="entry_type_name">int32</span>
21946 <span class="entry_type_container">x</span>
21948 <span class="entry_type_array">
21951 <span class="entry_type_visibility"> [public as rectangle]</span>
21958 </td> <!-- entry_type -->
21960 <td class="entry_description">
21961 <p>List of disjoint rectangles indicating the sensor
21962 optically shielded black pixel regions.<wbr/></p>
21965 <td class="entry_units">
21968 <td class="entry_range">
21971 <td class="entry_hal_version">
21975 <td class="entry_tags">
21979 <tr class="entries_header">
21980 <th class="th_details" colspan="6">Details</th>
21982 <tr class="entry_cont">
21983 <td class="entry_details" colspan="6">
21984 <p>In most camera sensors,<wbr/> the active array is surrounded by some
21985 optically shielded pixel areas.<wbr/> By blocking light,<wbr/> these pixels
21986 provides a reliable black reference for black level compensation
21987 in active array region.<wbr/></p>
21988 <p>This key provides a list of disjoint rectangles specifying the
21989 regions of optically shielded (with metal shield) black pixel
21990 regions if the camera device is capable of reading out these black
21991 pixels in the output raw images.<wbr/> In comparison to the fixed black
21992 level values reported by <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a>,<wbr/> this key
21993 may provide a more accurate way for the application to calculate
21994 black level of each captured raw images.<wbr/></p>
21995 <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
21996 <a href="#dynamic_android.sensor.dynamicWhiteLevel">android.<wbr/>sensor.<wbr/>dynamic<wbr/>White<wbr/>Level</a> will also be reported.<wbr/></p>
22000 <tr class="entries_header">
22001 <th class="th_details" colspan="6">HAL Implementation Details</th>
22003 <tr class="entry_cont">
22004 <td class="entry_details" colspan="6">
22005 <p>This array contains (xmin,<wbr/> ymin,<wbr/> width,<wbr/> height).<wbr/> The (xmin,<wbr/> ymin)
22006 must be >= (0,<wbr/>0) and <=
22007 <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
22008 <= <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/> Each region must be
22009 outside the region reported by
22010 <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>
22011 <p>The HAL must report minimal number of disjoint regions for the
22012 optically shielded back pixel regions.<wbr/> For example,<wbr/> if a region can
22013 be covered by one rectangle,<wbr/> the HAL must not split this region into
22014 multiple rectangles.<wbr/></p>
22018 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22019 <!-- end of entry -->
22022 <tr class="entry" id="static_android.sensor.opaqueRawSize">
22023 <td class="entry_name
22025 android.<wbr/>sensor.<wbr/>opaque<wbr/>Raw<wbr/>Size
22027 <td class="entry_type">
22028 <span class="entry_type_name">int32</span>
22029 <span class="entry_type_container">x</span>
22031 <span class="entry_type_array">
22034 <span class="entry_type_visibility"> [system]</span>
22041 </td> <!-- entry_type -->
22043 <td class="entry_description">
22044 <p>Size in bytes for all the listed opaque RAW buffer sizes</p>
22047 <td class="entry_units">
22050 <td class="entry_range">
22051 <p>Must be large enough to fit the opaque RAW of corresponding size produced by
22055 <td class="entry_hal_version">
22059 <td class="entry_tags">
22063 <tr class="entries_header">
22064 <th class="th_details" colspan="6">Details</th>
22066 <tr class="entry_cont">
22067 <td class="entry_details" colspan="6">
22068 <p>This configurations are listed as <code>(width,<wbr/> height,<wbr/> size_<wbr/>in_<wbr/>bytes)</code> tuples.<wbr/>
22069 This is used for sizing the gralloc buffers for opaque RAW buffers.<wbr/>
22070 All RAW_<wbr/>OPAQUE output stream configuration listed in
22071 <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> will have a corresponding tuple in
22072 this key.<wbr/></p>
22076 <tr class="entries_header">
22077 <th class="th_details" colspan="6">HAL Implementation Details</th>
22079 <tr class="entry_cont">
22080 <td class="entry_details" colspan="6">
22081 <p>This key is added in legacy HAL3.<wbr/>4.<wbr/></p>
22082 <p>For legacy HAL3.<wbr/>4 or above: devices advertising RAW_<wbr/>OPAQUE format output must list this
22083 key.<wbr/> For legacy HAL3.<wbr/>3 or earlier devices: if RAW_<wbr/>OPAQUE ouput is advertised,<wbr/> camera
22084 framework will derive this key by assuming each pixel takes two bytes and no padding bytes
22085 between rows.<wbr/></p>
22089 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22090 <!-- end of entry -->
22094 <!-- end of kind -->
22096 <tr><td colspan="7" class="kind">dynamic</td></tr>
22098 <thead class="entries_header">
22100 <th class="th_name">Property Name</th>
22101 <th class="th_type">Type</th>
22102 <th class="th_description">Description</th>
22103 <th class="th_units">Units</th>
22104 <th class="th_range">Range</th>
22105 <th class="th_hal_version">Initial HIDL HAL version</th>
22106 <th class="th_tags">Tags</th>
22121 <tr class="entry" id="dynamic_android.sensor.exposureTime">
22122 <td class="entry_name
22124 android.<wbr/>sensor.<wbr/>exposure<wbr/>Time
22126 <td class="entry_type">
22127 <span class="entry_type_name">int64</span>
22129 <span class="entry_type_visibility"> [public]</span>
22132 <span class="entry_type_hwlevel">[full] </span>
22137 </td> <!-- entry_type -->
22139 <td class="entry_description">
22140 <p>Duration each pixel is exposed to
22144 <td class="entry_units">
22148 <td class="entry_range">
22149 <p><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></p>
22152 <td class="entry_hal_version">
22156 <td class="entry_tags">
22157 <ul class="entry_tags">
22158 <li><a href="#tag_V1">V1</a></li>
22163 <tr class="entries_header">
22164 <th class="th_details" colspan="6">Details</th>
22166 <tr class="entry_cont">
22167 <td class="entry_details" colspan="6">
22168 <p>If the sensor can't expose this exact duration,<wbr/> it will shorten the
22169 duration exposed to the nearest possible value (rather than expose longer).<wbr/>
22170 The final exposure time used will be available in the output capture result.<wbr/></p>
22171 <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
22172 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
22177 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22178 <!-- end of entry -->
22181 <tr class="entry" id="dynamic_android.sensor.frameDuration">
22182 <td class="entry_name
22184 android.<wbr/>sensor.<wbr/>frame<wbr/>Duration
22186 <td class="entry_type">
22187 <span class="entry_type_name">int64</span>
22189 <span class="entry_type_visibility"> [public]</span>
22192 <span class="entry_type_hwlevel">[full] </span>
22197 </td> <!-- entry_type -->
22199 <td class="entry_description">
22200 <p>Duration from start of frame exposure to
22201 start of next frame exposure.<wbr/></p>
22204 <td class="entry_units">
22208 <td class="entry_range">
22209 <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/>
22210 The duration is capped to <code>max(duration,<wbr/> exposureTime + overhead)</code>.<wbr/></p>
22213 <td class="entry_hal_version">
22217 <td class="entry_tags">
22218 <ul class="entry_tags">
22219 <li><a href="#tag_V1">V1</a></li>
22224 <tr class="entries_header">
22225 <th class="th_details" colspan="6">Details</th>
22227 <tr class="entry_cont">
22228 <td class="entry_details" colspan="6">
22229 <p>The maximum frame rate that can be supported by a camera subsystem is
22230 a function of many factors:</p>
22232 <li>Requested resolutions of output image streams</li>
22233 <li>Availability of binning /<wbr/> skipping modes on the imager</li>
22234 <li>The bandwidth of the imager interface</li>
22235 <li>The bandwidth of the various ISP processing blocks</li>
22237 <p>Since these factors can vary greatly between different ISPs and
22238 sensors,<wbr/> the camera abstraction tries to represent the bandwidth
22239 restrictions with as simple a model as possible.<wbr/></p>
22240 <p>The model presented has the following characteristics:</p>
22242 <li>The image sensor is always configured to output the smallest
22243 resolution possible given the application's requested output stream
22244 sizes.<wbr/> The smallest resolution is defined as being at least as large
22245 as the largest requested output stream size; the camera pipeline must
22246 never digitally upsample sensor data when the crop region covers the
22247 whole sensor.<wbr/> In general,<wbr/> this means that if only small output stream
22248 resolutions are configured,<wbr/> the sensor can provide a higher frame
22250 <li>Since any request may use any or all the currently configured
22251 output streams,<wbr/> the sensor and ISP must be configured to support
22252 scaling a single capture to all the streams at the same time.<wbr/> This
22253 means the camera pipeline must be ready to produce the largest
22254 requested output size without any delay.<wbr/> Therefore,<wbr/> the overall
22255 frame rate of a given configured stream set is governed only by the
22256 largest requested stream resolution.<wbr/></li>
22257 <li>Using more than one output stream in a request does not affect the
22258 frame duration.<wbr/></li>
22259 <li>Certain format-streams may need to do additional background processing
22260 before data is consumed/<wbr/>produced by that stream.<wbr/> These processors
22261 can run concurrently to the rest of the camera pipeline,<wbr/> but
22262 cannot process more than 1 capture at a time.<wbr/></li>
22264 <p>The necessary information for the application,<wbr/> given the model above,<wbr/> is provided via
22265 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/>
22266 These are used to determine the maximum frame rate /<wbr/> minimum frame duration that is
22267 possible for a given stream configuration.<wbr/></p>
22268 <p>Specifically,<wbr/> the application can use the following rules to
22269 determine the minimum frame duration it can request from the camera
22272 <li>Let the set of currently configured input/<wbr/>output streams be called <code>S</code>.<wbr/></li>
22273 <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>
22274 (with its respective size/<wbr/>format).<wbr/> Let this set of frame durations be called <code>F</code>.<wbr/></li>
22275 <li>For any given request <code>R</code>,<wbr/> the minimum frame duration allowed for <code>R</code> is the maximum
22276 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>
22278 <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>
22279 using its respective size/<wbr/>format),<wbr/> then the frame duration in <code>F</code> determines the steady
22280 state frame rate that the application will get if it uses <code>R</code> as a repeating request.<wbr/> Let
22281 this special kind of request be called <code>Rsimple</code>.<wbr/></p>
22282 <p>A repeating request <code>Rsimple</code> can be <em>occasionally</em> interleaved by a single capture of a
22283 new request <code>Rstall</code> (which has at least one in-use stream with a non-0 stall time) and if
22284 <code>Rstall</code> has the same minimum frame duration this will not cause a frame rate loss if all
22285 buffers from the previous <code>Rstall</code> have already been delivered.<wbr/></p>
22286 <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>
22287 <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
22288 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
22292 <tr class="entries_header">
22293 <th class="th_details" colspan="6">HAL Implementation Details</th>
22295 <tr class="entry_cont">
22296 <td class="entry_details" colspan="6">
22297 <p>For more details about stalling,<wbr/> see
22298 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>.<wbr/></p>
22302 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22303 <!-- end of entry -->
22306 <tr class="entry" id="dynamic_android.sensor.sensitivity">
22307 <td class="entry_name
22309 android.<wbr/>sensor.<wbr/>sensitivity
22311 <td class="entry_type">
22312 <span class="entry_type_name">int32</span>
22314 <span class="entry_type_visibility"> [public]</span>
22317 <span class="entry_type_hwlevel">[full] </span>
22322 </td> <!-- entry_type -->
22324 <td class="entry_description">
22325 <p>The amount of gain applied to sensor data
22326 before processing.<wbr/></p>
22329 <td class="entry_units">
22330 ISO arithmetic units
22333 <td class="entry_range">
22334 <p><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></p>
22337 <td class="entry_hal_version">
22341 <td class="entry_tags">
22342 <ul class="entry_tags">
22343 <li><a href="#tag_V1">V1</a></li>
22348 <tr class="entries_header">
22349 <th class="th_details" colspan="6">Details</th>
22351 <tr class="entry_cont">
22352 <td class="entry_details" colspan="6">
22353 <p>The sensitivity is the standard ISO sensitivity value,<wbr/>
22354 as defined in ISO 12232:2006.<wbr/></p>
22355 <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
22356 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
22357 is guaranteed to use only analog amplification for applying the gain.<wbr/></p>
22358 <p>If the camera device cannot apply the exact sensitivity
22359 requested,<wbr/> it will reduce the gain to the nearest supported
22360 value.<wbr/> The final sensitivity used will be available in the
22361 output capture result.<wbr/></p>
22362 <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
22363 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
22367 <tr class="entries_header">
22368 <th class="th_details" colspan="6">HAL Implementation Details</th>
22370 <tr class="entry_cont">
22371 <td class="entry_details" colspan="6">
22372 <p>ISO 12232:2006 REI method is acceptable.<wbr/></p>
22376 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22377 <!-- end of entry -->
22380 <tr class="entry" id="dynamic_android.sensor.timestamp">
22381 <td class="entry_name
22383 android.<wbr/>sensor.<wbr/>timestamp
22385 <td class="entry_type">
22386 <span class="entry_type_name">int64</span>
22388 <span class="entry_type_visibility"> [public]</span>
22391 <span class="entry_type_hwlevel">[legacy] </span>
22396 </td> <!-- entry_type -->
22398 <td class="entry_description">
22399 <p>Time at start of exposure of first
22400 row of the image sensor active array,<wbr/> in nanoseconds.<wbr/></p>
22403 <td class="entry_units">
22407 <td class="entry_range">
22411 <td class="entry_hal_version">
22415 <td class="entry_tags">
22416 <ul class="entry_tags">
22417 <li><a href="#tag_BC">BC</a></li>
22422 <tr class="entries_header">
22423 <th class="th_details" colspan="6">Details</th>
22425 <tr class="entry_cont">
22426 <td class="entry_details" colspan="6">
22427 <p>The timestamps are also included in all image
22428 buffers produced for the same capture,<wbr/> and will be identical
22429 on all the outputs.<wbr/></p>
22430 <p>When <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> UNKNOWN,<wbr/>
22431 the timestamps measure time since an unspecified starting point,<wbr/>
22432 and are monotonically increasing.<wbr/> They can be compared with the
22433 timestamps for other captures from the same camera device,<wbr/> but are
22434 not guaranteed to be comparable to any other time source.<wbr/></p>
22435 <p>When <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME,<wbr/> the
22436 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
22437 be compared to other timestamps from other subsystems that
22438 are using that base.<wbr/></p>
22439 <p>For reprocessing,<wbr/> the timestamp will match the start of exposure of
22440 the input image,<wbr/> i.<wbr/>e.<wbr/> <a href="https://developer.android.com/reference/CaptureResult.html#SENSOR_TIMESTAMP">the
22441 timestamp</a> in the TotalCaptureResult that was used to create the
22442 reprocess capture request.<wbr/></p>
22446 <tr class="entries_header">
22447 <th class="th_details" colspan="6">HAL Implementation Details</th>
22449 <tr class="entry_cont">
22450 <td class="entry_details" colspan="6">
22451 <p>All timestamps must be in reference to the kernel's
22452 CLOCK_<wbr/>BOOTTIME monotonic clock,<wbr/> which properly accounts for
22453 time spent asleep.<wbr/> This allows for synchronization with
22454 sensors that continue to operate while the system is
22455 otherwise asleep.<wbr/></p>
22456 <p>If <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME,<wbr/>
22457 The timestamp must be synchronized with the timestamps from other
22458 sensor subsystems that are using the same timebase.<wbr/></p>
22459 <p>For reprocessing,<wbr/> the input image's start of exposure can be looked up
22460 with <a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a> from the metadata included in the
22461 capture request.<wbr/></p>
22465 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22466 <!-- end of entry -->
22469 <tr class="entry" id="dynamic_android.sensor.temperature">
22470 <td class="entry_name
22472 android.<wbr/>sensor.<wbr/>temperature
22474 <td class="entry_type">
22475 <span class="entry_type_name">float</span>
22477 <span class="entry_type_visibility"> [system]</span>
22484 </td> <!-- entry_type -->
22486 <td class="entry_description">
22487 <p>The temperature of the sensor,<wbr/> sampled at the time
22488 exposure began for this frame.<wbr/></p>
22489 <p>The thermal diode being queried should be inside the sensor PCB,<wbr/> or
22490 somewhere close to it.<wbr/></p>
22493 <td class="entry_units">
22497 <td class="entry_range">
22498 <p>Optional.<wbr/> This value is missing if no temperature is available.<wbr/></p>
22501 <td class="entry_hal_version">
22505 <td class="entry_tags">
22506 <ul class="entry_tags">
22507 <li><a href="#tag_FUTURE">FUTURE</a></li>
22514 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22515 <!-- end of entry -->
22518 <tr class="entry" id="dynamic_android.sensor.neutralColorPoint">
22519 <td class="entry_name
22521 android.<wbr/>sensor.<wbr/>neutral<wbr/>Color<wbr/>Point
22523 <td class="entry_type">
22524 <span class="entry_type_name">rational</span>
22525 <span class="entry_type_container">x</span>
22527 <span class="entry_type_array">
22530 <span class="entry_type_visibility"> [public]</span>
22537 </td> <!-- entry_type -->
22539 <td class="entry_description">
22540 <p>The estimated camera neutral color in the native sensor colorspace at
22541 the time of capture.<wbr/></p>
22544 <td class="entry_units">
22547 <td class="entry_range">
22550 <td class="entry_hal_version">
22554 <td class="entry_tags">
22555 <ul class="entry_tags">
22556 <li><a href="#tag_RAW">RAW</a></li>
22561 <tr class="entries_header">
22562 <th class="th_details" colspan="6">Details</th>
22564 <tr class="entry_cont">
22565 <td class="entry_details" colspan="6">
22566 <p>This value gives the neutral color point encoded as an RGB value in the
22567 native sensor color space.<wbr/> The neutral color point indicates the
22568 currently estimated white point of the scene illumination.<wbr/> It can be
22569 used to interpolate between the provided color transforms when
22570 processing raw sensor data.<wbr/></p>
22571 <p>The order of the values is R,<wbr/> G,<wbr/> B; where R is in the lowest index.<wbr/></p>
22576 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22577 <!-- end of entry -->
22580 <tr class="entry" id="dynamic_android.sensor.noiseProfile">
22581 <td class="entry_name
22583 android.<wbr/>sensor.<wbr/>noise<wbr/>Profile
22585 <td class="entry_type">
22586 <span class="entry_type_name">double</span>
22587 <span class="entry_type_container">x</span>
22589 <span class="entry_type_array">
22592 <span class="entry_type_visibility"> [public as pairDoubleDouble]</span>
22597 <div class="entry_type_notes">Pairs of noise model coefficients</div>
22600 </td> <!-- entry_type -->
22602 <td class="entry_description">
22603 <p>Noise model coefficients for each CFA mosaic channel.<wbr/></p>
22606 <td class="entry_units">
22609 <td class="entry_range">
22612 <td class="entry_hal_version">
22616 <td class="entry_tags">
22617 <ul class="entry_tags">
22618 <li><a href="#tag_RAW">RAW</a></li>
22623 <tr class="entries_header">
22624 <th class="th_details" colspan="6">Details</th>
22626 <tr class="entry_cont">
22627 <td class="entry_details" colspan="6">
22628 <p>This key contains two noise model coefficients for each CFA channel
22629 corresponding to the sensor amplification (S) and sensor readout
22630 noise (O).<wbr/> These are given as pairs of coefficients for each channel
22631 in the same order as channels listed for the CFA layout key
22632 (see <a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a>).<wbr/> This is
22633 represented as an array of Pair<Double,<wbr/> Double>,<wbr/> where
22634 the first member of the Pair at index n is the S coefficient and the
22635 second member is the O coefficient for the nth color channel in the CFA.<wbr/></p>
22636 <p>These coefficients are used in a two parameter noise model to describe
22637 the amount of noise present in the image for each CFA channel.<wbr/> The
22638 noise model used here is:</p>
22639 <p>N(x) = sqrt(Sx + O)</p>
22640 <p>Where x represents the recorded signal of a CFA channel normalized to
22641 the range [0,<wbr/> 1],<wbr/> and S and O are the noise model coeffiecients for
22642 that channel.<wbr/></p>
22643 <p>A more detailed description of the noise model can be found in the
22644 Adobe DNG specification for the NoiseProfile tag.<wbr/></p>
22648 <tr class="entries_header">
22649 <th class="th_details" colspan="6">HAL Implementation Details</th>
22651 <tr class="entry_cont">
22652 <td class="entry_details" colspan="6">
22653 <p>For a CFA layout of RGGB,<wbr/> the list of coefficients would be given as
22654 an array of doubles S0,<wbr/>O0,<wbr/>S1,<wbr/>O1,...,<wbr/> where S0 and O0 are the coefficients
22655 for the red channel,<wbr/> S1 and O1 are the coefficients for the first green
22656 channel,<wbr/> etc.<wbr/></p>
22660 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22661 <!-- end of entry -->
22664 <tr class="entry" id="dynamic_android.sensor.profileHueSatMap">
22665 <td class="entry_name
22667 android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map
22669 <td class="entry_type">
22670 <span class="entry_type_name">float</span>
22671 <span class="entry_type_container">x</span>
22673 <span class="entry_type_array">
22674 hue_samples x saturation_samples x value_samples x 3
22676 <span class="entry_type_visibility"> [system]</span>
22681 <div class="entry_type_notes">Mapping for hue,<wbr/> saturation,<wbr/> and value</div>
22684 </td> <!-- entry_type -->
22686 <td class="entry_description">
22687 <p>A mapping containing a hue shift,<wbr/> saturation scale,<wbr/> and value scale
22688 for each pixel.<wbr/></p>
22691 <td class="entry_units">
22693 The hue shift is given in degrees; saturation and value scale factors are
22694 unitless and are between 0 and 1 inclusive
22698 <td class="entry_range">
22701 <td class="entry_hal_version">
22705 <td class="entry_tags">
22706 <ul class="entry_tags">
22707 <li><a href="#tag_RAW">RAW</a></li>
22712 <tr class="entries_header">
22713 <th class="th_details" colspan="6">Details</th>
22715 <tr class="entry_cont">
22716 <td class="entry_details" colspan="6">
22717 <p>hue_<wbr/>samples,<wbr/> saturation_<wbr/>samples,<wbr/> and value_<wbr/>samples are given in
22718 <a href="#static_android.sensor.profileHueSatMapDimensions">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map<wbr/>Dimensions</a>.<wbr/></p>
22719 <p>Each entry of this map contains three floats corresponding to the
22720 hue shift,<wbr/> saturation scale,<wbr/> and value scale,<wbr/> respectively; where the
22721 hue shift has the lowest index.<wbr/> The map entries are stored in the key
22722 in nested loop order,<wbr/> with the value divisions in the outer loop,<wbr/> the
22723 hue divisions in the middle loop,<wbr/> and the saturation divisions in the
22724 inner loop.<wbr/> All zero input saturation entries are required to have a
22725 value scale factor of 1.<wbr/>0.<wbr/></p>
22730 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22731 <!-- end of entry -->
22734 <tr class="entry" id="dynamic_android.sensor.profileToneCurve">
22735 <td class="entry_name
22737 android.<wbr/>sensor.<wbr/>profile<wbr/>Tone<wbr/>Curve
22739 <td class="entry_type">
22740 <span class="entry_type_name">float</span>
22741 <span class="entry_type_container">x</span>
22743 <span class="entry_type_array">
22746 <span class="entry_type_visibility"> [system]</span>
22751 <div class="entry_type_notes">Samples defining a spline for a tone-mapping curve</div>
22754 </td> <!-- entry_type -->
22756 <td class="entry_description">
22757 <p>A list of x,<wbr/>y samples defining a tone-mapping curve for gamma adjustment.<wbr/></p>
22760 <td class="entry_units">
22763 <td class="entry_range">
22764 <p>Each sample has an input range of <code>[0,<wbr/> 1]</code> and an output range of
22765 <code>[0,<wbr/> 1]</code>.<wbr/> The first sample is required to be <code>(0,<wbr/> 0)</code>,<wbr/> and the last
22766 sample is required to be <code>(1,<wbr/> 1)</code>.<wbr/></p>
22769 <td class="entry_hal_version">
22773 <td class="entry_tags">
22774 <ul class="entry_tags">
22775 <li><a href="#tag_RAW">RAW</a></li>
22780 <tr class="entries_header">
22781 <th class="th_details" colspan="6">Details</th>
22783 <tr class="entry_cont">
22784 <td class="entry_details" colspan="6">
22785 <p>This key contains a default tone curve that can be applied while
22786 processing the image as a starting point for user adjustments.<wbr/>
22787 The curve is specified as a list of value pairs in linear gamma.<wbr/>
22788 The curve is interpolated using a cubic spline.<wbr/></p>
22793 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22794 <!-- end of entry -->
22797 <tr class="entry" id="dynamic_android.sensor.greenSplit">
22798 <td class="entry_name
22800 android.<wbr/>sensor.<wbr/>green<wbr/>Split
22802 <td class="entry_type">
22803 <span class="entry_type_name">float</span>
22805 <span class="entry_type_visibility"> [public]</span>
22812 </td> <!-- entry_type -->
22814 <td class="entry_description">
22815 <p>The worst-case divergence between Bayer green channels.<wbr/></p>
22818 <td class="entry_units">
22821 <td class="entry_range">
22825 <td class="entry_hal_version">
22829 <td class="entry_tags">
22830 <ul class="entry_tags">
22831 <li><a href="#tag_RAW">RAW</a></li>
22836 <tr class="entries_header">
22837 <th class="th_details" colspan="6">Details</th>
22839 <tr class="entry_cont">
22840 <td class="entry_details" colspan="6">
22841 <p>This value is an estimate of the worst case split between the
22842 Bayer green channels in the red and blue rows in the sensor color
22843 filter array.<wbr/></p>
22844 <p>The green split is calculated as follows:</p>
22846 <li>A 5x5 pixel (or larger) window W within the active sensor array is
22847 chosen.<wbr/> The term 'pixel' here is taken to mean a group of 4 Bayer
22848 mosaic channels (R,<wbr/> Gr,<wbr/> Gb,<wbr/> B).<wbr/> The location and size of the window
22849 chosen is implementation defined,<wbr/> and should be chosen to provide a
22850 green split estimate that is both representative of the entire image
22851 for this camera sensor,<wbr/> and can be calculated quickly.<wbr/></li>
22852 <li>The arithmetic mean of the green channels from the red
22853 rows (mean_<wbr/>Gr) within W is computed.<wbr/></li>
22854 <li>The arithmetic mean of the green channels from the blue
22855 rows (mean_<wbr/>Gb) within W is computed.<wbr/></li>
22856 <li>The maximum ratio R of the two means is computed as follows:
22857 <code>R = max((mean_<wbr/>Gr + 1)/<wbr/>(mean_<wbr/>Gb + 1),<wbr/> (mean_<wbr/>Gb + 1)/<wbr/>(mean_<wbr/>Gr + 1))</code></li>
22859 <p>The ratio R is the green split divergence reported for this property,<wbr/>
22860 which represents how much the green channels differ in the mosaic
22861 pattern.<wbr/> This value is typically used to determine the treatment of
22862 the green mosaic channels when demosaicing.<wbr/></p>
22863 <p>The green split value can be roughly interpreted as follows:</p>
22865 <li>R < 1.<wbr/>03 is a negligible split (<3% divergence).<wbr/></li>
22866 <li>1.<wbr/>20 <= R >= 1.<wbr/>03 will require some software
22867 correction to avoid demosaic errors (3-20% divergence).<wbr/></li>
22868 <li>R > 1.<wbr/>20 will require strong software correction to produce
22869 a usuable image (>20% divergence).<wbr/></li>
22874 <tr class="entries_header">
22875 <th class="th_details" colspan="6">HAL Implementation Details</th>
22877 <tr class="entry_cont">
22878 <td class="entry_details" colspan="6">
22879 <p>The green split given may be a static value based on prior
22880 characterization of the camera sensor using the green split
22881 calculation method given here over a large,<wbr/> representative,<wbr/> sample
22882 set of images.<wbr/> Other methods of calculation that produce equivalent
22883 results,<wbr/> and can be interpreted in the same manner,<wbr/> may be used.<wbr/></p>
22887 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22888 <!-- end of entry -->
22891 <tr class="entry" id="dynamic_android.sensor.testPatternData">
22892 <td class="entry_name
22894 android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data
22896 <td class="entry_type">
22897 <span class="entry_type_name">int32</span>
22898 <span class="entry_type_container">x</span>
22900 <span class="entry_type_array">
22903 <span class="entry_type_visibility"> [public]</span>
22910 </td> <!-- entry_type -->
22912 <td class="entry_description">
22913 <p>A pixel <code>[R,<wbr/> G_<wbr/>even,<wbr/> G_<wbr/>odd,<wbr/> B]</code> that supplies the test pattern
22914 when <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a> is SOLID_<wbr/>COLOR.<wbr/></p>
22917 <td class="entry_units">
22920 <td class="entry_range">
22923 <td class="entry_hal_version">
22927 <td class="entry_tags">
22931 <tr class="entries_header">
22932 <th class="th_details" colspan="6">Details</th>
22934 <tr class="entry_cont">
22935 <td class="entry_details" colspan="6">
22936 <p>Each color channel is treated as an unsigned 32-bit integer.<wbr/>
22937 The camera device then uses the most significant X bits
22938 that correspond to how many bits are in its Bayer raw sensor
22940 <p>For example,<wbr/> a sensor with RAW10 Bayer output would use the
22941 10 most significant bits from each color channel.<wbr/></p>
22945 <tr class="entries_header">
22946 <th class="th_details" colspan="6">HAL Implementation Details</th>
22948 <tr class="entry_cont">
22949 <td class="entry_details" colspan="6">
22954 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22955 <!-- end of entry -->
22958 <tr class="entry" id="dynamic_android.sensor.testPatternMode">
22959 <td class="entry_name
22961 android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode
22963 <td class="entry_type">
22964 <span class="entry_type_name entry_type_name_enum">int32</span>
22966 <span class="entry_type_visibility"> [public]</span>
22972 <ul class="entry_type_enum">
22974 <span class="entry_type_enum_name">OFF (v3.2)</span>
22975 <span class="entry_type_enum_notes"><p>No test pattern mode is used,<wbr/> and the camera
22976 device returns captures from the image sensor.<wbr/></p>
22977 <p>This is the default if the key is not set.<wbr/></p></span>
22980 <span class="entry_type_enum_name">SOLID_COLOR (v3.2)</span>
22981 <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
22982 respective color channel provided in
22983 <a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a>.<wbr/></p>
22984 <p>For example:</p>
22985 <pre><code>android.<wbr/>testPatternData = [0,<wbr/> 0xFFFFFFFF,<wbr/> 0xFFFFFFFF,<wbr/> 0]
22987 <p>All green pixels are 100% green.<wbr/> All red/<wbr/>blue pixels are black.<wbr/></p>
22988 <pre><code>android.<wbr/>testPatternData = [0xFFFFFFFF,<wbr/> 0,<wbr/> 0xFFFFFFFF,<wbr/> 0]
22990 <p>All red pixels are 100% red.<wbr/> Only the odd green pixels
22991 are 100% green.<wbr/> All blue pixels are 100% black.<wbr/></p></span>
22994 <span class="entry_type_enum_name">COLOR_BARS (v3.2)</span>
22995 <span class="entry_type_enum_notes"><p>All pixel data is replaced with an 8-bar color pattern.<wbr/></p>
22996 <p>The vertical bars (left-to-right) are as follows:</p>
22998 <li>100% white</li>
23007 <p>In general the image would look like the following:</p>
23008 <pre><code>W Y C G M R B K
23013 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
23014 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
23015 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
23017 (B = Blue,<wbr/> K = Black)
23019 <p>Each bar should take up 1/<wbr/>8 of the sensor pixel array width.<wbr/>
23020 When this is not possible,<wbr/> the bar size should be rounded
23021 down to the nearest integer and the pattern can repeat
23022 on the right side.<wbr/></p>
23023 <p>Each bar's height must always take up the full sensor
23024 pixel array height.<wbr/></p>
23025 <p>Each pixel in this test pattern must be set to either
23026 0% intensity or 100% intensity.<wbr/></p></span>
23029 <span class="entry_type_enum_name">COLOR_BARS_FADE_TO_GRAY (v3.2)</span>
23030 <span class="entry_type_enum_notes"><p>The test pattern is similar to COLOR_<wbr/>BARS,<wbr/> except that
23031 each bar should start at its specified color at the top,<wbr/>
23032 and fade to gray at the bottom.<wbr/></p>
23033 <p>Furthermore each bar is further subdivided into a left and
23034 right half.<wbr/> The left half should have a smooth gradient,<wbr/>
23035 and the right half should have a quantized gradient.<wbr/></p>
23036 <p>In particular,<wbr/> the right half's should consist of blocks of the
23037 same color for 1/<wbr/>16th active sensor pixel array width.<wbr/></p>
23038 <p>The least significant bits in the quantized gradient should
23039 be copied from the most significant bits of the smooth gradient.<wbr/></p>
23040 <p>The height of each bar should always be a multiple of 128.<wbr/>
23041 When this is not the case,<wbr/> the pattern should repeat at the bottom
23042 of the image.<wbr/></p></span>
23045 <span class="entry_type_enum_name">PN9 (v3.2)</span>
23046 <span class="entry_type_enum_notes"><p>All pixel data is replaced by a pseudo-random sequence
23047 generated from a PN9 512-bit sequence (typically implemented
23048 in hardware with a linear feedback shift register).<wbr/></p>
23049 <p>The generator should be reset at the beginning of each frame,<wbr/>
23050 and thus each subsequent raw frame with this test pattern should
23051 be exactly the same as the last.<wbr/></p></span>
23054 <span class="entry_type_enum_name">CUSTOM1 (v3.2)</span>
23055 <span class="entry_type_enum_value">256</span>
23056 <span class="entry_type_enum_notes"><p>The first custom test pattern.<wbr/> All custom patterns that are
23057 available only on this camera device are at least this numeric
23059 <p>All of the custom test patterns will be static
23060 (that is the raw image must not vary from frame to frame).<wbr/></p></span>
23064 </td> <!-- entry_type -->
23066 <td class="entry_description">
23067 <p>When enabled,<wbr/> the sensor sends a test pattern instead of
23068 doing a real exposure from the camera.<wbr/></p>
23071 <td class="entry_units">
23074 <td class="entry_range">
23075 <p><a href="#static_android.sensor.availableTestPatternModes">android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes</a></p>
23078 <td class="entry_hal_version">
23082 <td class="entry_tags">
23086 <tr class="entries_header">
23087 <th class="th_details" colspan="6">Details</th>
23089 <tr class="entry_cont">
23090 <td class="entry_details" colspan="6">
23091 <p>When a test pattern is enabled,<wbr/> all manual sensor controls specified
23092 by android.<wbr/>sensor.<wbr/>* will be ignored.<wbr/> All other controls should
23093 work as normal.<wbr/></p>
23094 <p>For example,<wbr/> if manual flash is enabled,<wbr/> flash firing should still
23095 occur (and that the test pattern remain unmodified,<wbr/> since the flash
23096 would not actually affect it).<wbr/></p>
23097 <p>Defaults to OFF.<wbr/></p>
23101 <tr class="entries_header">
23102 <th class="th_details" colspan="6">HAL Implementation Details</th>
23104 <tr class="entry_cont">
23105 <td class="entry_details" colspan="6">
23106 <p>All test patterns are specified in the Bayer domain.<wbr/></p>
23107 <p>The HAL may choose to substitute test patterns from the sensor
23108 with test patterns from on-device memory.<wbr/> In that case,<wbr/> it should be
23109 indistinguishable to the ISP whether the data came from the
23110 sensor interconnect bus (such as CSI2) or memory.<wbr/></p>
23114 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23115 <!-- end of entry -->
23118 <tr class="entry" id="dynamic_android.sensor.rollingShutterSkew">
23119 <td class="entry_name
23121 android.<wbr/>sensor.<wbr/>rolling<wbr/>Shutter<wbr/>Skew
23123 <td class="entry_type">
23124 <span class="entry_type_name">int64</span>
23126 <span class="entry_type_visibility"> [public]</span>
23129 <span class="entry_type_hwlevel">[limited] </span>
23134 </td> <!-- entry_type -->
23136 <td class="entry_description">
23137 <p>Duration between the start of first row exposure
23138 and the start of last row exposure.<wbr/></p>
23141 <td class="entry_units">
23145 <td class="entry_range">
23146 <p>>= 0 and <
23147 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/></p>
23150 <td class="entry_hal_version">
23154 <td class="entry_tags">
23155 <ul class="entry_tags">
23156 <li><a href="#tag_V1">V1</a></li>
23161 <tr class="entries_header">
23162 <th class="th_details" colspan="6">Details</th>
23164 <tr class="entry_cont">
23165 <td class="entry_details" colspan="6">
23166 <p>This is the exposure time skew between the first and last
23167 row exposure start times.<wbr/> The first row and the last row are
23168 the first and last rows inside of the
23169 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
23170 <p>For typical camera sensors that use rolling shutters,<wbr/> this is also equivalent
23171 to the frame readout time.<wbr/></p>
23175 <tr class="entries_header">
23176 <th class="th_details" colspan="6">HAL Implementation Details</th>
23178 <tr class="entry_cont">
23179 <td class="entry_details" colspan="6">
23180 <p>The HAL must report <code>0</code> if the sensor is using global shutter,<wbr/> where all pixels begin
23181 exposure at the same time.<wbr/></p>
23185 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23186 <!-- end of entry -->
23189 <tr class="entry" id="dynamic_android.sensor.dynamicBlackLevel">
23190 <td class="entry_name
23192 android.<wbr/>sensor.<wbr/>dynamic<wbr/>Black<wbr/>Level
23194 <td class="entry_type">
23195 <span class="entry_type_name">float</span>
23196 <span class="entry_type_container">x</span>
23198 <span class="entry_type_array">
23201 <span class="entry_type_visibility"> [public]</span>
23206 <div class="entry_type_notes">2x2 raw count block</div>
23209 </td> <!-- entry_type -->
23211 <td class="entry_description">
23212 <p>A per-frame dynamic black level offset for each of the color filter
23213 arrangement (CFA) mosaic channels.<wbr/></p>
23216 <td class="entry_units">
23219 <td class="entry_range">
23220 <p>>= 0 for each.<wbr/></p>
23223 <td class="entry_hal_version">
23227 <td class="entry_tags">
23228 <ul class="entry_tags">
23229 <li><a href="#tag_RAW">RAW</a></li>
23234 <tr class="entries_header">
23235 <th class="th_details" colspan="6">Details</th>
23237 <tr class="entry_cont">
23238 <td class="entry_details" colspan="6">
23239 <p>Camera sensor black levels may vary dramatically for different
23240 capture settings (e.<wbr/>g.<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>).<wbr/> The fixed black
23241 level reported by <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> may be too
23242 inaccurate to represent the actual value on a per-frame basis.<wbr/> The
23243 camera device internal pipeline relies on reliable black level values
23244 to process the raw images appropriately.<wbr/> To get the best image
23245 quality,<wbr/> the camera device may choose to estimate the per frame black
23246 level values either based on optically shielded black regions
23247 (<a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a>) or its internal model.<wbr/></p>
23248 <p>This key reports the camera device estimated per-frame zero light
23249 value for each of the CFA mosaic channels in the camera sensor.<wbr/> The
23250 <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> may only represent a coarse
23251 approximation of the actual black level values.<wbr/> This value is the
23252 black level used in camera device internal image processing pipeline
23253 and generally more accurate than the fixed black level values.<wbr/>
23254 However,<wbr/> since they are estimated values by the camera device,<wbr/> they
23255 may not be as accurate as the black level values calculated from the
23256 optical black pixels reported by <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a>.<wbr/></p>
23257 <p>The values are given in the same order as channels listed for the CFA
23258 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
23259 nth value given corresponds to the black level offset for the nth
23260 color channel listed in the CFA.<wbr/></p>
23261 <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
23262 camera device advertises this key via <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureResultKeys">CameraCharacteristics#getAvailableCaptureResultKeys</a>.<wbr/></p>
23266 <tr class="entries_header">
23267 <th class="th_details" colspan="6">HAL Implementation Details</th>
23269 <tr class="entry_cont">
23270 <td class="entry_details" colspan="6">
23271 <p>The values are given in row-column scan order,<wbr/> with the first value
23272 corresponding to the element of the CFA in row=0,<wbr/> column=0.<wbr/></p>
23276 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23277 <!-- end of entry -->
23280 <tr class="entry" id="dynamic_android.sensor.dynamicWhiteLevel">
23281 <td class="entry_name
23283 android.<wbr/>sensor.<wbr/>dynamic<wbr/>White<wbr/>Level
23285 <td class="entry_type">
23286 <span class="entry_type_name">int32</span>
23288 <span class="entry_type_visibility"> [public]</span>
23295 </td> <!-- entry_type -->
23297 <td class="entry_description">
23298 <p>Maximum raw value output by sensor for this frame.<wbr/></p>
23301 <td class="entry_units">
23304 <td class="entry_range">
23308 <td class="entry_hal_version">
23312 <td class="entry_tags">
23313 <ul class="entry_tags">
23314 <li><a href="#tag_RAW">RAW</a></li>
23319 <tr class="entries_header">
23320 <th class="th_details" colspan="6">Details</th>
23322 <tr class="entry_cont">
23323 <td class="entry_details" colspan="6">
23324 <p>Since the <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> may change for different
23325 capture settings (e.<wbr/>g.,<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>),<wbr/> the white
23326 level will change accordingly.<wbr/> This key is similar to
23327 <a href="#static_android.sensor.info.whiteLevel">android.<wbr/>sensor.<wbr/>info.<wbr/>white<wbr/>Level</a>,<wbr/> but specifies the camera device
23328 estimated white level for each frame.<wbr/></p>
23329 <p>This key will be available if <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a> is
23330 available or the camera device advertises this key via
23331 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a>.<wbr/></p>
23335 <tr class="entries_header">
23336 <th class="th_details" colspan="6">HAL Implementation Details</th>
23338 <tr class="entry_cont">
23339 <td class="entry_details" colspan="6">
23340 <p>The full bit depth of the sensor must be available in the raw data,<wbr/>
23341 so the value for linear sensors should not be significantly lower
23342 than maximum raw value supported,<wbr/> i.<wbr/>e.<wbr/> 2^(sensor bits per pixel).<wbr/></p>
23346 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23347 <!-- end of entry -->
23351 <!-- end of kind -->
23354 <!-- end of section -->
23355 <tr><td colspan="7" id="section_shading" class="section">shading</td></tr>
23358 <tr><td colspan="7" class="kind">controls</td></tr>
23360 <thead class="entries_header">
23362 <th class="th_name">Property Name</th>
23363 <th class="th_type">Type</th>
23364 <th class="th_description">Description</th>
23365 <th class="th_units">Units</th>
23366 <th class="th_range">Range</th>
23367 <th class="th_hal_version">Initial HIDL HAL version</th>
23368 <th class="th_tags">Tags</th>
23383 <tr class="entry" id="controls_android.shading.mode">
23384 <td class="entry_name
23386 android.<wbr/>shading.<wbr/>mode
23388 <td class="entry_type">
23389 <span class="entry_type_name entry_type_name_enum">byte</span>
23391 <span class="entry_type_visibility"> [public]</span>
23394 <span class="entry_type_hwlevel">[full] </span>
23398 <ul class="entry_type_enum">
23400 <span class="entry_type_enum_name">OFF (v3.2)</span>
23401 <span class="entry_type_enum_notes"><p>No lens shading correction is applied.<wbr/></p></span>
23404 <span class="entry_type_enum_name">FAST (v3.2)</span>
23405 <span class="entry_type_enum_notes"><p>Apply lens shading corrections,<wbr/> without slowing
23406 frame rate relative to sensor raw output</p></span>
23409 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
23410 <span class="entry_type_enum_notes"><p>Apply high-quality lens shading correction,<wbr/> at the
23411 cost of possibly reduced frame rate.<wbr/></p></span>
23415 </td> <!-- entry_type -->
23417 <td class="entry_description">
23418 <p>Quality of lens shading correction applied
23419 to the image data.<wbr/></p>
23422 <td class="entry_units">
23425 <td class="entry_range">
23426 <p><a href="#static_android.shading.availableModes">android.<wbr/>shading.<wbr/>available<wbr/>Modes</a></p>
23429 <td class="entry_hal_version">
23433 <td class="entry_tags">
23437 <tr class="entries_header">
23438 <th class="th_details" colspan="6">Details</th>
23440 <tr class="entry_cont">
23441 <td class="entry_details" colspan="6">
23442 <p>When set to OFF mode,<wbr/> no lens shading correction will be applied by the
23443 camera device,<wbr/> and an identity lens shading map data will be provided
23444 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
23445 shading map with size of <code>[ 4,<wbr/> 3 ]</code>,<wbr/>
23446 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
23447 map shown below:</p>
23448 <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/>
23449 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/>
23450 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/>
23451 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/>
23452 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/>
23453 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 ]
23455 <p>When set to other modes,<wbr/> lens shading correction will be applied by the camera
23456 device.<wbr/> Applications can request lens shading map data by setting
23457 <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
23458 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
23459 data will be the one applied by the camera device for this capture request.<wbr/></p>
23460 <p>The shading map data may depend on the auto-exposure (AE) and AWB statistics,<wbr/> therefore
23461 the reliability of the map data may be affected by the AE and AWB algorithms.<wbr/> When AE and
23462 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>
23463 OFF),<wbr/> to get best results,<wbr/> it is recommended that the applications wait for the AE and AWB
23464 to be converged before using the returned shading map data.<wbr/></p>
23469 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23470 <!-- end of entry -->
23473 <tr class="entry" id="controls_android.shading.strength">
23474 <td class="entry_name
23476 android.<wbr/>shading.<wbr/>strength
23478 <td class="entry_type">
23479 <span class="entry_type_name">byte</span>
23481 <span class="entry_type_visibility"> [system]</span>
23488 </td> <!-- entry_type -->
23490 <td class="entry_description">
23491 <p>Control the amount of shading correction
23492 applied to the images</p>
23495 <td class="entry_units">
23496 unitless: 1-10; 10 is full shading
23500 <td class="entry_range">
23503 <td class="entry_hal_version">
23507 <td class="entry_tags">
23508 <ul class="entry_tags">
23509 <li><a href="#tag_FUTURE">FUTURE</a></li>
23516 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23517 <!-- end of entry -->
23521 <!-- end of kind -->
23523 <tr><td colspan="7" class="kind">dynamic</td></tr>
23525 <thead class="entries_header">
23527 <th class="th_name">Property Name</th>
23528 <th class="th_type">Type</th>
23529 <th class="th_description">Description</th>
23530 <th class="th_units">Units</th>
23531 <th class="th_range">Range</th>
23532 <th class="th_hal_version">Initial HIDL HAL version</th>
23533 <th class="th_tags">Tags</th>
23548 <tr class="entry" id="dynamic_android.shading.mode">
23549 <td class="entry_name
23551 android.<wbr/>shading.<wbr/>mode
23553 <td class="entry_type">
23554 <span class="entry_type_name entry_type_name_enum">byte</span>
23556 <span class="entry_type_visibility"> [public]</span>
23559 <span class="entry_type_hwlevel">[full] </span>
23563 <ul class="entry_type_enum">
23565 <span class="entry_type_enum_name">OFF (v3.2)</span>
23566 <span class="entry_type_enum_notes"><p>No lens shading correction is applied.<wbr/></p></span>
23569 <span class="entry_type_enum_name">FAST (v3.2)</span>
23570 <span class="entry_type_enum_notes"><p>Apply lens shading corrections,<wbr/> without slowing
23571 frame rate relative to sensor raw output</p></span>
23574 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
23575 <span class="entry_type_enum_notes"><p>Apply high-quality lens shading correction,<wbr/> at the
23576 cost of possibly reduced frame rate.<wbr/></p></span>
23580 </td> <!-- entry_type -->
23582 <td class="entry_description">
23583 <p>Quality of lens shading correction applied
23584 to the image data.<wbr/></p>
23587 <td class="entry_units">
23590 <td class="entry_range">
23591 <p><a href="#static_android.shading.availableModes">android.<wbr/>shading.<wbr/>available<wbr/>Modes</a></p>
23594 <td class="entry_hal_version">
23598 <td class="entry_tags">
23602 <tr class="entries_header">
23603 <th class="th_details" colspan="6">Details</th>
23605 <tr class="entry_cont">
23606 <td class="entry_details" colspan="6">
23607 <p>When set to OFF mode,<wbr/> no lens shading correction will be applied by the
23608 camera device,<wbr/> and an identity lens shading map data will be provided
23609 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
23610 shading map with size of <code>[ 4,<wbr/> 3 ]</code>,<wbr/>
23611 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
23612 map shown below:</p>
23613 <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/>
23614 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/>
23615 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/>
23616 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/>
23617 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/>
23618 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 ]
23620 <p>When set to other modes,<wbr/> lens shading correction will be applied by the camera
23621 device.<wbr/> Applications can request lens shading map data by setting
23622 <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
23623 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
23624 data will be the one applied by the camera device for this capture request.<wbr/></p>
23625 <p>The shading map data may depend on the auto-exposure (AE) and AWB statistics,<wbr/> therefore
23626 the reliability of the map data may be affected by the AE and AWB algorithms.<wbr/> When AE and
23627 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>
23628 OFF),<wbr/> to get best results,<wbr/> it is recommended that the applications wait for the AE and AWB
23629 to be converged before using the returned shading map data.<wbr/></p>
23634 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23635 <!-- end of entry -->
23639 <!-- end of kind -->
23641 <tr><td colspan="7" class="kind">static</td></tr>
23643 <thead class="entries_header">
23645 <th class="th_name">Property Name</th>
23646 <th class="th_type">Type</th>
23647 <th class="th_description">Description</th>
23648 <th class="th_units">Units</th>
23649 <th class="th_range">Range</th>
23650 <th class="th_hal_version">Initial HIDL HAL version</th>
23651 <th class="th_tags">Tags</th>
23666 <tr class="entry" id="static_android.shading.availableModes">
23667 <td class="entry_name
23669 android.<wbr/>shading.<wbr/>available<wbr/>Modes
23671 <td class="entry_type">
23672 <span class="entry_type_name">byte</span>
23673 <span class="entry_type_container">x</span>
23675 <span class="entry_type_array">
23678 <span class="entry_type_visibility"> [public as enumList]</span>
23681 <span class="entry_type_hwlevel">[legacy] </span>
23684 <div class="entry_type_notes">List of enums (android.<wbr/>shading.<wbr/>mode).<wbr/></div>
23687 </td> <!-- entry_type -->
23689 <td class="entry_description">
23690 <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>
23693 <td class="entry_units">
23696 <td class="entry_range">
23697 <p>Any value listed in <a href="#controls_android.shading.mode">android.<wbr/>shading.<wbr/>mode</a></p>
23700 <td class="entry_hal_version">
23704 <td class="entry_tags">
23708 <tr class="entries_header">
23709 <th class="th_details" colspan="6">Details</th>
23711 <tr class="entry_cont">
23712 <td class="entry_details" colspan="6">
23713 <p>This list contains lens shading modes that can be set for the camera device.<wbr/>
23714 Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always
23715 list OFF and FAST mode.<wbr/> This includes all FULL level devices.<wbr/>
23716 LEGACY devices will always only support FAST mode.<wbr/></p>
23720 <tr class="entries_header">
23721 <th class="th_details" colspan="6">HAL Implementation Details</th>
23723 <tr class="entry_cont">
23724 <td class="entry_details" colspan="6">
23725 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if lens shading correction control is
23726 available on the camera device,<wbr/> but the underlying implementation can be the same for
23727 both modes.<wbr/> That is,<wbr/> if the highest quality implementation on the camera device does not
23728 slow down capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
23732 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23733 <!-- end of entry -->
23737 <!-- end of kind -->
23740 <!-- end of section -->
23741 <tr><td colspan="7" id="section_statistics" class="section">statistics</td></tr>
23744 <tr><td colspan="7" class="kind">controls</td></tr>
23746 <thead class="entries_header">
23748 <th class="th_name">Property Name</th>
23749 <th class="th_type">Type</th>
23750 <th class="th_description">Description</th>
23751 <th class="th_units">Units</th>
23752 <th class="th_range">Range</th>
23753 <th class="th_hal_version">Initial HIDL HAL version</th>
23754 <th class="th_tags">Tags</th>
23769 <tr class="entry" id="controls_android.statistics.faceDetectMode">
23770 <td class="entry_name
23772 android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode
23774 <td class="entry_type">
23775 <span class="entry_type_name entry_type_name_enum">byte</span>
23777 <span class="entry_type_visibility"> [public]</span>
23780 <span class="entry_type_hwlevel">[legacy] </span>
23784 <ul class="entry_type_enum">
23786 <span class="entry_type_enum_name">OFF (v3.2)</span>
23787 <span class="entry_type_enum_notes"><p>Do not include face detection statistics in capture
23788 results.<wbr/></p></span>
23791 <span class="entry_type_enum_name">SIMPLE (v3.2)</span>
23792 <span class="entry_type_enum_optional">[optional]</span>
23793 <span class="entry_type_enum_notes"><p>Return face rectangle and confidence values only.<wbr/></p></span>
23796 <span class="entry_type_enum_name">FULL (v3.2)</span>
23797 <span class="entry_type_enum_optional">[optional]</span>
23798 <span class="entry_type_enum_notes"><p>Return all face
23799 metadata.<wbr/></p>
23800 <p>In this mode,<wbr/> face rectangles,<wbr/> scores,<wbr/> landmarks,<wbr/> and face IDs are all valid.<wbr/></p></span>
23804 </td> <!-- entry_type -->
23806 <td class="entry_description">
23807 <p>Operating mode for the face detector
23811 <td class="entry_units">
23814 <td class="entry_range">
23815 <p><a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a></p>
23818 <td class="entry_hal_version">
23822 <td class="entry_tags">
23823 <ul class="entry_tags">
23824 <li><a href="#tag_BC">BC</a></li>
23829 <tr class="entries_header">
23830 <th class="th_details" colspan="6">Details</th>
23832 <tr class="entry_cont">
23833 <td class="entry_details" colspan="6">
23834 <p>Whether face detection is enabled,<wbr/> and whether it
23835 should output just the basic fields or the full set of
23840 <tr class="entries_header">
23841 <th class="th_details" colspan="6">HAL Implementation Details</th>
23843 <tr class="entry_cont">
23844 <td class="entry_details" colspan="6">
23845 <p>SIMPLE mode must fill in <a href="#dynamic_android.statistics.faceRectangles">android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles</a> and
23846 <a href="#dynamic_android.statistics.faceScores">android.<wbr/>statistics.<wbr/>face<wbr/>Scores</a>.<wbr/>
23847 FULL mode must also fill in <a href="#dynamic_android.statistics.faceIds">android.<wbr/>statistics.<wbr/>face<wbr/>Ids</a>,<wbr/> and
23848 <a href="#dynamic_android.statistics.faceLandmarks">android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks</a>.<wbr/></p>
23852 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23853 <!-- end of entry -->
23856 <tr class="entry" id="controls_android.statistics.histogramMode">
23857 <td class="entry_name
23859 android.<wbr/>statistics.<wbr/>histogram<wbr/>Mode
23861 <td class="entry_type">
23862 <span class="entry_type_name entry_type_name_enum">byte</span>
23864 <span class="entry_type_visibility"> [system as boolean]</span>
23870 <ul class="entry_type_enum">
23872 <span class="entry_type_enum_name">OFF (v3.2)</span>
23875 <span class="entry_type_enum_name">ON (v3.2)</span>
23879 </td> <!-- entry_type -->
23881 <td class="entry_description">
23882 <p>Operating mode for histogram
23886 <td class="entry_units">
23889 <td class="entry_range">
23892 <td class="entry_hal_version">
23896 <td class="entry_tags">
23897 <ul class="entry_tags">
23898 <li><a href="#tag_FUTURE">FUTURE</a></li>
23905 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23906 <!-- end of entry -->
23909 <tr class="entry" id="controls_android.statistics.sharpnessMapMode">
23910 <td class="entry_name
23912 android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map<wbr/>Mode
23914 <td class="entry_type">
23915 <span class="entry_type_name entry_type_name_enum">byte</span>
23917 <span class="entry_type_visibility"> [system as boolean]</span>
23923 <ul class="entry_type_enum">
23925 <span class="entry_type_enum_name">OFF (v3.2)</span>
23928 <span class="entry_type_enum_name">ON (v3.2)</span>
23932 </td> <!-- entry_type -->
23934 <td class="entry_description">
23935 <p>Operating mode for sharpness map
23939 <td class="entry_units">
23942 <td class="entry_range">
23945 <td class="entry_hal_version">
23949 <td class="entry_tags">
23950 <ul class="entry_tags">
23951 <li><a href="#tag_FUTURE">FUTURE</a></li>
23958 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23959 <!-- end of entry -->
23962 <tr class="entry" id="controls_android.statistics.hotPixelMapMode">
23963 <td class="entry_name
23965 android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode
23967 <td class="entry_type">
23968 <span class="entry_type_name entry_type_name_enum">byte</span>
23970 <span class="entry_type_visibility"> [public as boolean]</span>
23976 <ul class="entry_type_enum">
23978 <span class="entry_type_enum_name">OFF (v3.2)</span>
23979 <span class="entry_type_enum_notes"><p>Hot pixel map production is disabled.<wbr/></p></span>
23982 <span class="entry_type_enum_name">ON (v3.2)</span>
23983 <span class="entry_type_enum_notes"><p>Hot pixel map production is enabled.<wbr/></p></span>
23987 </td> <!-- entry_type -->
23989 <td class="entry_description">
23990 <p>Operating mode for hot pixel map generation.<wbr/></p>
23993 <td class="entry_units">
23996 <td class="entry_range">
23997 <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>
24000 <td class="entry_hal_version">
24004 <td class="entry_tags">
24005 <ul class="entry_tags">
24006 <li><a href="#tag_V1">V1</a></li>
24007 <li><a href="#tag_RAW">RAW</a></li>
24012 <tr class="entries_header">
24013 <th class="th_details" colspan="6">Details</th>
24015 <tr class="entry_cont">
24016 <td class="entry_details" colspan="6">
24017 <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/>
24018 If set to <code>false</code>,<wbr/> no hot pixel map will be returned.<wbr/></p>
24023 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24024 <!-- end of entry -->
24027 <tr class="entry" id="controls_android.statistics.lensShadingMapMode">
24028 <td class="entry_name
24030 android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode
24032 <td class="entry_type">
24033 <span class="entry_type_name entry_type_name_enum">byte</span>
24035 <span class="entry_type_visibility"> [public]</span>
24038 <span class="entry_type_hwlevel">[full] </span>
24042 <ul class="entry_type_enum">
24044 <span class="entry_type_enum_name">OFF (v3.2)</span>
24045 <span class="entry_type_enum_notes"><p>Do not include a lens shading map in the capture result.<wbr/></p></span>
24048 <span class="entry_type_enum_name">ON (v3.2)</span>
24049 <span class="entry_type_enum_notes"><p>Include a lens shading map in the capture result.<wbr/></p></span>
24053 </td> <!-- entry_type -->
24055 <td class="entry_description">
24056 <p>Whether the camera device will output the lens
24057 shading map in output result metadata.<wbr/></p>
24060 <td class="entry_units">
24063 <td class="entry_range">
24064 <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>
24067 <td class="entry_hal_version">
24071 <td class="entry_tags">
24072 <ul class="entry_tags">
24073 <li><a href="#tag_RAW">RAW</a></li>
24078 <tr class="entries_header">
24079 <th class="th_details" colspan="6">Details</th>
24081 <tr class="entry_cont">
24082 <td class="entry_details" colspan="6">
24083 <p>When set to ON,<wbr/>
24084 <a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> will be provided in
24085 the output result metadata.<wbr/></p>
24086 <p>ON is always supported on devices with the RAW capability.<wbr/></p>
24091 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24092 <!-- end of entry -->
24095 <tr class="entry" id="controls_android.statistics.oisDataMode">
24096 <td class="entry_name
24098 android.<wbr/>statistics.<wbr/>ois<wbr/>Data<wbr/>Mode
24100 <td class="entry_type">
24101 <span class="entry_type_name entry_type_name_enum">byte</span>
24103 <span class="entry_type_visibility"> [public]</span>
24109 <ul class="entry_type_enum">
24111 <span class="entry_type_enum_name">OFF (v3.3)</span>
24112 <span class="entry_type_enum_notes"><p>Do not include OIS data in the capture result.<wbr/></p></span>
24115 <span class="entry_type_enum_name">ON (v3.3)</span>
24116 <span class="entry_type_enum_notes"><p>Include OIS data in the capture result.<wbr/></p></span>
24120 </td> <!-- entry_type -->
24122 <td class="entry_description">
24123 <p>A control for selecting whether OIS position information is included in output
24124 result metadata.<wbr/></p>
24127 <td class="entry_units">
24130 <td class="entry_range">
24131 <p>android.<wbr/>Statistics.<wbr/>info.<wbr/>available<wbr/>Ois<wbr/>Data<wbr/>Modes</p>
24134 <td class="entry_hal_version">
24138 <td class="entry_tags">
24142 <tr class="entries_header">
24143 <th class="th_details" colspan="6">Details</th>
24145 <tr class="entry_cont">
24146 <td class="entry_details" colspan="6">
24147 <p>When set to ON,<wbr/>
24148 <a href="#dynamic_android.statistics.oisTimestamps">android.<wbr/>statistics.<wbr/>ois<wbr/>Timestamps</a>,<wbr/> android.<wbr/>statistics.<wbr/>ois<wbr/>Shift<wbr/>Pixel<wbr/>X,<wbr/>
24149 and android.<wbr/>statistics.<wbr/>ois<wbr/>Shift<wbr/>Pixel<wbr/>Y provide OIS data in the output result metadata.<wbr/></p>
24154 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24155 <!-- end of entry -->
24159 <!-- end of kind -->
24161 <tr><td colspan="7" class="kind">static</td></tr>
24163 <thead class="entries_header">
24165 <th class="th_name">Property Name</th>
24166 <th class="th_type">Type</th>
24167 <th class="th_description">Description</th>
24168 <th class="th_units">Units</th>
24169 <th class="th_range">Range</th>
24170 <th class="th_hal_version">Initial HIDL HAL version</th>
24171 <th class="th_tags">Tags</th>
24188 <tr class="entry" id="static_android.statistics.info.availableFaceDetectModes">
24189 <td class="entry_name
24191 android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes
24193 <td class="entry_type">
24194 <span class="entry_type_name">byte</span>
24195 <span class="entry_type_container">x</span>
24197 <span class="entry_type_array">
24200 <span class="entry_type_visibility"> [public as enumList]</span>
24203 <span class="entry_type_hwlevel">[legacy] </span>
24206 <div class="entry_type_notes">List of enums from android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</div>
24209 </td> <!-- entry_type -->
24211 <td class="entry_description">
24212 <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
24213 supported by this camera device.<wbr/></p>
24216 <td class="entry_units">
24219 <td class="entry_range">
24220 <p>Any value listed in <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></p>
24223 <td class="entry_hal_version">
24227 <td class="entry_tags">
24231 <tr class="entries_header">
24232 <th class="th_details" colspan="6">Details</th>
24234 <tr class="entry_cont">
24235 <td class="entry_details" colspan="6">
24236 <p>OFF is always supported.<wbr/></p>
24241 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24242 <!-- end of entry -->
24245 <tr class="entry" id="static_android.statistics.info.histogramBucketCount">
24246 <td class="entry_name
24248 android.<wbr/>statistics.<wbr/>info.<wbr/>histogram<wbr/>Bucket<wbr/>Count
24250 <td class="entry_type">
24251 <span class="entry_type_name">int32</span>
24253 <span class="entry_type_visibility"> [system]</span>
24260 </td> <!-- entry_type -->
24262 <td class="entry_description">
24263 <p>Number of histogram buckets
24267 <td class="entry_units">
24270 <td class="entry_range">
24274 <td class="entry_hal_version">
24278 <td class="entry_tags">
24279 <ul class="entry_tags">
24280 <li><a href="#tag_FUTURE">FUTURE</a></li>
24287 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24288 <!-- end of entry -->
24291 <tr class="entry" id="static_android.statistics.info.maxFaceCount">
24292 <td class="entry_name
24294 android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Face<wbr/>Count
24296 <td class="entry_type">
24297 <span class="entry_type_name">int32</span>
24299 <span class="entry_type_visibility"> [public]</span>
24302 <span class="entry_type_hwlevel">[legacy] </span>
24307 </td> <!-- entry_type -->
24309 <td class="entry_description">
24310 <p>The maximum number of simultaneously detectable
24314 <td class="entry_units">
24317 <td class="entry_range">
24318 <p>0 for cameras without available face detection; otherwise:
24319 <code>>=4</code> for LIMITED or FULL hwlevel devices or
24320 <code>>0</code> for LEGACY devices.<wbr/></p>
24323 <td class="entry_hal_version">
24327 <td class="entry_tags">
24328 <ul class="entry_tags">
24329 <li><a href="#tag_BC">BC</a></li>
24336 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24337 <!-- end of entry -->
24340 <tr class="entry" id="static_android.statistics.info.maxHistogramCount">
24341 <td class="entry_name
24343 android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Histogram<wbr/>Count
24345 <td class="entry_type">
24346 <span class="entry_type_name">int32</span>
24348 <span class="entry_type_visibility"> [system]</span>
24355 </td> <!-- entry_type -->
24357 <td class="entry_description">
24358 <p>Maximum value possible for a histogram
24362 <td class="entry_units">
24365 <td class="entry_range">
24368 <td class="entry_hal_version">
24372 <td class="entry_tags">
24373 <ul class="entry_tags">
24374 <li><a href="#tag_FUTURE">FUTURE</a></li>
24381 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24382 <!-- end of entry -->
24385 <tr class="entry" id="static_android.statistics.info.maxSharpnessMapValue">
24386 <td class="entry_name
24388 android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Sharpness<wbr/>Map<wbr/>Value
24390 <td class="entry_type">
24391 <span class="entry_type_name">int32</span>
24393 <span class="entry_type_visibility"> [system]</span>
24400 </td> <!-- entry_type -->
24402 <td class="entry_description">
24403 <p>Maximum value possible for a sharpness map
24407 <td class="entry_units">
24410 <td class="entry_range">
24413 <td class="entry_hal_version">
24417 <td class="entry_tags">
24418 <ul class="entry_tags">
24419 <li><a href="#tag_FUTURE">FUTURE</a></li>
24426 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24427 <!-- end of entry -->
24430 <tr class="entry" id="static_android.statistics.info.sharpnessMapSize">
24431 <td class="entry_name
24433 android.<wbr/>statistics.<wbr/>info.<wbr/>sharpness<wbr/>Map<wbr/>Size
24435 <td class="entry_type">
24436 <span class="entry_type_name">int32</span>
24437 <span class="entry_type_container">x</span>
24439 <span class="entry_type_array">
24442 <span class="entry_type_visibility"> [system as size]</span>
24447 <div class="entry_type_notes">width x height</div>
24450 </td> <!-- entry_type -->
24452 <td class="entry_description">
24453 <p>Dimensions of the sharpness
24457 <td class="entry_units">
24460 <td class="entry_range">
24461 <p>Must be at least 32 x 32</p>
24464 <td class="entry_hal_version">
24468 <td class="entry_tags">
24469 <ul class="entry_tags">
24470 <li><a href="#tag_FUTURE">FUTURE</a></li>
24477 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24478 <!-- end of entry -->
24481 <tr class="entry" id="static_android.statistics.info.availableHotPixelMapModes">
24482 <td class="entry_name
24484 android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Map<wbr/>Modes
24486 <td class="entry_type">
24487 <span class="entry_type_name">byte</span>
24488 <span class="entry_type_container">x</span>
24490 <span class="entry_type_array">
24493 <span class="entry_type_visibility"> [public as boolean]</span>
24498 <div class="entry_type_notes">list of enums</div>
24501 </td> <!-- entry_type -->
24503 <td class="entry_description">
24504 <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
24505 supported by this camera device.<wbr/></p>
24508 <td class="entry_units">
24511 <td class="entry_range">
24512 <p>Any value listed in <a href="#controls_android.statistics.hotPixelMapMode">android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode</a></p>
24515 <td class="entry_hal_version">
24519 <td class="entry_tags">
24520 <ul class="entry_tags">
24521 <li><a href="#tag_V1">V1</a></li>
24522 <li><a href="#tag_RAW">RAW</a></li>
24527 <tr class="entries_header">
24528 <th class="th_details" colspan="6">Details</th>
24530 <tr class="entry_cont">
24531 <td class="entry_details" colspan="6">
24532 <p>If no hotpixel map output is available for this camera device,<wbr/> this will contain only
24533 <code>false</code>.<wbr/></p>
24534 <p>ON is always supported on devices with the RAW capability.<wbr/></p>
24539 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24540 <!-- end of entry -->
24543 <tr class="entry" id="static_android.statistics.info.availableLensShadingMapModes">
24544 <td class="entry_name
24546 android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Lens<wbr/>Shading<wbr/>Map<wbr/>Modes
24548 <td class="entry_type">
24549 <span class="entry_type_name">byte</span>
24550 <span class="entry_type_container">x</span>
24552 <span class="entry_type_array">
24555 <span class="entry_type_visibility"> [public as enumList]</span>
24560 <div class="entry_type_notes">list of enums</div>
24563 </td> <!-- entry_type -->
24565 <td class="entry_description">
24566 <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
24567 are supported by this camera device.<wbr/></p>
24570 <td class="entry_units">
24573 <td class="entry_range">
24574 <p>Any value listed in <a href="#controls_android.statistics.lensShadingMapMode">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode</a></p>
24577 <td class="entry_hal_version">
24581 <td class="entry_tags">
24585 <tr class="entries_header">
24586 <th class="th_details" colspan="6">Details</th>
24588 <tr class="entry_cont">
24589 <td class="entry_details" colspan="6">
24590 <p>If no lens shading map output is available for this camera device,<wbr/> this key will
24591 contain only OFF.<wbr/></p>
24592 <p>ON is always supported on devices with the RAW capability.<wbr/>
24593 LEGACY mode devices will always only support OFF.<wbr/></p>
24598 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24599 <!-- end of entry -->
24602 <tr class="entry" id="static_android.statistics.info.availableOisDataModes">
24603 <td class="entry_name
24605 android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Ois<wbr/>Data<wbr/>Modes
24607 <td class="entry_type">
24608 <span class="entry_type_name">byte</span>
24609 <span class="entry_type_container">x</span>
24611 <span class="entry_type_array">
24614 <span class="entry_type_visibility"> [public as enumList]</span>
24619 <div class="entry_type_notes">list of enums</div>
24622 </td> <!-- entry_type -->
24624 <td class="entry_description">
24625 <p>List of OIS data output modes for <a href="#controls_android.statistics.oisDataMode">android.<wbr/>statistics.<wbr/>ois<wbr/>Data<wbr/>Mode</a> that
24626 are supported by this camera device.<wbr/></p>
24629 <td class="entry_units">
24632 <td class="entry_range">
24633 <p>Any value listed in <a href="#controls_android.statistics.oisDataMode">android.<wbr/>statistics.<wbr/>ois<wbr/>Data<wbr/>Mode</a></p>
24636 <td class="entry_hal_version">
24640 <td class="entry_tags">
24644 <tr class="entries_header">
24645 <th class="th_details" colspan="6">Details</th>
24647 <tr class="entry_cont">
24648 <td class="entry_details" colspan="6">
24649 <p>If no OIS data output is available for this camera device,<wbr/> this key will
24650 contain only OFF.<wbr/></p>
24655 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24656 <!-- end of entry -->
24663 <!-- end of kind -->
24665 <tr><td colspan="7" class="kind">dynamic</td></tr>
24667 <thead class="entries_header">
24669 <th class="th_name">Property Name</th>
24670 <th class="th_type">Type</th>
24671 <th class="th_description">Description</th>
24672 <th class="th_units">Units</th>
24673 <th class="th_range">Range</th>
24674 <th class="th_hal_version">Initial HIDL HAL version</th>
24675 <th class="th_tags">Tags</th>
24690 <tr class="entry" id="dynamic_android.statistics.faceDetectMode">
24691 <td class="entry_name
24693 android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode
24695 <td class="entry_type">
24696 <span class="entry_type_name entry_type_name_enum">byte</span>
24698 <span class="entry_type_visibility"> [public]</span>
24701 <span class="entry_type_hwlevel">[legacy] </span>
24705 <ul class="entry_type_enum">
24707 <span class="entry_type_enum_name">OFF (v3.2)</span>
24708 <span class="entry_type_enum_notes"><p>Do not include face detection statistics in capture
24709 results.<wbr/></p></span>
24712 <span class="entry_type_enum_name">SIMPLE (v3.2)</span>
24713 <span class="entry_type_enum_optional">[optional]</span>
24714 <span class="entry_type_enum_notes"><p>Return face rectangle and confidence values only.<wbr/></p></span>
24717 <span class="entry_type_enum_name">FULL (v3.2)</span>
24718 <span class="entry_type_enum_optional">[optional]</span>
24719 <span class="entry_type_enum_notes"><p>Return all face
24720 metadata.<wbr/></p>
24721 <p>In this mode,<wbr/> face rectangles,<wbr/> scores,<wbr/> landmarks,<wbr/> and face IDs are all valid.<wbr/></p></span>
24725 </td> <!-- entry_type -->
24727 <td class="entry_description">
24728 <p>Operating mode for the face detector
24732 <td class="entry_units">
24735 <td class="entry_range">
24736 <p><a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a></p>
24739 <td class="entry_hal_version">
24743 <td class="entry_tags">
24744 <ul class="entry_tags">
24745 <li><a href="#tag_BC">BC</a></li>
24750 <tr class="entries_header">
24751 <th class="th_details" colspan="6">Details</th>
24753 <tr class="entry_cont">
24754 <td class="entry_details" colspan="6">
24755 <p>Whether face detection is enabled,<wbr/> and whether it
24756 should output just the basic fields or the full set of
24761 <tr class="entries_header">
24762 <th class="th_details" colspan="6">HAL Implementation Details</th>
24764 <tr class="entry_cont">
24765 <td class="entry_details" colspan="6">
24766 <p>SIMPLE mode must fill in <a href="#dynamic_android.statistics.faceRectangles">android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles</a> and
24767 <a href="#dynamic_android.statistics.faceScores">android.<wbr/>statistics.<wbr/>face<wbr/>Scores</a>.<wbr/>
24768 FULL mode must also fill in <a href="#dynamic_android.statistics.faceIds">android.<wbr/>statistics.<wbr/>face<wbr/>Ids</a>,<wbr/> and
24769 <a href="#dynamic_android.statistics.faceLandmarks">android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks</a>.<wbr/></p>
24773 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24774 <!-- end of entry -->
24777 <tr class="entry" id="dynamic_android.statistics.faceIds">
24778 <td class="entry_name
24780 android.<wbr/>statistics.<wbr/>face<wbr/>Ids
24782 <td class="entry_type">
24783 <span class="entry_type_name">int32</span>
24784 <span class="entry_type_container">x</span>
24786 <span class="entry_type_array">
24789 <span class="entry_type_visibility"> [ndk_public]</span>
24792 <span class="entry_type_hwlevel">[legacy] </span>
24797 </td> <!-- entry_type -->
24799 <td class="entry_description">
24800 <p>List of unique IDs for detected faces.<wbr/></p>
24803 <td class="entry_units">
24806 <td class="entry_range">
24809 <td class="entry_hal_version">
24813 <td class="entry_tags">
24814 <ul class="entry_tags">
24815 <li><a href="#tag_BC">BC</a></li>
24820 <tr class="entries_header">
24821 <th class="th_details" colspan="6">Details</th>
24823 <tr class="entry_cont">
24824 <td class="entry_details" colspan="6">
24825 <p>Each detected face is given a unique ID that is valid for as long as the face is visible
24826 to the camera device.<wbr/> A face that leaves the field of view and later returns may be
24827 assigned a new ID.<wbr/></p>
24828 <p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> == FULL</p>
24833 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24834 <!-- end of entry -->
24837 <tr class="entry" id="dynamic_android.statistics.faceLandmarks">
24838 <td class="entry_name
24840 android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks
24842 <td class="entry_type">
24843 <span class="entry_type_name">int32</span>
24844 <span class="entry_type_container">x</span>
24846 <span class="entry_type_array">
24849 <span class="entry_type_visibility"> [ndk_public]</span>
24852 <span class="entry_type_hwlevel">[legacy] </span>
24855 <div class="entry_type_notes">(leftEyeX,<wbr/> leftEyeY,<wbr/> rightEyeX,<wbr/> rightEyeY,<wbr/> mouthX,<wbr/> mouthY)</div>
24858 </td> <!-- entry_type -->
24860 <td class="entry_description">
24861 <p>List of landmarks for detected
24865 <td class="entry_units">
24868 <td class="entry_range">
24871 <td class="entry_hal_version">
24875 <td class="entry_tags">
24876 <ul class="entry_tags">
24877 <li><a href="#tag_BC">BC</a></li>
24882 <tr class="entries_header">
24883 <th class="th_details" colspan="6">Details</th>
24885 <tr class="entry_cont">
24886 <td class="entry_details" colspan="6">
24887 <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
24888 <code>(0,<wbr/> 0)</code> being the top-left pixel of the active array.<wbr/></p>
24889 <p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> == FULL</p>
24894 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24895 <!-- end of entry -->
24898 <tr class="entry" id="dynamic_android.statistics.faceRectangles">
24899 <td class="entry_name
24901 android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles
24903 <td class="entry_type">
24904 <span class="entry_type_name">int32</span>
24905 <span class="entry_type_container">x</span>
24907 <span class="entry_type_array">
24910 <span class="entry_type_visibility"> [ndk_public as rectangle]</span>
24913 <span class="entry_type_hwlevel">[legacy] </span>
24916 <div class="entry_type_notes">(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax).<wbr/> (0,<wbr/>0) is top-left of active pixel area</div>
24919 </td> <!-- entry_type -->
24921 <td class="entry_description">
24922 <p>List of the bounding rectangles for detected
24926 <td class="entry_units">
24929 <td class="entry_range">
24932 <td class="entry_hal_version">
24936 <td class="entry_tags">
24937 <ul class="entry_tags">
24938 <li><a href="#tag_BC">BC</a></li>
24943 <tr class="entries_header">
24944 <th class="th_details" colspan="6">Details</th>
24946 <tr class="entry_cont">
24947 <td class="entry_details" colspan="6">
24948 <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
24949 <code>(0,<wbr/> 0)</code> being the top-left pixel of the active array.<wbr/></p>
24950 <p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> != OFF</p>
24955 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24956 <!-- end of entry -->
24959 <tr class="entry" id="dynamic_android.statistics.faceScores">
24960 <td class="entry_name
24962 android.<wbr/>statistics.<wbr/>face<wbr/>Scores
24964 <td class="entry_type">
24965 <span class="entry_type_name">byte</span>
24966 <span class="entry_type_container">x</span>
24968 <span class="entry_type_array">
24971 <span class="entry_type_visibility"> [ndk_public]</span>
24974 <span class="entry_type_hwlevel">[legacy] </span>
24979 </td> <!-- entry_type -->
24981 <td class="entry_description">
24982 <p>List of the face confidence scores for
24986 <td class="entry_units">
24989 <td class="entry_range">
24993 <td class="entry_hal_version">
24997 <td class="entry_tags">
24998 <ul class="entry_tags">
24999 <li><a href="#tag_BC">BC</a></li>
25004 <tr class="entries_header">
25005 <th class="th_details" colspan="6">Details</th>
25007 <tr class="entry_cont">
25008 <td class="entry_details" colspan="6">
25009 <p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> != OFF.<wbr/></p>
25013 <tr class="entries_header">
25014 <th class="th_details" colspan="6">HAL Implementation Details</th>
25016 <tr class="entry_cont">
25017 <td class="entry_details" colspan="6">
25018 <p>The value should be meaningful (for example,<wbr/> setting 100 at
25019 all times is illegal).<wbr/></p>
25023 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25024 <!-- end of entry -->
25027 <tr class="entry" id="dynamic_android.statistics.faces">
25028 <td class="entry_name
25030 android.<wbr/>statistics.<wbr/>faces
25032 <td class="entry_type">
25033 <span class="entry_type_name">int32</span>
25034 <span class="entry_type_container">x</span>
25036 <span class="entry_type_array">
25039 <span class="entry_type_visibility"> [java_public as face]</span>
25041 <span class="entry_type_synthetic">[synthetic] </span>
25043 <span class="entry_type_hwlevel">[legacy] </span>
25048 </td> <!-- entry_type -->
25050 <td class="entry_description">
25051 <p>List of the faces detected through camera face detection
25052 in this capture.<wbr/></p>
25055 <td class="entry_units">
25058 <td class="entry_range">
25061 <td class="entry_hal_version">
25065 <td class="entry_tags">
25069 <tr class="entries_header">
25070 <th class="th_details" colspan="6">Details</th>
25072 <tr class="entry_cont">
25073 <td class="entry_details" colspan="6">
25074 <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>
25079 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25080 <!-- end of entry -->
25083 <tr class="entry" id="dynamic_android.statistics.histogram">
25084 <td class="entry_name
25086 android.<wbr/>statistics.<wbr/>histogram
25088 <td class="entry_type">
25089 <span class="entry_type_name">int32</span>
25090 <span class="entry_type_container">x</span>
25092 <span class="entry_type_array">
25095 <span class="entry_type_visibility"> [system]</span>
25100 <div class="entry_type_notes">count of pixels for each color channel that fall into each histogram bucket,<wbr/> scaled to be between 0 and maxHistogramCount</div>
25103 </td> <!-- entry_type -->
25105 <td class="entry_description">
25106 <p>A 3-channel histogram based on the raw
25110 <td class="entry_units">
25113 <td class="entry_range">
25116 <td class="entry_hal_version">
25120 <td class="entry_tags">
25121 <ul class="entry_tags">
25122 <li><a href="#tag_FUTURE">FUTURE</a></li>
25127 <tr class="entries_header">
25128 <th class="th_details" colspan="6">Details</th>
25130 <tr class="entry_cont">
25131 <td class="entry_details" colspan="6">
25132 <p>The k'th bucket (0-based) covers the input range
25133 (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/>
25134 (k + 1) * w /<wbr/> N ).<wbr/> If only a monochrome sharpness map is
25135 supported,<wbr/> all channels should have the same data</p>
25140 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25141 <!-- end of entry -->
25144 <tr class="entry" id="dynamic_android.statistics.histogramMode">
25145 <td class="entry_name
25147 android.<wbr/>statistics.<wbr/>histogram<wbr/>Mode
25149 <td class="entry_type">
25150 <span class="entry_type_name entry_type_name_enum">byte</span>
25152 <span class="entry_type_visibility"> [system as boolean]</span>
25158 <ul class="entry_type_enum">
25160 <span class="entry_type_enum_name">OFF (v3.2)</span>
25163 <span class="entry_type_enum_name">ON (v3.2)</span>
25167 </td> <!-- entry_type -->
25169 <td class="entry_description">
25170 <p>Operating mode for histogram
25174 <td class="entry_units">
25177 <td class="entry_range">
25180 <td class="entry_hal_version">
25184 <td class="entry_tags">
25185 <ul class="entry_tags">
25186 <li><a href="#tag_FUTURE">FUTURE</a></li>
25193 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25194 <!-- end of entry -->
25197 <tr class="entry" id="dynamic_android.statistics.sharpnessMap">
25198 <td class="entry_name
25200 android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map
25202 <td class="entry_type">
25203 <span class="entry_type_name">int32</span>
25204 <span class="entry_type_container">x</span>
25206 <span class="entry_type_array">
25209 <span class="entry_type_visibility"> [system]</span>
25214 <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>
25217 </td> <!-- entry_type -->
25219 <td class="entry_description">
25220 <p>A 3-channel sharpness map,<wbr/> based on the raw
25224 <td class="entry_units">
25227 <td class="entry_range">
25230 <td class="entry_hal_version">
25234 <td class="entry_tags">
25235 <ul class="entry_tags">
25236 <li><a href="#tag_FUTURE">FUTURE</a></li>
25241 <tr class="entries_header">
25242 <th class="th_details" colspan="6">Details</th>
25244 <tr class="entry_cont">
25245 <td class="entry_details" colspan="6">
25246 <p>If only a monochrome sharpness map is supported,<wbr/>
25247 all channels should have the same data</p>
25252 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25253 <!-- end of entry -->
25256 <tr class="entry" id="dynamic_android.statistics.sharpnessMapMode">
25257 <td class="entry_name
25259 android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map<wbr/>Mode
25261 <td class="entry_type">
25262 <span class="entry_type_name entry_type_name_enum">byte</span>
25264 <span class="entry_type_visibility"> [system as boolean]</span>
25270 <ul class="entry_type_enum">
25272 <span class="entry_type_enum_name">OFF (v3.2)</span>
25275 <span class="entry_type_enum_name">ON (v3.2)</span>
25279 </td> <!-- entry_type -->
25281 <td class="entry_description">
25282 <p>Operating mode for sharpness map
25286 <td class="entry_units">
25289 <td class="entry_range">
25292 <td class="entry_hal_version">
25296 <td class="entry_tags">
25297 <ul class="entry_tags">
25298 <li><a href="#tag_FUTURE">FUTURE</a></li>
25305 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25306 <!-- end of entry -->
25309 <tr class="entry" id="dynamic_android.statistics.lensShadingCorrectionMap">
25310 <td class="entry_name
25312 android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Correction<wbr/>Map
25314 <td class="entry_type">
25315 <span class="entry_type_name">byte</span>
25317 <span class="entry_type_visibility"> [java_public as lensShadingMap]</span>
25320 <span class="entry_type_hwlevel">[full] </span>
25325 </td> <!-- entry_type -->
25327 <td class="entry_description">
25328 <p>The shading map is a low-resolution floating-point map
25329 that lists the coefficients used to correct for vignetting,<wbr/> for each
25330 Bayer color channel.<wbr/></p>
25333 <td class="entry_units">
25336 <td class="entry_range">
25337 <p>Each gain factor is >= 1</p>
25340 <td class="entry_hal_version">
25344 <td class="entry_tags">
25348 <tr class="entries_header">
25349 <th class="th_details" colspan="6">Details</th>
25351 <tr class="entry_cont">
25352 <td class="entry_details" colspan="6">
25353 <p>The map provided here is the same map that is used by the camera device to
25354 correct both color shading and vignetting for output non-RAW images.<wbr/></p>
25355 <p>When there is no lens shading correction applied to RAW
25356 output images (<a href="#static_android.sensor.info.lensShadingApplied">android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied</a> <code>==</code>
25357 false),<wbr/> this map is the complete lens shading correction
25358 map; when there is some lens shading correction applied to
25359 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
25360 correction map that needs to be applied to get shading
25361 corrected images that match the camera device's output for
25362 non-RAW formats.<wbr/></p>
25363 <p>For a complete shading correction map,<wbr/> the least shaded
25364 section of the image will have a gain factor of 1; all
25365 other sections will have gains above 1.<wbr/></p>
25366 <p>When <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> = TRANSFORM_<wbr/>MATRIX,<wbr/> the map
25367 will take into account the colorCorrection settings.<wbr/></p>
25368 <p>The shading map is for the entire active pixel array,<wbr/> and is not
25369 affected by the crop region specified in the request.<wbr/> Each shading map
25370 entry is the value of the shading compensation map over a specific
25371 pixel on the sensor.<wbr/> Specifically,<wbr/> with a (N x M) resolution shading
25372 map,<wbr/> and an active pixel array size (W x H),<wbr/> shading map entry
25373 (x,<wbr/>y) ϵ (0 ...<wbr/> N-1,<wbr/> 0 ...<wbr/> M-1) is the value of the shading map at
25374 pixel ( ((W-1)/<wbr/>(N-1)) * x,<wbr/> ((H-1)/<wbr/>(M-1)) * y) for the four color channels.<wbr/>
25375 The map is assumed to be bilinearly interpolated between the sample points.<wbr/></p>
25376 <p>The channel order is [R,<wbr/> Geven,<wbr/> Godd,<wbr/> B],<wbr/> where Geven is the green
25377 channel for the even rows of a Bayer pattern,<wbr/> and Godd is the odd rows.<wbr/>
25378 The shading map is stored in a fully interleaved format.<wbr/></p>
25379 <p>The shading map will generally have on the order of 30-40 rows and columns,<wbr/>
25380 and will be smaller than 64x64.<wbr/></p>
25381 <p>As an example,<wbr/> given a very small map defined as:</p>
25382 <pre><code>width,<wbr/>height = [ 4,<wbr/> 3 ]
25384 [ 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/>
25385 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/>
25386 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/>
25387 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/>
25388 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/>
25389 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 ]
25391 <p>The low-resolution scaling map images for each channel are
25392 (displayed using nearest-neighbor interpolation):</p>
25393 <p><img alt="Red lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/red_shading.png"/>
25394 <img alt="Green (even rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_e_shading.png"/>
25395 <img alt="Green (odd rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_o_shading.png"/>
25396 <img alt="Blue lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/blue_shading.png"/></p>
25397 <p>As a visualization only,<wbr/> inverting the full-color map to recover an
25398 image of a gray wall (using bicubic interpolation for visual quality) as captured by the sensor gives:</p>
25399 <p><img alt="Image of a uniform white wall (inverse shading map)" src="images/camera2/metadata/android.statistics.lensShadingMap/inv_shading.png"/></p>
25404 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25405 <!-- end of entry -->
25408 <tr class="entry" id="dynamic_android.statistics.lensShadingMap">
25409 <td class="entry_name
25411 android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map
25413 <td class="entry_type">
25414 <span class="entry_type_name">float</span>
25415 <span class="entry_type_container">x</span>
25417 <span class="entry_type_array">
25420 <span class="entry_type_visibility"> [ndk_public]</span>
25423 <span class="entry_type_hwlevel">[full] </span>
25426 <div class="entry_type_notes">2D array of float gain factors per channel to correct lens shading</div>
25429 </td> <!-- entry_type -->
25431 <td class="entry_description">
25432 <p>The shading map is a low-resolution floating-point map
25433 that lists the coefficients used to correct for vignetting and color shading,<wbr/>
25434 for each Bayer color channel of RAW image data.<wbr/></p>
25437 <td class="entry_units">
25440 <td class="entry_range">
25441 <p>Each gain factor is >= 1</p>
25444 <td class="entry_hal_version">
25448 <td class="entry_tags">
25452 <tr class="entries_header">
25453 <th class="th_details" colspan="6">Details</th>
25455 <tr class="entry_cont">
25456 <td class="entry_details" colspan="6">
25457 <p>The map provided here is the same map that is used by the camera device to
25458 correct both color shading and vignetting for output non-RAW images.<wbr/></p>
25459 <p>When there is no lens shading correction applied to RAW
25460 output images (<a href="#static_android.sensor.info.lensShadingApplied">android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied</a> <code>==</code>
25461 false),<wbr/> this map is the complete lens shading correction
25462 map; when there is some lens shading correction applied to
25463 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
25464 correction map that needs to be applied to get shading
25465 corrected images that match the camera device's output for
25466 non-RAW formats.<wbr/></p>
25467 <p>For a complete shading correction map,<wbr/> the least shaded
25468 section of the image will have a gain factor of 1; all
25469 other sections will have gains above 1.<wbr/></p>
25470 <p>When <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> = TRANSFORM_<wbr/>MATRIX,<wbr/> the map
25471 will take into account the colorCorrection settings.<wbr/></p>
25472 <p>The shading map is for the entire active pixel array,<wbr/> and is not
25473 affected by the crop region specified in the request.<wbr/> Each shading map
25474 entry is the value of the shading compensation map over a specific
25475 pixel on the sensor.<wbr/> Specifically,<wbr/> with a (N x M) resolution shading
25476 map,<wbr/> and an active pixel array size (W x H),<wbr/> shading map entry
25477 (x,<wbr/>y) ϵ (0 ...<wbr/> N-1,<wbr/> 0 ...<wbr/> M-1) is the value of the shading map at
25478 pixel ( ((W-1)/<wbr/>(N-1)) * x,<wbr/> ((H-1)/<wbr/>(M-1)) * y) for the four color channels.<wbr/>
25479 The map is assumed to be bilinearly interpolated between the sample points.<wbr/></p>
25480 <p>The channel order is [R,<wbr/> Geven,<wbr/> Godd,<wbr/> B],<wbr/> where Geven is the green
25481 channel for the even rows of a Bayer pattern,<wbr/> and Godd is the odd rows.<wbr/>
25482 The shading map is stored in a fully interleaved format,<wbr/> and its size
25483 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>
25484 <p>The shading map will generally have on the order of 30-40 rows and columns,<wbr/>
25485 and will be smaller than 64x64.<wbr/></p>
25486 <p>As an example,<wbr/> given a very small map defined as:</p>
25487 <pre><code><a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a> = [ 4,<wbr/> 3 ]
25488 <a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> =
25489 [ 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/>
25490 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/>
25491 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/>
25492 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/>
25493 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/>
25494 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 ]
25496 <p>The low-resolution scaling map images for each channel are
25497 (displayed using nearest-neighbor interpolation):</p>
25498 <p><img alt="Red lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/red_shading.png"/>
25499 <img alt="Green (even rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_e_shading.png"/>
25500 <img alt="Green (odd rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_o_shading.png"/>
25501 <img alt="Blue lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/blue_shading.png"/></p>
25502 <p>As a visualization only,<wbr/> inverting the full-color map to recover an
25503 image of a gray wall (using bicubic interpolation for visual quality)
25504 as captured by the sensor gives:</p>
25505 <p><img alt="Image of a uniform white wall (inverse shading map)" src="images/camera2/metadata/android.statistics.lensShadingMap/inv_shading.png"/></p>
25506 <p>Note that the RAW image data might be subject to lens shading
25507 correction not reported on this map.<wbr/> Query
25508 <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
25509 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>
25510 is TRUE,<wbr/> the RAW image data is subject to partial or full lens shading
25511 correction.<wbr/> In the case full lens shading correction is applied to RAW
25512 images,<wbr/> the gain factor map reported in this key will contain all 1.<wbr/>0 gains.<wbr/>
25513 In other words,<wbr/> the map reported in this key is the remaining lens shading
25514 that needs to be applied on the RAW image to get images without lens shading
25515 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
25520 <tr class="entries_header">
25521 <th class="th_details" colspan="6">HAL Implementation Details</th>
25523 <tr class="entry_cont">
25524 <td class="entry_details" colspan="6">
25525 <p>The lens shading map calculation may depend on exposure and white balance statistics.<wbr/>
25526 When AE and AWB are in AUTO modes
25527 (<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
25528 may have all the information it need to generate most accurate lens shading map.<wbr/> When
25529 AE or AWB are in manual mode
25530 (<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
25531 may be adversely impacted by manual exposure or white balance parameters.<wbr/> To avoid
25532 generating unreliable shading map data,<wbr/> the HAL may choose to lock the shading map with
25533 the latest known good map generated when the AE and AWB are in AUTO modes.<wbr/></p>
25537 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25538 <!-- end of entry -->
25541 <tr class="entry" id="dynamic_android.statistics.predictedColorGains">
25542 <td class="entry_name
25543 entry_name_deprecated
25545 android.<wbr/>statistics.<wbr/>predicted<wbr/>Color<wbr/>Gains
25547 <td class="entry_type">
25548 <span class="entry_type_name">float</span>
25549 <span class="entry_type_container">x</span>
25551 <span class="entry_type_array">
25554 <span class="entry_type_visibility"> [hidden]</span>
25558 <span class="entry_type_deprecated">[deprecated] </span>
25560 <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div>
25563 </td> <!-- entry_type -->
25565 <td class="entry_description">
25566 <p>The best-fit color channel gains calculated
25567 by the camera device's statistics units for the current output frame.<wbr/></p>
25570 <td class="entry_units">
25573 <td class="entry_range">
25574 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
25577 <td class="entry_hal_version">
25581 <td class="entry_tags">
25585 <tr class="entries_header">
25586 <th class="th_details" colspan="6">Details</th>
25588 <tr class="entry_cont">
25589 <td class="entry_details" colspan="6">
25590 <p>This may be different than the gains used for this frame,<wbr/>
25591 since statistics processing on data from a new frame
25592 typically completes after the transform has already been
25593 applied to that frame.<wbr/></p>
25594 <p>The 4 channel gains are defined in Bayer domain,<wbr/>
25595 see <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> for details.<wbr/></p>
25596 <p>This value should always be calculated by the auto-white balance (AWB) block,<wbr/>
25597 regardless of the android.<wbr/>control.<wbr/>* current values.<wbr/></p>
25602 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25603 <!-- end of entry -->
25606 <tr class="entry" id="dynamic_android.statistics.predictedColorTransform">
25607 <td class="entry_name
25608 entry_name_deprecated
25610 android.<wbr/>statistics.<wbr/>predicted<wbr/>Color<wbr/>Transform
25612 <td class="entry_type">
25613 <span class="entry_type_name">rational</span>
25614 <span class="entry_type_container">x</span>
25616 <span class="entry_type_array">
25619 <span class="entry_type_visibility"> [hidden]</span>
25623 <span class="entry_type_deprecated">[deprecated] </span>
25625 <div class="entry_type_notes">3x3 rational matrix in row-major order</div>
25628 </td> <!-- entry_type -->
25630 <td class="entry_description">
25631 <p>The best-fit color transform matrix estimate
25632 calculated by the camera device's statistics units for the current
25633 output frame.<wbr/></p>
25636 <td class="entry_units">
25639 <td class="entry_range">
25640 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
25643 <td class="entry_hal_version">
25647 <td class="entry_tags">
25651 <tr class="entries_header">
25652 <th class="th_details" colspan="6">Details</th>
25654 <tr class="entry_cont">
25655 <td class="entry_details" colspan="6">
25656 <p>The camera device will provide the estimate from its
25657 statistics unit on the white balance transforms to use
25658 for the next frame.<wbr/> These are the values the camera device believes
25659 are the best fit for the current output frame.<wbr/> This may
25660 be different than the transform used for this frame,<wbr/> since
25661 statistics processing on data from a new frame typically
25662 completes after the transform has already been applied to
25663 that frame.<wbr/></p>
25664 <p>These estimates must be provided for all frames,<wbr/> even if
25665 capture settings and color transforms are set by the application.<wbr/></p>
25666 <p>This value should always be calculated by the auto-white balance (AWB) block,<wbr/>
25667 regardless of the android.<wbr/>control.<wbr/>* current values.<wbr/></p>
25672 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25673 <!-- end of entry -->
25676 <tr class="entry" id="dynamic_android.statistics.sceneFlicker">
25677 <td class="entry_name
25679 android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker
25681 <td class="entry_type">
25682 <span class="entry_type_name entry_type_name_enum">byte</span>
25684 <span class="entry_type_visibility"> [public]</span>
25687 <span class="entry_type_hwlevel">[full] </span>
25691 <ul class="entry_type_enum">
25693 <span class="entry_type_enum_name">NONE (v3.2)</span>
25694 <span class="entry_type_enum_notes"><p>The camera device does not detect any flickering illumination
25695 in the current scene.<wbr/></p></span>
25698 <span class="entry_type_enum_name">50HZ (v3.2)</span>
25699 <span class="entry_type_enum_notes"><p>The camera device detects illumination flickering at 50Hz
25700 in the current scene.<wbr/></p></span>
25703 <span class="entry_type_enum_name">60HZ (v3.2)</span>
25704 <span class="entry_type_enum_notes"><p>The camera device detects illumination flickering at 60Hz
25705 in the current scene.<wbr/></p></span>
25709 </td> <!-- entry_type -->
25711 <td class="entry_description">
25712 <p>The camera device estimated scene illumination lighting
25713 frequency.<wbr/></p>
25716 <td class="entry_units">
25719 <td class="entry_range">
25722 <td class="entry_hal_version">
25726 <td class="entry_tags">
25730 <tr class="entries_header">
25731 <th class="th_details" colspan="6">Details</th>
25733 <tr class="entry_cont">
25734 <td class="entry_details" colspan="6">
25735 <p>Many light sources,<wbr/> such as most fluorescent lights,<wbr/> flicker at a rate
25736 that depends on the local utility power standards.<wbr/> This flicker must be
25737 accounted for by auto-exposure routines to avoid artifacts in captured images.<wbr/>
25738 The camera device uses this entry to tell the application what the scene
25739 illuminant frequency is.<wbr/></p>
25740 <p>When manual exposure control is enabled
25741 (<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> ==
25742 OFF</code>),<wbr/> the <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> doesn't perform
25743 antibanding,<wbr/> and the application can ensure it selects
25744 exposure times that do not cause banding issues by looking
25745 into this metadata field.<wbr/> See
25746 <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> for more details.<wbr/></p>
25747 <p>Reports NONE if there doesn't appear to be flickering illumination.<wbr/></p>
25752 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25753 <!-- end of entry -->
25756 <tr class="entry" id="dynamic_android.statistics.hotPixelMapMode">
25757 <td class="entry_name
25759 android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode
25761 <td class="entry_type">
25762 <span class="entry_type_name entry_type_name_enum">byte</span>
25764 <span class="entry_type_visibility"> [public as boolean]</span>
25770 <ul class="entry_type_enum">
25772 <span class="entry_type_enum_name">OFF (v3.2)</span>
25773 <span class="entry_type_enum_notes"><p>Hot pixel map production is disabled.<wbr/></p></span>
25776 <span class="entry_type_enum_name">ON (v3.2)</span>
25777 <span class="entry_type_enum_notes"><p>Hot pixel map production is enabled.<wbr/></p></span>
25781 </td> <!-- entry_type -->
25783 <td class="entry_description">
25784 <p>Operating mode for hot pixel map generation.<wbr/></p>
25787 <td class="entry_units">
25790 <td class="entry_range">
25791 <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>
25794 <td class="entry_hal_version">
25798 <td class="entry_tags">
25799 <ul class="entry_tags">
25800 <li><a href="#tag_V1">V1</a></li>
25801 <li><a href="#tag_RAW">RAW</a></li>
25806 <tr class="entries_header">
25807 <th class="th_details" colspan="6">Details</th>
25809 <tr class="entry_cont">
25810 <td class="entry_details" colspan="6">
25811 <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/>
25812 If set to <code>false</code>,<wbr/> no hot pixel map will be returned.<wbr/></p>
25817 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25818 <!-- end of entry -->
25821 <tr class="entry" id="dynamic_android.statistics.hotPixelMap">
25822 <td class="entry_name
25824 android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map
25826 <td class="entry_type">
25827 <span class="entry_type_name">int32</span>
25828 <span class="entry_type_container">x</span>
25830 <span class="entry_type_array">
25833 <span class="entry_type_visibility"> [public as point]</span>
25838 <div class="entry_type_notes">list of coordinates based on android.<wbr/>sensor.<wbr/>pixel<wbr/>Array<wbr/>Size</div>
25841 </td> <!-- entry_type -->
25843 <td class="entry_description">
25844 <p>List of <code>(x,<wbr/> y)</code> coordinates of hot/<wbr/>defective pixels on the sensor.<wbr/></p>
25847 <td class="entry_units">
25850 <td class="entry_range">
25851 <p>n <= number of pixels on the sensor.<wbr/>
25852 The <code>(x,<wbr/> y)</code> coordinates must be bounded by
25853 <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
25856 <td class="entry_hal_version">
25860 <td class="entry_tags">
25861 <ul class="entry_tags">
25862 <li><a href="#tag_V1">V1</a></li>
25863 <li><a href="#tag_RAW">RAW</a></li>
25868 <tr class="entries_header">
25869 <th class="th_details" colspan="6">Details</th>
25871 <tr class="entry_cont">
25872 <td class="entry_details" colspan="6">
25873 <p>A coordinate <code>(x,<wbr/> y)</code> must lie between <code>(0,<wbr/> 0)</code>,<wbr/> and
25874 <code>(width - 1,<wbr/> height - 1)</code> (inclusive),<wbr/> which are the top-left and
25875 bottom-right of the pixel array,<wbr/> respectively.<wbr/> The width and
25876 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/>
25877 This may include hot pixels that lie outside of the active array
25878 bounds given by <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
25882 <tr class="entries_header">
25883 <th class="th_details" colspan="6">HAL Implementation Details</th>
25885 <tr class="entry_cont">
25886 <td class="entry_details" colspan="6">
25887 <p>A hotpixel map contains the coordinates of pixels on the camera
25888 sensor that do report valid values (usually due to defects in
25889 the camera sensor).<wbr/> This includes pixels that are stuck at certain
25890 values,<wbr/> or have a response that does not accuractly encode the
25891 incoming light from the scene.<wbr/></p>
25892 <p>To avoid performance issues,<wbr/> there should be significantly fewer hot
25893 pixels than actual pixels on the camera sensor.<wbr/></p>
25897 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25898 <!-- end of entry -->
25901 <tr class="entry" id="dynamic_android.statistics.lensShadingMapMode">
25902 <td class="entry_name
25904 android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode
25906 <td class="entry_type">
25907 <span class="entry_type_name entry_type_name_enum">byte</span>
25909 <span class="entry_type_visibility"> [public]</span>
25912 <span class="entry_type_hwlevel">[full] </span>
25916 <ul class="entry_type_enum">
25918 <span class="entry_type_enum_name">OFF (v3.2)</span>
25919 <span class="entry_type_enum_notes"><p>Do not include a lens shading map in the capture result.<wbr/></p></span>
25922 <span class="entry_type_enum_name">ON (v3.2)</span>
25923 <span class="entry_type_enum_notes"><p>Include a lens shading map in the capture result.<wbr/></p></span>
25927 </td> <!-- entry_type -->
25929 <td class="entry_description">
25930 <p>Whether the camera device will output the lens
25931 shading map in output result metadata.<wbr/></p>
25934 <td class="entry_units">
25937 <td class="entry_range">
25938 <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>
25941 <td class="entry_hal_version">
25945 <td class="entry_tags">
25946 <ul class="entry_tags">
25947 <li><a href="#tag_RAW">RAW</a></li>
25952 <tr class="entries_header">
25953 <th class="th_details" colspan="6">Details</th>
25955 <tr class="entry_cont">
25956 <td class="entry_details" colspan="6">
25957 <p>When set to ON,<wbr/>
25958 <a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> will be provided in
25959 the output result metadata.<wbr/></p>
25960 <p>ON is always supported on devices with the RAW capability.<wbr/></p>
25965 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25966 <!-- end of entry -->
25969 <tr class="entry" id="dynamic_android.statistics.oisDataMode">
25970 <td class="entry_name
25972 android.<wbr/>statistics.<wbr/>ois<wbr/>Data<wbr/>Mode
25974 <td class="entry_type">
25975 <span class="entry_type_name entry_type_name_enum">byte</span>
25977 <span class="entry_type_visibility"> [public]</span>
25983 <ul class="entry_type_enum">
25985 <span class="entry_type_enum_name">OFF (v3.3)</span>
25986 <span class="entry_type_enum_notes"><p>Do not include OIS data in the capture result.<wbr/></p></span>
25989 <span class="entry_type_enum_name">ON (v3.3)</span>
25990 <span class="entry_type_enum_notes"><p>Include OIS data in the capture result.<wbr/></p></span>
25994 </td> <!-- entry_type -->
25996 <td class="entry_description">
25997 <p>A control for selecting whether OIS position information is included in output
25998 result metadata.<wbr/></p>
26001 <td class="entry_units">
26004 <td class="entry_range">
26005 <p>android.<wbr/>Statistics.<wbr/>info.<wbr/>available<wbr/>Ois<wbr/>Data<wbr/>Modes</p>
26008 <td class="entry_hal_version">
26012 <td class="entry_tags">
26016 <tr class="entries_header">
26017 <th class="th_details" colspan="6">Details</th>
26019 <tr class="entry_cont">
26020 <td class="entry_details" colspan="6">
26021 <p>When set to ON,<wbr/>
26022 <a href="#dynamic_android.statistics.oisTimestamps">android.<wbr/>statistics.<wbr/>ois<wbr/>Timestamps</a>,<wbr/> android.<wbr/>statistics.<wbr/>ois<wbr/>Shift<wbr/>Pixel<wbr/>X,<wbr/>
26023 and android.<wbr/>statistics.<wbr/>ois<wbr/>Shift<wbr/>Pixel<wbr/>Y provide OIS data in the output result metadata.<wbr/></p>
26028 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26029 <!-- end of entry -->
26032 <tr class="entry" id="dynamic_android.statistics.oisTimestamps">
26033 <td class="entry_name
26035 android.<wbr/>statistics.<wbr/>ois<wbr/>Timestamps
26037 <td class="entry_type">
26038 <span class="entry_type_name">int64</span>
26039 <span class="entry_type_container">x</span>
26041 <span class="entry_type_array">
26044 <span class="entry_type_visibility"> [public]</span>
26051 </td> <!-- entry_type -->
26053 <td class="entry_description">
26054 <p>An array of timestamps of OIS samples,<wbr/> in nanoseconds.<wbr/></p>
26057 <td class="entry_units">
26061 <td class="entry_range">
26064 <td class="entry_hal_version">
26068 <td class="entry_tags">
26072 <tr class="entries_header">
26073 <th class="th_details" colspan="6">Details</th>
26075 <tr class="entry_cont">
26076 <td class="entry_details" colspan="6">
26077 <p>The array contains the timestamps of OIS samples.<wbr/> The timestamps are in the same
26078 timebase as and comparable to <a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a>.<wbr/></p>
26083 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26084 <!-- end of entry -->
26087 <tr class="entry" id="dynamic_android.statistics.oisXShifts">
26088 <td class="entry_name
26090 android.<wbr/>statistics.<wbr/>ois<wbr/>XShifts
26092 <td class="entry_type">
26093 <span class="entry_type_name">float</span>
26094 <span class="entry_type_container">x</span>
26096 <span class="entry_type_array">
26099 <span class="entry_type_visibility"> [public]</span>
26106 </td> <!-- entry_type -->
26108 <td class="entry_description">
26109 <p>An array of shifts of OIS samples,<wbr/> in x direction.<wbr/></p>
26112 <td class="entry_units">
26113 Pixels in active array.<wbr/>
26116 <td class="entry_range">
26119 <td class="entry_hal_version">
26123 <td class="entry_tags">
26127 <tr class="entries_header">
26128 <th class="th_details" colspan="6">Details</th>
26130 <tr class="entry_cont">
26131 <td class="entry_details" colspan="6">
26132 <p>The array contains the amount of shifts in x direction,<wbr/> in pixels,<wbr/> based on OIS samples.<wbr/>
26133 A positive value is a shift from left to right in active array coordinate system.<wbr/> For
26134 example,<wbr/> if the optical center is (1000,<wbr/> 500) in active array coordinates,<wbr/> an shift of
26135 (3,<wbr/> 0) puts the new optical center at (1003,<wbr/> 500).<wbr/></p>
26136 <p>The number of shifts must match the number of timestamps in
26137 <a href="#dynamic_android.statistics.oisTimestamps">android.<wbr/>statistics.<wbr/>ois<wbr/>Timestamps</a>.<wbr/></p>
26142 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26143 <!-- end of entry -->
26146 <tr class="entry" id="dynamic_android.statistics.oisYShifts">
26147 <td class="entry_name
26149 android.<wbr/>statistics.<wbr/>ois<wbr/>YShifts
26151 <td class="entry_type">
26152 <span class="entry_type_name">float</span>
26153 <span class="entry_type_container">x</span>
26155 <span class="entry_type_array">
26158 <span class="entry_type_visibility"> [public]</span>
26165 </td> <!-- entry_type -->
26167 <td class="entry_description">
26168 <p>An array of shifts of OIS samples,<wbr/> in y direction.<wbr/></p>
26171 <td class="entry_units">
26172 Pixels in active array.<wbr/>
26175 <td class="entry_range">
26178 <td class="entry_hal_version">
26182 <td class="entry_tags">
26186 <tr class="entries_header">
26187 <th class="th_details" colspan="6">Details</th>
26189 <tr class="entry_cont">
26190 <td class="entry_details" colspan="6">
26191 <p>The array contains the amount of shifts in y direction,<wbr/> in pixels,<wbr/> based on OIS samples.<wbr/>
26192 A positive value is a shift from top to bottom in active array coordinate system.<wbr/> For
26193 example,<wbr/> if the optical center is (1000,<wbr/> 500) in active array coordinates,<wbr/> an shift of
26194 (0,<wbr/> 5) puts the new optical center at (1000,<wbr/> 505).<wbr/></p>
26195 <p>The number of shifts must match the number of timestamps in
26196 <a href="#dynamic_android.statistics.oisTimestamps">android.<wbr/>statistics.<wbr/>ois<wbr/>Timestamps</a>.<wbr/></p>
26201 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26202 <!-- end of entry -->
26206 <!-- end of kind -->
26209 <!-- end of section -->
26210 <tr><td colspan="7" id="section_tonemap" class="section">tonemap</td></tr>
26213 <tr><td colspan="7" class="kind">controls</td></tr>
26215 <thead class="entries_header">
26217 <th class="th_name">Property Name</th>
26218 <th class="th_type">Type</th>
26219 <th class="th_description">Description</th>
26220 <th class="th_units">Units</th>
26221 <th class="th_range">Range</th>
26222 <th class="th_hal_version">Initial HIDL HAL version</th>
26223 <th class="th_tags">Tags</th>
26238 <tr class="entry" id="controls_android.tonemap.curveBlue">
26239 <td class="entry_name
26241 android.<wbr/>tonemap.<wbr/>curve<wbr/>Blue
26243 <td class="entry_type">
26244 <span class="entry_type_name">float</span>
26245 <span class="entry_type_container">x</span>
26247 <span class="entry_type_array">
26250 <span class="entry_type_visibility"> [ndk_public]</span>
26253 <span class="entry_type_hwlevel">[full] </span>
26256 <div class="entry_type_notes">1D array of float pairs (P_<wbr/>IN,<wbr/> P_<wbr/>OUT).<wbr/> The maximum number of pairs is specified by android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points.<wbr/></div>
26259 </td> <!-- entry_type -->
26261 <td class="entry_description">
26262 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the blue
26263 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
26264 CONTRAST_<wbr/>CURVE.<wbr/></p>
26267 <td class="entry_units">
26270 <td class="entry_range">
26273 <td class="entry_hal_version">
26277 <td class="entry_tags">
26281 <tr class="entries_header">
26282 <th class="th_details" colspan="6">Details</th>
26284 <tr class="entry_cont">
26285 <td class="entry_details" colspan="6">
26286 <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
26291 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26292 <!-- end of entry -->
26295 <tr class="entry" id="controls_android.tonemap.curveGreen">
26296 <td class="entry_name
26298 android.<wbr/>tonemap.<wbr/>curve<wbr/>Green
26300 <td class="entry_type">
26301 <span class="entry_type_name">float</span>
26302 <span class="entry_type_container">x</span>
26304 <span class="entry_type_array">
26307 <span class="entry_type_visibility"> [ndk_public]</span>
26310 <span class="entry_type_hwlevel">[full] </span>
26313 <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>
26316 </td> <!-- entry_type -->
26318 <td class="entry_description">
26319 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the green
26320 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
26321 CONTRAST_<wbr/>CURVE.<wbr/></p>
26324 <td class="entry_units">
26327 <td class="entry_range">
26330 <td class="entry_hal_version">
26334 <td class="entry_tags">
26338 <tr class="entries_header">
26339 <th class="th_details" colspan="6">Details</th>
26341 <tr class="entry_cont">
26342 <td class="entry_details" colspan="6">
26343 <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
26348 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26349 <!-- end of entry -->
26352 <tr class="entry" id="controls_android.tonemap.curveRed">
26353 <td class="entry_name
26355 android.<wbr/>tonemap.<wbr/>curve<wbr/>Red
26357 <td class="entry_type">
26358 <span class="entry_type_name">float</span>
26359 <span class="entry_type_container">x</span>
26361 <span class="entry_type_array">
26364 <span class="entry_type_visibility"> [ndk_public]</span>
26367 <span class="entry_type_hwlevel">[full] </span>
26370 <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>
26373 </td> <!-- entry_type -->
26375 <td class="entry_description">
26376 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the red
26377 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
26378 CONTRAST_<wbr/>CURVE.<wbr/></p>
26381 <td class="entry_units">
26384 <td class="entry_range">
26385 <p>0-1 on both input and output coordinates,<wbr/> normalized
26386 as a floating-point value such that 0 == black and 1 == white.<wbr/></p>
26389 <td class="entry_hal_version">
26393 <td class="entry_tags">
26397 <tr class="entries_header">
26398 <th class="th_details" colspan="6">Details</th>
26400 <tr class="entry_cont">
26401 <td class="entry_details" colspan="6">
26402 <p>Each channel's curve is defined by an array of control points:</p>
26403 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> =
26404 [ P0in,<wbr/> P0out,<wbr/> P1in,<wbr/> P1out,<wbr/> P2in,<wbr/> P2out,<wbr/> P3in,<wbr/> P3out,<wbr/> ...,<wbr/> PNin,<wbr/> PNout ]
26405 2 <= N <= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
26406 <p>These are sorted in order of increasing <code>Pin</code>; it is
26407 required that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
26408 define a complete mapping.<wbr/> For input values between control points,<wbr/>
26409 the camera device must linearly interpolate between the control
26411 <p>Each curve can have an independent number of points,<wbr/> and the number
26412 of points can be less than max (that is,<wbr/> the request doesn't have to
26413 always provide a curve with number of points equivalent to
26414 <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
26415 <p>A few examples,<wbr/> and their corresponding graphical mappings; these
26416 only specify the red channel and the precision is limited to 4
26417 digits,<wbr/> for conciseness.<wbr/></p>
26418 <p>Linear mapping:</p>
26419 <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 ]
26421 <p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
26422 <p>Invert mapping:</p>
26423 <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 ]
26425 <p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
26426 <p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
26427 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
26428 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/>
26429 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/>
26430 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/>
26431 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 ]
26433 <p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
26434 <p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
26435 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
26436 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/>
26437 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/>
26438 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/>
26439 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 ]
26441 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
26445 <tr class="entries_header">
26446 <th class="th_details" colspan="6">HAL Implementation Details</th>
26448 <tr class="entry_cont">
26449 <td class="entry_details" colspan="6">
26450 <p>For good quality of mapping,<wbr/> at least 128 control points are
26451 preferred.<wbr/></p>
26452 <p>A typical use case of this would be a gamma-1/<wbr/>2.<wbr/>2 curve,<wbr/> with as many
26453 control points used as are available.<wbr/></p>
26457 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26458 <!-- end of entry -->
26461 <tr class="entry" id="controls_android.tonemap.curve">
26462 <td class="entry_name
26464 android.<wbr/>tonemap.<wbr/>curve
26466 <td class="entry_type">
26467 <span class="entry_type_name">float</span>
26469 <span class="entry_type_visibility"> [java_public as tonemapCurve]</span>
26471 <span class="entry_type_synthetic">[synthetic] </span>
26473 <span class="entry_type_hwlevel">[full] </span>
26478 </td> <!-- entry_type -->
26480 <td class="entry_description">
26481 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a>
26482 is CONTRAST_<wbr/>CURVE.<wbr/></p>
26485 <td class="entry_units">
26488 <td class="entry_range">
26491 <td class="entry_hal_version">
26495 <td class="entry_tags">
26499 <tr class="entries_header">
26500 <th class="th_details" colspan="6">Details</th>
26502 <tr class="entry_cont">
26503 <td class="entry_details" colspan="6">
26504 <p>The tonemapCurve consist of three curves for each of red,<wbr/> green,<wbr/> and blue
26505 channels respectively.<wbr/> The following example uses the red channel as an
26506 example.<wbr/> The same logic applies to green and blue channel.<wbr/>
26507 Each channel's curve is defined by an array of control points:</p>
26508 <pre><code>curveRed =
26509 [ 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) ]
26510 2 <= N <= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
26511 <p>These are sorted in order of increasing <code>Pin</code>; it is always
26512 guaranteed that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
26513 define a complete mapping.<wbr/> For input values between control points,<wbr/>
26514 the camera device must linearly interpolate between the control
26516 <p>Each curve can have an independent number of points,<wbr/> and the number
26517 of points can be less than max (that is,<wbr/> the request doesn't have to
26518 always provide a curve with number of points equivalent to
26519 <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
26520 <p>A few examples,<wbr/> and their corresponding graphical mappings; these
26521 only specify the red channel and the precision is limited to 4
26522 digits,<wbr/> for conciseness.<wbr/></p>
26523 <p>Linear mapping:</p>
26524 <pre><code>curveRed = [ (0,<wbr/> 0),<wbr/> (1.<wbr/>0,<wbr/> 1.<wbr/>0) ]
26526 <p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
26527 <p>Invert mapping:</p>
26528 <pre><code>curveRed = [ (0,<wbr/> 1.<wbr/>0),<wbr/> (1.<wbr/>0,<wbr/> 0) ]
26530 <p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
26531 <p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
26532 <pre><code>curveRed = [
26533 (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/>
26534 (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/>
26535 (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/>
26536 (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) ]
26538 <p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
26539 <p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
26540 <pre><code>curveRed = [
26541 (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/>
26542 (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/>
26543 (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/>
26544 (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) ]
26546 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
26550 <tr class="entries_header">
26551 <th class="th_details" colspan="6">HAL Implementation Details</th>
26553 <tr class="entry_cont">
26554 <td class="entry_details" colspan="6">
26555 <p>This entry is created by the framework from the curveRed,<wbr/> curveGreen and
26556 curveBlue entries.<wbr/></p>
26560 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26561 <!-- end of entry -->
26564 <tr class="entry" id="controls_android.tonemap.mode">
26565 <td class="entry_name
26567 android.<wbr/>tonemap.<wbr/>mode
26569 <td class="entry_type">
26570 <span class="entry_type_name entry_type_name_enum">byte</span>
26572 <span class="entry_type_visibility"> [public]</span>
26575 <span class="entry_type_hwlevel">[full] </span>
26579 <ul class="entry_type_enum">
26581 <span class="entry_type_enum_name">CONTRAST_CURVE (v3.2)</span>
26582 <span class="entry_type_enum_notes"><p>Use the tone mapping curve specified in
26583 the <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>* entries.<wbr/></p>
26584 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
26585 for applying the tonemapping curve specified by
26586 <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p>
26587 <p>Must not slow down frame rate relative to raw
26588 sensor output.<wbr/></p></span>
26591 <span class="entry_type_enum_name">FAST (v3.2)</span>
26592 <span class="entry_type_enum_notes"><p>Advanced gamma mapping and color enhancement may be applied,<wbr/> without
26593 reducing frame rate compared to raw sensor output.<wbr/></p></span>
26596 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
26597 <span class="entry_type_enum_notes"><p>High-quality gamma mapping and color enhancement will be applied,<wbr/> at
26598 the cost of possibly reduced frame rate compared to raw sensor output.<wbr/></p></span>
26601 <span class="entry_type_enum_name">GAMMA_VALUE (v3.2)</span>
26602 <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
26603 tonemapping.<wbr/></p>
26604 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
26605 for applying the tonemapping curve specified by <a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a>.<wbr/></p>
26606 <p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
26609 <span class="entry_type_enum_name">PRESET_CURVE (v3.2)</span>
26610 <span class="entry_type_enum_notes"><p>Use the preset tonemapping curve specified in
26611 <a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a> to peform tonemapping.<wbr/></p>
26612 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
26613 for applying the tonemapping curve specified by
26614 <a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a>.<wbr/></p>
26615 <p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
26619 </td> <!-- entry_type -->
26621 <td class="entry_description">
26622 <p>High-level global contrast/<wbr/>gamma/<wbr/>tonemapping control.<wbr/></p>
26625 <td class="entry_units">
26628 <td class="entry_range">
26629 <p><a href="#static_android.tonemap.availableToneMapModes">android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes</a></p>
26632 <td class="entry_hal_version">
26636 <td class="entry_tags">
26640 <tr class="entries_header">
26641 <th class="th_details" colspan="6">Details</th>
26643 <tr class="entry_cont">
26644 <td class="entry_details" colspan="6">
26645 <p>When switching to an application-defined contrast curve by setting
26646 <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> to CONTRAST_<wbr/>CURVE,<wbr/> the curve is defined
26647 per-channel with a set of <code>(in,<wbr/> out)</code> points that specify the
26648 mapping from input high-bit-depth pixel value to the output
26649 low-bit-depth value.<wbr/> Since the actual pixel ranges of both input
26650 and output may change depending on the camera pipeline,<wbr/> the values
26651 are specified by normalized floating-point numbers.<wbr/></p>
26652 <p>More-complex color mapping operations such as 3D color look-up
26653 tables,<wbr/> selective chroma enhancement,<wbr/> or other non-linear color
26654 transforms will be disabled when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
26655 CONTRAST_<wbr/>CURVE.<wbr/></p>
26656 <p>When using either FAST or HIGH_<wbr/>QUALITY,<wbr/> the camera device will
26657 emit its own tonemap curve in <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/>
26658 These values are always available,<wbr/> and as close as possible to the
26659 actually used nonlinear/<wbr/>nonglobal transforms.<wbr/></p>
26660 <p>If a request is sent with CONTRAST_<wbr/>CURVE with the camera device's
26661 provided curve in FAST or HIGH_<wbr/>QUALITY,<wbr/> the image's tonemap will be
26662 roughly the same.<wbr/></p>
26667 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26668 <!-- end of entry -->
26671 <tr class="entry" id="controls_android.tonemap.gamma">
26672 <td class="entry_name
26674 android.<wbr/>tonemap.<wbr/>gamma
26676 <td class="entry_type">
26677 <span class="entry_type_name">float</span>
26679 <span class="entry_type_visibility"> [public]</span>
26686 </td> <!-- entry_type -->
26688 <td class="entry_description">
26689 <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
26690 GAMMA_<wbr/>VALUE</p>
26693 <td class="entry_units">
26696 <td class="entry_range">
26699 <td class="entry_hal_version">
26703 <td class="entry_tags">
26707 <tr class="entries_header">
26708 <th class="th_details" colspan="6">Details</th>
26710 <tr class="entry_cont">
26711 <td class="entry_details" colspan="6">
26712 <p>The tonemap curve will be defined the following formula:
26713 * OUT = pow(IN,<wbr/> 1.<wbr/>0 /<wbr/> gamma)
26714 where IN and OUT is the input pixel value scaled to range [0.<wbr/>0,<wbr/> 1.<wbr/>0],<wbr/>
26715 pow is the power function and gamma is the gamma value specified by this
26717 <p>The same curve will be applied to all color channels.<wbr/> The camera device
26718 may clip the input gamma value to its supported range.<wbr/> The actual applied
26719 value will be returned in capture result.<wbr/></p>
26720 <p>The valid range of gamma value varies on different devices,<wbr/> but values
26721 within [1.<wbr/>0,<wbr/> 5.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
26726 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26727 <!-- end of entry -->
26730 <tr class="entry" id="controls_android.tonemap.presetCurve">
26731 <td class="entry_name
26733 android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve
26735 <td class="entry_type">
26736 <span class="entry_type_name entry_type_name_enum">byte</span>
26738 <span class="entry_type_visibility"> [public]</span>
26744 <ul class="entry_type_enum">
26746 <span class="entry_type_enum_name">SRGB (v3.2)</span>
26747 <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by sRGB</p></span>
26750 <span class="entry_type_enum_name">REC709 (v3.2)</span>
26751 <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by ITU-R BT.<wbr/>709</p></span>
26755 </td> <!-- entry_type -->
26757 <td class="entry_description">
26758 <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
26759 PRESET_<wbr/>CURVE</p>
26762 <td class="entry_units">
26765 <td class="entry_range">
26768 <td class="entry_hal_version">
26772 <td class="entry_tags">
26776 <tr class="entries_header">
26777 <th class="th_details" colspan="6">Details</th>
26779 <tr class="entry_cont">
26780 <td class="entry_details" colspan="6">
26781 <p>The tonemap curve will be defined by specified standard.<wbr/></p>
26782 <p>sRGB (approximated by 16 control points):</p>
26783 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
26784 <p>Rec.<wbr/> 709 (approximated by 16 control points):</p>
26785 <p><img alt="Rec. 709 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/rec709_tonemap.png"/></p>
26786 <p>Note that above figures show a 16 control points approximation of preset
26787 curves.<wbr/> Camera devices may apply a different approximation to the curve.<wbr/></p>
26792 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26793 <!-- end of entry -->
26797 <!-- end of kind -->
26799 <tr><td colspan="7" class="kind">static</td></tr>
26801 <thead class="entries_header">
26803 <th class="th_name">Property Name</th>
26804 <th class="th_type">Type</th>
26805 <th class="th_description">Description</th>
26806 <th class="th_units">Units</th>
26807 <th class="th_range">Range</th>
26808 <th class="th_hal_version">Initial HIDL HAL version</th>
26809 <th class="th_tags">Tags</th>
26824 <tr class="entry" id="static_android.tonemap.maxCurvePoints">
26825 <td class="entry_name
26827 android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points
26829 <td class="entry_type">
26830 <span class="entry_type_name">int32</span>
26832 <span class="entry_type_visibility"> [public]</span>
26835 <span class="entry_type_hwlevel">[full] </span>
26840 </td> <!-- entry_type -->
26842 <td class="entry_description">
26843 <p>Maximum number of supported points in the
26844 tonemap curve that can be used for <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p>
26847 <td class="entry_units">
26850 <td class="entry_range">
26853 <td class="entry_hal_version">
26857 <td class="entry_tags">
26861 <tr class="entries_header">
26862 <th class="th_details" colspan="6">Details</th>
26864 <tr class="entry_cont">
26865 <td class="entry_details" colspan="6">
26866 <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
26867 less than this maximum,<wbr/> the camera device will resample the curve to its internal
26868 representation,<wbr/> using linear interpolation.<wbr/></p>
26869 <p>The output curves in the result metadata may have a different number
26870 of points than the input curves,<wbr/> and will represent the actual
26871 hardware curves used as closely as possible when linearly interpolated.<wbr/></p>
26875 <tr class="entries_header">
26876 <th class="th_details" colspan="6">HAL Implementation Details</th>
26878 <tr class="entry_cont">
26879 <td class="entry_details" colspan="6">
26880 <p>This value must be at least 64.<wbr/> This should be at least 128.<wbr/></p>
26884 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26885 <!-- end of entry -->
26888 <tr class="entry" id="static_android.tonemap.availableToneMapModes">
26889 <td class="entry_name
26891 android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes
26893 <td class="entry_type">
26894 <span class="entry_type_name">byte</span>
26895 <span class="entry_type_container">x</span>
26897 <span class="entry_type_array">
26900 <span class="entry_type_visibility"> [public as enumList]</span>
26903 <span class="entry_type_hwlevel">[full] </span>
26906 <div class="entry_type_notes">list of enums</div>
26909 </td> <!-- entry_type -->
26911 <td class="entry_description">
26912 <p>List of tonemapping modes for <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> that are supported by this camera
26916 <td class="entry_units">
26919 <td class="entry_range">
26920 <p>Any value listed in <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a></p>
26923 <td class="entry_hal_version">
26927 <td class="entry_tags">
26931 <tr class="entries_header">
26932 <th class="th_details" colspan="6">Details</th>
26934 <tr class="entry_cont">
26935 <td class="entry_details" colspan="6">
26936 <p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always contain
26937 at least one of below mode combinations:</p>
26939 <li>CONTRAST_<wbr/>CURVE,<wbr/> FAST and HIGH_<wbr/>QUALITY</li>
26940 <li>GAMMA_<wbr/>VALUE,<wbr/> PRESET_<wbr/>CURVE,<wbr/> FAST and HIGH_<wbr/>QUALITY</li>
26942 <p>This includes all FULL level devices.<wbr/></p>
26946 <tr class="entries_header">
26947 <th class="th_details" colspan="6">HAL Implementation Details</th>
26949 <tr class="entry_cont">
26950 <td class="entry_details" colspan="6">
26951 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if automatic tonemap control is available
26952 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
26953 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
26954 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
26958 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26959 <!-- end of entry -->
26963 <!-- end of kind -->
26965 <tr><td colspan="7" class="kind">dynamic</td></tr>
26967 <thead class="entries_header">
26969 <th class="th_name">Property Name</th>
26970 <th class="th_type">Type</th>
26971 <th class="th_description">Description</th>
26972 <th class="th_units">Units</th>
26973 <th class="th_range">Range</th>
26974 <th class="th_hal_version">Initial HIDL HAL version</th>
26975 <th class="th_tags">Tags</th>
26990 <tr class="entry" id="dynamic_android.tonemap.curveBlue">
26991 <td class="entry_name
26993 android.<wbr/>tonemap.<wbr/>curve<wbr/>Blue
26995 <td class="entry_type">
26996 <span class="entry_type_name">float</span>
26997 <span class="entry_type_container">x</span>
26999 <span class="entry_type_array">
27002 <span class="entry_type_visibility"> [ndk_public]</span>
27005 <span class="entry_type_hwlevel">[full] </span>
27008 <div class="entry_type_notes">1D array of float pairs (P_<wbr/>IN,<wbr/> P_<wbr/>OUT).<wbr/> The maximum number of pairs is specified by android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points.<wbr/></div>
27011 </td> <!-- entry_type -->
27013 <td class="entry_description">
27014 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the blue
27015 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
27016 CONTRAST_<wbr/>CURVE.<wbr/></p>
27019 <td class="entry_units">
27022 <td class="entry_range">
27025 <td class="entry_hal_version">
27029 <td class="entry_tags">
27033 <tr class="entries_header">
27034 <th class="th_details" colspan="6">Details</th>
27036 <tr class="entry_cont">
27037 <td class="entry_details" colspan="6">
27038 <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
27043 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27044 <!-- end of entry -->
27047 <tr class="entry" id="dynamic_android.tonemap.curveGreen">
27048 <td class="entry_name
27050 android.<wbr/>tonemap.<wbr/>curve<wbr/>Green
27052 <td class="entry_type">
27053 <span class="entry_type_name">float</span>
27054 <span class="entry_type_container">x</span>
27056 <span class="entry_type_array">
27059 <span class="entry_type_visibility"> [ndk_public]</span>
27062 <span class="entry_type_hwlevel">[full] </span>
27065 <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>
27068 </td> <!-- entry_type -->
27070 <td class="entry_description">
27071 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the green
27072 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
27073 CONTRAST_<wbr/>CURVE.<wbr/></p>
27076 <td class="entry_units">
27079 <td class="entry_range">
27082 <td class="entry_hal_version">
27086 <td class="entry_tags">
27090 <tr class="entries_header">
27091 <th class="th_details" colspan="6">Details</th>
27093 <tr class="entry_cont">
27094 <td class="entry_details" colspan="6">
27095 <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
27100 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27101 <!-- end of entry -->
27104 <tr class="entry" id="dynamic_android.tonemap.curveRed">
27105 <td class="entry_name
27107 android.<wbr/>tonemap.<wbr/>curve<wbr/>Red
27109 <td class="entry_type">
27110 <span class="entry_type_name">float</span>
27111 <span class="entry_type_container">x</span>
27113 <span class="entry_type_array">
27116 <span class="entry_type_visibility"> [ndk_public]</span>
27119 <span class="entry_type_hwlevel">[full] </span>
27122 <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>
27125 </td> <!-- entry_type -->
27127 <td class="entry_description">
27128 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the red
27129 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
27130 CONTRAST_<wbr/>CURVE.<wbr/></p>
27133 <td class="entry_units">
27136 <td class="entry_range">
27137 <p>0-1 on both input and output coordinates,<wbr/> normalized
27138 as a floating-point value such that 0 == black and 1 == white.<wbr/></p>
27141 <td class="entry_hal_version">
27145 <td class="entry_tags">
27149 <tr class="entries_header">
27150 <th class="th_details" colspan="6">Details</th>
27152 <tr class="entry_cont">
27153 <td class="entry_details" colspan="6">
27154 <p>Each channel's curve is defined by an array of control points:</p>
27155 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> =
27156 [ P0in,<wbr/> P0out,<wbr/> P1in,<wbr/> P1out,<wbr/> P2in,<wbr/> P2out,<wbr/> P3in,<wbr/> P3out,<wbr/> ...,<wbr/> PNin,<wbr/> PNout ]
27157 2 <= N <= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
27158 <p>These are sorted in order of increasing <code>Pin</code>; it is
27159 required that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
27160 define a complete mapping.<wbr/> For input values between control points,<wbr/>
27161 the camera device must linearly interpolate between the control
27163 <p>Each curve can have an independent number of points,<wbr/> and the number
27164 of points can be less than max (that is,<wbr/> the request doesn't have to
27165 always provide a curve with number of points equivalent to
27166 <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
27167 <p>A few examples,<wbr/> and their corresponding graphical mappings; these
27168 only specify the red channel and the precision is limited to 4
27169 digits,<wbr/> for conciseness.<wbr/></p>
27170 <p>Linear mapping:</p>
27171 <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 ]
27173 <p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
27174 <p>Invert mapping:</p>
27175 <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 ]
27177 <p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
27178 <p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
27179 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
27180 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/>
27181 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/>
27182 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/>
27183 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 ]
27185 <p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
27186 <p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
27187 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
27188 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/>
27189 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/>
27190 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/>
27191 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 ]
27193 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
27197 <tr class="entries_header">
27198 <th class="th_details" colspan="6">HAL Implementation Details</th>
27200 <tr class="entry_cont">
27201 <td class="entry_details" colspan="6">
27202 <p>For good quality of mapping,<wbr/> at least 128 control points are
27203 preferred.<wbr/></p>
27204 <p>A typical use case of this would be a gamma-1/<wbr/>2.<wbr/>2 curve,<wbr/> with as many
27205 control points used as are available.<wbr/></p>
27209 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27210 <!-- end of entry -->
27213 <tr class="entry" id="dynamic_android.tonemap.curve">
27214 <td class="entry_name
27216 android.<wbr/>tonemap.<wbr/>curve
27218 <td class="entry_type">
27219 <span class="entry_type_name">float</span>
27221 <span class="entry_type_visibility"> [java_public as tonemapCurve]</span>
27223 <span class="entry_type_synthetic">[synthetic] </span>
27225 <span class="entry_type_hwlevel">[full] </span>
27230 </td> <!-- entry_type -->
27232 <td class="entry_description">
27233 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a>
27234 is CONTRAST_<wbr/>CURVE.<wbr/></p>
27237 <td class="entry_units">
27240 <td class="entry_range">
27243 <td class="entry_hal_version">
27247 <td class="entry_tags">
27251 <tr class="entries_header">
27252 <th class="th_details" colspan="6">Details</th>
27254 <tr class="entry_cont">
27255 <td class="entry_details" colspan="6">
27256 <p>The tonemapCurve consist of three curves for each of red,<wbr/> green,<wbr/> and blue
27257 channels respectively.<wbr/> The following example uses the red channel as an
27258 example.<wbr/> The same logic applies to green and blue channel.<wbr/>
27259 Each channel's curve is defined by an array of control points:</p>
27260 <pre><code>curveRed =
27261 [ 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) ]
27262 2 <= N <= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
27263 <p>These are sorted in order of increasing <code>Pin</code>; it is always
27264 guaranteed that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
27265 define a complete mapping.<wbr/> For input values between control points,<wbr/>
27266 the camera device must linearly interpolate between the control
27268 <p>Each curve can have an independent number of points,<wbr/> and the number
27269 of points can be less than max (that is,<wbr/> the request doesn't have to
27270 always provide a curve with number of points equivalent to
27271 <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
27272 <p>A few examples,<wbr/> and their corresponding graphical mappings; these
27273 only specify the red channel and the precision is limited to 4
27274 digits,<wbr/> for conciseness.<wbr/></p>
27275 <p>Linear mapping:</p>
27276 <pre><code>curveRed = [ (0,<wbr/> 0),<wbr/> (1.<wbr/>0,<wbr/> 1.<wbr/>0) ]
27278 <p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
27279 <p>Invert mapping:</p>
27280 <pre><code>curveRed = [ (0,<wbr/> 1.<wbr/>0),<wbr/> (1.<wbr/>0,<wbr/> 0) ]
27282 <p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
27283 <p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
27284 <pre><code>curveRed = [
27285 (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/>
27286 (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/>
27287 (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/>
27288 (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) ]
27290 <p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
27291 <p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
27292 <pre><code>curveRed = [
27293 (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/>
27294 (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/>
27295 (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/>
27296 (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) ]
27298 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
27302 <tr class="entries_header">
27303 <th class="th_details" colspan="6">HAL Implementation Details</th>
27305 <tr class="entry_cont">
27306 <td class="entry_details" colspan="6">
27307 <p>This entry is created by the framework from the curveRed,<wbr/> curveGreen and
27308 curveBlue entries.<wbr/></p>
27312 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27313 <!-- end of entry -->
27316 <tr class="entry" id="dynamic_android.tonemap.mode">
27317 <td class="entry_name
27319 android.<wbr/>tonemap.<wbr/>mode
27321 <td class="entry_type">
27322 <span class="entry_type_name entry_type_name_enum">byte</span>
27324 <span class="entry_type_visibility"> [public]</span>
27327 <span class="entry_type_hwlevel">[full] </span>
27331 <ul class="entry_type_enum">
27333 <span class="entry_type_enum_name">CONTRAST_CURVE (v3.2)</span>
27334 <span class="entry_type_enum_notes"><p>Use the tone mapping curve specified in
27335 the <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>* entries.<wbr/></p>
27336 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
27337 for applying the tonemapping curve specified by
27338 <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p>
27339 <p>Must not slow down frame rate relative to raw
27340 sensor output.<wbr/></p></span>
27343 <span class="entry_type_enum_name">FAST (v3.2)</span>
27344 <span class="entry_type_enum_notes"><p>Advanced gamma mapping and color enhancement may be applied,<wbr/> without
27345 reducing frame rate compared to raw sensor output.<wbr/></p></span>
27348 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
27349 <span class="entry_type_enum_notes"><p>High-quality gamma mapping and color enhancement will be applied,<wbr/> at
27350 the cost of possibly reduced frame rate compared to raw sensor output.<wbr/></p></span>
27353 <span class="entry_type_enum_name">GAMMA_VALUE (v3.2)</span>
27354 <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
27355 tonemapping.<wbr/></p>
27356 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
27357 for applying the tonemapping curve specified by <a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a>.<wbr/></p>
27358 <p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
27361 <span class="entry_type_enum_name">PRESET_CURVE (v3.2)</span>
27362 <span class="entry_type_enum_notes"><p>Use the preset tonemapping curve specified in
27363 <a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a> to peform tonemapping.<wbr/></p>
27364 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
27365 for applying the tonemapping curve specified by
27366 <a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a>.<wbr/></p>
27367 <p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
27371 </td> <!-- entry_type -->
27373 <td class="entry_description">
27374 <p>High-level global contrast/<wbr/>gamma/<wbr/>tonemapping control.<wbr/></p>
27377 <td class="entry_units">
27380 <td class="entry_range">
27381 <p><a href="#static_android.tonemap.availableToneMapModes">android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes</a></p>
27384 <td class="entry_hal_version">
27388 <td class="entry_tags">
27392 <tr class="entries_header">
27393 <th class="th_details" colspan="6">Details</th>
27395 <tr class="entry_cont">
27396 <td class="entry_details" colspan="6">
27397 <p>When switching to an application-defined contrast curve by setting
27398 <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> to CONTRAST_<wbr/>CURVE,<wbr/> the curve is defined
27399 per-channel with a set of <code>(in,<wbr/> out)</code> points that specify the
27400 mapping from input high-bit-depth pixel value to the output
27401 low-bit-depth value.<wbr/> Since the actual pixel ranges of both input
27402 and output may change depending on the camera pipeline,<wbr/> the values
27403 are specified by normalized floating-point numbers.<wbr/></p>
27404 <p>More-complex color mapping operations such as 3D color look-up
27405 tables,<wbr/> selective chroma enhancement,<wbr/> or other non-linear color
27406 transforms will be disabled when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
27407 CONTRAST_<wbr/>CURVE.<wbr/></p>
27408 <p>When using either FAST or HIGH_<wbr/>QUALITY,<wbr/> the camera device will
27409 emit its own tonemap curve in <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/>
27410 These values are always available,<wbr/> and as close as possible to the
27411 actually used nonlinear/<wbr/>nonglobal transforms.<wbr/></p>
27412 <p>If a request is sent with CONTRAST_<wbr/>CURVE with the camera device's
27413 provided curve in FAST or HIGH_<wbr/>QUALITY,<wbr/> the image's tonemap will be
27414 roughly the same.<wbr/></p>
27419 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27420 <!-- end of entry -->
27423 <tr class="entry" id="dynamic_android.tonemap.gamma">
27424 <td class="entry_name
27426 android.<wbr/>tonemap.<wbr/>gamma
27428 <td class="entry_type">
27429 <span class="entry_type_name">float</span>
27431 <span class="entry_type_visibility"> [public]</span>
27438 </td> <!-- entry_type -->
27440 <td class="entry_description">
27441 <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
27442 GAMMA_<wbr/>VALUE</p>
27445 <td class="entry_units">
27448 <td class="entry_range">
27451 <td class="entry_hal_version">
27455 <td class="entry_tags">
27459 <tr class="entries_header">
27460 <th class="th_details" colspan="6">Details</th>
27462 <tr class="entry_cont">
27463 <td class="entry_details" colspan="6">
27464 <p>The tonemap curve will be defined the following formula:
27465 * OUT = pow(IN,<wbr/> 1.<wbr/>0 /<wbr/> gamma)
27466 where IN and OUT is the input pixel value scaled to range [0.<wbr/>0,<wbr/> 1.<wbr/>0],<wbr/>
27467 pow is the power function and gamma is the gamma value specified by this
27469 <p>The same curve will be applied to all color channels.<wbr/> The camera device
27470 may clip the input gamma value to its supported range.<wbr/> The actual applied
27471 value will be returned in capture result.<wbr/></p>
27472 <p>The valid range of gamma value varies on different devices,<wbr/> but values
27473 within [1.<wbr/>0,<wbr/> 5.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
27478 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27479 <!-- end of entry -->
27482 <tr class="entry" id="dynamic_android.tonemap.presetCurve">
27483 <td class="entry_name
27485 android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve
27487 <td class="entry_type">
27488 <span class="entry_type_name entry_type_name_enum">byte</span>
27490 <span class="entry_type_visibility"> [public]</span>
27496 <ul class="entry_type_enum">
27498 <span class="entry_type_enum_name">SRGB (v3.2)</span>
27499 <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by sRGB</p></span>
27502 <span class="entry_type_enum_name">REC709 (v3.2)</span>
27503 <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by ITU-R BT.<wbr/>709</p></span>
27507 </td> <!-- entry_type -->
27509 <td class="entry_description">
27510 <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
27511 PRESET_<wbr/>CURVE</p>
27514 <td class="entry_units">
27517 <td class="entry_range">
27520 <td class="entry_hal_version">
27524 <td class="entry_tags">
27528 <tr class="entries_header">
27529 <th class="th_details" colspan="6">Details</th>
27531 <tr class="entry_cont">
27532 <td class="entry_details" colspan="6">
27533 <p>The tonemap curve will be defined by specified standard.<wbr/></p>
27534 <p>sRGB (approximated by 16 control points):</p>
27535 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
27536 <p>Rec.<wbr/> 709 (approximated by 16 control points):</p>
27537 <p><img alt="Rec. 709 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/rec709_tonemap.png"/></p>
27538 <p>Note that above figures show a 16 control points approximation of preset
27539 curves.<wbr/> Camera devices may apply a different approximation to the curve.<wbr/></p>
27544 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27545 <!-- end of entry -->
27549 <!-- end of kind -->
27552 <!-- end of section -->
27553 <tr><td colspan="7" id="section_led" class="section">led</td></tr>
27556 <tr><td colspan="7" class="kind">controls</td></tr>
27558 <thead class="entries_header">
27560 <th class="th_name">Property Name</th>
27561 <th class="th_type">Type</th>
27562 <th class="th_description">Description</th>
27563 <th class="th_units">Units</th>
27564 <th class="th_range">Range</th>
27565 <th class="th_hal_version">Initial HIDL HAL version</th>
27566 <th class="th_tags">Tags</th>
27581 <tr class="entry" id="controls_android.led.transmit">
27582 <td class="entry_name
27584 android.<wbr/>led.<wbr/>transmit
27586 <td class="entry_type">
27587 <span class="entry_type_name entry_type_name_enum">byte</span>
27589 <span class="entry_type_visibility"> [hidden as boolean]</span>
27595 <ul class="entry_type_enum">
27597 <span class="entry_type_enum_name">OFF (v3.2)</span>
27600 <span class="entry_type_enum_name">ON (v3.2)</span>
27604 </td> <!-- entry_type -->
27606 <td class="entry_description">
27607 <p>This LED is nominally used to indicate to the user
27608 that the camera is powered on and may be streaming images back to the
27609 Application Processor.<wbr/> In certain rare circumstances,<wbr/> the OS may
27610 disable this when video is processed locally and not transmitted to
27611 any untrusted applications.<wbr/></p>
27612 <p>In particular,<wbr/> the LED <em>must</em> always be on when the data could be
27613 transmitted off the device.<wbr/> The LED <em>should</em> always be on whenever
27614 data is stored locally on the device.<wbr/></p>
27615 <p>The LED <em>may</em> be off if a trusted application is using the data that
27616 doesn't violate the above rules.<wbr/></p>
27619 <td class="entry_units">
27622 <td class="entry_range">
27625 <td class="entry_hal_version">
27629 <td class="entry_tags">
27635 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27636 <!-- end of entry -->
27640 <!-- end of kind -->
27642 <tr><td colspan="7" class="kind">dynamic</td></tr>
27644 <thead class="entries_header">
27646 <th class="th_name">Property Name</th>
27647 <th class="th_type">Type</th>
27648 <th class="th_description">Description</th>
27649 <th class="th_units">Units</th>
27650 <th class="th_range">Range</th>
27651 <th class="th_hal_version">Initial HIDL HAL version</th>
27652 <th class="th_tags">Tags</th>
27667 <tr class="entry" id="dynamic_android.led.transmit">
27668 <td class="entry_name
27670 android.<wbr/>led.<wbr/>transmit
27672 <td class="entry_type">
27673 <span class="entry_type_name entry_type_name_enum">byte</span>
27675 <span class="entry_type_visibility"> [hidden as boolean]</span>
27681 <ul class="entry_type_enum">
27683 <span class="entry_type_enum_name">OFF (v3.2)</span>
27686 <span class="entry_type_enum_name">ON (v3.2)</span>
27690 </td> <!-- entry_type -->
27692 <td class="entry_description">
27693 <p>This LED is nominally used to indicate to the user
27694 that the camera is powered on and may be streaming images back to the
27695 Application Processor.<wbr/> In certain rare circumstances,<wbr/> the OS may
27696 disable this when video is processed locally and not transmitted to
27697 any untrusted applications.<wbr/></p>
27698 <p>In particular,<wbr/> the LED <em>must</em> always be on when the data could be
27699 transmitted off the device.<wbr/> The LED <em>should</em> always be on whenever
27700 data is stored locally on the device.<wbr/></p>
27701 <p>The LED <em>may</em> be off if a trusted application is using the data that
27702 doesn't violate the above rules.<wbr/></p>
27705 <td class="entry_units">
27708 <td class="entry_range">
27711 <td class="entry_hal_version">
27715 <td class="entry_tags">
27721 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27722 <!-- end of entry -->
27726 <!-- end of kind -->
27728 <tr><td colspan="7" class="kind">static</td></tr>
27730 <thead class="entries_header">
27732 <th class="th_name">Property Name</th>
27733 <th class="th_type">Type</th>
27734 <th class="th_description">Description</th>
27735 <th class="th_units">Units</th>
27736 <th class="th_range">Range</th>
27737 <th class="th_hal_version">Initial HIDL HAL version</th>
27738 <th class="th_tags">Tags</th>
27753 <tr class="entry" id="static_android.led.availableLeds">
27754 <td class="entry_name
27756 android.<wbr/>led.<wbr/>available<wbr/>Leds
27758 <td class="entry_type">
27759 <span class="entry_type_name entry_type_name_enum">byte</span>
27760 <span class="entry_type_container">x</span>
27762 <span class="entry_type_array">
27765 <span class="entry_type_visibility"> [hidden]</span>
27771 <ul class="entry_type_enum">
27773 <span class="entry_type_enum_name">TRANSMIT (v3.2)</span>
27774 <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>
27778 </td> <!-- entry_type -->
27780 <td class="entry_description">
27781 <p>A list of camera LEDs that are available on this system.<wbr/></p>
27784 <td class="entry_units">
27787 <td class="entry_range">
27790 <td class="entry_hal_version">
27794 <td class="entry_tags">
27800 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27801 <!-- end of entry -->
27805 <!-- end of kind -->
27808 <!-- end of section -->
27809 <tr><td colspan="7" id="section_info" class="section">info</td></tr>
27812 <tr><td colspan="7" class="kind">static</td></tr>
27814 <thead class="entries_header">
27816 <th class="th_name">Property Name</th>
27817 <th class="th_type">Type</th>
27818 <th class="th_description">Description</th>
27819 <th class="th_units">Units</th>
27820 <th class="th_range">Range</th>
27821 <th class="th_hal_version">Initial HIDL HAL version</th>
27822 <th class="th_tags">Tags</th>
27837 <tr class="entry" id="static_android.info.supportedHardwareLevel">
27838 <td class="entry_name
27840 android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level
27842 <td class="entry_type">
27843 <span class="entry_type_name entry_type_name_enum">byte</span>
27845 <span class="entry_type_visibility"> [public]</span>
27848 <span class="entry_type_hwlevel">[legacy] </span>
27852 <ul class="entry_type_enum">
27854 <span class="entry_type_enum_name">LIMITED (v3.2)</span>
27855 <span class="entry_type_enum_notes"><p>This camera device does not have enough capabilities to qualify as a <code>FULL</code> device or
27857 <p>Only the stream configurations listed in the <code>LEGACY</code> and <code>LIMITED</code> tables in the
27858 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">createCaptureSession</a> documentation are guaranteed to be supported.<wbr/></p>
27859 <p>All <code>LIMITED</code> devices support the <code>BACKWARDS_<wbr/>COMPATIBLE</code> capability,<wbr/> indicating basic
27860 support for color image capture.<wbr/> The only exception is that the device may
27861 alternatively support only the <code>DEPTH_<wbr/>OUTPUT</code> capability,<wbr/> if it can only output depth
27862 measurements and not color images.<wbr/></p>
27863 <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>
27864 to lock exposure metering (and calculate flash power,<wbr/> for cameras with flash) before
27865 capturing a high-quality still image.<wbr/></p>
27866 <p>A <code>LIMITED</code> device that only lists the <code>BACKWARDS_<wbr/>COMPATIBLE</code> capability is only
27867 required to support full-automatic operation and post-processing (<code>OFF</code> is not
27868 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
27869 <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>)</p>
27870 <p>Additional capabilities may optionally be supported by a <code>LIMITED</code>-level device,<wbr/> and
27871 can be checked for in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p></span>
27874 <span class="entry_type_enum_name">FULL (v3.2)</span>
27875 <span class="entry_type_enum_notes"><p>This camera device is capable of supporting advanced imaging applications.<wbr/></p>
27876 <p>The stream configurations listed in the <code>FULL</code>,<wbr/> <code>LEGACY</code> and <code>LIMITED</code> tables in the
27877 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">createCaptureSession</a> documentation are guaranteed to be supported.<wbr/></p>
27878 <p>A <code>FULL</code> device will support below capabilities:</p>
27880 <li><code>BURST_<wbr/>CAPTURE</code> capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
27881 <code>BURST_<wbr/>CAPTURE</code>)</li>
27882 <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>
27883 <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>
27884 <li>Manual post-processing control (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
27885 <code>MANUAL_<wbr/>POST_<wbr/>PROCESSING</code>)</li>
27886 <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>
27887 <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>
27890 Pre-API level 23,<wbr/> FULL devices also supported arbitrary cropping region
27891 (<a href="#static_android.scaler.croppingType">android.<wbr/>scaler.<wbr/>cropping<wbr/>Type</a> <code>== FREEFORM</code>); this requirement was relaxed in API level
27892 23,<wbr/> and <code>FULL</code> devices may only support <code>CENTERED</code> cropping.<wbr/></p></span>
27895 <span class="entry_type_enum_name">LEGACY (v3.2)</span>
27896 <span class="entry_type_enum_notes"><p>This camera device is running in backward compatibility mode.<wbr/></p>
27897 <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>
27898 <p>A <code>LEGACY</code> device does not support per-frame control,<wbr/> manual sensor control,<wbr/> manual
27899 post-processing,<wbr/> arbitrary cropping regions,<wbr/> and has relaxed performance constraints.<wbr/>
27900 No additional capabilities beyond <code>BACKWARD_<wbr/>COMPATIBLE</code> will ever be listed by a
27901 <code>LEGACY</code> device in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
27902 <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>
27903 devices.<wbr/> Instead,<wbr/> every request that includes a JPEG-format output target is treated
27904 as triggering a still capture,<wbr/> internally executing a precapture trigger.<wbr/> This may
27905 fire the flash for flash power metering during precapture,<wbr/> and then fire the flash
27906 for the final capture,<wbr/> if a flash is available on the device and the AE mode is set to
27907 enable the flash.<wbr/></p></span>
27910 <span class="entry_type_enum_name">3 (v3.2)</span>
27911 <span class="entry_type_enum_notes"><p>This camera device is capable of YUV reprocessing and RAW data capture,<wbr/> in addition to
27912 FULL-level capabilities.<wbr/></p>
27913 <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
27914 <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>
27915 <p>The following additional capabilities are guaranteed to be supported:</p>
27917 <li><code>YUV_<wbr/>REPROCESSING</code> capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
27918 <code>YUV_<wbr/>REPROCESSING</code>)</li>
27919 <li><code>RAW</code> capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
27920 <code>RAW</code>)</li>
27924 <span class="entry_type_enum_name">EXTERNAL (v3.3)</span>
27925 <span class="entry_type_enum_notes"><p>This camera device is backed by an external camera connected to this Android device.<wbr/></p>
27926 <p>The device has capability identical to a LIMITED level device,<wbr/> with the following
27929 <li>The device may not report lens/<wbr/>sensor related information such as<ul>
27930 <li><a href="#controls_android.lens.focalLength">android.<wbr/>lens.<wbr/>focal<wbr/>Length</a></li>
27931 <li><a href="#static_android.lens.info.hyperfocalDistance">android.<wbr/>lens.<wbr/>info.<wbr/>hyperfocal<wbr/>Distance</a></li>
27932 <li><a href="#static_android.sensor.info.physicalSize">android.<wbr/>sensor.<wbr/>info.<wbr/>physical<wbr/>Size</a></li>
27933 <li><a href="#static_android.sensor.info.whiteLevel">android.<wbr/>sensor.<wbr/>info.<wbr/>white<wbr/>Level</a></li>
27934 <li><a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a></li>
27935 <li><a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a></li>
27936 <li><a href="#dynamic_android.sensor.rollingShutterSkew">android.<wbr/>sensor.<wbr/>rolling<wbr/>Shutter<wbr/>Skew</a></li>
27939 <li>The device will report 0 for <a href="#static_android.sensor.orientation">android.<wbr/>sensor.<wbr/>orientation</a></li>
27940 <li>The device has less guarantee on stable framerate,<wbr/> as the framerate partly depends
27941 on the external camera being used.<wbr/></li>
27946 </td> <!-- entry_type -->
27948 <td class="entry_description">
27949 <p>Generally classifies the overall set of the camera device functionality.<wbr/></p>
27952 <td class="entry_units">
27955 <td class="entry_range">
27958 <td class="entry_hal_version">
27962 <td class="entry_tags">
27966 <tr class="entries_header">
27967 <th class="th_details" colspan="6">Details</th>
27969 <tr class="entry_cont">
27970 <td class="entry_details" colspan="6">
27971 <p>The supported hardware level is a high-level description of the camera device's
27972 capabilities,<wbr/> summarizing several capabilities into one field.<wbr/> Each level adds additional
27973 features to the previous one,<wbr/> and is always a strict superset of the previous level.<wbr/>
27974 The ordering is <code>LEGACY < LIMITED < FULL < LEVEL_<wbr/>3</code>.<wbr/></p>
27975 <p>Starting from <code>LEVEL_<wbr/>3</code>,<wbr/> the level enumerations are guaranteed to be in increasing
27976 numerical value as well.<wbr/> To check if a given device is at least at a given hardware level,<wbr/>
27977 the following code snippet can be used:</p>
27978 <pre><code>//<wbr/> Returns true if the device supports the required hardware level,<wbr/> or better.<wbr/>
27979 boolean isHardwareLevelSupported(CameraCharacteristics c,<wbr/> int requiredLevel) {
27980 int deviceLevel = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>INFO_<wbr/>SUPPORTED_<wbr/>HARDWARE_<wbr/>LEVEL);
27981 if (deviceLevel == Camera<wbr/>Characteristics.<wbr/>INFO_<wbr/>SUPPORTED_<wbr/>HARDWARE_<wbr/>LEVEL_<wbr/>LEGACY) {
27982 return requiredLevel == deviceLevel;
27984 //<wbr/> deviceLevel is not LEGACY,<wbr/> can use numerical sort
27985 return requiredLevel <= deviceLevel;
27988 <p>At a high level,<wbr/> the levels are:</p>
27990 <li><code>LEGACY</code> devices operate in a backwards-compatibility mode for older
27991 Android devices,<wbr/> and have very limited capabilities.<wbr/></li>
27992 <li><code>LIMITED</code> devices represent the
27993 baseline feature set,<wbr/> and may also include additional capabilities that are
27994 subsets of <code>FULL</code>.<wbr/></li>
27995 <li><code>FULL</code> devices additionally support per-frame manual control of sensor,<wbr/> flash,<wbr/> lens and
27996 post-processing settings,<wbr/> and image capture at a high rate.<wbr/></li>
27997 <li><code>LEVEL_<wbr/>3</code> devices additionally support YUV reprocessing and RAW image capture,<wbr/> along
27998 with additional output stream configurations.<wbr/></li>
28000 <p>See the individual level enums for full descriptions of the supported capabilities.<wbr/> The
28001 <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> entry describes the device's capabilities at a
28002 finer-grain level,<wbr/> if needed.<wbr/> In addition,<wbr/> many controls have their available settings or
28003 ranges defined in individual entries from <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html">CameraCharacteristics</a>.<wbr/></p>
28004 <p>Some features are not part of any particular hardware level or capability and must be
28005 queried separately.<wbr/> These include:</p>
28007 <li>Calibrated timestamps (<a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME)</li>
28008 <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>
28009 <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>
28010 <li>Optical or electrical image stabilization
28011 (<a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a>,<wbr/>
28012 <a href="#static_android.control.availableVideoStabilizationModes">android.<wbr/>control.<wbr/>available<wbr/>Video<wbr/>Stabilization<wbr/>Modes</a>)</li>
28017 <tr class="entries_header">
28018 <th class="th_details" colspan="6">HAL Implementation Details</th>
28020 <tr class="entry_cont">
28021 <td class="entry_details" colspan="6">
28022 <p>A camera HALv3 device can implement one of three possible operational modes; LIMITED,<wbr/>
28023 FULL,<wbr/> and LEVEL_<wbr/>3.<wbr/></p>
28024 <p>FULL support or better is expected from new higher-end devices.<wbr/> Limited
28025 mode has hardware requirements roughly in line with those for a camera HAL device v1
28026 implementation,<wbr/> and is expected from older or inexpensive devices.<wbr/> Each level is a strict
28027 superset of the previous level,<wbr/> and they share the same essential operational flow.<wbr/></p>
28028 <p>For full details refer to "S3.<wbr/> Operational Modes" in camera3.<wbr/>h</p>
28029 <p>Camera HAL3+ must not implement LEGACY mode.<wbr/> It is there for backwards compatibility in
28030 the <code>android.<wbr/>hardware.<wbr/>camera2</code> user-facing API only on legacy HALv1 devices,<wbr/> and is
28031 implemented by the camera framework code.<wbr/></p>
28032 <p>EXTERNAL level devices have lower peformance bar in CTS since the peformance might depend
28033 on the external camera being used and is not fully controlled by the device manufacturer.<wbr/>
28034 The ITS test suite is exempted for the same reason.<wbr/></p>
28038 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28039 <!-- end of entry -->
28042 <tr class="entry" id="static_android.info.version">
28043 <td class="entry_name
28045 android.<wbr/>info.<wbr/>version
28047 <td class="entry_type">
28048 <span class="entry_type_name">byte</span>
28050 <span class="entry_type_visibility"> [public as string]</span>
28057 </td> <!-- entry_type -->
28059 <td class="entry_description">
28060 <p>A short string for manufacturer version information about the camera device,<wbr/> such as
28061 ISP hardware,<wbr/> sensors,<wbr/> etc.<wbr/></p>
28064 <td class="entry_units">
28067 <td class="entry_range">
28070 <td class="entry_hal_version">
28074 <td class="entry_tags">
28078 <tr class="entries_header">
28079 <th class="th_details" colspan="6">Details</th>
28081 <tr class="entry_cont">
28082 <td class="entry_details" colspan="6">
28083 <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>
28084 in jpeg EXIF.<wbr/> This key may be absent if no version information is available on the
28089 <tr class="entries_header">
28090 <th class="th_details" colspan="6">HAL Implementation Details</th>
28092 <tr class="entry_cont">
28093 <td class="entry_details" colspan="6">
28094 <p>The string must consist of only alphanumeric characters,<wbr/> punctuation,<wbr/> and
28095 whitespace,<wbr/> i.<wbr/>e.<wbr/> it must match regular expression "[\p{Alnum}\p{Punct}\p{Space}]*".<wbr/>
28096 It must not exceed 256 characters.<wbr/></p>
28100 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28101 <!-- end of entry -->
28105 <!-- end of kind -->
28108 <!-- end of section -->
28109 <tr><td colspan="7" id="section_blackLevel" class="section">blackLevel</td></tr>
28112 <tr><td colspan="7" class="kind">controls</td></tr>
28114 <thead class="entries_header">
28116 <th class="th_name">Property Name</th>
28117 <th class="th_type">Type</th>
28118 <th class="th_description">Description</th>
28119 <th class="th_units">Units</th>
28120 <th class="th_range">Range</th>
28121 <th class="th_hal_version">Initial HIDL HAL version</th>
28122 <th class="th_tags">Tags</th>
28137 <tr class="entry" id="controls_android.blackLevel.lock">
28138 <td class="entry_name
28140 android.<wbr/>black<wbr/>Level.<wbr/>lock
28142 <td class="entry_type">
28143 <span class="entry_type_name entry_type_name_enum">byte</span>
28145 <span class="entry_type_visibility"> [public as boolean]</span>
28148 <span class="entry_type_hwlevel">[full] </span>
28152 <ul class="entry_type_enum">
28154 <span class="entry_type_enum_name">OFF (v3.2)</span>
28157 <span class="entry_type_enum_name">ON (v3.2)</span>
28161 </td> <!-- entry_type -->
28163 <td class="entry_description">
28164 <p>Whether black-level compensation is locked
28165 to its current values,<wbr/> or is free to vary.<wbr/></p>
28168 <td class="entry_units">
28171 <td class="entry_range">
28174 <td class="entry_hal_version">
28178 <td class="entry_tags">
28179 <ul class="entry_tags">
28180 <li><a href="#tag_HAL2">HAL2</a></li>
28185 <tr class="entries_header">
28186 <th class="th_details" colspan="6">Details</th>
28188 <tr class="entry_cont">
28189 <td class="entry_details" colspan="6">
28190 <p>When set to <code>true</code> (ON),<wbr/> the values used for black-level
28191 compensation will not change until the lock is set to
28192 <code>false</code> (OFF).<wbr/></p>
28193 <p>Since changes to certain capture parameters (such as
28194 exposure time) may require resetting of black level
28195 compensation,<wbr/> the camera device must report whether setting
28196 the black level lock was successful in the output result
28197 metadata.<wbr/></p>
28198 <p>For example,<wbr/> if a sequence of requests is as follows:</p>
28200 <li>Request 1: Exposure = 10ms,<wbr/> Black level lock = OFF</li>
28201 <li>Request 2: Exposure = 10ms,<wbr/> Black level lock = ON</li>
28202 <li>Request 3: Exposure = 10ms,<wbr/> Black level lock = ON</li>
28203 <li>Request 4: Exposure = 20ms,<wbr/> Black level lock = ON</li>
28204 <li>Request 5: Exposure = 20ms,<wbr/> Black level lock = ON</li>
28205 <li>Request 6: Exposure = 20ms,<wbr/> Black level lock = ON</li>
28207 <p>And the exposure change in Request 4 requires the camera
28208 device to reset the black level offsets,<wbr/> then the output
28209 result metadata is expected to be:</p>
28211 <li>Result 1: Exposure = 10ms,<wbr/> Black level lock = OFF</li>
28212 <li>Result 2: Exposure = 10ms,<wbr/> Black level lock = ON</li>
28213 <li>Result 3: Exposure = 10ms,<wbr/> Black level lock = ON</li>
28214 <li>Result 4: Exposure = 20ms,<wbr/> Black level lock = OFF</li>
28215 <li>Result 5: Exposure = 20ms,<wbr/> Black level lock = ON</li>
28216 <li>Result 6: Exposure = 20ms,<wbr/> Black level lock = ON</li>
28218 <p>This indicates to the application that on frame 4,<wbr/> black
28219 levels were reset due to exposure value changes,<wbr/> and pixel
28220 values may not be consistent across captures.<wbr/></p>
28221 <p>The camera device will maintain the lock to the extent
28222 possible,<wbr/> only overriding the lock to OFF when changes to
28223 other request parameters require a black level recalculation
28224 or reset.<wbr/></p>
28228 <tr class="entries_header">
28229 <th class="th_details" colspan="6">HAL Implementation Details</th>
28231 <tr class="entry_cont">
28232 <td class="entry_details" colspan="6">
28233 <p>If for some reason black level locking is no longer possible
28234 (for example,<wbr/> the analog gain has changed,<wbr/> which forces
28235 black level offsets to be recalculated),<wbr/> then the HAL must
28236 override this request (and it must report 'OFF' when this
28237 does happen) until the next capture for which locking is
28238 possible again.<wbr/></p>
28242 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28243 <!-- end of entry -->
28247 <!-- end of kind -->
28249 <tr><td colspan="7" class="kind">dynamic</td></tr>
28251 <thead class="entries_header">
28253 <th class="th_name">Property Name</th>
28254 <th class="th_type">Type</th>
28255 <th class="th_description">Description</th>
28256 <th class="th_units">Units</th>
28257 <th class="th_range">Range</th>
28258 <th class="th_hal_version">Initial HIDL HAL version</th>
28259 <th class="th_tags">Tags</th>
28274 <tr class="entry" id="dynamic_android.blackLevel.lock">
28275 <td class="entry_name
28277 android.<wbr/>black<wbr/>Level.<wbr/>lock
28279 <td class="entry_type">
28280 <span class="entry_type_name entry_type_name_enum">byte</span>
28282 <span class="entry_type_visibility"> [public as boolean]</span>
28285 <span class="entry_type_hwlevel">[full] </span>
28289 <ul class="entry_type_enum">
28291 <span class="entry_type_enum_name">OFF (v3.2)</span>
28294 <span class="entry_type_enum_name">ON (v3.2)</span>
28298 </td> <!-- entry_type -->
28300 <td class="entry_description">
28301 <p>Whether black-level compensation is locked
28302 to its current values,<wbr/> or is free to vary.<wbr/></p>
28305 <td class="entry_units">
28308 <td class="entry_range">
28311 <td class="entry_hal_version">
28315 <td class="entry_tags">
28316 <ul class="entry_tags">
28317 <li><a href="#tag_HAL2">HAL2</a></li>
28322 <tr class="entries_header">
28323 <th class="th_details" colspan="6">Details</th>
28325 <tr class="entry_cont">
28326 <td class="entry_details" colspan="6">
28327 <p>Whether the black level offset was locked for this frame.<wbr/> Should be
28328 ON if <a href="#controls_android.blackLevel.lock">android.<wbr/>black<wbr/>Level.<wbr/>lock</a> was ON in the capture request,<wbr/> unless
28329 a change in other capture settings forced the camera device to
28330 perform a black level reset.<wbr/></p>
28334 <tr class="entries_header">
28335 <th class="th_details" colspan="6">HAL Implementation Details</th>
28337 <tr class="entry_cont">
28338 <td class="entry_details" colspan="6">
28339 <p>If for some reason black level locking is no longer possible
28340 (for example,<wbr/> the analog gain has changed,<wbr/> which forces
28341 black level offsets to be recalculated),<wbr/> then the HAL must
28342 override this request (and it must report 'OFF' when this
28343 does happen) until the next capture for which locking is
28344 possible again.<wbr/></p>
28348 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28349 <!-- end of entry -->
28353 <!-- end of kind -->
28356 <!-- end of section -->
28357 <tr><td colspan="7" id="section_sync" class="section">sync</td></tr>
28360 <tr><td colspan="7" class="kind">dynamic</td></tr>
28362 <thead class="entries_header">
28364 <th class="th_name">Property Name</th>
28365 <th class="th_type">Type</th>
28366 <th class="th_description">Description</th>
28367 <th class="th_units">Units</th>
28368 <th class="th_range">Range</th>
28369 <th class="th_hal_version">Initial HIDL HAL version</th>
28370 <th class="th_tags">Tags</th>
28385 <tr class="entry" id="dynamic_android.sync.frameNumber">
28386 <td class="entry_name
28388 android.<wbr/>sync.<wbr/>frame<wbr/>Number
28390 <td class="entry_type">
28391 <span class="entry_type_name entry_type_name_enum">int64</span>
28393 <span class="entry_type_visibility"> [ndk_public]</span>
28396 <span class="entry_type_hwlevel">[legacy] </span>
28400 <ul class="entry_type_enum">
28402 <span class="entry_type_enum_name">CONVERGING (v3.2)</span>
28403 <span class="entry_type_enum_value">-1</span>
28404 <span class="entry_type_enum_notes"><p>The current result is not yet fully synchronized to any request.<wbr/></p>
28405 <p>Synchronization is in progress,<wbr/> and reading metadata from this
28406 result may include a mix of data that have taken effect since the
28407 last synchronization time.<wbr/></p>
28408 <p>In some future result,<wbr/> within <a href="#static_android.sync.maxLatency">android.<wbr/>sync.<wbr/>max<wbr/>Latency</a> frames,<wbr/>
28409 this value will update to the actual frame number frame number
28410 the result is guaranteed to be synchronized to (as long as the
28411 request settings remain constant).<wbr/></p></span>
28414 <span class="entry_type_enum_name">UNKNOWN (v3.2)</span>
28415 <span class="entry_type_enum_value">-2</span>
28416 <span class="entry_type_enum_notes"><p>The current result's synchronization status is unknown.<wbr/></p>
28417 <p>The result may have already converged,<wbr/> or it may be in
28418 progress.<wbr/> Reading from this result may include some mix
28419 of settings from past requests.<wbr/></p>
28420 <p>After a settings change,<wbr/> the new settings will eventually all
28421 take effect for the output buffers and results.<wbr/> However,<wbr/> this
28422 value will not change when that happens.<wbr/> Altering settings
28423 rapidly may provide outcomes using mixes of settings from recent
28424 requests.<wbr/></p>
28425 <p>This value is intended primarily for backwards compatibility with
28426 the older camera implementations (for android.<wbr/>hardware.<wbr/>Camera).<wbr/></p></span>
28430 </td> <!-- entry_type -->
28432 <td class="entry_description">
28433 <p>The frame number corresponding to the last request
28434 with which the output result (metadata + buffers) has been fully
28435 synchronized.<wbr/></p>
28438 <td class="entry_units">
28441 <td class="entry_range">
28442 <p>Either a non-negative value corresponding to a
28443 <code>frame_<wbr/>number</code>,<wbr/> or one of the two enums (CONVERGING /<wbr/> UNKNOWN).<wbr/></p>
28446 <td class="entry_hal_version">
28450 <td class="entry_tags">
28451 <ul class="entry_tags">
28452 <li><a href="#tag_V1">V1</a></li>
28457 <tr class="entries_header">
28458 <th class="th_details" colspan="6">Details</th>
28460 <tr class="entry_cont">
28461 <td class="entry_details" colspan="6">
28462 <p>When a request is submitted to the camera device,<wbr/> there is usually a
28463 delay of several frames before the controls get applied.<wbr/> A camera
28464 device may either choose to account for this delay by implementing a
28465 pipeline and carefully submit well-timed atomic control updates,<wbr/> or
28466 it may start streaming control changes that span over several frame
28467 boundaries.<wbr/></p>
28468 <p>In the latter case,<wbr/> whenever a request's settings change relative to
28469 the previous submitted request,<wbr/> the full set of changes may take
28470 multiple frame durations to fully take effect.<wbr/> Some settings may
28471 take effect sooner (in less frame durations) than others.<wbr/></p>
28472 <p>While a set of control changes are being propagated,<wbr/> this value
28473 will be CONVERGING.<wbr/></p>
28474 <p>Once it is fully known that a set of control changes have been
28475 finished propagating,<wbr/> and the resulting updated control settings
28476 have been read back by the camera device,<wbr/> this value will be set
28477 to a non-negative frame number (corresponding to the request to
28478 which the results have synchronized to).<wbr/></p>
28479 <p>Older camera device implementations may not have a way to detect
28480 when all camera controls have been applied,<wbr/> and will always set this
28481 value to UNKNOWN.<wbr/></p>
28482 <p>FULL capability devices will always have this value set to the
28483 frame number of the request corresponding to this result.<wbr/></p>
28484 <p><em>Further details</em>:</p>
28486 <li>Whenever a request differs from the last request,<wbr/> any future
28487 results not yet returned may have this value set to CONVERGING (this
28488 could include any in-progress captures not yet returned by the camera
28489 device,<wbr/> for more details see pipeline considerations below).<wbr/></li>
28490 <li>Submitting a series of multiple requests that differ from the
28491 previous request (e.<wbr/>g.<wbr/> r1,<wbr/> r2,<wbr/> r3 s.<wbr/>t.<wbr/> r1 != r2 != r3)
28492 moves the new synchronization frame to the last non-repeating
28493 request (using the smallest frame number from the contiguous list of
28494 repeating requests).<wbr/></li>
28495 <li>Submitting the same request repeatedly will not change this value
28496 to CONVERGING,<wbr/> if it was already a non-negative value.<wbr/></li>
28497 <li>When this value changes to non-negative,<wbr/> that means that all of the
28498 metadata controls from the request have been applied,<wbr/> all of the
28499 metadata controls from the camera device have been read to the
28500 updated values (into the result),<wbr/> and all of the graphics buffers
28501 corresponding to this result are also synchronized to the request.<wbr/></li>
28503 <p><em>Pipeline considerations</em>:</p>
28504 <p>Submitting a request with updated controls relative to the previously
28505 submitted requests may also invalidate the synchronization state
28506 of all the results corresponding to currently in-flight requests.<wbr/></p>
28507 <p>In other words,<wbr/> results for this current request and up to
28508 <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a> prior requests may have their
28509 <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> change to CONVERGING.<wbr/></p>
28513 <tr class="entries_header">
28514 <th class="th_details" colspan="6">HAL Implementation Details</th>
28516 <tr class="entry_cont">
28517 <td class="entry_details" colspan="6">
28518 <p>Using UNKNOWN here is illegal unless <a href="#static_android.sync.maxLatency">android.<wbr/>sync.<wbr/>max<wbr/>Latency</a>
28519 is also UNKNOWN.<wbr/></p>
28520 <p>FULL capability devices should simply set this value to the
28521 <code>frame_<wbr/>number</code> of the request this result corresponds to.<wbr/></p>
28525 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28526 <!-- end of entry -->
28530 <!-- end of kind -->
28532 <tr><td colspan="7" class="kind">static</td></tr>
28534 <thead class="entries_header">
28536 <th class="th_name">Property Name</th>
28537 <th class="th_type">Type</th>
28538 <th class="th_description">Description</th>
28539 <th class="th_units">Units</th>
28540 <th class="th_range">Range</th>
28541 <th class="th_hal_version">Initial HIDL HAL version</th>
28542 <th class="th_tags">Tags</th>
28557 <tr class="entry" id="static_android.sync.maxLatency">
28558 <td class="entry_name
28560 android.<wbr/>sync.<wbr/>max<wbr/>Latency
28562 <td class="entry_type">
28563 <span class="entry_type_name entry_type_name_enum">int32</span>
28565 <span class="entry_type_visibility"> [public]</span>
28568 <span class="entry_type_hwlevel">[legacy] </span>
28572 <ul class="entry_type_enum">
28574 <span class="entry_type_enum_name">PER_FRAME_CONTROL (v3.2)</span>
28575 <span class="entry_type_enum_value">0</span>
28576 <span class="entry_type_enum_notes"><p>Every frame has the requests immediately applied.<wbr/></p>
28577 <p>Changing controls over multiple requests one after another will
28578 produce results that have those controls applied atomically
28579 each frame.<wbr/></p>
28580 <p>All FULL capability devices will have this as their maxLatency.<wbr/></p></span>
28583 <span class="entry_type_enum_name">UNKNOWN (v3.2)</span>
28584 <span class="entry_type_enum_value">-1</span>
28585 <span class="entry_type_enum_notes"><p>Each new frame has some subset (potentially the entire set)
28586 of the past requests applied to the camera settings.<wbr/></p>
28587 <p>By submitting a series of identical requests,<wbr/> the camera device
28588 will eventually have the camera settings applied,<wbr/> but it is
28589 unknown when that exact point will be.<wbr/></p>
28590 <p>All LEGACY capability devices will have this as their maxLatency.<wbr/></p></span>
28594 </td> <!-- entry_type -->
28596 <td class="entry_description">
28597 <p>The maximum number of frames that can occur after a request
28598 (different than the previous) has been submitted,<wbr/> and before the
28599 result's state becomes synchronized.<wbr/></p>
28602 <td class="entry_units">
28606 <td class="entry_range">
28607 <p>A positive value,<wbr/> PER_<wbr/>FRAME_<wbr/>CONTROL,<wbr/> or UNKNOWN.<wbr/></p>
28610 <td class="entry_hal_version">
28614 <td class="entry_tags">
28615 <ul class="entry_tags">
28616 <li><a href="#tag_V1">V1</a></li>
28621 <tr class="entries_header">
28622 <th class="th_details" colspan="6">Details</th>
28624 <tr class="entry_cont">
28625 <td class="entry_details" colspan="6">
28626 <p>This defines the maximum distance (in number of metadata results),<wbr/>
28627 between the frame number of the request that has new controls to apply
28628 and the frame number of the result that has all the controls applied.<wbr/></p>
28629 <p>In other words this acts as an upper boundary for how many frames
28630 must occur before the camera device knows for a fact that the new
28631 submitted camera settings have been applied in outgoing frames.<wbr/></p>
28635 <tr class="entries_header">
28636 <th class="th_details" colspan="6">HAL Implementation Details</th>
28638 <tr class="entry_cont">
28639 <td class="entry_details" colspan="6">
28640 <p>For example if maxLatency was 2,<wbr/></p>
28641 <pre><code>initial request = X (repeating)
28647 where requestN has frameNumber N,<wbr/> and the first of the repeating
28648 initial request's has frameNumber F (and F < 1).<wbr/>
28650 initial result = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == F }
28651 result1 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == F }
28652 result2 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == CONVERGING }
28653 result3 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == CONVERGING }
28654 result4 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == 2 }
28656 where resultN has frameNumber N.<wbr/>
28658 <p>Since <code>result4</code> has a <code>frameNumber == 4</code> and
28659 <code><a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == 2</code>,<wbr/> the distance is clearly
28660 <code>4 - 2 = 2</code>.<wbr/></p>
28661 <p>Use <code>frame_<wbr/>count</code> from camera3_<wbr/>request_<wbr/>t instead of
28662 <a href="#controls_android.request.frameCount">android.<wbr/>request.<wbr/>frame<wbr/>Count</a> or
28663 <code><a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html#getFrameNumber">CaptureResult#getFrameNumber</a></code>.<wbr/></p>
28664 <p>LIMITED devices are strongly encouraged to use a non-negative
28665 value.<wbr/> If UNKNOWN is used here then app developers do not have a way
28666 to know when sensor settings have been applied.<wbr/></p>
28670 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28671 <!-- end of entry -->
28675 <!-- end of kind -->
28678 <!-- end of section -->
28679 <tr><td colspan="7" id="section_reprocess" class="section">reprocess</td></tr>
28682 <tr><td colspan="7" class="kind">controls</td></tr>
28684 <thead class="entries_header">
28686 <th class="th_name">Property Name</th>
28687 <th class="th_type">Type</th>
28688 <th class="th_description">Description</th>
28689 <th class="th_units">Units</th>
28690 <th class="th_range">Range</th>
28691 <th class="th_hal_version">Initial HIDL HAL version</th>
28692 <th class="th_tags">Tags</th>
28707 <tr class="entry" id="controls_android.reprocess.effectiveExposureFactor">
28708 <td class="entry_name
28710 android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor
28712 <td class="entry_type">
28713 <span class="entry_type_name">float</span>
28715 <span class="entry_type_visibility"> [java_public]</span>
28718 <span class="entry_type_hwlevel">[limited] </span>
28723 </td> <!-- entry_type -->
28725 <td class="entry_description">
28726 <p>The amount of exposure time increase factor applied to the original output
28727 frame by the application processing before sending for reprocessing.<wbr/></p>
28730 <td class="entry_units">
28731 Relative exposure time increase factor.<wbr/>
28734 <td class="entry_range">
28735 <p>>= 1.<wbr/>0</p>
28738 <td class="entry_hal_version">
28742 <td class="entry_tags">
28743 <ul class="entry_tags">
28744 <li><a href="#tag_REPROC">REPROC</a></li>
28749 <tr class="entries_header">
28750 <th class="th_details" colspan="6">Details</th>
28752 <tr class="entry_cont">
28753 <td class="entry_details" colspan="6">
28754 <p>This is optional,<wbr/> and will be supported if the camera device supports YUV_<wbr/>REPROCESSING
28755 capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains YUV_<wbr/>REPROCESSING).<wbr/></p>
28756 <p>For some YUV reprocessing use cases,<wbr/> the application may choose to filter the original
28757 output frames to effectively reduce the noise to the same level as a frame that was
28758 captured with longer exposure time.<wbr/> To be more specific,<wbr/> assuming the original captured
28759 images were captured with a sensitivity of S and an exposure time of T,<wbr/> the model in
28760 the camera device is that the amount of noise in the image would be approximately what
28761 would be expected if the original capture parameters had been a sensitivity of
28762 S/<wbr/>effectiveExposureFactor and an exposure time of T*effectiveExposureFactor,<wbr/> rather
28763 than S and T respectively.<wbr/> If the captured images were processed by the application
28764 before being sent for reprocessing,<wbr/> then the application may have used image processing
28765 algorithms and/<wbr/>or multi-frame image fusion to reduce the noise in the
28766 application-processed images (input images).<wbr/> By using the effectiveExposureFactor
28767 control,<wbr/> the application can communicate to the camera device the actual noise level
28768 improvement in the application-processed image.<wbr/> With this information,<wbr/> the camera
28769 device can select appropriate noise reduction and edge enhancement parameters to avoid
28770 excessive noise reduction (<a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a>) and insufficient edge
28771 enhancement (<a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a>) being applied to the reprocessed frames.<wbr/></p>
28772 <p>For example,<wbr/> for multi-frame image fusion use case,<wbr/> the application may fuse
28773 multiple output frames together to a final frame for reprocessing.<wbr/> When N image are
28774 fused into 1 image for reprocessing,<wbr/> the exposure time increase factor could be up to
28775 square root of N (based on a simple photon shot noise model).<wbr/> The camera device will
28776 adjust the reprocessing noise reduction and edge enhancement parameters accordingly to
28777 produce the best quality images.<wbr/></p>
28778 <p>This is relative factor,<wbr/> 1.<wbr/>0 indicates the application hasn't processed the input
28779 buffer in a way that affects its effective exposure time.<wbr/></p>
28780 <p>This control is only effective for YUV reprocessing capture request.<wbr/> For noise
28781 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/>
28782 Similarly,<wbr/> for edge enhancement reprocessing,<wbr/> it is only effective when
28783 <code><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a> != OFF</code>.<wbr/></p>
28788 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28789 <!-- end of entry -->
28793 <!-- end of kind -->
28795 <tr><td colspan="7" class="kind">dynamic</td></tr>
28797 <thead class="entries_header">
28799 <th class="th_name">Property Name</th>
28800 <th class="th_type">Type</th>
28801 <th class="th_description">Description</th>
28802 <th class="th_units">Units</th>
28803 <th class="th_range">Range</th>
28804 <th class="th_hal_version">Initial HIDL HAL version</th>
28805 <th class="th_tags">Tags</th>
28820 <tr class="entry" id="dynamic_android.reprocess.effectiveExposureFactor">
28821 <td class="entry_name
28823 android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor
28825 <td class="entry_type">
28826 <span class="entry_type_name">float</span>
28828 <span class="entry_type_visibility"> [java_public]</span>
28831 <span class="entry_type_hwlevel">[limited] </span>
28836 </td> <!-- entry_type -->
28838 <td class="entry_description">
28839 <p>The amount of exposure time increase factor applied to the original output
28840 frame by the application processing before sending for reprocessing.<wbr/></p>
28843 <td class="entry_units">
28844 Relative exposure time increase factor.<wbr/>
28847 <td class="entry_range">
28848 <p>>= 1.<wbr/>0</p>
28851 <td class="entry_hal_version">
28855 <td class="entry_tags">
28856 <ul class="entry_tags">
28857 <li><a href="#tag_REPROC">REPROC</a></li>
28862 <tr class="entries_header">
28863 <th class="th_details" colspan="6">Details</th>
28865 <tr class="entry_cont">
28866 <td class="entry_details" colspan="6">
28867 <p>This is optional,<wbr/> and will be supported if the camera device supports YUV_<wbr/>REPROCESSING
28868 capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains YUV_<wbr/>REPROCESSING).<wbr/></p>
28869 <p>For some YUV reprocessing use cases,<wbr/> the application may choose to filter the original
28870 output frames to effectively reduce the noise to the same level as a frame that was
28871 captured with longer exposure time.<wbr/> To be more specific,<wbr/> assuming the original captured
28872 images were captured with a sensitivity of S and an exposure time of T,<wbr/> the model in
28873 the camera device is that the amount of noise in the image would be approximately what
28874 would be expected if the original capture parameters had been a sensitivity of
28875 S/<wbr/>effectiveExposureFactor and an exposure time of T*effectiveExposureFactor,<wbr/> rather
28876 than S and T respectively.<wbr/> If the captured images were processed by the application
28877 before being sent for reprocessing,<wbr/> then the application may have used image processing
28878 algorithms and/<wbr/>or multi-frame image fusion to reduce the noise in the
28879 application-processed images (input images).<wbr/> By using the effectiveExposureFactor
28880 control,<wbr/> the application can communicate to the camera device the actual noise level
28881 improvement in the application-processed image.<wbr/> With this information,<wbr/> the camera
28882 device can select appropriate noise reduction and edge enhancement parameters to avoid
28883 excessive noise reduction (<a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a>) and insufficient edge
28884 enhancement (<a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a>) being applied to the reprocessed frames.<wbr/></p>
28885 <p>For example,<wbr/> for multi-frame image fusion use case,<wbr/> the application may fuse
28886 multiple output frames together to a final frame for reprocessing.<wbr/> When N image are
28887 fused into 1 image for reprocessing,<wbr/> the exposure time increase factor could be up to
28888 square root of N (based on a simple photon shot noise model).<wbr/> The camera device will
28889 adjust the reprocessing noise reduction and edge enhancement parameters accordingly to
28890 produce the best quality images.<wbr/></p>
28891 <p>This is relative factor,<wbr/> 1.<wbr/>0 indicates the application hasn't processed the input
28892 buffer in a way that affects its effective exposure time.<wbr/></p>
28893 <p>This control is only effective for YUV reprocessing capture request.<wbr/> For noise
28894 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/>
28895 Similarly,<wbr/> for edge enhancement reprocessing,<wbr/> it is only effective when
28896 <code><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a> != OFF</code>.<wbr/></p>
28901 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28902 <!-- end of entry -->
28906 <!-- end of kind -->
28908 <tr><td colspan="7" class="kind">static</td></tr>
28910 <thead class="entries_header">
28912 <th class="th_name">Property Name</th>
28913 <th class="th_type">Type</th>
28914 <th class="th_description">Description</th>
28915 <th class="th_units">Units</th>
28916 <th class="th_range">Range</th>
28917 <th class="th_hal_version">Initial HIDL HAL version</th>
28918 <th class="th_tags">Tags</th>
28933 <tr class="entry" id="static_android.reprocess.maxCaptureStall">
28934 <td class="entry_name
28936 android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall
28938 <td class="entry_type">
28939 <span class="entry_type_name">int32</span>
28941 <span class="entry_type_visibility"> [java_public]</span>
28944 <span class="entry_type_hwlevel">[limited] </span>
28949 </td> <!-- entry_type -->
28951 <td class="entry_description">
28952 <p>The maximal camera capture pipeline stall (in unit of frame count) introduced by a
28953 reprocess capture request.<wbr/></p>
28956 <td class="entry_units">
28957 Number of frames.<wbr/>
28960 <td class="entry_range">
28964 <td class="entry_hal_version">
28968 <td class="entry_tags">
28969 <ul class="entry_tags">
28970 <li><a href="#tag_REPROC">REPROC</a></li>
28975 <tr class="entries_header">
28976 <th class="th_details" colspan="6">Details</th>
28978 <tr class="entry_cont">
28979 <td class="entry_details" colspan="6">
28980 <p>The key describes the maximal interference that one reprocess (input) request
28981 can introduce to the camera simultaneous streaming of regular (output) capture
28982 requests,<wbr/> including repeating requests.<wbr/></p>
28983 <p>When a reprocessing capture request is submitted while a camera output repeating request
28984 (e.<wbr/>g.<wbr/> preview) is being served by the camera device,<wbr/> it may preempt the camera capture
28985 pipeline for at least one frame duration so that the camera device is unable to process
28986 the following capture request in time for the next sensor start of exposure boundary.<wbr/>
28987 When this happens,<wbr/> the application may observe a capture time gap (longer than one frame
28988 duration) between adjacent capture output frames,<wbr/> which usually exhibits as preview
28989 glitch if the repeating request output targets include a preview surface.<wbr/> This key gives
28990 the worst-case number of frame stall introduced by one reprocess request with any kind of
28991 formats/<wbr/>sizes combination.<wbr/></p>
28992 <p>If this key reports 0,<wbr/> it means a reprocess request doesn't introduce any glitch to the
28993 ongoing camera repeating request outputs,<wbr/> as if this reprocess request is never issued.<wbr/></p>
28994 <p>This key is supported if the camera device supports PRIVATE or YUV reprocessing (
28995 i.<wbr/>e.<wbr/> <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains PRIVATE_<wbr/>REPROCESSING or
28996 YUV_<wbr/>REPROCESSING).<wbr/></p>
29001 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29002 <!-- end of entry -->
29006 <!-- end of kind -->
29009 <!-- end of section -->
29010 <tr><td colspan="7" id="section_depth" class="section">depth</td></tr>
29013 <tr><td colspan="7" class="kind">static</td></tr>
29015 <thead class="entries_header">
29017 <th class="th_name">Property Name</th>
29018 <th class="th_type">Type</th>
29019 <th class="th_description">Description</th>
29020 <th class="th_units">Units</th>
29021 <th class="th_range">Range</th>
29022 <th class="th_hal_version">Initial HIDL HAL version</th>
29023 <th class="th_tags">Tags</th>
29038 <tr class="entry" id="static_android.depth.maxDepthSamples">
29039 <td class="entry_name
29041 android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples
29043 <td class="entry_type">
29044 <span class="entry_type_name">int32</span>
29046 <span class="entry_type_visibility"> [system]</span>
29049 <span class="entry_type_hwlevel">[limited] </span>
29054 </td> <!-- entry_type -->
29056 <td class="entry_description">
29057 <p>Maximum number of points that a depth point cloud may contain.<wbr/></p>
29060 <td class="entry_units">
29063 <td class="entry_range">
29066 <td class="entry_hal_version">
29070 <td class="entry_tags">
29071 <ul class="entry_tags">
29072 <li><a href="#tag_DEPTH">DEPTH</a></li>
29077 <tr class="entries_header">
29078 <th class="th_details" colspan="6">Details</th>
29080 <tr class="entry_cont">
29081 <td class="entry_details" colspan="6">
29082 <p>If a camera device supports outputting depth range data in the form of a depth point
29083 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
29084 number of points an output buffer may contain.<wbr/></p>
29085 <p>Any given buffer may contain between 0 and maxDepthSamples points,<wbr/> inclusive.<wbr/>
29086 If output in the depth point cloud format is not supported,<wbr/> this entry will
29087 not be defined.<wbr/></p>
29092 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29093 <!-- end of entry -->
29096 <tr class="entry" id="static_android.depth.availableDepthStreamConfigurations">
29097 <td class="entry_name
29099 android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stream<wbr/>Configurations
29101 <td class="entry_type">
29102 <span class="entry_type_name entry_type_name_enum">int32</span>
29103 <span class="entry_type_container">x</span>
29105 <span class="entry_type_array">
29108 <span class="entry_type_visibility"> [ndk_public as streamConfiguration]</span>
29111 <span class="entry_type_hwlevel">[limited] </span>
29115 <ul class="entry_type_enum">
29117 <span class="entry_type_enum_name">OUTPUT (v3.2)</span>
29120 <span class="entry_type_enum_name">INPUT (v3.2)</span>
29124 </td> <!-- entry_type -->
29126 <td class="entry_description">
29127 <p>The available depth dataspace stream
29128 configurations that this camera device supports
29129 (i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p>
29132 <td class="entry_units">
29135 <td class="entry_range">
29138 <td class="entry_hal_version">
29142 <td class="entry_tags">
29143 <ul class="entry_tags">
29144 <li><a href="#tag_DEPTH">DEPTH</a></li>
29149 <tr class="entries_header">
29150 <th class="th_details" colspan="6">Details</th>
29152 <tr class="entry_cont">
29153 <td class="entry_details" colspan="6">
29154 <p>These are output stream configurations for use with
29155 dataSpace HAL_<wbr/>DATASPACE_<wbr/>DEPTH.<wbr/> The configurations are
29156 listed as <code>(format,<wbr/> width,<wbr/> height,<wbr/> input?)</code> tuples.<wbr/></p>
29157 <p>Only devices that support depth output for at least
29158 the HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>Y16 dense depth map may include
29159 this entry.<wbr/></p>
29160 <p>A device that also supports the HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>BLOB
29161 sparse depth point cloud must report a single entry for
29162 the format in this list as <code>(HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>BLOB,<wbr/>
29163 <a href="#static_android.depth.maxDepthSamples">android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples</a>,<wbr/> 1,<wbr/> OUTPUT)</code> in addition to
29164 the entries for HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>Y16.<wbr/></p>
29169 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29170 <!-- end of entry -->
29173 <tr class="entry" id="static_android.depth.availableDepthMinFrameDurations">
29174 <td class="entry_name
29176 android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Min<wbr/>Frame<wbr/>Durations
29178 <td class="entry_type">
29179 <span class="entry_type_name">int64</span>
29180 <span class="entry_type_container">x</span>
29182 <span class="entry_type_array">
29185 <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
29188 <span class="entry_type_hwlevel">[limited] </span>
29193 </td> <!-- entry_type -->
29195 <td class="entry_description">
29196 <p>This lists the minimum frame duration for each
29197 format/<wbr/>size combination for depth output formats.<wbr/></p>
29200 <td class="entry_units">
29201 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
29204 <td class="entry_range">
29207 <td class="entry_hal_version">
29211 <td class="entry_tags">
29212 <ul class="entry_tags">
29213 <li><a href="#tag_DEPTH">DEPTH</a></li>
29218 <tr class="entries_header">
29219 <th class="th_details" colspan="6">Details</th>
29221 <tr class="entry_cont">
29222 <td class="entry_details" colspan="6">
29223 <p>This should correspond to the frame duration when only that
29224 stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode)
29225 set to either OFF or FAST.<wbr/></p>
29226 <p>When multiple streams are used in a request,<wbr/> the minimum frame
29227 duration will be max(individual stream min durations).<wbr/></p>
29228 <p>The minimum frame duration of a stream (of a particular format,<wbr/> size)
29229 is the same regardless of whether the stream is input or output.<wbr/></p>
29230 <p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> and
29231 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for more details about
29232 calculating the max frame rate.<wbr/></p>
29237 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29238 <!-- end of entry -->
29241 <tr class="entry" id="static_android.depth.availableDepthStallDurations">
29242 <td class="entry_name
29244 android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stall<wbr/>Durations
29246 <td class="entry_type">
29247 <span class="entry_type_name">int64</span>
29248 <span class="entry_type_container">x</span>
29250 <span class="entry_type_array">
29253 <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
29256 <span class="entry_type_hwlevel">[limited] </span>
29261 </td> <!-- entry_type -->
29263 <td class="entry_description">
29264 <p>This lists the maximum stall duration for each
29265 output format/<wbr/>size combination for depth streams.<wbr/></p>
29268 <td class="entry_units">
29269 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
29272 <td class="entry_range">
29275 <td class="entry_hal_version">
29279 <td class="entry_tags">
29280 <ul class="entry_tags">
29281 <li><a href="#tag_DEPTH">DEPTH</a></li>
29286 <tr class="entries_header">
29287 <th class="th_details" colspan="6">Details</th>
29289 <tr class="entry_cont">
29290 <td class="entry_details" colspan="6">
29291 <p>A stall duration is how much extra time would get added
29292 to the normal minimum frame duration for a repeating request
29293 that has streams with non-zero stall.<wbr/></p>
29294 <p>This functions similarly to
29295 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for depth
29297 <p>All depth output stream formats may have a nonzero stall
29298 duration.<wbr/></p>
29303 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29304 <!-- end of entry -->
29307 <tr class="entry" id="static_android.depth.depthIsExclusive">
29308 <td class="entry_name
29310 android.<wbr/>depth.<wbr/>depth<wbr/>Is<wbr/>Exclusive
29312 <td class="entry_type">
29313 <span class="entry_type_name entry_type_name_enum">byte</span>
29315 <span class="entry_type_visibility"> [public as boolean]</span>
29318 <span class="entry_type_hwlevel">[limited] </span>
29322 <ul class="entry_type_enum">
29324 <span class="entry_type_enum_name">FALSE (v3.2)</span>
29327 <span class="entry_type_enum_name">TRUE (v3.2)</span>
29331 </td> <!-- entry_type -->
29333 <td class="entry_description">
29334 <p>Indicates whether a capture request may target both a
29335 DEPTH16 /<wbr/> DEPTH_<wbr/>POINT_<wbr/>CLOUD output,<wbr/> and normal color outputs (such as
29336 YUV_<wbr/>420_<wbr/>888,<wbr/> JPEG,<wbr/> or RAW) simultaneously.<wbr/></p>
29339 <td class="entry_units">
29342 <td class="entry_range">
29345 <td class="entry_hal_version">
29349 <td class="entry_tags">
29353 <tr class="entries_header">
29354 <th class="th_details" colspan="6">Details</th>
29356 <tr class="entry_cont">
29357 <td class="entry_details" colspan="6">
29358 <p>If TRUE,<wbr/> including both depth and color outputs in a single
29359 capture request is not supported.<wbr/> An application must interleave color
29360 and depth requests.<wbr/> If FALSE,<wbr/> a single request can target both types
29361 of output.<wbr/></p>
29362 <p>Typically,<wbr/> this restriction exists on camera devices that
29363 need to emit a specific pattern or wavelength of light to
29364 measure depth values,<wbr/> which causes the color image to be
29365 corrupted during depth measurement.<wbr/></p>
29370 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29371 <!-- end of entry -->
29375 <!-- end of kind -->
29378 <!-- end of section -->
29379 <tr><td colspan="7" id="section_logicalMultiCamera" class="section">logicalMultiCamera</td></tr>
29382 <tr><td colspan="7" class="kind">static</td></tr>
29384 <thead class="entries_header">
29386 <th class="th_name">Property Name</th>
29387 <th class="th_type">Type</th>
29388 <th class="th_description">Description</th>
29389 <th class="th_units">Units</th>
29390 <th class="th_range">Range</th>
29391 <th class="th_hal_version">Initial HIDL HAL version</th>
29392 <th class="th_tags">Tags</th>
29407 <tr class="entry" id="static_android.logicalMultiCamera.physicalIds">
29408 <td class="entry_name
29410 android.<wbr/>logical<wbr/>Multi<wbr/>Camera.<wbr/>physical<wbr/>Ids
29412 <td class="entry_type">
29413 <span class="entry_type_name">byte</span>
29414 <span class="entry_type_container">x</span>
29416 <span class="entry_type_array">
29419 <span class="entry_type_visibility"> [hidden]</span>
29422 <span class="entry_type_hwlevel">[limited] </span>
29427 </td> <!-- entry_type -->
29429 <td class="entry_description">
29430 <p>String containing the ids of the underlying physical cameras.<wbr/></p>
29433 <td class="entry_units">
29434 UTF-8 null-terminated string
29437 <td class="entry_range">
29440 <td class="entry_hal_version">
29444 <td class="entry_tags">
29445 <ul class="entry_tags">
29446 <li><a href="#tag_LOGICALCAMERA">LOGICALCAMERA</a></li>
29451 <tr class="entries_header">
29452 <th class="th_details" colspan="6">Details</th>
29454 <tr class="entry_cont">
29455 <td class="entry_details" colspan="6">
29456 <p>For a logical camera,<wbr/> this is concatenation of all underlying physical camera ids.<wbr/>
29457 The null terminator for physical camera id must be preserved so that the whole string
29458 can be tokenized using '\0' to generate list of physical camera ids.<wbr/></p>
29459 <p>For example,<wbr/> if the physical camera ids of the logical camera are "2" and "3",<wbr/> the
29460 value of this tag will be ['2',<wbr/> '\0',<wbr/> '3',<wbr/> '\0'].<wbr/></p>
29461 <p>The number of physical camera ids must be no less than 2.<wbr/></p>
29466 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29467 <!-- end of entry -->
29470 <tr class="entry" id="static_android.logicalMultiCamera.sensorSyncType">
29471 <td class="entry_name
29473 android.<wbr/>logical<wbr/>Multi<wbr/>Camera.<wbr/>sensor<wbr/>Sync<wbr/>Type
29475 <td class="entry_type">
29476 <span class="entry_type_name entry_type_name_enum">byte</span>
29478 <span class="entry_type_visibility"> [public]</span>
29481 <span class="entry_type_hwlevel">[limited] </span>
29485 <ul class="entry_type_enum">
29487 <span class="entry_type_enum_name">APPROXIMATE (v3.3)</span>
29488 <span class="entry_type_enum_notes"><p>A software mechanism is used to synchronize between the physical cameras.<wbr/> As a result,<wbr/>
29489 the timestamp of an image from a physical stream is only an approximation of the
29490 image sensor start-of-exposure time.<wbr/></p></span>
29493 <span class="entry_type_enum_name">CALIBRATED (v3.3)</span>
29494 <span class="entry_type_enum_notes"><p>The camera device supports frame timestamp synchronization at the hardware level,<wbr/>
29495 and the timestamp of a physical stream image accurately reflects its
29496 start-of-exposure time.<wbr/></p></span>
29500 </td> <!-- entry_type -->
29502 <td class="entry_description">
29503 <p>The accuracy of frame timestamp synchronization between physical cameras</p>
29506 <td class="entry_units">
29509 <td class="entry_range">
29512 <td class="entry_hal_version">
29516 <td class="entry_tags">
29517 <ul class="entry_tags">
29518 <li><a href="#tag_LOGICALCAMERA">LOGICALCAMERA</a></li>
29523 <tr class="entries_header">
29524 <th class="th_details" colspan="6">Details</th>
29526 <tr class="entry_cont">
29527 <td class="entry_details" colspan="6">
29528 <p>The accuracy of the frame timestamp synchronization determines the physical cameras'
29529 ability to start exposure at the same time.<wbr/> If the sensorSyncType is CALIBRATED,<wbr/>
29530 the physical camera sensors usually run in master-slave mode so that their shutter
29531 time is synchronized.<wbr/> For APPROXIMATE sensorSyncType,<wbr/> the camera sensors usually run in
29532 master-master mode,<wbr/> and there could be offset between their start of exposure.<wbr/></p>
29533 <p>In both cases,<wbr/> all images generated for a particular capture request still carry the same
29534 timestamps,<wbr/> so that they can be used to look up the matching frame number and
29535 onCaptureStarted callback.<wbr/></p>
29540 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29541 <!-- end of entry -->
29545 <!-- end of kind -->
29548 <!-- end of section -->
29549 <!-- </namespace> -->
29552 <div class="tags" id="tag_index">
29555 <li id="tag_BC">BC -
29556 Needed for backwards compatibility with old Java API
29558 <ul class="tags_entries">
29559 <li><a href="#controls_android.control.aeAntibandingMode">android.control.aeAntibandingMode</a> (controls)</li>
29560 <li><a href="#controls_android.control.aeExposureCompensation">android.control.aeExposureCompensation</a> (controls)</li>
29561 <li><a href="#controls_android.control.aeLock">android.control.aeLock</a> (controls)</li>
29562 <li><a href="#controls_android.control.aeMode">android.control.aeMode</a> (controls)</li>
29563 <li><a href="#controls_android.control.aeRegions">android.control.aeRegions</a> (controls)</li>
29564 <li><a href="#controls_android.control.aeTargetFpsRange">android.control.aeTargetFpsRange</a> (controls)</li>
29565 <li><a href="#controls_android.control.aePrecaptureTrigger">android.control.aePrecaptureTrigger</a> (controls)</li>
29566 <li><a href="#controls_android.control.afMode">android.control.afMode</a> (controls)</li>
29567 <li><a href="#controls_android.control.afRegions">android.control.afRegions</a> (controls)</li>
29568 <li><a href="#controls_android.control.afTrigger">android.control.afTrigger</a> (controls)</li>
29569 <li><a href="#controls_android.control.awbLock">android.control.awbLock</a> (controls)</li>
29570 <li><a href="#controls_android.control.awbMode">android.control.awbMode</a> (controls)</li>
29571 <li><a href="#controls_android.control.awbRegions">android.control.awbRegions</a> (controls)</li>
29572 <li><a href="#controls_android.control.captureIntent">android.control.captureIntent</a> (controls)</li>
29573 <li><a href="#controls_android.control.effectMode">android.control.effectMode</a> (controls)</li>
29574 <li><a href="#controls_android.control.mode">android.control.mode</a> (controls)</li>
29575 <li><a href="#controls_android.control.sceneMode">android.control.sceneMode</a> (controls)</li>
29576 <li><a href="#controls_android.control.videoStabilizationMode">android.control.videoStabilizationMode</a> (controls)</li>
29577 <li><a href="#static_android.control.aeAvailableAntibandingModes">android.control.aeAvailableAntibandingModes</a> (static)</li>
29578 <li><a href="#static_android.control.aeAvailableModes">android.control.aeAvailableModes</a> (static)</li>
29579 <li><a href="#static_android.control.aeAvailableTargetFpsRanges">android.control.aeAvailableTargetFpsRanges</a> (static)</li>
29580 <li><a href="#static_android.control.aeCompensationRange">android.control.aeCompensationRange</a> (static)</li>
29581 <li><a href="#static_android.control.aeCompensationStep">android.control.aeCompensationStep</a> (static)</li>
29582 <li><a href="#static_android.control.afAvailableModes">android.control.afAvailableModes</a> (static)</li>
29583 <li><a href="#static_android.control.availableEffects">android.control.availableEffects</a> (static)</li>
29584 <li><a href="#static_android.control.availableSceneModes">android.control.availableSceneModes</a> (static)</li>
29585 <li><a href="#static_android.control.availableVideoStabilizationModes">android.control.availableVideoStabilizationModes</a> (static)</li>
29586 <li><a href="#static_android.control.awbAvailableModes">android.control.awbAvailableModes</a> (static)</li>
29587 <li><a href="#static_android.control.maxRegions">android.control.maxRegions</a> (static)</li>
29588 <li><a href="#static_android.control.sceneModeOverrides">android.control.sceneModeOverrides</a> (static)</li>
29589 <li><a href="#static_android.control.aeLockAvailable">android.control.aeLockAvailable</a> (static)</li>
29590 <li><a href="#static_android.control.awbLockAvailable">android.control.awbLockAvailable</a> (static)</li>
29591 <li><a href="#controls_android.flash.mode">android.flash.mode</a> (controls)</li>
29592 <li><a href="#static_android.flash.info.available">android.flash.info.available</a> (static)</li>
29593 <li><a href="#controls_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a> (controls)</li>
29594 <li><a href="#controls_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a> (controls)</li>
29595 <li><a href="#controls_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a> (controls)</li>
29596 <li><a href="#controls_android.jpeg.orientation">android.jpeg.orientation</a> (controls)</li>
29597 <li><a href="#controls_android.jpeg.quality">android.jpeg.quality</a> (controls)</li>
29598 <li><a href="#controls_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a> (controls)</li>
29599 <li><a href="#controls_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a> (controls)</li>
29600 <li><a href="#static_android.jpeg.availableThumbnailSizes">android.jpeg.availableThumbnailSizes</a> (static)</li>
29601 <li><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a> (controls)</li>
29602 <li><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a> (static)</li>
29603 <li><a href="#dynamic_android.lens.focusRange">android.lens.focusRange</a> (dynamic)</li>
29604 <li><a href="#static_android.request.maxNumOutputStreams">android.request.maxNumOutputStreams</a> (static)</li>
29605 <li><a href="#controls_android.scaler.cropRegion">android.scaler.cropRegion</a> (controls)</li>
29606 <li><a href="#static_android.scaler.availableFormats">android.scaler.availableFormats</a> (static)</li>
29607 <li><a href="#static_android.scaler.availableJpegMinDurations">android.scaler.availableJpegMinDurations</a> (static)</li>
29608 <li><a href="#static_android.scaler.availableJpegSizes">android.scaler.availableJpegSizes</a> (static)</li>
29609 <li><a href="#static_android.scaler.availableMaxDigitalZoom">android.scaler.availableMaxDigitalZoom</a> (static)</li>
29610 <li><a href="#static_android.scaler.availableProcessedMinDurations">android.scaler.availableProcessedMinDurations</a> (static)</li>
29611 <li><a href="#static_android.scaler.availableProcessedSizes">android.scaler.availableProcessedSizes</a> (static)</li>
29612 <li><a href="#static_android.scaler.availableRawMinDurations">android.scaler.availableRawMinDurations</a> (static)</li>
29613 <li><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a> (static)</li>
29614 <li><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a> (static)</li>
29615 <li><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a> (static)</li>
29616 <li><a href="#static_android.sensor.orientation">android.sensor.orientation</a> (static)</li>
29617 <li><a href="#dynamic_android.sensor.timestamp">android.sensor.timestamp</a> (dynamic)</li>
29618 <li><a href="#controls_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a> (controls)</li>
29619 <li><a href="#static_android.statistics.info.maxFaceCount">android.statistics.info.maxFaceCount</a> (static)</li>
29620 <li><a href="#dynamic_android.statistics.faceIds">android.statistics.faceIds</a> (dynamic)</li>
29621 <li><a href="#dynamic_android.statistics.faceLandmarks">android.statistics.faceLandmarks</a> (dynamic)</li>
29622 <li><a href="#dynamic_android.statistics.faceRectangles">android.statistics.faceRectangles</a> (dynamic)</li>
29623 <li><a href="#dynamic_android.statistics.faceScores">android.statistics.faceScores</a> (dynamic)</li>
29624 <li><a href="#dynamic_android.lens.focalLength">android.lens.focalLength</a> (dynamic)</li>
29625 <li><a href="#dynamic_android.lens.focusDistance">android.lens.focusDistance</a> (dynamic)</li>
29627 </li> <!-- tag_BC -->
29628 <li id="tag_V1">V1 -
29629 New features for first camera 2 release (API1)
29631 <ul class="tags_entries">
29632 <li><a href="#static_android.colorCorrection.availableAberrationModes">android.colorCorrection.availableAberrationModes</a> (static)</li>
29633 <li><a href="#static_android.control.availableHighSpeedVideoConfigurations">android.control.availableHighSpeedVideoConfigurations</a> (static)</li>
29634 <li><a href="#controls_android.edge.mode">android.edge.mode</a> (controls)</li>
29635 <li><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a> (static)</li>
29636 <li><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a> (controls)</li>
29637 <li><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a> (static)</li>
29638 <li><a href="#controls_android.lens.aperture">android.lens.aperture</a> (controls)</li>
29639 <li><a href="#controls_android.lens.filterDensity">android.lens.filterDensity</a> (controls)</li>
29640 <li><a href="#controls_android.lens.focalLength">android.lens.focalLength</a> (controls)</li>
29641 <li><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a> (controls)</li>
29642 <li><a href="#controls_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a> (controls)</li>
29643 <li><a href="#static_android.lens.info.availableApertures">android.lens.info.availableApertures</a> (static)</li>
29644 <li><a href="#static_android.lens.info.availableFilterDensities">android.lens.info.availableFilterDensities</a> (static)</li>
29645 <li><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a> (static)</li>
29646 <li><a href="#static_android.lens.info.availableOpticalStabilization">android.lens.info.availableOpticalStabilization</a> (static)</li>
29647 <li><a href="#static_android.lens.info.minimumFocusDistance">android.lens.info.minimumFocusDistance</a> (static)</li>
29648 <li><a href="#static_android.lens.info.shadingMapSize">android.lens.info.shadingMapSize</a> (static)</li>
29649 <li><a href="#static_android.lens.info.focusDistanceCalibration">android.lens.info.focusDistanceCalibration</a> (static)</li>
29650 <li><a href="#dynamic_android.lens.state">android.lens.state</a> (dynamic)</li>
29651 <li><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a> (controls)</li>
29652 <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a> (static)</li>
29653 <li><a href="#controls_android.request.id">android.request.id</a> (controls)</li>
29654 <li><a href="#static_android.scaler.availableMinFrameDurations">android.scaler.availableMinFrameDurations</a> (static)</li>
29655 <li><a href="#static_android.scaler.availableStallDurations">android.scaler.availableStallDurations</a> (static)</li>
29656 <li><a href="#controls_android.sensor.exposureTime">android.sensor.exposureTime</a> (controls)</li>
29657 <li><a href="#controls_android.sensor.frameDuration">android.sensor.frameDuration</a> (controls)</li>
29658 <li><a href="#controls_android.sensor.sensitivity">android.sensor.sensitivity</a> (controls)</li>
29659 <li><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a> (static)</li>
29660 <li><a href="#static_android.sensor.info.exposureTimeRange">android.sensor.info.exposureTimeRange</a> (static)</li>
29661 <li><a href="#static_android.sensor.info.maxFrameDuration">android.sensor.info.maxFrameDuration</a> (static)</li>
29662 <li><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a> (static)</li>
29663 <li><a href="#static_android.sensor.info.timestampSource">android.sensor.info.timestampSource</a> (static)</li>
29664 <li><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a> (static)</li>
29665 <li><a href="#dynamic_android.sensor.rollingShutterSkew">android.sensor.rollingShutterSkew</a> (dynamic)</li>
29666 <li><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a> (controls)</li>
29667 <li><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a> (static)</li>
29668 <li><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a> (dynamic)</li>
29669 <li><a href="#dynamic_android.sync.frameNumber">android.sync.frameNumber</a> (dynamic)</li>
29670 <li><a href="#static_android.sync.maxLatency">android.sync.maxLatency</a> (static)</li>
29671 <li><a href="#dynamic_android.edge.mode">android.edge.mode</a> (dynamic)</li>
29672 <li><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a> (dynamic)</li>
29673 <li><a href="#dynamic_android.lens.aperture">android.lens.aperture</a> (dynamic)</li>
29674 <li><a href="#dynamic_android.lens.filterDensity">android.lens.filterDensity</a> (dynamic)</li>
29675 <li><a href="#dynamic_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a> (dynamic)</li>
29676 <li><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a> (dynamic)</li>
29678 </li> <!-- tag_V1 -->
29679 <li id="tag_RAW">RAW -
29680 Needed for useful RAW image processing and DNG file support
29682 <ul class="tags_entries">
29683 <li><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a> (controls)</li>
29684 <li><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a> (static)</li>
29685 <li><a href="#static_android.sensor.info.activeArraySize">android.sensor.info.activeArraySize</a> (static)</li>
29686 <li><a href="#static_android.sensor.info.colorFilterArrangement">android.sensor.info.colorFilterArrangement</a> (static)</li>
29687 <li><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a> (static)</li>
29688 <li><a href="#static_android.sensor.info.whiteLevel">android.sensor.info.whiteLevel</a> (static)</li>
29689 <li><a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.sensor.info.preCorrectionActiveArraySize</a> (static)</li>
29690 <li><a href="#static_android.sensor.referenceIlluminant1">android.sensor.referenceIlluminant1</a> (static)</li>
29691 <li><a href="#static_android.sensor.referenceIlluminant2">android.sensor.referenceIlluminant2</a> (static)</li>
29692 <li><a href="#static_android.sensor.calibrationTransform1">android.sensor.calibrationTransform1</a> (static)</li>
29693 <li><a href="#static_android.sensor.calibrationTransform2">android.sensor.calibrationTransform2</a> (static)</li>
29694 <li><a href="#static_android.sensor.colorTransform1">android.sensor.colorTransform1</a> (static)</li>
29695 <li><a href="#static_android.sensor.colorTransform2">android.sensor.colorTransform2</a> (static)</li>
29696 <li><a href="#static_android.sensor.forwardMatrix1">android.sensor.forwardMatrix1</a> (static)</li>
29697 <li><a href="#static_android.sensor.forwardMatrix2">android.sensor.forwardMatrix2</a> (static)</li>
29698 <li><a href="#static_android.sensor.blackLevelPattern">android.sensor.blackLevelPattern</a> (static)</li>
29699 <li><a href="#static_android.sensor.profileHueSatMapDimensions">android.sensor.profileHueSatMapDimensions</a> (static)</li>
29700 <li><a href="#dynamic_android.sensor.neutralColorPoint">android.sensor.neutralColorPoint</a> (dynamic)</li>
29701 <li><a href="#dynamic_android.sensor.noiseProfile">android.sensor.noiseProfile</a> (dynamic)</li>
29702 <li><a href="#dynamic_android.sensor.profileHueSatMap">android.sensor.profileHueSatMap</a> (dynamic)</li>
29703 <li><a href="#dynamic_android.sensor.profileToneCurve">android.sensor.profileToneCurve</a> (dynamic)</li>
29704 <li><a href="#dynamic_android.sensor.greenSplit">android.sensor.greenSplit</a> (dynamic)</li>
29705 <li><a href="#dynamic_android.sensor.dynamicBlackLevel">android.sensor.dynamicBlackLevel</a> (dynamic)</li>
29706 <li><a href="#dynamic_android.sensor.dynamicWhiteLevel">android.sensor.dynamicWhiteLevel</a> (dynamic)</li>
29707 <li><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a> (controls)</li>
29708 <li><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a> (static)</li>
29709 <li><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a> (dynamic)</li>
29710 <li><a href="#controls_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a> (controls)</li>
29711 <li><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a> (dynamic)</li>
29713 </li> <!-- tag_RAW -->
29714 <li id="tag_HAL2">HAL2 -
29715 Entry is only used by camera device legacy HAL 2.x
29717 <ul class="tags_entries">
29718 <li><a href="#controls_android.request.inputStreams">android.request.inputStreams</a> (controls)</li>
29719 <li><a href="#controls_android.request.outputStreams">android.request.outputStreams</a> (controls)</li>
29720 <li><a href="#controls_android.request.type">android.request.type</a> (controls)</li>
29721 <li><a href="#static_android.request.maxNumReprocessStreams">android.request.maxNumReprocessStreams</a> (static)</li>
29722 <li><a href="#controls_android.blackLevel.lock">android.blackLevel.lock</a> (controls)</li>
29724 </li> <!-- tag_HAL2 -->
29725 <li id="tag_FULL">FULL -
29726 Entry is required for full hardware level devices, and optional for other hardware levels
29728 <ul class="tags_entries">
29729 <li><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a> (static)</li>
29731 </li> <!-- tag_FULL -->
29732 <li id="tag_DEPTH">DEPTH -
29733 Entry is required for the depth capability.
29735 <ul class="tags_entries">
29736 <li><a href="#static_android.lens.poseRotation">android.lens.poseRotation</a> (static)</li>
29737 <li><a href="#static_android.lens.poseTranslation">android.lens.poseTranslation</a> (static)</li>
29738 <li><a href="#static_android.lens.intrinsicCalibration">android.lens.intrinsicCalibration</a> (static)</li>
29739 <li><a href="#static_android.lens.radialDistortion">android.lens.radialDistortion</a> (static)</li>
29740 <li><a href="#static_android.depth.maxDepthSamples">android.depth.maxDepthSamples</a> (static)</li>
29741 <li><a href="#static_android.depth.availableDepthStreamConfigurations">android.depth.availableDepthStreamConfigurations</a> (static)</li>
29742 <li><a href="#static_android.depth.availableDepthMinFrameDurations">android.depth.availableDepthMinFrameDurations</a> (static)</li>
29743 <li><a href="#static_android.depth.availableDepthStallDurations">android.depth.availableDepthStallDurations</a> (static)</li>
29745 </li> <!-- tag_DEPTH -->
29746 <li id="tag_REPROC">REPROC -
29747 Entry is required for the YUV or PRIVATE reprocessing capability.
29749 <ul class="tags_entries">
29750 <li><a href="#controls_android.edge.mode">android.edge.mode</a> (controls)</li>
29751 <li><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a> (static)</li>
29752 <li><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a> (controls)</li>
29753 <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a> (static)</li>
29754 <li><a href="#static_android.request.maxNumInputStreams">android.request.maxNumInputStreams</a> (static)</li>
29755 <li><a href="#static_android.scaler.availableInputOutputFormatsMap">android.scaler.availableInputOutputFormatsMap</a> (static)</li>
29756 <li><a href="#controls_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a> (controls)</li>
29757 <li><a href="#static_android.reprocess.maxCaptureStall">android.reprocess.maxCaptureStall</a> (static)</li>
29758 <li><a href="#dynamic_android.edge.mode">android.edge.mode</a> (dynamic)</li>
29759 <li><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a> (dynamic)</li>
29761 </li> <!-- tag_REPROC -->
29762 <li id="tag_LOGICALCAMERA">LOGICALCAMERA -
29763 Entry is required for logical multi-camera capability.
29765 <ul class="tags_entries">
29766 <li><a href="#static_android.logicalMultiCamera.physicalIds">android.logicalMultiCamera.physicalIds</a> (static)</li>
29767 <li><a href="#static_android.logicalMultiCamera.sensorSyncType">android.logicalMultiCamera.sensorSyncType</a> (static)</li>
29769 </li> <!-- tag_LOGICALCAMERA -->
29770 <li id="tag_FUTURE">FUTURE -
29771 Entry is under-specified and is not required for now. This is for book-keeping purpose,
29772 do not implement or use it, it may be revised for future.
29774 <ul class="tags_entries">
29775 <li><a href="#controls_android.demosaic.mode">android.demosaic.mode</a> (controls)</li>
29776 <li><a href="#controls_android.edge.strength">android.edge.strength</a> (controls)</li>
29777 <li><a href="#controls_android.flash.firingPower">android.flash.firingPower</a> (controls)</li>
29778 <li><a href="#controls_android.flash.firingTime">android.flash.firingTime</a> (controls)</li>
29779 <li><a href="#static_android.flash.info.chargeDuration">android.flash.info.chargeDuration</a> (static)</li>
29780 <li><a href="#static_android.flash.colorTemperature">android.flash.colorTemperature</a> (static)</li>
29781 <li><a href="#static_android.flash.maxEnergy">android.flash.maxEnergy</a> (static)</li>
29782 <li><a href="#dynamic_android.jpeg.size">android.jpeg.size</a> (dynamic)</li>
29783 <li><a href="#controls_android.noiseReduction.strength">android.noiseReduction.strength</a> (controls)</li>
29784 <li><a href="#controls_android.request.metadataMode">android.request.metadataMode</a> (controls)</li>
29785 <li><a href="#static_android.sensor.baseGainFactor">android.sensor.baseGainFactor</a> (static)</li>
29786 <li><a href="#dynamic_android.sensor.temperature">android.sensor.temperature</a> (dynamic)</li>
29787 <li><a href="#controls_android.shading.strength">android.shading.strength</a> (controls)</li>
29788 <li><a href="#controls_android.statistics.histogramMode">android.statistics.histogramMode</a> (controls)</li>
29789 <li><a href="#controls_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a> (controls)</li>
29790 <li><a href="#static_android.statistics.info.histogramBucketCount">android.statistics.info.histogramBucketCount</a> (static)</li>
29791 <li><a href="#static_android.statistics.info.maxHistogramCount">android.statistics.info.maxHistogramCount</a> (static)</li>
29792 <li><a href="#static_android.statistics.info.maxSharpnessMapValue">android.statistics.info.maxSharpnessMapValue</a> (static)</li>
29793 <li><a href="#static_android.statistics.info.sharpnessMapSize">android.statistics.info.sharpnessMapSize</a> (static)</li>
29794 <li><a href="#dynamic_android.statistics.histogram">android.statistics.histogram</a> (dynamic)</li>
29795 <li><a href="#dynamic_android.statistics.sharpnessMap">android.statistics.sharpnessMap</a> (dynamic)</li>
29797 </li> <!-- tag_FUTURE -->
29801 [ <a href="#">top</a> ]