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 class="toc_deprecated"
521 ><a href="#static_android.lens.radialDistortion">android.lens.radialDistortion</a></li>
523 ><a href="#static_android.lens.poseReference">android.lens.poseReference</a></li>
525 ><a href="#static_android.lens.distortion">android.lens.distortion</a></li>
529 <span class="toc_kind_header">dynamic</span>
530 <ul class="toc_section">
532 ><a href="#dynamic_android.lens.aperture">android.lens.aperture</a></li>
534 ><a href="#dynamic_android.lens.filterDensity">android.lens.filterDensity</a></li>
536 ><a href="#dynamic_android.lens.focalLength">android.lens.focalLength</a></li>
538 ><a href="#dynamic_android.lens.focusDistance">android.lens.focusDistance</a></li>
540 ><a href="#dynamic_android.lens.focusRange">android.lens.focusRange</a></li>
542 ><a href="#dynamic_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a></li>
544 ><a href="#dynamic_android.lens.state">android.lens.state</a></li>
546 ><a href="#dynamic_android.lens.poseRotation">android.lens.poseRotation</a></li>
548 ><a href="#dynamic_android.lens.poseTranslation">android.lens.poseTranslation</a></li>
550 ><a href="#dynamic_android.lens.intrinsicCalibration">android.lens.intrinsicCalibration</a></li>
552 class="toc_deprecated"
553 ><a href="#dynamic_android.lens.radialDistortion">android.lens.radialDistortion</a></li>
555 ><a href="#dynamic_android.lens.distortion">android.lens.distortion</a></li>
558 </ul> <!-- toc_section -->
561 <span class="toc_section_header"><a href="#section_noiseReduction">noiseReduction</a></span>
562 <ul class="toc_section">
564 <span class="toc_kind_header">controls</span>
565 <ul class="toc_section">
567 ><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a></li>
569 ><a href="#controls_android.noiseReduction.strength">android.noiseReduction.strength</a></li>
573 <span class="toc_kind_header">static</span>
574 <ul class="toc_section">
576 ><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a></li>
580 <span class="toc_kind_header">dynamic</span>
581 <ul class="toc_section">
583 ><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a></li>
586 </ul> <!-- toc_section -->
589 <span class="toc_section_header"><a href="#section_quirks">quirks</a></span>
590 <ul class="toc_section">
592 <span class="toc_kind_header">static</span>
593 <ul class="toc_section">
595 class="toc_deprecated"
596 ><a href="#static_android.quirks.meteringCropRegion">android.quirks.meteringCropRegion</a></li>
598 class="toc_deprecated"
599 ><a href="#static_android.quirks.triggerAfWithAuto">android.quirks.triggerAfWithAuto</a></li>
601 class="toc_deprecated"
602 ><a href="#static_android.quirks.useZslFormat">android.quirks.useZslFormat</a></li>
604 class="toc_deprecated"
605 ><a href="#static_android.quirks.usePartialResult">android.quirks.usePartialResult</a></li>
609 <span class="toc_kind_header">dynamic</span>
610 <ul class="toc_section">
612 class="toc_deprecated"
613 ><a href="#dynamic_android.quirks.partialResult">android.quirks.partialResult</a></li>
616 </ul> <!-- toc_section -->
619 <span class="toc_section_header"><a href="#section_request">request</a></span>
620 <ul class="toc_section">
622 <span class="toc_kind_header">controls</span>
623 <ul class="toc_section">
625 class="toc_deprecated"
626 ><a href="#controls_android.request.frameCount">android.request.frameCount</a></li>
628 ><a href="#controls_android.request.id">android.request.id</a></li>
630 class="toc_deprecated"
631 ><a href="#controls_android.request.inputStreams">android.request.inputStreams</a></li>
633 ><a href="#controls_android.request.metadataMode">android.request.metadataMode</a></li>
635 class="toc_deprecated"
636 ><a href="#controls_android.request.outputStreams">android.request.outputStreams</a></li>
638 class="toc_deprecated"
639 ><a href="#controls_android.request.type">android.request.type</a></li>
643 <span class="toc_kind_header">static</span>
644 <ul class="toc_section">
646 ><a href="#static_android.request.maxNumOutputStreams">android.request.maxNumOutputStreams</a></li>
648 ><a href="#static_android.request.maxNumOutputRaw">android.request.maxNumOutputRaw</a></li>
650 ><a href="#static_android.request.maxNumOutputProc">android.request.maxNumOutputProc</a></li>
652 ><a href="#static_android.request.maxNumOutputProcStalling">android.request.maxNumOutputProcStalling</a></li>
654 class="toc_deprecated"
655 ><a href="#static_android.request.maxNumReprocessStreams">android.request.maxNumReprocessStreams</a></li>
657 ><a href="#static_android.request.maxNumInputStreams">android.request.maxNumInputStreams</a></li>
659 ><a href="#static_android.request.pipelineMaxDepth">android.request.pipelineMaxDepth</a></li>
661 ><a href="#static_android.request.partialResultCount">android.request.partialResultCount</a></li>
663 ><a href="#static_android.request.availableCapabilities">android.request.availableCapabilities</a></li>
665 ><a href="#static_android.request.availableRequestKeys">android.request.availableRequestKeys</a></li>
667 ><a href="#static_android.request.availableResultKeys">android.request.availableResultKeys</a></li>
669 ><a href="#static_android.request.availableCharacteristicsKeys">android.request.availableCharacteristicsKeys</a></li>
671 ><a href="#static_android.request.availableSessionKeys">android.request.availableSessionKeys</a></li>
673 ><a href="#static_android.request.availablePhysicalCameraRequestKeys">android.request.availablePhysicalCameraRequestKeys</a></li>
677 <span class="toc_kind_header">dynamic</span>
678 <ul class="toc_section">
680 class="toc_deprecated"
681 ><a href="#dynamic_android.request.frameCount">android.request.frameCount</a></li>
683 ><a href="#dynamic_android.request.id">android.request.id</a></li>
685 ><a href="#dynamic_android.request.metadataMode">android.request.metadataMode</a></li>
687 class="toc_deprecated"
688 ><a href="#dynamic_android.request.outputStreams">android.request.outputStreams</a></li>
690 ><a href="#dynamic_android.request.pipelineDepth">android.request.pipelineDepth</a></li>
693 </ul> <!-- toc_section -->
696 <span class="toc_section_header"><a href="#section_scaler">scaler</a></span>
697 <ul class="toc_section">
699 <span class="toc_kind_header">controls</span>
700 <ul class="toc_section">
702 ><a href="#controls_android.scaler.cropRegion">android.scaler.cropRegion</a></li>
706 <span class="toc_kind_header">static</span>
707 <ul class="toc_section">
709 class="toc_deprecated"
710 ><a href="#static_android.scaler.availableFormats">android.scaler.availableFormats</a></li>
712 class="toc_deprecated"
713 ><a href="#static_android.scaler.availableJpegMinDurations">android.scaler.availableJpegMinDurations</a></li>
715 class="toc_deprecated"
716 ><a href="#static_android.scaler.availableJpegSizes">android.scaler.availableJpegSizes</a></li>
718 ><a href="#static_android.scaler.availableMaxDigitalZoom">android.scaler.availableMaxDigitalZoom</a></li>
720 class="toc_deprecated"
721 ><a href="#static_android.scaler.availableProcessedMinDurations">android.scaler.availableProcessedMinDurations</a></li>
723 class="toc_deprecated"
724 ><a href="#static_android.scaler.availableProcessedSizes">android.scaler.availableProcessedSizes</a></li>
726 class="toc_deprecated"
727 ><a href="#static_android.scaler.availableRawMinDurations">android.scaler.availableRawMinDurations</a></li>
729 class="toc_deprecated"
730 ><a href="#static_android.scaler.availableRawSizes">android.scaler.availableRawSizes</a></li>
732 ><a href="#static_android.scaler.availableInputOutputFormatsMap">android.scaler.availableInputOutputFormatsMap</a></li>
734 ><a href="#static_android.scaler.availableStreamConfigurations">android.scaler.availableStreamConfigurations</a></li>
736 ><a href="#static_android.scaler.availableMinFrameDurations">android.scaler.availableMinFrameDurations</a></li>
738 ><a href="#static_android.scaler.availableStallDurations">android.scaler.availableStallDurations</a></li>
740 ><a href="#static_android.scaler.streamConfigurationMap">android.scaler.streamConfigurationMap</a></li>
742 ><a href="#static_android.scaler.croppingType">android.scaler.croppingType</a></li>
746 <span class="toc_kind_header">dynamic</span>
747 <ul class="toc_section">
749 ><a href="#dynamic_android.scaler.cropRegion">android.scaler.cropRegion</a></li>
752 </ul> <!-- toc_section -->
755 <span class="toc_section_header"><a href="#section_sensor">sensor</a></span>
756 <ul class="toc_section">
758 <span class="toc_kind_header">controls</span>
759 <ul class="toc_section">
761 ><a href="#controls_android.sensor.exposureTime">android.sensor.exposureTime</a></li>
763 ><a href="#controls_android.sensor.frameDuration">android.sensor.frameDuration</a></li>
765 ><a href="#controls_android.sensor.sensitivity">android.sensor.sensitivity</a></li>
767 ><a href="#controls_android.sensor.testPatternData">android.sensor.testPatternData</a></li>
769 ><a href="#controls_android.sensor.testPatternMode">android.sensor.testPatternMode</a></li>
773 <span class="toc_kind_header">static</span>
774 <ul class="toc_section">
777 ><a href="#static_android.sensor.info.activeArraySize">android.sensor.info.activeArraySize</a></li>
779 ><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a></li>
781 ><a href="#static_android.sensor.info.colorFilterArrangement">android.sensor.info.colorFilterArrangement</a></li>
783 ><a href="#static_android.sensor.info.exposureTimeRange">android.sensor.info.exposureTimeRange</a></li>
785 ><a href="#static_android.sensor.info.maxFrameDuration">android.sensor.info.maxFrameDuration</a></li>
787 ><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a></li>
789 ><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a></li>
791 ><a href="#static_android.sensor.info.whiteLevel">android.sensor.info.whiteLevel</a></li>
793 ><a href="#static_android.sensor.info.timestampSource">android.sensor.info.timestampSource</a></li>
795 ><a href="#static_android.sensor.info.lensShadingApplied">android.sensor.info.lensShadingApplied</a></li>
797 ><a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.sensor.info.preCorrectionActiveArraySize</a></li>
800 ><a href="#static_android.sensor.referenceIlluminant1">android.sensor.referenceIlluminant1</a></li>
802 ><a href="#static_android.sensor.referenceIlluminant2">android.sensor.referenceIlluminant2</a></li>
804 ><a href="#static_android.sensor.calibrationTransform1">android.sensor.calibrationTransform1</a></li>
806 ><a href="#static_android.sensor.calibrationTransform2">android.sensor.calibrationTransform2</a></li>
808 ><a href="#static_android.sensor.colorTransform1">android.sensor.colorTransform1</a></li>
810 ><a href="#static_android.sensor.colorTransform2">android.sensor.colorTransform2</a></li>
812 ><a href="#static_android.sensor.forwardMatrix1">android.sensor.forwardMatrix1</a></li>
814 ><a href="#static_android.sensor.forwardMatrix2">android.sensor.forwardMatrix2</a></li>
816 ><a href="#static_android.sensor.baseGainFactor">android.sensor.baseGainFactor</a></li>
818 ><a href="#static_android.sensor.blackLevelPattern">android.sensor.blackLevelPattern</a></li>
820 ><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a></li>
822 ><a href="#static_android.sensor.orientation">android.sensor.orientation</a></li>
824 ><a href="#static_android.sensor.profileHueSatMapDimensions">android.sensor.profileHueSatMapDimensions</a></li>
826 ><a href="#static_android.sensor.availableTestPatternModes">android.sensor.availableTestPatternModes</a></li>
828 ><a href="#static_android.sensor.opticalBlackRegions">android.sensor.opticalBlackRegions</a></li>
830 ><a href="#static_android.sensor.opaqueRawSize">android.sensor.opaqueRawSize</a></li>
834 <span class="toc_kind_header">dynamic</span>
835 <ul class="toc_section">
837 ><a href="#dynamic_android.sensor.exposureTime">android.sensor.exposureTime</a></li>
839 ><a href="#dynamic_android.sensor.frameDuration">android.sensor.frameDuration</a></li>
841 ><a href="#dynamic_android.sensor.sensitivity">android.sensor.sensitivity</a></li>
843 ><a href="#dynamic_android.sensor.timestamp">android.sensor.timestamp</a></li>
845 ><a href="#dynamic_android.sensor.temperature">android.sensor.temperature</a></li>
847 ><a href="#dynamic_android.sensor.neutralColorPoint">android.sensor.neutralColorPoint</a></li>
849 ><a href="#dynamic_android.sensor.noiseProfile">android.sensor.noiseProfile</a></li>
851 ><a href="#dynamic_android.sensor.profileHueSatMap">android.sensor.profileHueSatMap</a></li>
853 ><a href="#dynamic_android.sensor.profileToneCurve">android.sensor.profileToneCurve</a></li>
855 ><a href="#dynamic_android.sensor.greenSplit">android.sensor.greenSplit</a></li>
857 ><a href="#dynamic_android.sensor.testPatternData">android.sensor.testPatternData</a></li>
859 ><a href="#dynamic_android.sensor.testPatternMode">android.sensor.testPatternMode</a></li>
861 ><a href="#dynamic_android.sensor.rollingShutterSkew">android.sensor.rollingShutterSkew</a></li>
863 ><a href="#dynamic_android.sensor.dynamicBlackLevel">android.sensor.dynamicBlackLevel</a></li>
865 ><a href="#dynamic_android.sensor.dynamicWhiteLevel">android.sensor.dynamicWhiteLevel</a></li>
868 </ul> <!-- toc_section -->
871 <span class="toc_section_header"><a href="#section_shading">shading</a></span>
872 <ul class="toc_section">
874 <span class="toc_kind_header">controls</span>
875 <ul class="toc_section">
877 ><a href="#controls_android.shading.mode">android.shading.mode</a></li>
879 ><a href="#controls_android.shading.strength">android.shading.strength</a></li>
883 <span class="toc_kind_header">dynamic</span>
884 <ul class="toc_section">
886 ><a href="#dynamic_android.shading.mode">android.shading.mode</a></li>
890 <span class="toc_kind_header">static</span>
891 <ul class="toc_section">
893 ><a href="#static_android.shading.availableModes">android.shading.availableModes</a></li>
896 </ul> <!-- toc_section -->
899 <span class="toc_section_header"><a href="#section_statistics">statistics</a></span>
900 <ul class="toc_section">
902 <span class="toc_kind_header">controls</span>
903 <ul class="toc_section">
905 ><a href="#controls_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a></li>
907 ><a href="#controls_android.statistics.histogramMode">android.statistics.histogramMode</a></li>
909 ><a href="#controls_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a></li>
911 ><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a></li>
913 ><a href="#controls_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a></li>
915 ><a href="#controls_android.statistics.oisDataMode">android.statistics.oisDataMode</a></li>
919 <span class="toc_kind_header">static</span>
920 <ul class="toc_section">
923 ><a href="#static_android.statistics.info.availableFaceDetectModes">android.statistics.info.availableFaceDetectModes</a></li>
925 ><a href="#static_android.statistics.info.histogramBucketCount">android.statistics.info.histogramBucketCount</a></li>
927 ><a href="#static_android.statistics.info.maxFaceCount">android.statistics.info.maxFaceCount</a></li>
929 ><a href="#static_android.statistics.info.maxHistogramCount">android.statistics.info.maxHistogramCount</a></li>
931 ><a href="#static_android.statistics.info.maxSharpnessMapValue">android.statistics.info.maxSharpnessMapValue</a></li>
933 ><a href="#static_android.statistics.info.sharpnessMapSize">android.statistics.info.sharpnessMapSize</a></li>
935 ><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a></li>
937 ><a href="#static_android.statistics.info.availableLensShadingMapModes">android.statistics.info.availableLensShadingMapModes</a></li>
939 ><a href="#static_android.statistics.info.availableOisDataModes">android.statistics.info.availableOisDataModes</a></li>
944 <span class="toc_kind_header">dynamic</span>
945 <ul class="toc_section">
947 ><a href="#dynamic_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a></li>
949 ><a href="#dynamic_android.statistics.faceIds">android.statistics.faceIds</a></li>
951 ><a href="#dynamic_android.statistics.faceLandmarks">android.statistics.faceLandmarks</a></li>
953 ><a href="#dynamic_android.statistics.faceRectangles">android.statistics.faceRectangles</a></li>
955 ><a href="#dynamic_android.statistics.faceScores">android.statistics.faceScores</a></li>
957 ><a href="#dynamic_android.statistics.faces">android.statistics.faces</a></li>
959 ><a href="#dynamic_android.statistics.histogram">android.statistics.histogram</a></li>
961 ><a href="#dynamic_android.statistics.histogramMode">android.statistics.histogramMode</a></li>
963 ><a href="#dynamic_android.statistics.sharpnessMap">android.statistics.sharpnessMap</a></li>
965 ><a href="#dynamic_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a></li>
967 ><a href="#dynamic_android.statistics.lensShadingCorrectionMap">android.statistics.lensShadingCorrectionMap</a></li>
969 ><a href="#dynamic_android.statistics.lensShadingMap">android.statistics.lensShadingMap</a></li>
971 class="toc_deprecated"
972 ><a href="#dynamic_android.statistics.predictedColorGains">android.statistics.predictedColorGains</a></li>
974 class="toc_deprecated"
975 ><a href="#dynamic_android.statistics.predictedColorTransform">android.statistics.predictedColorTransform</a></li>
977 ><a href="#dynamic_android.statistics.sceneFlicker">android.statistics.sceneFlicker</a></li>
979 ><a href="#dynamic_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a></li>
981 ><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a></li>
983 ><a href="#dynamic_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a></li>
985 ><a href="#dynamic_android.statistics.oisDataMode">android.statistics.oisDataMode</a></li>
987 ><a href="#dynamic_android.statistics.oisTimestamps">android.statistics.oisTimestamps</a></li>
989 ><a href="#dynamic_android.statistics.oisXShifts">android.statistics.oisXShifts</a></li>
991 ><a href="#dynamic_android.statistics.oisYShifts">android.statistics.oisYShifts</a></li>
993 ><a href="#dynamic_android.statistics.oisSamples">android.statistics.oisSamples</a></li>
996 </ul> <!-- toc_section -->
999 <span class="toc_section_header"><a href="#section_tonemap">tonemap</a></span>
1000 <ul class="toc_section">
1002 <span class="toc_kind_header">controls</span>
1003 <ul class="toc_section">
1005 ><a href="#controls_android.tonemap.curveBlue">android.tonemap.curveBlue</a></li>
1007 ><a href="#controls_android.tonemap.curveGreen">android.tonemap.curveGreen</a></li>
1009 ><a href="#controls_android.tonemap.curveRed">android.tonemap.curveRed</a></li>
1011 ><a href="#controls_android.tonemap.curve">android.tonemap.curve</a></li>
1013 ><a href="#controls_android.tonemap.mode">android.tonemap.mode</a></li>
1015 ><a href="#controls_android.tonemap.gamma">android.tonemap.gamma</a></li>
1017 ><a href="#controls_android.tonemap.presetCurve">android.tonemap.presetCurve</a></li>
1021 <span class="toc_kind_header">static</span>
1022 <ul class="toc_section">
1024 ><a href="#static_android.tonemap.maxCurvePoints">android.tonemap.maxCurvePoints</a></li>
1026 ><a href="#static_android.tonemap.availableToneMapModes">android.tonemap.availableToneMapModes</a></li>
1030 <span class="toc_kind_header">dynamic</span>
1031 <ul class="toc_section">
1033 ><a href="#dynamic_android.tonemap.curveBlue">android.tonemap.curveBlue</a></li>
1035 ><a href="#dynamic_android.tonemap.curveGreen">android.tonemap.curveGreen</a></li>
1037 ><a href="#dynamic_android.tonemap.curveRed">android.tonemap.curveRed</a></li>
1039 ><a href="#dynamic_android.tonemap.curve">android.tonemap.curve</a></li>
1041 ><a href="#dynamic_android.tonemap.mode">android.tonemap.mode</a></li>
1043 ><a href="#dynamic_android.tonemap.gamma">android.tonemap.gamma</a></li>
1045 ><a href="#dynamic_android.tonemap.presetCurve">android.tonemap.presetCurve</a></li>
1048 </ul> <!-- toc_section -->
1051 <span class="toc_section_header"><a href="#section_led">led</a></span>
1052 <ul class="toc_section">
1054 <span class="toc_kind_header">controls</span>
1055 <ul class="toc_section">
1057 ><a href="#controls_android.led.transmit">android.led.transmit</a></li>
1061 <span class="toc_kind_header">dynamic</span>
1062 <ul class="toc_section">
1064 ><a href="#dynamic_android.led.transmit">android.led.transmit</a></li>
1068 <span class="toc_kind_header">static</span>
1069 <ul class="toc_section">
1071 ><a href="#static_android.led.availableLeds">android.led.availableLeds</a></li>
1074 </ul> <!-- toc_section -->
1077 <span class="toc_section_header"><a href="#section_info">info</a></span>
1078 <ul class="toc_section">
1080 <span class="toc_kind_header">static</span>
1081 <ul class="toc_section">
1083 ><a href="#static_android.info.supportedHardwareLevel">android.info.supportedHardwareLevel</a></li>
1085 ><a href="#static_android.info.version">android.info.version</a></li>
1088 </ul> <!-- toc_section -->
1091 <span class="toc_section_header"><a href="#section_blackLevel">blackLevel</a></span>
1092 <ul class="toc_section">
1094 <span class="toc_kind_header">controls</span>
1095 <ul class="toc_section">
1097 ><a href="#controls_android.blackLevel.lock">android.blackLevel.lock</a></li>
1101 <span class="toc_kind_header">dynamic</span>
1102 <ul class="toc_section">
1104 ><a href="#dynamic_android.blackLevel.lock">android.blackLevel.lock</a></li>
1107 </ul> <!-- toc_section -->
1110 <span class="toc_section_header"><a href="#section_sync">sync</a></span>
1111 <ul class="toc_section">
1113 <span class="toc_kind_header">dynamic</span>
1114 <ul class="toc_section">
1116 ><a href="#dynamic_android.sync.frameNumber">android.sync.frameNumber</a></li>
1120 <span class="toc_kind_header">static</span>
1121 <ul class="toc_section">
1123 ><a href="#static_android.sync.maxLatency">android.sync.maxLatency</a></li>
1126 </ul> <!-- toc_section -->
1129 <span class="toc_section_header"><a href="#section_reprocess">reprocess</a></span>
1130 <ul class="toc_section">
1132 <span class="toc_kind_header">controls</span>
1133 <ul class="toc_section">
1135 ><a href="#controls_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a></li>
1139 <span class="toc_kind_header">dynamic</span>
1140 <ul class="toc_section">
1142 ><a href="#dynamic_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a></li>
1146 <span class="toc_kind_header">static</span>
1147 <ul class="toc_section">
1149 ><a href="#static_android.reprocess.maxCaptureStall">android.reprocess.maxCaptureStall</a></li>
1152 </ul> <!-- toc_section -->
1155 <span class="toc_section_header"><a href="#section_depth">depth</a></span>
1156 <ul class="toc_section">
1158 <span class="toc_kind_header">static</span>
1159 <ul class="toc_section">
1161 ><a href="#static_android.depth.maxDepthSamples">android.depth.maxDepthSamples</a></li>
1163 ><a href="#static_android.depth.availableDepthStreamConfigurations">android.depth.availableDepthStreamConfigurations</a></li>
1165 ><a href="#static_android.depth.availableDepthMinFrameDurations">android.depth.availableDepthMinFrameDurations</a></li>
1167 ><a href="#static_android.depth.availableDepthStallDurations">android.depth.availableDepthStallDurations</a></li>
1169 ><a href="#static_android.depth.depthIsExclusive">android.depth.depthIsExclusive</a></li>
1172 </ul> <!-- toc_section -->
1175 <span class="toc_section_header"><a href="#section_logicalMultiCamera">logicalMultiCamera</a></span>
1176 <ul class="toc_section">
1178 <span class="toc_kind_header">static</span>
1179 <ul class="toc_section">
1181 ><a href="#static_android.logicalMultiCamera.physicalIds">android.logicalMultiCamera.physicalIds</a></li>
1183 ><a href="#static_android.logicalMultiCamera.sensorSyncType">android.logicalMultiCamera.sensorSyncType</a></li>
1186 </ul> <!-- toc_section -->
1189 <span class="toc_section_header"><a href="#section_distortionCorrection">distortionCorrection</a></span>
1190 <ul class="toc_section">
1192 <span class="toc_kind_header">controls</span>
1193 <ul class="toc_section">
1195 ><a href="#controls_android.distortionCorrection.mode">android.distortionCorrection.mode</a></li>
1199 <span class="toc_kind_header">static</span>
1200 <ul class="toc_section">
1202 ><a href="#static_android.distortionCorrection.availableModes">android.distortionCorrection.availableModes</a></li>
1206 <span class="toc_kind_header">dynamic</span>
1207 <ul class="toc_section">
1209 ><a href="#dynamic_android.distortionCorrection.mode">android.distortionCorrection.mode</a></li>
1212 </ul> <!-- toc_section -->
1218 <table class="properties">
1220 <thead class="thead_dummy">
1222 <th class="th_name">Property Name</th>
1223 <th class="th_type">Type</th>
1224 <th class="th_description">Description</th>
1225 <th class="th_units">Units</th>
1226 <th class="th_range">Range</th>
1227 <th class="th_hal_version">HIDL HAL version</th>
1228 <th class="th_tags">Tags</th>
1230 </thead> <!-- so that the first occurrence of thead is not
1231 above the first occurrence of tr -->
1232 <!-- <namespace name="android"> -->
1233 <tr><td colspan="7" id="section_colorCorrection" class="section">colorCorrection</td></tr>
1236 <tr><td colspan="7" class="kind">controls</td></tr>
1238 <thead class="entries_header">
1240 <th class="th_name">Property Name</th>
1241 <th class="th_type">Type</th>
1242 <th class="th_description">Description</th>
1243 <th class="th_units">Units</th>
1244 <th class="th_range">Range</th>
1245 <th class="th_hal_version">Initial HIDL HAL version</th>
1246 <th class="th_tags">Tags</th>
1261 <tr class="entry" id="controls_android.colorCorrection.mode">
1262 <td class="entry_name
1264 android.<wbr/>color<wbr/>Correction.<wbr/>mode
1266 <td class="entry_type">
1267 <span class="entry_type_name entry_type_name_enum">byte</span>
1269 <span class="entry_type_visibility"> [public]</span>
1272 <span class="entry_type_hwlevel">[full] </span>
1276 <ul class="entry_type_enum">
1278 <span class="entry_type_enum_name">TRANSFORM_MATRIX (v3.2)</span>
1279 <span class="entry_type_enum_notes"><p>Use the <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> matrix
1280 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> to do color conversion.<wbr/></p>
1281 <p>All advanced white balance adjustments (not specified
1282 by our white balance pipeline) must be disabled.<wbr/></p>
1283 <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
1284 TRANSFORM_<wbr/>MATRIX is ignored.<wbr/> The camera device will override
1285 this value to either FAST or HIGH_<wbr/>QUALITY.<wbr/></p></span>
1288 <span class="entry_type_enum_name">FAST (v3.2)</span>
1289 <span class="entry_type_enum_notes"><p>Color correction processing must not slow down
1290 capture rate relative to sensor raw output.<wbr/></p>
1291 <p>Advanced white balance adjustments above and beyond
1292 the specified white balance pipeline may be applied.<wbr/></p>
1293 <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
1294 the camera device uses the last frame's AWB values
1295 (or defaults if AWB has never been run).<wbr/></p></span>
1298 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
1299 <span class="entry_type_enum_notes"><p>Color correction processing operates at improved
1300 quality but the capture rate might be reduced (relative to sensor
1301 raw output rate)</p>
1302 <p>Advanced white balance adjustments above and beyond
1303 the specified white balance pipeline may be applied.<wbr/></p>
1304 <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
1305 the camera device uses the last frame's AWB values
1306 (or defaults if AWB has never been run).<wbr/></p></span>
1310 </td> <!-- entry_type -->
1312 <td class="entry_description">
1313 <p>The mode control selects how the image data is converted from the
1314 sensor's native color into linear sRGB color.<wbr/></p>
1317 <td class="entry_units">
1320 <td class="entry_range">
1323 <td class="entry_hal_version">
1327 <td class="entry_tags">
1331 <tr class="entries_header">
1332 <th class="th_details" colspan="6">Details</th>
1334 <tr class="entry_cont">
1335 <td class="entry_details" colspan="6">
1336 <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
1337 control is overridden by the AWB routine.<wbr/> When AWB is disabled,<wbr/> the
1338 application controls how the color mapping is performed.<wbr/></p>
1339 <p>We define the expected processing pipeline below.<wbr/> For consistency
1340 across devices,<wbr/> this is always the case with TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1341 <p>When either FULL or HIGH_<wbr/>QUALITY is used,<wbr/> the camera device may
1342 do additional processing but <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
1343 <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> will still be provided by the
1344 camera device (in the results) and be roughly correct.<wbr/></p>
1345 <p>Switching to TRANSFORM_<wbr/>MATRIX and using the data provided from
1346 FAST or HIGH_<wbr/>QUALITY will yield a picture with the same white point
1347 as what was produced by the camera device in the earlier frame.<wbr/></p>
1348 <p>The expected processing pipeline is as follows:</p>
1349 <p><img alt="White balance processing pipeline" src="images/camera2/metadata/android.colorCorrection.mode/processing_pipeline.png"/></p>
1350 <p>The white balance is encoded by two values,<wbr/> a 4-channel white-balance
1351 gain vector (applied in the Bayer domain),<wbr/> and a 3x3 color transform
1352 matrix (applied after demosaic).<wbr/></p>
1353 <p>The 4-channel white-balance gains are defined as:</p>
1354 <pre><code><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> = [ R G_<wbr/>even G_<wbr/>odd B ]
1356 <p>where <code>G_<wbr/>even</code> is the gain for green pixels on even rows of the
1357 output,<wbr/> and <code>G_<wbr/>odd</code> is the gain for green pixels on the odd rows.<wbr/>
1358 These may be identical for a given camera device implementation; if
1359 the camera device does not support a separate gain for even/<wbr/>odd green
1360 channels,<wbr/> it will use the <code>G_<wbr/>even</code> value,<wbr/> and write <code>G_<wbr/>odd</code> equal to
1361 <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
1362 <p>The matrices for color transforms are defined as a 9-entry vector:</p>
1363 <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 ]
1365 <p>which define a transform from input sensor colors,<wbr/> <code>P_<wbr/>in = [ r g b ]</code>,<wbr/>
1366 to output linear sRGB,<wbr/> <code>P_<wbr/>out = [ r' g' b' ]</code>,<wbr/></p>
1367 <p>with colors as follows:</p>
1368 <pre><code>r' = I0r + I1g + I2b
1369 g' = I3r + I4g + I5b
1370 b' = I6r + I7g + I8b
1372 <p>Both the input and output value ranges must match.<wbr/> Overflow/<wbr/>underflow
1373 values are clipped to fit within the range.<wbr/></p>
1377 <tr class="entries_header">
1378 <th class="th_details" colspan="6">HAL Implementation Details</th>
1380 <tr class="entry_cont">
1381 <td class="entry_details" colspan="6">
1382 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if color correction control is available
1383 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
1384 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
1385 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY should generate the same output.<wbr/></p>
1389 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
1390 <!-- end of entry -->
1393 <tr class="entry" id="controls_android.colorCorrection.transform">
1394 <td class="entry_name
1396 android.<wbr/>color<wbr/>Correction.<wbr/>transform
1398 <td class="entry_type">
1399 <span class="entry_type_name">rational</span>
1400 <span class="entry_type_container">x</span>
1402 <span class="entry_type_array">
1405 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
1408 <span class="entry_type_hwlevel">[full] </span>
1411 <div class="entry_type_notes">3x3 rational matrix in row-major order</div>
1414 </td> <!-- entry_type -->
1416 <td class="entry_description">
1417 <p>A color transform matrix to use to transform
1418 from sensor RGB color space to output linear sRGB color space.<wbr/></p>
1421 <td class="entry_units">
1422 Unitless scale factors
1425 <td class="entry_range">
1428 <td class="entry_hal_version">
1432 <td class="entry_tags">
1436 <tr class="entries_header">
1437 <th class="th_details" colspan="6">Details</th>
1439 <tr class="entry_cont">
1440 <td class="entry_details" colspan="6">
1441 <p>This matrix is either set by the camera device when the request
1442 <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not TRANSFORM_<wbr/>MATRIX,<wbr/> or
1443 directly by the application in the request when the
1444 <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1445 <p>In the latter case,<wbr/> the camera device may round the matrix to account
1446 for precision issues; the final rounded matrix should be reported back
1447 in this matrix result metadata.<wbr/> The transform should keep the magnitude
1448 of the output color values within <code>[0,<wbr/> 1.<wbr/>0]</code> (assuming input color
1449 values is within the normalized range <code>[0,<wbr/> 1.<wbr/>0]</code>),<wbr/> or clipping may occur.<wbr/></p>
1450 <p>The valid range of each matrix element varies on different devices,<wbr/> but
1451 values within [-1.<wbr/>5,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
1456 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
1457 <!-- end of entry -->
1460 <tr class="entry" id="controls_android.colorCorrection.gains">
1461 <td class="entry_name
1463 android.<wbr/>color<wbr/>Correction.<wbr/>gains
1465 <td class="entry_type">
1466 <span class="entry_type_name">float</span>
1467 <span class="entry_type_container">x</span>
1469 <span class="entry_type_array">
1472 <span class="entry_type_visibility"> [public as rggbChannelVector]</span>
1475 <span class="entry_type_hwlevel">[full] </span>
1478 <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div>
1481 </td> <!-- entry_type -->
1483 <td class="entry_description">
1484 <p>Gains applying to Bayer raw color channels for
1485 white-balance.<wbr/></p>
1488 <td class="entry_units">
1489 Unitless gain factors
1492 <td class="entry_range">
1495 <td class="entry_hal_version">
1499 <td class="entry_tags">
1503 <tr class="entries_header">
1504 <th class="th_details" colspan="6">Details</th>
1506 <tr class="entry_cont">
1507 <td class="entry_details" colspan="6">
1508 <p>These per-channel gains are either set by the camera device
1509 when the request <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not
1510 TRANSFORM_<wbr/>MATRIX,<wbr/> or directly by the application in the
1511 request when the <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is
1512 TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1513 <p>The gains in the result metadata are the gains actually
1514 applied by the camera device to the current frame.<wbr/></p>
1515 <p>The valid range of gains varies on different devices,<wbr/> but gains
1516 between [1.<wbr/>0,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/> Even if a given
1517 device allows gains below 1.<wbr/>0,<wbr/> this is usually not recommended because
1518 this can create color artifacts.<wbr/></p>
1522 <tr class="entries_header">
1523 <th class="th_details" colspan="6">HAL Implementation Details</th>
1525 <tr class="entry_cont">
1526 <td class="entry_details" colspan="6">
1527 <p>The 4-channel white-balance gains are defined in
1528 the order of <code>[R G_<wbr/>even G_<wbr/>odd B]</code>,<wbr/> where <code>G_<wbr/>even</code> is the gain
1529 for green pixels on even rows of the output,<wbr/> and <code>G_<wbr/>odd</code>
1530 is the gain for green pixels on the odd rows.<wbr/></p>
1531 <p>If a HAL does not support a separate gain for even/<wbr/>odd green
1532 channels,<wbr/> it must use the <code>G_<wbr/>even</code> value,<wbr/> and write
1533 <code>G_<wbr/>odd</code> equal to <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
1537 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
1538 <!-- end of entry -->
1541 <tr class="entry" id="controls_android.colorCorrection.aberrationMode">
1542 <td class="entry_name
1544 android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode
1546 <td class="entry_type">
1547 <span class="entry_type_name entry_type_name_enum">byte</span>
1549 <span class="entry_type_visibility"> [public]</span>
1552 <span class="entry_type_hwlevel">[legacy] </span>
1556 <ul class="entry_type_enum">
1558 <span class="entry_type_enum_name">OFF (v3.2)</span>
1559 <span class="entry_type_enum_notes"><p>No aberration correction is applied.<wbr/></p></span>
1562 <span class="entry_type_enum_name">FAST (v3.2)</span>
1563 <span class="entry_type_enum_notes"><p>Aberration correction will not slow down capture rate
1564 relative to sensor raw output.<wbr/></p></span>
1567 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
1568 <span class="entry_type_enum_notes"><p>Aberration correction operates at improved quality but the capture rate might be
1569 reduced (relative to sensor raw output rate)</p></span>
1573 </td> <!-- entry_type -->
1575 <td class="entry_description">
1576 <p>Mode of operation for the chromatic aberration correction algorithm.<wbr/></p>
1579 <td class="entry_units">
1582 <td class="entry_range">
1583 <p><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></p>
1586 <td class="entry_hal_version">
1590 <td class="entry_tags">
1594 <tr class="entries_header">
1595 <th class="th_details" colspan="6">Details</th>
1597 <tr class="entry_cont">
1598 <td class="entry_details" colspan="6">
1599 <p>Chromatic (color) aberration is caused by the fact that different wavelengths of light
1600 can not focus on the same point after exiting from the lens.<wbr/> This metadata defines
1601 the high level control of chromatic aberration correction algorithm,<wbr/> which aims to
1602 minimize the chromatic artifacts that may occur along the object boundaries in an
1604 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean that camera device determined aberration
1605 correction will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device will
1606 use the highest-quality aberration correction algorithms,<wbr/> even if it slows down
1607 capture rate.<wbr/> FAST means the camera device will not slow down capture rate when
1608 applying aberration correction.<wbr/></p>
1609 <p>LEGACY devices will always be in FAST mode.<wbr/></p>
1614 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
1615 <!-- end of entry -->
1619 <!-- end of kind -->
1621 <tr><td colspan="7" class="kind">dynamic</td></tr>
1623 <thead class="entries_header">
1625 <th class="th_name">Property Name</th>
1626 <th class="th_type">Type</th>
1627 <th class="th_description">Description</th>
1628 <th class="th_units">Units</th>
1629 <th class="th_range">Range</th>
1630 <th class="th_hal_version">Initial HIDL HAL version</th>
1631 <th class="th_tags">Tags</th>
1646 <tr class="entry" id="dynamic_android.colorCorrection.mode">
1647 <td class="entry_name
1649 android.<wbr/>color<wbr/>Correction.<wbr/>mode
1651 <td class="entry_type">
1652 <span class="entry_type_name entry_type_name_enum">byte</span>
1654 <span class="entry_type_visibility"> [public]</span>
1657 <span class="entry_type_hwlevel">[full] </span>
1661 <ul class="entry_type_enum">
1663 <span class="entry_type_enum_name">TRANSFORM_MATRIX (v3.2)</span>
1664 <span class="entry_type_enum_notes"><p>Use the <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> matrix
1665 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> to do color conversion.<wbr/></p>
1666 <p>All advanced white balance adjustments (not specified
1667 by our white balance pipeline) must be disabled.<wbr/></p>
1668 <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
1669 TRANSFORM_<wbr/>MATRIX is ignored.<wbr/> The camera device will override
1670 this value to either FAST or HIGH_<wbr/>QUALITY.<wbr/></p></span>
1673 <span class="entry_type_enum_name">FAST (v3.2)</span>
1674 <span class="entry_type_enum_notes"><p>Color correction processing must not slow down
1675 capture rate relative to sensor raw output.<wbr/></p>
1676 <p>Advanced white balance adjustments above and beyond
1677 the specified white balance pipeline may be applied.<wbr/></p>
1678 <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
1679 the camera device uses the last frame's AWB values
1680 (or defaults if AWB has never been run).<wbr/></p></span>
1683 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
1684 <span class="entry_type_enum_notes"><p>Color correction processing operates at improved
1685 quality but the capture rate might be reduced (relative to sensor
1686 raw output rate)</p>
1687 <p>Advanced white balance adjustments above and beyond
1688 the specified white balance pipeline may be applied.<wbr/></p>
1689 <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
1690 the camera device uses the last frame's AWB values
1691 (or defaults if AWB has never been run).<wbr/></p></span>
1695 </td> <!-- entry_type -->
1697 <td class="entry_description">
1698 <p>The mode control selects how the image data is converted from the
1699 sensor's native color into linear sRGB color.<wbr/></p>
1702 <td class="entry_units">
1705 <td class="entry_range">
1708 <td class="entry_hal_version">
1712 <td class="entry_tags">
1716 <tr class="entries_header">
1717 <th class="th_details" colspan="6">Details</th>
1719 <tr class="entry_cont">
1720 <td class="entry_details" colspan="6">
1721 <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
1722 control is overridden by the AWB routine.<wbr/> When AWB is disabled,<wbr/> the
1723 application controls how the color mapping is performed.<wbr/></p>
1724 <p>We define the expected processing pipeline below.<wbr/> For consistency
1725 across devices,<wbr/> this is always the case with TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1726 <p>When either FULL or HIGH_<wbr/>QUALITY is used,<wbr/> the camera device may
1727 do additional processing but <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
1728 <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> will still be provided by the
1729 camera device (in the results) and be roughly correct.<wbr/></p>
1730 <p>Switching to TRANSFORM_<wbr/>MATRIX and using the data provided from
1731 FAST or HIGH_<wbr/>QUALITY will yield a picture with the same white point
1732 as what was produced by the camera device in the earlier frame.<wbr/></p>
1733 <p>The expected processing pipeline is as follows:</p>
1734 <p><img alt="White balance processing pipeline" src="images/camera2/metadata/android.colorCorrection.mode/processing_pipeline.png"/></p>
1735 <p>The white balance is encoded by two values,<wbr/> a 4-channel white-balance
1736 gain vector (applied in the Bayer domain),<wbr/> and a 3x3 color transform
1737 matrix (applied after demosaic).<wbr/></p>
1738 <p>The 4-channel white-balance gains are defined as:</p>
1739 <pre><code><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> = [ R G_<wbr/>even G_<wbr/>odd B ]
1741 <p>where <code>G_<wbr/>even</code> is the gain for green pixels on even rows of the
1742 output,<wbr/> and <code>G_<wbr/>odd</code> is the gain for green pixels on the odd rows.<wbr/>
1743 These may be identical for a given camera device implementation; if
1744 the camera device does not support a separate gain for even/<wbr/>odd green
1745 channels,<wbr/> it will use the <code>G_<wbr/>even</code> value,<wbr/> and write <code>G_<wbr/>odd</code> equal to
1746 <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
1747 <p>The matrices for color transforms are defined as a 9-entry vector:</p>
1748 <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 ]
1750 <p>which define a transform from input sensor colors,<wbr/> <code>P_<wbr/>in = [ r g b ]</code>,<wbr/>
1751 to output linear sRGB,<wbr/> <code>P_<wbr/>out = [ r' g' b' ]</code>,<wbr/></p>
1752 <p>with colors as follows:</p>
1753 <pre><code>r' = I0r + I1g + I2b
1754 g' = I3r + I4g + I5b
1755 b' = I6r + I7g + I8b
1757 <p>Both the input and output value ranges must match.<wbr/> Overflow/<wbr/>underflow
1758 values are clipped to fit within the range.<wbr/></p>
1762 <tr class="entries_header">
1763 <th class="th_details" colspan="6">HAL Implementation Details</th>
1765 <tr class="entry_cont">
1766 <td class="entry_details" colspan="6">
1767 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if color correction control is available
1768 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
1769 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
1770 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY should generate the same output.<wbr/></p>
1774 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
1775 <!-- end of entry -->
1778 <tr class="entry" id="dynamic_android.colorCorrection.transform">
1779 <td class="entry_name
1781 android.<wbr/>color<wbr/>Correction.<wbr/>transform
1783 <td class="entry_type">
1784 <span class="entry_type_name">rational</span>
1785 <span class="entry_type_container">x</span>
1787 <span class="entry_type_array">
1790 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
1793 <span class="entry_type_hwlevel">[full] </span>
1796 <div class="entry_type_notes">3x3 rational matrix in row-major order</div>
1799 </td> <!-- entry_type -->
1801 <td class="entry_description">
1802 <p>A color transform matrix to use to transform
1803 from sensor RGB color space to output linear sRGB color space.<wbr/></p>
1806 <td class="entry_units">
1807 Unitless scale factors
1810 <td class="entry_range">
1813 <td class="entry_hal_version">
1817 <td class="entry_tags">
1821 <tr class="entries_header">
1822 <th class="th_details" colspan="6">Details</th>
1824 <tr class="entry_cont">
1825 <td class="entry_details" colspan="6">
1826 <p>This matrix is either set by the camera device when the request
1827 <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not TRANSFORM_<wbr/>MATRIX,<wbr/> or
1828 directly by the application in the request when the
1829 <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1830 <p>In the latter case,<wbr/> the camera device may round the matrix to account
1831 for precision issues; the final rounded matrix should be reported back
1832 in this matrix result metadata.<wbr/> The transform should keep the magnitude
1833 of the output color values within <code>[0,<wbr/> 1.<wbr/>0]</code> (assuming input color
1834 values is within the normalized range <code>[0,<wbr/> 1.<wbr/>0]</code>),<wbr/> or clipping may occur.<wbr/></p>
1835 <p>The valid range of each matrix element varies on different devices,<wbr/> but
1836 values within [-1.<wbr/>5,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
1841 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
1842 <!-- end of entry -->
1845 <tr class="entry" id="dynamic_android.colorCorrection.gains">
1846 <td class="entry_name
1848 android.<wbr/>color<wbr/>Correction.<wbr/>gains
1850 <td class="entry_type">
1851 <span class="entry_type_name">float</span>
1852 <span class="entry_type_container">x</span>
1854 <span class="entry_type_array">
1857 <span class="entry_type_visibility"> [public as rggbChannelVector]</span>
1860 <span class="entry_type_hwlevel">[full] </span>
1863 <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div>
1866 </td> <!-- entry_type -->
1868 <td class="entry_description">
1869 <p>Gains applying to Bayer raw color channels for
1870 white-balance.<wbr/></p>
1873 <td class="entry_units">
1874 Unitless gain factors
1877 <td class="entry_range">
1880 <td class="entry_hal_version">
1884 <td class="entry_tags">
1888 <tr class="entries_header">
1889 <th class="th_details" colspan="6">Details</th>
1891 <tr class="entry_cont">
1892 <td class="entry_details" colspan="6">
1893 <p>These per-channel gains are either set by the camera device
1894 when the request <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not
1895 TRANSFORM_<wbr/>MATRIX,<wbr/> or directly by the application in the
1896 request when the <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is
1897 TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1898 <p>The gains in the result metadata are the gains actually
1899 applied by the camera device to the current frame.<wbr/></p>
1900 <p>The valid range of gains varies on different devices,<wbr/> but gains
1901 between [1.<wbr/>0,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/> Even if a given
1902 device allows gains below 1.<wbr/>0,<wbr/> this is usually not recommended because
1903 this can create color artifacts.<wbr/></p>
1907 <tr class="entries_header">
1908 <th class="th_details" colspan="6">HAL Implementation Details</th>
1910 <tr class="entry_cont">
1911 <td class="entry_details" colspan="6">
1912 <p>The 4-channel white-balance gains are defined in
1913 the order of <code>[R G_<wbr/>even G_<wbr/>odd B]</code>,<wbr/> where <code>G_<wbr/>even</code> is the gain
1914 for green pixels on even rows of the output,<wbr/> and <code>G_<wbr/>odd</code>
1915 is the gain for green pixels on the odd rows.<wbr/></p>
1916 <p>If a HAL does not support a separate gain for even/<wbr/>odd green
1917 channels,<wbr/> it must use the <code>G_<wbr/>even</code> value,<wbr/> and write
1918 <code>G_<wbr/>odd</code> equal to <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
1922 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
1923 <!-- end of entry -->
1926 <tr class="entry" id="dynamic_android.colorCorrection.aberrationMode">
1927 <td class="entry_name
1929 android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode
1931 <td class="entry_type">
1932 <span class="entry_type_name entry_type_name_enum">byte</span>
1934 <span class="entry_type_visibility"> [public]</span>
1937 <span class="entry_type_hwlevel">[legacy] </span>
1941 <ul class="entry_type_enum">
1943 <span class="entry_type_enum_name">OFF (v3.2)</span>
1944 <span class="entry_type_enum_notes"><p>No aberration correction is applied.<wbr/></p></span>
1947 <span class="entry_type_enum_name">FAST (v3.2)</span>
1948 <span class="entry_type_enum_notes"><p>Aberration correction will not slow down capture rate
1949 relative to sensor raw output.<wbr/></p></span>
1952 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
1953 <span class="entry_type_enum_notes"><p>Aberration correction operates at improved quality but the capture rate might be
1954 reduced (relative to sensor raw output rate)</p></span>
1958 </td> <!-- entry_type -->
1960 <td class="entry_description">
1961 <p>Mode of operation for the chromatic aberration correction algorithm.<wbr/></p>
1964 <td class="entry_units">
1967 <td class="entry_range">
1968 <p><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></p>
1971 <td class="entry_hal_version">
1975 <td class="entry_tags">
1979 <tr class="entries_header">
1980 <th class="th_details" colspan="6">Details</th>
1982 <tr class="entry_cont">
1983 <td class="entry_details" colspan="6">
1984 <p>Chromatic (color) aberration is caused by the fact that different wavelengths of light
1985 can not focus on the same point after exiting from the lens.<wbr/> This metadata defines
1986 the high level control of chromatic aberration correction algorithm,<wbr/> which aims to
1987 minimize the chromatic artifacts that may occur along the object boundaries in an
1989 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean that camera device determined aberration
1990 correction will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device will
1991 use the highest-quality aberration correction algorithms,<wbr/> even if it slows down
1992 capture rate.<wbr/> FAST means the camera device will not slow down capture rate when
1993 applying aberration correction.<wbr/></p>
1994 <p>LEGACY devices will always be in FAST mode.<wbr/></p>
1999 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2000 <!-- end of entry -->
2004 <!-- end of kind -->
2006 <tr><td colspan="7" class="kind">static</td></tr>
2008 <thead class="entries_header">
2010 <th class="th_name">Property Name</th>
2011 <th class="th_type">Type</th>
2012 <th class="th_description">Description</th>
2013 <th class="th_units">Units</th>
2014 <th class="th_range">Range</th>
2015 <th class="th_hal_version">Initial HIDL HAL version</th>
2016 <th class="th_tags">Tags</th>
2031 <tr class="entry" id="static_android.colorCorrection.availableAberrationModes">
2032 <td class="entry_name
2034 android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes
2036 <td class="entry_type">
2037 <span class="entry_type_name">byte</span>
2038 <span class="entry_type_container">x</span>
2040 <span class="entry_type_array">
2043 <span class="entry_type_visibility"> [public as enumList]</span>
2046 <span class="entry_type_hwlevel">[legacy] </span>
2049 <div class="entry_type_notes">list of enums</div>
2052 </td> <!-- entry_type -->
2054 <td class="entry_description">
2055 <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
2056 supported by this camera device.<wbr/></p>
2059 <td class="entry_units">
2062 <td class="entry_range">
2063 <p>Any value listed in <a href="#controls_android.colorCorrection.aberrationMode">android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode</a></p>
2066 <td class="entry_hal_version">
2070 <td class="entry_tags">
2071 <ul class="entry_tags">
2072 <li><a href="#tag_V1">V1</a></li>
2077 <tr class="entries_header">
2078 <th class="th_details" colspan="6">Details</th>
2080 <tr class="entry_cont">
2081 <td class="entry_details" colspan="6">
2082 <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
2083 aberration correction modes are available for a device,<wbr/> this list will solely include
2084 OFF mode.<wbr/> All camera devices will support either OFF or FAST mode.<wbr/></p>
2085 <p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always list
2086 OFF mode.<wbr/> This includes all FULL level devices.<wbr/></p>
2087 <p>LEGACY devices will always only support FAST mode.<wbr/></p>
2091 <tr class="entries_header">
2092 <th class="th_details" colspan="6">HAL Implementation Details</th>
2094 <tr class="entry_cont">
2095 <td class="entry_details" colspan="6">
2096 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if chromatic aberration control is available
2097 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
2098 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
2099 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
2103 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2104 <!-- end of entry -->
2108 <!-- end of kind -->
2111 <!-- end of section -->
2112 <tr><td colspan="7" id="section_control" class="section">control</td></tr>
2115 <tr><td colspan="7" class="kind">controls</td></tr>
2117 <thead class="entries_header">
2119 <th class="th_name">Property Name</th>
2120 <th class="th_type">Type</th>
2121 <th class="th_description">Description</th>
2122 <th class="th_units">Units</th>
2123 <th class="th_range">Range</th>
2124 <th class="th_hal_version">Initial HIDL HAL version</th>
2125 <th class="th_tags">Tags</th>
2140 <tr class="entry" id="controls_android.control.aeAntibandingMode">
2141 <td class="entry_name
2143 android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode
2145 <td class="entry_type">
2146 <span class="entry_type_name entry_type_name_enum">byte</span>
2148 <span class="entry_type_visibility"> [public]</span>
2151 <span class="entry_type_hwlevel">[legacy] </span>
2155 <ul class="entry_type_enum">
2157 <span class="entry_type_enum_name">OFF (v3.2)</span>
2158 <span class="entry_type_enum_notes"><p>The camera device will not adjust exposure duration to
2159 avoid banding problems.<wbr/></p></span>
2162 <span class="entry_type_enum_name">50HZ (v3.2)</span>
2163 <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
2164 avoid banding problems with 50Hz illumination sources.<wbr/></p></span>
2167 <span class="entry_type_enum_name">60HZ (v3.2)</span>
2168 <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
2169 avoid banding problems with 60Hz illumination
2170 sources.<wbr/></p></span>
2173 <span class="entry_type_enum_name">AUTO (v3.2)</span>
2174 <span class="entry_type_enum_notes"><p>The camera device will automatically adapt its
2175 antibanding routine to the current illumination
2176 condition.<wbr/> This is the default mode if AUTO is
2177 available on given camera device.<wbr/></p></span>
2181 </td> <!-- entry_type -->
2183 <td class="entry_description">
2184 <p>The desired setting for the camera device's auto-exposure
2185 algorithm's antibanding compensation.<wbr/></p>
2188 <td class="entry_units">
2191 <td class="entry_range">
2192 <p><a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a></p>
2195 <td class="entry_hal_version">
2199 <td class="entry_tags">
2200 <ul class="entry_tags">
2201 <li><a href="#tag_BC">BC</a></li>
2206 <tr class="entries_header">
2207 <th class="th_details" colspan="6">Details</th>
2209 <tr class="entry_cont">
2210 <td class="entry_details" colspan="6">
2211 <p>Some kinds of lighting fixtures,<wbr/> such as some fluorescent
2212 lights,<wbr/> flicker at the rate of the power supply frequency
2213 (60Hz or 50Hz,<wbr/> depending on country).<wbr/> While this is
2214 typically not noticeable to a person,<wbr/> it can be visible to
2215 a camera device.<wbr/> If a camera sets its exposure time to the
2216 wrong value,<wbr/> the flicker may become visible in the
2217 viewfinder as flicker or in a final captured image,<wbr/> as a
2218 set of variable-brightness bands across the image.<wbr/></p>
2219 <p>Therefore,<wbr/> the auto-exposure routines of camera devices
2220 include antibanding routines that ensure that the chosen
2221 exposure value will not cause such banding.<wbr/> The choice of
2222 exposure time depends on the rate of flicker,<wbr/> which the
2223 camera device can detect automatically,<wbr/> or the expected
2224 rate can be selected by the application using this
2226 <p>A given camera device may not support all of the possible
2227 options for the antibanding mode.<wbr/> The
2228 <a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a> key contains
2229 the available modes for a given camera device.<wbr/></p>
2230 <p>AUTO mode is the default if it is available on given
2231 camera device.<wbr/> When AUTO mode is not available,<wbr/> the
2232 default will be either 50HZ or 60HZ,<wbr/> and both 50HZ
2233 and 60HZ will be available.<wbr/></p>
2234 <p>If manual exposure control is enabled (by setting
2235 <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/>
2236 then this setting has no effect,<wbr/> and the application must
2237 ensure it selects exposure times that do not cause banding
2238 issues.<wbr/> The <a href="#dynamic_android.statistics.sceneFlicker">android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker</a> key can assist
2239 the application in this.<wbr/></p>
2243 <tr class="entries_header">
2244 <th class="th_details" colspan="6">HAL Implementation Details</th>
2246 <tr class="entry_cont">
2247 <td class="entry_details" colspan="6">
2248 <p>For all capture request templates,<wbr/> this field must be set
2249 to AUTO if AUTO mode is available.<wbr/> If AUTO is not available,<wbr/>
2250 the default must be either 50HZ or 60HZ,<wbr/> and both 50HZ and
2251 60HZ must be available.<wbr/></p>
2252 <p>If manual exposure control is enabled (by setting
2253 <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/>
2254 then the exposure values provided by the application must not be
2255 adjusted for antibanding.<wbr/></p>
2259 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2260 <!-- end of entry -->
2263 <tr class="entry" id="controls_android.control.aeExposureCompensation">
2264 <td class="entry_name
2266 android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation
2268 <td class="entry_type">
2269 <span class="entry_type_name">int32</span>
2271 <span class="entry_type_visibility"> [public]</span>
2274 <span class="entry_type_hwlevel">[legacy] </span>
2279 </td> <!-- entry_type -->
2281 <td class="entry_description">
2282 <p>Adjustment to auto-exposure (AE) target image
2283 brightness.<wbr/></p>
2286 <td class="entry_units">
2290 <td class="entry_range">
2291 <p><a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a></p>
2294 <td class="entry_hal_version">
2298 <td class="entry_tags">
2299 <ul class="entry_tags">
2300 <li><a href="#tag_BC">BC</a></li>
2305 <tr class="entries_header">
2306 <th class="th_details" colspan="6">Details</th>
2308 <tr class="entry_cont">
2309 <td class="entry_details" colspan="6">
2310 <p>The adjustment is measured as a count of steps,<wbr/> with the
2311 step size defined by <a href="#static_android.control.aeCompensationStep">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step</a> and the
2312 allowed range by <a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a>.<wbr/></p>
2313 <p>For example,<wbr/> if the exposure value (EV) step is 0.<wbr/>333,<wbr/> '6'
2314 will mean an exposure compensation of +2 EV; -3 will mean an
2315 exposure compensation of -1 EV.<wbr/> One EV represents a doubling
2316 of image brightness.<wbr/> Note that this control will only be
2317 effective if <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>!=</code> OFF.<wbr/> This control
2318 will take effect even when <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> <code>== true</code>.<wbr/></p>
2319 <p>In the event of exposure compensation value being changed,<wbr/> camera device
2320 may take several frames to reach the newly requested exposure target.<wbr/>
2321 During that time,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> field will be in the SEARCHING
2322 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
2323 change from SEARCHING to either CONVERGED,<wbr/> LOCKED (if AE lock is enabled),<wbr/> or
2324 FLASH_<wbr/>REQUIRED (if the scene is too dark for still capture).<wbr/></p>
2329 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2330 <!-- end of entry -->
2333 <tr class="entry" id="controls_android.control.aeLock">
2334 <td class="entry_name
2336 android.<wbr/>control.<wbr/>ae<wbr/>Lock
2338 <td class="entry_type">
2339 <span class="entry_type_name entry_type_name_enum">byte</span>
2341 <span class="entry_type_visibility"> [public as boolean]</span>
2344 <span class="entry_type_hwlevel">[legacy] </span>
2348 <ul class="entry_type_enum">
2350 <span class="entry_type_enum_name">OFF (v3.2)</span>
2351 <span class="entry_type_enum_notes"><p>Auto-exposure lock is disabled; the AE algorithm
2352 is free to update its parameters.<wbr/></p></span>
2355 <span class="entry_type_enum_name">ON (v3.2)</span>
2356 <span class="entry_type_enum_notes"><p>Auto-exposure lock is enabled; the AE algorithm
2357 must not update the exposure and sensitivity parameters
2358 while the lock is active.<wbr/></p>
2359 <p><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a> setting changes
2360 will still take effect while auto-exposure is locked.<wbr/></p>
2361 <p>Some rare LEGACY devices may not support
2362 this,<wbr/> in which case the value will always be overridden to OFF.<wbr/></p></span>
2366 </td> <!-- entry_type -->
2368 <td class="entry_description">
2369 <p>Whether auto-exposure (AE) is currently locked to its latest
2370 calculated values.<wbr/></p>
2373 <td class="entry_units">
2376 <td class="entry_range">
2379 <td class="entry_hal_version">
2383 <td class="entry_tags">
2384 <ul class="entry_tags">
2385 <li><a href="#tag_BC">BC</a></li>
2390 <tr class="entries_header">
2391 <th class="th_details" colspan="6">Details</th>
2393 <tr class="entry_cont">
2394 <td class="entry_details" colspan="6">
2395 <p>When set to <code>true</code> (ON),<wbr/> the AE algorithm is locked to its latest parameters,<wbr/>
2396 and will not change exposure settings until the lock is set to <code>false</code> (OFF).<wbr/></p>
2397 <p>Note that even when AE is locked,<wbr/> the flash may be fired if
2398 the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is ON_<wbr/>AUTO_<wbr/>FLASH /<wbr/>
2399 ON_<wbr/>ALWAYS_<wbr/>FLASH /<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE.<wbr/></p>
2400 <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
2401 is ON,<wbr/> the camera device will still adjust its exposure value.<wbr/></p>
2402 <p>If AE precapture is triggered (see <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>)
2403 when AE is already locked,<wbr/> the camera device will not change the exposure time
2404 (<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>)
2405 parameters.<wbr/> The flash may be fired if the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>
2406 is ON_<wbr/>AUTO_<wbr/>FLASH/<wbr/>ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE and the scene is too dark.<wbr/> If the
2407 <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/>
2408 Similarly,<wbr/> AE precapture trigger CANCEL has no effect when AE is already locked.<wbr/></p>
2409 <p>When an AE precapture sequence is triggered,<wbr/> AE unlock will not be able to unlock
2410 the AE if AE is locked by the camera device internally during precapture metering
2411 sequence In other words,<wbr/> submitting requests with AE unlock has no effect for an
2412 ongoing precapture metering sequence.<wbr/> Otherwise,<wbr/> the precapture metering sequence
2413 will never succeed in a sequence of preview requests where AE lock is always set
2414 to <code>false</code>.<wbr/></p>
2415 <p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that
2416 get locked do not necessarily correspond to the settings that were present in the
2417 latest capture result received from the camera device,<wbr/> since additional captures
2418 and AE updates may have occurred even before the result was sent out.<wbr/> If an
2419 application is switching between automatic and manual control and wishes to eliminate
2420 any flicker during the switch,<wbr/> the following procedure is recommended:</p>
2422 <li>Starting in auto-AE mode:</li>
2424 <li>Wait for the first result to be output that has the AE locked</li>
2425 <li>Copy exposure settings from that result into a request,<wbr/> set the request to manual AE</li>
2426 <li>Submit the capture request,<wbr/> proceed to run manual AE as desired.<wbr/></li>
2428 <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>
2433 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2434 <!-- end of entry -->
2437 <tr class="entry" id="controls_android.control.aeMode">
2438 <td class="entry_name
2440 android.<wbr/>control.<wbr/>ae<wbr/>Mode
2442 <td class="entry_type">
2443 <span class="entry_type_name entry_type_name_enum">byte</span>
2445 <span class="entry_type_visibility"> [public]</span>
2448 <span class="entry_type_hwlevel">[legacy] </span>
2452 <ul class="entry_type_enum">
2454 <span class="entry_type_enum_name">OFF (v3.2)</span>
2455 <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is disabled.<wbr/></p>
2456 <p>The application-selected <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
2457 <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> and
2458 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are used by the camera
2459 device,<wbr/> along with android.<wbr/>flash.<wbr/>* fields,<wbr/> if there's
2460 a flash unit for this camera device.<wbr/></p>
2461 <p>Note that auto-white balance (AWB) and auto-focus (AF)
2462 behavior is device dependent when AE is in OFF mode.<wbr/>
2463 To have consistent behavior across different devices,<wbr/>
2464 it is recommended to either set AWB and AF to OFF mode
2465 or lock AWB and AF before setting AE to OFF.<wbr/>
2466 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/>
2467 <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>
2468 for more details.<wbr/></p>
2469 <p>LEGACY devices do not support the OFF mode and will
2470 override attempts to use this value to ON.<wbr/></p></span>
2473 <span class="entry_type_enum_name">ON (v3.2)</span>
2474 <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is active,<wbr/>
2475 with no flash control.<wbr/></p>
2476 <p>The application's values for
2477 <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
2478 <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
2479 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are ignored.<wbr/> The
2480 application has control over the various
2481 android.<wbr/>flash.<wbr/>* fields.<wbr/></p></span>
2484 <span class="entry_type_enum_name">ON_AUTO_FLASH (v3.2)</span>
2485 <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
2486 the camera's flash unit,<wbr/> firing it in low-light
2487 conditions.<wbr/></p>
2488 <p>The flash may be fired during a precapture sequence
2489 (triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and
2490 may be fired for captures for which the
2491 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to
2492 STILL_<wbr/>CAPTURE</p></span>
2495 <span class="entry_type_enum_name">ON_ALWAYS_FLASH (v3.2)</span>
2496 <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
2497 the camera's flash unit,<wbr/> always firing it for still
2499 <p>The flash may be fired during a precapture sequence
2500 (triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and
2501 will always be fired for captures for which the
2502 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to
2503 STILL_<wbr/>CAPTURE</p></span>
2506 <span class="entry_type_enum_name">ON_AUTO_FLASH_REDEYE (v3.2)</span>
2507 <span class="entry_type_enum_notes"><p>Like ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> but with automatic red eye
2508 reduction.<wbr/></p>
2509 <p>If deemed necessary by the camera device,<wbr/> a red eye
2510 reduction flash will fire during the precapture
2511 sequence.<wbr/></p></span>
2514 <span class="entry_type_enum_name">ON_EXTERNAL_FLASH (v3.3)</span>
2515 <span class="entry_type_enum_notes"><p>An external flash has been turned on.<wbr/></p>
2516 <p>It informs the camera device that an external flash has been turned on,<wbr/> and that
2517 metering (and continuous focus if active) should be quickly recaculated to account
2518 for the external flash.<wbr/> Otherwise,<wbr/> this mode acts like ON.<wbr/></p>
2519 <p>When the external flash is turned off,<wbr/> AE mode should be changed to one of the
2520 other available AE modes.<wbr/></p>
2521 <p>If the camera device supports AE external flash mode,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> must
2522 be FLASH_<wbr/>REQUIRED after the camera device finishes AE scan and it's too dark without
2523 flash.<wbr/></p></span>
2527 </td> <!-- entry_type -->
2529 <td class="entry_description">
2530 <p>The desired mode for the camera device's
2531 auto-exposure routine.<wbr/></p>
2534 <td class="entry_units">
2537 <td class="entry_range">
2538 <p><a href="#static_android.control.aeAvailableModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes</a></p>
2541 <td class="entry_hal_version">
2545 <td class="entry_tags">
2546 <ul class="entry_tags">
2547 <li><a href="#tag_BC">BC</a></li>
2552 <tr class="entries_header">
2553 <th class="th_details" colspan="6">Details</th>
2555 <tr class="entry_cont">
2556 <td class="entry_details" colspan="6">
2557 <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is
2559 <p>When set to any of the ON modes,<wbr/> the camera device's
2560 auto-exposure routine is enabled,<wbr/> overriding the
2561 application's selected exposure time,<wbr/> sensor sensitivity,<wbr/>
2562 and frame duration (<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
2563 <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
2564 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>).<wbr/> If one of the FLASH modes
2565 is selected,<wbr/> the camera device's flash unit controls are
2566 also overridden.<wbr/></p>
2567 <p>The FLASH modes are only available if the camera device
2568 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>
2569 <p>If flash TORCH mode is desired,<wbr/> this field must be set to
2570 ON or OFF,<wbr/> and <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> set to TORCH.<wbr/></p>
2571 <p>When set to any of the ON modes,<wbr/> the values chosen by the
2572 camera device auto-exposure routine for the overridden
2573 fields for a given capture will be available in its
2574 CaptureResult.<wbr/></p>
2579 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2580 <!-- end of entry -->
2583 <tr class="entry" id="controls_android.control.aeRegions">
2584 <td class="entry_name
2586 android.<wbr/>control.<wbr/>ae<wbr/>Regions
2588 <td class="entry_type">
2589 <span class="entry_type_name">int32</span>
2590 <span class="entry_type_container">x</span>
2592 <span class="entry_type_array">
2595 <span class="entry_type_visibility"> [public as meteringRectangle]</span>
2602 </td> <!-- entry_type -->
2604 <td class="entry_description">
2605 <p>List of metering areas to use for auto-exposure adjustment.<wbr/></p>
2608 <td class="entry_units">
2609 Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
2612 <td class="entry_range">
2613 <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
2614 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
2617 <td class="entry_hal_version">
2621 <td class="entry_tags">
2622 <ul class="entry_tags">
2623 <li><a href="#tag_BC">BC</a></li>
2628 <tr class="entries_header">
2629 <th class="th_details" colspan="6">Details</th>
2631 <tr class="entry_cont">
2632 <td class="entry_details" colspan="6">
2633 <p>Not available if <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a> is 0.<wbr/>
2634 Otherwise will always be present.<wbr/></p>
2635 <p>The maximum number of regions supported by the device is determined by the value
2636 of <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a>.<wbr/></p>
2637 <p>The coordinate system is based on the active pixel array,<wbr/>
2638 with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
2639 (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
2640 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
2641 bottom-right pixel in the active pixel array.<wbr/></p>
2642 <p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight
2643 for every pixel in the area.<wbr/> This means that a large metering area
2644 with the same weight as a smaller area will have more effect in
2645 the metering result.<wbr/> Metering areas can partially overlap and the
2646 camera device will add the weights in the overlap region.<wbr/></p>
2647 <p>The weights are relative to weights of other exposure metering regions,<wbr/> so if only one
2648 region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0
2649 weight is ignored.<wbr/></p>
2650 <p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
2651 camera device.<wbr/></p>
2652 <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
2653 capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
2654 region and output only the intersection rectangle as the metering region in the result
2655 metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and
2656 not reported in the result metadata.<wbr/></p>
2660 <tr class="entries_header">
2661 <th class="th_details" colspan="6">HAL Implementation Details</th>
2663 <tr class="entry_cont">
2664 <td class="entry_details" colspan="6">
2665 <p>The HAL level representation of MeteringRectangle[] is a
2666 int[5 * area_<wbr/>count].<wbr/>
2667 Every five elements represent a metering region of
2668 (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
2669 The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
2670 exclusive on xmax and ymax.<wbr/></p>
2674 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2675 <!-- end of entry -->
2678 <tr class="entry" id="controls_android.control.aeTargetFpsRange">
2679 <td class="entry_name
2681 android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range
2683 <td class="entry_type">
2684 <span class="entry_type_name">int32</span>
2685 <span class="entry_type_container">x</span>
2687 <span class="entry_type_array">
2690 <span class="entry_type_visibility"> [public as rangeInt]</span>
2693 <span class="entry_type_hwlevel">[legacy] </span>
2698 </td> <!-- entry_type -->
2700 <td class="entry_description">
2701 <p>Range over which the auto-exposure routine can
2702 adjust the capture frame rate to maintain good
2706 <td class="entry_units">
2707 Frames per second (FPS)
2710 <td class="entry_range">
2711 <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>
2714 <td class="entry_hal_version">
2718 <td class="entry_tags">
2719 <ul class="entry_tags">
2720 <li><a href="#tag_BC">BC</a></li>
2725 <tr class="entries_header">
2726 <th class="th_details" colspan="6">Details</th>
2728 <tr class="entry_cont">
2729 <td class="entry_details" colspan="6">
2730 <p>Only constrains auto-exposure (AE) algorithm,<wbr/> not
2731 manual control of <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> and
2732 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>.<wbr/></p>
2737 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2738 <!-- end of entry -->
2741 <tr class="entry" id="controls_android.control.aePrecaptureTrigger">
2742 <td class="entry_name
2744 android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger
2746 <td class="entry_type">
2747 <span class="entry_type_name entry_type_name_enum">byte</span>
2749 <span class="entry_type_visibility"> [public]</span>
2752 <span class="entry_type_hwlevel">[limited] </span>
2756 <ul class="entry_type_enum">
2758 <span class="entry_type_enum_name">IDLE (v3.2)</span>
2759 <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
2762 <span class="entry_type_enum_name">START (v3.2)</span>
2763 <span class="entry_type_enum_notes"><p>The precapture metering sequence will be started
2764 by the camera device.<wbr/></p>
2765 <p>The exact effect of the precapture trigger depends on
2766 the current AE mode and state.<wbr/></p></span>
2769 <span class="entry_type_enum_name">CANCEL (v3.2)</span>
2770 <span class="entry_type_enum_notes"><p>The camera device will cancel any currently active or completed
2771 precapture metering sequence,<wbr/> the auto-exposure routine will return to its
2772 initial state.<wbr/></p></span>
2776 </td> <!-- entry_type -->
2778 <td class="entry_description">
2779 <p>Whether the camera device will trigger a precapture
2780 metering sequence when it processes this request.<wbr/></p>
2783 <td class="entry_units">
2786 <td class="entry_range">
2789 <td class="entry_hal_version">
2793 <td class="entry_tags">
2794 <ul class="entry_tags">
2795 <li><a href="#tag_BC">BC</a></li>
2800 <tr class="entries_header">
2801 <th class="th_details" colspan="6">Details</th>
2803 <tr class="entry_cont">
2804 <td class="entry_details" colspan="6">
2805 <p>This entry is normally set to IDLE,<wbr/> or is not
2806 included at all in the request settings.<wbr/> When included and
2807 set to START,<wbr/> the camera device will trigger the auto-exposure (AE)
2808 precapture metering sequence.<wbr/></p>
2809 <p>When set to CANCEL,<wbr/> the camera device will cancel any active
2810 precapture metering trigger,<wbr/> and return to its initial AE state.<wbr/>
2811 If a precapture metering sequence is already completed,<wbr/> and the camera
2812 device has implicitly locked the AE for subsequent still capture,<wbr/> the
2813 CANCEL trigger will unlock the AE and return to its initial AE state.<wbr/></p>
2814 <p>The precapture sequence should be triggered before starting a
2815 high-quality still capture for final metering decisions to
2816 be made,<wbr/> and for firing pre-capture flash pulses to estimate
2817 scene brightness and required final capture flash power,<wbr/> when
2818 the flash is enabled.<wbr/></p>
2819 <p>Normally,<wbr/> this entry should be set to START for only a
2820 single request,<wbr/> and the application should wait until the
2821 sequence completes before starting a new one.<wbr/></p>
2822 <p>When a precapture metering sequence is finished,<wbr/> the camera device
2823 may lock the auto-exposure routine internally to be able to accurately expose the
2824 subsequent still capture image (<code><a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE</code>).<wbr/>
2825 For this case,<wbr/> the AE may not resume normal scan if no subsequent still capture is
2826 submitted.<wbr/> To ensure that the AE routine restarts normal scan,<wbr/> the application should
2827 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
2828 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
2829 still capture request after the precapture sequence completes.<wbr/> Alternatively,<wbr/> for
2830 API level 23 or newer devices,<wbr/> the CANCEL can be used to unlock the camera device
2831 internally locked AE if the application doesn't submit a still capture request after
2832 the AE precapture trigger.<wbr/> Note that,<wbr/> the CANCEL was added in API level 23,<wbr/> and must not
2833 be used in devices that have earlier API levels.<wbr/></p>
2834 <p>The exact effect of auto-exposure (AE) precapture trigger
2835 depends on the current AE mode and state; see
2836 <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> for AE precapture state transition
2838 <p>On LEGACY-level devices,<wbr/> the precapture trigger is not supported;
2839 capturing a high-resolution JPEG image will automatically trigger a
2840 precapture sequence before the high-resolution capture,<wbr/> including
2841 potentially firing a pre-capture flash.<wbr/></p>
2842 <p>Using the precapture trigger and the auto-focus trigger <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>
2843 simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between
2844 the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a
2845 focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous
2846 trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and
2847 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
2849 <p>If both the precapture and the auto-focus trigger are activated on the same request,<wbr/> then
2850 the camera device will complete them in the optimal order for that device.<wbr/></p>
2854 <tr class="entries_header">
2855 <th class="th_details" colspan="6">HAL Implementation Details</th>
2857 <tr class="entry_cont">
2858 <td class="entry_details" colspan="6">
2859 <p>The HAL must support triggering the AE precapture trigger while an AF trigger is active
2860 (and vice versa),<wbr/> or at the same time as the AF trigger.<wbr/> It is acceptable for the HAL to
2861 treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the
2862 AE trigger.<wbr/> Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/>
2863 to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p>
2867 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2868 <!-- end of entry -->
2871 <tr class="entry" id="controls_android.control.afMode">
2872 <td class="entry_name
2874 android.<wbr/>control.<wbr/>af<wbr/>Mode
2876 <td class="entry_type">
2877 <span class="entry_type_name entry_type_name_enum">byte</span>
2879 <span class="entry_type_visibility"> [public]</span>
2882 <span class="entry_type_hwlevel">[legacy] </span>
2886 <ul class="entry_type_enum">
2888 <span class="entry_type_enum_name">OFF (v3.2)</span>
2889 <span class="entry_type_enum_notes"><p>The auto-focus routine does not control the lens;
2890 <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> is controlled by the
2891 application.<wbr/></p></span>
2894 <span class="entry_type_enum_name">AUTO (v3.2)</span>
2895 <span class="entry_type_enum_notes"><p>Basic automatic focus mode.<wbr/></p>
2896 <p>In this mode,<wbr/> the lens does not move unless
2897 the autofocus trigger action is called.<wbr/> When that trigger
2898 is activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
2899 the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/></p>
2900 <p>Always supported if lens is not fixed focus.<wbr/></p>
2901 <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
2902 is fixed-focus.<wbr/></p>
2903 <p>Triggering AF_<wbr/>CANCEL resets the lens position to default,<wbr/>
2904 and sets the AF state to INACTIVE.<wbr/></p></span>
2907 <span class="entry_type_enum_name">MACRO (v3.2)</span>
2908 <span class="entry_type_enum_notes"><p>Close-up focusing mode.<wbr/></p>
2909 <p>In this mode,<wbr/> the lens does not move unless the
2910 autofocus trigger action is called.<wbr/> When that trigger is
2911 activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
2912 the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/> This
2913 mode is optimized for focusing on objects very close to
2914 the camera.<wbr/></p>
2915 <p>When that trigger is activated,<wbr/> AF will transition to
2916 ACTIVE_<wbr/>SCAN,<wbr/> then to the outcome of the scan (FOCUSED or
2917 NOT_<wbr/>FOCUSED).<wbr/> Triggering cancel AF resets the lens
2918 position to default,<wbr/> and sets the AF state to
2919 INACTIVE.<wbr/></p></span>
2922 <span class="entry_type_enum_name">CONTINUOUS_VIDEO (v3.2)</span>
2923 <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
2924 position continually to attempt to provide a
2925 constantly-in-focus image stream.<wbr/></p>
2926 <p>The focusing behavior should be suitable for good quality
2927 video recording; typically this means slower focus
2928 movement and no overshoots.<wbr/> When the AF trigger is not
2929 involved,<wbr/> the AF algorithm should start in INACTIVE state,<wbr/>
2930 and then transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED
2931 states as appropriate.<wbr/> When the AF trigger is activated,<wbr/>
2932 the algorithm should immediately transition into
2933 AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the
2934 lens position until a cancel AF trigger is received.<wbr/></p>
2935 <p>Once cancel is received,<wbr/> the algorithm should transition
2936 back to INACTIVE and resume passive scan.<wbr/> Note that this
2937 behavior is not identical to CONTINUOUS_<wbr/>PICTURE,<wbr/> since an
2938 ongoing PASSIVE_<wbr/>SCAN must immediately be
2939 canceled.<wbr/></p></span>
2942 <span class="entry_type_enum_name">CONTINUOUS_PICTURE (v3.2)</span>
2943 <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
2944 position continually to attempt to provide a
2945 constantly-in-focus image stream.<wbr/></p>
2946 <p>The focusing behavior should be suitable for still image
2947 capture; typically this means focusing as fast as
2948 possible.<wbr/> When the AF trigger is not involved,<wbr/> the AF
2949 algorithm should start in INACTIVE state,<wbr/> and then
2950 transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED states as
2951 appropriate as it attempts to maintain focus.<wbr/> When the AF
2952 trigger is activated,<wbr/> the algorithm should finish its
2953 PASSIVE_<wbr/>SCAN if active,<wbr/> and then transition into
2954 AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the
2955 lens position until a cancel AF trigger is received.<wbr/></p>
2956 <p>When the AF cancel trigger is activated,<wbr/> the algorithm
2957 should transition back to INACTIVE and then act as if it
2958 has just been started.<wbr/></p></span>
2961 <span class="entry_type_enum_name">EDOF (v3.2)</span>
2962 <span class="entry_type_enum_notes"><p>Extended depth of field (digital focus) mode.<wbr/></p>
2963 <p>The camera device will produce images with an extended
2964 depth of field automatically; no special focusing
2965 operations need to be done before taking a picture.<wbr/></p>
2966 <p>AF triggers are ignored,<wbr/> and the AF state will always be
2967 INACTIVE.<wbr/></p></span>
2971 </td> <!-- entry_type -->
2973 <td class="entry_description">
2974 <p>Whether auto-focus (AF) is currently enabled,<wbr/> and what
2975 mode it is set to.<wbr/></p>
2978 <td class="entry_units">
2981 <td class="entry_range">
2982 <p><a href="#static_android.control.afAvailableModes">android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes</a></p>
2985 <td class="entry_hal_version">
2989 <td class="entry_tags">
2990 <ul class="entry_tags">
2991 <li><a href="#tag_BC">BC</a></li>
2996 <tr class="entries_header">
2997 <th class="th_details" colspan="6">Details</th>
2999 <tr class="entry_cont">
3000 <td class="entry_details" colspan="6">
3001 <p>Only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> = AUTO and the lens is not fixed focus
3002 (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
3003 when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> the behavior of AF is device
3004 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
3005 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>
3006 <p>If the lens is controlled by the camera device auto-focus algorithm,<wbr/>
3007 the camera device will report the current AF status in <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>
3008 in result metadata.<wbr/></p>
3012 <tr class="entries_header">
3013 <th class="th_details" colspan="6">HAL Implementation Details</th>
3015 <tr class="entry_cont">
3016 <td class="entry_details" colspan="6">
3017 <p>When afMode is AUTO or MACRO,<wbr/> the lens must not move until an AF trigger is sent in a
3018 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
3019 up with either FOCUSED_<wbr/>LOCKED or NOT_<wbr/>FOCUSED_<wbr/>LOCKED state (see
3020 <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
3021 locked and will not move.<wbr/> If camera movement (e.<wbr/>g.<wbr/> tilting camera) causes the lens to move
3022 after the lens is locked,<wbr/> the HAL must compensate this movement appropriately such that
3023 the same focal plane remains in focus.<wbr/></p>
3024 <p>When afMode is one of the continuous auto focus modes,<wbr/> the HAL is free to start a AF
3025 scan whenever it's not locked.<wbr/> When the lens is locked after an AF trigger
3026 (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
3027 same lock behavior as above.<wbr/></p>
3028 <p>When afMode is OFF,<wbr/> the application controls focus manually.<wbr/> The accuracy of the
3029 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/>
3030 However,<wbr/> the lens must not move regardless of the camera movement for any focus distance
3031 manual control.<wbr/></p>
3032 <p>To put this in concrete terms,<wbr/> if the camera has lens elements which may move based on
3033 camera orientation or motion (e.<wbr/>g.<wbr/> due to gravity),<wbr/> then the HAL must drive the lens to
3034 remain in a fixed position invariant to the camera's orientation or motion,<wbr/> for example,<wbr/>
3035 by using accelerometer measurements in the lens control logic.<wbr/> This is a typical issue
3036 that will arise on camera modules with open-loop VCMs.<wbr/></p>
3040 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3041 <!-- end of entry -->
3044 <tr class="entry" id="controls_android.control.afRegions">
3045 <td class="entry_name
3047 android.<wbr/>control.<wbr/>af<wbr/>Regions
3049 <td class="entry_type">
3050 <span class="entry_type_name">int32</span>
3051 <span class="entry_type_container">x</span>
3053 <span class="entry_type_array">
3056 <span class="entry_type_visibility"> [public as meteringRectangle]</span>
3063 </td> <!-- entry_type -->
3065 <td class="entry_description">
3066 <p>List of metering areas to use for auto-focus.<wbr/></p>
3069 <td class="entry_units">
3070 Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
3073 <td class="entry_range">
3074 <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
3075 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
3078 <td class="entry_hal_version">
3082 <td class="entry_tags">
3083 <ul class="entry_tags">
3084 <li><a href="#tag_BC">BC</a></li>
3089 <tr class="entries_header">
3090 <th class="th_details" colspan="6">Details</th>
3092 <tr class="entry_cont">
3093 <td class="entry_details" colspan="6">
3094 <p>Not available if <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a> is 0.<wbr/>
3095 Otherwise will always be present.<wbr/></p>
3096 <p>The maximum number of focus areas supported by the device is determined by the value
3097 of <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a>.<wbr/></p>
3098 <p>The coordinate system is based on the active pixel array,<wbr/>
3099 with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
3100 (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
3101 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
3102 bottom-right pixel in the active pixel array.<wbr/></p>
3103 <p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight
3104 for every pixel in the area.<wbr/> This means that a large metering area
3105 with the same weight as a smaller area will have more effect in
3106 the metering result.<wbr/> Metering areas can partially overlap and the
3107 camera device will add the weights in the overlap region.<wbr/></p>
3108 <p>The weights are relative to weights of other metering regions,<wbr/> so if only one region
3109 is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0 weight is
3111 <p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
3112 camera device.<wbr/> The capture result will either be a zero weight region as well,<wbr/> or
3113 the region selected by the camera device as the focus area of interest.<wbr/></p>
3114 <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
3115 capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
3116 region and output only the intersection rectangle as the metering region in the result
3117 metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and
3118 not reported in the result metadata.<wbr/></p>
3122 <tr class="entries_header">
3123 <th class="th_details" colspan="6">HAL Implementation Details</th>
3125 <tr class="entry_cont">
3126 <td class="entry_details" colspan="6">
3127 <p>The HAL level representation of MeteringRectangle[] is a
3128 int[5 * area_<wbr/>count].<wbr/>
3129 Every five elements represent a metering region of
3130 (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
3131 The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
3132 exclusive on xmax and ymax.<wbr/></p>
3136 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3137 <!-- end of entry -->
3140 <tr class="entry" id="controls_android.control.afTrigger">
3141 <td class="entry_name
3143 android.<wbr/>control.<wbr/>af<wbr/>Trigger
3145 <td class="entry_type">
3146 <span class="entry_type_name entry_type_name_enum">byte</span>
3148 <span class="entry_type_visibility"> [public]</span>
3151 <span class="entry_type_hwlevel">[legacy] </span>
3155 <ul class="entry_type_enum">
3157 <span class="entry_type_enum_name">IDLE (v3.2)</span>
3158 <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
3161 <span class="entry_type_enum_name">START (v3.2)</span>
3162 <span class="entry_type_enum_notes"><p>Autofocus will trigger now.<wbr/></p></span>
3165 <span class="entry_type_enum_name">CANCEL (v3.2)</span>
3166 <span class="entry_type_enum_notes"><p>Autofocus will return to its initial
3167 state,<wbr/> and cancel any currently active trigger.<wbr/></p></span>
3171 </td> <!-- entry_type -->
3173 <td class="entry_description">
3174 <p>Whether the camera device will trigger autofocus for this request.<wbr/></p>
3177 <td class="entry_units">
3180 <td class="entry_range">
3183 <td class="entry_hal_version">
3187 <td class="entry_tags">
3188 <ul class="entry_tags">
3189 <li><a href="#tag_BC">BC</a></li>
3194 <tr class="entries_header">
3195 <th class="th_details" colspan="6">Details</th>
3197 <tr class="entry_cont">
3198 <td class="entry_details" colspan="6">
3199 <p>This entry is normally set to IDLE,<wbr/> or is not
3200 included at all in the request settings.<wbr/></p>
3201 <p>When included and set to START,<wbr/> the camera device will trigger the
3202 autofocus algorithm.<wbr/> If autofocus is disabled,<wbr/> this trigger has no effect.<wbr/></p>
3203 <p>When set to CANCEL,<wbr/> the camera device will cancel any active trigger,<wbr/>
3204 and return to its initial AF state.<wbr/></p>
3205 <p>Generally,<wbr/> applications should set this entry to START or CANCEL for only a
3206 single capture,<wbr/> and then return it to IDLE (or not set at all).<wbr/> Specifying
3207 START for multiple captures in a row means restarting the AF operation over
3208 and over again.<wbr/></p>
3209 <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>
3210 <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>
3211 simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between
3212 the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a
3213 focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous
3214 trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and
3215 changes to <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>,<wbr/> for example.<wbr/></p>
3219 <tr class="entries_header">
3220 <th class="th_details" colspan="6">HAL Implementation Details</th>
3222 <tr class="entry_cont">
3223 <td class="entry_details" colspan="6">
3224 <p>The HAL must support triggering the AF trigger while an AE precapture trigger is active
3225 (and vice versa),<wbr/> or at the same time as the AE trigger.<wbr/> It is acceptable for the HAL to
3226 treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the
3227 AE trigger.<wbr/> Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/>
3228 to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p>
3232 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3233 <!-- end of entry -->
3236 <tr class="entry" id="controls_android.control.awbLock">
3237 <td class="entry_name
3239 android.<wbr/>control.<wbr/>awb<wbr/>Lock
3241 <td class="entry_type">
3242 <span class="entry_type_name entry_type_name_enum">byte</span>
3244 <span class="entry_type_visibility"> [public as boolean]</span>
3247 <span class="entry_type_hwlevel">[legacy] </span>
3251 <ul class="entry_type_enum">
3253 <span class="entry_type_enum_name">OFF (v3.2)</span>
3254 <span class="entry_type_enum_notes"><p>Auto-white balance lock is disabled; the AWB
3255 algorithm is free to update its parameters if in AUTO
3256 mode.<wbr/></p></span>
3259 <span class="entry_type_enum_name">ON (v3.2)</span>
3260 <span class="entry_type_enum_notes"><p>Auto-white balance lock is enabled; the AWB
3261 algorithm will not update its parameters while the lock
3262 is active.<wbr/></p></span>
3266 </td> <!-- entry_type -->
3268 <td class="entry_description">
3269 <p>Whether auto-white balance (AWB) is currently locked to its
3270 latest calculated values.<wbr/></p>
3273 <td class="entry_units">
3276 <td class="entry_range">
3279 <td class="entry_hal_version">
3283 <td class="entry_tags">
3284 <ul class="entry_tags">
3285 <li><a href="#tag_BC">BC</a></li>
3290 <tr class="entries_header">
3291 <th class="th_details" colspan="6">Details</th>
3293 <tr class="entry_cont">
3294 <td class="entry_details" colspan="6">
3295 <p>When set to <code>true</code> (ON),<wbr/> the AWB algorithm is locked to its latest parameters,<wbr/>
3296 and will not change color balance settings until the lock is set to <code>false</code> (OFF).<wbr/></p>
3297 <p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that
3298 get locked do not necessarily correspond to the settings that were present in the
3299 latest capture result received from the camera device,<wbr/> since additional captures
3300 and AWB updates may have occurred even before the result was sent out.<wbr/> If an
3301 application is switching between automatic and manual control and wishes to eliminate
3302 any flicker during the switch,<wbr/> the following procedure is recommended:</p>
3304 <li>Starting in auto-AWB mode:</li>
3306 <li>Wait for the first result to be output that has the AWB locked</li>
3307 <li>Copy AWB settings from that result into a request,<wbr/> set the request to manual AWB</li>
3308 <li>Submit the capture request,<wbr/> proceed to run manual AWB as desired.<wbr/></li>
3310 <p>Note that AWB lock is only meaningful when
3311 <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is in the AUTO mode; in other modes,<wbr/>
3312 AWB is already fixed to a specific setting.<wbr/></p>
3313 <p>Some LEGACY devices may not support ON; the value is then overridden to OFF.<wbr/></p>
3318 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3319 <!-- end of entry -->
3322 <tr class="entry" id="controls_android.control.awbMode">
3323 <td class="entry_name
3325 android.<wbr/>control.<wbr/>awb<wbr/>Mode
3327 <td class="entry_type">
3328 <span class="entry_type_name entry_type_name_enum">byte</span>
3330 <span class="entry_type_visibility"> [public]</span>
3333 <span class="entry_type_hwlevel">[legacy] </span>
3337 <ul class="entry_type_enum">
3339 <span class="entry_type_enum_name">OFF (v3.2)</span>
3340 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled.<wbr/></p>
3341 <p>The application-selected color transform matrix
3342 (<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>) and gains
3343 (<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a>) are used by the camera
3344 device for manual white balance control.<wbr/></p></span>
3347 <span class="entry_type_enum_name">AUTO (v3.2)</span>
3348 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is active.<wbr/></p>
3349 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3350 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3351 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3352 values used by the camera device for the transform and gains
3353 will be available in the capture result for this request.<wbr/></p></span>
3356 <span class="entry_type_enum_name">INCANDESCENT (v3.2)</span>
3357 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3358 the camera device uses incandescent light as the assumed scene
3359 illumination for white balance.<wbr/></p>
3360 <p>While the exact white balance transforms are up to the
3361 camera device,<wbr/> they will approximately match the CIE
3362 standard illuminant A.<wbr/></p>
3363 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3364 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3365 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3366 values used by the camera device for the transform and gains
3367 will be available in the capture result for this request.<wbr/></p></span>
3370 <span class="entry_type_enum_name">FLUORESCENT (v3.2)</span>
3371 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3372 the camera device uses fluorescent light as the assumed scene
3373 illumination for white balance.<wbr/></p>
3374 <p>While the exact white balance transforms are up to the
3375 camera device,<wbr/> they will approximately match the CIE
3376 standard illuminant F2.<wbr/></p>
3377 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3378 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3379 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3380 values used by the camera device for the transform and gains
3381 will be available in the capture result for this request.<wbr/></p></span>
3384 <span class="entry_type_enum_name">WARM_FLUORESCENT (v3.2)</span>
3385 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3386 the camera device uses warm fluorescent light as the assumed scene
3387 illumination for white balance.<wbr/></p>
3388 <p>While the exact white balance transforms are up to the
3389 camera device,<wbr/> they will approximately match the CIE
3390 standard illuminant F4.<wbr/></p>
3391 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3392 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3393 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3394 values used by the camera device for the transform and gains
3395 will be available in the capture result for this request.<wbr/></p></span>
3398 <span class="entry_type_enum_name">DAYLIGHT (v3.2)</span>
3399 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3400 the camera device uses daylight light as the assumed scene
3401 illumination for white balance.<wbr/></p>
3402 <p>While the exact white balance transforms are up to the
3403 camera device,<wbr/> they will approximately match the CIE
3404 standard illuminant D65.<wbr/></p>
3405 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3406 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3407 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3408 values used by the camera device for the transform and gains
3409 will be available in the capture result for this request.<wbr/></p></span>
3412 <span class="entry_type_enum_name">CLOUDY_DAYLIGHT (v3.2)</span>
3413 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3414 the camera device uses cloudy daylight light as the assumed scene
3415 illumination for white balance.<wbr/></p>
3416 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3417 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3418 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3419 values used by the camera device for the transform and gains
3420 will be available in the capture result for this request.<wbr/></p></span>
3423 <span class="entry_type_enum_name">TWILIGHT (v3.2)</span>
3424 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3425 the camera device uses twilight light as the assumed scene
3426 illumination for white balance.<wbr/></p>
3427 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3428 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3429 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3430 values used by the camera device for the transform and gains
3431 will be available in the capture result for this request.<wbr/></p></span>
3434 <span class="entry_type_enum_name">SHADE (v3.2)</span>
3435 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3436 the camera device uses shade light as the assumed scene
3437 illumination for white balance.<wbr/></p>
3438 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3439 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3440 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3441 values used by the camera device for the transform and gains
3442 will be available in the capture result for this request.<wbr/></p></span>
3446 </td> <!-- entry_type -->
3448 <td class="entry_description">
3449 <p>Whether auto-white balance (AWB) is currently setting the color
3450 transform fields,<wbr/> and what its illumination target
3454 <td class="entry_units">
3457 <td class="entry_range">
3458 <p><a href="#static_android.control.awbAvailableModes">android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes</a></p>
3461 <td class="entry_hal_version">
3465 <td class="entry_tags">
3466 <ul class="entry_tags">
3467 <li><a href="#tag_BC">BC</a></li>
3472 <tr class="entries_header">
3473 <th class="th_details" colspan="6">Details</th>
3475 <tr class="entry_cont">
3476 <td class="entry_details" colspan="6">
3477 <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is AUTO.<wbr/></p>
3478 <p>When set to the ON mode,<wbr/> the camera device's auto-white balance
3479 routine is enabled,<wbr/> overriding the application's selected
3480 <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
3481 <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>
3482 is OFF,<wbr/> the behavior of AWB is device dependent.<wbr/> It is recommened to
3483 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
3484 setting AE mode to OFF.<wbr/></p>
3485 <p>When set to the OFF mode,<wbr/> the camera device's auto-white balance
3486 routine is disabled.<wbr/> The application manually controls the white
3487 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>
3488 and <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/></p>
3489 <p>When set to any other modes,<wbr/> the camera device's auto-white
3490 balance routine is disabled.<wbr/> The camera device uses each
3491 particular illumination target for white balance
3492 adjustment.<wbr/> The application's values for
3493 <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>,<wbr/>
3494 <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
3495 <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> are ignored.<wbr/></p>
3500 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3501 <!-- end of entry -->
3504 <tr class="entry" id="controls_android.control.awbRegions">
3505 <td class="entry_name
3507 android.<wbr/>control.<wbr/>awb<wbr/>Regions
3509 <td class="entry_type">
3510 <span class="entry_type_name">int32</span>
3511 <span class="entry_type_container">x</span>
3513 <span class="entry_type_array">
3516 <span class="entry_type_visibility"> [public as meteringRectangle]</span>
3523 </td> <!-- entry_type -->
3525 <td class="entry_description">
3526 <p>List of metering areas to use for auto-white-balance illuminant
3527 estimation.<wbr/></p>
3530 <td class="entry_units">
3531 Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
3534 <td class="entry_range">
3535 <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
3536 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
3539 <td class="entry_hal_version">
3543 <td class="entry_tags">
3544 <ul class="entry_tags">
3545 <li><a href="#tag_BC">BC</a></li>
3550 <tr class="entries_header">
3551 <th class="th_details" colspan="6">Details</th>
3553 <tr class="entry_cont">
3554 <td class="entry_details" colspan="6">
3555 <p>Not available if <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a> is 0.<wbr/>
3556 Otherwise will always be present.<wbr/></p>
3557 <p>The maximum number of regions supported by the device is determined by the value
3558 of <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a>.<wbr/></p>
3559 <p>The coordinate system is based on the active pixel array,<wbr/>
3560 with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
3561 (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
3562 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
3563 bottom-right pixel in the active pixel array.<wbr/></p>
3564 <p>The weight must range from 0 to 1000,<wbr/> and represents a weight
3565 for every pixel in the area.<wbr/> This means that a large metering area
3566 with the same weight as a smaller area will have more effect in
3567 the metering result.<wbr/> Metering areas can partially overlap and the
3568 camera device will add the weights in the overlap region.<wbr/></p>
3569 <p>The weights are relative to weights of other white balance metering regions,<wbr/> so if
3570 only one region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with
3571 0 weight is ignored.<wbr/></p>
3572 <p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
3573 camera device.<wbr/></p>
3574 <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
3575 capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
3576 region and output only the intersection rectangle as the metering region in the result
3577 metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and
3578 not reported in the result metadata.<wbr/></p>
3582 <tr class="entries_header">
3583 <th class="th_details" colspan="6">HAL Implementation Details</th>
3585 <tr class="entry_cont">
3586 <td class="entry_details" colspan="6">
3587 <p>The HAL level representation of MeteringRectangle[] is a
3588 int[5 * area_<wbr/>count].<wbr/>
3589 Every five elements represent a metering region of
3590 (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
3591 The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
3592 exclusive on xmax and ymax.<wbr/></p>
3596 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3597 <!-- end of entry -->
3600 <tr class="entry" id="controls_android.control.captureIntent">
3601 <td class="entry_name
3603 android.<wbr/>control.<wbr/>capture<wbr/>Intent
3605 <td class="entry_type">
3606 <span class="entry_type_name entry_type_name_enum">byte</span>
3608 <span class="entry_type_visibility"> [public]</span>
3611 <span class="entry_type_hwlevel">[legacy] </span>
3615 <ul class="entry_type_enum">
3617 <span class="entry_type_enum_name">CUSTOM (v3.2)</span>
3618 <span class="entry_type_enum_notes"><p>The goal of this request doesn't fall into the other
3619 categories.<wbr/> The camera device will default to preview-like
3620 behavior.<wbr/></p></span>
3623 <span class="entry_type_enum_name">PREVIEW (v3.2)</span>
3624 <span class="entry_type_enum_notes"><p>This request is for a preview-like use case.<wbr/></p>
3625 <p>The precapture trigger may be used to start off a metering
3626 w/<wbr/>flash sequence.<wbr/></p></span>
3629 <span class="entry_type_enum_name">STILL_CAPTURE (v3.2)</span>
3630 <span class="entry_type_enum_notes"><p>This request is for a still capture-type
3632 <p>If the flash unit is under automatic control,<wbr/> it may fire as needed.<wbr/></p></span>
3635 <span class="entry_type_enum_name">VIDEO_RECORD (v3.2)</span>
3636 <span class="entry_type_enum_notes"><p>This request is for a video recording
3637 use case.<wbr/></p></span>
3640 <span class="entry_type_enum_name">VIDEO_SNAPSHOT (v3.2)</span>
3641 <span class="entry_type_enum_notes"><p>This request is for a video snapshot (still
3642 image while recording video) use case.<wbr/></p>
3643 <p>The camera device should take the highest-quality image
3644 possible (given the other settings) without disrupting the
3645 frame rate of video recording.<wbr/> </p></span>
3648 <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span>
3649 <span class="entry_type_enum_notes"><p>This request is for a ZSL usecase; the
3650 application will stream full-resolution images and
3651 reprocess one or several later for a final
3652 capture.<wbr/></p></span>
3655 <span class="entry_type_enum_name">MANUAL (v3.2)</span>
3656 <span class="entry_type_enum_notes"><p>This request is for manual capture use case where
3657 the applications want to directly control the capture parameters.<wbr/></p>
3658 <p>For example,<wbr/> the application may wish to manually control
3659 <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>
3662 <span class="entry_type_enum_name">MOTION_TRACKING (v3.3)</span>
3663 <span class="entry_type_enum_notes"><p>This request is for a motion tracking use case,<wbr/> where
3664 the application will use camera and inertial sensor data to
3665 locate and track objects in the world.<wbr/></p>
3666 <p>The camera device auto-exposure routine will limit the exposure time
3667 of the camera to no more than 20 milliseconds,<wbr/> to minimize motion blur.<wbr/></p></span>
3671 </td> <!-- entry_type -->
3673 <td class="entry_description">
3674 <p>Information to the camera device 3A (auto-exposure,<wbr/>
3675 auto-focus,<wbr/> auto-white balance) routines about the purpose
3676 of this capture,<wbr/> to help the camera device to decide optimal 3A
3680 <td class="entry_units">
3683 <td class="entry_range">
3686 <td class="entry_hal_version">
3690 <td class="entry_tags">
3691 <ul class="entry_tags">
3692 <li><a href="#tag_BC">BC</a></li>
3697 <tr class="entries_header">
3698 <th class="th_details" colspan="6">Details</th>
3700 <tr class="entry_cont">
3701 <td class="entry_details" colspan="6">
3702 <p>This control (except for MANUAL) is only effective if
3703 <code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF</code> and any 3A routine is active.<wbr/></p>
3704 <p>All intents are supported by all devices,<wbr/> except that:
3705 * ZERO_<wbr/>SHUTTER_<wbr/>LAG will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
3706 PRIVATE_<wbr/>REPROCESSING or YUV_<wbr/>REPROCESSING.<wbr/>
3707 * MANUAL will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
3708 MANUAL_<wbr/>SENSOR.<wbr/>
3709 * MOTION_<wbr/>TRACKING will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
3710 MOTION_<wbr/>TRACKING.<wbr/></p>
3715 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3716 <!-- end of entry -->
3719 <tr class="entry" id="controls_android.control.effectMode">
3720 <td class="entry_name
3722 android.<wbr/>control.<wbr/>effect<wbr/>Mode
3724 <td class="entry_type">
3725 <span class="entry_type_name entry_type_name_enum">byte</span>
3727 <span class="entry_type_visibility"> [public]</span>
3730 <span class="entry_type_hwlevel">[legacy] </span>
3734 <ul class="entry_type_enum">
3736 <span class="entry_type_enum_name">OFF (v3.2)</span>
3737 <span class="entry_type_enum_notes"><p>No color effect will be applied.<wbr/></p></span>
3740 <span class="entry_type_enum_name">MONO (v3.2)</span>
3741 <span class="entry_type_enum_optional">[optional]</span>
3742 <span class="entry_type_enum_notes"><p>A "monocolor" effect where the image is mapped into
3743 a single color.<wbr/></p>
3744 <p>This will typically be grayscale.<wbr/></p></span>
3747 <span class="entry_type_enum_name">NEGATIVE (v3.2)</span>
3748 <span class="entry_type_enum_optional">[optional]</span>
3749 <span class="entry_type_enum_notes"><p>A "photo-negative" effect where the image's colors
3750 are inverted.<wbr/></p></span>
3753 <span class="entry_type_enum_name">SOLARIZE (v3.2)</span>
3754 <span class="entry_type_enum_optional">[optional]</span>
3755 <span class="entry_type_enum_notes"><p>A "solarisation" effect (Sabattier effect) where the
3756 image is wholly or partially reversed in
3757 tone.<wbr/></p></span>
3760 <span class="entry_type_enum_name">SEPIA (v3.2)</span>
3761 <span class="entry_type_enum_optional">[optional]</span>
3762 <span class="entry_type_enum_notes"><p>A "sepia" effect where the image is mapped into warm
3763 gray,<wbr/> red,<wbr/> and brown tones.<wbr/></p></span>
3766 <span class="entry_type_enum_name">POSTERIZE (v3.2)</span>
3767 <span class="entry_type_enum_optional">[optional]</span>
3768 <span class="entry_type_enum_notes"><p>A "posterization" effect where the image uses
3769 discrete regions of tone rather than a continuous
3770 gradient of tones.<wbr/></p></span>
3773 <span class="entry_type_enum_name">WHITEBOARD (v3.2)</span>
3774 <span class="entry_type_enum_optional">[optional]</span>
3775 <span class="entry_type_enum_notes"><p>A "whiteboard" effect where the image is typically displayed
3776 as regions of white,<wbr/> with black or grey details.<wbr/></p></span>
3779 <span class="entry_type_enum_name">BLACKBOARD (v3.2)</span>
3780 <span class="entry_type_enum_optional">[optional]</span>
3781 <span class="entry_type_enum_notes"><p>A "blackboard" effect where the image is typically displayed
3782 as regions of black,<wbr/> with white or grey details.<wbr/></p></span>
3785 <span class="entry_type_enum_name">AQUA (v3.2)</span>
3786 <span class="entry_type_enum_optional">[optional]</span>
3787 <span class="entry_type_enum_notes"><p>An "aqua" effect where a blue hue is added to the image.<wbr/></p></span>
3791 </td> <!-- entry_type -->
3793 <td class="entry_description">
3794 <p>A special color effect to apply.<wbr/></p>
3797 <td class="entry_units">
3800 <td class="entry_range">
3801 <p><a href="#static_android.control.availableEffects">android.<wbr/>control.<wbr/>available<wbr/>Effects</a></p>
3804 <td class="entry_hal_version">
3808 <td class="entry_tags">
3809 <ul class="entry_tags">
3810 <li><a href="#tag_BC">BC</a></li>
3815 <tr class="entries_header">
3816 <th class="th_details" colspan="6">Details</th>
3818 <tr class="entry_cont">
3819 <td class="entry_details" colspan="6">
3820 <p>When this mode is set,<wbr/> a color effect will be applied
3821 to images produced by the camera device.<wbr/> The interpretation
3822 and implementation of these color effects is left to the
3823 implementor of the camera device,<wbr/> and should not be
3824 depended on to be consistent (or present) across all
3830 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3831 <!-- end of entry -->
3834 <tr class="entry" id="controls_android.control.mode">
3835 <td class="entry_name
3837 android.<wbr/>control.<wbr/>mode
3839 <td class="entry_type">
3840 <span class="entry_type_name entry_type_name_enum">byte</span>
3842 <span class="entry_type_visibility"> [public]</span>
3845 <span class="entry_type_hwlevel">[legacy] </span>
3849 <ul class="entry_type_enum">
3851 <span class="entry_type_enum_name">OFF (v3.2)</span>
3852 <span class="entry_type_enum_notes"><p>Full application control of pipeline.<wbr/></p>
3853 <p>All control by the device's metering and focusing (3A)
3854 routines is disabled,<wbr/> and no other settings in
3855 android.<wbr/>control.<wbr/>* have any effect,<wbr/> except that
3856 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> may be used by the camera
3857 device to select post-processing values for processing
3858 blocks that do not allow for manual control,<wbr/> or are not
3859 exposed by the camera API.<wbr/></p>
3860 <p>However,<wbr/> the camera device's 3A routines may continue to
3861 collect statistics and update their internal state so that
3862 when control is switched to AUTO mode,<wbr/> good control values
3863 can be immediately applied.<wbr/></p></span>
3866 <span class="entry_type_enum_name">AUTO (v3.2)</span>
3867 <span class="entry_type_enum_notes"><p>Use settings for each individual 3A routine.<wbr/></p>
3868 <p>Manual control of capture parameters is disabled.<wbr/> All
3869 controls in android.<wbr/>control.<wbr/>* besides sceneMode take
3870 effect.<wbr/></p></span>
3873 <span class="entry_type_enum_name">USE_SCENE_MODE (v3.2)</span>
3874 <span class="entry_type_enum_optional">[optional]</span>
3875 <span class="entry_type_enum_notes"><p>Use a specific scene mode.<wbr/></p>
3876 <p>Enabling this disables control.<wbr/>aeMode,<wbr/> control.<wbr/>awbMode and
3877 control.<wbr/>afMode controls; the camera device will ignore
3878 those settings while USE_<wbr/>SCENE_<wbr/>MODE is active (except for
3879 FACE_<wbr/>PRIORITY scene mode).<wbr/> Other control entries are still active.<wbr/>
3880 This setting can only be used if scene mode is supported (i.<wbr/>e.<wbr/>
3881 <a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a>
3882 contain some modes other than DISABLED).<wbr/></p></span>
3885 <span class="entry_type_enum_name">OFF_KEEP_STATE (v3.2)</span>
3886 <span class="entry_type_enum_optional">[optional]</span>
3887 <span class="entry_type_enum_notes"><p>Same as OFF mode,<wbr/> except that this capture will not be
3888 used by camera device background auto-exposure,<wbr/> auto-white balance and
3889 auto-focus algorithms (3A) to update their statistics.<wbr/></p>
3890 <p>Specifically,<wbr/> the 3A routines are locked to the last
3891 values set from a request with AUTO,<wbr/> OFF,<wbr/> or
3892 USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> and any statistics or state updates
3893 collected from manual captures with OFF_<wbr/>KEEP_<wbr/>STATE will be
3894 discarded by the camera device.<wbr/></p></span>
3898 </td> <!-- entry_type -->
3900 <td class="entry_description">
3901 <p>Overall mode of 3A (auto-exposure,<wbr/> auto-white-balance,<wbr/> auto-focus) control
3905 <td class="entry_units">
3908 <td class="entry_range">
3909 <p><a href="#static_android.control.availableModes">android.<wbr/>control.<wbr/>available<wbr/>Modes</a></p>
3912 <td class="entry_hal_version">
3916 <td class="entry_tags">
3917 <ul class="entry_tags">
3918 <li><a href="#tag_BC">BC</a></li>
3923 <tr class="entries_header">
3924 <th class="th_details" colspan="6">Details</th>
3926 <tr class="entry_cont">
3927 <td class="entry_details" colspan="6">
3928 <p>This is a top-level 3A control switch.<wbr/> When set to OFF,<wbr/> all 3A control
3929 by the camera device is disabled.<wbr/> The application must set the fields for
3930 capture parameters itself.<wbr/></p>
3931 <p>When set to AUTO,<wbr/> the individual algorithm controls in
3932 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>
3933 <p>When set to USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> the individual controls in
3934 android.<wbr/>control.<wbr/>* are mostly disabled,<wbr/> and the camera device
3935 implements one of the scene mode settings (such as ACTION,<wbr/>
3936 SUNSET,<wbr/> or PARTY) as it wishes.<wbr/> The camera device scene mode
3937 3A settings are provided by <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">capture results</a>.<wbr/></p>
3938 <p>When set to OFF_<wbr/>KEEP_<wbr/>STATE,<wbr/> it is similar to OFF mode,<wbr/> the only difference
3939 is that this frame will not be used by camera device background 3A statistics
3940 update,<wbr/> as if this frame is never captured.<wbr/> This mode can be used in the scenario
3941 where the application doesn't want a 3A manual control capture to affect
3942 the subsequent auto 3A capture results.<wbr/></p>
3947 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3948 <!-- end of entry -->
3951 <tr class="entry" id="controls_android.control.sceneMode">
3952 <td class="entry_name
3954 android.<wbr/>control.<wbr/>scene<wbr/>Mode
3956 <td class="entry_type">
3957 <span class="entry_type_name entry_type_name_enum">byte</span>
3959 <span class="entry_type_visibility"> [public]</span>
3962 <span class="entry_type_hwlevel">[legacy] </span>
3966 <ul class="entry_type_enum">
3968 <span class="entry_type_enum_name">DISABLED (v3.2)</span>
3969 <span class="entry_type_enum_value">0</span>
3970 <span class="entry_type_enum_notes"><p>Indicates that no scene modes are set for a given capture request.<wbr/></p></span>
3973 <span class="entry_type_enum_name">FACE_PRIORITY (v3.2)</span>
3974 <span class="entry_type_enum_notes"><p>If face detection support exists,<wbr/> use face
3975 detection data for auto-focus,<wbr/> auto-white balance,<wbr/> and
3976 auto-exposure routines.<wbr/></p>
3977 <p>If face detection statistics are disabled
3978 (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/>
3979 this should still operate correctly (but will not return
3980 face detection statistics to the framework).<wbr/></p>
3981 <p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
3982 <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>
3983 remain active when FACE_<wbr/>PRIORITY is set.<wbr/></p></span>
3986 <span class="entry_type_enum_name">ACTION (v3.2)</span>
3987 <span class="entry_type_enum_optional">[optional]</span>
3988 <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving objects.<wbr/></p>
3989 <p>Similar to SPORTS.<wbr/></p></span>
3992 <span class="entry_type_enum_name">PORTRAIT (v3.2)</span>
3993 <span class="entry_type_enum_optional">[optional]</span>
3994 <span class="entry_type_enum_notes"><p>Optimized for still photos of people.<wbr/></p></span>
3997 <span class="entry_type_enum_name">LANDSCAPE (v3.2)</span>
3998 <span class="entry_type_enum_optional">[optional]</span>
3999 <span class="entry_type_enum_notes"><p>Optimized for photos of distant macroscopic objects.<wbr/></p></span>
4002 <span class="entry_type_enum_name">NIGHT (v3.2)</span>
4003 <span class="entry_type_enum_optional">[optional]</span>
4004 <span class="entry_type_enum_notes"><p>Optimized for low-light settings.<wbr/></p></span>
4007 <span class="entry_type_enum_name">NIGHT_PORTRAIT (v3.2)</span>
4008 <span class="entry_type_enum_optional">[optional]</span>
4009 <span class="entry_type_enum_notes"><p>Optimized for still photos of people in low-light
4010 settings.<wbr/></p></span>
4013 <span class="entry_type_enum_name">THEATRE (v3.2)</span>
4014 <span class="entry_type_enum_optional">[optional]</span>
4015 <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings where flash must
4016 remain off.<wbr/></p></span>
4019 <span class="entry_type_enum_name">BEACH (v3.2)</span>
4020 <span class="entry_type_enum_optional">[optional]</span>
4021 <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor beach settings.<wbr/></p></span>
4024 <span class="entry_type_enum_name">SNOW (v3.2)</span>
4025 <span class="entry_type_enum_optional">[optional]</span>
4026 <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor settings containing snow.<wbr/></p></span>
4029 <span class="entry_type_enum_name">SUNSET (v3.2)</span>
4030 <span class="entry_type_enum_optional">[optional]</span>
4031 <span class="entry_type_enum_notes"><p>Optimized for scenes of the setting sun.<wbr/></p></span>
4034 <span class="entry_type_enum_name">STEADYPHOTO (v3.2)</span>
4035 <span class="entry_type_enum_optional">[optional]</span>
4036 <span class="entry_type_enum_notes"><p>Optimized to avoid blurry photos due to small amounts of
4037 device motion (for example: due to hand shake).<wbr/></p></span>
4040 <span class="entry_type_enum_name">FIREWORKS (v3.2)</span>
4041 <span class="entry_type_enum_optional">[optional]</span>
4042 <span class="entry_type_enum_notes"><p>Optimized for nighttime photos of fireworks.<wbr/></p></span>
4045 <span class="entry_type_enum_name">SPORTS (v3.2)</span>
4046 <span class="entry_type_enum_optional">[optional]</span>
4047 <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving people.<wbr/></p>
4048 <p>Similar to ACTION.<wbr/></p></span>
4051 <span class="entry_type_enum_name">PARTY (v3.2)</span>
4052 <span class="entry_type_enum_optional">[optional]</span>
4053 <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings with multiple moving
4054 people.<wbr/></p></span>
4057 <span class="entry_type_enum_name">CANDLELIGHT (v3.2)</span>
4058 <span class="entry_type_enum_optional">[optional]</span>
4059 <span class="entry_type_enum_notes"><p>Optimized for dim settings where the main light source
4060 is a flame.<wbr/></p></span>
4063 <span class="entry_type_enum_name">BARCODE (v3.2)</span>
4064 <span class="entry_type_enum_optional">[optional]</span>
4065 <span class="entry_type_enum_notes"><p>Optimized for accurately capturing a photo of barcode
4066 for use by camera applications that wish to read the
4067 barcode value.<wbr/></p></span>
4070 <span class="entry_type_enum_name">HIGH_SPEED_VIDEO (v3.2)</span>
4071 <span class="entry_type_enum_deprecated">[deprecated]</span>
4072 <span class="entry_type_enum_optional">[optional]</span>
4073 <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>
4074 and <a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a>
4075 for high speed video recording.<wbr/></p>
4076 <p>Optimized for high speed video recording (frame rate >=60fps) use case.<wbr/></p>
4077 <p>The supported high speed video sizes and fps ranges are specified in
4078 <a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/> To get desired
4079 output frame rates,<wbr/> the application is only allowed to select video size
4080 and fps range combinations listed in this static metadata.<wbr/> The fps range
4081 can be control via <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a>.<wbr/></p>
4082 <p>In this mode,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to
4083 ON,<wbr/> ON,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode
4084 controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture
4085 and post-processing parameters is possible.<wbr/> All other controls operate the
4086 same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other
4087 android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p>
4089 <li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li>
4090 <li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li>
4091 <li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li>
4092 <li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li>
4093 <li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li>
4094 <li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li>
4095 <li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li>
4096 <li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li>
4097 <li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li>
4098 <li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li>
4100 <p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p>
4102 <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>
4103 <li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li>
4104 <li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li>
4105 <li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></li>
4107 <p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may
4108 be lower than what camera can output,<wbr/> depending on the destination Surfaces for
4109 the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/>
4110 the application need check if the video encoder is capable of supporting the
4111 high frame rate for a given video size,<wbr/> or it will end up with lower recording
4112 frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the preview frame
4113 rate will be bounded by the screen refresh rate.<wbr/></p>
4114 <p>The camera device will only support up to 2 output high speed streams
4115 (processed non-stalling format defined in <a href="#static_android.request.maxNumOutputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams</a>)
4116 in this mode.<wbr/> This control will be effective only if all of below conditions are true:</p>
4118 <li>The application created no more than maxNumHighSpeedStreams processed non-stalling
4119 format output streams,<wbr/> where maxNumHighSpeedStreams is calculated as
4120 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>
4121 <li>The stream sizes are selected from the sizes reported by
4122 <a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/></li>
4123 <li>No processed non-stalling or raw streams are configured.<wbr/></li>
4125 <p>When above conditions are NOT satistied,<wbr/> the controls of this mode and
4126 <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/>
4127 the camera device will fall back to <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> <code>==</code> AUTO,<wbr/>
4128 and the returned capture result metadata will give the fps range choosen
4129 by the camera device.<wbr/></p>
4130 <p>Switching into or out of this mode may trigger some camera ISP/<wbr/>sensor
4131 reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that
4132 the application avoids unnecessary scene mode switch as much as possible.<wbr/></p></span>
4135 <span class="entry_type_enum_name">HDR (v3.2)</span>
4136 <span class="entry_type_enum_optional">[optional]</span>
4137 <span class="entry_type_enum_notes"><p>Turn on a device-specific high dynamic range (HDR) mode.<wbr/></p>
4138 <p>In this scene mode,<wbr/> the camera device captures images
4139 that keep a larger range of scene illumination levels
4140 visible in the final image.<wbr/> For example,<wbr/> when taking a
4141 picture of a object in front of a bright window,<wbr/> both
4142 the object and the scene through the window may be
4143 visible when using HDR mode,<wbr/> while in normal AUTO mode,<wbr/>
4144 one or the other may be poorly exposed.<wbr/> As a tradeoff,<wbr/>
4145 HDR mode generally takes much longer to capture a single
4146 image,<wbr/> has no user control,<wbr/> and may have other artifacts
4147 depending on the HDR method used.<wbr/></p>
4148 <p>Therefore,<wbr/> HDR captures operate at a much slower rate
4149 than regular captures.<wbr/></p>
4150 <p>In this mode,<wbr/> on LIMITED or FULL devices,<wbr/> when a request
4151 is made with a <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> of
4152 STILL_<wbr/>CAPTURE,<wbr/> the camera device will capture an image
4153 using a high dynamic range capture technique.<wbr/> On LEGACY
4154 devices,<wbr/> captures that target a JPEG-format output will
4155 be captured with HDR,<wbr/> and the capture intent is not
4157 <p>The HDR capture may involve the device capturing a burst
4158 of images internally and combining them into one,<wbr/> or it
4159 may involve the device using specialized high dynamic
4160 range capture hardware.<wbr/> In all cases,<wbr/> a single image is
4161 produced in response to a capture request submitted
4162 while in HDR mode.<wbr/></p>
4163 <p>Since substantial post-processing is generally needed to
4164 produce an HDR image,<wbr/> only YUV,<wbr/> PRIVATE,<wbr/> and JPEG
4165 outputs are supported for LIMITED/<wbr/>FULL device HDR
4166 captures,<wbr/> and only JPEG outputs are supported for LEGACY
4167 HDR captures.<wbr/> Using a RAW output for HDR capture is not
4168 supported.<wbr/></p>
4169 <p>Some devices may also support always-on HDR,<wbr/> which
4170 applies HDR processing at full frame rate.<wbr/> For these
4171 devices,<wbr/> intents other than STILL_<wbr/>CAPTURE will also
4172 produce an HDR output with no frame rate impact compared
4173 to normal operation,<wbr/> though the quality may be lower
4174 than for STILL_<wbr/>CAPTURE intents.<wbr/></p>
4175 <p>If SCENE_<wbr/>MODE_<wbr/>HDR is used with unsupported output types
4176 or capture intents,<wbr/> the images captured will be as if
4177 the SCENE_<wbr/>MODE was not enabled at all.<wbr/></p></span>
4180 <span class="entry_type_enum_name">FACE_PRIORITY_LOW_LIGHT (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_notes"><p>Same as FACE_<wbr/>PRIORITY scene mode,<wbr/> except that the camera
4184 device will choose higher sensitivity values (<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>)
4185 under low light conditions.<wbr/></p>
4186 <p>The camera device may be tuned to expose the images in a reduced
4187 sensitivity range to produce the best quality images.<wbr/> For example,<wbr/>
4188 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/>
4189 the camera device auto-exposure routine tuning process may limit the actual
4190 exposure sensitivity range to [100,<wbr/> 1200] to ensure that the noise level isn't
4191 exessive in order to preserve the image quality.<wbr/> Under this situation,<wbr/> the image under
4192 low light may be under-exposed when the sensor max exposure time (bounded by the
4193 <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
4194 ON_<wbr/>* modes) and effective max sensitivity are reached.<wbr/> This scene mode allows the
4195 camera device auto-exposure routine to increase the sensitivity up to the max
4196 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
4197 dark and the max exposure time is reached.<wbr/> The captured images may be noisier
4198 compared with the images captured in normal FACE_<wbr/>PRIORITY mode; therefore,<wbr/> it is
4199 recommended that the application only use this scene mode when it is capable of
4200 reducing the noise level of the captured images.<wbr/></p>
4201 <p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
4202 <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>
4203 remain active when FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT is set.<wbr/></p></span>
4206 <span class="entry_type_enum_name">DEVICE_CUSTOM_START (v3.2)</span>
4207 <span class="entry_type_enum_optional">[optional]</span>
4208 <span class="entry_type_enum_hidden">[hidden]</span>
4209 <span class="entry_type_enum_value">100</span>
4210 <span class="entry_type_enum_notes"><p>Scene mode values within the range of
4211 <code>[DEVICE_<wbr/>CUSTOM_<wbr/>START,<wbr/> DEVICE_<wbr/>CUSTOM_<wbr/>END]</code> are reserved for device specific
4212 customized scene modes.<wbr/></p></span>
4215 <span class="entry_type_enum_name">DEVICE_CUSTOM_END (v3.2)</span>
4216 <span class="entry_type_enum_optional">[optional]</span>
4217 <span class="entry_type_enum_hidden">[hidden]</span>
4218 <span class="entry_type_enum_value">127</span>
4219 <span class="entry_type_enum_notes"><p>Scene mode values within the range of
4220 <code>[DEVICE_<wbr/>CUSTOM_<wbr/>START,<wbr/> DEVICE_<wbr/>CUSTOM_<wbr/>END]</code> are reserved for device specific
4221 customized scene modes.<wbr/></p></span>
4225 </td> <!-- entry_type -->
4227 <td class="entry_description">
4228 <p>Control for which scene mode is currently active.<wbr/></p>
4231 <td class="entry_units">
4234 <td class="entry_range">
4235 <p><a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a></p>
4238 <td class="entry_hal_version">
4242 <td class="entry_tags">
4243 <ul class="entry_tags">
4244 <li><a href="#tag_BC">BC</a></li>
4249 <tr class="entries_header">
4250 <th class="th_details" colspan="6">Details</th>
4252 <tr class="entry_cont">
4253 <td class="entry_details" colspan="6">
4254 <p>Scene modes are custom camera modes optimized for a certain set of conditions and
4255 capture settings.<wbr/></p>
4256 <p>This is the mode that that is active when
4257 <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
4258 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>
4259 while in use.<wbr/></p>
4260 <p>The interpretation and implementation of these scene modes is left
4261 to the implementor of the camera device.<wbr/> Their behavior will not be
4262 consistent across all devices,<wbr/> and any given device may only implement
4263 a subset of these modes.<wbr/></p>
4267 <tr class="entries_header">
4268 <th class="th_details" colspan="6">HAL Implementation Details</th>
4270 <tr class="entry_cont">
4271 <td class="entry_details" colspan="6">
4272 <p>HAL implementations that include scene modes are expected to provide
4273 the per-scene settings to use for <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
4274 <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
4275 <a href="#static_android.control.sceneModeOverrides">android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides</a>.<wbr/></p>
4276 <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
4277 HAL must list supported video size and fps range in
4278 <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/>
4279 if the HAL has two different sensor configurations for normal streaming mode and high
4280 speed streaming,<wbr/> when this scene mode is set/<wbr/>reset in a sequence of capture requests,<wbr/> the
4281 HAL may have to switch between different sensor modes.<wbr/> This mode is deprecated in legacy
4282 HAL3.<wbr/>3,<wbr/> to support high speed video recording,<wbr/> please implement
4283 <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
4284 capbility defined in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
4288 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4289 <!-- end of entry -->
4292 <tr class="entry" id="controls_android.control.videoStabilizationMode">
4293 <td class="entry_name
4295 android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode
4297 <td class="entry_type">
4298 <span class="entry_type_name entry_type_name_enum">byte</span>
4300 <span class="entry_type_visibility"> [public]</span>
4303 <span class="entry_type_hwlevel">[legacy] </span>
4307 <ul class="entry_type_enum">
4309 <span class="entry_type_enum_name">OFF (v3.2)</span>
4310 <span class="entry_type_enum_notes"><p>Video stabilization is disabled.<wbr/></p></span>
4313 <span class="entry_type_enum_name">ON (v3.2)</span>
4314 <span class="entry_type_enum_notes"><p>Video stabilization is enabled.<wbr/></p></span>
4318 </td> <!-- entry_type -->
4320 <td class="entry_description">
4321 <p>Whether video stabilization is
4325 <td class="entry_units">
4328 <td class="entry_range">
4331 <td class="entry_hal_version">
4335 <td class="entry_tags">
4336 <ul class="entry_tags">
4337 <li><a href="#tag_BC">BC</a></li>
4342 <tr class="entries_header">
4343 <th class="th_details" colspan="6">Details</th>
4345 <tr class="entry_cont">
4346 <td class="entry_details" colspan="6">
4347 <p>Video stabilization automatically warps images from
4348 the camera in order to stabilize motion between consecutive frames.<wbr/></p>
4349 <p>If enabled,<wbr/> video stabilization can modify the
4350 <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> to keep the video stream stabilized.<wbr/></p>
4351 <p>Switching between different video stabilization modes may take several
4352 frames to initialize,<wbr/> the camera device will report the current mode
4353 in capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/>
4354 the video stabilization modes in the first several capture results may
4355 still be "OFF",<wbr/> and it will become "ON" when the initialization is
4357 <p>In addition,<wbr/> not all recording sizes or frame rates may be supported for
4358 stabilization by a device that reports stabilization support.<wbr/> It is guaranteed
4359 that an output targeting a MediaRecorder or MediaCodec will be stabilized if
4360 the recording resolution is less than or equal to 1920 x 1080 (width less than
4361 or equal to 1920,<wbr/> height less than or equal to 1080),<wbr/> and the recording
4362 frame rate is less than or equal to 30fps.<wbr/> At other sizes,<wbr/> the CaptureResult
4363 <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a> field will return
4364 OFF if the recording output is not stabilized,<wbr/> or if there are no output
4365 Surface types that can be stabilized.<wbr/></p>
4366 <p>If a camera device supports both this mode and OIS
4367 (<a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may
4368 produce undesirable interaction,<wbr/> so it is recommended not to enable
4369 both at the same time.<wbr/></p>
4374 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4375 <!-- end of entry -->
4378 <tr class="entry" id="controls_android.control.postRawSensitivityBoost">
4379 <td class="entry_name
4381 android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost
4383 <td class="entry_type">
4384 <span class="entry_type_name">int32</span>
4386 <span class="entry_type_visibility"> [public]</span>
4393 </td> <!-- entry_type -->
4395 <td class="entry_description">
4396 <p>The amount of additional sensitivity boost applied to output images
4397 after RAW sensor data is captured.<wbr/></p>
4400 <td class="entry_units">
4401 ISO arithmetic units,<wbr/> the same as android.<wbr/>sensor.<wbr/>sensitivity
4404 <td class="entry_range">
4405 <p><a href="#static_android.control.postRawSensitivityBoostRange">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost<wbr/>Range</a></p>
4408 <td class="entry_hal_version">
4412 <td class="entry_tags">
4416 <tr class="entries_header">
4417 <th class="th_details" colspan="6">Details</th>
4419 <tr class="entry_cont">
4420 <td class="entry_details" colspan="6">
4421 <p>Some camera devices support additional digital sensitivity boosting in the
4422 camera processing pipeline after sensor RAW image is captured.<wbr/>
4423 Such a boost will be applied to YUV/<wbr/>JPEG format output images but will not
4424 have effect on RAW output formats like RAW_<wbr/>SENSOR,<wbr/> RAW10,<wbr/> RAW12 or RAW_<wbr/>OPAQUE.<wbr/></p>
4425 <p>This key will be <code>null</code> for devices that do not support any RAW format
4426 outputs.<wbr/> For devices that do support RAW format outputs,<wbr/> this key will always
4427 present,<wbr/> and if a device does not support post RAW sensitivity boost,<wbr/> it will
4428 list <code>100</code> in this key.<wbr/></p>
4429 <p>If the camera device cannot apply the exact boost requested,<wbr/> it will reduce the
4430 boost to the nearest supported value.<wbr/>
4431 The final boost value used will be available in the output capture result.<wbr/></p>
4432 <p>For devices that support post RAW sensitivity boost,<wbr/> the YUV/<wbr/>JPEG output images
4433 of such device will have the total sensitivity of
4434 <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>
4435 The sensitivity of RAW format images will always be <code><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></code></p>
4436 <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
4437 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
4442 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4443 <!-- end of entry -->
4446 <tr class="entry" id="controls_android.control.enableZsl">
4447 <td class="entry_name
4449 android.<wbr/>control.<wbr/>enable<wbr/>Zsl
4451 <td class="entry_type">
4452 <span class="entry_type_name entry_type_name_enum">byte</span>
4454 <span class="entry_type_visibility"> [public as boolean]</span>
4460 <ul class="entry_type_enum">
4462 <span class="entry_type_enum_name">FALSE (v3.2)</span>
4463 <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
4464 after previous requests.<wbr/></p></span>
4467 <span class="entry_type_enum_name">TRUE (v3.2)</span>
4468 <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
4469 captured before previous requests.<wbr/></p></span>
4473 </td> <!-- entry_type -->
4475 <td class="entry_description">
4476 <p>Allow camera device to enable zero-shutter-lag mode for requests with
4477 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE.<wbr/></p>
4480 <td class="entry_units">
4483 <td class="entry_range">
4486 <td class="entry_hal_version">
4490 <td class="entry_tags">
4494 <tr class="entries_header">
4495 <th class="th_details" colspan="6">Details</th>
4497 <tr class="entry_cont">
4498 <td class="entry_details" colspan="6">
4499 <p>If enableZsl is <code>true</code>,<wbr/> the camera device may enable zero-shutter-lag mode for requests with
4500 STILL_<wbr/>CAPTURE capture intent.<wbr/> The camera device may use images captured in the past to
4501 produce output images for a zero-shutter-lag request.<wbr/> The result metadata including the
4502 <a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a> reflects the source frames used to produce output images.<wbr/>
4503 Therefore,<wbr/> the contents of the output images and the result metadata may be out of order
4504 compared to previous regular requests.<wbr/> enableZsl does not affect requests with other
4505 capture intents.<wbr/></p>
4506 <p>For example,<wbr/> when requests are submitted in the following order:
4507 Request A: enableZsl is ON,<wbr/> <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> is PREVIEW
4508 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>
4509 <p>The output images for request B may have contents captured before the output images for
4510 request A,<wbr/> and the result metadata for request B may be older than the result metadata for
4511 request A.<wbr/></p>
4512 <p>Note that when enableZsl is <code>true</code>,<wbr/> it is not guaranteed to get output images captured in
4513 the past for requests with STILL_<wbr/>CAPTURE capture intent.<wbr/></p>
4514 <p>For applications targeting SDK versions O and newer,<wbr/> the value of enableZsl in
4515 TEMPLATE_<wbr/>STILL_<wbr/>CAPTURE template may be <code>true</code>.<wbr/> The value in other templates is always
4516 <code>false</code> if present.<wbr/></p>
4517 <p>For applications targeting SDK versions older than O,<wbr/> the value of enableZsl in all
4518 capture templates is always <code>false</code> if present.<wbr/></p>
4519 <p>For application-operated ZSL,<wbr/> use CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p>
4523 <tr class="entries_header">
4524 <th class="th_details" colspan="6">HAL Implementation Details</th>
4526 <tr class="entry_cont">
4527 <td class="entry_details" colspan="6">
4528 <p>It is valid for HAL to produce regular output images for requests with STILL_<wbr/>CAPTURE
4529 capture intent.<wbr/></p>
4533 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4534 <!-- end of entry -->
4538 <!-- end of kind -->
4540 <tr><td colspan="7" class="kind">static</td></tr>
4542 <thead class="entries_header">
4544 <th class="th_name">Property Name</th>
4545 <th class="th_type">Type</th>
4546 <th class="th_description">Description</th>
4547 <th class="th_units">Units</th>
4548 <th class="th_range">Range</th>
4549 <th class="th_hal_version">Initial HIDL HAL version</th>
4550 <th class="th_tags">Tags</th>
4565 <tr class="entry" id="static_android.control.aeAvailableAntibandingModes">
4566 <td class="entry_name
4568 android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes
4570 <td class="entry_type">
4571 <span class="entry_type_name">byte</span>
4572 <span class="entry_type_container">x</span>
4574 <span class="entry_type_array">
4577 <span class="entry_type_visibility"> [public as enumList]</span>
4580 <span class="entry_type_hwlevel">[legacy] </span>
4583 <div class="entry_type_notes">list of enums</div>
4586 </td> <!-- entry_type -->
4588 <td class="entry_description">
4589 <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
4590 supported by this camera device.<wbr/></p>
4593 <td class="entry_units">
4596 <td class="entry_range">
4597 <p>Any value listed in <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a></p>
4600 <td class="entry_hal_version">
4604 <td class="entry_tags">
4605 <ul class="entry_tags">
4606 <li><a href="#tag_BC">BC</a></li>
4611 <tr class="entries_header">
4612 <th class="th_details" colspan="6">Details</th>
4614 <tr class="entry_cont">
4615 <td class="entry_details" colspan="6">
4616 <p>Not all of the auto-exposure anti-banding modes may be
4617 supported by a given camera device.<wbr/> This field lists the
4618 valid anti-banding modes that the application may request
4619 for this camera device with the
4620 <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> control.<wbr/></p>
4625 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4626 <!-- end of entry -->
4629 <tr class="entry" id="static_android.control.aeAvailableModes">
4630 <td class="entry_name
4632 android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes
4634 <td class="entry_type">
4635 <span class="entry_type_name">byte</span>
4636 <span class="entry_type_container">x</span>
4638 <span class="entry_type_array">
4641 <span class="entry_type_visibility"> [public as enumList]</span>
4644 <span class="entry_type_hwlevel">[legacy] </span>
4647 <div class="entry_type_notes">list of enums</div>
4650 </td> <!-- entry_type -->
4652 <td class="entry_description">
4653 <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
4657 <td class="entry_units">
4660 <td class="entry_range">
4661 <p>Any value listed in <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a></p>
4664 <td class="entry_hal_version">
4668 <td class="entry_tags">
4669 <ul class="entry_tags">
4670 <li><a href="#tag_BC">BC</a></li>
4675 <tr class="entries_header">
4676 <th class="th_details" colspan="6">Details</th>
4678 <tr class="entry_cont">
4679 <td class="entry_details" colspan="6">
4680 <p>Not all the auto-exposure modes may be supported by a
4681 given camera device,<wbr/> especially if no flash unit is
4682 available.<wbr/> This entry lists the valid modes for
4683 <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> for this camera device.<wbr/></p>
4684 <p>All camera devices support ON,<wbr/> and all camera devices with flash
4685 units support ON_<wbr/>AUTO_<wbr/>FLASH and ON_<wbr/>ALWAYS_<wbr/>FLASH.<wbr/></p>
4686 <p>FULL mode camera devices always support OFF mode,<wbr/>
4687 which enables application control of camera exposure time,<wbr/>
4688 sensitivity,<wbr/> and frame duration.<wbr/></p>
4689 <p>LEGACY mode camera devices never support OFF mode.<wbr/>
4690 LIMITED mode devices support OFF if they support the MANUAL_<wbr/>SENSOR
4691 capability.<wbr/></p>
4696 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4697 <!-- end of entry -->
4700 <tr class="entry" id="static_android.control.aeAvailableTargetFpsRanges">
4701 <td class="entry_name
4703 android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Target<wbr/>Fps<wbr/>Ranges
4705 <td class="entry_type">
4706 <span class="entry_type_name">int32</span>
4707 <span class="entry_type_container">x</span>
4709 <span class="entry_type_array">
4712 <span class="entry_type_visibility"> [public as rangeInt]</span>
4715 <span class="entry_type_hwlevel">[legacy] </span>
4718 <div class="entry_type_notes">list of pairs of frame rates</div>
4721 </td> <!-- entry_type -->
4723 <td class="entry_description">
4724 <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
4725 this camera device.<wbr/></p>
4728 <td class="entry_units">
4729 Frames per second (FPS)
4732 <td class="entry_range">
4735 <td class="entry_hal_version">
4739 <td class="entry_tags">
4740 <ul class="entry_tags">
4741 <li><a href="#tag_BC">BC</a></li>
4746 <tr class="entries_header">
4747 <th class="th_details" colspan="6">Details</th>
4749 <tr class="entry_cont">
4750 <td class="entry_details" colspan="6">
4751 <p>For devices at the LEGACY level or above:</p>
4754 <p>For constant-framerate recording,<wbr/> for each normal
4755 <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a>,<wbr/> that is,<wbr/> a
4756 <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a> that has
4757 <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#quality">quality</a> in
4758 the range [<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#QUALITY_LOW">QUALITY_<wbr/>LOW</a>,<wbr/>
4759 <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#QUALITY_2160P">QUALITY_<wbr/>2160P</a>],<wbr/> if the profile is
4760 supported by the device and has
4761 <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#videoFrameRate">videoFrameRate</a> <code>x</code>,<wbr/> this list will
4762 always include (<code>x</code>,<wbr/><code>x</code>).<wbr/></p>
4765 <p>Also,<wbr/> a camera device must either not support any
4766 <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a>,<wbr/>
4767 or support at least one
4768 normal <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a> that has
4769 <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#videoFrameRate">videoFrameRate</a> <code>x</code> >= 24.<wbr/></p>
4772 <p>For devices at the LIMITED level or above:</p>
4774 <li>For YUV_<wbr/>420_<wbr/>888 burst capture use case,<wbr/> this list will always include (<code>min</code>,<wbr/> <code>max</code>)
4775 and (<code>max</code>,<wbr/> <code>max</code>) where <code>min</code> <= 15 and <code>max</code> = the maximum output frame rate of the
4776 maximum YUV_<wbr/>420_<wbr/>888 output size.<wbr/></li>
4782 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4783 <!-- end of entry -->
4786 <tr class="entry" id="static_android.control.aeCompensationRange">
4787 <td class="entry_name
4789 android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range
4791 <td class="entry_type">
4792 <span class="entry_type_name">int32</span>
4793 <span class="entry_type_container">x</span>
4795 <span class="entry_type_array">
4798 <span class="entry_type_visibility"> [public as rangeInt]</span>
4801 <span class="entry_type_hwlevel">[legacy] </span>
4806 </td> <!-- entry_type -->
4808 <td class="entry_description">
4809 <p>Maximum and minimum exposure compensation values for
4810 <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/>
4811 that are supported by this camera device.<wbr/></p>
4814 <td class="entry_units">
4817 <td class="entry_range">
4818 <p>Range [0,<wbr/>0] indicates that exposure compensation is not supported.<wbr/></p>
4819 <p>For LIMITED and FULL devices,<wbr/> range must follow below requirements if exposure
4820 compensation is supported (<code>range != [0,<wbr/> 0]</code>):</p>
4821 <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>
4822 <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>
4823 <p>LEGACY devices may support a smaller range than this.<wbr/></p>
4826 <td class="entry_hal_version">
4830 <td class="entry_tags">
4831 <ul class="entry_tags">
4832 <li><a href="#tag_BC">BC</a></li>
4839 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4840 <!-- end of entry -->
4843 <tr class="entry" id="static_android.control.aeCompensationStep">
4844 <td class="entry_name
4846 android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step
4848 <td class="entry_type">
4849 <span class="entry_type_name">rational</span>
4851 <span class="entry_type_visibility"> [public]</span>
4854 <span class="entry_type_hwlevel">[legacy] </span>
4859 </td> <!-- entry_type -->
4861 <td class="entry_description">
4862 <p>Smallest step by which the exposure compensation
4863 can be changed.<wbr/></p>
4866 <td class="entry_units">
4870 <td class="entry_range">
4873 <td class="entry_hal_version">
4877 <td class="entry_tags">
4878 <ul class="entry_tags">
4879 <li><a href="#tag_BC">BC</a></li>
4884 <tr class="entries_header">
4885 <th class="th_details" colspan="6">Details</th>
4887 <tr class="entry_cont">
4888 <td class="entry_details" colspan="6">
4889 <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
4890 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
4891 that the target EV offset for the auto-exposure routine is -1 EV.<wbr/></p>
4892 <p>One unit of EV compensation changes the brightness of the captured image by a factor
4893 of two.<wbr/> +1 EV doubles the image brightness,<wbr/> while -1 EV halves the image brightness.<wbr/></p>
4897 <tr class="entries_header">
4898 <th class="th_details" colspan="6">HAL Implementation Details</th>
4900 <tr class="entry_cont">
4901 <td class="entry_details" colspan="6">
4902 <p>This must be less than or equal to 1/<wbr/>2.<wbr/></p>
4906 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4907 <!-- end of entry -->
4910 <tr class="entry" id="static_android.control.afAvailableModes">
4911 <td class="entry_name
4913 android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes
4915 <td class="entry_type">
4916 <span class="entry_type_name">byte</span>
4917 <span class="entry_type_container">x</span>
4919 <span class="entry_type_array">
4922 <span class="entry_type_visibility"> [public as enumList]</span>
4925 <span class="entry_type_hwlevel">[legacy] </span>
4928 <div class="entry_type_notes">List of enums</div>
4931 </td> <!-- entry_type -->
4933 <td class="entry_description">
4934 <p>List of auto-focus (AF) modes for <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> that are
4935 supported by this camera device.<wbr/></p>
4938 <td class="entry_units">
4941 <td class="entry_range">
4942 <p>Any value listed in <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a></p>
4945 <td class="entry_hal_version">
4949 <td class="entry_tags">
4950 <ul class="entry_tags">
4951 <li><a href="#tag_BC">BC</a></li>
4956 <tr class="entries_header">
4957 <th class="th_details" colspan="6">Details</th>
4959 <tr class="entry_cont">
4960 <td class="entry_details" colspan="6">
4961 <p>Not all the auto-focus modes may be supported by a
4962 given camera device.<wbr/> This entry lists the valid modes for
4963 <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> for this camera device.<wbr/></p>
4964 <p>All LIMITED and FULL mode camera devices will support OFF mode,<wbr/> and all
4965 camera devices with adjustable focuser units
4966 (<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>
4967 <p>LEGACY devices will support OFF mode only if they support
4968 focusing to infinity (by also setting <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> to
4969 <code>0.<wbr/>0f</code>).<wbr/></p>
4974 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4975 <!-- end of entry -->
4978 <tr class="entry" id="static_android.control.availableEffects">
4979 <td class="entry_name
4981 android.<wbr/>control.<wbr/>available<wbr/>Effects
4983 <td class="entry_type">
4984 <span class="entry_type_name">byte</span>
4985 <span class="entry_type_container">x</span>
4987 <span class="entry_type_array">
4990 <span class="entry_type_visibility"> [public as enumList]</span>
4993 <span class="entry_type_hwlevel">[legacy] </span>
4996 <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>effect<wbr/>Mode).<wbr/></div>
4999 </td> <!-- entry_type -->
5001 <td class="entry_description">
5002 <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
5006 <td class="entry_units">
5009 <td class="entry_range">
5010 <p>Any value listed in <a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></p>
5013 <td class="entry_hal_version">
5017 <td class="entry_tags">
5018 <ul class="entry_tags">
5019 <li><a href="#tag_BC">BC</a></li>
5024 <tr class="entries_header">
5025 <th class="th_details" colspan="6">Details</th>
5027 <tr class="entry_cont">
5028 <td class="entry_details" colspan="6">
5029 <p>This list contains the color effect modes that can be applied to
5030 images produced by the camera device.<wbr/>
5031 Implementations are not expected to be consistent across all devices.<wbr/>
5032 If no color effect modes are available for a device,<wbr/> this will only list
5034 <p>A color effect will only be applied if
5035 <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF.<wbr/> OFF is always included in this list.<wbr/></p>
5036 <p>This control has no effect on the operation of other control routines such
5037 as auto-exposure,<wbr/> white balance,<wbr/> or focus.<wbr/></p>
5042 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5043 <!-- end of entry -->
5046 <tr class="entry" id="static_android.control.availableSceneModes">
5047 <td class="entry_name
5049 android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes
5051 <td class="entry_type">
5052 <span class="entry_type_name">byte</span>
5053 <span class="entry_type_container">x</span>
5055 <span class="entry_type_array">
5058 <span class="entry_type_visibility"> [public as enumList]</span>
5061 <span class="entry_type_hwlevel">[legacy] </span>
5064 <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>scene<wbr/>Mode).<wbr/></div>
5067 </td> <!-- entry_type -->
5069 <td class="entry_description">
5070 <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
5074 <td class="entry_units">
5077 <td class="entry_range">
5078 <p>Any value listed in <a href="#controls_android.control.sceneMode">android.<wbr/>control.<wbr/>scene<wbr/>Mode</a></p>
5081 <td class="entry_hal_version">
5085 <td class="entry_tags">
5086 <ul class="entry_tags">
5087 <li><a href="#tag_BC">BC</a></li>
5092 <tr class="entries_header">
5093 <th class="th_details" colspan="6">Details</th>
5095 <tr class="entry_cont">
5096 <td class="entry_details" colspan="6">
5097 <p>This list contains scene modes that can be set for the camera device.<wbr/>
5098 Only scene modes that have been fully implemented for the
5099 camera device may be included here.<wbr/> Implementations are not expected
5100 to be consistent across all devices.<wbr/></p>
5101 <p>If no scene modes are supported by the camera device,<wbr/> this
5102 will be set to DISABLED.<wbr/> Otherwise DISABLED will not be listed.<wbr/></p>
5103 <p>FACE_<wbr/>PRIORITY is always listed if face detection is
5104 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> >
5105 0</code>).<wbr/></p>
5110 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5111 <!-- end of entry -->
5114 <tr class="entry" id="static_android.control.availableVideoStabilizationModes">
5115 <td class="entry_name
5117 android.<wbr/>control.<wbr/>available<wbr/>Video<wbr/>Stabilization<wbr/>Modes
5119 <td class="entry_type">
5120 <span class="entry_type_name">byte</span>
5121 <span class="entry_type_container">x</span>
5123 <span class="entry_type_array">
5126 <span class="entry_type_visibility"> [public as enumList]</span>
5129 <span class="entry_type_hwlevel">[legacy] </span>
5132 <div class="entry_type_notes">List of enums.<wbr/></div>
5135 </td> <!-- entry_type -->
5137 <td class="entry_description">
5138 <p>List of video stabilization modes for <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>
5139 that are supported by this camera device.<wbr/></p>
5142 <td class="entry_units">
5145 <td class="entry_range">
5146 <p>Any value listed in <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a></p>
5149 <td class="entry_hal_version">
5153 <td class="entry_tags">
5154 <ul class="entry_tags">
5155 <li><a href="#tag_BC">BC</a></li>
5160 <tr class="entries_header">
5161 <th class="th_details" colspan="6">Details</th>
5163 <tr class="entry_cont">
5164 <td class="entry_details" colspan="6">
5165 <p>OFF will always be listed.<wbr/></p>
5170 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5171 <!-- end of entry -->
5174 <tr class="entry" id="static_android.control.awbAvailableModes">
5175 <td class="entry_name
5177 android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes
5179 <td class="entry_type">
5180 <span class="entry_type_name">byte</span>
5181 <span class="entry_type_container">x</span>
5183 <span class="entry_type_array">
5186 <span class="entry_type_visibility"> [public as enumList]</span>
5189 <span class="entry_type_hwlevel">[legacy] </span>
5192 <div class="entry_type_notes">List of enums</div>
5195 </td> <!-- entry_type -->
5197 <td class="entry_description">
5198 <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
5199 camera device.<wbr/></p>
5202 <td class="entry_units">
5205 <td class="entry_range">
5206 <p>Any value listed in <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a></p>
5209 <td class="entry_hal_version">
5213 <td class="entry_tags">
5214 <ul class="entry_tags">
5215 <li><a href="#tag_BC">BC</a></li>
5220 <tr class="entries_header">
5221 <th class="th_details" colspan="6">Details</th>
5223 <tr class="entry_cont">
5224 <td class="entry_details" colspan="6">
5225 <p>Not all the auto-white-balance modes may be supported by a
5226 given camera device.<wbr/> This entry lists the valid modes for
5227 <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> for this camera device.<wbr/></p>
5228 <p>All camera devices will support ON mode.<wbr/></p>
5229 <p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always support OFF
5230 mode,<wbr/> which enables application control of white balance,<wbr/> by using
5231 <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
5232 mode camera devices.<wbr/></p>
5237 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5238 <!-- end of entry -->
5241 <tr class="entry" id="static_android.control.maxRegions">
5242 <td class="entry_name
5244 android.<wbr/>control.<wbr/>max<wbr/>Regions
5246 <td class="entry_type">
5247 <span class="entry_type_name">int32</span>
5248 <span class="entry_type_container">x</span>
5250 <span class="entry_type_array">
5253 <span class="entry_type_visibility"> [ndk_public]</span>
5256 <span class="entry_type_hwlevel">[legacy] </span>
5261 </td> <!-- entry_type -->
5263 <td class="entry_description">
5264 <p>List of the maximum number of regions that can be used for metering in
5265 auto-exposure (AE),<wbr/> auto-white balance (AWB),<wbr/> and auto-focus (AF);
5266 this corresponds to the the maximum number of elements in
5267 <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/>
5268 and <a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a>.<wbr/></p>
5271 <td class="entry_units">
5274 <td class="entry_range">
5275 <p>Value must be >= 0 for each element.<wbr/> For full-capability devices
5276 this value must be >= 1 for AE and AF.<wbr/> The order of the elements is:
5277 <code>(AE,<wbr/> AWB,<wbr/> AF)</code>.<wbr/></p>
5280 <td class="entry_hal_version">
5284 <td class="entry_tags">
5285 <ul class="entry_tags">
5286 <li><a href="#tag_BC">BC</a></li>
5293 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5294 <!-- end of entry -->
5297 <tr class="entry" id="static_android.control.maxRegionsAe">
5298 <td class="entry_name
5300 android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae
5302 <td class="entry_type">
5303 <span class="entry_type_name">int32</span>
5305 <span class="entry_type_visibility"> [java_public]</span>
5307 <span class="entry_type_synthetic">[synthetic] </span>
5309 <span class="entry_type_hwlevel">[legacy] </span>
5314 </td> <!-- entry_type -->
5316 <td class="entry_description">
5317 <p>The maximum number of metering regions that can be used by the auto-exposure (AE)
5321 <td class="entry_units">
5324 <td class="entry_range">
5325 <p>Value will be >= 0.<wbr/> For FULL-capability devices,<wbr/> this
5326 value will be >= 1.<wbr/></p>
5329 <td class="entry_hal_version">
5333 <td class="entry_tags">
5337 <tr class="entries_header">
5338 <th class="th_details" colspan="6">Details</th>
5340 <tr class="entry_cont">
5341 <td class="entry_details" colspan="6">
5342 <p>This corresponds to the the maximum allowed number of elements in
5343 <a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a>.<wbr/></p>
5347 <tr class="entries_header">
5348 <th class="th_details" colspan="6">HAL Implementation Details</th>
5350 <tr class="entry_cont">
5351 <td class="entry_details" colspan="6">
5352 <p>This entry is private to the framework.<wbr/> Fill in
5353 maxRegions to have this entry be automatically populated.<wbr/></p>
5357 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5358 <!-- end of entry -->
5361 <tr class="entry" id="static_android.control.maxRegionsAwb">
5362 <td class="entry_name
5364 android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb
5366 <td class="entry_type">
5367 <span class="entry_type_name">int32</span>
5369 <span class="entry_type_visibility"> [java_public]</span>
5371 <span class="entry_type_synthetic">[synthetic] </span>
5373 <span class="entry_type_hwlevel">[legacy] </span>
5378 </td> <!-- entry_type -->
5380 <td class="entry_description">
5381 <p>The maximum number of metering regions that can be used by the auto-white balance (AWB)
5385 <td class="entry_units">
5388 <td class="entry_range">
5389 <p>Value will be >= 0.<wbr/></p>
5392 <td class="entry_hal_version">
5396 <td class="entry_tags">
5400 <tr class="entries_header">
5401 <th class="th_details" colspan="6">Details</th>
5403 <tr class="entry_cont">
5404 <td class="entry_details" colspan="6">
5405 <p>This corresponds to the the maximum allowed number of elements in
5406 <a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a>.<wbr/></p>
5410 <tr class="entries_header">
5411 <th class="th_details" colspan="6">HAL Implementation Details</th>
5413 <tr class="entry_cont">
5414 <td class="entry_details" colspan="6">
5415 <p>This entry is private to the framework.<wbr/> Fill in
5416 maxRegions to have this entry be automatically populated.<wbr/></p>
5420 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5421 <!-- end of entry -->
5424 <tr class="entry" id="static_android.control.maxRegionsAf">
5425 <td class="entry_name
5427 android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af
5429 <td class="entry_type">
5430 <span class="entry_type_name">int32</span>
5432 <span class="entry_type_visibility"> [java_public]</span>
5434 <span class="entry_type_synthetic">[synthetic] </span>
5436 <span class="entry_type_hwlevel">[legacy] </span>
5441 </td> <!-- entry_type -->
5443 <td class="entry_description">
5444 <p>The maximum number of metering regions that can be used by the auto-focus (AF) routine.<wbr/></p>
5447 <td class="entry_units">
5450 <td class="entry_range">
5451 <p>Value will be >= 0.<wbr/> For FULL-capability devices,<wbr/> this
5452 value will be >= 1.<wbr/></p>
5455 <td class="entry_hal_version">
5459 <td class="entry_tags">
5463 <tr class="entries_header">
5464 <th class="th_details" colspan="6">Details</th>
5466 <tr class="entry_cont">
5467 <td class="entry_details" colspan="6">
5468 <p>This corresponds to the the maximum allowed number of elements in
5469 <a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a>.<wbr/></p>
5473 <tr class="entries_header">
5474 <th class="th_details" colspan="6">HAL Implementation Details</th>
5476 <tr class="entry_cont">
5477 <td class="entry_details" colspan="6">
5478 <p>This entry is private to the framework.<wbr/> Fill in
5479 maxRegions to have this entry be automatically populated.<wbr/></p>
5483 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5484 <!-- end of entry -->
5487 <tr class="entry" id="static_android.control.sceneModeOverrides">
5488 <td class="entry_name
5490 android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides
5492 <td class="entry_type">
5493 <span class="entry_type_name">byte</span>
5494 <span class="entry_type_container">x</span>
5496 <span class="entry_type_array">
5497 3 x length(availableSceneModes)
5499 <span class="entry_type_visibility"> [system]</span>
5502 <span class="entry_type_hwlevel">[limited] </span>
5507 </td> <!-- entry_type -->
5509 <td class="entry_description">
5510 <p>Ordered list of auto-exposure,<wbr/> auto-white balance,<wbr/> and auto-focus
5511 settings to use with each available scene mode.<wbr/></p>
5514 <td class="entry_units">
5517 <td class="entry_range">
5518 <p>For each available scene mode,<wbr/> the list must contain three
5519 entries containing the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
5520 <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
5521 by the camera device.<wbr/> The entry order is <code>(aeMode,<wbr/> awbMode,<wbr/> afMode)</code>
5522 where aeMode has the lowest index position.<wbr/></p>
5525 <td class="entry_hal_version">
5529 <td class="entry_tags">
5530 <ul class="entry_tags">
5531 <li><a href="#tag_BC">BC</a></li>
5536 <tr class="entries_header">
5537 <th class="th_details" colspan="6">Details</th>
5539 <tr class="entry_cont">
5540 <td class="entry_details" colspan="6">
5541 <p>When a scene mode is enabled,<wbr/> the camera device is expected
5542 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/>
5543 and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> with its preferred settings for
5544 that scene mode.<wbr/></p>
5545 <p>The order of this list matches that of availableSceneModes,<wbr/>
5546 with 3 entries for each mode.<wbr/> The overrides listed
5547 for FACE_<wbr/>PRIORITY and FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT (if supported) are ignored,<wbr/>
5548 since for that mode the application-set <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
5549 <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
5550 used instead,<wbr/> matching the behavior when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>
5551 is set to AUTO.<wbr/> It is recommended that the FACE_<wbr/>PRIORITY and
5552 FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT (if supported) overrides should be set to 0.<wbr/></p>
5553 <p>For example,<wbr/> if availableSceneModes contains
5554 <code>(FACE_<wbr/>PRIORITY,<wbr/> ACTION,<wbr/> NIGHT)</code>,<wbr/> then the camera framework
5555 expects sceneModeOverrides to have 9 entries formatted like:
5556 <code>(0,<wbr/> 0,<wbr/> 0,<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> AUTO,<wbr/> CONTINUOUS_<wbr/>PICTURE,<wbr/>
5557 ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> INCANDESCENT,<wbr/> AUTO)</code>.<wbr/></p>
5561 <tr class="entries_header">
5562 <th class="th_details" colspan="6">HAL Implementation Details</th>
5564 <tr class="entry_cont">
5565 <td class="entry_details" colspan="6">
5566 <p>To maintain backward compatibility,<wbr/> this list will be made available
5567 in the static metadata of the camera service.<wbr/> The camera service will
5568 use these values to set <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
5569 <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
5570 mode other than FACE_<wbr/>PRIORITY and FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT (if supported).<wbr/></p>
5574 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5575 <!-- end of entry -->
5578 <tr class="entry" id="static_android.control.availableHighSpeedVideoConfigurations">
5579 <td class="entry_name
5581 android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations
5583 <td class="entry_type">
5584 <span class="entry_type_name">int32</span>
5585 <span class="entry_type_container">x</span>
5587 <span class="entry_type_array">
5590 <span class="entry_type_visibility"> [hidden as highSpeedVideoConfiguration]</span>
5593 <span class="entry_type_hwlevel">[limited] </span>
5598 </td> <!-- entry_type -->
5600 <td class="entry_description">
5601 <p>List of available high speed video size,<wbr/> fps range and max batch size configurations
5602 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>
5605 <td class="entry_units">
5608 <td class="entry_range">
5609 <p>For each configuration,<wbr/> the fps_<wbr/>max >= 120fps.<wbr/></p>
5612 <td class="entry_hal_version">
5616 <td class="entry_tags">
5617 <ul class="entry_tags">
5618 <li><a href="#tag_V1">V1</a></li>
5623 <tr class="entries_header">
5624 <th class="th_details" colspan="6">Details</th>
5626 <tr class="entry_cont">
5627 <td class="entry_details" colspan="6">
5628 <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/>
5629 this metadata will list the supported high speed video size,<wbr/> fps range and max batch size
5630 configurations.<wbr/> All the sizes listed in this configuration will be a subset of the sizes
5631 reported by <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputSizes">StreamConfigurationMap#getOutputSizes</a>
5632 for processed non-stalling formats.<wbr/></p>
5633 <p>For the high speed video use case,<wbr/> the application must
5634 select the video size and fps range from this metadata to configure the recording and
5635 preview streams and setup the recording requests.<wbr/> For example,<wbr/> if the application intends
5636 to do high speed recording,<wbr/> it can select the maximum size reported by this metadata to
5637 configure output streams.<wbr/> Once the size is selected,<wbr/> application can filter this metadata
5638 by selected size and get the supported fps ranges,<wbr/> and use these fps ranges to setup the
5639 recording requests.<wbr/> Note that for the use case of multiple output streams,<wbr/> application
5640 must select one unique size from this metadata to use (e.<wbr/>g.,<wbr/> preview and recording streams
5641 must have the same size).<wbr/> Otherwise,<wbr/> the high speed capture session creation will fail.<wbr/></p>
5642 <p>The min and max fps will be multiple times of 30fps.<wbr/></p>
5643 <p>High speed video streaming extends significant performance pressue to camera hardware,<wbr/>
5644 to achieve efficient high speed streaming,<wbr/> the camera device may have to aggregate
5645 multiple frames together and send to camera device for processing where the request
5646 controls are same for all the frames in this batch.<wbr/> Max batch size indicates
5647 the max possible number of frames the camera device will group together for this high
5648 speed stream configuration.<wbr/> This max batch size will be used to generate a high speed
5649 recording request list by
5650 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a>.<wbr/>
5651 The max batch size for each configuration will satisfy below conditions:</p>
5653 <li>Each max batch size will be a divisor of its corresponding fps_<wbr/>max /<wbr/> 30.<wbr/> For example,<wbr/>
5654 if max_<wbr/>fps is 300,<wbr/> max batch size will only be 1,<wbr/> 2,<wbr/> 5,<wbr/> or 10.<wbr/></li>
5655 <li>The camera device may choose smaller internal batch size for each configuration,<wbr/> but
5656 the actual batch size will be a divisor of max batch size.<wbr/> For example,<wbr/> if the max batch
5657 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>
5658 <li>The max batch size in each configuration entry must be no larger than 32.<wbr/></li>
5660 <p>The camera device doesn't have to support batch mode to achieve high speed video recording,<wbr/>
5661 in such case,<wbr/> batch_<wbr/>size_<wbr/>max will be reported as 1 in each configuration entry.<wbr/></p>
5662 <p>This fps ranges in this configuration list can only be used to create requests
5663 that are submitted to a high speed camera capture session created by
5664 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>.<wbr/>
5665 The fps ranges reported in this metadata must not be used to setup capture requests for
5666 normal capture session,<wbr/> or it will cause request error.<wbr/></p>
5670 <tr class="entries_header">
5671 <th class="th_details" colspan="6">HAL Implementation Details</th>
5673 <tr class="entry_cont">
5674 <td class="entry_details" colspan="6">
5675 <p>All the sizes listed in this configuration will be a subset of the sizes reported by
5676 <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> for processed non-stalling output formats.<wbr/>
5677 Note that for all high speed video configurations,<wbr/> HAL must be able to support a minimum
5678 of two streams,<wbr/> though the application might choose to configure just one stream.<wbr/></p>
5679 <p>The HAL may support multiple sensor modes for high speed outputs,<wbr/> for example,<wbr/> 120fps
5680 sensor mode and 120fps recording,<wbr/> 240fps sensor mode for 240fps recording.<wbr/> The application
5681 usually starts preview first,<wbr/> then starts recording.<wbr/> To avoid sensor mode switch caused
5682 stutter when starting recording as much as possible,<wbr/> the application may want to ensure
5683 the same sensor mode is used for preview and recording.<wbr/> Therefore,<wbr/> The HAL must advertise
5684 the variable fps range [30,<wbr/> fps_<wbr/>max] for each fixed fps range in this configuration list.<wbr/>
5685 For example,<wbr/> if the HAL advertises [120,<wbr/> 120] and [240,<wbr/> 240],<wbr/> the HAL must also advertise
5686 [30,<wbr/> 120] and [30,<wbr/> 240] for each configuration.<wbr/> In doing so,<wbr/> if the application intends to
5687 do 120fps recording,<wbr/> it can select [30,<wbr/> 120] to start preview,<wbr/> and [120,<wbr/> 120] to start
5688 recording.<wbr/> For these variable fps ranges,<wbr/> it's up to the HAL to decide the actual fps
5689 values that are suitable for smooth preview streaming.<wbr/> If the HAL sees different max_<wbr/>fps
5690 values that fall into different sensor modes in a sequence of requests,<wbr/> the HAL must
5691 switch the sensor mode as quick as possible to minimize the mode switch caused stutter.<wbr/></p>
5695 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5696 <!-- end of entry -->
5699 <tr class="entry" id="static_android.control.aeLockAvailable">
5700 <td class="entry_name
5702 android.<wbr/>control.<wbr/>ae<wbr/>Lock<wbr/>Available
5704 <td class="entry_type">
5705 <span class="entry_type_name entry_type_name_enum">byte</span>
5707 <span class="entry_type_visibility"> [public as boolean]</span>
5710 <span class="entry_type_hwlevel">[legacy] </span>
5714 <ul class="entry_type_enum">
5716 <span class="entry_type_enum_name">FALSE (v3.2)</span>
5719 <span class="entry_type_enum_name">TRUE (v3.2)</span>
5723 </td> <!-- entry_type -->
5725 <td class="entry_description">
5726 <p>Whether the camera device supports <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></p>
5729 <td class="entry_units">
5732 <td class="entry_range">
5735 <td class="entry_hal_version">
5739 <td class="entry_tags">
5740 <ul class="entry_tags">
5741 <li><a href="#tag_BC">BC</a></li>
5746 <tr class="entries_header">
5747 <th class="th_details" colspan="6">Details</th>
5749 <tr class="entry_cont">
5750 <td class="entry_details" colspan="6">
5751 <p>Devices with MANUAL_<wbr/>SENSOR capability or BURST_<wbr/>CAPTURE capability will always
5752 list <code>true</code>.<wbr/> This includes FULL devices.<wbr/></p>
5757 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5758 <!-- end of entry -->
5761 <tr class="entry" id="static_android.control.awbLockAvailable">
5762 <td class="entry_name
5764 android.<wbr/>control.<wbr/>awb<wbr/>Lock<wbr/>Available
5766 <td class="entry_type">
5767 <span class="entry_type_name entry_type_name_enum">byte</span>
5769 <span class="entry_type_visibility"> [public as boolean]</span>
5772 <span class="entry_type_hwlevel">[legacy] </span>
5776 <ul class="entry_type_enum">
5778 <span class="entry_type_enum_name">FALSE (v3.2)</span>
5781 <span class="entry_type_enum_name">TRUE (v3.2)</span>
5785 </td> <!-- entry_type -->
5787 <td class="entry_description">
5788 <p>Whether the camera device supports <a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></p>
5791 <td class="entry_units">
5794 <td class="entry_range">
5797 <td class="entry_hal_version">
5801 <td class="entry_tags">
5802 <ul class="entry_tags">
5803 <li><a href="#tag_BC">BC</a></li>
5808 <tr class="entries_header">
5809 <th class="th_details" colspan="6">Details</th>
5811 <tr class="entry_cont">
5812 <td class="entry_details" colspan="6">
5813 <p>Devices with MANUAL_<wbr/>POST_<wbr/>PROCESSING capability or BURST_<wbr/>CAPTURE capability will
5814 always list <code>true</code>.<wbr/> This includes FULL devices.<wbr/></p>
5819 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5820 <!-- end of entry -->
5823 <tr class="entry" id="static_android.control.availableModes">
5824 <td class="entry_name
5826 android.<wbr/>control.<wbr/>available<wbr/>Modes
5828 <td class="entry_type">
5829 <span class="entry_type_name">byte</span>
5830 <span class="entry_type_container">x</span>
5832 <span class="entry_type_array">
5835 <span class="entry_type_visibility"> [public as enumList]</span>
5838 <span class="entry_type_hwlevel">[legacy] </span>
5841 <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>mode).<wbr/></div>
5844 </td> <!-- entry_type -->
5846 <td class="entry_description">
5847 <p>List of control modes for <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> that are supported by this camera
5851 <td class="entry_units">
5854 <td class="entry_range">
5855 <p>Any value listed in <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a></p>
5858 <td class="entry_hal_version">
5862 <td class="entry_tags">
5866 <tr class="entries_header">
5867 <th class="th_details" colspan="6">Details</th>
5869 <tr class="entry_cont">
5870 <td class="entry_details" colspan="6">
5871 <p>This list contains control modes that can be set for the camera device.<wbr/>
5872 LEGACY mode devices will always support AUTO mode.<wbr/> LIMITED and FULL
5873 devices will always support OFF,<wbr/> AUTO modes.<wbr/></p>
5878 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5879 <!-- end of entry -->
5882 <tr class="entry" id="static_android.control.postRawSensitivityBoostRange">
5883 <td class="entry_name
5885 android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost<wbr/>Range
5887 <td class="entry_type">
5888 <span class="entry_type_name">int32</span>
5889 <span class="entry_type_container">x</span>
5891 <span class="entry_type_array">
5894 <span class="entry_type_visibility"> [public as rangeInt]</span>
5899 <div class="entry_type_notes">Range of supported post RAW sensitivitiy boosts</div>
5902 </td> <!-- entry_type -->
5904 <td class="entry_description">
5905 <p>Range of boosts for <a href="#controls_android.control.postRawSensitivityBoost">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost</a> supported
5906 by this camera device.<wbr/></p>
5909 <td class="entry_units">
5910 ISO arithmetic units,<wbr/> the same as android.<wbr/>sensor.<wbr/>sensitivity
5913 <td class="entry_range">
5916 <td class="entry_hal_version">
5920 <td class="entry_tags">
5924 <tr class="entries_header">
5925 <th class="th_details" colspan="6">Details</th>
5927 <tr class="entry_cont">
5928 <td class="entry_details" colspan="6">
5929 <p>Devices support post RAW sensitivity boost will advertise
5930 <a href="#controls_android.control.postRawSensitivityBoost">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost</a> key for controling
5931 post RAW sensitivity boost.<wbr/></p>
5932 <p>This key will be <code>null</code> for devices that do not support any RAW format
5933 outputs.<wbr/> For devices that do support RAW format outputs,<wbr/> this key will always
5934 present,<wbr/> and if a device does not support post RAW sensitivity boost,<wbr/> it will
5935 list <code>(100,<wbr/> 100)</code> in this key.<wbr/></p>
5939 <tr class="entries_header">
5940 <th class="th_details" colspan="6">HAL Implementation Details</th>
5942 <tr class="entry_cont">
5943 <td class="entry_details" colspan="6">
5944 <p>This key is added in legacy HAL3.<wbr/>4.<wbr/> For legacy HAL3.<wbr/>3 or earlier devices,<wbr/> camera
5945 framework will generate this key as <code>(100,<wbr/> 100)</code> if device supports any of RAW output
5946 formats.<wbr/> All legacy HAL3.<wbr/>4 and above devices should list this key if device supports
5947 any of RAW output formats.<wbr/></p>
5951 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5952 <!-- end of entry -->
5956 <!-- end of kind -->
5958 <tr><td colspan="7" class="kind">dynamic</td></tr>
5960 <thead class="entries_header">
5962 <th class="th_name">Property Name</th>
5963 <th class="th_type">Type</th>
5964 <th class="th_description">Description</th>
5965 <th class="th_units">Units</th>
5966 <th class="th_range">Range</th>
5967 <th class="th_hal_version">Initial HIDL HAL version</th>
5968 <th class="th_tags">Tags</th>
5983 <tr class="entry" id="dynamic_android.control.aePrecaptureId">
5984 <td class="entry_name
5985 entry_name_deprecated
5987 android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Id
5989 <td class="entry_type">
5990 <span class="entry_type_name">int32</span>
5992 <span class="entry_type_visibility"> [system]</span>
5996 <span class="entry_type_deprecated">[deprecated] </span>
6000 </td> <!-- entry_type -->
6002 <td class="entry_description">
6003 <p>The ID sent with the latest
6004 CAMERA2_<wbr/>TRIGGER_<wbr/>PRECAPTURE_<wbr/>METERING call</p>
6007 <td class="entry_units">
6010 <td class="entry_range">
6011 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
6014 <td class="entry_hal_version">
6018 <td class="entry_tags">
6022 <tr class="entries_header">
6023 <th class="th_details" colspan="6">Details</th>
6025 <tr class="entry_cont">
6026 <td class="entry_details" colspan="6">
6028 CAMERA2_<wbr/>TRIGGER_<wbr/>PRECAPTURE_<wbr/>METERING trigger received yet
6029 by HAL.<wbr/> Always updated even if AE algorithm ignores the
6035 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6036 <!-- end of entry -->
6039 <tr class="entry" id="dynamic_android.control.aeAntibandingMode">
6040 <td class="entry_name
6042 android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode
6044 <td class="entry_type">
6045 <span class="entry_type_name entry_type_name_enum">byte</span>
6047 <span class="entry_type_visibility"> [public]</span>
6050 <span class="entry_type_hwlevel">[legacy] </span>
6054 <ul class="entry_type_enum">
6056 <span class="entry_type_enum_name">OFF (v3.2)</span>
6057 <span class="entry_type_enum_notes"><p>The camera device will not adjust exposure duration to
6058 avoid banding problems.<wbr/></p></span>
6061 <span class="entry_type_enum_name">50HZ (v3.2)</span>
6062 <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
6063 avoid banding problems with 50Hz illumination sources.<wbr/></p></span>
6066 <span class="entry_type_enum_name">60HZ (v3.2)</span>
6067 <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
6068 avoid banding problems with 60Hz illumination
6069 sources.<wbr/></p></span>
6072 <span class="entry_type_enum_name">AUTO (v3.2)</span>
6073 <span class="entry_type_enum_notes"><p>The camera device will automatically adapt its
6074 antibanding routine to the current illumination
6075 condition.<wbr/> This is the default mode if AUTO is
6076 available on given camera device.<wbr/></p></span>
6080 </td> <!-- entry_type -->
6082 <td class="entry_description">
6083 <p>The desired setting for the camera device's auto-exposure
6084 algorithm's antibanding compensation.<wbr/></p>
6087 <td class="entry_units">
6090 <td class="entry_range">
6091 <p><a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a></p>
6094 <td class="entry_hal_version">
6098 <td class="entry_tags">
6099 <ul class="entry_tags">
6100 <li><a href="#tag_BC">BC</a></li>
6105 <tr class="entries_header">
6106 <th class="th_details" colspan="6">Details</th>
6108 <tr class="entry_cont">
6109 <td class="entry_details" colspan="6">
6110 <p>Some kinds of lighting fixtures,<wbr/> such as some fluorescent
6111 lights,<wbr/> flicker at the rate of the power supply frequency
6112 (60Hz or 50Hz,<wbr/> depending on country).<wbr/> While this is
6113 typically not noticeable to a person,<wbr/> it can be visible to
6114 a camera device.<wbr/> If a camera sets its exposure time to the
6115 wrong value,<wbr/> the flicker may become visible in the
6116 viewfinder as flicker or in a final captured image,<wbr/> as a
6117 set of variable-brightness bands across the image.<wbr/></p>
6118 <p>Therefore,<wbr/> the auto-exposure routines of camera devices
6119 include antibanding routines that ensure that the chosen
6120 exposure value will not cause such banding.<wbr/> The choice of
6121 exposure time depends on the rate of flicker,<wbr/> which the
6122 camera device can detect automatically,<wbr/> or the expected
6123 rate can be selected by the application using this
6125 <p>A given camera device may not support all of the possible
6126 options for the antibanding mode.<wbr/> The
6127 <a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a> key contains
6128 the available modes for a given camera device.<wbr/></p>
6129 <p>AUTO mode is the default if it is available on given
6130 camera device.<wbr/> When AUTO mode is not available,<wbr/> the
6131 default will be either 50HZ or 60HZ,<wbr/> and both 50HZ
6132 and 60HZ will be available.<wbr/></p>
6133 <p>If manual exposure control is enabled (by setting
6134 <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/>
6135 then this setting has no effect,<wbr/> and the application must
6136 ensure it selects exposure times that do not cause banding
6137 issues.<wbr/> The <a href="#dynamic_android.statistics.sceneFlicker">android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker</a> key can assist
6138 the application in this.<wbr/></p>
6142 <tr class="entries_header">
6143 <th class="th_details" colspan="6">HAL Implementation Details</th>
6145 <tr class="entry_cont">
6146 <td class="entry_details" colspan="6">
6147 <p>For all capture request templates,<wbr/> this field must be set
6148 to AUTO if AUTO mode is available.<wbr/> If AUTO is not available,<wbr/>
6149 the default must be either 50HZ or 60HZ,<wbr/> and both 50HZ and
6150 60HZ must be available.<wbr/></p>
6151 <p>If manual exposure control is enabled (by setting
6152 <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/>
6153 then the exposure values provided by the application must not be
6154 adjusted for antibanding.<wbr/></p>
6158 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6159 <!-- end of entry -->
6162 <tr class="entry" id="dynamic_android.control.aeExposureCompensation">
6163 <td class="entry_name
6165 android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation
6167 <td class="entry_type">
6168 <span class="entry_type_name">int32</span>
6170 <span class="entry_type_visibility"> [public]</span>
6173 <span class="entry_type_hwlevel">[legacy] </span>
6178 </td> <!-- entry_type -->
6180 <td class="entry_description">
6181 <p>Adjustment to auto-exposure (AE) target image
6182 brightness.<wbr/></p>
6185 <td class="entry_units">
6189 <td class="entry_range">
6190 <p><a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a></p>
6193 <td class="entry_hal_version">
6197 <td class="entry_tags">
6198 <ul class="entry_tags">
6199 <li><a href="#tag_BC">BC</a></li>
6204 <tr class="entries_header">
6205 <th class="th_details" colspan="6">Details</th>
6207 <tr class="entry_cont">
6208 <td class="entry_details" colspan="6">
6209 <p>The adjustment is measured as a count of steps,<wbr/> with the
6210 step size defined by <a href="#static_android.control.aeCompensationStep">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step</a> and the
6211 allowed range by <a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a>.<wbr/></p>
6212 <p>For example,<wbr/> if the exposure value (EV) step is 0.<wbr/>333,<wbr/> '6'
6213 will mean an exposure compensation of +2 EV; -3 will mean an
6214 exposure compensation of -1 EV.<wbr/> One EV represents a doubling
6215 of image brightness.<wbr/> Note that this control will only be
6216 effective if <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>!=</code> OFF.<wbr/> This control
6217 will take effect even when <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> <code>== true</code>.<wbr/></p>
6218 <p>In the event of exposure compensation value being changed,<wbr/> camera device
6219 may take several frames to reach the newly requested exposure target.<wbr/>
6220 During that time,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> field will be in the SEARCHING
6221 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
6222 change from SEARCHING to either CONVERGED,<wbr/> LOCKED (if AE lock is enabled),<wbr/> or
6223 FLASH_<wbr/>REQUIRED (if the scene is too dark for still capture).<wbr/></p>
6228 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6229 <!-- end of entry -->
6232 <tr class="entry" id="dynamic_android.control.aeLock">
6233 <td class="entry_name
6235 android.<wbr/>control.<wbr/>ae<wbr/>Lock
6237 <td class="entry_type">
6238 <span class="entry_type_name entry_type_name_enum">byte</span>
6240 <span class="entry_type_visibility"> [public as boolean]</span>
6243 <span class="entry_type_hwlevel">[legacy] </span>
6247 <ul class="entry_type_enum">
6249 <span class="entry_type_enum_name">OFF (v3.2)</span>
6250 <span class="entry_type_enum_notes"><p>Auto-exposure lock is disabled; the AE algorithm
6251 is free to update its parameters.<wbr/></p></span>
6254 <span class="entry_type_enum_name">ON (v3.2)</span>
6255 <span class="entry_type_enum_notes"><p>Auto-exposure lock is enabled; the AE algorithm
6256 must not update the exposure and sensitivity parameters
6257 while the lock is active.<wbr/></p>
6258 <p><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a> setting changes
6259 will still take effect while auto-exposure is locked.<wbr/></p>
6260 <p>Some rare LEGACY devices may not support
6261 this,<wbr/> in which case the value will always be overridden to OFF.<wbr/></p></span>
6265 </td> <!-- entry_type -->
6267 <td class="entry_description">
6268 <p>Whether auto-exposure (AE) is currently locked to its latest
6269 calculated values.<wbr/></p>
6272 <td class="entry_units">
6275 <td class="entry_range">
6278 <td class="entry_hal_version">
6282 <td class="entry_tags">
6283 <ul class="entry_tags">
6284 <li><a href="#tag_BC">BC</a></li>
6289 <tr class="entries_header">
6290 <th class="th_details" colspan="6">Details</th>
6292 <tr class="entry_cont">
6293 <td class="entry_details" colspan="6">
6294 <p>When set to <code>true</code> (ON),<wbr/> the AE algorithm is locked to its latest parameters,<wbr/>
6295 and will not change exposure settings until the lock is set to <code>false</code> (OFF).<wbr/></p>
6296 <p>Note that even when AE is locked,<wbr/> the flash may be fired if
6297 the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is ON_<wbr/>AUTO_<wbr/>FLASH /<wbr/>
6298 ON_<wbr/>ALWAYS_<wbr/>FLASH /<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE.<wbr/></p>
6299 <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
6300 is ON,<wbr/> the camera device will still adjust its exposure value.<wbr/></p>
6301 <p>If AE precapture is triggered (see <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>)
6302 when AE is already locked,<wbr/> the camera device will not change the exposure time
6303 (<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>)
6304 parameters.<wbr/> The flash may be fired if the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>
6305 is ON_<wbr/>AUTO_<wbr/>FLASH/<wbr/>ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE and the scene is too dark.<wbr/> If the
6306 <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/>
6307 Similarly,<wbr/> AE precapture trigger CANCEL has no effect when AE is already locked.<wbr/></p>
6308 <p>When an AE precapture sequence is triggered,<wbr/> AE unlock will not be able to unlock
6309 the AE if AE is locked by the camera device internally during precapture metering
6310 sequence In other words,<wbr/> submitting requests with AE unlock has no effect for an
6311 ongoing precapture metering sequence.<wbr/> Otherwise,<wbr/> the precapture metering sequence
6312 will never succeed in a sequence of preview requests where AE lock is always set
6313 to <code>false</code>.<wbr/></p>
6314 <p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that
6315 get locked do not necessarily correspond to the settings that were present in the
6316 latest capture result received from the camera device,<wbr/> since additional captures
6317 and AE updates may have occurred even before the result was sent out.<wbr/> If an
6318 application is switching between automatic and manual control and wishes to eliminate
6319 any flicker during the switch,<wbr/> the following procedure is recommended:</p>
6321 <li>Starting in auto-AE mode:</li>
6323 <li>Wait for the first result to be output that has the AE locked</li>
6324 <li>Copy exposure settings from that result into a request,<wbr/> set the request to manual AE</li>
6325 <li>Submit the capture request,<wbr/> proceed to run manual AE as desired.<wbr/></li>
6327 <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>
6332 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6333 <!-- end of entry -->
6336 <tr class="entry" id="dynamic_android.control.aeMode">
6337 <td class="entry_name
6339 android.<wbr/>control.<wbr/>ae<wbr/>Mode
6341 <td class="entry_type">
6342 <span class="entry_type_name entry_type_name_enum">byte</span>
6344 <span class="entry_type_visibility"> [public]</span>
6347 <span class="entry_type_hwlevel">[legacy] </span>
6351 <ul class="entry_type_enum">
6353 <span class="entry_type_enum_name">OFF (v3.2)</span>
6354 <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is disabled.<wbr/></p>
6355 <p>The application-selected <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
6356 <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> and
6357 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are used by the camera
6358 device,<wbr/> along with android.<wbr/>flash.<wbr/>* fields,<wbr/> if there's
6359 a flash unit for this camera device.<wbr/></p>
6360 <p>Note that auto-white balance (AWB) and auto-focus (AF)
6361 behavior is device dependent when AE is in OFF mode.<wbr/>
6362 To have consistent behavior across different devices,<wbr/>
6363 it is recommended to either set AWB and AF to OFF mode
6364 or lock AWB and AF before setting AE to OFF.<wbr/>
6365 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/>
6366 <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>
6367 for more details.<wbr/></p>
6368 <p>LEGACY devices do not support the OFF mode and will
6369 override attempts to use this value to ON.<wbr/></p></span>
6372 <span class="entry_type_enum_name">ON (v3.2)</span>
6373 <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is active,<wbr/>
6374 with no flash control.<wbr/></p>
6375 <p>The application's values for
6376 <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
6377 <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
6378 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are ignored.<wbr/> The
6379 application has control over the various
6380 android.<wbr/>flash.<wbr/>* fields.<wbr/></p></span>
6383 <span class="entry_type_enum_name">ON_AUTO_FLASH (v3.2)</span>
6384 <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
6385 the camera's flash unit,<wbr/> firing it in low-light
6386 conditions.<wbr/></p>
6387 <p>The flash may be fired during a precapture sequence
6388 (triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and
6389 may be fired for captures for which the
6390 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to
6391 STILL_<wbr/>CAPTURE</p></span>
6394 <span class="entry_type_enum_name">ON_ALWAYS_FLASH (v3.2)</span>
6395 <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
6396 the camera's flash unit,<wbr/> always firing it for still
6398 <p>The flash may be fired during a precapture sequence
6399 (triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and
6400 will always be fired for captures for which the
6401 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to
6402 STILL_<wbr/>CAPTURE</p></span>
6405 <span class="entry_type_enum_name">ON_AUTO_FLASH_REDEYE (v3.2)</span>
6406 <span class="entry_type_enum_notes"><p>Like ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> but with automatic red eye
6407 reduction.<wbr/></p>
6408 <p>If deemed necessary by the camera device,<wbr/> a red eye
6409 reduction flash will fire during the precapture
6410 sequence.<wbr/></p></span>
6413 <span class="entry_type_enum_name">ON_EXTERNAL_FLASH (v3.3)</span>
6414 <span class="entry_type_enum_notes"><p>An external flash has been turned on.<wbr/></p>
6415 <p>It informs the camera device that an external flash has been turned on,<wbr/> and that
6416 metering (and continuous focus if active) should be quickly recaculated to account
6417 for the external flash.<wbr/> Otherwise,<wbr/> this mode acts like ON.<wbr/></p>
6418 <p>When the external flash is turned off,<wbr/> AE mode should be changed to one of the
6419 other available AE modes.<wbr/></p>
6420 <p>If the camera device supports AE external flash mode,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> must
6421 be FLASH_<wbr/>REQUIRED after the camera device finishes AE scan and it's too dark without
6422 flash.<wbr/></p></span>
6426 </td> <!-- entry_type -->
6428 <td class="entry_description">
6429 <p>The desired mode for the camera device's
6430 auto-exposure routine.<wbr/></p>
6433 <td class="entry_units">
6436 <td class="entry_range">
6437 <p><a href="#static_android.control.aeAvailableModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes</a></p>
6440 <td class="entry_hal_version">
6444 <td class="entry_tags">
6445 <ul class="entry_tags">
6446 <li><a href="#tag_BC">BC</a></li>
6451 <tr class="entries_header">
6452 <th class="th_details" colspan="6">Details</th>
6454 <tr class="entry_cont">
6455 <td class="entry_details" colspan="6">
6456 <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is
6458 <p>When set to any of the ON modes,<wbr/> the camera device's
6459 auto-exposure routine is enabled,<wbr/> overriding the
6460 application's selected exposure time,<wbr/> sensor sensitivity,<wbr/>
6461 and frame duration (<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
6462 <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
6463 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>).<wbr/> If one of the FLASH modes
6464 is selected,<wbr/> the camera device's flash unit controls are
6465 also overridden.<wbr/></p>
6466 <p>The FLASH modes are only available if the camera device
6467 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>
6468 <p>If flash TORCH mode is desired,<wbr/> this field must be set to
6469 ON or OFF,<wbr/> and <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> set to TORCH.<wbr/></p>
6470 <p>When set to any of the ON modes,<wbr/> the values chosen by the
6471 camera device auto-exposure routine for the overridden
6472 fields for a given capture will be available in its
6473 CaptureResult.<wbr/></p>
6478 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6479 <!-- end of entry -->
6482 <tr class="entry" id="dynamic_android.control.aeRegions">
6483 <td class="entry_name
6485 android.<wbr/>control.<wbr/>ae<wbr/>Regions
6487 <td class="entry_type">
6488 <span class="entry_type_name">int32</span>
6489 <span class="entry_type_container">x</span>
6491 <span class="entry_type_array">
6494 <span class="entry_type_visibility"> [public as meteringRectangle]</span>
6501 </td> <!-- entry_type -->
6503 <td class="entry_description">
6504 <p>List of metering areas to use for auto-exposure adjustment.<wbr/></p>
6507 <td class="entry_units">
6508 Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
6511 <td class="entry_range">
6512 <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
6513 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
6516 <td class="entry_hal_version">
6520 <td class="entry_tags">
6521 <ul class="entry_tags">
6522 <li><a href="#tag_BC">BC</a></li>
6527 <tr class="entries_header">
6528 <th class="th_details" colspan="6">Details</th>
6530 <tr class="entry_cont">
6531 <td class="entry_details" colspan="6">
6532 <p>Not available if <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a> is 0.<wbr/>
6533 Otherwise will always be present.<wbr/></p>
6534 <p>The maximum number of regions supported by the device is determined by the value
6535 of <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a>.<wbr/></p>
6536 <p>The coordinate system is based on the active pixel array,<wbr/>
6537 with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
6538 (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
6539 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
6540 bottom-right pixel in the active pixel array.<wbr/></p>
6541 <p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight
6542 for every pixel in the area.<wbr/> This means that a large metering area
6543 with the same weight as a smaller area will have more effect in
6544 the metering result.<wbr/> Metering areas can partially overlap and the
6545 camera device will add the weights in the overlap region.<wbr/></p>
6546 <p>The weights are relative to weights of other exposure metering regions,<wbr/> so if only one
6547 region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0
6548 weight is ignored.<wbr/></p>
6549 <p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
6550 camera device.<wbr/></p>
6551 <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
6552 capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
6553 region and output only the intersection rectangle as the metering region in the result
6554 metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and
6555 not reported in the result metadata.<wbr/></p>
6559 <tr class="entries_header">
6560 <th class="th_details" colspan="6">HAL Implementation Details</th>
6562 <tr class="entry_cont">
6563 <td class="entry_details" colspan="6">
6564 <p>The HAL level representation of MeteringRectangle[] is a
6565 int[5 * area_<wbr/>count].<wbr/>
6566 Every five elements represent a metering region of
6567 (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
6568 The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
6569 exclusive on xmax and ymax.<wbr/></p>
6573 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6574 <!-- end of entry -->
6577 <tr class="entry" id="dynamic_android.control.aeTargetFpsRange">
6578 <td class="entry_name
6580 android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range
6582 <td class="entry_type">
6583 <span class="entry_type_name">int32</span>
6584 <span class="entry_type_container">x</span>
6586 <span class="entry_type_array">
6589 <span class="entry_type_visibility"> [public as rangeInt]</span>
6592 <span class="entry_type_hwlevel">[legacy] </span>
6597 </td> <!-- entry_type -->
6599 <td class="entry_description">
6600 <p>Range over which the auto-exposure routine can
6601 adjust the capture frame rate to maintain good
6605 <td class="entry_units">
6606 Frames per second (FPS)
6609 <td class="entry_range">
6610 <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>
6613 <td class="entry_hal_version">
6617 <td class="entry_tags">
6618 <ul class="entry_tags">
6619 <li><a href="#tag_BC">BC</a></li>
6624 <tr class="entries_header">
6625 <th class="th_details" colspan="6">Details</th>
6627 <tr class="entry_cont">
6628 <td class="entry_details" colspan="6">
6629 <p>Only constrains auto-exposure (AE) algorithm,<wbr/> not
6630 manual control of <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> and
6631 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>.<wbr/></p>
6636 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6637 <!-- end of entry -->
6640 <tr class="entry" id="dynamic_android.control.aePrecaptureTrigger">
6641 <td class="entry_name
6643 android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger
6645 <td class="entry_type">
6646 <span class="entry_type_name entry_type_name_enum">byte</span>
6648 <span class="entry_type_visibility"> [public]</span>
6651 <span class="entry_type_hwlevel">[limited] </span>
6655 <ul class="entry_type_enum">
6657 <span class="entry_type_enum_name">IDLE (v3.2)</span>
6658 <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
6661 <span class="entry_type_enum_name">START (v3.2)</span>
6662 <span class="entry_type_enum_notes"><p>The precapture metering sequence will be started
6663 by the camera device.<wbr/></p>
6664 <p>The exact effect of the precapture trigger depends on
6665 the current AE mode and state.<wbr/></p></span>
6668 <span class="entry_type_enum_name">CANCEL (v3.2)</span>
6669 <span class="entry_type_enum_notes"><p>The camera device will cancel any currently active or completed
6670 precapture metering sequence,<wbr/> the auto-exposure routine will return to its
6671 initial state.<wbr/></p></span>
6675 </td> <!-- entry_type -->
6677 <td class="entry_description">
6678 <p>Whether the camera device will trigger a precapture
6679 metering sequence when it processes this request.<wbr/></p>
6682 <td class="entry_units">
6685 <td class="entry_range">
6688 <td class="entry_hal_version">
6692 <td class="entry_tags">
6693 <ul class="entry_tags">
6694 <li><a href="#tag_BC">BC</a></li>
6699 <tr class="entries_header">
6700 <th class="th_details" colspan="6">Details</th>
6702 <tr class="entry_cont">
6703 <td class="entry_details" colspan="6">
6704 <p>This entry is normally set to IDLE,<wbr/> or is not
6705 included at all in the request settings.<wbr/> When included and
6706 set to START,<wbr/> the camera device will trigger the auto-exposure (AE)
6707 precapture metering sequence.<wbr/></p>
6708 <p>When set to CANCEL,<wbr/> the camera device will cancel any active
6709 precapture metering trigger,<wbr/> and return to its initial AE state.<wbr/>
6710 If a precapture metering sequence is already completed,<wbr/> and the camera
6711 device has implicitly locked the AE for subsequent still capture,<wbr/> the
6712 CANCEL trigger will unlock the AE and return to its initial AE state.<wbr/></p>
6713 <p>The precapture sequence should be triggered before starting a
6714 high-quality still capture for final metering decisions to
6715 be made,<wbr/> and for firing pre-capture flash pulses to estimate
6716 scene brightness and required final capture flash power,<wbr/> when
6717 the flash is enabled.<wbr/></p>
6718 <p>Normally,<wbr/> this entry should be set to START for only a
6719 single request,<wbr/> and the application should wait until the
6720 sequence completes before starting a new one.<wbr/></p>
6721 <p>When a precapture metering sequence is finished,<wbr/> the camera device
6722 may lock the auto-exposure routine internally to be able to accurately expose the
6723 subsequent still capture image (<code><a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE</code>).<wbr/>
6724 For this case,<wbr/> the AE may not resume normal scan if no subsequent still capture is
6725 submitted.<wbr/> To ensure that the AE routine restarts normal scan,<wbr/> the application should
6726 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
6727 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
6728 still capture request after the precapture sequence completes.<wbr/> Alternatively,<wbr/> for
6729 API level 23 or newer devices,<wbr/> the CANCEL can be used to unlock the camera device
6730 internally locked AE if the application doesn't submit a still capture request after
6731 the AE precapture trigger.<wbr/> Note that,<wbr/> the CANCEL was added in API level 23,<wbr/> and must not
6732 be used in devices that have earlier API levels.<wbr/></p>
6733 <p>The exact effect of auto-exposure (AE) precapture trigger
6734 depends on the current AE mode and state; see
6735 <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> for AE precapture state transition
6737 <p>On LEGACY-level devices,<wbr/> the precapture trigger is not supported;
6738 capturing a high-resolution JPEG image will automatically trigger a
6739 precapture sequence before the high-resolution capture,<wbr/> including
6740 potentially firing a pre-capture flash.<wbr/></p>
6741 <p>Using the precapture trigger and the auto-focus trigger <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>
6742 simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between
6743 the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a
6744 focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous
6745 trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and
6746 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
6748 <p>If both the precapture and the auto-focus trigger are activated on the same request,<wbr/> then
6749 the camera device will complete them in the optimal order for that device.<wbr/></p>
6753 <tr class="entries_header">
6754 <th class="th_details" colspan="6">HAL Implementation Details</th>
6756 <tr class="entry_cont">
6757 <td class="entry_details" colspan="6">
6758 <p>The HAL must support triggering the AE precapture trigger while an AF trigger is active
6759 (and vice versa),<wbr/> or at the same time as the AF trigger.<wbr/> It is acceptable for the HAL to
6760 treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the
6761 AE trigger.<wbr/> Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/>
6762 to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p>
6766 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6767 <!-- end of entry -->
6770 <tr class="entry" id="dynamic_android.control.aeState">
6771 <td class="entry_name
6773 android.<wbr/>control.<wbr/>ae<wbr/>State
6775 <td class="entry_type">
6776 <span class="entry_type_name entry_type_name_enum">byte</span>
6778 <span class="entry_type_visibility"> [public]</span>
6781 <span class="entry_type_hwlevel">[limited] </span>
6785 <ul class="entry_type_enum">
6787 <span class="entry_type_enum_name">INACTIVE (v3.2)</span>
6788 <span class="entry_type_enum_notes"><p>AE is off or recently reset.<wbr/></p>
6789 <p>When a camera device is opened,<wbr/> it starts in
6790 this state.<wbr/> This is a transient state,<wbr/> the camera device may skip reporting
6791 this state in capture result.<wbr/></p></span>
6794 <span class="entry_type_enum_name">SEARCHING (v3.2)</span>
6795 <span class="entry_type_enum_notes"><p>AE doesn't yet have a good set of control values
6796 for the current scene.<wbr/></p>
6797 <p>This is a transient state,<wbr/> the camera device may skip
6798 reporting this state in capture result.<wbr/></p></span>
6801 <span class="entry_type_enum_name">CONVERGED (v3.2)</span>
6802 <span class="entry_type_enum_notes"><p>AE has a good set of control values for the
6803 current scene.<wbr/></p></span>
6806 <span class="entry_type_enum_name">LOCKED (v3.2)</span>
6807 <span class="entry_type_enum_notes"><p>AE has been locked.<wbr/></p></span>
6810 <span class="entry_type_enum_name">FLASH_REQUIRED (v3.2)</span>
6811 <span class="entry_type_enum_notes"><p>AE has a good set of control values,<wbr/> but flash
6812 needs to be fired for good quality still
6813 capture.<wbr/></p></span>
6816 <span class="entry_type_enum_name">PRECAPTURE (v3.2)</span>
6817 <span class="entry_type_enum_notes"><p>AE has been asked to do a precapture sequence
6818 and is currently executing it.<wbr/></p>
6819 <p>Precapture can be triggered through setting
6820 <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> to START.<wbr/> Currently
6821 active and completed (if it causes camera device internal AE lock) precapture
6822 metering sequence can be canceled through setting
6823 <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> to CANCEL.<wbr/></p>
6824 <p>Once PRECAPTURE completes,<wbr/> AE will transition to CONVERGED
6825 or FLASH_<wbr/>REQUIRED as appropriate.<wbr/> This is a transient
6826 state,<wbr/> the camera device may skip reporting this state in
6827 capture result.<wbr/></p></span>
6831 </td> <!-- entry_type -->
6833 <td class="entry_description">
6834 <p>Current state of the auto-exposure (AE) algorithm.<wbr/></p>
6837 <td class="entry_units">
6840 <td class="entry_range">
6843 <td class="entry_hal_version">
6847 <td class="entry_tags">
6851 <tr class="entries_header">
6852 <th class="th_details" colspan="6">Details</th>
6854 <tr class="entry_cont">
6855 <td class="entry_details" colspan="6">
6856 <p>Switching between or enabling AE modes (<a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>) always
6857 resets the AE state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/>
6858 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
6859 the algorithm states to INACTIVE.<wbr/></p>
6860 <p>The camera device can do several state transitions between two results,<wbr/> if it is
6861 allowed by the state transition table.<wbr/> For example: INACTIVE may never actually be
6862 seen in a result.<wbr/></p>
6863 <p>The state in the result is the state for this image (in sync with this image): if
6864 AE state becomes CONVERGED,<wbr/> then the image data associated with this result should
6865 be good to use.<wbr/></p>
6866 <p>Below are state transition tables for different AE modes.<wbr/></p>
6870 <th align="center">State</th>
6871 <th align="center">Transition Cause</th>
6872 <th align="center">New State</th>
6873 <th align="center">Notes</th>
6878 <td align="center">INACTIVE</td>
6879 <td align="center"></td>
6880 <td align="center">INACTIVE</td>
6881 <td align="center">Camera device auto exposure algorithm is disabled</td>
6885 <p>When <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is AE_<wbr/>MODE_<wbr/>ON*:</p>
6889 <th align="center">State</th>
6890 <th align="center">Transition Cause</th>
6891 <th align="center">New State</th>
6892 <th align="center">Notes</th>
6897 <td align="center">INACTIVE</td>
6898 <td align="center">Camera device initiates AE scan</td>
6899 <td align="center">SEARCHING</td>
6900 <td align="center">Values changing</td>
6903 <td align="center">INACTIVE</td>
6904 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
6905 <td align="center">LOCKED</td>
6906 <td align="center">Values locked</td>
6909 <td align="center">SEARCHING</td>
6910 <td align="center">Camera device finishes AE scan</td>
6911 <td align="center">CONVERGED</td>
6912 <td align="center">Good values,<wbr/> not changing</td>
6915 <td align="center">SEARCHING</td>
6916 <td align="center">Camera device finishes AE scan</td>
6917 <td align="center">FLASH_<wbr/>REQUIRED</td>
6918 <td align="center">Converged but too dark w/<wbr/>o flash</td>
6921 <td align="center">SEARCHING</td>
6922 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
6923 <td align="center">LOCKED</td>
6924 <td align="center">Values locked</td>
6927 <td align="center">CONVERGED</td>
6928 <td align="center">Camera device initiates AE scan</td>
6929 <td align="center">SEARCHING</td>
6930 <td align="center">Values changing</td>
6933 <td align="center">CONVERGED</td>
6934 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
6935 <td align="center">LOCKED</td>
6936 <td align="center">Values locked</td>
6939 <td align="center">FLASH_<wbr/>REQUIRED</td>
6940 <td align="center">Camera device initiates AE scan</td>
6941 <td align="center">SEARCHING</td>
6942 <td align="center">Values changing</td>
6945 <td align="center">FLASH_<wbr/>REQUIRED</td>
6946 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
6947 <td align="center">LOCKED</td>
6948 <td align="center">Values locked</td>
6951 <td align="center">LOCKED</td>
6952 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td>
6953 <td align="center">SEARCHING</td>
6954 <td align="center">Values not good after unlock</td>
6957 <td align="center">LOCKED</td>
6958 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td>
6959 <td align="center">CONVERGED</td>
6960 <td align="center">Values good after unlock</td>
6963 <td align="center">LOCKED</td>
6964 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td>
6965 <td align="center">FLASH_<wbr/>REQUIRED</td>
6966 <td align="center">Exposure good,<wbr/> but too dark</td>
6969 <td align="center">PRECAPTURE</td>
6970 <td align="center">Sequence done.<wbr/> <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td>
6971 <td align="center">CONVERGED</td>
6972 <td align="center">Ready for high-quality capture</td>
6975 <td align="center">PRECAPTURE</td>
6976 <td align="center">Sequence done.<wbr/> <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
6977 <td align="center">LOCKED</td>
6978 <td align="center">Ready for high-quality capture</td>
6981 <td align="center">LOCKED</td>
6982 <td align="center">aeLock is ON and aePrecaptureTrigger is START</td>
6983 <td align="center">LOCKED</td>
6984 <td align="center">Precapture trigger is ignored when AE is already locked</td>
6987 <td align="center">LOCKED</td>
6988 <td align="center">aeLock is ON and aePrecaptureTrigger is CANCEL</td>
6989 <td align="center">LOCKED</td>
6990 <td align="center">Precapture trigger is ignored when AE is already locked</td>
6993 <td align="center">Any state (excluding LOCKED)</td>
6994 <td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is START</td>
6995 <td align="center">PRECAPTURE</td>
6996 <td align="center">Start AE precapture metering sequence</td>
6999 <td align="center">Any state (excluding LOCKED)</td>
7000 <td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL</td>
7001 <td align="center">INACTIVE</td>
7002 <td align="center">Currently active precapture metering sequence is canceled</td>
7006 <p>If the camera device supports AE external flash mode (ON_<wbr/>EXTERNAL_<wbr/>FLASH is included in
7007 <a href="#static_android.control.aeAvailableModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes</a>),<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> must be FLASH_<wbr/>REQUIRED after
7008 the camera device finishes AE scan and it's too dark without flash.<wbr/></p>
7009 <p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen
7010 without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that
7011 can be skipped in that manner is called a transient state.<wbr/></p>
7012 <p>For example,<wbr/> for above AE modes (AE_<wbr/>MODE_<wbr/>ON*),<wbr/> in addition to the state transitions
7013 listed in above table,<wbr/> it is also legal for the camera device to skip one or more
7014 transient states between two results.<wbr/> See below table for examples:</p>
7018 <th align="center">State</th>
7019 <th align="center">Transition Cause</th>
7020 <th align="center">New State</th>
7021 <th align="center">Notes</th>
7026 <td align="center">INACTIVE</td>
7027 <td align="center">Camera device finished AE scan</td>
7028 <td align="center">CONVERGED</td>
7029 <td align="center">Values are already good,<wbr/> transient states are skipped by camera device.<wbr/></td>
7032 <td align="center">Any state (excluding LOCKED)</td>
7033 <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>
7034 <td align="center">FLASH_<wbr/>REQUIRED</td>
7035 <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>
7038 <td align="center">Any state (excluding LOCKED)</td>
7039 <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>
7040 <td align="center">CONVERGED</td>
7041 <td align="center">Converged after a precapture sequence,<wbr/> transient states are skipped by camera device.<wbr/></td>
7044 <td align="center">Any state (excluding LOCKED)</td>
7045 <td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL,<wbr/> converged</td>
7046 <td align="center">FLASH_<wbr/>REQUIRED</td>
7047 <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>
7050 <td align="center">Any state (excluding LOCKED)</td>
7051 <td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL,<wbr/> converged</td>
7052 <td align="center">CONVERGED</td>
7053 <td align="center">Converged after a precapture sequenceis canceled,<wbr/> transient states are skipped by camera device.<wbr/></td>
7056 <td align="center">CONVERGED</td>
7057 <td align="center">Camera device finished AE scan</td>
7058 <td align="center">FLASH_<wbr/>REQUIRED</td>
7059 <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>
7062 <td align="center">FLASH_<wbr/>REQUIRED</td>
7063 <td align="center">Camera device finished AE scan</td>
7064 <td align="center">CONVERGED</td>
7065 <td align="center">Converged after a new scan,<wbr/> transient states are skipped by camera device.<wbr/></td>
7073 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
7074 <!-- end of entry -->
7077 <tr class="entry" id="dynamic_android.control.afMode">
7078 <td class="entry_name
7080 android.<wbr/>control.<wbr/>af<wbr/>Mode
7082 <td class="entry_type">
7083 <span class="entry_type_name entry_type_name_enum">byte</span>
7085 <span class="entry_type_visibility"> [public]</span>
7088 <span class="entry_type_hwlevel">[legacy] </span>
7092 <ul class="entry_type_enum">
7094 <span class="entry_type_enum_name">OFF (v3.2)</span>
7095 <span class="entry_type_enum_notes"><p>The auto-focus routine does not control the lens;
7096 <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> is controlled by the
7097 application.<wbr/></p></span>
7100 <span class="entry_type_enum_name">AUTO (v3.2)</span>
7101 <span class="entry_type_enum_notes"><p>Basic automatic focus mode.<wbr/></p>
7102 <p>In this mode,<wbr/> the lens does not move unless
7103 the autofocus trigger action is called.<wbr/> When that trigger
7104 is activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
7105 the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/></p>
7106 <p>Always supported if lens is not fixed focus.<wbr/></p>
7107 <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
7108 is fixed-focus.<wbr/></p>
7109 <p>Triggering AF_<wbr/>CANCEL resets the lens position to default,<wbr/>
7110 and sets the AF state to INACTIVE.<wbr/></p></span>
7113 <span class="entry_type_enum_name">MACRO (v3.2)</span>
7114 <span class="entry_type_enum_notes"><p>Close-up focusing mode.<wbr/></p>
7115 <p>In this mode,<wbr/> the lens does not move unless the
7116 autofocus trigger action is called.<wbr/> When that trigger is
7117 activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
7118 the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/> This
7119 mode is optimized for focusing on objects very close to
7120 the camera.<wbr/></p>
7121 <p>When that trigger is activated,<wbr/> AF will transition to
7122 ACTIVE_<wbr/>SCAN,<wbr/> then to the outcome of the scan (FOCUSED or
7123 NOT_<wbr/>FOCUSED).<wbr/> Triggering cancel AF resets the lens
7124 position to default,<wbr/> and sets the AF state to
7125 INACTIVE.<wbr/></p></span>
7128 <span class="entry_type_enum_name">CONTINUOUS_VIDEO (v3.2)</span>
7129 <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
7130 position continually to attempt to provide a
7131 constantly-in-focus image stream.<wbr/></p>
7132 <p>The focusing behavior should be suitable for good quality
7133 video recording; typically this means slower focus
7134 movement and no overshoots.<wbr/> When the AF trigger is not
7135 involved,<wbr/> the AF algorithm should start in INACTIVE state,<wbr/>
7136 and then transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED
7137 states as appropriate.<wbr/> When the AF trigger is activated,<wbr/>
7138 the algorithm should immediately transition into
7139 AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the
7140 lens position until a cancel AF trigger is received.<wbr/></p>
7141 <p>Once cancel is received,<wbr/> the algorithm should transition
7142 back to INACTIVE and resume passive scan.<wbr/> Note that this
7143 behavior is not identical to CONTINUOUS_<wbr/>PICTURE,<wbr/> since an
7144 ongoing PASSIVE_<wbr/>SCAN must immediately be
7145 canceled.<wbr/></p></span>
7148 <span class="entry_type_enum_name">CONTINUOUS_PICTURE (v3.2)</span>
7149 <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
7150 position continually to attempt to provide a
7151 constantly-in-focus image stream.<wbr/></p>
7152 <p>The focusing behavior should be suitable for still image
7153 capture; typically this means focusing as fast as
7154 possible.<wbr/> When the AF trigger is not involved,<wbr/> the AF
7155 algorithm should start in INACTIVE state,<wbr/> and then
7156 transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED states as
7157 appropriate as it attempts to maintain focus.<wbr/> When the AF
7158 trigger is activated,<wbr/> the algorithm should finish its
7159 PASSIVE_<wbr/>SCAN if active,<wbr/> and then transition into
7160 AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the
7161 lens position until a cancel AF trigger is received.<wbr/></p>
7162 <p>When the AF cancel trigger is activated,<wbr/> the algorithm
7163 should transition back to INACTIVE and then act as if it
7164 has just been started.<wbr/></p></span>
7167 <span class="entry_type_enum_name">EDOF (v3.2)</span>
7168 <span class="entry_type_enum_notes"><p>Extended depth of field (digital focus) mode.<wbr/></p>
7169 <p>The camera device will produce images with an extended
7170 depth of field automatically; no special focusing
7171 operations need to be done before taking a picture.<wbr/></p>
7172 <p>AF triggers are ignored,<wbr/> and the AF state will always be
7173 INACTIVE.<wbr/></p></span>
7177 </td> <!-- entry_type -->
7179 <td class="entry_description">
7180 <p>Whether auto-focus (AF) is currently enabled,<wbr/> and what
7181 mode it is set to.<wbr/></p>
7184 <td class="entry_units">
7187 <td class="entry_range">
7188 <p><a href="#static_android.control.afAvailableModes">android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes</a></p>
7191 <td class="entry_hal_version">
7195 <td class="entry_tags">
7196 <ul class="entry_tags">
7197 <li><a href="#tag_BC">BC</a></li>
7202 <tr class="entries_header">
7203 <th class="th_details" colspan="6">Details</th>
7205 <tr class="entry_cont">
7206 <td class="entry_details" colspan="6">
7207 <p>Only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> = AUTO and the lens is not fixed focus
7208 (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
7209 when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> the behavior of AF is device
7210 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
7211 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>
7212 <p>If the lens is controlled by the camera device auto-focus algorithm,<wbr/>
7213 the camera device will report the current AF status in <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>
7214 in result metadata.<wbr/></p>
7218 <tr class="entries_header">
7219 <th class="th_details" colspan="6">HAL Implementation Details</th>
7221 <tr class="entry_cont">
7222 <td class="entry_details" colspan="6">
7223 <p>When afMode is AUTO or MACRO,<wbr/> the lens must not move until an AF trigger is sent in a
7224 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
7225 up with either FOCUSED_<wbr/>LOCKED or NOT_<wbr/>FOCUSED_<wbr/>LOCKED state (see
7226 <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
7227 locked and will not move.<wbr/> If camera movement (e.<wbr/>g.<wbr/> tilting camera) causes the lens to move
7228 after the lens is locked,<wbr/> the HAL must compensate this movement appropriately such that
7229 the same focal plane remains in focus.<wbr/></p>
7230 <p>When afMode is one of the continuous auto focus modes,<wbr/> the HAL is free to start a AF
7231 scan whenever it's not locked.<wbr/> When the lens is locked after an AF trigger
7232 (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
7233 same lock behavior as above.<wbr/></p>
7234 <p>When afMode is OFF,<wbr/> the application controls focus manually.<wbr/> The accuracy of the
7235 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/>
7236 However,<wbr/> the lens must not move regardless of the camera movement for any focus distance
7237 manual control.<wbr/></p>
7238 <p>To put this in concrete terms,<wbr/> if the camera has lens elements which may move based on
7239 camera orientation or motion (e.<wbr/>g.<wbr/> due to gravity),<wbr/> then the HAL must drive the lens to
7240 remain in a fixed position invariant to the camera's orientation or motion,<wbr/> for example,<wbr/>
7241 by using accelerometer measurements in the lens control logic.<wbr/> This is a typical issue
7242 that will arise on camera modules with open-loop VCMs.<wbr/></p>
7246 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
7247 <!-- end of entry -->
7250 <tr class="entry" id="dynamic_android.control.afRegions">
7251 <td class="entry_name
7253 android.<wbr/>control.<wbr/>af<wbr/>Regions
7255 <td class="entry_type">
7256 <span class="entry_type_name">int32</span>
7257 <span class="entry_type_container">x</span>
7259 <span class="entry_type_array">
7262 <span class="entry_type_visibility"> [public as meteringRectangle]</span>
7269 </td> <!-- entry_type -->
7271 <td class="entry_description">
7272 <p>List of metering areas to use for auto-focus.<wbr/></p>
7275 <td class="entry_units">
7276 Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
7279 <td class="entry_range">
7280 <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
7281 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
7284 <td class="entry_hal_version">
7288 <td class="entry_tags">
7289 <ul class="entry_tags">
7290 <li><a href="#tag_BC">BC</a></li>
7295 <tr class="entries_header">
7296 <th class="th_details" colspan="6">Details</th>
7298 <tr class="entry_cont">
7299 <td class="entry_details" colspan="6">
7300 <p>Not available if <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a> is 0.<wbr/>
7301 Otherwise will always be present.<wbr/></p>
7302 <p>The maximum number of focus areas supported by the device is determined by the value
7303 of <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a>.<wbr/></p>
7304 <p>The coordinate system is based on the active pixel array,<wbr/>
7305 with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
7306 (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
7307 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
7308 bottom-right pixel in the active pixel array.<wbr/></p>
7309 <p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight
7310 for every pixel in the area.<wbr/> This means that a large metering area
7311 with the same weight as a smaller area will have more effect in
7312 the metering result.<wbr/> Metering areas can partially overlap and the
7313 camera device will add the weights in the overlap region.<wbr/></p>
7314 <p>The weights are relative to weights of other metering regions,<wbr/> so if only one region
7315 is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0 weight is
7317 <p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
7318 camera device.<wbr/> The capture result will either be a zero weight region as well,<wbr/> or
7319 the region selected by the camera device as the focus area of interest.<wbr/></p>
7320 <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
7321 capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
7322 region and output only the intersection rectangle as the metering region in the result
7323 metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and
7324 not reported in the result metadata.<wbr/></p>
7328 <tr class="entries_header">
7329 <th class="th_details" colspan="6">HAL Implementation Details</th>
7331 <tr class="entry_cont">
7332 <td class="entry_details" colspan="6">
7333 <p>The HAL level representation of MeteringRectangle[] is a
7334 int[5 * area_<wbr/>count].<wbr/>
7335 Every five elements represent a metering region of
7336 (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
7337 The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
7338 exclusive on xmax and ymax.<wbr/></p>
7342 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
7343 <!-- end of entry -->
7346 <tr class="entry" id="dynamic_android.control.afTrigger">
7347 <td class="entry_name
7349 android.<wbr/>control.<wbr/>af<wbr/>Trigger
7351 <td class="entry_type">
7352 <span class="entry_type_name entry_type_name_enum">byte</span>
7354 <span class="entry_type_visibility"> [public]</span>
7357 <span class="entry_type_hwlevel">[legacy] </span>
7361 <ul class="entry_type_enum">
7363 <span class="entry_type_enum_name">IDLE (v3.2)</span>
7364 <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
7367 <span class="entry_type_enum_name">START (v3.2)</span>
7368 <span class="entry_type_enum_notes"><p>Autofocus will trigger now.<wbr/></p></span>
7371 <span class="entry_type_enum_name">CANCEL (v3.2)</span>
7372 <span class="entry_type_enum_notes"><p>Autofocus will return to its initial
7373 state,<wbr/> and cancel any currently active trigger.<wbr/></p></span>
7377 </td> <!-- entry_type -->
7379 <td class="entry_description">
7380 <p>Whether the camera device will trigger autofocus for this request.<wbr/></p>
7383 <td class="entry_units">
7386 <td class="entry_range">
7389 <td class="entry_hal_version">
7393 <td class="entry_tags">
7394 <ul class="entry_tags">
7395 <li><a href="#tag_BC">BC</a></li>
7400 <tr class="entries_header">
7401 <th class="th_details" colspan="6">Details</th>
7403 <tr class="entry_cont">
7404 <td class="entry_details" colspan="6">
7405 <p>This entry is normally set to IDLE,<wbr/> or is not
7406 included at all in the request settings.<wbr/></p>
7407 <p>When included and set to START,<wbr/> the camera device will trigger the
7408 autofocus algorithm.<wbr/> If autofocus is disabled,<wbr/> this trigger has no effect.<wbr/></p>
7409 <p>When set to CANCEL,<wbr/> the camera device will cancel any active trigger,<wbr/>
7410 and return to its initial AF state.<wbr/></p>
7411 <p>Generally,<wbr/> applications should set this entry to START or CANCEL for only a
7412 single capture,<wbr/> and then return it to IDLE (or not set at all).<wbr/> Specifying
7413 START for multiple captures in a row means restarting the AF operation over
7414 and over again.<wbr/></p>
7415 <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>
7416 <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>
7417 simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between
7418 the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a
7419 focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous
7420 trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and
7421 changes to <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>,<wbr/> for example.<wbr/></p>
7425 <tr class="entries_header">
7426 <th class="th_details" colspan="6">HAL Implementation Details</th>
7428 <tr class="entry_cont">
7429 <td class="entry_details" colspan="6">
7430 <p>The HAL must support triggering the AF trigger while an AE precapture trigger is active
7431 (and vice versa),<wbr/> or at the same time as the AE trigger.<wbr/> It is acceptable for the HAL to
7432 treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the
7433 AE trigger.<wbr/> Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/>
7434 to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p>
7438 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
7439 <!-- end of entry -->
7442 <tr class="entry" id="dynamic_android.control.afState">
7443 <td class="entry_name
7445 android.<wbr/>control.<wbr/>af<wbr/>State
7447 <td class="entry_type">
7448 <span class="entry_type_name entry_type_name_enum">byte</span>
7450 <span class="entry_type_visibility"> [public]</span>
7453 <span class="entry_type_hwlevel">[legacy] </span>
7457 <ul class="entry_type_enum">
7459 <span class="entry_type_enum_name">INACTIVE (v3.2)</span>
7460 <span class="entry_type_enum_notes"><p>AF is off or has not yet tried to scan/<wbr/>been asked
7462 <p>When a camera device is opened,<wbr/> it starts in this
7463 state.<wbr/> This is a transient state,<wbr/> the camera device may
7464 skip reporting this state in capture
7465 result.<wbr/></p></span>
7468 <span class="entry_type_enum_name">PASSIVE_SCAN (v3.2)</span>
7469 <span class="entry_type_enum_notes"><p>AF is currently performing an AF scan initiated the
7470 camera device in a continuous autofocus mode.<wbr/></p>
7471 <p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient
7472 state,<wbr/> the camera device may skip reporting this state in
7473 capture result.<wbr/></p></span>
7476 <span class="entry_type_enum_name">PASSIVE_FOCUSED (v3.2)</span>
7477 <span class="entry_type_enum_notes"><p>AF currently believes it is in focus,<wbr/> but may
7478 restart scanning at any time.<wbr/></p>
7479 <p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient
7480 state,<wbr/> the camera device may skip reporting this state in
7481 capture result.<wbr/></p></span>
7484 <span class="entry_type_enum_name">ACTIVE_SCAN (v3.2)</span>
7485 <span class="entry_type_enum_notes"><p>AF is performing an AF scan because it was
7486 triggered by AF trigger.<wbr/></p>
7487 <p>Only used by AUTO or MACRO AF modes.<wbr/> This is a transient
7488 state,<wbr/> the camera device may skip reporting this state in
7489 capture result.<wbr/></p></span>
7492 <span class="entry_type_enum_name">FOCUSED_LOCKED (v3.2)</span>
7493 <span class="entry_type_enum_notes"><p>AF believes it is focused correctly and has locked
7495 <p>This state is reached only after an explicit START AF trigger has been
7496 sent (<a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>),<wbr/> when good focus has been obtained.<wbr/></p>
7497 <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
7498 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>
7501 <span class="entry_type_enum_name">NOT_FOCUSED_LOCKED (v3.2)</span>
7502 <span class="entry_type_enum_notes"><p>AF has failed to focus successfully and has locked
7504 <p>This state is reached only after an explicit START AF trigger has been
7505 sent (<a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>),<wbr/> when good focus cannot be obtained.<wbr/></p>
7506 <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
7507 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>
7510 <span class="entry_type_enum_name">PASSIVE_UNFOCUSED (v3.2)</span>
7511 <span class="entry_type_enum_notes"><p>AF finished a passive scan without finding focus,<wbr/>
7512 and may restart scanning at any time.<wbr/></p>
7513 <p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient state,<wbr/> the camera
7514 device may skip reporting this state in capture result.<wbr/></p>
7515 <p>LEGACY camera devices do not support this state.<wbr/> When a passive
7516 scan has finished,<wbr/> it will always go to PASSIVE_<wbr/>FOCUSED.<wbr/></p></span>
7520 </td> <!-- entry_type -->
7522 <td class="entry_description">
7523 <p>Current state of auto-focus (AF) algorithm.<wbr/></p>
7526 <td class="entry_units">
7529 <td class="entry_range">
7532 <td class="entry_hal_version">
7536 <td class="entry_tags">
7540 <tr class="entries_header">
7541 <th class="th_details" colspan="6">Details</th>
7543 <tr class="entry_cont">
7544 <td class="entry_details" colspan="6">
7545 <p>Switching between or enabling AF modes (<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>) always
7546 resets the AF state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/>
7547 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
7548 the algorithm states to INACTIVE.<wbr/></p>
7549 <p>The camera device can do several state transitions between two results,<wbr/> if it is
7550 allowed by the state transition table.<wbr/> For example: INACTIVE may never actually be
7551 seen in a result.<wbr/></p>
7552 <p>The state in the result is the state for this image (in sync with this image): if
7553 AF state becomes FOCUSED,<wbr/> then the image data associated with this result should
7555 <p>Below are state transition tables for different AF modes.<wbr/></p>
7556 <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>
7560 <th align="center">State</th>
7561 <th align="center">Transition Cause</th>
7562 <th align="center">New State</th>
7563 <th align="center">Notes</th>
7568 <td align="center">INACTIVE</td>
7569 <td align="center"></td>
7570 <td align="center">INACTIVE</td>
7571 <td align="center">Never changes</td>
7575 <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>
7579 <th align="center">State</th>
7580 <th align="center">Transition Cause</th>
7581 <th align="center">New State</th>
7582 <th align="center">Notes</th>
7587 <td align="center">INACTIVE</td>
7588 <td align="center">AF_<wbr/>TRIGGER</td>
7589 <td align="center">ACTIVE_<wbr/>SCAN</td>
7590 <td align="center">Start AF sweep,<wbr/> Lens now moving</td>
7593 <td align="center">ACTIVE_<wbr/>SCAN</td>
7594 <td align="center">AF sweep done</td>
7595 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7596 <td align="center">Focused,<wbr/> Lens now locked</td>
7599 <td align="center">ACTIVE_<wbr/>SCAN</td>
7600 <td align="center">AF sweep done</td>
7601 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7602 <td align="center">Not focused,<wbr/> Lens now locked</td>
7605 <td align="center">ACTIVE_<wbr/>SCAN</td>
7606 <td align="center">AF_<wbr/>CANCEL</td>
7607 <td align="center">INACTIVE</td>
7608 <td align="center">Cancel/<wbr/>reset AF,<wbr/> Lens now locked</td>
7611 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7612 <td align="center">AF_<wbr/>CANCEL</td>
7613 <td align="center">INACTIVE</td>
7614 <td align="center">Cancel/<wbr/>reset AF</td>
7617 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7618 <td align="center">AF_<wbr/>TRIGGER</td>
7619 <td align="center">ACTIVE_<wbr/>SCAN</td>
7620 <td align="center">Start new sweep,<wbr/> Lens now moving</td>
7623 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7624 <td align="center">AF_<wbr/>CANCEL</td>
7625 <td align="center">INACTIVE</td>
7626 <td align="center">Cancel/<wbr/>reset AF</td>
7629 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7630 <td align="center">AF_<wbr/>TRIGGER</td>
7631 <td align="center">ACTIVE_<wbr/>SCAN</td>
7632 <td align="center">Start new sweep,<wbr/> Lens now moving</td>
7635 <td align="center">Any state</td>
7636 <td align="center">Mode change</td>
7637 <td align="center">INACTIVE</td>
7638 <td align="center"></td>
7642 <p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen
7643 without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that
7644 can be skipped in that manner is called a transient state.<wbr/></p>
7645 <p>For example,<wbr/> for these AF modes (AF_<wbr/>MODE_<wbr/>AUTO and AF_<wbr/>MODE_<wbr/>MACRO),<wbr/> in addition to the
7646 state transitions listed in above table,<wbr/> it is also legal for the camera device to skip
7647 one or more transient states between two results.<wbr/> See below table for examples:</p>
7651 <th align="center">State</th>
7652 <th align="center">Transition Cause</th>
7653 <th align="center">New State</th>
7654 <th align="center">Notes</th>
7659 <td align="center">INACTIVE</td>
7660 <td align="center">AF_<wbr/>TRIGGER</td>
7661 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7662 <td align="center">Focus is already good or good after a scan,<wbr/> lens is now locked.<wbr/></td>
7665 <td align="center">INACTIVE</td>
7666 <td align="center">AF_<wbr/>TRIGGER</td>
7667 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7668 <td align="center">Focus failed after a scan,<wbr/> lens is now locked.<wbr/></td>
7671 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7672 <td align="center">AF_<wbr/>TRIGGER</td>
7673 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7674 <td align="center">Focus is already good or good after a scan,<wbr/> lens is now locked.<wbr/></td>
7677 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7678 <td align="center">AF_<wbr/>TRIGGER</td>
7679 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7680 <td align="center">Focus is good after a scan,<wbr/> lens is not locked.<wbr/></td>
7684 <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>
7688 <th align="center">State</th>
7689 <th align="center">Transition Cause</th>
7690 <th align="center">New State</th>
7691 <th align="center">Notes</th>
7696 <td align="center">INACTIVE</td>
7697 <td align="center">Camera device initiates new scan</td>
7698 <td align="center">PASSIVE_<wbr/>SCAN</td>
7699 <td align="center">Start AF scan,<wbr/> Lens now moving</td>
7702 <td align="center">INACTIVE</td>
7703 <td align="center">AF_<wbr/>TRIGGER</td>
7704 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7705 <td align="center">AF state query,<wbr/> Lens now locked</td>
7708 <td align="center">PASSIVE_<wbr/>SCAN</td>
7709 <td align="center">Camera device completes current scan</td>
7710 <td align="center">PASSIVE_<wbr/>FOCUSED</td>
7711 <td align="center">End AF scan,<wbr/> Lens now locked</td>
7714 <td align="center">PASSIVE_<wbr/>SCAN</td>
7715 <td align="center">Camera device fails current scan</td>
7716 <td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7717 <td align="center">End AF scan,<wbr/> Lens now locked</td>
7720 <td align="center">PASSIVE_<wbr/>SCAN</td>
7721 <td align="center">AF_<wbr/>TRIGGER</td>
7722 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7723 <td align="center">Immediate transition,<wbr/> if focus is good.<wbr/> Lens now locked</td>
7726 <td align="center">PASSIVE_<wbr/>SCAN</td>
7727 <td align="center">AF_<wbr/>TRIGGER</td>
7728 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7729 <td align="center">Immediate transition,<wbr/> if focus is bad.<wbr/> Lens now locked</td>
7732 <td align="center">PASSIVE_<wbr/>SCAN</td>
7733 <td align="center">AF_<wbr/>CANCEL</td>
7734 <td align="center">INACTIVE</td>
7735 <td align="center">Reset lens position,<wbr/> Lens now locked</td>
7738 <td align="center">PASSIVE_<wbr/>FOCUSED</td>
7739 <td align="center">Camera device initiates new scan</td>
7740 <td align="center">PASSIVE_<wbr/>SCAN</td>
7741 <td align="center">Start AF scan,<wbr/> Lens now moving</td>
7744 <td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7745 <td align="center">Camera device initiates new scan</td>
7746 <td align="center">PASSIVE_<wbr/>SCAN</td>
7747 <td align="center">Start AF scan,<wbr/> Lens now moving</td>
7750 <td align="center">PASSIVE_<wbr/>FOCUSED</td>
7751 <td align="center">AF_<wbr/>TRIGGER</td>
7752 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7753 <td align="center">Immediate transition,<wbr/> lens now locked</td>
7756 <td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7757 <td align="center">AF_<wbr/>TRIGGER</td>
7758 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7759 <td align="center">Immediate transition,<wbr/> lens now locked</td>
7762 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7763 <td align="center">AF_<wbr/>TRIGGER</td>
7764 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7765 <td align="center">No effect</td>
7768 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7769 <td align="center">AF_<wbr/>CANCEL</td>
7770 <td align="center">INACTIVE</td>
7771 <td align="center">Restart AF scan</td>
7774 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7775 <td align="center">AF_<wbr/>TRIGGER</td>
7776 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7777 <td align="center">No effect</td>
7780 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7781 <td align="center">AF_<wbr/>CANCEL</td>
7782 <td align="center">INACTIVE</td>
7783 <td align="center">Restart AF scan</td>
7787 <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>
7791 <th align="center">State</th>
7792 <th align="center">Transition Cause</th>
7793 <th align="center">New State</th>
7794 <th align="center">Notes</th>
7799 <td align="center">INACTIVE</td>
7800 <td align="center">Camera device initiates new scan</td>
7801 <td align="center">PASSIVE_<wbr/>SCAN</td>
7802 <td align="center">Start AF scan,<wbr/> Lens now moving</td>
7805 <td align="center">INACTIVE</td>
7806 <td align="center">AF_<wbr/>TRIGGER</td>
7807 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7808 <td align="center">AF state query,<wbr/> Lens now locked</td>
7811 <td align="center">PASSIVE_<wbr/>SCAN</td>
7812 <td align="center">Camera device completes current scan</td>
7813 <td align="center">PASSIVE_<wbr/>FOCUSED</td>
7814 <td align="center">End AF scan,<wbr/> Lens now locked</td>
7817 <td align="center">PASSIVE_<wbr/>SCAN</td>
7818 <td align="center">Camera device fails current scan</td>
7819 <td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7820 <td align="center">End AF scan,<wbr/> Lens now locked</td>
7823 <td align="center">PASSIVE_<wbr/>SCAN</td>
7824 <td align="center">AF_<wbr/>TRIGGER</td>
7825 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7826 <td align="center">Eventual transition once the focus is good.<wbr/> Lens now locked</td>
7829 <td align="center">PASSIVE_<wbr/>SCAN</td>
7830 <td align="center">AF_<wbr/>TRIGGER</td>
7831 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7832 <td align="center">Eventual transition if cannot find focus.<wbr/> Lens now locked</td>
7835 <td align="center">PASSIVE_<wbr/>SCAN</td>
7836 <td align="center">AF_<wbr/>CANCEL</td>
7837 <td align="center">INACTIVE</td>
7838 <td align="center">Reset lens position,<wbr/> Lens now locked</td>
7841 <td align="center">PASSIVE_<wbr/>FOCUSED</td>
7842 <td align="center">Camera device initiates new scan</td>
7843 <td align="center">PASSIVE_<wbr/>SCAN</td>
7844 <td align="center">Start AF scan,<wbr/> Lens now moving</td>
7847 <td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7848 <td align="center">Camera device initiates new scan</td>
7849 <td align="center">PASSIVE_<wbr/>SCAN</td>
7850 <td align="center">Start AF scan,<wbr/> Lens now moving</td>
7853 <td align="center">PASSIVE_<wbr/>FOCUSED</td>
7854 <td align="center">AF_<wbr/>TRIGGER</td>
7855 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7856 <td align="center">Immediate trans.<wbr/> Lens now locked</td>
7859 <td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7860 <td align="center">AF_<wbr/>TRIGGER</td>
7861 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7862 <td align="center">Immediate trans.<wbr/> Lens now locked</td>
7865 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7866 <td align="center">AF_<wbr/>TRIGGER</td>
7867 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7868 <td align="center">No effect</td>
7871 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7872 <td align="center">AF_<wbr/>CANCEL</td>
7873 <td align="center">INACTIVE</td>
7874 <td align="center">Restart AF scan</td>
7877 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7878 <td align="center">AF_<wbr/>TRIGGER</td>
7879 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7880 <td align="center">No effect</td>
7883 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7884 <td align="center">AF_<wbr/>CANCEL</td>
7885 <td align="center">INACTIVE</td>
7886 <td align="center">Restart AF scan</td>
7890 <p>When switch between AF_<wbr/>MODE_<wbr/>CONTINUOUS_<wbr/>* (CAF modes) and AF_<wbr/>MODE_<wbr/>AUTO/<wbr/>AF_<wbr/>MODE_<wbr/>MACRO
7891 (AUTO modes),<wbr/> the initial INACTIVE or PASSIVE_<wbr/>SCAN states may be skipped by the
7892 camera device.<wbr/> When a trigger is included in a mode switch request,<wbr/> the trigger
7893 will be evaluated in the context of the new mode in the request.<wbr/>
7894 See below table for examples:</p>
7898 <th align="center">State</th>
7899 <th align="center">Transition Cause</th>
7900 <th align="center">New State</th>
7901 <th align="center">Notes</th>
7906 <td align="center">any state</td>
7907 <td align="center">CAF-->AUTO mode switch</td>
7908 <td align="center">INACTIVE</td>
7909 <td align="center">Mode switch without trigger,<wbr/> initial state must be INACTIVE</td>
7912 <td align="center">any state</td>
7913 <td align="center">CAF-->AUTO mode switch with AF_<wbr/>TRIGGER</td>
7914 <td align="center">trigger-reachable states from INACTIVE</td>
7915 <td align="center">Mode switch with trigger,<wbr/> INACTIVE is skipped</td>
7918 <td align="center">any state</td>
7919 <td align="center">AUTO-->CAF mode switch</td>
7920 <td align="center">passively reachable states from INACTIVE</td>
7921 <td align="center">Mode switch without trigger,<wbr/> passive transient state is skipped</td>
7929 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
7930 <!-- end of entry -->
7933 <tr class="entry" id="dynamic_android.control.afTriggerId">
7934 <td class="entry_name
7935 entry_name_deprecated
7937 android.<wbr/>control.<wbr/>af<wbr/>Trigger<wbr/>Id
7939 <td class="entry_type">
7940 <span class="entry_type_name">int32</span>
7942 <span class="entry_type_visibility"> [system]</span>
7946 <span class="entry_type_deprecated">[deprecated] </span>
7950 </td> <!-- entry_type -->
7952 <td class="entry_description">
7953 <p>The ID sent with the latest
7954 CAMERA2_<wbr/>TRIGGER_<wbr/>AUTOFOCUS call</p>
7957 <td class="entry_units">
7960 <td class="entry_range">
7961 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
7964 <td class="entry_hal_version">
7968 <td class="entry_tags">
7972 <tr class="entries_header">
7973 <th class="th_details" colspan="6">Details</th>
7975 <tr class="entry_cont">
7976 <td class="entry_details" colspan="6">
7977 <p>Must be 0 if no CAMERA2_<wbr/>TRIGGER_<wbr/>AUTOFOCUS trigger
7978 received yet by HAL.<wbr/> Always updated even if AF algorithm
7979 ignores the trigger</p>
7984 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
7985 <!-- end of entry -->
7988 <tr class="entry" id="dynamic_android.control.awbLock">
7989 <td class="entry_name
7991 android.<wbr/>control.<wbr/>awb<wbr/>Lock
7993 <td class="entry_type">
7994 <span class="entry_type_name entry_type_name_enum">byte</span>
7996 <span class="entry_type_visibility"> [public as boolean]</span>
7999 <span class="entry_type_hwlevel">[legacy] </span>
8003 <ul class="entry_type_enum">
8005 <span class="entry_type_enum_name">OFF (v3.2)</span>
8006 <span class="entry_type_enum_notes"><p>Auto-white balance lock is disabled; the AWB
8007 algorithm is free to update its parameters if in AUTO
8008 mode.<wbr/></p></span>
8011 <span class="entry_type_enum_name">ON (v3.2)</span>
8012 <span class="entry_type_enum_notes"><p>Auto-white balance lock is enabled; the AWB
8013 algorithm will not update its parameters while the lock
8014 is active.<wbr/></p></span>
8018 </td> <!-- entry_type -->
8020 <td class="entry_description">
8021 <p>Whether auto-white balance (AWB) is currently locked to its
8022 latest calculated values.<wbr/></p>
8025 <td class="entry_units">
8028 <td class="entry_range">
8031 <td class="entry_hal_version">
8035 <td class="entry_tags">
8036 <ul class="entry_tags">
8037 <li><a href="#tag_BC">BC</a></li>
8042 <tr class="entries_header">
8043 <th class="th_details" colspan="6">Details</th>
8045 <tr class="entry_cont">
8046 <td class="entry_details" colspan="6">
8047 <p>When set to <code>true</code> (ON),<wbr/> the AWB algorithm is locked to its latest parameters,<wbr/>
8048 and will not change color balance settings until the lock is set to <code>false</code> (OFF).<wbr/></p>
8049 <p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that
8050 get locked do not necessarily correspond to the settings that were present in the
8051 latest capture result received from the camera device,<wbr/> since additional captures
8052 and AWB updates may have occurred even before the result was sent out.<wbr/> If an
8053 application is switching between automatic and manual control and wishes to eliminate
8054 any flicker during the switch,<wbr/> the following procedure is recommended:</p>
8056 <li>Starting in auto-AWB mode:</li>
8058 <li>Wait for the first result to be output that has the AWB locked</li>
8059 <li>Copy AWB settings from that result into a request,<wbr/> set the request to manual AWB</li>
8060 <li>Submit the capture request,<wbr/> proceed to run manual AWB as desired.<wbr/></li>
8062 <p>Note that AWB lock is only meaningful when
8063 <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is in the AUTO mode; in other modes,<wbr/>
8064 AWB is already fixed to a specific setting.<wbr/></p>
8065 <p>Some LEGACY devices may not support ON; the value is then overridden to OFF.<wbr/></p>
8070 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
8071 <!-- end of entry -->
8074 <tr class="entry" id="dynamic_android.control.awbMode">
8075 <td class="entry_name
8077 android.<wbr/>control.<wbr/>awb<wbr/>Mode
8079 <td class="entry_type">
8080 <span class="entry_type_name entry_type_name_enum">byte</span>
8082 <span class="entry_type_visibility"> [public]</span>
8085 <span class="entry_type_hwlevel">[legacy] </span>
8089 <ul class="entry_type_enum">
8091 <span class="entry_type_enum_name">OFF (v3.2)</span>
8092 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled.<wbr/></p>
8093 <p>The application-selected color transform matrix
8094 (<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>) and gains
8095 (<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a>) are used by the camera
8096 device for manual white balance control.<wbr/></p></span>
8099 <span class="entry_type_enum_name">AUTO (v3.2)</span>
8100 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is active.<wbr/></p>
8101 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
8102 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
8103 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
8104 values used by the camera device for the transform and gains
8105 will be available in the capture result for this request.<wbr/></p></span>
8108 <span class="entry_type_enum_name">INCANDESCENT (v3.2)</span>
8109 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
8110 the camera device uses incandescent light as the assumed scene
8111 illumination for white balance.<wbr/></p>
8112 <p>While the exact white balance transforms are up to the
8113 camera device,<wbr/> they will approximately match the CIE
8114 standard illuminant A.<wbr/></p>
8115 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
8116 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
8117 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
8118 values used by the camera device for the transform and gains
8119 will be available in the capture result for this request.<wbr/></p></span>
8122 <span class="entry_type_enum_name">FLUORESCENT (v3.2)</span>
8123 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
8124 the camera device uses fluorescent light as the assumed scene
8125 illumination for white balance.<wbr/></p>
8126 <p>While the exact white balance transforms are up to the
8127 camera device,<wbr/> they will approximately match the CIE
8128 standard illuminant F2.<wbr/></p>
8129 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
8130 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
8131 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
8132 values used by the camera device for the transform and gains
8133 will be available in the capture result for this request.<wbr/></p></span>
8136 <span class="entry_type_enum_name">WARM_FLUORESCENT (v3.2)</span>
8137 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
8138 the camera device uses warm fluorescent light as the assumed scene
8139 illumination for white balance.<wbr/></p>
8140 <p>While the exact white balance transforms are up to the
8141 camera device,<wbr/> they will approximately match the CIE
8142 standard illuminant F4.<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">DAYLIGHT (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 daylight light as the assumed scene
8153 illumination for white balance.<wbr/></p>
8154 <p>While the exact white balance transforms are up to the
8155 camera device,<wbr/> they will approximately match the CIE
8156 standard illuminant D65.<wbr/></p>
8157 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
8158 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
8159 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
8160 values used by the camera device for the transform and gains
8161 will be available in the capture result for this request.<wbr/></p></span>
8164 <span class="entry_type_enum_name">CLOUDY_DAYLIGHT (v3.2)</span>
8165 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
8166 the camera device uses cloudy daylight light as the assumed scene
8167 illumination for white balance.<wbr/></p>
8168 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
8169 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
8170 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
8171 values used by the camera device for the transform and gains
8172 will be available in the capture result for this request.<wbr/></p></span>
8175 <span class="entry_type_enum_name">TWILIGHT (v3.2)</span>
8176 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
8177 the camera device uses twilight light as the assumed scene
8178 illumination for white balance.<wbr/></p>
8179 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
8180 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
8181 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
8182 values used by the camera device for the transform and gains
8183 will be available in the capture result for this request.<wbr/></p></span>
8186 <span class="entry_type_enum_name">SHADE (v3.2)</span>
8187 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
8188 the camera device uses shade light as the assumed scene
8189 illumination for white balance.<wbr/></p>
8190 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
8191 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
8192 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
8193 values used by the camera device for the transform and gains
8194 will be available in the capture result for this request.<wbr/></p></span>
8198 </td> <!-- entry_type -->
8200 <td class="entry_description">
8201 <p>Whether auto-white balance (AWB) is currently setting the color
8202 transform fields,<wbr/> and what its illumination target
8206 <td class="entry_units">
8209 <td class="entry_range">
8210 <p><a href="#static_android.control.awbAvailableModes">android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes</a></p>
8213 <td class="entry_hal_version">
8217 <td class="entry_tags">
8218 <ul class="entry_tags">
8219 <li><a href="#tag_BC">BC</a></li>
8224 <tr class="entries_header">
8225 <th class="th_details" colspan="6">Details</th>
8227 <tr class="entry_cont">
8228 <td class="entry_details" colspan="6">
8229 <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is AUTO.<wbr/></p>
8230 <p>When set to the ON mode,<wbr/> the camera device's auto-white balance
8231 routine is enabled,<wbr/> overriding the application's selected
8232 <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
8233 <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>
8234 is OFF,<wbr/> the behavior of AWB is device dependent.<wbr/> It is recommened to
8235 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
8236 setting AE mode to OFF.<wbr/></p>
8237 <p>When set to the OFF mode,<wbr/> the camera device's auto-white balance
8238 routine is disabled.<wbr/> The application manually controls the white
8239 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>
8240 and <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/></p>
8241 <p>When set to any other modes,<wbr/> the camera device's auto-white
8242 balance routine is disabled.<wbr/> The camera device uses each
8243 particular illumination target for white balance
8244 adjustment.<wbr/> The application's values for
8245 <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>,<wbr/>
8246 <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
8247 <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> are ignored.<wbr/></p>
8252 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
8253 <!-- end of entry -->
8256 <tr class="entry" id="dynamic_android.control.awbRegions">
8257 <td class="entry_name
8259 android.<wbr/>control.<wbr/>awb<wbr/>Regions
8261 <td class="entry_type">
8262 <span class="entry_type_name">int32</span>
8263 <span class="entry_type_container">x</span>
8265 <span class="entry_type_array">
8268 <span class="entry_type_visibility"> [public as meteringRectangle]</span>
8275 </td> <!-- entry_type -->
8277 <td class="entry_description">
8278 <p>List of metering areas to use for auto-white-balance illuminant
8279 estimation.<wbr/></p>
8282 <td class="entry_units">
8283 Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
8286 <td class="entry_range">
8287 <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
8288 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
8291 <td class="entry_hal_version">
8295 <td class="entry_tags">
8296 <ul class="entry_tags">
8297 <li><a href="#tag_BC">BC</a></li>
8302 <tr class="entries_header">
8303 <th class="th_details" colspan="6">Details</th>
8305 <tr class="entry_cont">
8306 <td class="entry_details" colspan="6">
8307 <p>Not available if <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a> is 0.<wbr/>
8308 Otherwise will always be present.<wbr/></p>
8309 <p>The maximum number of regions supported by the device is determined by the value
8310 of <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a>.<wbr/></p>
8311 <p>The coordinate system is based on the active pixel array,<wbr/>
8312 with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
8313 (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
8314 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
8315 bottom-right pixel in the active pixel array.<wbr/></p>
8316 <p>The weight must range from 0 to 1000,<wbr/> and represents a weight
8317 for every pixel in the area.<wbr/> This means that a large metering area
8318 with the same weight as a smaller area will have more effect in
8319 the metering result.<wbr/> Metering areas can partially overlap and the
8320 camera device will add the weights in the overlap region.<wbr/></p>
8321 <p>The weights are relative to weights of other white balance metering regions,<wbr/> so if
8322 only one region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with
8323 0 weight is ignored.<wbr/></p>
8324 <p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
8325 camera device.<wbr/></p>
8326 <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
8327 capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
8328 region and output only the intersection rectangle as the metering region in the result
8329 metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and
8330 not reported in the result metadata.<wbr/></p>
8334 <tr class="entries_header">
8335 <th class="th_details" colspan="6">HAL Implementation Details</th>
8337 <tr class="entry_cont">
8338 <td class="entry_details" colspan="6">
8339 <p>The HAL level representation of MeteringRectangle[] is a
8340 int[5 * area_<wbr/>count].<wbr/>
8341 Every five elements represent a metering region of
8342 (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
8343 The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
8344 exclusive on xmax and ymax.<wbr/></p>
8348 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
8349 <!-- end of entry -->
8352 <tr class="entry" id="dynamic_android.control.captureIntent">
8353 <td class="entry_name
8355 android.<wbr/>control.<wbr/>capture<wbr/>Intent
8357 <td class="entry_type">
8358 <span class="entry_type_name entry_type_name_enum">byte</span>
8360 <span class="entry_type_visibility"> [public]</span>
8363 <span class="entry_type_hwlevel">[legacy] </span>
8367 <ul class="entry_type_enum">
8369 <span class="entry_type_enum_name">CUSTOM (v3.2)</span>
8370 <span class="entry_type_enum_notes"><p>The goal of this request doesn't fall into the other
8371 categories.<wbr/> The camera device will default to preview-like
8372 behavior.<wbr/></p></span>
8375 <span class="entry_type_enum_name">PREVIEW (v3.2)</span>
8376 <span class="entry_type_enum_notes"><p>This request is for a preview-like use case.<wbr/></p>
8377 <p>The precapture trigger may be used to start off a metering
8378 w/<wbr/>flash sequence.<wbr/></p></span>
8381 <span class="entry_type_enum_name">STILL_CAPTURE (v3.2)</span>
8382 <span class="entry_type_enum_notes"><p>This request is for a still capture-type
8384 <p>If the flash unit is under automatic control,<wbr/> it may fire as needed.<wbr/></p></span>
8387 <span class="entry_type_enum_name">VIDEO_RECORD (v3.2)</span>
8388 <span class="entry_type_enum_notes"><p>This request is for a video recording
8389 use case.<wbr/></p></span>
8392 <span class="entry_type_enum_name">VIDEO_SNAPSHOT (v3.2)</span>
8393 <span class="entry_type_enum_notes"><p>This request is for a video snapshot (still
8394 image while recording video) use case.<wbr/></p>
8395 <p>The camera device should take the highest-quality image
8396 possible (given the other settings) without disrupting the
8397 frame rate of video recording.<wbr/> </p></span>
8400 <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span>
8401 <span class="entry_type_enum_notes"><p>This request is for a ZSL usecase; the
8402 application will stream full-resolution images and
8403 reprocess one or several later for a final
8404 capture.<wbr/></p></span>
8407 <span class="entry_type_enum_name">MANUAL (v3.2)</span>
8408 <span class="entry_type_enum_notes"><p>This request is for manual capture use case where
8409 the applications want to directly control the capture parameters.<wbr/></p>
8410 <p>For example,<wbr/> the application may wish to manually control
8411 <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>
8414 <span class="entry_type_enum_name">MOTION_TRACKING (v3.3)</span>
8415 <span class="entry_type_enum_notes"><p>This request is for a motion tracking use case,<wbr/> where
8416 the application will use camera and inertial sensor data to
8417 locate and track objects in the world.<wbr/></p>
8418 <p>The camera device auto-exposure routine will limit the exposure time
8419 of the camera to no more than 20 milliseconds,<wbr/> to minimize motion blur.<wbr/></p></span>
8423 </td> <!-- entry_type -->
8425 <td class="entry_description">
8426 <p>Information to the camera device 3A (auto-exposure,<wbr/>
8427 auto-focus,<wbr/> auto-white balance) routines about the purpose
8428 of this capture,<wbr/> to help the camera device to decide optimal 3A
8432 <td class="entry_units">
8435 <td class="entry_range">
8438 <td class="entry_hal_version">
8442 <td class="entry_tags">
8443 <ul class="entry_tags">
8444 <li><a href="#tag_BC">BC</a></li>
8449 <tr class="entries_header">
8450 <th class="th_details" colspan="6">Details</th>
8452 <tr class="entry_cont">
8453 <td class="entry_details" colspan="6">
8454 <p>This control (except for MANUAL) is only effective if
8455 <code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF</code> and any 3A routine is active.<wbr/></p>
8456 <p>All intents are supported by all devices,<wbr/> except that:
8457 * ZERO_<wbr/>SHUTTER_<wbr/>LAG will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
8458 PRIVATE_<wbr/>REPROCESSING or YUV_<wbr/>REPROCESSING.<wbr/>
8459 * MANUAL will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
8460 MANUAL_<wbr/>SENSOR.<wbr/>
8461 * MOTION_<wbr/>TRACKING will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
8462 MOTION_<wbr/>TRACKING.<wbr/></p>
8467 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
8468 <!-- end of entry -->
8471 <tr class="entry" id="dynamic_android.control.awbState">
8472 <td class="entry_name
8474 android.<wbr/>control.<wbr/>awb<wbr/>State
8476 <td class="entry_type">
8477 <span class="entry_type_name entry_type_name_enum">byte</span>
8479 <span class="entry_type_visibility"> [public]</span>
8482 <span class="entry_type_hwlevel">[limited] </span>
8486 <ul class="entry_type_enum">
8488 <span class="entry_type_enum_name">INACTIVE (v3.2)</span>
8489 <span class="entry_type_enum_notes"><p>AWB is not in auto mode,<wbr/> or has not yet started metering.<wbr/></p>
8490 <p>When a camera device is opened,<wbr/> it starts in this
8491 state.<wbr/> This is a transient state,<wbr/> the camera device may
8492 skip reporting this state in capture
8493 result.<wbr/></p></span>
8496 <span class="entry_type_enum_name">SEARCHING (v3.2)</span>
8497 <span class="entry_type_enum_notes"><p>AWB doesn't yet have a good set of control
8498 values for the current scene.<wbr/></p>
8499 <p>This is a transient state,<wbr/> the camera device
8500 may skip reporting this state in capture result.<wbr/></p></span>
8503 <span class="entry_type_enum_name">CONVERGED (v3.2)</span>
8504 <span class="entry_type_enum_notes"><p>AWB has a good set of control values for the
8505 current scene.<wbr/></p></span>
8508 <span class="entry_type_enum_name">LOCKED (v3.2)</span>
8509 <span class="entry_type_enum_notes"><p>AWB has been locked.<wbr/></p></span>
8513 </td> <!-- entry_type -->
8515 <td class="entry_description">
8516 <p>Current state of auto-white balance (AWB) algorithm.<wbr/></p>
8519 <td class="entry_units">
8522 <td class="entry_range">
8525 <td class="entry_hal_version">
8529 <td class="entry_tags">
8533 <tr class="entries_header">
8534 <th class="th_details" colspan="6">Details</th>
8536 <tr class="entry_cont">
8537 <td class="entry_details" colspan="6">
8538 <p>Switching between or enabling AWB modes (<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>) always
8539 resets the AWB state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/>
8540 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
8541 the algorithm states to INACTIVE.<wbr/></p>
8542 <p>The camera device can do several state transitions between two results,<wbr/> if it is
8543 allowed by the state transition table.<wbr/> So INACTIVE may never actually be seen in
8545 <p>The state in the result is the state for this image (in sync with this image): if
8546 AWB state becomes CONVERGED,<wbr/> then the image data associated with this result should
8547 be good to use.<wbr/></p>
8548 <p>Below are state transition tables for different AWB modes.<wbr/></p>
8549 <p>When <code><a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> != AWB_<wbr/>MODE_<wbr/>AUTO</code>:</p>
8553 <th align="center">State</th>
8554 <th align="center">Transition Cause</th>
8555 <th align="center">New State</th>
8556 <th align="center">Notes</th>
8561 <td align="center">INACTIVE</td>
8562 <td align="center"></td>
8563 <td align="center">INACTIVE</td>
8564 <td align="center">Camera device auto white balance algorithm is disabled</td>
8568 <p>When <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is AWB_<wbr/>MODE_<wbr/>AUTO:</p>
8572 <th align="center">State</th>
8573 <th align="center">Transition Cause</th>
8574 <th align="center">New State</th>
8575 <th align="center">Notes</th>
8580 <td align="center">INACTIVE</td>
8581 <td align="center">Camera device initiates AWB scan</td>
8582 <td align="center">SEARCHING</td>
8583 <td align="center">Values changing</td>
8586 <td align="center">INACTIVE</td>
8587 <td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td>
8588 <td align="center">LOCKED</td>
8589 <td align="center">Values locked</td>
8592 <td align="center">SEARCHING</td>
8593 <td align="center">Camera device finishes AWB scan</td>
8594 <td align="center">CONVERGED</td>
8595 <td align="center">Good values,<wbr/> not changing</td>
8598 <td align="center">SEARCHING</td>
8599 <td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td>
8600 <td align="center">LOCKED</td>
8601 <td align="center">Values locked</td>
8604 <td align="center">CONVERGED</td>
8605 <td align="center">Camera device initiates AWB scan</td>
8606 <td align="center">SEARCHING</td>
8607 <td align="center">Values changing</td>
8610 <td align="center">CONVERGED</td>
8611 <td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td>
8612 <td align="center">LOCKED</td>
8613 <td align="center">Values locked</td>
8616 <td align="center">LOCKED</td>
8617 <td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is OFF</td>
8618 <td align="center">SEARCHING</td>
8619 <td align="center">Values not good after unlock</td>
8623 <p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen
8624 without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that
8625 can be skipped in that manner is called a transient state.<wbr/></p>
8626 <p>For example,<wbr/> for this AWB mode (AWB_<wbr/>MODE_<wbr/>AUTO),<wbr/> in addition to the state transitions
8627 listed in above table,<wbr/> it is also legal for the camera device to skip one or more
8628 transient states between two results.<wbr/> See below table for examples:</p>
8632 <th align="center">State</th>
8633 <th align="center">Transition Cause</th>
8634 <th align="center">New State</th>
8635 <th align="center">Notes</th>
8640 <td align="center">INACTIVE</td>
8641 <td align="center">Camera device finished AWB scan</td>
8642 <td align="center">CONVERGED</td>
8643 <td align="center">Values are already good,<wbr/> transient states are skipped by camera device.<wbr/></td>
8646 <td align="center">LOCKED</td>
8647 <td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is OFF</td>
8648 <td align="center">CONVERGED</td>
8649 <td align="center">Values good after unlock,<wbr/> transient states are skipped by camera device.<wbr/></td>
8657 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
8658 <!-- end of entry -->
8661 <tr class="entry" id="dynamic_android.control.effectMode">
8662 <td class="entry_name
8664 android.<wbr/>control.<wbr/>effect<wbr/>Mode
8666 <td class="entry_type">
8667 <span class="entry_type_name entry_type_name_enum">byte</span>
8669 <span class="entry_type_visibility"> [public]</span>
8672 <span class="entry_type_hwlevel">[legacy] </span>
8676 <ul class="entry_type_enum">
8678 <span class="entry_type_enum_name">OFF (v3.2)</span>
8679 <span class="entry_type_enum_notes"><p>No color effect will be applied.<wbr/></p></span>
8682 <span class="entry_type_enum_name">MONO (v3.2)</span>
8683 <span class="entry_type_enum_optional">[optional]</span>
8684 <span class="entry_type_enum_notes"><p>A "monocolor" effect where the image is mapped into
8685 a single color.<wbr/></p>
8686 <p>This will typically be grayscale.<wbr/></p></span>
8689 <span class="entry_type_enum_name">NEGATIVE (v3.2)</span>
8690 <span class="entry_type_enum_optional">[optional]</span>
8691 <span class="entry_type_enum_notes"><p>A "photo-negative" effect where the image's colors
8692 are inverted.<wbr/></p></span>
8695 <span class="entry_type_enum_name">SOLARIZE (v3.2)</span>
8696 <span class="entry_type_enum_optional">[optional]</span>
8697 <span class="entry_type_enum_notes"><p>A "solarisation" effect (Sabattier effect) where the
8698 image is wholly or partially reversed in
8699 tone.<wbr/></p></span>
8702 <span class="entry_type_enum_name">SEPIA (v3.2)</span>
8703 <span class="entry_type_enum_optional">[optional]</span>
8704 <span class="entry_type_enum_notes"><p>A "sepia" effect where the image is mapped into warm
8705 gray,<wbr/> red,<wbr/> and brown tones.<wbr/></p></span>
8708 <span class="entry_type_enum_name">POSTERIZE (v3.2)</span>
8709 <span class="entry_type_enum_optional">[optional]</span>
8710 <span class="entry_type_enum_notes"><p>A "posterization" effect where the image uses
8711 discrete regions of tone rather than a continuous
8712 gradient of tones.<wbr/></p></span>
8715 <span class="entry_type_enum_name">WHITEBOARD (v3.2)</span>
8716 <span class="entry_type_enum_optional">[optional]</span>
8717 <span class="entry_type_enum_notes"><p>A "whiteboard" effect where the image is typically displayed
8718 as regions of white,<wbr/> with black or grey details.<wbr/></p></span>
8721 <span class="entry_type_enum_name">BLACKBOARD (v3.2)</span>
8722 <span class="entry_type_enum_optional">[optional]</span>
8723 <span class="entry_type_enum_notes"><p>A "blackboard" effect where the image is typically displayed
8724 as regions of black,<wbr/> with white or grey details.<wbr/></p></span>
8727 <span class="entry_type_enum_name">AQUA (v3.2)</span>
8728 <span class="entry_type_enum_optional">[optional]</span>
8729 <span class="entry_type_enum_notes"><p>An "aqua" effect where a blue hue is added to the image.<wbr/></p></span>
8733 </td> <!-- entry_type -->
8735 <td class="entry_description">
8736 <p>A special color effect to apply.<wbr/></p>
8739 <td class="entry_units">
8742 <td class="entry_range">
8743 <p><a href="#static_android.control.availableEffects">android.<wbr/>control.<wbr/>available<wbr/>Effects</a></p>
8746 <td class="entry_hal_version">
8750 <td class="entry_tags">
8751 <ul class="entry_tags">
8752 <li><a href="#tag_BC">BC</a></li>
8757 <tr class="entries_header">
8758 <th class="th_details" colspan="6">Details</th>
8760 <tr class="entry_cont">
8761 <td class="entry_details" colspan="6">
8762 <p>When this mode is set,<wbr/> a color effect will be applied
8763 to images produced by the camera device.<wbr/> The interpretation
8764 and implementation of these color effects is left to the
8765 implementor of the camera device,<wbr/> and should not be
8766 depended on to be consistent (or present) across all
8772 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
8773 <!-- end of entry -->
8776 <tr class="entry" id="dynamic_android.control.mode">
8777 <td class="entry_name
8779 android.<wbr/>control.<wbr/>mode
8781 <td class="entry_type">
8782 <span class="entry_type_name entry_type_name_enum">byte</span>
8784 <span class="entry_type_visibility"> [public]</span>
8787 <span class="entry_type_hwlevel">[legacy] </span>
8791 <ul class="entry_type_enum">
8793 <span class="entry_type_enum_name">OFF (v3.2)</span>
8794 <span class="entry_type_enum_notes"><p>Full application control of pipeline.<wbr/></p>
8795 <p>All control by the device's metering and focusing (3A)
8796 routines is disabled,<wbr/> and no other settings in
8797 android.<wbr/>control.<wbr/>* have any effect,<wbr/> except that
8798 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> may be used by the camera
8799 device to select post-processing values for processing
8800 blocks that do not allow for manual control,<wbr/> or are not
8801 exposed by the camera API.<wbr/></p>
8802 <p>However,<wbr/> the camera device's 3A routines may continue to
8803 collect statistics and update their internal state so that
8804 when control is switched to AUTO mode,<wbr/> good control values
8805 can be immediately applied.<wbr/></p></span>
8808 <span class="entry_type_enum_name">AUTO (v3.2)</span>
8809 <span class="entry_type_enum_notes"><p>Use settings for each individual 3A routine.<wbr/></p>
8810 <p>Manual control of capture parameters is disabled.<wbr/> All
8811 controls in android.<wbr/>control.<wbr/>* besides sceneMode take
8812 effect.<wbr/></p></span>
8815 <span class="entry_type_enum_name">USE_SCENE_MODE (v3.2)</span>
8816 <span class="entry_type_enum_optional">[optional]</span>
8817 <span class="entry_type_enum_notes"><p>Use a specific scene mode.<wbr/></p>
8818 <p>Enabling this disables control.<wbr/>aeMode,<wbr/> control.<wbr/>awbMode and
8819 control.<wbr/>afMode controls; the camera device will ignore
8820 those settings while USE_<wbr/>SCENE_<wbr/>MODE is active (except for
8821 FACE_<wbr/>PRIORITY scene mode).<wbr/> Other control entries are still active.<wbr/>
8822 This setting can only be used if scene mode is supported (i.<wbr/>e.<wbr/>
8823 <a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a>
8824 contain some modes other than DISABLED).<wbr/></p></span>
8827 <span class="entry_type_enum_name">OFF_KEEP_STATE (v3.2)</span>
8828 <span class="entry_type_enum_optional">[optional]</span>
8829 <span class="entry_type_enum_notes"><p>Same as OFF mode,<wbr/> except that this capture will not be
8830 used by camera device background auto-exposure,<wbr/> auto-white balance and
8831 auto-focus algorithms (3A) to update their statistics.<wbr/></p>
8832 <p>Specifically,<wbr/> the 3A routines are locked to the last
8833 values set from a request with AUTO,<wbr/> OFF,<wbr/> or
8834 USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> and any statistics or state updates
8835 collected from manual captures with OFF_<wbr/>KEEP_<wbr/>STATE will be
8836 discarded by the camera device.<wbr/></p></span>
8840 </td> <!-- entry_type -->
8842 <td class="entry_description">
8843 <p>Overall mode of 3A (auto-exposure,<wbr/> auto-white-balance,<wbr/> auto-focus) control
8847 <td class="entry_units">
8850 <td class="entry_range">
8851 <p><a href="#static_android.control.availableModes">android.<wbr/>control.<wbr/>available<wbr/>Modes</a></p>
8854 <td class="entry_hal_version">
8858 <td class="entry_tags">
8859 <ul class="entry_tags">
8860 <li><a href="#tag_BC">BC</a></li>
8865 <tr class="entries_header">
8866 <th class="th_details" colspan="6">Details</th>
8868 <tr class="entry_cont">
8869 <td class="entry_details" colspan="6">
8870 <p>This is a top-level 3A control switch.<wbr/> When set to OFF,<wbr/> all 3A control
8871 by the camera device is disabled.<wbr/> The application must set the fields for
8872 capture parameters itself.<wbr/></p>
8873 <p>When set to AUTO,<wbr/> the individual algorithm controls in
8874 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>
8875 <p>When set to USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> the individual controls in
8876 android.<wbr/>control.<wbr/>* are mostly disabled,<wbr/> and the camera device
8877 implements one of the scene mode settings (such as ACTION,<wbr/>
8878 SUNSET,<wbr/> or PARTY) as it wishes.<wbr/> The camera device scene mode
8879 3A settings are provided by <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">capture results</a>.<wbr/></p>
8880 <p>When set to OFF_<wbr/>KEEP_<wbr/>STATE,<wbr/> it is similar to OFF mode,<wbr/> the only difference
8881 is that this frame will not be used by camera device background 3A statistics
8882 update,<wbr/> as if this frame is never captured.<wbr/> This mode can be used in the scenario
8883 where the application doesn't want a 3A manual control capture to affect
8884 the subsequent auto 3A capture results.<wbr/></p>
8889 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
8890 <!-- end of entry -->
8893 <tr class="entry" id="dynamic_android.control.sceneMode">
8894 <td class="entry_name
8896 android.<wbr/>control.<wbr/>scene<wbr/>Mode
8898 <td class="entry_type">
8899 <span class="entry_type_name entry_type_name_enum">byte</span>
8901 <span class="entry_type_visibility"> [public]</span>
8904 <span class="entry_type_hwlevel">[legacy] </span>
8908 <ul class="entry_type_enum">
8910 <span class="entry_type_enum_name">DISABLED (v3.2)</span>
8911 <span class="entry_type_enum_value">0</span>
8912 <span class="entry_type_enum_notes"><p>Indicates that no scene modes are set for a given capture request.<wbr/></p></span>
8915 <span class="entry_type_enum_name">FACE_PRIORITY (v3.2)</span>
8916 <span class="entry_type_enum_notes"><p>If face detection support exists,<wbr/> use face
8917 detection data for auto-focus,<wbr/> auto-white balance,<wbr/> and
8918 auto-exposure routines.<wbr/></p>
8919 <p>If face detection statistics are disabled
8920 (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/>
8921 this should still operate correctly (but will not return
8922 face detection statistics to the framework).<wbr/></p>
8923 <p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
8924 <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>
8925 remain active when FACE_<wbr/>PRIORITY is set.<wbr/></p></span>
8928 <span class="entry_type_enum_name">ACTION (v3.2)</span>
8929 <span class="entry_type_enum_optional">[optional]</span>
8930 <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving objects.<wbr/></p>
8931 <p>Similar to SPORTS.<wbr/></p></span>
8934 <span class="entry_type_enum_name">PORTRAIT (v3.2)</span>
8935 <span class="entry_type_enum_optional">[optional]</span>
8936 <span class="entry_type_enum_notes"><p>Optimized for still photos of people.<wbr/></p></span>
8939 <span class="entry_type_enum_name">LANDSCAPE (v3.2)</span>
8940 <span class="entry_type_enum_optional">[optional]</span>
8941 <span class="entry_type_enum_notes"><p>Optimized for photos of distant macroscopic objects.<wbr/></p></span>
8944 <span class="entry_type_enum_name">NIGHT (v3.2)</span>
8945 <span class="entry_type_enum_optional">[optional]</span>
8946 <span class="entry_type_enum_notes"><p>Optimized for low-light settings.<wbr/></p></span>
8949 <span class="entry_type_enum_name">NIGHT_PORTRAIT (v3.2)</span>
8950 <span class="entry_type_enum_optional">[optional]</span>
8951 <span class="entry_type_enum_notes"><p>Optimized for still photos of people in low-light
8952 settings.<wbr/></p></span>
8955 <span class="entry_type_enum_name">THEATRE (v3.2)</span>
8956 <span class="entry_type_enum_optional">[optional]</span>
8957 <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings where flash must
8958 remain off.<wbr/></p></span>
8961 <span class="entry_type_enum_name">BEACH (v3.2)</span>
8962 <span class="entry_type_enum_optional">[optional]</span>
8963 <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor beach settings.<wbr/></p></span>
8966 <span class="entry_type_enum_name">SNOW (v3.2)</span>
8967 <span class="entry_type_enum_optional">[optional]</span>
8968 <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor settings containing snow.<wbr/></p></span>
8971 <span class="entry_type_enum_name">SUNSET (v3.2)</span>
8972 <span class="entry_type_enum_optional">[optional]</span>
8973 <span class="entry_type_enum_notes"><p>Optimized for scenes of the setting sun.<wbr/></p></span>
8976 <span class="entry_type_enum_name">STEADYPHOTO (v3.2)</span>
8977 <span class="entry_type_enum_optional">[optional]</span>
8978 <span class="entry_type_enum_notes"><p>Optimized to avoid blurry photos due to small amounts of
8979 device motion (for example: due to hand shake).<wbr/></p></span>
8982 <span class="entry_type_enum_name">FIREWORKS (v3.2)</span>
8983 <span class="entry_type_enum_optional">[optional]</span>
8984 <span class="entry_type_enum_notes"><p>Optimized for nighttime photos of fireworks.<wbr/></p></span>
8987 <span class="entry_type_enum_name">SPORTS (v3.2)</span>
8988 <span class="entry_type_enum_optional">[optional]</span>
8989 <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving people.<wbr/></p>
8990 <p>Similar to ACTION.<wbr/></p></span>
8993 <span class="entry_type_enum_name">PARTY (v3.2)</span>
8994 <span class="entry_type_enum_optional">[optional]</span>
8995 <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings with multiple moving
8996 people.<wbr/></p></span>
8999 <span class="entry_type_enum_name">CANDLELIGHT (v3.2)</span>
9000 <span class="entry_type_enum_optional">[optional]</span>
9001 <span class="entry_type_enum_notes"><p>Optimized for dim settings where the main light source
9002 is a flame.<wbr/></p></span>
9005 <span class="entry_type_enum_name">BARCODE (v3.2)</span>
9006 <span class="entry_type_enum_optional">[optional]</span>
9007 <span class="entry_type_enum_notes"><p>Optimized for accurately capturing a photo of barcode
9008 for use by camera applications that wish to read the
9009 barcode value.<wbr/></p></span>
9012 <span class="entry_type_enum_name">HIGH_SPEED_VIDEO (v3.2)</span>
9013 <span class="entry_type_enum_deprecated">[deprecated]</span>
9014 <span class="entry_type_enum_optional">[optional]</span>
9015 <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>
9016 and <a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a>
9017 for high speed video recording.<wbr/></p>
9018 <p>Optimized for high speed video recording (frame rate >=60fps) use case.<wbr/></p>
9019 <p>The supported high speed video sizes and fps ranges are specified in
9020 <a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/> To get desired
9021 output frame rates,<wbr/> the application is only allowed to select video size
9022 and fps range combinations listed in this static metadata.<wbr/> The fps range
9023 can be control via <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a>.<wbr/></p>
9024 <p>In this mode,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to
9025 ON,<wbr/> ON,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode
9026 controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture
9027 and post-processing parameters is possible.<wbr/> All other controls operate the
9028 same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other
9029 android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p>
9031 <li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li>
9032 <li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li>
9033 <li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li>
9034 <li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li>
9035 <li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li>
9036 <li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li>
9037 <li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li>
9038 <li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li>
9039 <li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li>
9040 <li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li>
9042 <p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p>
9044 <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>
9045 <li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li>
9046 <li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li>
9047 <li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></li>
9049 <p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may
9050 be lower than what camera can output,<wbr/> depending on the destination Surfaces for
9051 the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/>
9052 the application need check if the video encoder is capable of supporting the
9053 high frame rate for a given video size,<wbr/> or it will end up with lower recording
9054 frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the preview frame
9055 rate will be bounded by the screen refresh rate.<wbr/></p>
9056 <p>The camera device will only support up to 2 output high speed streams
9057 (processed non-stalling format defined in <a href="#static_android.request.maxNumOutputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams</a>)
9058 in this mode.<wbr/> This control will be effective only if all of below conditions are true:</p>
9060 <li>The application created no more than maxNumHighSpeedStreams processed non-stalling
9061 format output streams,<wbr/> where maxNumHighSpeedStreams is calculated as
9062 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>
9063 <li>The stream sizes are selected from the sizes reported by
9064 <a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/></li>
9065 <li>No processed non-stalling or raw streams are configured.<wbr/></li>
9067 <p>When above conditions are NOT satistied,<wbr/> the controls of this mode and
9068 <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/>
9069 the camera device will fall back to <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> <code>==</code> AUTO,<wbr/>
9070 and the returned capture result metadata will give the fps range choosen
9071 by the camera device.<wbr/></p>
9072 <p>Switching into or out of this mode may trigger some camera ISP/<wbr/>sensor
9073 reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that
9074 the application avoids unnecessary scene mode switch as much as possible.<wbr/></p></span>
9077 <span class="entry_type_enum_name">HDR (v3.2)</span>
9078 <span class="entry_type_enum_optional">[optional]</span>
9079 <span class="entry_type_enum_notes"><p>Turn on a device-specific high dynamic range (HDR) mode.<wbr/></p>
9080 <p>In this scene mode,<wbr/> the camera device captures images
9081 that keep a larger range of scene illumination levels
9082 visible in the final image.<wbr/> For example,<wbr/> when taking a
9083 picture of a object in front of a bright window,<wbr/> both
9084 the object and the scene through the window may be
9085 visible when using HDR mode,<wbr/> while in normal AUTO mode,<wbr/>
9086 one or the other may be poorly exposed.<wbr/> As a tradeoff,<wbr/>
9087 HDR mode generally takes much longer to capture a single
9088 image,<wbr/> has no user control,<wbr/> and may have other artifacts
9089 depending on the HDR method used.<wbr/></p>
9090 <p>Therefore,<wbr/> HDR captures operate at a much slower rate
9091 than regular captures.<wbr/></p>
9092 <p>In this mode,<wbr/> on LIMITED or FULL devices,<wbr/> when a request
9093 is made with a <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> of
9094 STILL_<wbr/>CAPTURE,<wbr/> the camera device will capture an image
9095 using a high dynamic range capture technique.<wbr/> On LEGACY
9096 devices,<wbr/> captures that target a JPEG-format output will
9097 be captured with HDR,<wbr/> and the capture intent is not
9099 <p>The HDR capture may involve the device capturing a burst
9100 of images internally and combining them into one,<wbr/> or it
9101 may involve the device using specialized high dynamic
9102 range capture hardware.<wbr/> In all cases,<wbr/> a single image is
9103 produced in response to a capture request submitted
9104 while in HDR mode.<wbr/></p>
9105 <p>Since substantial post-processing is generally needed to
9106 produce an HDR image,<wbr/> only YUV,<wbr/> PRIVATE,<wbr/> and JPEG
9107 outputs are supported for LIMITED/<wbr/>FULL device HDR
9108 captures,<wbr/> and only JPEG outputs are supported for LEGACY
9109 HDR captures.<wbr/> Using a RAW output for HDR capture is not
9110 supported.<wbr/></p>
9111 <p>Some devices may also support always-on HDR,<wbr/> which
9112 applies HDR processing at full frame rate.<wbr/> For these
9113 devices,<wbr/> intents other than STILL_<wbr/>CAPTURE will also
9114 produce an HDR output with no frame rate impact compared
9115 to normal operation,<wbr/> though the quality may be lower
9116 than for STILL_<wbr/>CAPTURE intents.<wbr/></p>
9117 <p>If SCENE_<wbr/>MODE_<wbr/>HDR is used with unsupported output types
9118 or capture intents,<wbr/> the images captured will be as if
9119 the SCENE_<wbr/>MODE was not enabled at all.<wbr/></p></span>
9122 <span class="entry_type_enum_name">FACE_PRIORITY_LOW_LIGHT (v3.2)</span>
9123 <span class="entry_type_enum_optional">[optional]</span>
9124 <span class="entry_type_enum_hidden">[hidden]</span>
9125 <span class="entry_type_enum_notes"><p>Same as FACE_<wbr/>PRIORITY scene mode,<wbr/> except that the camera
9126 device will choose higher sensitivity values (<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>)
9127 under low light conditions.<wbr/></p>
9128 <p>The camera device may be tuned to expose the images in a reduced
9129 sensitivity range to produce the best quality images.<wbr/> For example,<wbr/>
9130 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/>
9131 the camera device auto-exposure routine tuning process may limit the actual
9132 exposure sensitivity range to [100,<wbr/> 1200] to ensure that the noise level isn't
9133 exessive in order to preserve the image quality.<wbr/> Under this situation,<wbr/> the image under
9134 low light may be under-exposed when the sensor max exposure time (bounded by the
9135 <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
9136 ON_<wbr/>* modes) and effective max sensitivity are reached.<wbr/> This scene mode allows the
9137 camera device auto-exposure routine to increase the sensitivity up to the max
9138 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
9139 dark and the max exposure time is reached.<wbr/> The captured images may be noisier
9140 compared with the images captured in normal FACE_<wbr/>PRIORITY mode; therefore,<wbr/> it is
9141 recommended that the application only use this scene mode when it is capable of
9142 reducing the noise level of the captured images.<wbr/></p>
9143 <p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
9144 <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>
9145 remain active when FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT is set.<wbr/></p></span>
9148 <span class="entry_type_enum_name">DEVICE_CUSTOM_START (v3.2)</span>
9149 <span class="entry_type_enum_optional">[optional]</span>
9150 <span class="entry_type_enum_hidden">[hidden]</span>
9151 <span class="entry_type_enum_value">100</span>
9152 <span class="entry_type_enum_notes"><p>Scene mode values within the range of
9153 <code>[DEVICE_<wbr/>CUSTOM_<wbr/>START,<wbr/> DEVICE_<wbr/>CUSTOM_<wbr/>END]</code> are reserved for device specific
9154 customized scene modes.<wbr/></p></span>
9157 <span class="entry_type_enum_name">DEVICE_CUSTOM_END (v3.2)</span>
9158 <span class="entry_type_enum_optional">[optional]</span>
9159 <span class="entry_type_enum_hidden">[hidden]</span>
9160 <span class="entry_type_enum_value">127</span>
9161 <span class="entry_type_enum_notes"><p>Scene mode values within the range of
9162 <code>[DEVICE_<wbr/>CUSTOM_<wbr/>START,<wbr/> DEVICE_<wbr/>CUSTOM_<wbr/>END]</code> are reserved for device specific
9163 customized scene modes.<wbr/></p></span>
9167 </td> <!-- entry_type -->
9169 <td class="entry_description">
9170 <p>Control for which scene mode is currently active.<wbr/></p>
9173 <td class="entry_units">
9176 <td class="entry_range">
9177 <p><a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a></p>
9180 <td class="entry_hal_version">
9184 <td class="entry_tags">
9185 <ul class="entry_tags">
9186 <li><a href="#tag_BC">BC</a></li>
9191 <tr class="entries_header">
9192 <th class="th_details" colspan="6">Details</th>
9194 <tr class="entry_cont">
9195 <td class="entry_details" colspan="6">
9196 <p>Scene modes are custom camera modes optimized for a certain set of conditions and
9197 capture settings.<wbr/></p>
9198 <p>This is the mode that that is active when
9199 <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
9200 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>
9201 while in use.<wbr/></p>
9202 <p>The interpretation and implementation of these scene modes is left
9203 to the implementor of the camera device.<wbr/> Their behavior will not be
9204 consistent across all devices,<wbr/> and any given device may only implement
9205 a subset of these modes.<wbr/></p>
9209 <tr class="entries_header">
9210 <th class="th_details" colspan="6">HAL Implementation Details</th>
9212 <tr class="entry_cont">
9213 <td class="entry_details" colspan="6">
9214 <p>HAL implementations that include scene modes are expected to provide
9215 the per-scene settings to use for <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
9216 <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
9217 <a href="#static_android.control.sceneModeOverrides">android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides</a>.<wbr/></p>
9218 <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
9219 HAL must list supported video size and fps range in
9220 <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/>
9221 if the HAL has two different sensor configurations for normal streaming mode and high
9222 speed streaming,<wbr/> when this scene mode is set/<wbr/>reset in a sequence of capture requests,<wbr/> the
9223 HAL may have to switch between different sensor modes.<wbr/> This mode is deprecated in legacy
9224 HAL3.<wbr/>3,<wbr/> to support high speed video recording,<wbr/> please implement
9225 <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
9226 capbility defined in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
9230 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9231 <!-- end of entry -->
9234 <tr class="entry" id="dynamic_android.control.videoStabilizationMode">
9235 <td class="entry_name
9237 android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode
9239 <td class="entry_type">
9240 <span class="entry_type_name entry_type_name_enum">byte</span>
9242 <span class="entry_type_visibility"> [public]</span>
9245 <span class="entry_type_hwlevel">[legacy] </span>
9249 <ul class="entry_type_enum">
9251 <span class="entry_type_enum_name">OFF (v3.2)</span>
9252 <span class="entry_type_enum_notes"><p>Video stabilization is disabled.<wbr/></p></span>
9255 <span class="entry_type_enum_name">ON (v3.2)</span>
9256 <span class="entry_type_enum_notes"><p>Video stabilization is enabled.<wbr/></p></span>
9260 </td> <!-- entry_type -->
9262 <td class="entry_description">
9263 <p>Whether video stabilization is
9267 <td class="entry_units">
9270 <td class="entry_range">
9273 <td class="entry_hal_version">
9277 <td class="entry_tags">
9278 <ul class="entry_tags">
9279 <li><a href="#tag_BC">BC</a></li>
9284 <tr class="entries_header">
9285 <th class="th_details" colspan="6">Details</th>
9287 <tr class="entry_cont">
9288 <td class="entry_details" colspan="6">
9289 <p>Video stabilization automatically warps images from
9290 the camera in order to stabilize motion between consecutive frames.<wbr/></p>
9291 <p>If enabled,<wbr/> video stabilization can modify the
9292 <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> to keep the video stream stabilized.<wbr/></p>
9293 <p>Switching between different video stabilization modes may take several
9294 frames to initialize,<wbr/> the camera device will report the current mode
9295 in capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/>
9296 the video stabilization modes in the first several capture results may
9297 still be "OFF",<wbr/> and it will become "ON" when the initialization is
9299 <p>In addition,<wbr/> not all recording sizes or frame rates may be supported for
9300 stabilization by a device that reports stabilization support.<wbr/> It is guaranteed
9301 that an output targeting a MediaRecorder or MediaCodec will be stabilized if
9302 the recording resolution is less than or equal to 1920 x 1080 (width less than
9303 or equal to 1920,<wbr/> height less than or equal to 1080),<wbr/> and the recording
9304 frame rate is less than or equal to 30fps.<wbr/> At other sizes,<wbr/> the CaptureResult
9305 <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a> field will return
9306 OFF if the recording output is not stabilized,<wbr/> or if there are no output
9307 Surface types that can be stabilized.<wbr/></p>
9308 <p>If a camera device supports both this mode and OIS
9309 (<a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may
9310 produce undesirable interaction,<wbr/> so it is recommended not to enable
9311 both at the same time.<wbr/></p>
9316 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9317 <!-- end of entry -->
9320 <tr class="entry" id="dynamic_android.control.postRawSensitivityBoost">
9321 <td class="entry_name
9323 android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost
9325 <td class="entry_type">
9326 <span class="entry_type_name">int32</span>
9328 <span class="entry_type_visibility"> [public]</span>
9335 </td> <!-- entry_type -->
9337 <td class="entry_description">
9338 <p>The amount of additional sensitivity boost applied to output images
9339 after RAW sensor data is captured.<wbr/></p>
9342 <td class="entry_units">
9343 ISO arithmetic units,<wbr/> the same as android.<wbr/>sensor.<wbr/>sensitivity
9346 <td class="entry_range">
9347 <p><a href="#static_android.control.postRawSensitivityBoostRange">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost<wbr/>Range</a></p>
9350 <td class="entry_hal_version">
9354 <td class="entry_tags">
9358 <tr class="entries_header">
9359 <th class="th_details" colspan="6">Details</th>
9361 <tr class="entry_cont">
9362 <td class="entry_details" colspan="6">
9363 <p>Some camera devices support additional digital sensitivity boosting in the
9364 camera processing pipeline after sensor RAW image is captured.<wbr/>
9365 Such a boost will be applied to YUV/<wbr/>JPEG format output images but will not
9366 have effect on RAW output formats like RAW_<wbr/>SENSOR,<wbr/> RAW10,<wbr/> RAW12 or RAW_<wbr/>OPAQUE.<wbr/></p>
9367 <p>This key will be <code>null</code> for devices that do not support any RAW format
9368 outputs.<wbr/> For devices that do support RAW format outputs,<wbr/> this key will always
9369 present,<wbr/> and if a device does not support post RAW sensitivity boost,<wbr/> it will
9370 list <code>100</code> in this key.<wbr/></p>
9371 <p>If the camera device cannot apply the exact boost requested,<wbr/> it will reduce the
9372 boost to the nearest supported value.<wbr/>
9373 The final boost value used will be available in the output capture result.<wbr/></p>
9374 <p>For devices that support post RAW sensitivity boost,<wbr/> the YUV/<wbr/>JPEG output images
9375 of such device will have the total sensitivity of
9376 <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>
9377 The sensitivity of RAW format images will always be <code><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></code></p>
9378 <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
9379 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
9384 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9385 <!-- end of entry -->
9388 <tr class="entry" id="dynamic_android.control.enableZsl">
9389 <td class="entry_name
9391 android.<wbr/>control.<wbr/>enable<wbr/>Zsl
9393 <td class="entry_type">
9394 <span class="entry_type_name entry_type_name_enum">byte</span>
9396 <span class="entry_type_visibility"> [public as boolean]</span>
9402 <ul class="entry_type_enum">
9404 <span class="entry_type_enum_name">FALSE (v3.2)</span>
9405 <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
9406 after previous requests.<wbr/></p></span>
9409 <span class="entry_type_enum_name">TRUE (v3.2)</span>
9410 <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
9411 captured before previous requests.<wbr/></p></span>
9415 </td> <!-- entry_type -->
9417 <td class="entry_description">
9418 <p>Allow camera device to enable zero-shutter-lag mode for requests with
9419 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE.<wbr/></p>
9422 <td class="entry_units">
9425 <td class="entry_range">
9428 <td class="entry_hal_version">
9432 <td class="entry_tags">
9436 <tr class="entries_header">
9437 <th class="th_details" colspan="6">Details</th>
9439 <tr class="entry_cont">
9440 <td class="entry_details" colspan="6">
9441 <p>If enableZsl is <code>true</code>,<wbr/> the camera device may enable zero-shutter-lag mode for requests with
9442 STILL_<wbr/>CAPTURE capture intent.<wbr/> The camera device may use images captured in the past to
9443 produce output images for a zero-shutter-lag request.<wbr/> The result metadata including the
9444 <a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a> reflects the source frames used to produce output images.<wbr/>
9445 Therefore,<wbr/> the contents of the output images and the result metadata may be out of order
9446 compared to previous regular requests.<wbr/> enableZsl does not affect requests with other
9447 capture intents.<wbr/></p>
9448 <p>For example,<wbr/> when requests are submitted in the following order:
9449 Request A: enableZsl is ON,<wbr/> <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> is PREVIEW
9450 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>
9451 <p>The output images for request B may have contents captured before the output images for
9452 request A,<wbr/> and the result metadata for request B may be older than the result metadata for
9453 request A.<wbr/></p>
9454 <p>Note that when enableZsl is <code>true</code>,<wbr/> it is not guaranteed to get output images captured in
9455 the past for requests with STILL_<wbr/>CAPTURE capture intent.<wbr/></p>
9456 <p>For applications targeting SDK versions O and newer,<wbr/> the value of enableZsl in
9457 TEMPLATE_<wbr/>STILL_<wbr/>CAPTURE template may be <code>true</code>.<wbr/> The value in other templates is always
9458 <code>false</code> if present.<wbr/></p>
9459 <p>For applications targeting SDK versions older than O,<wbr/> the value of enableZsl in all
9460 capture templates is always <code>false</code> if present.<wbr/></p>
9461 <p>For application-operated ZSL,<wbr/> use CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p>
9465 <tr class="entries_header">
9466 <th class="th_details" colspan="6">HAL Implementation Details</th>
9468 <tr class="entry_cont">
9469 <td class="entry_details" colspan="6">
9470 <p>It is valid for HAL to produce regular output images for requests with STILL_<wbr/>CAPTURE
9471 capture intent.<wbr/></p>
9475 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9476 <!-- end of entry -->
9479 <tr class="entry" id="dynamic_android.control.afSceneChange">
9480 <td class="entry_name
9482 android.<wbr/>control.<wbr/>af<wbr/>Scene<wbr/>Change
9484 <td class="entry_type">
9485 <span class="entry_type_name entry_type_name_enum">byte</span>
9487 <span class="entry_type_visibility"> [public]</span>
9493 <ul class="entry_type_enum">
9495 <span class="entry_type_enum_name">NOT_DETECTED (v3.3)</span>
9496 <span class="entry_type_enum_notes"><p>Scene change is not detected within the AF region(s).<wbr/></p></span>
9499 <span class="entry_type_enum_name">DETECTED (v3.3)</span>
9500 <span class="entry_type_enum_notes"><p>Scene change is detected within the AF region(s).<wbr/></p></span>
9504 </td> <!-- entry_type -->
9506 <td class="entry_description">
9507 <p>Whether a significant scene change is detected within the currently-set AF
9508 region(s).<wbr/></p>
9511 <td class="entry_units">
9514 <td class="entry_range">
9517 <td class="entry_hal_version">
9521 <td class="entry_tags">
9525 <tr class="entries_header">
9526 <th class="th_details" colspan="6">Details</th>
9528 <tr class="entry_cont">
9529 <td class="entry_details" colspan="6">
9530 <p>When the camera focus routine detects a change in the scene it is looking at,<wbr/>
9531 such as a large shift in camera viewpoint,<wbr/> significant motion in the scene,<wbr/> or a
9532 significant illumination change,<wbr/> this value will be set to DETECTED for a single capture
9533 result.<wbr/> Otherwise the value will be NOT_<wbr/>DETECTED.<wbr/> The threshold for detection is similar
9534 to what would trigger a new passive focus scan to begin in CONTINUOUS autofocus modes.<wbr/></p>
9535 <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>
9540 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9541 <!-- end of entry -->
9545 <!-- end of kind -->
9548 <!-- end of section -->
9549 <tr><td colspan="7" id="section_demosaic" class="section">demosaic</td></tr>
9552 <tr><td colspan="7" class="kind">controls</td></tr>
9554 <thead class="entries_header">
9556 <th class="th_name">Property Name</th>
9557 <th class="th_type">Type</th>
9558 <th class="th_description">Description</th>
9559 <th class="th_units">Units</th>
9560 <th class="th_range">Range</th>
9561 <th class="th_hal_version">Initial HIDL HAL version</th>
9562 <th class="th_tags">Tags</th>
9577 <tr class="entry" id="controls_android.demosaic.mode">
9578 <td class="entry_name
9580 android.<wbr/>demosaic.<wbr/>mode
9582 <td class="entry_type">
9583 <span class="entry_type_name entry_type_name_enum">byte</span>
9585 <span class="entry_type_visibility"> [system]</span>
9591 <ul class="entry_type_enum">
9593 <span class="entry_type_enum_name">FAST (v3.2)</span>
9594 <span class="entry_type_enum_notes"><p>Minimal or no slowdown of frame rate compared to
9595 Bayer RAW output.<wbr/></p></span>
9598 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
9599 <span class="entry_type_enum_notes"><p>Improved processing quality but the frame rate might be slowed down
9600 relative to raw output.<wbr/></p></span>
9604 </td> <!-- entry_type -->
9606 <td class="entry_description">
9607 <p>Controls the quality of the demosaicing
9608 processing.<wbr/></p>
9611 <td class="entry_units">
9614 <td class="entry_range">
9617 <td class="entry_hal_version">
9621 <td class="entry_tags">
9622 <ul class="entry_tags">
9623 <li><a href="#tag_FUTURE">FUTURE</a></li>
9630 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9631 <!-- end of entry -->
9635 <!-- end of kind -->
9638 <!-- end of section -->
9639 <tr><td colspan="7" id="section_edge" class="section">edge</td></tr>
9642 <tr><td colspan="7" class="kind">controls</td></tr>
9644 <thead class="entries_header">
9646 <th class="th_name">Property Name</th>
9647 <th class="th_type">Type</th>
9648 <th class="th_description">Description</th>
9649 <th class="th_units">Units</th>
9650 <th class="th_range">Range</th>
9651 <th class="th_hal_version">Initial HIDL HAL version</th>
9652 <th class="th_tags">Tags</th>
9667 <tr class="entry" id="controls_android.edge.mode">
9668 <td class="entry_name
9670 android.<wbr/>edge.<wbr/>mode
9672 <td class="entry_type">
9673 <span class="entry_type_name entry_type_name_enum">byte</span>
9675 <span class="entry_type_visibility"> [public]</span>
9678 <span class="entry_type_hwlevel">[full] </span>
9682 <ul class="entry_type_enum">
9684 <span class="entry_type_enum_name">OFF (v3.2)</span>
9685 <span class="entry_type_enum_notes"><p>No edge enhancement is applied.<wbr/></p></span>
9688 <span class="entry_type_enum_name">FAST (v3.2)</span>
9689 <span class="entry_type_enum_notes"><p>Apply edge enhancement at a quality level that does not slow down frame rate
9690 relative to sensor output.<wbr/> It may be the same as OFF if edge enhancement will
9691 slow down frame rate relative to sensor.<wbr/></p></span>
9694 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
9695 <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>
9698 <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span>
9699 <span class="entry_type_enum_optional">[optional]</span>
9700 <span class="entry_type_enum_notes"><p>Edge enhancement is applied at different
9701 levels for different output streams,<wbr/> based on resolution.<wbr/> Streams at maximum recording
9702 resolution (see <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">CameraDevice#createCaptureSession</a>)
9703 or below have edge enhancement applied,<wbr/> while higher-resolution streams have no edge
9704 enhancement applied.<wbr/> The level of edge enhancement for low-resolution streams is tuned
9705 so that frame rate is not impacted,<wbr/> and the quality is equal to or better than FAST
9706 (since it is only applied to lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p>
9707 <p>This mode is intended to be used by applications operating in a zero-shutter-lag mode
9708 with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures
9709 high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is
9710 produced via reprocessing when a user takes a picture.<wbr/> For such a use case,<wbr/> the
9711 high-resolution buffers must not have edge enhancement applied to maximize efficiency of
9712 preview and to avoid double-applying enhancement when reprocessed,<wbr/> while low-resolution
9713 buffers (used for recording or preview,<wbr/> generally) need edge enhancement applied for
9714 reasonable preview quality.<wbr/></p>
9715 <p>This mode is guaranteed to be supported by devices that support either the
9716 YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities
9717 (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will
9718 be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span>
9722 </td> <!-- entry_type -->
9724 <td class="entry_description">
9725 <p>Operation mode for edge
9726 enhancement.<wbr/></p>
9729 <td class="entry_units">
9732 <td class="entry_range">
9733 <p><a href="#static_android.edge.availableEdgeModes">android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes</a></p>
9736 <td class="entry_hal_version">
9740 <td class="entry_tags">
9741 <ul class="entry_tags">
9742 <li><a href="#tag_V1">V1</a></li>
9743 <li><a href="#tag_REPROC">REPROC</a></li>
9748 <tr class="entries_header">
9749 <th class="th_details" colspan="6">Details</th>
9751 <tr class="entry_cont">
9752 <td class="entry_details" colspan="6">
9753 <p>Edge enhancement improves sharpness and details in the captured image.<wbr/> OFF means
9754 no enhancement will be applied by the camera device.<wbr/></p>
9755 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined enhancement
9756 will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the
9757 camera device will use the highest-quality enhancement algorithms,<wbr/>
9758 even if it slows down capture rate.<wbr/> FAST means the camera device will
9759 not slow down capture rate when applying edge enhancement.<wbr/> FAST may be the same as OFF if
9760 edge enhancement will slow down capture rate.<wbr/> Every output stream will have a similar
9761 amount of enhancement applied.<wbr/></p>
9762 <p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular
9763 buffer of high-resolution images during preview and reprocess image(s) from that buffer
9764 into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies
9765 edge enhancement to low-resolution streams (below maximum recording resolution) to
9766 maximize preview quality,<wbr/> but does not apply edge enhancement to high-resolution streams,<wbr/>
9767 since those will be reprocessed later if necessary.<wbr/></p>
9768 <p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera
9769 device will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV-domain edge enhancement,<wbr/> respectively.<wbr/>
9770 The camera device may adjust its internal edge enhancement parameters for best
9771 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>
9775 <tr class="entries_header">
9776 <th class="th_details" colspan="6">HAL Implementation Details</th>
9778 <tr class="entry_cont">
9779 <td class="entry_details" colspan="6">
9780 <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
9781 adjust the internal edge enhancement reduction parameters appropriately to get the best
9782 quality images.<wbr/></p>
9786 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9787 <!-- end of entry -->
9790 <tr class="entry" id="controls_android.edge.strength">
9791 <td class="entry_name
9793 android.<wbr/>edge.<wbr/>strength
9795 <td class="entry_type">
9796 <span class="entry_type_name">byte</span>
9798 <span class="entry_type_visibility"> [system]</span>
9805 </td> <!-- entry_type -->
9807 <td class="entry_description">
9808 <p>Control the amount of edge enhancement
9809 applied to the images</p>
9812 <td class="entry_units">
9813 1-10; 10 is maximum sharpening
9816 <td class="entry_range">
9819 <td class="entry_hal_version">
9823 <td class="entry_tags">
9824 <ul class="entry_tags">
9825 <li><a href="#tag_FUTURE">FUTURE</a></li>
9832 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9833 <!-- end of entry -->
9837 <!-- end of kind -->
9839 <tr><td colspan="7" class="kind">static</td></tr>
9841 <thead class="entries_header">
9843 <th class="th_name">Property Name</th>
9844 <th class="th_type">Type</th>
9845 <th class="th_description">Description</th>
9846 <th class="th_units">Units</th>
9847 <th class="th_range">Range</th>
9848 <th class="th_hal_version">Initial HIDL HAL version</th>
9849 <th class="th_tags">Tags</th>
9864 <tr class="entry" id="static_android.edge.availableEdgeModes">
9865 <td class="entry_name
9867 android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes
9869 <td class="entry_type">
9870 <span class="entry_type_name">byte</span>
9871 <span class="entry_type_container">x</span>
9873 <span class="entry_type_array">
9876 <span class="entry_type_visibility"> [public as enumList]</span>
9879 <span class="entry_type_hwlevel">[full] </span>
9882 <div class="entry_type_notes">list of enums</div>
9885 </td> <!-- entry_type -->
9887 <td class="entry_description">
9888 <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
9892 <td class="entry_units">
9895 <td class="entry_range">
9896 <p>Any value listed in <a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></p>
9899 <td class="entry_hal_version">
9903 <td class="entry_tags">
9904 <ul class="entry_tags">
9905 <li><a href="#tag_V1">V1</a></li>
9906 <li><a href="#tag_REPROC">REPROC</a></li>
9911 <tr class="entries_header">
9912 <th class="th_details" colspan="6">Details</th>
9914 <tr class="entry_cont">
9915 <td class="entry_details" colspan="6">
9916 <p>Full-capability camera devices must always support OFF; camera devices that support
9917 YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING will list ZERO_<wbr/>SHUTTER_<wbr/>LAG; all devices will
9918 list FAST.<wbr/></p>
9922 <tr class="entries_header">
9923 <th class="th_details" colspan="6">HAL Implementation Details</th>
9925 <tr class="entry_cont">
9926 <td class="entry_details" colspan="6">
9927 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if edge enhancement control is available
9928 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
9929 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
9930 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
9934 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9935 <!-- end of entry -->
9939 <!-- end of kind -->
9941 <tr><td colspan="7" class="kind">dynamic</td></tr>
9943 <thead class="entries_header">
9945 <th class="th_name">Property Name</th>
9946 <th class="th_type">Type</th>
9947 <th class="th_description">Description</th>
9948 <th class="th_units">Units</th>
9949 <th class="th_range">Range</th>
9950 <th class="th_hal_version">Initial HIDL HAL version</th>
9951 <th class="th_tags">Tags</th>
9966 <tr class="entry" id="dynamic_android.edge.mode">
9967 <td class="entry_name
9969 android.<wbr/>edge.<wbr/>mode
9971 <td class="entry_type">
9972 <span class="entry_type_name entry_type_name_enum">byte</span>
9974 <span class="entry_type_visibility"> [public]</span>
9977 <span class="entry_type_hwlevel">[full] </span>
9981 <ul class="entry_type_enum">
9983 <span class="entry_type_enum_name">OFF (v3.2)</span>
9984 <span class="entry_type_enum_notes"><p>No edge enhancement is applied.<wbr/></p></span>
9987 <span class="entry_type_enum_name">FAST (v3.2)</span>
9988 <span class="entry_type_enum_notes"><p>Apply edge enhancement at a quality level that does not slow down frame rate
9989 relative to sensor output.<wbr/> It may be the same as OFF if edge enhancement will
9990 slow down frame rate relative to sensor.<wbr/></p></span>
9993 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
9994 <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>
9997 <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span>
9998 <span class="entry_type_enum_optional">[optional]</span>
9999 <span class="entry_type_enum_notes"><p>Edge enhancement is applied at different
10000 levels for different output streams,<wbr/> based on resolution.<wbr/> Streams at maximum recording
10001 resolution (see <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">CameraDevice#createCaptureSession</a>)
10002 or below have edge enhancement applied,<wbr/> while higher-resolution streams have no edge
10003 enhancement applied.<wbr/> The level of edge enhancement for low-resolution streams is tuned
10004 so that frame rate is not impacted,<wbr/> and the quality is equal to or better than FAST
10005 (since it is only applied to lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p>
10006 <p>This mode is intended to be used by applications operating in a zero-shutter-lag mode
10007 with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures
10008 high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is
10009 produced via reprocessing when a user takes a picture.<wbr/> For such a use case,<wbr/> the
10010 high-resolution buffers must not have edge enhancement applied to maximize efficiency of
10011 preview and to avoid double-applying enhancement when reprocessed,<wbr/> while low-resolution
10012 buffers (used for recording or preview,<wbr/> generally) need edge enhancement applied for
10013 reasonable preview quality.<wbr/></p>
10014 <p>This mode is guaranteed to be supported by devices that support either the
10015 YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities
10016 (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will
10017 be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span>
10021 </td> <!-- entry_type -->
10023 <td class="entry_description">
10024 <p>Operation mode for edge
10025 enhancement.<wbr/></p>
10028 <td class="entry_units">
10031 <td class="entry_range">
10032 <p><a href="#static_android.edge.availableEdgeModes">android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes</a></p>
10035 <td class="entry_hal_version">
10039 <td class="entry_tags">
10040 <ul class="entry_tags">
10041 <li><a href="#tag_V1">V1</a></li>
10042 <li><a href="#tag_REPROC">REPROC</a></li>
10047 <tr class="entries_header">
10048 <th class="th_details" colspan="6">Details</th>
10050 <tr class="entry_cont">
10051 <td class="entry_details" colspan="6">
10052 <p>Edge enhancement improves sharpness and details in the captured image.<wbr/> OFF means
10053 no enhancement will be applied by the camera device.<wbr/></p>
10054 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined enhancement
10055 will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the
10056 camera device will use the highest-quality enhancement algorithms,<wbr/>
10057 even if it slows down capture rate.<wbr/> FAST means the camera device will
10058 not slow down capture rate when applying edge enhancement.<wbr/> FAST may be the same as OFF if
10059 edge enhancement will slow down capture rate.<wbr/> Every output stream will have a similar
10060 amount of enhancement applied.<wbr/></p>
10061 <p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular
10062 buffer of high-resolution images during preview and reprocess image(s) from that buffer
10063 into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies
10064 edge enhancement to low-resolution streams (below maximum recording resolution) to
10065 maximize preview quality,<wbr/> but does not apply edge enhancement to high-resolution streams,<wbr/>
10066 since those will be reprocessed later if necessary.<wbr/></p>
10067 <p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera
10068 device will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV-domain edge enhancement,<wbr/> respectively.<wbr/>
10069 The camera device may adjust its internal edge enhancement parameters for best
10070 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>
10074 <tr class="entries_header">
10075 <th class="th_details" colspan="6">HAL Implementation Details</th>
10077 <tr class="entry_cont">
10078 <td class="entry_details" colspan="6">
10079 <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
10080 adjust the internal edge enhancement reduction parameters appropriately to get the best
10081 quality images.<wbr/></p>
10085 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10086 <!-- end of entry -->
10090 <!-- end of kind -->
10093 <!-- end of section -->
10094 <tr><td colspan="7" id="section_flash" class="section">flash</td></tr>
10097 <tr><td colspan="7" class="kind">controls</td></tr>
10099 <thead class="entries_header">
10101 <th class="th_name">Property Name</th>
10102 <th class="th_type">Type</th>
10103 <th class="th_description">Description</th>
10104 <th class="th_units">Units</th>
10105 <th class="th_range">Range</th>
10106 <th class="th_hal_version">Initial HIDL HAL version</th>
10107 <th class="th_tags">Tags</th>
10122 <tr class="entry" id="controls_android.flash.firingPower">
10123 <td class="entry_name
10125 android.<wbr/>flash.<wbr/>firing<wbr/>Power
10127 <td class="entry_type">
10128 <span class="entry_type_name">byte</span>
10130 <span class="entry_type_visibility"> [system]</span>
10137 </td> <!-- entry_type -->
10139 <td class="entry_description">
10140 <p>Power for flash firing/<wbr/>torch</p>
10143 <td class="entry_units">
10144 10 is max power; 0 is no flash.<wbr/> Linear
10147 <td class="entry_range">
10151 <td class="entry_hal_version">
10155 <td class="entry_tags">
10156 <ul class="entry_tags">
10157 <li><a href="#tag_FUTURE">FUTURE</a></li>
10162 <tr class="entries_header">
10163 <th class="th_details" colspan="6">Details</th>
10165 <tr class="entry_cont">
10166 <td class="entry_details" colspan="6">
10167 <p>Power for snapshot may use a different scale than
10168 for torch mode.<wbr/> Only one entry for torch mode will be
10174 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10175 <!-- end of entry -->
10178 <tr class="entry" id="controls_android.flash.firingTime">
10179 <td class="entry_name
10181 android.<wbr/>flash.<wbr/>firing<wbr/>Time
10183 <td class="entry_type">
10184 <span class="entry_type_name">int64</span>
10186 <span class="entry_type_visibility"> [system]</span>
10193 </td> <!-- entry_type -->
10195 <td class="entry_description">
10196 <p>Firing time of flash relative to start of
10200 <td class="entry_units">
10204 <td class="entry_range">
10205 <p>0-(exposure time-flash duration)</p>
10208 <td class="entry_hal_version">
10212 <td class="entry_tags">
10213 <ul class="entry_tags">
10214 <li><a href="#tag_FUTURE">FUTURE</a></li>
10219 <tr class="entries_header">
10220 <th class="th_details" colspan="6">Details</th>
10222 <tr class="entry_cont">
10223 <td class="entry_details" colspan="6">
10224 <p>Clamped to (0,<wbr/> exposure time - flash
10225 duration).<wbr/></p>
10230 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10231 <!-- end of entry -->
10234 <tr class="entry" id="controls_android.flash.mode">
10235 <td class="entry_name
10237 android.<wbr/>flash.<wbr/>mode
10239 <td class="entry_type">
10240 <span class="entry_type_name entry_type_name_enum">byte</span>
10242 <span class="entry_type_visibility"> [public]</span>
10245 <span class="entry_type_hwlevel">[legacy] </span>
10249 <ul class="entry_type_enum">
10251 <span class="entry_type_enum_name">OFF (v3.2)</span>
10252 <span class="entry_type_enum_notes"><p>Do not fire the flash for this capture.<wbr/></p></span>
10255 <span class="entry_type_enum_name">SINGLE (v3.2)</span>
10256 <span class="entry_type_enum_notes"><p>If the flash is available and charged,<wbr/> fire flash
10257 for this capture.<wbr/></p></span>
10260 <span class="entry_type_enum_name">TORCH (v3.2)</span>
10261 <span class="entry_type_enum_notes"><p>Transition flash to continuously on.<wbr/></p></span>
10265 </td> <!-- entry_type -->
10267 <td class="entry_description">
10268 <p>The desired mode for for the camera device's flash control.<wbr/></p>
10271 <td class="entry_units">
10274 <td class="entry_range">
10277 <td class="entry_hal_version">
10281 <td class="entry_tags">
10282 <ul class="entry_tags">
10283 <li><a href="#tag_BC">BC</a></li>
10288 <tr class="entries_header">
10289 <th class="th_details" colspan="6">Details</th>
10291 <tr class="entry_cont">
10292 <td class="entry_details" colspan="6">
10293 <p>This control is only effective when flash unit is available
10294 (<code><a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> == true</code>).<wbr/></p>
10295 <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/>
10296 Otherwise,<wbr/> the camera device auto-exposure related flash control (ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/>
10297 ON_<wbr/>ALWAYS_<wbr/>FLASH,<wbr/> or ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE) will override this control.<wbr/></p>
10298 <p>When set to OFF,<wbr/> the camera device will not fire flash for this capture.<wbr/></p>
10299 <p>When set to SINGLE,<wbr/> the camera device will fire flash regardless of the camera
10300 device's auto-exposure routine's result.<wbr/> When used in still capture case,<wbr/> this
10301 control should be used along with auto-exposure (AE) precapture metering sequence
10302 (<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>
10303 <p>When set to TORCH,<wbr/> the flash will be on continuously.<wbr/> This mode can be used
10304 for use cases such as preview,<wbr/> auto-focus assist,<wbr/> still capture,<wbr/> or video recording.<wbr/></p>
10305 <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>
10310 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10311 <!-- end of entry -->
10315 <!-- end of kind -->
10317 <tr><td colspan="7" class="kind">static</td></tr>
10319 <thead class="entries_header">
10321 <th class="th_name">Property Name</th>
10322 <th class="th_type">Type</th>
10323 <th class="th_description">Description</th>
10324 <th class="th_units">Units</th>
10325 <th class="th_range">Range</th>
10326 <th class="th_hal_version">Initial HIDL HAL version</th>
10327 <th class="th_tags">Tags</th>
10344 <tr class="entry" id="static_android.flash.info.available">
10345 <td class="entry_name
10347 android.<wbr/>flash.<wbr/>info.<wbr/>available
10349 <td class="entry_type">
10350 <span class="entry_type_name entry_type_name_enum">byte</span>
10352 <span class="entry_type_visibility"> [public as boolean]</span>
10355 <span class="entry_type_hwlevel">[legacy] </span>
10359 <ul class="entry_type_enum">
10361 <span class="entry_type_enum_name">FALSE (v3.2)</span>
10364 <span class="entry_type_enum_name">TRUE (v3.2)</span>
10368 </td> <!-- entry_type -->
10370 <td class="entry_description">
10371 <p>Whether this camera device has a
10372 flash unit.<wbr/></p>
10375 <td class="entry_units">
10378 <td class="entry_range">
10381 <td class="entry_hal_version">
10385 <td class="entry_tags">
10386 <ul class="entry_tags">
10387 <li><a href="#tag_BC">BC</a></li>
10392 <tr class="entries_header">
10393 <th class="th_details" colspan="6">Details</th>
10395 <tr class="entry_cont">
10396 <td class="entry_details" colspan="6">
10397 <p>Will be <code>false</code> if no flash is available.<wbr/></p>
10398 <p>If there is no flash unit,<wbr/> none of the flash controls do
10399 anything.<wbr/></p>
10404 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10405 <!-- end of entry -->
10408 <tr class="entry" id="static_android.flash.info.chargeDuration">
10409 <td class="entry_name
10411 android.<wbr/>flash.<wbr/>info.<wbr/>charge<wbr/>Duration
10413 <td class="entry_type">
10414 <span class="entry_type_name">int64</span>
10416 <span class="entry_type_visibility"> [system]</span>
10423 </td> <!-- entry_type -->
10425 <td class="entry_description">
10426 <p>Time taken before flash can fire
10430 <td class="entry_units">
10434 <td class="entry_range">
10438 <td class="entry_hal_version">
10442 <td class="entry_tags">
10443 <ul class="entry_tags">
10444 <li><a href="#tag_FUTURE">FUTURE</a></li>
10449 <tr class="entries_header">
10450 <th class="th_details" colspan="6">Details</th>
10452 <tr class="entry_cont">
10453 <td class="entry_details" colspan="6">
10454 <p>1 second too long/<wbr/>too short for recharge? Should
10455 this be power-dependent?</p>
10460 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10461 <!-- end of entry -->
10467 <tr class="entry" id="static_android.flash.colorTemperature">
10468 <td class="entry_name
10470 android.<wbr/>flash.<wbr/>color<wbr/>Temperature
10472 <td class="entry_type">
10473 <span class="entry_type_name">byte</span>
10475 <span class="entry_type_visibility"> [system]</span>
10482 </td> <!-- entry_type -->
10484 <td class="entry_description">
10485 <p>The x,<wbr/>y whitepoint of the
10489 <td class="entry_units">
10493 <td class="entry_range">
10494 <p>0-1 for both</p>
10497 <td class="entry_hal_version">
10501 <td class="entry_tags">
10502 <ul class="entry_tags">
10503 <li><a href="#tag_FUTURE">FUTURE</a></li>
10510 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10511 <!-- end of entry -->
10514 <tr class="entry" id="static_android.flash.maxEnergy">
10515 <td class="entry_name
10517 android.<wbr/>flash.<wbr/>max<wbr/>Energy
10519 <td class="entry_type">
10520 <span class="entry_type_name">byte</span>
10522 <span class="entry_type_visibility"> [system]</span>
10529 </td> <!-- entry_type -->
10531 <td class="entry_description">
10532 <p>Max energy output of the flash for a full
10533 power single flash</p>
10536 <td class="entry_units">
10540 <td class="entry_range">
10544 <td class="entry_hal_version">
10548 <td class="entry_tags">
10549 <ul class="entry_tags">
10550 <li><a href="#tag_FUTURE">FUTURE</a></li>
10557 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10558 <!-- end of entry -->
10562 <!-- end of kind -->
10564 <tr><td colspan="7" class="kind">dynamic</td></tr>
10566 <thead class="entries_header">
10568 <th class="th_name">Property Name</th>
10569 <th class="th_type">Type</th>
10570 <th class="th_description">Description</th>
10571 <th class="th_units">Units</th>
10572 <th class="th_range">Range</th>
10573 <th class="th_hal_version">Initial HIDL HAL version</th>
10574 <th class="th_tags">Tags</th>
10589 <tr class="entry" id="dynamic_android.flash.firingPower">
10590 <td class="entry_name
10592 android.<wbr/>flash.<wbr/>firing<wbr/>Power
10594 <td class="entry_type">
10595 <span class="entry_type_name">byte</span>
10597 <span class="entry_type_visibility"> [system]</span>
10604 </td> <!-- entry_type -->
10606 <td class="entry_description">
10607 <p>Power for flash firing/<wbr/>torch</p>
10610 <td class="entry_units">
10611 10 is max power; 0 is no flash.<wbr/> Linear
10614 <td class="entry_range">
10618 <td class="entry_hal_version">
10622 <td class="entry_tags">
10623 <ul class="entry_tags">
10624 <li><a href="#tag_FUTURE">FUTURE</a></li>
10629 <tr class="entries_header">
10630 <th class="th_details" colspan="6">Details</th>
10632 <tr class="entry_cont">
10633 <td class="entry_details" colspan="6">
10634 <p>Power for snapshot may use a different scale than
10635 for torch mode.<wbr/> Only one entry for torch mode will be
10641 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10642 <!-- end of entry -->
10645 <tr class="entry" id="dynamic_android.flash.firingTime">
10646 <td class="entry_name
10648 android.<wbr/>flash.<wbr/>firing<wbr/>Time
10650 <td class="entry_type">
10651 <span class="entry_type_name">int64</span>
10653 <span class="entry_type_visibility"> [system]</span>
10660 </td> <!-- entry_type -->
10662 <td class="entry_description">
10663 <p>Firing time of flash relative to start of
10667 <td class="entry_units">
10671 <td class="entry_range">
10672 <p>0-(exposure time-flash duration)</p>
10675 <td class="entry_hal_version">
10679 <td class="entry_tags">
10680 <ul class="entry_tags">
10681 <li><a href="#tag_FUTURE">FUTURE</a></li>
10686 <tr class="entries_header">
10687 <th class="th_details" colspan="6">Details</th>
10689 <tr class="entry_cont">
10690 <td class="entry_details" colspan="6">
10691 <p>Clamped to (0,<wbr/> exposure time - flash
10692 duration).<wbr/></p>
10697 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10698 <!-- end of entry -->
10701 <tr class="entry" id="dynamic_android.flash.mode">
10702 <td class="entry_name
10704 android.<wbr/>flash.<wbr/>mode
10706 <td class="entry_type">
10707 <span class="entry_type_name entry_type_name_enum">byte</span>
10709 <span class="entry_type_visibility"> [public]</span>
10712 <span class="entry_type_hwlevel">[legacy] </span>
10716 <ul class="entry_type_enum">
10718 <span class="entry_type_enum_name">OFF (v3.2)</span>
10719 <span class="entry_type_enum_notes"><p>Do not fire the flash for this capture.<wbr/></p></span>
10722 <span class="entry_type_enum_name">SINGLE (v3.2)</span>
10723 <span class="entry_type_enum_notes"><p>If the flash is available and charged,<wbr/> fire flash
10724 for this capture.<wbr/></p></span>
10727 <span class="entry_type_enum_name">TORCH (v3.2)</span>
10728 <span class="entry_type_enum_notes"><p>Transition flash to continuously on.<wbr/></p></span>
10732 </td> <!-- entry_type -->
10734 <td class="entry_description">
10735 <p>The desired mode for for the camera device's flash control.<wbr/></p>
10738 <td class="entry_units">
10741 <td class="entry_range">
10744 <td class="entry_hal_version">
10748 <td class="entry_tags">
10749 <ul class="entry_tags">
10750 <li><a href="#tag_BC">BC</a></li>
10755 <tr class="entries_header">
10756 <th class="th_details" colspan="6">Details</th>
10758 <tr class="entry_cont">
10759 <td class="entry_details" colspan="6">
10760 <p>This control is only effective when flash unit is available
10761 (<code><a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> == true</code>).<wbr/></p>
10762 <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/>
10763 Otherwise,<wbr/> the camera device auto-exposure related flash control (ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/>
10764 ON_<wbr/>ALWAYS_<wbr/>FLASH,<wbr/> or ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE) will override this control.<wbr/></p>
10765 <p>When set to OFF,<wbr/> the camera device will not fire flash for this capture.<wbr/></p>
10766 <p>When set to SINGLE,<wbr/> the camera device will fire flash regardless of the camera
10767 device's auto-exposure routine's result.<wbr/> When used in still capture case,<wbr/> this
10768 control should be used along with auto-exposure (AE) precapture metering sequence
10769 (<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>
10770 <p>When set to TORCH,<wbr/> the flash will be on continuously.<wbr/> This mode can be used
10771 for use cases such as preview,<wbr/> auto-focus assist,<wbr/> still capture,<wbr/> or video recording.<wbr/></p>
10772 <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>
10777 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10778 <!-- end of entry -->
10781 <tr class="entry" id="dynamic_android.flash.state">
10782 <td class="entry_name
10784 android.<wbr/>flash.<wbr/>state
10786 <td class="entry_type">
10787 <span class="entry_type_name entry_type_name_enum">byte</span>
10789 <span class="entry_type_visibility"> [public]</span>
10792 <span class="entry_type_hwlevel">[limited] </span>
10796 <ul class="entry_type_enum">
10798 <span class="entry_type_enum_name">UNAVAILABLE (v3.2)</span>
10799 <span class="entry_type_enum_notes"><p>No flash on camera.<wbr/></p></span>
10802 <span class="entry_type_enum_name">CHARGING (v3.2)</span>
10803 <span class="entry_type_enum_notes"><p>Flash is charging and cannot be fired.<wbr/></p></span>
10806 <span class="entry_type_enum_name">READY (v3.2)</span>
10807 <span class="entry_type_enum_notes"><p>Flash is ready to fire.<wbr/></p></span>
10810 <span class="entry_type_enum_name">FIRED (v3.2)</span>
10811 <span class="entry_type_enum_notes"><p>Flash fired for this capture.<wbr/></p></span>
10814 <span class="entry_type_enum_name">PARTIAL (v3.2)</span>
10815 <span class="entry_type_enum_notes"><p>Flash partially illuminated this frame.<wbr/></p>
10816 <p>This is usually due to the next or previous frame having
10817 the flash fire,<wbr/> and the flash spilling into this capture
10818 due to hardware limitations.<wbr/></p></span>
10822 </td> <!-- entry_type -->
10824 <td class="entry_description">
10825 <p>Current state of the flash
10829 <td class="entry_units">
10832 <td class="entry_range">
10835 <td class="entry_hal_version">
10839 <td class="entry_tags">
10843 <tr class="entries_header">
10844 <th class="th_details" colspan="6">Details</th>
10846 <tr class="entry_cont">
10847 <td class="entry_details" colspan="6">
10848 <p>When the camera device doesn't have flash unit
10849 (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/>
10850 Other states indicate the current flash status.<wbr/></p>
10851 <p>In certain conditions,<wbr/> this will be available on LEGACY devices:</p>
10853 <li>Flash-less cameras always return UNAVAILABLE.<wbr/></li>
10854 <li>Using <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>==</code> ON_<wbr/>ALWAYS_<wbr/>FLASH
10855 will always return FIRED.<wbr/></li>
10856 <li>Using <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> <code>==</code> TORCH
10857 will always return FIRED.<wbr/></li>
10859 <p>In all other conditions the state will not be available on
10860 LEGACY devices (i.<wbr/>e.<wbr/> it will be <code>null</code>).<wbr/></p>
10865 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10866 <!-- end of entry -->
10870 <!-- end of kind -->
10873 <!-- end of section -->
10874 <tr><td colspan="7" id="section_hotPixel" class="section">hotPixel</td></tr>
10877 <tr><td colspan="7" class="kind">controls</td></tr>
10879 <thead class="entries_header">
10881 <th class="th_name">Property Name</th>
10882 <th class="th_type">Type</th>
10883 <th class="th_description">Description</th>
10884 <th class="th_units">Units</th>
10885 <th class="th_range">Range</th>
10886 <th class="th_hal_version">Initial HIDL HAL version</th>
10887 <th class="th_tags">Tags</th>
10902 <tr class="entry" id="controls_android.hotPixel.mode">
10903 <td class="entry_name
10905 android.<wbr/>hot<wbr/>Pixel.<wbr/>mode
10907 <td class="entry_type">
10908 <span class="entry_type_name entry_type_name_enum">byte</span>
10910 <span class="entry_type_visibility"> [public]</span>
10916 <ul class="entry_type_enum">
10918 <span class="entry_type_enum_name">OFF (v3.2)</span>
10919 <span class="entry_type_enum_notes"><p>No hot pixel correction is applied.<wbr/></p>
10920 <p>The frame rate must not be reduced relative to sensor raw output
10921 for this option.<wbr/></p>
10922 <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>
10925 <span class="entry_type_enum_name">FAST (v3.2)</span>
10926 <span class="entry_type_enum_notes"><p>Hot pixel correction is applied,<wbr/> without reducing frame
10927 rate relative to sensor raw output.<wbr/></p>
10928 <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>
10931 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
10932 <span class="entry_type_enum_notes"><p>High-quality hot pixel correction is applied,<wbr/> at a cost
10933 of possibly reduced frame rate relative to sensor raw output.<wbr/></p>
10934 <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>
10938 </td> <!-- entry_type -->
10940 <td class="entry_description">
10941 <p>Operational mode for hot pixel correction.<wbr/></p>
10944 <td class="entry_units">
10947 <td class="entry_range">
10948 <p><a href="#static_android.hotPixel.availableHotPixelModes">android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes</a></p>
10951 <td class="entry_hal_version">
10955 <td class="entry_tags">
10956 <ul class="entry_tags">
10957 <li><a href="#tag_V1">V1</a></li>
10958 <li><a href="#tag_RAW">RAW</a></li>
10963 <tr class="entries_header">
10964 <th class="th_details" colspan="6">Details</th>
10966 <tr class="entry_cont">
10967 <td class="entry_details" colspan="6">
10968 <p>Hotpixel correction interpolates out,<wbr/> or otherwise removes,<wbr/> pixels
10969 that do not accurately measure the incoming light (i.<wbr/>e.<wbr/> pixels that
10970 are stuck at an arbitrary value or are oversensitive).<wbr/></p>
10975 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10976 <!-- end of entry -->
10980 <!-- end of kind -->
10982 <tr><td colspan="7" class="kind">static</td></tr>
10984 <thead class="entries_header">
10986 <th class="th_name">Property Name</th>
10987 <th class="th_type">Type</th>
10988 <th class="th_description">Description</th>
10989 <th class="th_units">Units</th>
10990 <th class="th_range">Range</th>
10991 <th class="th_hal_version">Initial HIDL HAL version</th>
10992 <th class="th_tags">Tags</th>
11007 <tr class="entry" id="static_android.hotPixel.availableHotPixelModes">
11008 <td class="entry_name
11010 android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes
11012 <td class="entry_type">
11013 <span class="entry_type_name">byte</span>
11014 <span class="entry_type_container">x</span>
11016 <span class="entry_type_array">
11019 <span class="entry_type_visibility"> [public as enumList]</span>
11024 <div class="entry_type_notes">list of enums</div>
11027 </td> <!-- entry_type -->
11029 <td class="entry_description">
11030 <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
11031 camera device.<wbr/></p>
11034 <td class="entry_units">
11037 <td class="entry_range">
11038 <p>Any value listed in <a href="#controls_android.hotPixel.mode">android.<wbr/>hot<wbr/>Pixel.<wbr/>mode</a></p>
11041 <td class="entry_hal_version">
11045 <td class="entry_tags">
11046 <ul class="entry_tags">
11047 <li><a href="#tag_V1">V1</a></li>
11048 <li><a href="#tag_RAW">RAW</a></li>
11053 <tr class="entries_header">
11054 <th class="th_details" colspan="6">Details</th>
11056 <tr class="entry_cont">
11057 <td class="entry_details" colspan="6">
11058 <p>FULL mode camera devices will always support FAST.<wbr/></p>
11062 <tr class="entries_header">
11063 <th class="th_details" colspan="6">HAL Implementation Details</th>
11065 <tr class="entry_cont">
11066 <td class="entry_details" colspan="6">
11067 <p>To avoid performance issues,<wbr/> there will be significantly fewer hot
11068 pixels than actual pixels on the camera sensor.<wbr/>
11069 HAL must support both FAST and HIGH_<wbr/>QUALITY if hot pixel correction control is available
11070 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
11071 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
11072 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
11076 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11077 <!-- end of entry -->
11081 <!-- end of kind -->
11083 <tr><td colspan="7" class="kind">dynamic</td></tr>
11085 <thead class="entries_header">
11087 <th class="th_name">Property Name</th>
11088 <th class="th_type">Type</th>
11089 <th class="th_description">Description</th>
11090 <th class="th_units">Units</th>
11091 <th class="th_range">Range</th>
11092 <th class="th_hal_version">Initial HIDL HAL version</th>
11093 <th class="th_tags">Tags</th>
11108 <tr class="entry" id="dynamic_android.hotPixel.mode">
11109 <td class="entry_name
11111 android.<wbr/>hot<wbr/>Pixel.<wbr/>mode
11113 <td class="entry_type">
11114 <span class="entry_type_name entry_type_name_enum">byte</span>
11116 <span class="entry_type_visibility"> [public]</span>
11122 <ul class="entry_type_enum">
11124 <span class="entry_type_enum_name">OFF (v3.2)</span>
11125 <span class="entry_type_enum_notes"><p>No hot pixel correction is applied.<wbr/></p>
11126 <p>The frame rate must not be reduced relative to sensor raw output
11127 for this option.<wbr/></p>
11128 <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>
11131 <span class="entry_type_enum_name">FAST (v3.2)</span>
11132 <span class="entry_type_enum_notes"><p>Hot pixel correction is applied,<wbr/> without reducing frame
11133 rate relative to sensor raw output.<wbr/></p>
11134 <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>
11137 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
11138 <span class="entry_type_enum_notes"><p>High-quality hot pixel correction is applied,<wbr/> at a cost
11139 of possibly reduced frame rate relative to sensor raw output.<wbr/></p>
11140 <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>
11144 </td> <!-- entry_type -->
11146 <td class="entry_description">
11147 <p>Operational mode for hot pixel correction.<wbr/></p>
11150 <td class="entry_units">
11153 <td class="entry_range">
11154 <p><a href="#static_android.hotPixel.availableHotPixelModes">android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes</a></p>
11157 <td class="entry_hal_version">
11161 <td class="entry_tags">
11162 <ul class="entry_tags">
11163 <li><a href="#tag_V1">V1</a></li>
11164 <li><a href="#tag_RAW">RAW</a></li>
11169 <tr class="entries_header">
11170 <th class="th_details" colspan="6">Details</th>
11172 <tr class="entry_cont">
11173 <td class="entry_details" colspan="6">
11174 <p>Hotpixel correction interpolates out,<wbr/> or otherwise removes,<wbr/> pixels
11175 that do not accurately measure the incoming light (i.<wbr/>e.<wbr/> pixels that
11176 are stuck at an arbitrary value or are oversensitive).<wbr/></p>
11181 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11182 <!-- end of entry -->
11186 <!-- end of kind -->
11189 <!-- end of section -->
11190 <tr><td colspan="7" id="section_jpeg" class="section">jpeg</td></tr>
11193 <tr><td colspan="7" class="kind">controls</td></tr>
11195 <thead class="entries_header">
11197 <th class="th_name">Property Name</th>
11198 <th class="th_type">Type</th>
11199 <th class="th_description">Description</th>
11200 <th class="th_units">Units</th>
11201 <th class="th_range">Range</th>
11202 <th class="th_hal_version">Initial HIDL HAL version</th>
11203 <th class="th_tags">Tags</th>
11218 <tr class="entry" id="controls_android.jpeg.gpsLocation">
11219 <td class="entry_name
11221 android.<wbr/>jpeg.<wbr/>gps<wbr/>Location
11223 <td class="entry_type">
11224 <span class="entry_type_name">byte</span>
11226 <span class="entry_type_visibility"> [java_public as location]</span>
11228 <span class="entry_type_synthetic">[synthetic] </span>
11230 <span class="entry_type_hwlevel">[legacy] </span>
11235 </td> <!-- entry_type -->
11237 <td class="entry_description">
11238 <p>A location object to use when generating image GPS metadata.<wbr/></p>
11241 <td class="entry_units">
11244 <td class="entry_range">
11247 <td class="entry_hal_version">
11251 <td class="entry_tags">
11255 <tr class="entries_header">
11256 <th class="th_details" colspan="6">Details</th>
11258 <tr class="entry_cont">
11259 <td class="entry_details" colspan="6">
11260 <p>Setting a location object in a request will include the GPS coordinates of the location
11261 into any JPEG images captured based on the request.<wbr/> These coordinates can then be
11262 viewed by anyone who receives the JPEG image.<wbr/></p>
11267 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11268 <!-- end of entry -->
11271 <tr class="entry" id="controls_android.jpeg.gpsCoordinates">
11272 <td class="entry_name
11274 android.<wbr/>jpeg.<wbr/>gps<wbr/>Coordinates
11276 <td class="entry_type">
11277 <span class="entry_type_name">double</span>
11278 <span class="entry_type_container">x</span>
11280 <span class="entry_type_array">
11283 <span class="entry_type_visibility"> [ndk_public]</span>
11286 <span class="entry_type_hwlevel">[legacy] </span>
11289 <div class="entry_type_notes">latitude,<wbr/> longitude,<wbr/> altitude.<wbr/> First two in degrees,<wbr/> the third in meters</div>
11292 </td> <!-- entry_type -->
11294 <td class="entry_description">
11295 <p>GPS coordinates to include in output JPEG
11299 <td class="entry_units">
11302 <td class="entry_range">
11303 <p>(-180 - 180],<wbr/> [-90,<wbr/>90],<wbr/> [-inf,<wbr/> inf]</p>
11306 <td class="entry_hal_version">
11310 <td class="entry_tags">
11311 <ul class="entry_tags">
11312 <li><a href="#tag_BC">BC</a></li>
11319 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11320 <!-- end of entry -->
11323 <tr class="entry" id="controls_android.jpeg.gpsProcessingMethod">
11324 <td class="entry_name
11326 android.<wbr/>jpeg.<wbr/>gps<wbr/>Processing<wbr/>Method
11328 <td class="entry_type">
11329 <span class="entry_type_name">byte</span>
11331 <span class="entry_type_visibility"> [ndk_public as string]</span>
11334 <span class="entry_type_hwlevel">[legacy] </span>
11339 </td> <!-- entry_type -->
11341 <td class="entry_description">
11342 <p>32 characters describing GPS algorithm to
11343 include in EXIF.<wbr/></p>
11346 <td class="entry_units">
11347 UTF-8 null-terminated string
11350 <td class="entry_range">
11353 <td class="entry_hal_version">
11357 <td class="entry_tags">
11358 <ul class="entry_tags">
11359 <li><a href="#tag_BC">BC</a></li>
11366 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11367 <!-- end of entry -->
11370 <tr class="entry" id="controls_android.jpeg.gpsTimestamp">
11371 <td class="entry_name
11373 android.<wbr/>jpeg.<wbr/>gps<wbr/>Timestamp
11375 <td class="entry_type">
11376 <span class="entry_type_name">int64</span>
11378 <span class="entry_type_visibility"> [ndk_public]</span>
11381 <span class="entry_type_hwlevel">[legacy] </span>
11386 </td> <!-- entry_type -->
11388 <td class="entry_description">
11389 <p>Time GPS fix was made to include in
11393 <td class="entry_units">
11394 UTC in seconds since January 1,<wbr/> 1970
11397 <td class="entry_range">
11400 <td class="entry_hal_version">
11404 <td class="entry_tags">
11405 <ul class="entry_tags">
11406 <li><a href="#tag_BC">BC</a></li>
11413 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11414 <!-- end of entry -->
11417 <tr class="entry" id="controls_android.jpeg.orientation">
11418 <td class="entry_name
11420 android.<wbr/>jpeg.<wbr/>orientation
11422 <td class="entry_type">
11423 <span class="entry_type_name">int32</span>
11425 <span class="entry_type_visibility"> [public]</span>
11428 <span class="entry_type_hwlevel">[legacy] </span>
11433 </td> <!-- entry_type -->
11435 <td class="entry_description">
11436 <p>The orientation for a JPEG image.<wbr/></p>
11439 <td class="entry_units">
11440 Degrees in multiples of 90
11443 <td class="entry_range">
11444 <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p>
11447 <td class="entry_hal_version">
11451 <td class="entry_tags">
11452 <ul class="entry_tags">
11453 <li><a href="#tag_BC">BC</a></li>
11458 <tr class="entries_header">
11459 <th class="th_details" colspan="6">Details</th>
11461 <tr class="entry_cont">
11462 <td class="entry_details" colspan="6">
11463 <p>The clockwise rotation angle in degrees,<wbr/> relative to the orientation
11464 to the camera,<wbr/> that the JPEG picture needs to be rotated by,<wbr/> to be viewed
11466 <p>Camera devices may either encode this value into the JPEG EXIF header,<wbr/> or
11467 rotate the image data to match this orientation.<wbr/> When the image data is rotated,<wbr/>
11468 the thumbnail data will also be rotated.<wbr/></p>
11469 <p>Note that this orientation is relative to the orientation of the camera sensor,<wbr/> given
11470 by <a href="#static_android.sensor.orientation">android.<wbr/>sensor.<wbr/>orientation</a>.<wbr/></p>
11471 <p>To translate from the device orientation given by the Android sensor APIs for camera
11472 sensors which are not EXTERNAL,<wbr/> the following sample code may be used:</p>
11473 <pre><code>private int getJpegOrientation(CameraCharacteristics c,<wbr/> int deviceOrientation) {
11474 if (deviceOrientation == android.<wbr/>view.<wbr/>Orientation<wbr/>Event<wbr/>Listener.<wbr/>ORIENTATION_<wbr/>UNKNOWN) return 0;
11475 int sensorOrientation = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>SENSOR_<wbr/>ORIENTATION);
11477 //<wbr/> Round device orientation to a multiple of 90
11478 deviceOrientation = (deviceOrientation + 45) /<wbr/> 90 * 90;
11480 //<wbr/> Reverse device orientation for front-facing cameras
11481 boolean facingFront = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING) == Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING_<wbr/>FRONT;
11482 if (facingFront) deviceOrientation = -deviceOrientation;
11484 //<wbr/> Calculate desired JPEG orientation relative to camera orientation to make
11485 //<wbr/> the image upright relative to the device orientation
11486 int jpegOrientation = (sensorOrientation + deviceOrientation + 360) % 360;
11488 return jpegOrientation;
11491 <p>For EXTERNAL cameras the sensor orientation will always be set to 0 and the facing will
11492 also be set to EXTERNAL.<wbr/> The above code is not relevant in such case.<wbr/></p>
11497 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11498 <!-- end of entry -->
11501 <tr class="entry" id="controls_android.jpeg.quality">
11502 <td class="entry_name
11504 android.<wbr/>jpeg.<wbr/>quality
11506 <td class="entry_type">
11507 <span class="entry_type_name">byte</span>
11509 <span class="entry_type_visibility"> [public]</span>
11512 <span class="entry_type_hwlevel">[legacy] </span>
11517 </td> <!-- entry_type -->
11519 <td class="entry_description">
11520 <p>Compression quality of the final JPEG
11524 <td class="entry_units">
11527 <td class="entry_range">
11528 <p>1-100; larger is higher quality</p>
11531 <td class="entry_hal_version">
11535 <td class="entry_tags">
11536 <ul class="entry_tags">
11537 <li><a href="#tag_BC">BC</a></li>
11542 <tr class="entries_header">
11543 <th class="th_details" colspan="6">Details</th>
11545 <tr class="entry_cont">
11546 <td class="entry_details" colspan="6">
11547 <p>85-95 is typical usage range.<wbr/></p>
11552 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11553 <!-- end of entry -->
11556 <tr class="entry" id="controls_android.jpeg.thumbnailQuality">
11557 <td class="entry_name
11559 android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Quality
11561 <td class="entry_type">
11562 <span class="entry_type_name">byte</span>
11564 <span class="entry_type_visibility"> [public]</span>
11567 <span class="entry_type_hwlevel">[legacy] </span>
11572 </td> <!-- entry_type -->
11574 <td class="entry_description">
11575 <p>Compression quality of JPEG
11576 thumbnail.<wbr/></p>
11579 <td class="entry_units">
11582 <td class="entry_range">
11583 <p>1-100; larger is higher quality</p>
11586 <td class="entry_hal_version">
11590 <td class="entry_tags">
11591 <ul class="entry_tags">
11592 <li><a href="#tag_BC">BC</a></li>
11599 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11600 <!-- end of entry -->
11603 <tr class="entry" id="controls_android.jpeg.thumbnailSize">
11604 <td class="entry_name
11606 android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size
11608 <td class="entry_type">
11609 <span class="entry_type_name">int32</span>
11610 <span class="entry_type_container">x</span>
11612 <span class="entry_type_array">
11615 <span class="entry_type_visibility"> [public as size]</span>
11618 <span class="entry_type_hwlevel">[legacy] </span>
11623 </td> <!-- entry_type -->
11625 <td class="entry_description">
11626 <p>Resolution of embedded JPEG thumbnail.<wbr/></p>
11629 <td class="entry_units">
11632 <td class="entry_range">
11633 <p><a href="#static_android.jpeg.availableThumbnailSizes">android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes</a></p>
11636 <td class="entry_hal_version">
11640 <td class="entry_tags">
11641 <ul class="entry_tags">
11642 <li><a href="#tag_BC">BC</a></li>
11647 <tr class="entries_header">
11648 <th class="th_details" colspan="6">Details</th>
11650 <tr class="entry_cont">
11651 <td class="entry_details" colspan="6">
11652 <p>When set to (0,<wbr/> 0) value,<wbr/> the JPEG EXIF will not contain thumbnail,<wbr/>
11653 but the captured JPEG will still be a valid image.<wbr/></p>
11654 <p>For best results,<wbr/> when issuing a request for a JPEG image,<wbr/> the thumbnail size selected
11655 should have the same aspect ratio as the main JPEG output.<wbr/></p>
11656 <p>If the thumbnail image aspect ratio differs from the JPEG primary image aspect
11657 ratio,<wbr/> the camera device creates the thumbnail by cropping it from the primary image.<wbr/>
11658 For example,<wbr/> if the primary image has 4:3 aspect ratio,<wbr/> the thumbnail image has
11659 16:9 aspect ratio,<wbr/> the primary image will be cropped vertically (letterbox) to
11660 generate the thumbnail image.<wbr/> The thumbnail image will always have a smaller Field
11661 Of View (FOV) than the primary image when aspect ratios differ.<wbr/></p>
11662 <p>When an <a href="#controls_android.jpeg.orientation">android.<wbr/>jpeg.<wbr/>orientation</a> of non-zero degree is requested,<wbr/>
11663 the camera device will handle thumbnail rotation in one of the following ways:</p>
11665 <li>Set the <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>
11666 and keep jpeg and thumbnail image data unrotated.<wbr/></li>
11667 <li>Rotate the jpeg and thumbnail image data and not set
11668 <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>.<wbr/> In this
11669 case,<wbr/> LIMITED or FULL hardware level devices will report rotated thumnail size in
11670 capture result,<wbr/> so the width and height will be interchanged if 90 or 270 degree
11671 orientation is requested.<wbr/> LEGACY device will always report unrotated thumbnail
11677 <tr class="entries_header">
11678 <th class="th_details" colspan="6">HAL Implementation Details</th>
11680 <tr class="entry_cont">
11681 <td class="entry_details" colspan="6">
11682 <p>The HAL must not squeeze or stretch the downscaled primary image to generate thumbnail.<wbr/>
11683 The cropping must be done on the primary jpeg image rather than the sensor active array.<wbr/>
11684 The stream cropping rule specified by "S5.<wbr/> Cropping" in camera3.<wbr/>h doesn't apply to the
11685 thumbnail image cropping.<wbr/></p>
11689 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11690 <!-- end of entry -->
11694 <!-- end of kind -->
11696 <tr><td colspan="7" class="kind">static</td></tr>
11698 <thead class="entries_header">
11700 <th class="th_name">Property Name</th>
11701 <th class="th_type">Type</th>
11702 <th class="th_description">Description</th>
11703 <th class="th_units">Units</th>
11704 <th class="th_range">Range</th>
11705 <th class="th_hal_version">Initial HIDL HAL version</th>
11706 <th class="th_tags">Tags</th>
11721 <tr class="entry" id="static_android.jpeg.availableThumbnailSizes">
11722 <td class="entry_name
11724 android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes
11726 <td class="entry_type">
11727 <span class="entry_type_name">int32</span>
11728 <span class="entry_type_container">x</span>
11730 <span class="entry_type_array">
11733 <span class="entry_type_visibility"> [public as size]</span>
11736 <span class="entry_type_hwlevel">[legacy] </span>
11741 </td> <!-- entry_type -->
11743 <td class="entry_description">
11744 <p>List of JPEG thumbnail sizes for <a href="#controls_android.jpeg.thumbnailSize">android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size</a> supported by this
11745 camera device.<wbr/></p>
11748 <td class="entry_units">
11751 <td class="entry_range">
11754 <td class="entry_hal_version">
11758 <td class="entry_tags">
11759 <ul class="entry_tags">
11760 <li><a href="#tag_BC">BC</a></li>
11765 <tr class="entries_header">
11766 <th class="th_details" colspan="6">Details</th>
11768 <tr class="entry_cont">
11769 <td class="entry_details" colspan="6">
11770 <p>This list will include at least one non-zero resolution,<wbr/> plus <code>(0,<wbr/>0)</code> for indicating no
11771 thumbnail should be generated.<wbr/></p>
11772 <p>Below condiditions will be satisfied for this size list:</p>
11774 <li>The sizes will be sorted by increasing pixel area (width x height).<wbr/>
11775 If several resolutions have the same area,<wbr/> they will be sorted by increasing width.<wbr/></li>
11776 <li>The aspect ratio of the largest thumbnail size will be same as the
11777 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/>
11778 The largest size is defined as the size that has the largest pixel area
11779 in a given size list.<wbr/></li>
11780 <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
11781 one corresponding size that has the same aspect ratio in availableThumbnailSizes,<wbr/>
11782 and vice versa.<wbr/></li>
11783 <li>All non-<code>(0,<wbr/> 0)</code> sizes will have non-zero widths and heights.<wbr/></li>
11789 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11790 <!-- end of entry -->
11793 <tr class="entry" id="static_android.jpeg.maxSize">
11794 <td class="entry_name
11796 android.<wbr/>jpeg.<wbr/>max<wbr/>Size
11798 <td class="entry_type">
11799 <span class="entry_type_name">int32</span>
11801 <span class="entry_type_visibility"> [system]</span>
11808 </td> <!-- entry_type -->
11810 <td class="entry_description">
11811 <p>Maximum size in bytes for the compressed
11815 <td class="entry_units">
11818 <td class="entry_range">
11819 <p>Must be large enough to fit any JPEG produced by
11823 <td class="entry_hal_version">
11827 <td class="entry_tags">
11831 <tr class="entries_header">
11832 <th class="th_details" colspan="6">Details</th>
11834 <tr class="entry_cont">
11835 <td class="entry_details" colspan="6">
11836 <p>This is used for sizing the gralloc buffers for
11842 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11843 <!-- end of entry -->
11847 <!-- end of kind -->
11849 <tr><td colspan="7" class="kind">dynamic</td></tr>
11851 <thead class="entries_header">
11853 <th class="th_name">Property Name</th>
11854 <th class="th_type">Type</th>
11855 <th class="th_description">Description</th>
11856 <th class="th_units">Units</th>
11857 <th class="th_range">Range</th>
11858 <th class="th_hal_version">Initial HIDL HAL version</th>
11859 <th class="th_tags">Tags</th>
11874 <tr class="entry" id="dynamic_android.jpeg.gpsLocation">
11875 <td class="entry_name
11877 android.<wbr/>jpeg.<wbr/>gps<wbr/>Location
11879 <td class="entry_type">
11880 <span class="entry_type_name">byte</span>
11882 <span class="entry_type_visibility"> [java_public as location]</span>
11884 <span class="entry_type_synthetic">[synthetic] </span>
11886 <span class="entry_type_hwlevel">[legacy] </span>
11891 </td> <!-- entry_type -->
11893 <td class="entry_description">
11894 <p>A location object to use when generating image GPS metadata.<wbr/></p>
11897 <td class="entry_units">
11900 <td class="entry_range">
11903 <td class="entry_hal_version">
11907 <td class="entry_tags">
11911 <tr class="entries_header">
11912 <th class="th_details" colspan="6">Details</th>
11914 <tr class="entry_cont">
11915 <td class="entry_details" colspan="6">
11916 <p>Setting a location object in a request will include the GPS coordinates of the location
11917 into any JPEG images captured based on the request.<wbr/> These coordinates can then be
11918 viewed by anyone who receives the JPEG image.<wbr/></p>
11923 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11924 <!-- end of entry -->
11927 <tr class="entry" id="dynamic_android.jpeg.gpsCoordinates">
11928 <td class="entry_name
11930 android.<wbr/>jpeg.<wbr/>gps<wbr/>Coordinates
11932 <td class="entry_type">
11933 <span class="entry_type_name">double</span>
11934 <span class="entry_type_container">x</span>
11936 <span class="entry_type_array">
11939 <span class="entry_type_visibility"> [ndk_public]</span>
11942 <span class="entry_type_hwlevel">[legacy] </span>
11945 <div class="entry_type_notes">latitude,<wbr/> longitude,<wbr/> altitude.<wbr/> First two in degrees,<wbr/> the third in meters</div>
11948 </td> <!-- entry_type -->
11950 <td class="entry_description">
11951 <p>GPS coordinates to include in output JPEG
11955 <td class="entry_units">
11958 <td class="entry_range">
11959 <p>(-180 - 180],<wbr/> [-90,<wbr/>90],<wbr/> [-inf,<wbr/> inf]</p>
11962 <td class="entry_hal_version">
11966 <td class="entry_tags">
11967 <ul class="entry_tags">
11968 <li><a href="#tag_BC">BC</a></li>
11975 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11976 <!-- end of entry -->
11979 <tr class="entry" id="dynamic_android.jpeg.gpsProcessingMethod">
11980 <td class="entry_name
11982 android.<wbr/>jpeg.<wbr/>gps<wbr/>Processing<wbr/>Method
11984 <td class="entry_type">
11985 <span class="entry_type_name">byte</span>
11987 <span class="entry_type_visibility"> [ndk_public as string]</span>
11990 <span class="entry_type_hwlevel">[legacy] </span>
11995 </td> <!-- entry_type -->
11997 <td class="entry_description">
11998 <p>32 characters describing GPS algorithm to
11999 include in EXIF.<wbr/></p>
12002 <td class="entry_units">
12003 UTF-8 null-terminated string
12006 <td class="entry_range">
12009 <td class="entry_hal_version">
12013 <td class="entry_tags">
12014 <ul class="entry_tags">
12015 <li><a href="#tag_BC">BC</a></li>
12022 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12023 <!-- end of entry -->
12026 <tr class="entry" id="dynamic_android.jpeg.gpsTimestamp">
12027 <td class="entry_name
12029 android.<wbr/>jpeg.<wbr/>gps<wbr/>Timestamp
12031 <td class="entry_type">
12032 <span class="entry_type_name">int64</span>
12034 <span class="entry_type_visibility"> [ndk_public]</span>
12037 <span class="entry_type_hwlevel">[legacy] </span>
12042 </td> <!-- entry_type -->
12044 <td class="entry_description">
12045 <p>Time GPS fix was made to include in
12049 <td class="entry_units">
12050 UTC in seconds since January 1,<wbr/> 1970
12053 <td class="entry_range">
12056 <td class="entry_hal_version">
12060 <td class="entry_tags">
12061 <ul class="entry_tags">
12062 <li><a href="#tag_BC">BC</a></li>
12069 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12070 <!-- end of entry -->
12073 <tr class="entry" id="dynamic_android.jpeg.orientation">
12074 <td class="entry_name
12076 android.<wbr/>jpeg.<wbr/>orientation
12078 <td class="entry_type">
12079 <span class="entry_type_name">int32</span>
12081 <span class="entry_type_visibility"> [public]</span>
12084 <span class="entry_type_hwlevel">[legacy] </span>
12089 </td> <!-- entry_type -->
12091 <td class="entry_description">
12092 <p>The orientation for a JPEG image.<wbr/></p>
12095 <td class="entry_units">
12096 Degrees in multiples of 90
12099 <td class="entry_range">
12100 <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p>
12103 <td class="entry_hal_version">
12107 <td class="entry_tags">
12108 <ul class="entry_tags">
12109 <li><a href="#tag_BC">BC</a></li>
12114 <tr class="entries_header">
12115 <th class="th_details" colspan="6">Details</th>
12117 <tr class="entry_cont">
12118 <td class="entry_details" colspan="6">
12119 <p>The clockwise rotation angle in degrees,<wbr/> relative to the orientation
12120 to the camera,<wbr/> that the JPEG picture needs to be rotated by,<wbr/> to be viewed
12122 <p>Camera devices may either encode this value into the JPEG EXIF header,<wbr/> or
12123 rotate the image data to match this orientation.<wbr/> When the image data is rotated,<wbr/>
12124 the thumbnail data will also be rotated.<wbr/></p>
12125 <p>Note that this orientation is relative to the orientation of the camera sensor,<wbr/> given
12126 by <a href="#static_android.sensor.orientation">android.<wbr/>sensor.<wbr/>orientation</a>.<wbr/></p>
12127 <p>To translate from the device orientation given by the Android sensor APIs for camera
12128 sensors which are not EXTERNAL,<wbr/> the following sample code may be used:</p>
12129 <pre><code>private int getJpegOrientation(CameraCharacteristics c,<wbr/> int deviceOrientation) {
12130 if (deviceOrientation == android.<wbr/>view.<wbr/>Orientation<wbr/>Event<wbr/>Listener.<wbr/>ORIENTATION_<wbr/>UNKNOWN) return 0;
12131 int sensorOrientation = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>SENSOR_<wbr/>ORIENTATION);
12133 //<wbr/> Round device orientation to a multiple of 90
12134 deviceOrientation = (deviceOrientation + 45) /<wbr/> 90 * 90;
12136 //<wbr/> Reverse device orientation for front-facing cameras
12137 boolean facingFront = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING) == Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING_<wbr/>FRONT;
12138 if (facingFront) deviceOrientation = -deviceOrientation;
12140 //<wbr/> Calculate desired JPEG orientation relative to camera orientation to make
12141 //<wbr/> the image upright relative to the device orientation
12142 int jpegOrientation = (sensorOrientation + deviceOrientation + 360) % 360;
12144 return jpegOrientation;
12147 <p>For EXTERNAL cameras the sensor orientation will always be set to 0 and the facing will
12148 also be set to EXTERNAL.<wbr/> The above code is not relevant in such case.<wbr/></p>
12153 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12154 <!-- end of entry -->
12157 <tr class="entry" id="dynamic_android.jpeg.quality">
12158 <td class="entry_name
12160 android.<wbr/>jpeg.<wbr/>quality
12162 <td class="entry_type">
12163 <span class="entry_type_name">byte</span>
12165 <span class="entry_type_visibility"> [public]</span>
12168 <span class="entry_type_hwlevel">[legacy] </span>
12173 </td> <!-- entry_type -->
12175 <td class="entry_description">
12176 <p>Compression quality of the final JPEG
12180 <td class="entry_units">
12183 <td class="entry_range">
12184 <p>1-100; larger is higher quality</p>
12187 <td class="entry_hal_version">
12191 <td class="entry_tags">
12192 <ul class="entry_tags">
12193 <li><a href="#tag_BC">BC</a></li>
12198 <tr class="entries_header">
12199 <th class="th_details" colspan="6">Details</th>
12201 <tr class="entry_cont">
12202 <td class="entry_details" colspan="6">
12203 <p>85-95 is typical usage range.<wbr/></p>
12208 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12209 <!-- end of entry -->
12212 <tr class="entry" id="dynamic_android.jpeg.size">
12213 <td class="entry_name
12215 android.<wbr/>jpeg.<wbr/>size
12217 <td class="entry_type">
12218 <span class="entry_type_name">int32</span>
12220 <span class="entry_type_visibility"> [system]</span>
12227 </td> <!-- entry_type -->
12229 <td class="entry_description">
12230 <p>The size of the compressed JPEG image,<wbr/> in
12234 <td class="entry_units">
12237 <td class="entry_range">
12241 <td class="entry_hal_version">
12245 <td class="entry_tags">
12246 <ul class="entry_tags">
12247 <li><a href="#tag_FUTURE">FUTURE</a></li>
12252 <tr class="entries_header">
12253 <th class="th_details" colspan="6">Details</th>
12255 <tr class="entry_cont">
12256 <td class="entry_details" colspan="6">
12257 <p>If no JPEG output is produced for the request,<wbr/>
12258 this must be 0.<wbr/></p>
12259 <p>Otherwise,<wbr/> this describes the real size of the compressed
12260 JPEG image placed in the output stream.<wbr/> More specifically,<wbr/>
12261 if <a href="#static_android.jpeg.maxSize">android.<wbr/>jpeg.<wbr/>max<wbr/>Size</a> = 1000000,<wbr/> and a specific capture
12262 has <a href="#dynamic_android.jpeg.size">android.<wbr/>jpeg.<wbr/>size</a> = 500000,<wbr/> then the output buffer from
12263 the JPEG stream will be 1000000 bytes,<wbr/> of which the first
12264 500000 make up the real data.<wbr/></p>
12269 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12270 <!-- end of entry -->
12273 <tr class="entry" id="dynamic_android.jpeg.thumbnailQuality">
12274 <td class="entry_name
12276 android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Quality
12278 <td class="entry_type">
12279 <span class="entry_type_name">byte</span>
12281 <span class="entry_type_visibility"> [public]</span>
12284 <span class="entry_type_hwlevel">[legacy] </span>
12289 </td> <!-- entry_type -->
12291 <td class="entry_description">
12292 <p>Compression quality of JPEG
12293 thumbnail.<wbr/></p>
12296 <td class="entry_units">
12299 <td class="entry_range">
12300 <p>1-100; larger is higher quality</p>
12303 <td class="entry_hal_version">
12307 <td class="entry_tags">
12308 <ul class="entry_tags">
12309 <li><a href="#tag_BC">BC</a></li>
12316 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12317 <!-- end of entry -->
12320 <tr class="entry" id="dynamic_android.jpeg.thumbnailSize">
12321 <td class="entry_name
12323 android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size
12325 <td class="entry_type">
12326 <span class="entry_type_name">int32</span>
12327 <span class="entry_type_container">x</span>
12329 <span class="entry_type_array">
12332 <span class="entry_type_visibility"> [public as size]</span>
12335 <span class="entry_type_hwlevel">[legacy] </span>
12340 </td> <!-- entry_type -->
12342 <td class="entry_description">
12343 <p>Resolution of embedded JPEG thumbnail.<wbr/></p>
12346 <td class="entry_units">
12349 <td class="entry_range">
12350 <p><a href="#static_android.jpeg.availableThumbnailSizes">android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes</a></p>
12353 <td class="entry_hal_version">
12357 <td class="entry_tags">
12358 <ul class="entry_tags">
12359 <li><a href="#tag_BC">BC</a></li>
12364 <tr class="entries_header">
12365 <th class="th_details" colspan="6">Details</th>
12367 <tr class="entry_cont">
12368 <td class="entry_details" colspan="6">
12369 <p>When set to (0,<wbr/> 0) value,<wbr/> the JPEG EXIF will not contain thumbnail,<wbr/>
12370 but the captured JPEG will still be a valid image.<wbr/></p>
12371 <p>For best results,<wbr/> when issuing a request for a JPEG image,<wbr/> the thumbnail size selected
12372 should have the same aspect ratio as the main JPEG output.<wbr/></p>
12373 <p>If the thumbnail image aspect ratio differs from the JPEG primary image aspect
12374 ratio,<wbr/> the camera device creates the thumbnail by cropping it from the primary image.<wbr/>
12375 For example,<wbr/> if the primary image has 4:3 aspect ratio,<wbr/> the thumbnail image has
12376 16:9 aspect ratio,<wbr/> the primary image will be cropped vertically (letterbox) to
12377 generate the thumbnail image.<wbr/> The thumbnail image will always have a smaller Field
12378 Of View (FOV) than the primary image when aspect ratios differ.<wbr/></p>
12379 <p>When an <a href="#controls_android.jpeg.orientation">android.<wbr/>jpeg.<wbr/>orientation</a> of non-zero degree is requested,<wbr/>
12380 the camera device will handle thumbnail rotation in one of the following ways:</p>
12382 <li>Set the <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>
12383 and keep jpeg and thumbnail image data unrotated.<wbr/></li>
12384 <li>Rotate the jpeg and thumbnail image data and not set
12385 <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>.<wbr/> In this
12386 case,<wbr/> LIMITED or FULL hardware level devices will report rotated thumnail size in
12387 capture result,<wbr/> so the width and height will be interchanged if 90 or 270 degree
12388 orientation is requested.<wbr/> LEGACY device will always report unrotated thumbnail
12394 <tr class="entries_header">
12395 <th class="th_details" colspan="6">HAL Implementation Details</th>
12397 <tr class="entry_cont">
12398 <td class="entry_details" colspan="6">
12399 <p>The HAL must not squeeze or stretch the downscaled primary image to generate thumbnail.<wbr/>
12400 The cropping must be done on the primary jpeg image rather than the sensor active array.<wbr/>
12401 The stream cropping rule specified by "S5.<wbr/> Cropping" in camera3.<wbr/>h doesn't apply to the
12402 thumbnail image cropping.<wbr/></p>
12406 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12407 <!-- end of entry -->
12411 <!-- end of kind -->
12414 <!-- end of section -->
12415 <tr><td colspan="7" id="section_lens" class="section">lens</td></tr>
12418 <tr><td colspan="7" class="kind">controls</td></tr>
12420 <thead class="entries_header">
12422 <th class="th_name">Property Name</th>
12423 <th class="th_type">Type</th>
12424 <th class="th_description">Description</th>
12425 <th class="th_units">Units</th>
12426 <th class="th_range">Range</th>
12427 <th class="th_hal_version">Initial HIDL HAL version</th>
12428 <th class="th_tags">Tags</th>
12443 <tr class="entry" id="controls_android.lens.aperture">
12444 <td class="entry_name
12446 android.<wbr/>lens.<wbr/>aperture
12448 <td class="entry_type">
12449 <span class="entry_type_name">float</span>
12451 <span class="entry_type_visibility"> [public]</span>
12454 <span class="entry_type_hwlevel">[full] </span>
12459 </td> <!-- entry_type -->
12461 <td class="entry_description">
12462 <p>The desired lens aperture size,<wbr/> as a ratio of lens focal length to the
12463 effective aperture diameter.<wbr/></p>
12466 <td class="entry_units">
12467 The f-number (f/<wbr/>N)
12470 <td class="entry_range">
12471 <p><a href="#static_android.lens.info.availableApertures">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures</a></p>
12474 <td class="entry_hal_version">
12478 <td class="entry_tags">
12479 <ul class="entry_tags">
12480 <li><a href="#tag_V1">V1</a></li>
12485 <tr class="entries_header">
12486 <th class="th_details" colspan="6">Details</th>
12488 <tr class="entry_cont">
12489 <td class="entry_details" colspan="6">
12490 <p>Setting this value is only supported on the camera devices that have a variable
12491 aperture lens.<wbr/></p>
12492 <p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/>
12493 this can be set along with <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
12494 <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>
12495 to achieve manual exposure control.<wbr/></p>
12496 <p>The requested aperture value may take several frames to reach the
12497 requested value; the camera device will report the current (intermediate)
12498 aperture size in capture result metadata while the aperture is changing.<wbr/>
12499 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>
12500 <p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is one of
12501 the ON modes,<wbr/> this will be overridden by the camera device
12502 auto-exposure algorithm,<wbr/> the overridden values are then provided
12503 back to the user in the corresponding result.<wbr/></p>
12508 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12509 <!-- end of entry -->
12512 <tr class="entry" id="controls_android.lens.filterDensity">
12513 <td class="entry_name
12515 android.<wbr/>lens.<wbr/>filter<wbr/>Density
12517 <td class="entry_type">
12518 <span class="entry_type_name">float</span>
12520 <span class="entry_type_visibility"> [public]</span>
12523 <span class="entry_type_hwlevel">[full] </span>
12528 </td> <!-- entry_type -->
12530 <td class="entry_description">
12531 <p>The desired setting for the lens neutral density filter(s).<wbr/></p>
12534 <td class="entry_units">
12535 Exposure Value (EV)
12538 <td class="entry_range">
12539 <p><a href="#static_android.lens.info.availableFilterDensities">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities</a></p>
12542 <td class="entry_hal_version">
12546 <td class="entry_tags">
12547 <ul class="entry_tags">
12548 <li><a href="#tag_V1">V1</a></li>
12553 <tr class="entries_header">
12554 <th class="th_details" colspan="6">Details</th>
12556 <tr class="entry_cont">
12557 <td class="entry_details" colspan="6">
12558 <p>This control will not be supported on most camera devices.<wbr/></p>
12559 <p>Lens filters are typically used to lower the amount of light the
12560 sensor is exposed to (measured in steps of EV).<wbr/> As used here,<wbr/> an EV
12561 step is the standard logarithmic representation,<wbr/> which are
12562 non-negative,<wbr/> and inversely proportional to the amount of light
12563 hitting the sensor.<wbr/> For example,<wbr/> setting this to 0 would result
12564 in no reduction of the incoming light,<wbr/> and setting this to 2 would
12565 mean that the filter is set to reduce incoming light by two stops
12566 (allowing 1/<wbr/>4 of the prior amount of light to the sensor).<wbr/></p>
12567 <p>It may take several frames before the lens filter density changes
12568 to the requested value.<wbr/> While the filter density is still changing,<wbr/>
12569 <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p>
12574 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12575 <!-- end of entry -->
12578 <tr class="entry" id="controls_android.lens.focalLength">
12579 <td class="entry_name
12581 android.<wbr/>lens.<wbr/>focal<wbr/>Length
12583 <td class="entry_type">
12584 <span class="entry_type_name">float</span>
12586 <span class="entry_type_visibility"> [public]</span>
12589 <span class="entry_type_hwlevel">[legacy] </span>
12594 </td> <!-- entry_type -->
12596 <td class="entry_description">
12597 <p>The desired lens focal length; used for optical zoom.<wbr/></p>
12600 <td class="entry_units">
12604 <td class="entry_range">
12605 <p><a href="#static_android.lens.info.availableFocalLengths">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths</a></p>
12608 <td class="entry_hal_version">
12612 <td class="entry_tags">
12613 <ul class="entry_tags">
12614 <li><a href="#tag_V1">V1</a></li>
12619 <tr class="entries_header">
12620 <th class="th_details" colspan="6">Details</th>
12622 <tr class="entry_cont">
12623 <td class="entry_details" colspan="6">
12624 <p>This setting controls the physical focal length of the camera
12625 device's lens.<wbr/> Changing the focal length changes the field of
12626 view of the camera device,<wbr/> and is usually used for optical zoom.<wbr/></p>
12627 <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
12628 setting won't be applied instantaneously,<wbr/> and it may take several
12629 frames before the lens can change to the requested focal length.<wbr/>
12630 While the focal length is still changing,<wbr/> <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will
12631 be set to MOVING.<wbr/></p>
12632 <p>Optical zoom will not be supported on most devices.<wbr/></p>
12637 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12638 <!-- end of entry -->
12641 <tr class="entry" id="controls_android.lens.focusDistance">
12642 <td class="entry_name
12644 android.<wbr/>lens.<wbr/>focus<wbr/>Distance
12646 <td class="entry_type">
12647 <span class="entry_type_name">float</span>
12649 <span class="entry_type_visibility"> [public]</span>
12652 <span class="entry_type_hwlevel">[full] </span>
12657 </td> <!-- entry_type -->
12659 <td class="entry_description">
12660 <p>Desired distance to plane of sharpest focus,<wbr/>
12661 measured from frontmost surface of the lens.<wbr/></p>
12664 <td class="entry_units">
12665 See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
12668 <td class="entry_range">
12672 <td class="entry_hal_version">
12676 <td class="entry_tags">
12677 <ul class="entry_tags">
12678 <li><a href="#tag_BC">BC</a></li>
12679 <li><a href="#tag_V1">V1</a></li>
12684 <tr class="entries_header">
12685 <th class="th_details" colspan="6">Details</th>
12687 <tr class="entry_cont">
12688 <td class="entry_details" colspan="6">
12689 <p>This control can be used for setting manual focus,<wbr/> on devices that support
12690 the MANUAL_<wbr/>SENSOR capability and have a variable-focus lens (see
12691 <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a>).<wbr/></p>
12692 <p>A value of <code>0.<wbr/>0f</code> means infinity focus.<wbr/> The value set will be clamped to
12693 <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>
12694 <p>Like <a href="#controls_android.lens.focalLength">android.<wbr/>lens.<wbr/>focal<wbr/>Length</a>,<wbr/> this setting won't be applied
12695 instantaneously,<wbr/> and it may take several frames before the lens
12696 can move to the requested focus distance.<wbr/> While the lens is still moving,<wbr/>
12697 <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p>
12698 <p>LEGACY devices support at most setting this to <code>0.<wbr/>0f</code>
12699 for infinity focus.<wbr/></p>
12704 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12705 <!-- end of entry -->
12708 <tr class="entry" id="controls_android.lens.opticalStabilizationMode">
12709 <td class="entry_name
12711 android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode
12713 <td class="entry_type">
12714 <span class="entry_type_name entry_type_name_enum">byte</span>
12716 <span class="entry_type_visibility"> [public]</span>
12719 <span class="entry_type_hwlevel">[limited] </span>
12723 <ul class="entry_type_enum">
12725 <span class="entry_type_enum_name">OFF (v3.2)</span>
12726 <span class="entry_type_enum_notes"><p>Optical stabilization is unavailable.<wbr/></p></span>
12729 <span class="entry_type_enum_name">ON (v3.2)</span>
12730 <span class="entry_type_enum_optional">[optional]</span>
12731 <span class="entry_type_enum_notes"><p>Optical stabilization is enabled.<wbr/></p></span>
12735 </td> <!-- entry_type -->
12737 <td class="entry_description">
12738 <p>Sets whether the camera device uses optical image stabilization (OIS)
12739 when capturing images.<wbr/></p>
12742 <td class="entry_units">
12745 <td class="entry_range">
12746 <p><a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a></p>
12749 <td class="entry_hal_version">
12753 <td class="entry_tags">
12754 <ul class="entry_tags">
12755 <li><a href="#tag_V1">V1</a></li>
12760 <tr class="entries_header">
12761 <th class="th_details" colspan="6">Details</th>
12763 <tr class="entry_cont">
12764 <td class="entry_details" colspan="6">
12765 <p>OIS is used to compensate for motion blur due to small
12766 movements of the camera during capture.<wbr/> Unlike digital image
12767 stabilization (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> OIS
12768 makes use of mechanical elements to stabilize the camera
12769 sensor,<wbr/> and thus allows for longer exposure times before
12770 camera shake becomes apparent.<wbr/></p>
12771 <p>Switching between different optical stabilization modes may take several
12772 frames to initialize,<wbr/> the camera device will report the current mode in
12773 capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/> the
12774 optical stabilization modes in the first several capture results may still
12775 be "OFF",<wbr/> and it will become "ON" when the initialization is done.<wbr/></p>
12776 <p>If a camera device supports both OIS and digital image stabilization
12777 (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may produce undesirable
12778 interaction,<wbr/> so it is recommended not to enable both at the same time.<wbr/></p>
12779 <p>Not all devices will support OIS; see
12780 <a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a> for
12781 available controls.<wbr/></p>
12786 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12787 <!-- end of entry -->
12791 <!-- end of kind -->
12793 <tr><td colspan="7" class="kind">static</td></tr>
12795 <thead class="entries_header">
12797 <th class="th_name">Property Name</th>
12798 <th class="th_type">Type</th>
12799 <th class="th_description">Description</th>
12800 <th class="th_units">Units</th>
12801 <th class="th_range">Range</th>
12802 <th class="th_hal_version">Initial HIDL HAL version</th>
12803 <th class="th_tags">Tags</th>
12820 <tr class="entry" id="static_android.lens.info.availableApertures">
12821 <td class="entry_name
12823 android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures
12825 <td class="entry_type">
12826 <span class="entry_type_name">float</span>
12827 <span class="entry_type_container">x</span>
12829 <span class="entry_type_array">
12832 <span class="entry_type_visibility"> [public]</span>
12835 <span class="entry_type_hwlevel">[full] </span>
12840 </td> <!-- entry_type -->
12842 <td class="entry_description">
12843 <p>List of aperture size values for <a href="#controls_android.lens.aperture">android.<wbr/>lens.<wbr/>aperture</a> that are
12844 supported by this camera device.<wbr/></p>
12847 <td class="entry_units">
12848 The aperture f-number
12851 <td class="entry_range">
12854 <td class="entry_hal_version">
12858 <td class="entry_tags">
12859 <ul class="entry_tags">
12860 <li><a href="#tag_V1">V1</a></li>
12865 <tr class="entries_header">
12866 <th class="th_details" colspan="6">Details</th>
12868 <tr class="entry_cont">
12869 <td class="entry_details" colspan="6">
12870 <p>If the camera device doesn't support a variable lens aperture,<wbr/>
12871 this list will contain only one value,<wbr/> which is the fixed aperture size.<wbr/></p>
12872 <p>If the camera device supports a variable aperture,<wbr/> the aperture values
12873 in this list will be sorted in ascending order.<wbr/></p>
12878 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12879 <!-- end of entry -->
12882 <tr class="entry" id="static_android.lens.info.availableFilterDensities">
12883 <td class="entry_name
12885 android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities
12887 <td class="entry_type">
12888 <span class="entry_type_name">float</span>
12889 <span class="entry_type_container">x</span>
12891 <span class="entry_type_array">
12894 <span class="entry_type_visibility"> [public]</span>
12897 <span class="entry_type_hwlevel">[full] </span>
12902 </td> <!-- entry_type -->
12904 <td class="entry_description">
12905 <p>List of neutral density filter values for
12906 <a href="#controls_android.lens.filterDensity">android.<wbr/>lens.<wbr/>filter<wbr/>Density</a> that are supported by this camera device.<wbr/></p>
12909 <td class="entry_units">
12910 Exposure value (EV)
12913 <td class="entry_range">
12914 <p>Values are >= 0</p>
12917 <td class="entry_hal_version">
12921 <td class="entry_tags">
12922 <ul class="entry_tags">
12923 <li><a href="#tag_V1">V1</a></li>
12928 <tr class="entries_header">
12929 <th class="th_details" colspan="6">Details</th>
12931 <tr class="entry_cont">
12932 <td class="entry_details" colspan="6">
12933 <p>If a neutral density filter is not supported by this camera device,<wbr/>
12934 this list will contain only 0.<wbr/> Otherwise,<wbr/> this list will include every
12935 filter density supported by the camera device,<wbr/> in ascending order.<wbr/></p>
12940 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12941 <!-- end of entry -->
12944 <tr class="entry" id="static_android.lens.info.availableFocalLengths">
12945 <td class="entry_name
12947 android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths
12949 <td class="entry_type">
12950 <span class="entry_type_name">float</span>
12951 <span class="entry_type_container">x</span>
12953 <span class="entry_type_array">
12956 <span class="entry_type_visibility"> [public]</span>
12959 <span class="entry_type_hwlevel">[legacy] </span>
12962 <div class="entry_type_notes">The list of available focal lengths</div>
12965 </td> <!-- entry_type -->
12967 <td class="entry_description">
12968 <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
12972 <td class="entry_units">
12976 <td class="entry_range">
12977 <p>Values are > 0</p>
12980 <td class="entry_hal_version">
12984 <td class="entry_tags">
12985 <ul class="entry_tags">
12986 <li><a href="#tag_BC">BC</a></li>
12987 <li><a href="#tag_V1">V1</a></li>
12992 <tr class="entries_header">
12993 <th class="th_details" colspan="6">Details</th>
12995 <tr class="entry_cont">
12996 <td class="entry_details" colspan="6">
12997 <p>If optical zoom is not supported,<wbr/> this list will only contain
12998 a single value corresponding to the fixed focal length of the
12999 device.<wbr/> Otherwise,<wbr/> this list will include every focal length supported
13000 by the camera device,<wbr/> in ascending order.<wbr/></p>
13005 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13006 <!-- end of entry -->
13009 <tr class="entry" id="static_android.lens.info.availableOpticalStabilization">
13010 <td class="entry_name
13012 android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization
13014 <td class="entry_type">
13015 <span class="entry_type_name">byte</span>
13016 <span class="entry_type_container">x</span>
13018 <span class="entry_type_array">
13021 <span class="entry_type_visibility"> [public as enumList]</span>
13024 <span class="entry_type_hwlevel">[limited] </span>
13027 <div class="entry_type_notes">list of enums</div>
13030 </td> <!-- entry_type -->
13032 <td class="entry_description">
13033 <p>List of optical image stabilization (OIS) modes for
13034 <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>
13037 <td class="entry_units">
13040 <td class="entry_range">
13041 <p>Any value listed in <a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a></p>
13044 <td class="entry_hal_version">
13048 <td class="entry_tags">
13049 <ul class="entry_tags">
13050 <li><a href="#tag_V1">V1</a></li>
13055 <tr class="entries_header">
13056 <th class="th_details" colspan="6">Details</th>
13058 <tr class="entry_cont">
13059 <td class="entry_details" colspan="6">
13060 <p>If OIS is not supported by a given camera device,<wbr/> this list will
13061 contain only OFF.<wbr/></p>
13066 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13067 <!-- end of entry -->
13070 <tr class="entry" id="static_android.lens.info.hyperfocalDistance">
13071 <td class="entry_name
13073 android.<wbr/>lens.<wbr/>info.<wbr/>hyperfocal<wbr/>Distance
13075 <td class="entry_type">
13076 <span class="entry_type_name">float</span>
13078 <span class="entry_type_visibility"> [public]</span>
13081 <span class="entry_type_hwlevel">[limited] </span>
13086 </td> <!-- entry_type -->
13088 <td class="entry_description">
13089 <p>Hyperfocal distance for this lens.<wbr/></p>
13092 <td class="entry_units">
13093 See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
13096 <td class="entry_range">
13097 <p>If lens is fixed focus,<wbr/> >= 0.<wbr/> If lens has focuser unit,<wbr/> the value is
13098 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>
13101 <td class="entry_hal_version">
13105 <td class="entry_tags">
13109 <tr class="entries_header">
13110 <th class="th_details" colspan="6">Details</th>
13112 <tr class="entry_cont">
13113 <td class="entry_details" colspan="6">
13114 <p>If the lens is not fixed focus,<wbr/> the camera device will report this
13115 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>
13120 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13121 <!-- end of entry -->
13124 <tr class="entry" id="static_android.lens.info.minimumFocusDistance">
13125 <td class="entry_name
13127 android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance
13129 <td class="entry_type">
13130 <span class="entry_type_name">float</span>
13132 <span class="entry_type_visibility"> [public]</span>
13135 <span class="entry_type_hwlevel">[limited] </span>
13140 </td> <!-- entry_type -->
13142 <td class="entry_description">
13143 <p>Shortest distance from frontmost surface
13144 of the lens that can be brought into sharp focus.<wbr/></p>
13147 <td class="entry_units">
13148 See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
13151 <td class="entry_range">
13155 <td class="entry_hal_version">
13159 <td class="entry_tags">
13160 <ul class="entry_tags">
13161 <li><a href="#tag_V1">V1</a></li>
13166 <tr class="entries_header">
13167 <th class="th_details" colspan="6">Details</th>
13169 <tr class="entry_cont">
13170 <td class="entry_details" colspan="6">
13171 <p>If the lens is fixed-focus,<wbr/> this will be
13176 <tr class="entries_header">
13177 <th class="th_details" colspan="6">HAL Implementation Details</th>
13179 <tr class="entry_cont">
13180 <td class="entry_details" colspan="6">
13181 <p>Mandatory for FULL devices; LIMITED devices
13182 must always set this value to 0 for fixed-focus; and may omit
13183 the minimum focus distance otherwise.<wbr/></p>
13184 <p>This field is also mandatory for all devices advertising
13185 the MANUAL_<wbr/>SENSOR capability.<wbr/></p>
13189 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13190 <!-- end of entry -->
13193 <tr class="entry" id="static_android.lens.info.shadingMapSize">
13194 <td class="entry_name
13196 android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size
13198 <td class="entry_type">
13199 <span class="entry_type_name">int32</span>
13200 <span class="entry_type_container">x</span>
13202 <span class="entry_type_array">
13205 <span class="entry_type_visibility"> [ndk_public as size]</span>
13208 <span class="entry_type_hwlevel">[full] </span>
13211 <div class="entry_type_notes">width and height (N,<wbr/> M) of lens shading map provided by the camera device.<wbr/></div>
13214 </td> <!-- entry_type -->
13216 <td class="entry_description">
13217 <p>Dimensions of lens shading map.<wbr/></p>
13220 <td class="entry_units">
13223 <td class="entry_range">
13224 <p>Both values >= 1</p>
13227 <td class="entry_hal_version">
13231 <td class="entry_tags">
13232 <ul class="entry_tags">
13233 <li><a href="#tag_V1">V1</a></li>
13238 <tr class="entries_header">
13239 <th class="th_details" colspan="6">Details</th>
13241 <tr class="entry_cont">
13242 <td class="entry_details" colspan="6">
13243 <p>The map should be on the order of 30-40 rows and columns,<wbr/> and
13244 must be smaller than 64x64.<wbr/></p>
13249 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13250 <!-- end of entry -->
13253 <tr class="entry" id="static_android.lens.info.focusDistanceCalibration">
13254 <td class="entry_name
13256 android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration
13258 <td class="entry_type">
13259 <span class="entry_type_name entry_type_name_enum">byte</span>
13261 <span class="entry_type_visibility"> [public]</span>
13264 <span class="entry_type_hwlevel">[limited] </span>
13268 <ul class="entry_type_enum">
13270 <span class="entry_type_enum_name">UNCALIBRATED (v3.2)</span>
13271 <span class="entry_type_enum_notes"><p>The lens focus distance is not accurate,<wbr/> and the units used for
13272 <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> do not correspond to any physical units.<wbr/></p>
13273 <p>Setting the lens to the same focus distance on separate occasions may
13274 result in a different real focus distance,<wbr/> depending on factors such
13275 as the orientation of the device,<wbr/> the age of the focusing mechanism,<wbr/>
13276 and the device temperature.<wbr/> The focus distance value will still be
13277 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
13278 represents the farthest focus.<wbr/></p></span>
13281 <span class="entry_type_enum_name">APPROXIMATE (v3.2)</span>
13282 <span class="entry_type_enum_notes"><p>The lens focus distance is measured in diopters.<wbr/></p>
13283 <p>However,<wbr/> setting the lens to the same focus distance
13284 on separate occasions may result in a different real
13285 focus distance,<wbr/> depending on factors such as the
13286 orientation of the device,<wbr/> the age of the focusing
13287 mechanism,<wbr/> and the device temperature.<wbr/></p></span>
13290 <span class="entry_type_enum_name">CALIBRATED (v3.2)</span>
13291 <span class="entry_type_enum_notes"><p>The lens focus distance is measured in diopters,<wbr/> and
13292 is calibrated.<wbr/></p>
13293 <p>The lens mechanism is calibrated so that setting the
13294 same focus distance is repeatable on multiple
13295 occasions with good accuracy,<wbr/> and the focus distance
13296 corresponds to the real physical distance to the plane
13297 of best focus.<wbr/></p></span>
13301 </td> <!-- entry_type -->
13303 <td class="entry_description">
13304 <p>The lens focus distance calibration quality.<wbr/></p>
13307 <td class="entry_units">
13310 <td class="entry_range">
13313 <td class="entry_hal_version">
13317 <td class="entry_tags">
13318 <ul class="entry_tags">
13319 <li><a href="#tag_V1">V1</a></li>
13324 <tr class="entries_header">
13325 <th class="th_details" colspan="6">Details</th>
13327 <tr class="entry_cont">
13328 <td class="entry_details" colspan="6">
13329 <p>The lens focus distance calibration quality determines the reliability of
13330 focus related metadata entries,<wbr/> i.<wbr/>e.<wbr/> <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a>,<wbr/>
13331 <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
13332 <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a>.<wbr/></p>
13333 <p>APPROXIMATE and CALIBRATED devices report the focus metadata in
13334 units of diopters (1/<wbr/>meter),<wbr/> so <code>0.<wbr/>0f</code> represents focusing at infinity,<wbr/>
13335 and increasing positive numbers represent focusing closer and closer
13336 to the camera device.<wbr/> The focus distance control also uses diopters
13337 on these devices.<wbr/></p>
13338 <p>UNCALIBRATED devices do not use units that are directly comparable
13339 to any real physical measurement,<wbr/> but <code>0.<wbr/>0f</code> still represents farthest
13340 focus,<wbr/> and <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a> represents the
13341 nearest focus the device can achieve.<wbr/></p>
13345 <tr class="entries_header">
13346 <th class="th_details" colspan="6">HAL Implementation Details</th>
13348 <tr class="entry_cont">
13349 <td class="entry_details" colspan="6">
13350 <p>For devices advertise APPROXIMATE quality or higher,<wbr/> diopters 0 (infinity
13351 focus) must work.<wbr/> When autofocus is disabled (<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> == OFF)
13352 and the lens focus distance is set to 0 diopters
13353 (<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> == 0),<wbr/> the lens will move to focus at infinity
13354 and is stably focused at infinity even if the device tilts.<wbr/> It may take the
13355 lens some time to move; during the move the lens state should be MOVING and
13356 the output diopter value should be changing toward 0.<wbr/></p>
13360 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13361 <!-- end of entry -->
13367 <tr class="entry" id="static_android.lens.facing">
13368 <td class="entry_name
13370 android.<wbr/>lens.<wbr/>facing
13372 <td class="entry_type">
13373 <span class="entry_type_name entry_type_name_enum">byte</span>
13375 <span class="entry_type_visibility"> [public]</span>
13378 <span class="entry_type_hwlevel">[legacy] </span>
13382 <ul class="entry_type_enum">
13384 <span class="entry_type_enum_name">FRONT (v3.2)</span>
13385 <span class="entry_type_enum_notes"><p>The camera device faces the same direction as the device's screen.<wbr/></p></span>
13388 <span class="entry_type_enum_name">BACK (v3.2)</span>
13389 <span class="entry_type_enum_notes"><p>The camera device faces the opposite direction as the device's screen.<wbr/></p></span>
13392 <span class="entry_type_enum_name">EXTERNAL (v3.2)</span>
13393 <span class="entry_type_enum_notes"><p>The camera device is an external camera,<wbr/> and has no fixed facing relative to the
13394 device's screen.<wbr/></p></span>
13398 </td> <!-- entry_type -->
13400 <td class="entry_description">
13401 <p>Direction the camera faces relative to
13402 device screen.<wbr/></p>
13405 <td class="entry_units">
13408 <td class="entry_range">
13411 <td class="entry_hal_version">
13415 <td class="entry_tags">
13421 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13422 <!-- end of entry -->
13425 <tr class="entry" id="static_android.lens.poseRotation">
13426 <td class="entry_name
13428 android.<wbr/>lens.<wbr/>pose<wbr/>Rotation
13430 <td class="entry_type">
13431 <span class="entry_type_name">float</span>
13432 <span class="entry_type_container">x</span>
13434 <span class="entry_type_array">
13437 <span class="entry_type_visibility"> [public]</span>
13444 </td> <!-- entry_type -->
13446 <td class="entry_description">
13447 <p>The orientation of the camera relative to the sensor
13448 coordinate system.<wbr/></p>
13451 <td class="entry_units">
13453 Quaternion coefficients
13457 <td class="entry_range">
13460 <td class="entry_hal_version">
13464 <td class="entry_tags">
13465 <ul class="entry_tags">
13466 <li><a href="#tag_DEPTH">DEPTH</a></li>
13471 <tr class="entries_header">
13472 <th class="th_details" colspan="6">Details</th>
13474 <tr class="entry_cont">
13475 <td class="entry_details" colspan="6">
13476 <p>The four coefficients that describe the quaternion
13477 rotation from the Android sensor coordinate system to a
13478 camera-aligned coordinate system where the X-axis is
13479 aligned with the long side of the image sensor,<wbr/> the Y-axis
13480 is aligned with the short side of the image sensor,<wbr/> and
13481 the Z-axis is aligned with the optical axis of the sensor.<wbr/></p>
13482 <p>To convert from the quaternion coefficients <code>(x,<wbr/>y,<wbr/>z,<wbr/>w)</code>
13483 to the axis of rotation <code>(a_<wbr/>x,<wbr/> a_<wbr/>y,<wbr/> a_<wbr/>z)</code> and rotation
13484 amount <code>theta</code>,<wbr/> the following formulas can be used:</p>
13485 <pre><code> theta = 2 * acos(w)
13486 a_<wbr/>x = x /<wbr/> sin(theta/<wbr/>2)
13487 a_<wbr/>y = y /<wbr/> sin(theta/<wbr/>2)
13488 a_<wbr/>z = z /<wbr/> sin(theta/<wbr/>2)
13490 <p>To create a 3x3 rotation matrix that applies the rotation
13491 defined by this quaternion,<wbr/> the following matrix can be
13493 <pre><code>R = [ 1 - 2y^2 - 2z^2,<wbr/> 2xy - 2zw,<wbr/> 2xz + 2yw,<wbr/>
13494 2xy + 2zw,<wbr/> 1 - 2x^2 - 2z^2,<wbr/> 2yz - 2xw,<wbr/>
13495 2xz - 2yw,<wbr/> 2yz + 2xw,<wbr/> 1 - 2x^2 - 2y^2 ]
13497 <p>This matrix can then be used to apply the rotation to a
13498 column vector point with</p>
13499 <p><code>p' = Rp</code></p>
13500 <p>where <code>p</code> is in the device sensor coordinate system,<wbr/> and
13501 <code>p'</code> is in the camera-oriented coordinate system.<wbr/></p>
13506 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13507 <!-- end of entry -->
13510 <tr class="entry" id="static_android.lens.poseTranslation">
13511 <td class="entry_name
13513 android.<wbr/>lens.<wbr/>pose<wbr/>Translation
13515 <td class="entry_type">
13516 <span class="entry_type_name">float</span>
13517 <span class="entry_type_container">x</span>
13519 <span class="entry_type_array">
13522 <span class="entry_type_visibility"> [public]</span>
13529 </td> <!-- entry_type -->
13531 <td class="entry_description">
13532 <p>Position of the camera optical center.<wbr/></p>
13535 <td class="entry_units">
13539 <td class="entry_range">
13542 <td class="entry_hal_version">
13546 <td class="entry_tags">
13547 <ul class="entry_tags">
13548 <li><a href="#tag_DEPTH">DEPTH</a></li>
13553 <tr class="entries_header">
13554 <th class="th_details" colspan="6">Details</th>
13556 <tr class="entry_cont">
13557 <td class="entry_details" colspan="6">
13558 <p>The position of the camera device's lens optical center,<wbr/>
13559 as a three-dimensional vector <code>(x,<wbr/>y,<wbr/>z)</code>.<wbr/></p>
13560 <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
13561 is relative to the optical center of the largest camera device facing in the same
13562 direction as this camera,<wbr/> in the <a href="https://developer.android.com/reference/android/hardware/SensorEvent.html">Android sensor
13563 coordinate axes</a>.<wbr/> Note that only the axis definitions are shared with the sensor
13564 coordinate system,<wbr/> but not the origin.<wbr/></p>
13565 <p>If this device is the largest or only camera device with a given facing,<wbr/> then this
13566 position will be <code>(0,<wbr/> 0,<wbr/> 0)</code>; a camera device with a lens optical center located 3 cm
13567 from the main sensor along the +X axis (to the right from the user's perspective) will
13568 report <code>(0.<wbr/>03,<wbr/> 0,<wbr/> 0)</code>.<wbr/></p>
13569 <p>To transform a pixel coordinates between two cameras facing the same direction,<wbr/> first
13570 the source camera <a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a> must be corrected for.<wbr/> Then the source
13571 camera <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> needs to be applied,<wbr/> followed by the
13572 <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
13573 relative to the destination camera,<wbr/> the <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> of the destination
13574 camera,<wbr/> and finally the inverse of <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> of the destination
13575 camera.<wbr/> This obtains a radial-distortion-free coordinate in the destination camera pixel
13576 coordinates.<wbr/></p>
13577 <p>To compare this against a real image from the destination camera,<wbr/> the destination camera
13578 image then needs to be corrected for radial distortion before comparison or sampling.<wbr/></p>
13579 <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
13580 the center of the primary gyroscope on the device.<wbr/></p>
13585 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13586 <!-- end of entry -->
13589 <tr class="entry" id="static_android.lens.intrinsicCalibration">
13590 <td class="entry_name
13592 android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration
13594 <td class="entry_type">
13595 <span class="entry_type_name">float</span>
13596 <span class="entry_type_container">x</span>
13598 <span class="entry_type_array">
13601 <span class="entry_type_visibility"> [public]</span>
13608 </td> <!-- entry_type -->
13610 <td class="entry_description">
13611 <p>The parameters for this camera device's intrinsic
13612 calibration.<wbr/></p>
13615 <td class="entry_units">
13618 android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size
13619 coordinate system.<wbr/>
13623 <td class="entry_range">
13626 <td class="entry_hal_version">
13630 <td class="entry_tags">
13631 <ul class="entry_tags">
13632 <li><a href="#tag_DEPTH">DEPTH</a></li>
13637 <tr class="entries_header">
13638 <th class="th_details" colspan="6">Details</th>
13640 <tr class="entry_cont">
13641 <td class="entry_details" colspan="6">
13642 <p>The five calibration parameters that describe the
13643 transform from camera-centric 3D coordinates to sensor
13644 pixel coordinates:</p>
13645 <pre><code>[f_<wbr/>x,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>x,<wbr/> c_<wbr/>y,<wbr/> s]
13647 <p>Where <code>f_<wbr/>x</code> and <code>f_<wbr/>y</code> are the horizontal and vertical
13648 focal lengths,<wbr/> <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code> is the position of the optical
13649 axis,<wbr/> and <code>s</code> is a skew parameter for the sensor plane not
13650 being aligned with the lens plane.<wbr/></p>
13651 <p>These are typically used within a transformation matrix K:</p>
13652 <pre><code>K = [ f_<wbr/>x,<wbr/> s,<wbr/> c_<wbr/>x,<wbr/>
13653 0,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>y,<wbr/>
13656 <p>which can then be combined with the camera pose rotation
13657 <code>R</code> and translation <code>t</code> (<a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> and
13658 <a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a>,<wbr/> respective) to calculate the
13659 complete transform from world coordinates to pixel
13661 <pre><code>P = [ K 0 * [ R t
13664 <p>and with <code>p_<wbr/>w</code> being a point in the world coordinate system
13665 and <code>p_<wbr/>s</code> being a point in the camera active pixel array
13666 coordinate system,<wbr/> and with the mapping including the
13667 homogeneous division by z:</p>
13668 <pre><code> p_<wbr/>h = (x_<wbr/>h,<wbr/> y_<wbr/>h,<wbr/> z_<wbr/>h) = P p_<wbr/>w
13669 p_<wbr/>s = p_<wbr/>h /<wbr/> z_<wbr/>h
13671 <p>so <code>[x_<wbr/>s,<wbr/> y_<wbr/>s]</code> is the pixel coordinates of the world
13672 point,<wbr/> <code>z_<wbr/>s = 1</code>,<wbr/> and <code>w_<wbr/>s</code> is a measurement of disparity
13673 (depth) in pixel coordinates.<wbr/></p>
13674 <p>Note that the coordinate system for this transform is the
13675 <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/>
13676 where <code>(0,<wbr/>0)</code> is the top-left of the
13677 preCorrectionActiveArraySize rectangle.<wbr/> Once the pose and
13678 intrinsic calibration transforms have been applied to a
13679 world point,<wbr/> then the <a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a>
13680 transform needs to be applied,<wbr/> and the result adjusted to
13681 be in the <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> coordinate
13682 system (where <code>(0,<wbr/> 0)</code> is the top-left of the
13683 activeArraySize rectangle),<wbr/> to determine the final pixel
13684 coordinate of the world point for processed (non-RAW)
13685 output buffers.<wbr/></p>
13690 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13691 <!-- end of entry -->
13694 <tr class="entry" id="static_android.lens.radialDistortion">
13695 <td class="entry_name
13696 entry_name_deprecated
13698 android.<wbr/>lens.<wbr/>radial<wbr/>Distortion
13700 <td class="entry_type">
13701 <span class="entry_type_name">float</span>
13702 <span class="entry_type_container">x</span>
13704 <span class="entry_type_array">
13707 <span class="entry_type_visibility"> [public]</span>
13711 <span class="entry_type_deprecated">[deprecated] </span>
13715 </td> <!-- entry_type -->
13717 <td class="entry_description">
13718 <p>The correction coefficients to correct for this camera device's
13719 radial and tangential lens distortion.<wbr/></p>
13722 <td class="entry_units">
13724 Unitless coefficients.<wbr/>
13728 <td class="entry_range">
13729 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
13732 <td class="entry_hal_version">
13736 <td class="entry_tags">
13737 <ul class="entry_tags">
13738 <li><a href="#tag_DEPTH">DEPTH</a></li>
13743 <tr class="entries_header">
13744 <th class="th_details" colspan="6">Details</th>
13746 <tr class="entry_cont">
13747 <td class="entry_details" colspan="6">
13748 <p>Four radial distortion coefficients <code>[kappa_<wbr/>0,<wbr/> kappa_<wbr/>1,<wbr/> kappa_<wbr/>2,<wbr/>
13749 kappa_<wbr/>3]</code> and two tangential distortion coefficients
13750 <code>[kappa_<wbr/>4,<wbr/> kappa_<wbr/>5]</code> that can be used to correct the
13751 lens's geometric distortion with the mapping equations:</p>
13752 <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 ) +
13753 kappa_<wbr/>4 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>5 * ( r^2 + 2 * x_<wbr/>i^2 )
13754 y_<wbr/>c = y_<wbr/>i * ( kappa_<wbr/>0 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) +
13755 kappa_<wbr/>5 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>4 * ( r^2 + 2 * y_<wbr/>i^2 )
13757 <p>Here,<wbr/> <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> are the coordinates to sample in the
13758 input image that correspond to the pixel values in the
13759 corrected image at the coordinate <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code>:</p>
13760 <pre><code> correctedImage(x_<wbr/>i,<wbr/> y_<wbr/>i) = sample_<wbr/>at(x_<wbr/>c,<wbr/> y_<wbr/>c,<wbr/> inputImage)
13762 <p>The pixel coordinates are defined in a normalized
13763 coordinate system related to the
13764 <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> calibration fields.<wbr/>
13765 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
13766 lens optical center <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code>.<wbr/> The maximum magnitudes
13767 of both x and y coordinates are normalized to be 1 at the
13768 edge further from the optical center,<wbr/> so the range
13769 for both dimensions is <code>-1 <= x <= 1</code>.<wbr/></p>
13770 <p>Finally,<wbr/> <code>r</code> represents the radial distance from the
13771 optical center,<wbr/> <code>r^2 = x_<wbr/>i^2 + y_<wbr/>i^2</code>,<wbr/> and its magnitude
13772 is therefore no larger than <code>|<wbr/>r|<wbr/> <= sqrt(2)</code>.<wbr/></p>
13773 <p>The distortion model used is the Brown-Conrady model.<wbr/></p>
13778 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13779 <!-- end of entry -->
13782 <tr class="entry" id="static_android.lens.poseReference">
13783 <td class="entry_name
13785 android.<wbr/>lens.<wbr/>pose<wbr/>Reference
13787 <td class="entry_type">
13788 <span class="entry_type_name entry_type_name_enum">byte</span>
13790 <span class="entry_type_visibility"> [public]</span>
13796 <ul class="entry_type_enum">
13798 <span class="entry_type_enum_name">PRIMARY_CAMERA (v3.3)</span>
13799 <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
13800 the largest camera device facing the same direction as this camera.<wbr/></p>
13801 <p>This is the default value for API levels before Android P.<wbr/></p></span>
13804 <span class="entry_type_enum_name">GYROSCOPE (v3.3)</span>
13805 <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
13806 primary gyroscope of this Android device.<wbr/></p></span>
13810 </td> <!-- entry_type -->
13812 <td class="entry_description">
13813 <p>The origin for <a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a>.<wbr/></p>
13816 <td class="entry_units">
13819 <td class="entry_range">
13822 <td class="entry_hal_version">
13826 <td class="entry_tags">
13830 <tr class="entries_header">
13831 <th class="th_details" colspan="6">Details</th>
13833 <tr class="entry_cont">
13834 <td class="entry_details" colspan="6">
13835 <p>Different calibration methods and use cases can produce better or worse results
13836 depending on the selected coordinate origin.<wbr/></p>
13841 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13842 <!-- end of entry -->
13845 <tr class="entry" id="static_android.lens.distortion">
13846 <td class="entry_name
13848 android.<wbr/>lens.<wbr/>distortion
13850 <td class="entry_type">
13851 <span class="entry_type_name">float</span>
13852 <span class="entry_type_container">x</span>
13854 <span class="entry_type_array">
13857 <span class="entry_type_visibility"> [public]</span>
13864 </td> <!-- entry_type -->
13866 <td class="entry_description">
13867 <p>The correction coefficients to correct for this camera device's
13868 radial and tangential lens distortion.<wbr/></p>
13869 <p>Replaces the deprecated <a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a> field,<wbr/> which was
13870 inconsistently defined.<wbr/></p>
13873 <td class="entry_units">
13875 Unitless coefficients.<wbr/>
13879 <td class="entry_range">
13882 <td class="entry_hal_version">
13886 <td class="entry_tags">
13887 <ul class="entry_tags">
13888 <li><a href="#tag_DEPTH">DEPTH</a></li>
13893 <tr class="entries_header">
13894 <th class="th_details" colspan="6">Details</th>
13896 <tr class="entry_cont">
13897 <td class="entry_details" colspan="6">
13898 <p>Three radial distortion coefficients <code>[kappa_<wbr/>1,<wbr/> kappa_<wbr/>2,<wbr/>
13899 kappa_<wbr/>3]</code> and two tangential distortion coefficients
13900 <code>[kappa_<wbr/>4,<wbr/> kappa_<wbr/>5]</code> that can be used to correct the
13901 lens's geometric distortion with the mapping equations:</p>
13902 <pre><code> x_<wbr/>c = x_<wbr/>i * ( 1 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) +
13903 kappa_<wbr/>4 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>5 * ( r^2 + 2 * x_<wbr/>i^2 )
13904 y_<wbr/>c = y_<wbr/>i * ( 1 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) +
13905 kappa_<wbr/>5 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>4 * ( r^2 + 2 * y_<wbr/>i^2 )
13907 <p>Here,<wbr/> <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> are the coordinates to sample in the
13908 input image that correspond to the pixel values in the
13909 corrected image at the coordinate <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code>:</p>
13910 <pre><code> correctedImage(x_<wbr/>i,<wbr/> y_<wbr/>i) = sample_<wbr/>at(x_<wbr/>c,<wbr/> y_<wbr/>c,<wbr/> inputImage)
13912 <p>The pixel coordinates are defined in a coordinate system
13913 related to the <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a>
13914 calibration fields; see that entry for details of the mapping stages.<wbr/>
13915 Both <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code> and <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code>
13916 have <code>(0,<wbr/>0)</code> at the lens optical center <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code>,<wbr/> and
13917 the range of the coordinates depends on the focal length
13918 terms of the intrinsic calibration.<wbr/></p>
13919 <p>Finally,<wbr/> <code>r</code> represents the radial distance from the
13920 optical center,<wbr/> <code>r^2 = x_<wbr/>i^2 + y_<wbr/>i^2</code>.<wbr/></p>
13921 <p>The distortion model used is the Brown-Conrady model.<wbr/></p>
13926 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13927 <!-- end of entry -->
13931 <!-- end of kind -->
13933 <tr><td colspan="7" class="kind">dynamic</td></tr>
13935 <thead class="entries_header">
13937 <th class="th_name">Property Name</th>
13938 <th class="th_type">Type</th>
13939 <th class="th_description">Description</th>
13940 <th class="th_units">Units</th>
13941 <th class="th_range">Range</th>
13942 <th class="th_hal_version">Initial HIDL HAL version</th>
13943 <th class="th_tags">Tags</th>
13958 <tr class="entry" id="dynamic_android.lens.aperture">
13959 <td class="entry_name
13961 android.<wbr/>lens.<wbr/>aperture
13963 <td class="entry_type">
13964 <span class="entry_type_name">float</span>
13966 <span class="entry_type_visibility"> [public]</span>
13969 <span class="entry_type_hwlevel">[full] </span>
13974 </td> <!-- entry_type -->
13976 <td class="entry_description">
13977 <p>The desired lens aperture size,<wbr/> as a ratio of lens focal length to the
13978 effective aperture diameter.<wbr/></p>
13981 <td class="entry_units">
13982 The f-number (f/<wbr/>N)
13985 <td class="entry_range">
13986 <p><a href="#static_android.lens.info.availableApertures">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures</a></p>
13989 <td class="entry_hal_version">
13993 <td class="entry_tags">
13994 <ul class="entry_tags">
13995 <li><a href="#tag_V1">V1</a></li>
14000 <tr class="entries_header">
14001 <th class="th_details" colspan="6">Details</th>
14003 <tr class="entry_cont">
14004 <td class="entry_details" colspan="6">
14005 <p>Setting this value is only supported on the camera devices that have a variable
14006 aperture lens.<wbr/></p>
14007 <p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/>
14008 this can be set along with <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
14009 <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>
14010 to achieve manual exposure control.<wbr/></p>
14011 <p>The requested aperture value may take several frames to reach the
14012 requested value; the camera device will report the current (intermediate)
14013 aperture size in capture result metadata while the aperture is changing.<wbr/>
14014 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>
14015 <p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is one of
14016 the ON modes,<wbr/> this will be overridden by the camera device
14017 auto-exposure algorithm,<wbr/> the overridden values are then provided
14018 back to the user in the corresponding result.<wbr/></p>
14023 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14024 <!-- end of entry -->
14027 <tr class="entry" id="dynamic_android.lens.filterDensity">
14028 <td class="entry_name
14030 android.<wbr/>lens.<wbr/>filter<wbr/>Density
14032 <td class="entry_type">
14033 <span class="entry_type_name">float</span>
14035 <span class="entry_type_visibility"> [public]</span>
14038 <span class="entry_type_hwlevel">[full] </span>
14043 </td> <!-- entry_type -->
14045 <td class="entry_description">
14046 <p>The desired setting for the lens neutral density filter(s).<wbr/></p>
14049 <td class="entry_units">
14050 Exposure Value (EV)
14053 <td class="entry_range">
14054 <p><a href="#static_android.lens.info.availableFilterDensities">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities</a></p>
14057 <td class="entry_hal_version">
14061 <td class="entry_tags">
14062 <ul class="entry_tags">
14063 <li><a href="#tag_V1">V1</a></li>
14068 <tr class="entries_header">
14069 <th class="th_details" colspan="6">Details</th>
14071 <tr class="entry_cont">
14072 <td class="entry_details" colspan="6">
14073 <p>This control will not be supported on most camera devices.<wbr/></p>
14074 <p>Lens filters are typically used to lower the amount of light the
14075 sensor is exposed to (measured in steps of EV).<wbr/> As used here,<wbr/> an EV
14076 step is the standard logarithmic representation,<wbr/> which are
14077 non-negative,<wbr/> and inversely proportional to the amount of light
14078 hitting the sensor.<wbr/> For example,<wbr/> setting this to 0 would result
14079 in no reduction of the incoming light,<wbr/> and setting this to 2 would
14080 mean that the filter is set to reduce incoming light by two stops
14081 (allowing 1/<wbr/>4 of the prior amount of light to the sensor).<wbr/></p>
14082 <p>It may take several frames before the lens filter density changes
14083 to the requested value.<wbr/> While the filter density is still changing,<wbr/>
14084 <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p>
14089 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14090 <!-- end of entry -->
14093 <tr class="entry" id="dynamic_android.lens.focalLength">
14094 <td class="entry_name
14096 android.<wbr/>lens.<wbr/>focal<wbr/>Length
14098 <td class="entry_type">
14099 <span class="entry_type_name">float</span>
14101 <span class="entry_type_visibility"> [public]</span>
14104 <span class="entry_type_hwlevel">[legacy] </span>
14109 </td> <!-- entry_type -->
14111 <td class="entry_description">
14112 <p>The desired lens focal length; used for optical zoom.<wbr/></p>
14115 <td class="entry_units">
14119 <td class="entry_range">
14120 <p><a href="#static_android.lens.info.availableFocalLengths">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths</a></p>
14123 <td class="entry_hal_version">
14127 <td class="entry_tags">
14128 <ul class="entry_tags">
14129 <li><a href="#tag_BC">BC</a></li>
14134 <tr class="entries_header">
14135 <th class="th_details" colspan="6">Details</th>
14137 <tr class="entry_cont">
14138 <td class="entry_details" colspan="6">
14139 <p>This setting controls the physical focal length of the camera
14140 device's lens.<wbr/> Changing the focal length changes the field of
14141 view of the camera device,<wbr/> and is usually used for optical zoom.<wbr/></p>
14142 <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
14143 setting won't be applied instantaneously,<wbr/> and it may take several
14144 frames before the lens can change to the requested focal length.<wbr/>
14145 While the focal length is still changing,<wbr/> <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will
14146 be set to MOVING.<wbr/></p>
14147 <p>Optical zoom will not be supported on most devices.<wbr/></p>
14152 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14153 <!-- end of entry -->
14156 <tr class="entry" id="dynamic_android.lens.focusDistance">
14157 <td class="entry_name
14159 android.<wbr/>lens.<wbr/>focus<wbr/>Distance
14161 <td class="entry_type">
14162 <span class="entry_type_name">float</span>
14164 <span class="entry_type_visibility"> [public]</span>
14167 <span class="entry_type_hwlevel">[full] </span>
14172 </td> <!-- entry_type -->
14174 <td class="entry_description">
14175 <p>Desired distance to plane of sharpest focus,<wbr/>
14176 measured from frontmost surface of the lens.<wbr/></p>
14179 <td class="entry_units">
14180 See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
14183 <td class="entry_range">
14187 <td class="entry_hal_version">
14191 <td class="entry_tags">
14192 <ul class="entry_tags">
14193 <li><a href="#tag_BC">BC</a></li>
14198 <tr class="entries_header">
14199 <th class="th_details" colspan="6">Details</th>
14201 <tr class="entry_cont">
14202 <td class="entry_details" colspan="6">
14203 <p>Should be zero for fixed-focus cameras</p>
14208 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14209 <!-- end of entry -->
14212 <tr class="entry" id="dynamic_android.lens.focusRange">
14213 <td class="entry_name
14215 android.<wbr/>lens.<wbr/>focus<wbr/>Range
14217 <td class="entry_type">
14218 <span class="entry_type_name">float</span>
14219 <span class="entry_type_container">x</span>
14221 <span class="entry_type_array">
14224 <span class="entry_type_visibility"> [public as pairFloatFloat]</span>
14227 <span class="entry_type_hwlevel">[limited] </span>
14230 <div class="entry_type_notes">Range of scene distances that are in focus</div>
14233 </td> <!-- entry_type -->
14235 <td class="entry_description">
14236 <p>The range of scene distances that are in
14237 sharp focus (depth of field).<wbr/></p>
14240 <td class="entry_units">
14241 A pair of focus distances in diopters: (near,<wbr/>
14242 far); see android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details.<wbr/>
14245 <td class="entry_range">
14249 <td class="entry_hal_version">
14253 <td class="entry_tags">
14254 <ul class="entry_tags">
14255 <li><a href="#tag_BC">BC</a></li>
14260 <tr class="entries_header">
14261 <th class="th_details" colspan="6">Details</th>
14263 <tr class="entry_cont">
14264 <td class="entry_details" colspan="6">
14265 <p>If variable focus not supported,<wbr/> can still report
14266 fixed depth of field range</p>
14271 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14272 <!-- end of entry -->
14275 <tr class="entry" id="dynamic_android.lens.opticalStabilizationMode">
14276 <td class="entry_name
14278 android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode
14280 <td class="entry_type">
14281 <span class="entry_type_name entry_type_name_enum">byte</span>
14283 <span class="entry_type_visibility"> [public]</span>
14286 <span class="entry_type_hwlevel">[limited] </span>
14290 <ul class="entry_type_enum">
14292 <span class="entry_type_enum_name">OFF (v3.2)</span>
14293 <span class="entry_type_enum_notes"><p>Optical stabilization is unavailable.<wbr/></p></span>
14296 <span class="entry_type_enum_name">ON (v3.2)</span>
14297 <span class="entry_type_enum_optional">[optional]</span>
14298 <span class="entry_type_enum_notes"><p>Optical stabilization is enabled.<wbr/></p></span>
14302 </td> <!-- entry_type -->
14304 <td class="entry_description">
14305 <p>Sets whether the camera device uses optical image stabilization (OIS)
14306 when capturing images.<wbr/></p>
14309 <td class="entry_units">
14312 <td class="entry_range">
14313 <p><a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a></p>
14316 <td class="entry_hal_version">
14320 <td class="entry_tags">
14321 <ul class="entry_tags">
14322 <li><a href="#tag_V1">V1</a></li>
14327 <tr class="entries_header">
14328 <th class="th_details" colspan="6">Details</th>
14330 <tr class="entry_cont">
14331 <td class="entry_details" colspan="6">
14332 <p>OIS is used to compensate for motion blur due to small
14333 movements of the camera during capture.<wbr/> Unlike digital image
14334 stabilization (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> OIS
14335 makes use of mechanical elements to stabilize the camera
14336 sensor,<wbr/> and thus allows for longer exposure times before
14337 camera shake becomes apparent.<wbr/></p>
14338 <p>Switching between different optical stabilization modes may take several
14339 frames to initialize,<wbr/> the camera device will report the current mode in
14340 capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/> the
14341 optical stabilization modes in the first several capture results may still
14342 be "OFF",<wbr/> and it will become "ON" when the initialization is done.<wbr/></p>
14343 <p>If a camera device supports both OIS and digital image stabilization
14344 (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may produce undesirable
14345 interaction,<wbr/> so it is recommended not to enable both at the same time.<wbr/></p>
14346 <p>Not all devices will support OIS; see
14347 <a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a> for
14348 available controls.<wbr/></p>
14353 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14354 <!-- end of entry -->
14357 <tr class="entry" id="dynamic_android.lens.state">
14358 <td class="entry_name
14360 android.<wbr/>lens.<wbr/>state
14362 <td class="entry_type">
14363 <span class="entry_type_name entry_type_name_enum">byte</span>
14365 <span class="entry_type_visibility"> [public]</span>
14368 <span class="entry_type_hwlevel">[limited] </span>
14372 <ul class="entry_type_enum">
14374 <span class="entry_type_enum_name">STATIONARY (v3.2)</span>
14375 <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/>
14376 <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>
14379 <span class="entry_type_enum_name">MOVING (v3.2)</span>
14380 <span class="entry_type_enum_notes"><p>One or several of the lens parameters
14381 (<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/>
14382 <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
14383 currently changing.<wbr/></p></span>
14387 </td> <!-- entry_type -->
14389 <td class="entry_description">
14390 <p>Current lens status.<wbr/></p>
14393 <td class="entry_units">
14396 <td class="entry_range">
14399 <td class="entry_hal_version">
14403 <td class="entry_tags">
14404 <ul class="entry_tags">
14405 <li><a href="#tag_V1">V1</a></li>
14410 <tr class="entries_header">
14411 <th class="th_details" colspan="6">Details</th>
14413 <tr class="entry_cont">
14414 <td class="entry_details" colspan="6">
14415 <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/>
14416 <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/>
14417 they may take several frames to reach the requested values.<wbr/> This state indicates
14418 the current status of the lens parameters.<wbr/></p>
14419 <p>When the state is STATIONARY,<wbr/> the lens parameters are not changing.<wbr/> This could be
14420 either because the parameters are all fixed,<wbr/> or because the lens has had enough
14421 time to reach the most recently-requested values.<wbr/>
14422 If all these lens parameters are not changable for a camera device,<wbr/> as listed below:</p>
14424 <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
14425 <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> parameter will always be 0.<wbr/></li>
14426 <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/>
14427 which means the optical zoom is not supported.<wbr/></li>
14428 <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>
14429 <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>
14431 <p>Then this state will always be STATIONARY.<wbr/></p>
14432 <p>When the state is MOVING,<wbr/> it indicates that at least one of the lens parameters
14433 is changing.<wbr/></p>
14438 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14439 <!-- end of entry -->
14442 <tr class="entry" id="dynamic_android.lens.poseRotation">
14443 <td class="entry_name
14445 android.<wbr/>lens.<wbr/>pose<wbr/>Rotation
14447 <td class="entry_type">
14448 <span class="entry_type_name">float</span>
14449 <span class="entry_type_container">x</span>
14451 <span class="entry_type_array">
14454 <span class="entry_type_visibility"> [public]</span>
14461 </td> <!-- entry_type -->
14463 <td class="entry_description">
14464 <p>The orientation of the camera relative to the sensor
14465 coordinate system.<wbr/></p>
14468 <td class="entry_units">
14470 Quaternion coefficients
14474 <td class="entry_range">
14477 <td class="entry_hal_version">
14481 <td class="entry_tags">
14482 <ul class="entry_tags">
14483 <li><a href="#tag_DEPTH">DEPTH</a></li>
14488 <tr class="entries_header">
14489 <th class="th_details" colspan="6">Details</th>
14491 <tr class="entry_cont">
14492 <td class="entry_details" colspan="6">
14493 <p>The four coefficients that describe the quaternion
14494 rotation from the Android sensor coordinate system to a
14495 camera-aligned coordinate system where the X-axis is
14496 aligned with the long side of the image sensor,<wbr/> the Y-axis
14497 is aligned with the short side of the image sensor,<wbr/> and
14498 the Z-axis is aligned with the optical axis of the sensor.<wbr/></p>
14499 <p>To convert from the quaternion coefficients <code>(x,<wbr/>y,<wbr/>z,<wbr/>w)</code>
14500 to the axis of rotation <code>(a_<wbr/>x,<wbr/> a_<wbr/>y,<wbr/> a_<wbr/>z)</code> and rotation
14501 amount <code>theta</code>,<wbr/> the following formulas can be used:</p>
14502 <pre><code> theta = 2 * acos(w)
14503 a_<wbr/>x = x /<wbr/> sin(theta/<wbr/>2)
14504 a_<wbr/>y = y /<wbr/> sin(theta/<wbr/>2)
14505 a_<wbr/>z = z /<wbr/> sin(theta/<wbr/>2)
14507 <p>To create a 3x3 rotation matrix that applies the rotation
14508 defined by this quaternion,<wbr/> the following matrix can be
14510 <pre><code>R = [ 1 - 2y^2 - 2z^2,<wbr/> 2xy - 2zw,<wbr/> 2xz + 2yw,<wbr/>
14511 2xy + 2zw,<wbr/> 1 - 2x^2 - 2z^2,<wbr/> 2yz - 2xw,<wbr/>
14512 2xz - 2yw,<wbr/> 2yz + 2xw,<wbr/> 1 - 2x^2 - 2y^2 ]
14514 <p>This matrix can then be used to apply the rotation to a
14515 column vector point with</p>
14516 <p><code>p' = Rp</code></p>
14517 <p>where <code>p</code> is in the device sensor coordinate system,<wbr/> and
14518 <code>p'</code> is in the camera-oriented coordinate system.<wbr/></p>
14523 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14524 <!-- end of entry -->
14527 <tr class="entry" id="dynamic_android.lens.poseTranslation">
14528 <td class="entry_name
14530 android.<wbr/>lens.<wbr/>pose<wbr/>Translation
14532 <td class="entry_type">
14533 <span class="entry_type_name">float</span>
14534 <span class="entry_type_container">x</span>
14536 <span class="entry_type_array">
14539 <span class="entry_type_visibility"> [public]</span>
14546 </td> <!-- entry_type -->
14548 <td class="entry_description">
14549 <p>Position of the camera optical center.<wbr/></p>
14552 <td class="entry_units">
14556 <td class="entry_range">
14559 <td class="entry_hal_version">
14563 <td class="entry_tags">
14564 <ul class="entry_tags">
14565 <li><a href="#tag_DEPTH">DEPTH</a></li>
14570 <tr class="entries_header">
14571 <th class="th_details" colspan="6">Details</th>
14573 <tr class="entry_cont">
14574 <td class="entry_details" colspan="6">
14575 <p>The position of the camera device's lens optical center,<wbr/>
14576 as a three-dimensional vector <code>(x,<wbr/>y,<wbr/>z)</code>.<wbr/></p>
14577 <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
14578 is relative to the optical center of the largest camera device facing in the same
14579 direction as this camera,<wbr/> in the <a href="https://developer.android.com/reference/android/hardware/SensorEvent.html">Android sensor
14580 coordinate axes</a>.<wbr/> Note that only the axis definitions are shared with the sensor
14581 coordinate system,<wbr/> but not the origin.<wbr/></p>
14582 <p>If this device is the largest or only camera device with a given facing,<wbr/> then this
14583 position will be <code>(0,<wbr/> 0,<wbr/> 0)</code>; a camera device with a lens optical center located 3 cm
14584 from the main sensor along the +X axis (to the right from the user's perspective) will
14585 report <code>(0.<wbr/>03,<wbr/> 0,<wbr/> 0)</code>.<wbr/></p>
14586 <p>To transform a pixel coordinates between two cameras facing the same direction,<wbr/> first
14587 the source camera <a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a> must be corrected for.<wbr/> Then the source
14588 camera <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> needs to be applied,<wbr/> followed by the
14589 <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
14590 relative to the destination camera,<wbr/> the <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> of the destination
14591 camera,<wbr/> and finally the inverse of <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> of the destination
14592 camera.<wbr/> This obtains a radial-distortion-free coordinate in the destination camera pixel
14593 coordinates.<wbr/></p>
14594 <p>To compare this against a real image from the destination camera,<wbr/> the destination camera
14595 image then needs to be corrected for radial distortion before comparison or sampling.<wbr/></p>
14596 <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
14597 the center of the primary gyroscope on the device.<wbr/></p>
14602 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14603 <!-- end of entry -->
14606 <tr class="entry" id="dynamic_android.lens.intrinsicCalibration">
14607 <td class="entry_name
14609 android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration
14611 <td class="entry_type">
14612 <span class="entry_type_name">float</span>
14613 <span class="entry_type_container">x</span>
14615 <span class="entry_type_array">
14618 <span class="entry_type_visibility"> [public]</span>
14625 </td> <!-- entry_type -->
14627 <td class="entry_description">
14628 <p>The parameters for this camera device's intrinsic
14629 calibration.<wbr/></p>
14632 <td class="entry_units">
14635 android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size
14636 coordinate system.<wbr/>
14640 <td class="entry_range">
14643 <td class="entry_hal_version">
14647 <td class="entry_tags">
14648 <ul class="entry_tags">
14649 <li><a href="#tag_DEPTH">DEPTH</a></li>
14654 <tr class="entries_header">
14655 <th class="th_details" colspan="6">Details</th>
14657 <tr class="entry_cont">
14658 <td class="entry_details" colspan="6">
14659 <p>The five calibration parameters that describe the
14660 transform from camera-centric 3D coordinates to sensor
14661 pixel coordinates:</p>
14662 <pre><code>[f_<wbr/>x,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>x,<wbr/> c_<wbr/>y,<wbr/> s]
14664 <p>Where <code>f_<wbr/>x</code> and <code>f_<wbr/>y</code> are the horizontal and vertical
14665 focal lengths,<wbr/> <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code> is the position of the optical
14666 axis,<wbr/> and <code>s</code> is a skew parameter for the sensor plane not
14667 being aligned with the lens plane.<wbr/></p>
14668 <p>These are typically used within a transformation matrix K:</p>
14669 <pre><code>K = [ f_<wbr/>x,<wbr/> s,<wbr/> c_<wbr/>x,<wbr/>
14670 0,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>y,<wbr/>
14673 <p>which can then be combined with the camera pose rotation
14674 <code>R</code> and translation <code>t</code> (<a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> and
14675 <a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a>,<wbr/> respective) to calculate the
14676 complete transform from world coordinates to pixel
14678 <pre><code>P = [ K 0 * [ R t
14681 <p>and with <code>p_<wbr/>w</code> being a point in the world coordinate system
14682 and <code>p_<wbr/>s</code> being a point in the camera active pixel array
14683 coordinate system,<wbr/> and with the mapping including the
14684 homogeneous division by z:</p>
14685 <pre><code> p_<wbr/>h = (x_<wbr/>h,<wbr/> y_<wbr/>h,<wbr/> z_<wbr/>h) = P p_<wbr/>w
14686 p_<wbr/>s = p_<wbr/>h /<wbr/> z_<wbr/>h
14688 <p>so <code>[x_<wbr/>s,<wbr/> y_<wbr/>s]</code> is the pixel coordinates of the world
14689 point,<wbr/> <code>z_<wbr/>s = 1</code>,<wbr/> and <code>w_<wbr/>s</code> is a measurement of disparity
14690 (depth) in pixel coordinates.<wbr/></p>
14691 <p>Note that the coordinate system for this transform is the
14692 <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/>
14693 where <code>(0,<wbr/>0)</code> is the top-left of the
14694 preCorrectionActiveArraySize rectangle.<wbr/> Once the pose and
14695 intrinsic calibration transforms have been applied to a
14696 world point,<wbr/> then the <a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a>
14697 transform needs to be applied,<wbr/> and the result adjusted to
14698 be in the <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> coordinate
14699 system (where <code>(0,<wbr/> 0)</code> is the top-left of the
14700 activeArraySize rectangle),<wbr/> to determine the final pixel
14701 coordinate of the world point for processed (non-RAW)
14702 output buffers.<wbr/></p>
14707 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14708 <!-- end of entry -->
14711 <tr class="entry" id="dynamic_android.lens.radialDistortion">
14712 <td class="entry_name
14713 entry_name_deprecated
14715 android.<wbr/>lens.<wbr/>radial<wbr/>Distortion
14717 <td class="entry_type">
14718 <span class="entry_type_name">float</span>
14719 <span class="entry_type_container">x</span>
14721 <span class="entry_type_array">
14724 <span class="entry_type_visibility"> [public]</span>
14728 <span class="entry_type_deprecated">[deprecated] </span>
14732 </td> <!-- entry_type -->
14734 <td class="entry_description">
14735 <p>The correction coefficients to correct for this camera device's
14736 radial and tangential lens distortion.<wbr/></p>
14739 <td class="entry_units">
14741 Unitless coefficients.<wbr/>
14745 <td class="entry_range">
14746 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
14749 <td class="entry_hal_version">
14753 <td class="entry_tags">
14754 <ul class="entry_tags">
14755 <li><a href="#tag_DEPTH">DEPTH</a></li>
14760 <tr class="entries_header">
14761 <th class="th_details" colspan="6">Details</th>
14763 <tr class="entry_cont">
14764 <td class="entry_details" colspan="6">
14765 <p>Four radial distortion coefficients <code>[kappa_<wbr/>0,<wbr/> kappa_<wbr/>1,<wbr/> kappa_<wbr/>2,<wbr/>
14766 kappa_<wbr/>3]</code> and two tangential distortion coefficients
14767 <code>[kappa_<wbr/>4,<wbr/> kappa_<wbr/>5]</code> that can be used to correct the
14768 lens's geometric distortion with the mapping equations:</p>
14769 <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 ) +
14770 kappa_<wbr/>4 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>5 * ( r^2 + 2 * x_<wbr/>i^2 )
14771 y_<wbr/>c = y_<wbr/>i * ( kappa_<wbr/>0 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) +
14772 kappa_<wbr/>5 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>4 * ( r^2 + 2 * y_<wbr/>i^2 )
14774 <p>Here,<wbr/> <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> are the coordinates to sample in the
14775 input image that correspond to the pixel values in the
14776 corrected image at the coordinate <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code>:</p>
14777 <pre><code> correctedImage(x_<wbr/>i,<wbr/> y_<wbr/>i) = sample_<wbr/>at(x_<wbr/>c,<wbr/> y_<wbr/>c,<wbr/> inputImage)
14779 <p>The pixel coordinates are defined in a normalized
14780 coordinate system related to the
14781 <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> calibration fields.<wbr/>
14782 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
14783 lens optical center <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code>.<wbr/> The maximum magnitudes
14784 of both x and y coordinates are normalized to be 1 at the
14785 edge further from the optical center,<wbr/> so the range
14786 for both dimensions is <code>-1 <= x <= 1</code>.<wbr/></p>
14787 <p>Finally,<wbr/> <code>r</code> represents the radial distance from the
14788 optical center,<wbr/> <code>r^2 = x_<wbr/>i^2 + y_<wbr/>i^2</code>,<wbr/> and its magnitude
14789 is therefore no larger than <code>|<wbr/>r|<wbr/> <= sqrt(2)</code>.<wbr/></p>
14790 <p>The distortion model used is the Brown-Conrady model.<wbr/></p>
14795 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14796 <!-- end of entry -->
14799 <tr class="entry" id="dynamic_android.lens.distortion">
14800 <td class="entry_name
14802 android.<wbr/>lens.<wbr/>distortion
14804 <td class="entry_type">
14805 <span class="entry_type_name">float</span>
14806 <span class="entry_type_container">x</span>
14808 <span class="entry_type_array">
14811 <span class="entry_type_visibility"> [public]</span>
14818 </td> <!-- entry_type -->
14820 <td class="entry_description">
14821 <p>The correction coefficients to correct for this camera device's
14822 radial and tangential lens distortion.<wbr/></p>
14823 <p>Replaces the deprecated <a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a> field,<wbr/> which was
14824 inconsistently defined.<wbr/></p>
14827 <td class="entry_units">
14829 Unitless coefficients.<wbr/>
14833 <td class="entry_range">
14836 <td class="entry_hal_version">
14840 <td class="entry_tags">
14841 <ul class="entry_tags">
14842 <li><a href="#tag_DEPTH">DEPTH</a></li>
14847 <tr class="entries_header">
14848 <th class="th_details" colspan="6">Details</th>
14850 <tr class="entry_cont">
14851 <td class="entry_details" colspan="6">
14852 <p>Three radial distortion coefficients <code>[kappa_<wbr/>1,<wbr/> kappa_<wbr/>2,<wbr/>
14853 kappa_<wbr/>3]</code> and two tangential distortion coefficients
14854 <code>[kappa_<wbr/>4,<wbr/> kappa_<wbr/>5]</code> that can be used to correct the
14855 lens's geometric distortion with the mapping equations:</p>
14856 <pre><code> x_<wbr/>c = x_<wbr/>i * ( 1 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) +
14857 kappa_<wbr/>4 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>5 * ( r^2 + 2 * x_<wbr/>i^2 )
14858 y_<wbr/>c = y_<wbr/>i * ( 1 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) +
14859 kappa_<wbr/>5 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>4 * ( r^2 + 2 * y_<wbr/>i^2 )
14861 <p>Here,<wbr/> <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> are the coordinates to sample in the
14862 input image that correspond to the pixel values in the
14863 corrected image at the coordinate <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code>:</p>
14864 <pre><code> correctedImage(x_<wbr/>i,<wbr/> y_<wbr/>i) = sample_<wbr/>at(x_<wbr/>c,<wbr/> y_<wbr/>c,<wbr/> inputImage)
14866 <p>The pixel coordinates are defined in a coordinate system
14867 related to the <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a>
14868 calibration fields; see that entry for details of the mapping stages.<wbr/>
14869 Both <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code> and <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code>
14870 have <code>(0,<wbr/>0)</code> at the lens optical center <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code>,<wbr/> and
14871 the range of the coordinates depends on the focal length
14872 terms of the intrinsic calibration.<wbr/></p>
14873 <p>Finally,<wbr/> <code>r</code> represents the radial distance from the
14874 optical center,<wbr/> <code>r^2 = x_<wbr/>i^2 + y_<wbr/>i^2</code>.<wbr/></p>
14875 <p>The distortion model used is the Brown-Conrady model.<wbr/></p>
14880 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14881 <!-- end of entry -->
14885 <!-- end of kind -->
14888 <!-- end of section -->
14889 <tr><td colspan="7" id="section_noiseReduction" class="section">noiseReduction</td></tr>
14892 <tr><td colspan="7" class="kind">controls</td></tr>
14894 <thead class="entries_header">
14896 <th class="th_name">Property Name</th>
14897 <th class="th_type">Type</th>
14898 <th class="th_description">Description</th>
14899 <th class="th_units">Units</th>
14900 <th class="th_range">Range</th>
14901 <th class="th_hal_version">Initial HIDL HAL version</th>
14902 <th class="th_tags">Tags</th>
14917 <tr class="entry" id="controls_android.noiseReduction.mode">
14918 <td class="entry_name
14920 android.<wbr/>noise<wbr/>Reduction.<wbr/>mode
14922 <td class="entry_type">
14923 <span class="entry_type_name entry_type_name_enum">byte</span>
14925 <span class="entry_type_visibility"> [public]</span>
14928 <span class="entry_type_hwlevel">[full] </span>
14932 <ul class="entry_type_enum">
14934 <span class="entry_type_enum_name">OFF (v3.2)</span>
14935 <span class="entry_type_enum_notes"><p>No noise reduction is applied.<wbr/></p></span>
14938 <span class="entry_type_enum_name">FAST (v3.2)</span>
14939 <span class="entry_type_enum_notes"><p>Noise reduction is applied without reducing frame rate relative to sensor
14940 output.<wbr/> It may be the same as OFF if noise reduction will reduce frame rate
14941 relative to sensor.<wbr/></p></span>
14944 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
14945 <span class="entry_type_enum_notes"><p>High-quality noise reduction is applied,<wbr/> at the cost of possibly reduced frame
14946 rate relative to sensor output.<wbr/></p></span>
14949 <span class="entry_type_enum_name">MINIMAL (v3.2)</span>
14950 <span class="entry_type_enum_optional">[optional]</span>
14951 <span class="entry_type_enum_notes"><p>MINIMAL noise reduction is applied without reducing frame rate relative to
14952 sensor output.<wbr/> </p></span>
14955 <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span>
14956 <span class="entry_type_enum_optional">[optional]</span>
14957 <span class="entry_type_enum_notes"><p>Noise reduction is applied at different levels for different output streams,<wbr/>
14958 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>)
14959 or below have noise reduction applied,<wbr/> while higher-resolution streams have MINIMAL (if
14960 supported) or no noise reduction applied (if MINIMAL is not supported.<wbr/>) The degree of
14961 noise reduction for low-resolution streams is tuned so that frame rate is not impacted,<wbr/>
14962 and the quality is equal to or better than FAST (since it is only applied to
14963 lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p>
14964 <p>This mode is intended to be used by applications operating in a zero-shutter-lag mode
14965 with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures
14966 high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is
14967 produced via reprocessing when a user takes a picture.<wbr/> For such a use case,<wbr/> the
14968 high-resolution buffers must not have noise reduction applied to maximize efficiency of
14969 preview and to avoid over-applying noise filtering when reprocessing,<wbr/> while
14970 low-resolution buffers (used for recording or preview,<wbr/> generally) need noise reduction
14971 applied for reasonable preview quality.<wbr/></p>
14972 <p>This mode is guaranteed to be supported by devices that support either the
14973 YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities
14974 (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will
14975 be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span>
14979 </td> <!-- entry_type -->
14981 <td class="entry_description">
14982 <p>Mode of operation for the noise reduction algorithm.<wbr/></p>
14985 <td class="entry_units">
14988 <td class="entry_range">
14989 <p><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a></p>
14992 <td class="entry_hal_version">
14996 <td class="entry_tags">
14997 <ul class="entry_tags">
14998 <li><a href="#tag_V1">V1</a></li>
14999 <li><a href="#tag_REPROC">REPROC</a></li>
15004 <tr class="entries_header">
15005 <th class="th_details" colspan="6">Details</th>
15007 <tr class="entry_cont">
15008 <td class="entry_details" colspan="6">
15009 <p>The noise reduction algorithm attempts to improve image quality by removing
15010 excessive noise added by the capture process,<wbr/> especially in dark conditions.<wbr/></p>
15011 <p>OFF means no noise reduction will be applied by the camera device,<wbr/> for both raw and
15012 YUV domain.<wbr/></p>
15013 <p>MINIMAL means that only sensor raw domain basic noise reduction is enabled ,<wbr/>to remove
15014 demosaicing or other processing artifacts.<wbr/> For YUV_<wbr/>REPROCESSING,<wbr/> MINIMAL is same as OFF.<wbr/>
15015 This mode is optional,<wbr/> may not be support by all devices.<wbr/> The application should check
15016 <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>
15017 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined noise filtering
15018 will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device
15019 will use the highest-quality noise filtering algorithms,<wbr/>
15020 even if it slows down capture rate.<wbr/> FAST means the camera device will not
15021 slow down capture rate when applying noise filtering.<wbr/> FAST may be the same as MINIMAL if
15022 MINIMAL is listed,<wbr/> or the same as OFF if any noise filtering will slow down capture rate.<wbr/>
15023 Every output stream will have a similar amount of enhancement applied.<wbr/></p>
15024 <p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular
15025 buffer of high-resolution images during preview and reprocess image(s) from that buffer
15026 into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies
15027 noise reduction to low-resolution streams (below maximum recording resolution) to maximize
15028 preview quality,<wbr/> but does not apply noise reduction to high-resolution streams,<wbr/> since
15029 those will be reprocessed later if necessary.<wbr/></p>
15030 <p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera device
15031 will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV domain noise reduction,<wbr/> respectively.<wbr/> The camera device
15032 may adjust the noise reduction parameters for best image quality based on the
15033 <a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a> if it is set.<wbr/></p>
15037 <tr class="entries_header">
15038 <th class="th_details" colspan="6">HAL Implementation Details</th>
15040 <tr class="entry_cont">
15041 <td class="entry_details" colspan="6">
15042 <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
15043 adjust the internal noise reduction parameters appropriately to get the best quality
15048 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15049 <!-- end of entry -->
15052 <tr class="entry" id="controls_android.noiseReduction.strength">
15053 <td class="entry_name
15055 android.<wbr/>noise<wbr/>Reduction.<wbr/>strength
15057 <td class="entry_type">
15058 <span class="entry_type_name">byte</span>
15060 <span class="entry_type_visibility"> [system]</span>
15067 </td> <!-- entry_type -->
15069 <td class="entry_description">
15070 <p>Control the amount of noise reduction
15071 applied to the images</p>
15074 <td class="entry_units">
15075 1-10; 10 is max noise reduction
15078 <td class="entry_range">
15082 <td class="entry_hal_version">
15086 <td class="entry_tags">
15087 <ul class="entry_tags">
15088 <li><a href="#tag_FUTURE">FUTURE</a></li>
15095 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15096 <!-- end of entry -->
15100 <!-- end of kind -->
15102 <tr><td colspan="7" class="kind">static</td></tr>
15104 <thead class="entries_header">
15106 <th class="th_name">Property Name</th>
15107 <th class="th_type">Type</th>
15108 <th class="th_description">Description</th>
15109 <th class="th_units">Units</th>
15110 <th class="th_range">Range</th>
15111 <th class="th_hal_version">Initial HIDL HAL version</th>
15112 <th class="th_tags">Tags</th>
15127 <tr class="entry" id="static_android.noiseReduction.availableNoiseReductionModes">
15128 <td class="entry_name
15130 android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes
15132 <td class="entry_type">
15133 <span class="entry_type_name">byte</span>
15134 <span class="entry_type_container">x</span>
15136 <span class="entry_type_array">
15139 <span class="entry_type_visibility"> [public as enumList]</span>
15142 <span class="entry_type_hwlevel">[limited] </span>
15145 <div class="entry_type_notes">list of enums</div>
15148 </td> <!-- entry_type -->
15150 <td class="entry_description">
15151 <p>List of noise reduction modes for <a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a> that are supported
15152 by this camera device.<wbr/></p>
15155 <td class="entry_units">
15158 <td class="entry_range">
15159 <p>Any value listed in <a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></p>
15162 <td class="entry_hal_version">
15166 <td class="entry_tags">
15167 <ul class="entry_tags">
15168 <li><a href="#tag_V1">V1</a></li>
15169 <li><a href="#tag_REPROC">REPROC</a></li>
15174 <tr class="entries_header">
15175 <th class="th_details" colspan="6">Details</th>
15177 <tr class="entry_cont">
15178 <td class="entry_details" colspan="6">
15179 <p>Full-capability camera devices will always support OFF and FAST.<wbr/></p>
15180 <p>Camera devices that support YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING will support
15181 ZERO_<wbr/>SHUTTER_<wbr/>LAG.<wbr/></p>
15182 <p>Legacy-capability camera devices will only support FAST mode.<wbr/></p>
15186 <tr class="entries_header">
15187 <th class="th_details" colspan="6">HAL Implementation Details</th>
15189 <tr class="entry_cont">
15190 <td class="entry_details" colspan="6">
15191 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if noise reduction control is available
15192 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
15193 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
15194 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
15198 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15199 <!-- end of entry -->
15203 <!-- end of kind -->
15205 <tr><td colspan="7" class="kind">dynamic</td></tr>
15207 <thead class="entries_header">
15209 <th class="th_name">Property Name</th>
15210 <th class="th_type">Type</th>
15211 <th class="th_description">Description</th>
15212 <th class="th_units">Units</th>
15213 <th class="th_range">Range</th>
15214 <th class="th_hal_version">Initial HIDL HAL version</th>
15215 <th class="th_tags">Tags</th>
15230 <tr class="entry" id="dynamic_android.noiseReduction.mode">
15231 <td class="entry_name
15233 android.<wbr/>noise<wbr/>Reduction.<wbr/>mode
15235 <td class="entry_type">
15236 <span class="entry_type_name entry_type_name_enum">byte</span>
15238 <span class="entry_type_visibility"> [public]</span>
15241 <span class="entry_type_hwlevel">[full] </span>
15245 <ul class="entry_type_enum">
15247 <span class="entry_type_enum_name">OFF (v3.2)</span>
15248 <span class="entry_type_enum_notes"><p>No noise reduction is applied.<wbr/></p></span>
15251 <span class="entry_type_enum_name">FAST (v3.2)</span>
15252 <span class="entry_type_enum_notes"><p>Noise reduction is applied without reducing frame rate relative to sensor
15253 output.<wbr/> It may be the same as OFF if noise reduction will reduce frame rate
15254 relative to sensor.<wbr/></p></span>
15257 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
15258 <span class="entry_type_enum_notes"><p>High-quality noise reduction is applied,<wbr/> at the cost of possibly reduced frame
15259 rate relative to sensor output.<wbr/></p></span>
15262 <span class="entry_type_enum_name">MINIMAL (v3.2)</span>
15263 <span class="entry_type_enum_optional">[optional]</span>
15264 <span class="entry_type_enum_notes"><p>MINIMAL noise reduction is applied without reducing frame rate relative to
15265 sensor output.<wbr/> </p></span>
15268 <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span>
15269 <span class="entry_type_enum_optional">[optional]</span>
15270 <span class="entry_type_enum_notes"><p>Noise reduction is applied at different levels for different output streams,<wbr/>
15271 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>)
15272 or below have noise reduction applied,<wbr/> while higher-resolution streams have MINIMAL (if
15273 supported) or no noise reduction applied (if MINIMAL is not supported.<wbr/>) The degree of
15274 noise reduction for low-resolution streams is tuned so that frame rate is not impacted,<wbr/>
15275 and the quality is equal to or better than FAST (since it is only applied to
15276 lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p>
15277 <p>This mode is intended to be used by applications operating in a zero-shutter-lag mode
15278 with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures
15279 high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is
15280 produced via reprocessing when a user takes a picture.<wbr/> For such a use case,<wbr/> the
15281 high-resolution buffers must not have noise reduction applied to maximize efficiency of
15282 preview and to avoid over-applying noise filtering when reprocessing,<wbr/> while
15283 low-resolution buffers (used for recording or preview,<wbr/> generally) need noise reduction
15284 applied for reasonable preview quality.<wbr/></p>
15285 <p>This mode is guaranteed to be supported by devices that support either the
15286 YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities
15287 (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will
15288 be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span>
15292 </td> <!-- entry_type -->
15294 <td class="entry_description">
15295 <p>Mode of operation for the noise reduction algorithm.<wbr/></p>
15298 <td class="entry_units">
15301 <td class="entry_range">
15302 <p><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a></p>
15305 <td class="entry_hal_version">
15309 <td class="entry_tags">
15310 <ul class="entry_tags">
15311 <li><a href="#tag_V1">V1</a></li>
15312 <li><a href="#tag_REPROC">REPROC</a></li>
15317 <tr class="entries_header">
15318 <th class="th_details" colspan="6">Details</th>
15320 <tr class="entry_cont">
15321 <td class="entry_details" colspan="6">
15322 <p>The noise reduction algorithm attempts to improve image quality by removing
15323 excessive noise added by the capture process,<wbr/> especially in dark conditions.<wbr/></p>
15324 <p>OFF means no noise reduction will be applied by the camera device,<wbr/> for both raw and
15325 YUV domain.<wbr/></p>
15326 <p>MINIMAL means that only sensor raw domain basic noise reduction is enabled ,<wbr/>to remove
15327 demosaicing or other processing artifacts.<wbr/> For YUV_<wbr/>REPROCESSING,<wbr/> MINIMAL is same as OFF.<wbr/>
15328 This mode is optional,<wbr/> may not be support by all devices.<wbr/> The application should check
15329 <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>
15330 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined noise filtering
15331 will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device
15332 will use the highest-quality noise filtering algorithms,<wbr/>
15333 even if it slows down capture rate.<wbr/> FAST means the camera device will not
15334 slow down capture rate when applying noise filtering.<wbr/> FAST may be the same as MINIMAL if
15335 MINIMAL is listed,<wbr/> or the same as OFF if any noise filtering will slow down capture rate.<wbr/>
15336 Every output stream will have a similar amount of enhancement applied.<wbr/></p>
15337 <p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular
15338 buffer of high-resolution images during preview and reprocess image(s) from that buffer
15339 into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies
15340 noise reduction to low-resolution streams (below maximum recording resolution) to maximize
15341 preview quality,<wbr/> but does not apply noise reduction to high-resolution streams,<wbr/> since
15342 those will be reprocessed later if necessary.<wbr/></p>
15343 <p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera device
15344 will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV domain noise reduction,<wbr/> respectively.<wbr/> The camera device
15345 may adjust the noise reduction parameters for best image quality based on the
15346 <a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a> if it is set.<wbr/></p>
15350 <tr class="entries_header">
15351 <th class="th_details" colspan="6">HAL Implementation Details</th>
15353 <tr class="entry_cont">
15354 <td class="entry_details" colspan="6">
15355 <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
15356 adjust the internal noise reduction parameters appropriately to get the best quality
15361 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15362 <!-- end of entry -->
15366 <!-- end of kind -->
15369 <!-- end of section -->
15370 <tr><td colspan="7" id="section_quirks" class="section">quirks</td></tr>
15373 <tr><td colspan="7" class="kind">static</td></tr>
15375 <thead class="entries_header">
15377 <th class="th_name">Property Name</th>
15378 <th class="th_type">Type</th>
15379 <th class="th_description">Description</th>
15380 <th class="th_units">Units</th>
15381 <th class="th_range">Range</th>
15382 <th class="th_hal_version">Initial HIDL HAL version</th>
15383 <th class="th_tags">Tags</th>
15398 <tr class="entry" id="static_android.quirks.meteringCropRegion">
15399 <td class="entry_name
15400 entry_name_deprecated
15402 android.<wbr/>quirks.<wbr/>metering<wbr/>Crop<wbr/>Region
15404 <td class="entry_type">
15405 <span class="entry_type_name">byte</span>
15407 <span class="entry_type_visibility"> [system]</span>
15411 <span class="entry_type_deprecated">[deprecated] </span>
15415 </td> <!-- entry_type -->
15417 <td class="entry_description">
15418 <p>If set to 1,<wbr/> the camera service does not
15419 scale 'normalized' coordinates with respect to the crop
15420 region.<wbr/> This applies to metering input (a{e,<wbr/>f,<wbr/>wb}Region
15421 and output (face rectangles).<wbr/></p>
15424 <td class="entry_units">
15427 <td class="entry_range">
15428 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15431 <td class="entry_hal_version">
15435 <td class="entry_tags">
15439 <tr class="entries_header">
15440 <th class="th_details" colspan="6">Details</th>
15442 <tr class="entry_cont">
15443 <td class="entry_details" colspan="6">
15444 <p>Normalized coordinates refer to those in the
15445 (-1000,<wbr/>1000) range mentioned in the
15446 android.<wbr/>hardware.<wbr/>Camera API.<wbr/></p>
15447 <p>HAL implementations should instead always use and emit
15448 sensor array-relative coordinates for all region data.<wbr/> Does
15449 not need to be listed in static metadata.<wbr/> Support will be
15450 removed in future versions of camera service.<wbr/></p>
15455 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15456 <!-- end of entry -->
15459 <tr class="entry" id="static_android.quirks.triggerAfWithAuto">
15460 <td class="entry_name
15461 entry_name_deprecated
15463 android.<wbr/>quirks.<wbr/>trigger<wbr/>Af<wbr/>With<wbr/>Auto
15465 <td class="entry_type">
15466 <span class="entry_type_name">byte</span>
15468 <span class="entry_type_visibility"> [system]</span>
15472 <span class="entry_type_deprecated">[deprecated] </span>
15476 </td> <!-- entry_type -->
15478 <td class="entry_description">
15479 <p>If set to 1,<wbr/> then the camera service always
15480 switches to FOCUS_<wbr/>MODE_<wbr/>AUTO before issuing a AF
15484 <td class="entry_units">
15487 <td class="entry_range">
15488 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15491 <td class="entry_hal_version">
15495 <td class="entry_tags">
15499 <tr class="entries_header">
15500 <th class="th_details" colspan="6">Details</th>
15502 <tr class="entry_cont">
15503 <td class="entry_details" colspan="6">
15504 <p>HAL implementations should implement AF trigger
15505 modes for AUTO,<wbr/> MACRO,<wbr/> CONTINUOUS_<wbr/>FOCUS,<wbr/> and
15506 CONTINUOUS_<wbr/>PICTURE modes instead of using this flag.<wbr/> Does
15507 not need to be listed in static metadata.<wbr/> Support will be
15508 removed in future versions of camera service</p>
15513 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15514 <!-- end of entry -->
15517 <tr class="entry" id="static_android.quirks.useZslFormat">
15518 <td class="entry_name
15519 entry_name_deprecated
15521 android.<wbr/>quirks.<wbr/>use<wbr/>Zsl<wbr/>Format
15523 <td class="entry_type">
15524 <span class="entry_type_name">byte</span>
15526 <span class="entry_type_visibility"> [system]</span>
15530 <span class="entry_type_deprecated">[deprecated] </span>
15534 </td> <!-- entry_type -->
15536 <td class="entry_description">
15537 <p>If set to 1,<wbr/> the camera service uses
15538 CAMERA2_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>ZSL instead of
15539 HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>IMPLEMENTATION_<wbr/>DEFINED for the zero
15540 shutter lag stream</p>
15543 <td class="entry_units">
15546 <td class="entry_range">
15547 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15550 <td class="entry_hal_version">
15554 <td class="entry_tags">
15558 <tr class="entries_header">
15559 <th class="th_details" colspan="6">Details</th>
15561 <tr class="entry_cont">
15562 <td class="entry_details" colspan="6">
15563 <p>HAL implementations should use gralloc usage flags
15564 to determine that a stream will be used for
15565 zero-shutter-lag,<wbr/> instead of relying on an explicit
15566 format setting.<wbr/> Does not need to be listed in static
15567 metadata.<wbr/> Support will be removed in future versions of
15568 camera service.<wbr/></p>
15573 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15574 <!-- end of entry -->
15577 <tr class="entry" id="static_android.quirks.usePartialResult">
15578 <td class="entry_name
15579 entry_name_deprecated
15581 android.<wbr/>quirks.<wbr/>use<wbr/>Partial<wbr/>Result
15583 <td class="entry_type">
15584 <span class="entry_type_name">byte</span>
15586 <span class="entry_type_visibility"> [hidden]</span>
15590 <span class="entry_type_deprecated">[deprecated] </span>
15594 </td> <!-- entry_type -->
15596 <td class="entry_description">
15597 <p>If set to 1,<wbr/> the HAL will always split result
15598 metadata for a single capture into multiple buffers,<wbr/>
15599 returned using multiple process_<wbr/>capture_<wbr/>result calls.<wbr/></p>
15602 <td class="entry_units">
15605 <td class="entry_range">
15606 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15609 <td class="entry_hal_version">
15613 <td class="entry_tags">
15617 <tr class="entries_header">
15618 <th class="th_details" colspan="6">Details</th>
15620 <tr class="entry_cont">
15621 <td class="entry_details" colspan="6">
15622 <p>Does not need to be listed in static
15623 metadata.<wbr/> Support for partial results will be reworked in
15624 future versions of camera service.<wbr/> This quirk will stop
15625 working at that point; DO NOT USE without careful
15626 consideration of future support.<wbr/></p>
15630 <tr class="entries_header">
15631 <th class="th_details" colspan="6">HAL Implementation Details</th>
15633 <tr class="entry_cont">
15634 <td class="entry_details" colspan="6">
15635 <p>Refer to <code>camera3_<wbr/>capture_<wbr/>result::partial_<wbr/>result</code>
15636 for information on how to implement partial results.<wbr/></p>
15640 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15641 <!-- end of entry -->
15645 <!-- end of kind -->
15647 <tr><td colspan="7" class="kind">dynamic</td></tr>
15649 <thead class="entries_header">
15651 <th class="th_name">Property Name</th>
15652 <th class="th_type">Type</th>
15653 <th class="th_description">Description</th>
15654 <th class="th_units">Units</th>
15655 <th class="th_range">Range</th>
15656 <th class="th_hal_version">Initial HIDL HAL version</th>
15657 <th class="th_tags">Tags</th>
15672 <tr class="entry" id="dynamic_android.quirks.partialResult">
15673 <td class="entry_name
15674 entry_name_deprecated
15676 android.<wbr/>quirks.<wbr/>partial<wbr/>Result
15678 <td class="entry_type">
15679 <span class="entry_type_name entry_type_name_enum">byte</span>
15681 <span class="entry_type_visibility"> [hidden as boolean]</span>
15685 <span class="entry_type_deprecated">[deprecated] </span>
15688 <ul class="entry_type_enum">
15690 <span class="entry_type_enum_name">FINAL (v3.2)</span>
15691 <span class="entry_type_enum_notes"><p>The last or only metadata result buffer
15692 for this capture.<wbr/></p></span>
15695 <span class="entry_type_enum_name">PARTIAL (v3.2)</span>
15696 <span class="entry_type_enum_notes"><p>A partial buffer of result metadata for this
15697 capture.<wbr/> More result buffers for this capture will be sent
15698 by the camera device,<wbr/> the last of which will be marked
15699 FINAL.<wbr/></p></span>
15703 </td> <!-- entry_type -->
15705 <td class="entry_description">
15706 <p>Whether a result given to the framework is the
15707 final one for the capture,<wbr/> or only a partial that contains a
15708 subset of the full set of dynamic metadata
15712 <td class="entry_units">
15715 <td class="entry_range">
15716 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15717 <p>Optional.<wbr/> Default value is FINAL.<wbr/></p>
15720 <td class="entry_hal_version">
15724 <td class="entry_tags">
15728 <tr class="entries_header">
15729 <th class="th_details" colspan="6">Details</th>
15731 <tr class="entry_cont">
15732 <td class="entry_details" colspan="6">
15733 <p>The entries in the result metadata buffers for a
15734 single capture may not overlap,<wbr/> except for this entry.<wbr/> The
15735 FINAL buffers must retain FIFO ordering relative to the
15736 requests that generate them,<wbr/> so the FINAL buffer for frame 3 must
15737 always be sent to the framework after the FINAL buffer for frame 2,<wbr/> and
15738 before the FINAL buffer for frame 4.<wbr/> PARTIAL buffers may be returned
15739 in any order relative to other frames,<wbr/> but all PARTIAL buffers for a given
15740 capture must arrive before the FINAL buffer for that capture.<wbr/> This entry may
15741 only be used by the camera device if quirks.<wbr/>usePartialResult is set to 1.<wbr/></p>
15745 <tr class="entries_header">
15746 <th class="th_details" colspan="6">HAL Implementation Details</th>
15748 <tr class="entry_cont">
15749 <td class="entry_details" colspan="6">
15750 <p>Refer to <code>camera3_<wbr/>capture_<wbr/>result::partial_<wbr/>result</code>
15751 for information on how to implement partial results.<wbr/></p>
15755 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15756 <!-- end of entry -->
15760 <!-- end of kind -->
15763 <!-- end of section -->
15764 <tr><td colspan="7" id="section_request" class="section">request</td></tr>
15767 <tr><td colspan="7" class="kind">controls</td></tr>
15769 <thead class="entries_header">
15771 <th class="th_name">Property Name</th>
15772 <th class="th_type">Type</th>
15773 <th class="th_description">Description</th>
15774 <th class="th_units">Units</th>
15775 <th class="th_range">Range</th>
15776 <th class="th_hal_version">Initial HIDL HAL version</th>
15777 <th class="th_tags">Tags</th>
15792 <tr class="entry" id="controls_android.request.frameCount">
15793 <td class="entry_name
15794 entry_name_deprecated
15796 android.<wbr/>request.<wbr/>frame<wbr/>Count
15798 <td class="entry_type">
15799 <span class="entry_type_name">int32</span>
15801 <span class="entry_type_visibility"> [system]</span>
15805 <span class="entry_type_deprecated">[deprecated] </span>
15809 </td> <!-- entry_type -->
15811 <td class="entry_description">
15812 <p>A frame counter set by the framework.<wbr/> Must
15813 be maintained unchanged in output frame.<wbr/> This value monotonically
15814 increases with every new result (that is,<wbr/> each new result has a unique
15815 frameCount value).<wbr/></p>
15818 <td class="entry_units">
15819 incrementing integer
15822 <td class="entry_range">
15823 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15824 <p>Any int.<wbr/></p>
15827 <td class="entry_hal_version">
15831 <td class="entry_tags">
15837 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15838 <!-- end of entry -->
15841 <tr class="entry" id="controls_android.request.id">
15842 <td class="entry_name
15844 android.<wbr/>request.<wbr/>id
15846 <td class="entry_type">
15847 <span class="entry_type_name">int32</span>
15849 <span class="entry_type_visibility"> [hidden]</span>
15856 </td> <!-- entry_type -->
15858 <td class="entry_description">
15859 <p>An application-specified ID for the current
15860 request.<wbr/> Must be maintained unchanged in output
15864 <td class="entry_units">
15865 arbitrary integer assigned by application
15868 <td class="entry_range">
15872 <td class="entry_hal_version">
15876 <td class="entry_tags">
15877 <ul class="entry_tags">
15878 <li><a href="#tag_V1">V1</a></li>
15885 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15886 <!-- end of entry -->
15889 <tr class="entry" id="controls_android.request.inputStreams">
15890 <td class="entry_name
15891 entry_name_deprecated
15893 android.<wbr/>request.<wbr/>input<wbr/>Streams
15895 <td class="entry_type">
15896 <span class="entry_type_name">int32</span>
15897 <span class="entry_type_container">x</span>
15899 <span class="entry_type_array">
15902 <span class="entry_type_visibility"> [system]</span>
15906 <span class="entry_type_deprecated">[deprecated] </span>
15910 </td> <!-- entry_type -->
15912 <td class="entry_description">
15913 <p>List which camera reprocess stream is used
15914 for the source of reprocessing data.<wbr/></p>
15917 <td class="entry_units">
15918 List of camera reprocess stream IDs
15921 <td class="entry_range">
15922 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15923 <p>Typically,<wbr/> only one entry allowed,<wbr/> must be a valid reprocess stream ID.<wbr/></p>
15926 <td class="entry_hal_version">
15930 <td class="entry_tags">
15931 <ul class="entry_tags">
15932 <li><a href="#tag_HAL2">HAL2</a></li>
15937 <tr class="entries_header">
15938 <th class="th_details" colspan="6">Details</th>
15940 <tr class="entry_cont">
15941 <td class="entry_details" colspan="6">
15942 <p>Only meaningful when <a href="#controls_android.request.type">android.<wbr/>request.<wbr/>type</a> ==
15943 REPROCESS.<wbr/> Ignored otherwise</p>
15948 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15949 <!-- end of entry -->
15952 <tr class="entry" id="controls_android.request.metadataMode">
15953 <td class="entry_name
15955 android.<wbr/>request.<wbr/>metadata<wbr/>Mode
15957 <td class="entry_type">
15958 <span class="entry_type_name entry_type_name_enum">byte</span>
15960 <span class="entry_type_visibility"> [system]</span>
15966 <ul class="entry_type_enum">
15968 <span class="entry_type_enum_name">NONE (v3.2)</span>
15969 <span class="entry_type_enum_notes"><p>No metadata should be produced on output,<wbr/> except
15970 for application-bound buffer data.<wbr/> If no
15971 application-bound streams exist,<wbr/> no frame should be
15972 placed in the output frame queue.<wbr/> If such streams
15973 exist,<wbr/> a frame should be placed on the output queue
15974 with null metadata but with the necessary output buffer
15975 information.<wbr/> Timestamp information should still be
15976 included with any output stream buffers</p></span>
15979 <span class="entry_type_enum_name">FULL (v3.2)</span>
15980 <span class="entry_type_enum_notes"><p>All metadata should be produced.<wbr/> Statistics will
15981 only be produced if they are separately
15986 </td> <!-- entry_type -->
15988 <td class="entry_description">
15989 <p>How much metadata to produce on
15993 <td class="entry_units">
15996 <td class="entry_range">
15999 <td class="entry_hal_version">
16003 <td class="entry_tags">
16004 <ul class="entry_tags">
16005 <li><a href="#tag_FUTURE">FUTURE</a></li>
16012 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16013 <!-- end of entry -->
16016 <tr class="entry" id="controls_android.request.outputStreams">
16017 <td class="entry_name
16018 entry_name_deprecated
16020 android.<wbr/>request.<wbr/>output<wbr/>Streams
16022 <td class="entry_type">
16023 <span class="entry_type_name">int32</span>
16024 <span class="entry_type_container">x</span>
16026 <span class="entry_type_array">
16029 <span class="entry_type_visibility"> [system]</span>
16033 <span class="entry_type_deprecated">[deprecated] </span>
16037 </td> <!-- entry_type -->
16039 <td class="entry_description">
16040 <p>Lists which camera output streams image data
16041 from this capture must be sent to</p>
16044 <td class="entry_units">
16045 List of camera stream IDs
16048 <td class="entry_range">
16049 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
16050 <p>List must only include streams that have been
16054 <td class="entry_hal_version">
16058 <td class="entry_tags">
16059 <ul class="entry_tags">
16060 <li><a href="#tag_HAL2">HAL2</a></li>
16065 <tr class="entries_header">
16066 <th class="th_details" colspan="6">Details</th>
16068 <tr class="entry_cont">
16069 <td class="entry_details" colspan="6">
16070 <p>If no output streams are listed,<wbr/> then the image
16071 data should simply be discarded.<wbr/> The image data must
16072 still be captured for metadata and statistics production,<wbr/>
16073 and the lens and flash must operate as requested.<wbr/></p>
16078 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16079 <!-- end of entry -->
16082 <tr class="entry" id="controls_android.request.type">
16083 <td class="entry_name
16084 entry_name_deprecated
16086 android.<wbr/>request.<wbr/>type
16088 <td class="entry_type">
16089 <span class="entry_type_name entry_type_name_enum">byte</span>
16091 <span class="entry_type_visibility"> [system]</span>
16095 <span class="entry_type_deprecated">[deprecated] </span>
16098 <ul class="entry_type_enum">
16100 <span class="entry_type_enum_name">CAPTURE (v3.2)</span>
16101 <span class="entry_type_enum_notes"><p>Capture a new image from the imaging hardware,<wbr/>
16102 and process it according to the
16103 settings</p></span>
16106 <span class="entry_type_enum_name">REPROCESS (v3.2)</span>
16107 <span class="entry_type_enum_notes"><p>Process previously captured data; the
16108 <a href="#controls_android.request.inputStreams">android.<wbr/>request.<wbr/>input<wbr/>Streams</a> parameter determines the
16109 source reprocessing stream.<wbr/> TODO: Mark dynamic metadata
16110 needed for reprocessing with [RP]</p></span>
16114 </td> <!-- entry_type -->
16116 <td class="entry_description">
16117 <p>The type of the request; either CAPTURE or
16118 REPROCESS.<wbr/> For legacy HAL3,<wbr/> this tag is redundant.<wbr/></p>
16121 <td class="entry_units">
16124 <td class="entry_range">
16125 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
16128 <td class="entry_hal_version">
16132 <td class="entry_tags">
16133 <ul class="entry_tags">
16134 <li><a href="#tag_HAL2">HAL2</a></li>
16141 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16142 <!-- end of entry -->
16146 <!-- end of kind -->
16148 <tr><td colspan="7" class="kind">static</td></tr>
16150 <thead class="entries_header">
16152 <th class="th_name">Property Name</th>
16153 <th class="th_type">Type</th>
16154 <th class="th_description">Description</th>
16155 <th class="th_units">Units</th>
16156 <th class="th_range">Range</th>
16157 <th class="th_hal_version">Initial HIDL HAL version</th>
16158 <th class="th_tags">Tags</th>
16173 <tr class="entry" id="static_android.request.maxNumOutputStreams">
16174 <td class="entry_name
16176 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams
16178 <td class="entry_type">
16179 <span class="entry_type_name">int32</span>
16180 <span class="entry_type_container">x</span>
16182 <span class="entry_type_array">
16185 <span class="entry_type_visibility"> [ndk_public]</span>
16188 <span class="entry_type_hwlevel">[legacy] </span>
16193 </td> <!-- entry_type -->
16195 <td class="entry_description">
16196 <p>The maximum numbers of different types of output streams
16197 that can be configured and used simultaneously by a camera device.<wbr/></p>
16200 <td class="entry_units">
16203 <td class="entry_range">
16204 <p>For processed (and stalling) format streams,<wbr/> >= 1.<wbr/></p>
16205 <p>For Raw format (either stalling or non-stalling) streams,<wbr/> >= 0.<wbr/></p>
16206 <p>For processed (but not stalling) format streams,<wbr/> >= 3
16207 for FULL mode devices (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL</code>);
16208 >= 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>
16211 <td class="entry_hal_version">
16215 <td class="entry_tags">
16216 <ul class="entry_tags">
16217 <li><a href="#tag_BC">BC</a></li>
16222 <tr class="entries_header">
16223 <th class="th_details" colspan="6">Details</th>
16225 <tr class="entry_cont">
16226 <td class="entry_details" colspan="6">
16227 <p>This is a 3 element tuple that contains the max number of output simultaneous
16228 streams for raw sensor,<wbr/> processed (but not stalling),<wbr/> and processed (and stalling)
16229 formats respectively.<wbr/> For example,<wbr/> assuming that JPEG is typically a processed and
16230 stalling stream,<wbr/> if max raw sensor format output stream number is 1,<wbr/> max YUV streams
16231 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>
16232 <p>This lists the upper bound of the number of output streams supported by
16233 the camera device.<wbr/> Using more streams simultaneously may require more hardware and
16234 CPU resources that will consume more power.<wbr/> The image format for an output stream can
16235 be any supported format provided by <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a>.<wbr/>
16236 The formats defined in <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> can be catergorized
16237 into the 3 stream types as below:</p>
16239 <li>Processed (but stalling): any non-RAW format with a stallDurations > 0.<wbr/>
16240 Typically <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">JPEG format</a>.<wbr/></li>
16241 <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
16242 <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW12">RAW12</a>.<wbr/></li>
16243 <li>Processed (but not-stalling): any non-RAW format without a stall duration.<wbr/> Typically
16244 <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">YUV_<wbr/>420_<wbr/>888</a>,<wbr/>
16245 <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>
16251 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16252 <!-- end of entry -->
16255 <tr class="entry" id="static_android.request.maxNumOutputRaw">
16256 <td class="entry_name
16258 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Raw
16260 <td class="entry_type">
16261 <span class="entry_type_name">int32</span>
16263 <span class="entry_type_visibility"> [java_public]</span>
16265 <span class="entry_type_synthetic">[synthetic] </span>
16267 <span class="entry_type_hwlevel">[legacy] </span>
16272 </td> <!-- entry_type -->
16274 <td class="entry_description">
16275 <p>The maximum numbers of different types of output streams
16276 that can be configured and used simultaneously by a camera device
16277 for any <code>RAW</code> formats.<wbr/></p>
16280 <td class="entry_units">
16283 <td class="entry_range">
16287 <td class="entry_hal_version">
16291 <td class="entry_tags">
16295 <tr class="entries_header">
16296 <th class="th_details" colspan="6">Details</th>
16298 <tr class="entry_cont">
16299 <td class="entry_details" colspan="6">
16300 <p>This value contains the max number of output simultaneous
16301 streams from the raw sensor.<wbr/></p>
16302 <p>This lists the upper bound of the number of output streams supported by
16303 the camera device.<wbr/> Using more streams simultaneously may require more hardware and
16304 CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can
16305 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>
16306 <p>In particular,<wbr/> a <code>RAW</code> format is typically one of:</p>
16308 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_SENSOR">RAW_<wbr/>SENSOR</a></li>
16309 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW10">RAW10</a></li>
16310 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW12">RAW12</a></li>
16312 <p>LEGACY mode devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> <code>==</code> LEGACY)
16313 never support raw streams.<wbr/></p>
16318 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16319 <!-- end of entry -->
16322 <tr class="entry" id="static_android.request.maxNumOutputProc">
16323 <td class="entry_name
16325 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Proc
16327 <td class="entry_type">
16328 <span class="entry_type_name">int32</span>
16330 <span class="entry_type_visibility"> [java_public]</span>
16332 <span class="entry_type_synthetic">[synthetic] </span>
16334 <span class="entry_type_hwlevel">[legacy] </span>
16339 </td> <!-- entry_type -->
16341 <td class="entry_description">
16342 <p>The maximum numbers of different types of output streams
16343 that can be configured and used simultaneously by a camera device
16344 for any processed (but not-stalling) formats.<wbr/></p>
16347 <td class="entry_units">
16350 <td class="entry_range">
16352 for FULL mode devices (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL</code>);
16353 >= 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>
16356 <td class="entry_hal_version">
16360 <td class="entry_tags">
16364 <tr class="entries_header">
16365 <th class="th_details" colspan="6">Details</th>
16367 <tr class="entry_cont">
16368 <td class="entry_details" colspan="6">
16369 <p>This value contains the max number of output simultaneous
16370 streams for any processed (but not-stalling) formats.<wbr/></p>
16371 <p>This lists the upper bound of the number of output streams supported by
16372 the camera device.<wbr/> Using more streams simultaneously may require more hardware and
16373 CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can
16374 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>
16375 <p>Processed (but not-stalling) is defined as any non-RAW format without a stall duration.<wbr/>
16378 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">YUV_<wbr/>420_<wbr/>888</a></li>
16379 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#NV21">NV21</a></li>
16380 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YV12">YV12</a></li>
16381 <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>
16383 <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
16384 processed format -- it will return 0 for a non-stalling stream.<wbr/></p>
16385 <p>LEGACY devices will support at least 2 processing/<wbr/>non-stalling streams.<wbr/></p>
16390 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16391 <!-- end of entry -->
16394 <tr class="entry" id="static_android.request.maxNumOutputProcStalling">
16395 <td class="entry_name
16397 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Proc<wbr/>Stalling
16399 <td class="entry_type">
16400 <span class="entry_type_name">int32</span>
16402 <span class="entry_type_visibility"> [java_public]</span>
16404 <span class="entry_type_synthetic">[synthetic] </span>
16406 <span class="entry_type_hwlevel">[legacy] </span>
16411 </td> <!-- entry_type -->
16413 <td class="entry_description">
16414 <p>The maximum numbers of different types of output streams
16415 that can be configured and used simultaneously by a camera device
16416 for any processed (and stalling) formats.<wbr/></p>
16419 <td class="entry_units">
16422 <td class="entry_range">
16426 <td class="entry_hal_version">
16430 <td class="entry_tags">
16434 <tr class="entries_header">
16435 <th class="th_details" colspan="6">Details</th>
16437 <tr class="entry_cont">
16438 <td class="entry_details" colspan="6">
16439 <p>This value contains the max number of output simultaneous
16440 streams for any processed (but not-stalling) formats.<wbr/></p>
16441 <p>This lists the upper bound of the number of output streams supported by
16442 the camera device.<wbr/> Using more streams simultaneously may require more hardware and
16443 CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can
16444 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>
16445 <p>A processed and stalling format is defined as any non-RAW format with a stallDurations
16446 > 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>
16447 <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
16448 processed format -- it will return a non-0 value for a stalling stream.<wbr/></p>
16449 <p>LEGACY devices will support up to 1 processing/<wbr/>stalling stream.<wbr/></p>
16454 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16455 <!-- end of entry -->
16458 <tr class="entry" id="static_android.request.maxNumReprocessStreams">
16459 <td class="entry_name
16460 entry_name_deprecated
16462 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Reprocess<wbr/>Streams
16464 <td class="entry_type">
16465 <span class="entry_type_name">int32</span>
16466 <span class="entry_type_container">x</span>
16468 <span class="entry_type_array">
16471 <span class="entry_type_visibility"> [system]</span>
16475 <span class="entry_type_deprecated">[deprecated] </span>
16479 </td> <!-- entry_type -->
16481 <td class="entry_description">
16482 <p>How many reprocessing streams of any type
16483 can be allocated at the same time.<wbr/></p>
16486 <td class="entry_units">
16489 <td class="entry_range">
16490 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
16494 <td class="entry_hal_version">
16498 <td class="entry_tags">
16499 <ul class="entry_tags">
16500 <li><a href="#tag_HAL2">HAL2</a></li>
16505 <tr class="entries_header">
16506 <th class="th_details" colspan="6">Details</th>
16508 <tr class="entry_cont">
16509 <td class="entry_details" colspan="6">
16510 <p>Only used by HAL2.<wbr/>x.<wbr/></p>
16511 <p>When set to 0,<wbr/> it means no reprocess stream is supported.<wbr/></p>
16516 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16517 <!-- end of entry -->
16520 <tr class="entry" id="static_android.request.maxNumInputStreams">
16521 <td class="entry_name
16523 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Input<wbr/>Streams
16525 <td class="entry_type">
16526 <span class="entry_type_name">int32</span>
16528 <span class="entry_type_visibility"> [java_public]</span>
16531 <span class="entry_type_hwlevel">[full] </span>
16536 </td> <!-- entry_type -->
16538 <td class="entry_description">
16539 <p>The maximum numbers of any type of input streams
16540 that can be configured and used simultaneously by a camera device.<wbr/></p>
16543 <td class="entry_units">
16546 <td class="entry_range">
16547 <p>0 or 1.<wbr/></p>
16550 <td class="entry_hal_version">
16554 <td class="entry_tags">
16555 <ul class="entry_tags">
16556 <li><a href="#tag_REPROC">REPROC</a></li>
16561 <tr class="entries_header">
16562 <th class="th_details" colspan="6">Details</th>
16564 <tr class="entry_cont">
16565 <td class="entry_details" colspan="6">
16566 <p>When set to 0,<wbr/> it means no input stream is supported.<wbr/></p>
16567 <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
16568 input stream,<wbr/> there must be at least one output stream configured to to receive the
16569 reprocessed images.<wbr/></p>
16570 <p>When an input stream and some output streams are used in a reprocessing request,<wbr/>
16571 only the input buffer will be used to produce these output stream buffers,<wbr/> and a
16572 new sensor image will not be captured.<wbr/></p>
16573 <p>For example,<wbr/> for Zero Shutter Lag (ZSL) still capture use case,<wbr/> the input
16574 stream image format will be PRIVATE,<wbr/> the associated output stream image format
16575 should be JPEG.<wbr/></p>
16579 <tr class="entries_header">
16580 <th class="th_details" colspan="6">HAL Implementation Details</th>
16582 <tr class="entry_cont">
16583 <td class="entry_details" colspan="6">
16584 <p>For the reprocessing flow and controls,<wbr/> see
16585 hardware/<wbr/>libhardware/<wbr/>include/<wbr/>hardware/<wbr/>camera3.<wbr/>h Section 10 for more details.<wbr/></p>
16589 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16590 <!-- end of entry -->
16593 <tr class="entry" id="static_android.request.pipelineMaxDepth">
16594 <td class="entry_name
16596 android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth
16598 <td class="entry_type">
16599 <span class="entry_type_name">byte</span>
16601 <span class="entry_type_visibility"> [public]</span>
16604 <span class="entry_type_hwlevel">[legacy] </span>
16609 </td> <!-- entry_type -->
16611 <td class="entry_description">
16612 <p>Specifies the number of maximum pipeline stages a frame
16613 has to go through from when it's exposed to when it's available
16614 to the framework.<wbr/></p>
16617 <td class="entry_units">
16620 <td class="entry_range">
16623 <td class="entry_hal_version">
16627 <td class="entry_tags">
16631 <tr class="entries_header">
16632 <th class="th_details" colspan="6">Details</th>
16634 <tr class="entry_cont">
16635 <td class="entry_details" colspan="6">
16636 <p>A typical minimum value for this is 2 (one stage to expose,<wbr/>
16637 one stage to readout) from the sensor.<wbr/> The ISP then usually adds
16638 its own stages to do custom HW processing.<wbr/> Further stages may be
16639 added by SW processing.<wbr/></p>
16640 <p>Depending on what settings are used (e.<wbr/>g.<wbr/> YUV,<wbr/> JPEG) and what
16641 processing is enabled (e.<wbr/>g.<wbr/> face detection),<wbr/> the actual pipeline
16642 depth (specified by <a href="#dynamic_android.request.pipelineDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Depth</a>) may be less than
16643 the max pipeline depth.<wbr/></p>
16644 <p>A pipeline depth of X stages is equivalent to a pipeline latency of
16645 X frame intervals.<wbr/></p>
16646 <p>This value will normally be 8 or less,<wbr/> however,<wbr/> for high speed capture session,<wbr/>
16647 the max pipeline depth will be up to 8 x size of high speed capture request list.<wbr/></p>
16651 <tr class="entries_header">
16652 <th class="th_details" colspan="6">HAL Implementation Details</th>
16654 <tr class="entry_cont">
16655 <td class="entry_details" colspan="6">
16656 <p>This value should be 4 or less,<wbr/> expect for the high speed recording session,<wbr/> where the
16657 max batch sizes may be larger than 1.<wbr/></p>
16661 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16662 <!-- end of entry -->
16665 <tr class="entry" id="static_android.request.partialResultCount">
16666 <td class="entry_name
16668 android.<wbr/>request.<wbr/>partial<wbr/>Result<wbr/>Count
16670 <td class="entry_type">
16671 <span class="entry_type_name">int32</span>
16673 <span class="entry_type_visibility"> [public]</span>
16680 </td> <!-- entry_type -->
16682 <td class="entry_description">
16683 <p>Defines how many sub-components
16684 a result will be composed of.<wbr/></p>
16687 <td class="entry_units">
16690 <td class="entry_range">
16694 <td class="entry_hal_version">
16698 <td class="entry_tags">
16702 <tr class="entries_header">
16703 <th class="th_details" colspan="6">Details</th>
16705 <tr class="entry_cont">
16706 <td class="entry_details" colspan="6">
16707 <p>In order to combat the pipeline latency,<wbr/> partial results
16708 may be delivered to the application layer from the camera device as
16709 soon as they are available.<wbr/></p>
16710 <p>Optional; defaults to 1.<wbr/> A value of 1 means that partial
16711 results are not supported,<wbr/> and only the final TotalCaptureResult will
16712 be produced by the camera device.<wbr/></p>
16713 <p>A typical use case for this might be: after requesting an
16714 auto-focus (AF) lock the new AF state might be available 50%
16715 of the way through the pipeline.<wbr/> The camera device could
16716 then immediately dispatch this state via a partial result to
16717 the application,<wbr/> and the rest of the metadata via later
16718 partial results.<wbr/></p>
16723 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16724 <!-- end of entry -->
16727 <tr class="entry" id="static_android.request.availableCapabilities">
16728 <td class="entry_name
16730 android.<wbr/>request.<wbr/>available<wbr/>Capabilities
16732 <td class="entry_type">
16733 <span class="entry_type_name entry_type_name_enum">byte</span>
16734 <span class="entry_type_container">x</span>
16736 <span class="entry_type_array">
16739 <span class="entry_type_visibility"> [public]</span>
16742 <span class="entry_type_hwlevel">[legacy] </span>
16746 <ul class="entry_type_enum">
16748 <span class="entry_type_enum_name">BACKWARD_COMPATIBLE (v3.2)</span>
16749 <span class="entry_type_enum_notes"><p>The minimal set of capabilities that every camera
16750 device (regardless of <a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>)
16751 supports.<wbr/></p>
16752 <p>This capability is listed by all normal devices,<wbr/> and
16753 indicates that the camera device has a feature set
16754 that's comparable to the baseline requirements for the
16755 older android.<wbr/>hardware.<wbr/>Camera API.<wbr/></p>
16756 <p>Devices with the DEPTH_<wbr/>OUTPUT capability might not list this
16757 capability,<wbr/> indicating that they support only depth measurement,<wbr/>
16758 not standard color output.<wbr/></p></span>
16761 <span class="entry_type_enum_name">MANUAL_SENSOR (v3.2)</span>
16762 <span class="entry_type_enum_optional">[optional]</span>
16763 <span class="entry_type_enum_notes"><p>The camera device can be manually controlled (3A algorithms such
16764 as auto-exposure,<wbr/> and auto-focus can be bypassed).<wbr/>
16765 The camera device supports basic manual control of the sensor image
16766 acquisition related stages.<wbr/> This means the following controls are
16767 guaranteed to be supported:</p>
16769 <li>Manual frame duration control<ul>
16770 <li><a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a></li>
16771 <li><a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a></li>
16774 <li>Manual exposure control<ul>
16775 <li><a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a></li>
16776 <li><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></li>
16779 <li>Manual sensitivity control<ul>
16780 <li><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></li>
16781 <li><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></li>
16784 <li>Manual lens control (if the lens is adjustable)<ul>
16785 <li>android.<wbr/>lens.<wbr/>*</li>
16788 <li>Manual flash control (if a flash unit is present)<ul>
16789 <li>android.<wbr/>flash.<wbr/>*</li>
16792 <li>Manual black level locking<ul>
16793 <li><a href="#controls_android.blackLevel.lock">android.<wbr/>black<wbr/>Level.<wbr/>lock</a></li>
16796 <li>Auto exposure lock<ul>
16797 <li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li>
16801 <p>If any of the above 3A algorithms are enabled,<wbr/> then the camera
16802 device will accurately report the values applied by 3A in the
16804 <p>A given camera device may also support additional manual sensor controls,<wbr/>
16805 but this capability only covers the above list of controls.<wbr/></p>
16806 <p>If this is supported,<wbr/> <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> will
16807 additionally return a min frame duration that is greater than
16808 zero for each supported size-format combination.<wbr/></p></span>
16811 <span class="entry_type_enum_name">MANUAL_POST_PROCESSING (v3.2)</span>
16812 <span class="entry_type_enum_optional">[optional]</span>
16813 <span class="entry_type_enum_notes"><p>The camera device post-processing stages can be manually controlled.<wbr/>
16814 The camera device supports basic manual control of the image post-processing
16815 stages.<wbr/> This means the following controls are guaranteed to be supported:</p>
16818 <p>Manual tonemap control</p>
16820 <li><a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a></li>
16821 <li><a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a></li>
16822 <li><a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></li>
16823 <li><a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a></li>
16824 <li><a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a></li>
16828 <p>Manual white balance control</p>
16830 <li><a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a></li>
16831 <li><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a></li>
16834 <li>Manual lens shading map control<ul>
16835 <li><a href="#controls_android.shading.mode">android.<wbr/>shading.<wbr/>mode</a></li>
16836 <li><a href="#controls_android.statistics.lensShadingMapMode">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode</a></li>
16837 <li><a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a></li>
16838 <li><a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a></li>
16841 <li>Manual aberration correction control (if aberration correction is supported)<ul>
16842 <li><a href="#controls_android.colorCorrection.aberrationMode">android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode</a></li>
16843 <li><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></li>
16846 <li>Auto white balance lock<ul>
16847 <li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li>
16851 <p>If auto white balance is enabled,<wbr/> then the camera device
16852 will accurately report the values applied by AWB in the result.<wbr/></p>
16853 <p>A given camera device may also support additional post-processing
16854 controls,<wbr/> but this capability only covers the above list of controls.<wbr/></p></span>
16857 <span class="entry_type_enum_name">RAW (v3.2)</span>
16858 <span class="entry_type_enum_optional">[optional]</span>
16859 <span class="entry_type_enum_notes"><p>The camera device supports outputting RAW buffers and
16860 metadata for interpreting them.<wbr/></p>
16861 <p>Devices supporting the RAW capability allow both for
16862 saving DNG files,<wbr/> and for direct application processing of
16863 raw sensor images.<wbr/></p>
16865 <li>RAW_<wbr/>SENSOR is supported as an output format.<wbr/></li>
16866 <li>The maximum available resolution for RAW_<wbr/>SENSOR streams
16867 will match either the value in
16868 <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a> or
16869 <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>
16870 <li>All DNG-related optional metadata entries are provided
16871 by the camera device.<wbr/></li>
16875 <span class="entry_type_enum_name">PRIVATE_REPROCESSING (v3.2)</span>
16876 <span class="entry_type_enum_optional">[optional]</span>
16877 <span class="entry_type_enum_notes"><p>The camera device supports the Zero Shutter Lag reprocessing use case.<wbr/></p>
16879 <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>
16880 <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/>
16881 that is,<wbr/> <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> is included in the lists of
16882 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>
16883 <li><a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getValidOutputFormatsForInput">StreamConfigurationMap#getValidOutputFormatsForInput</a>
16884 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>
16885 <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>
16886 <li>Using <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> does not cause a frame rate drop
16887 relative to the sensor's maximum capture rate (at that resolution).<wbr/></li>
16888 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> will be reprocessable into both
16889 <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a> and
16890 <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a> formats.<wbr/></li>
16891 <li>The maximum available resolution for PRIVATE streams
16892 (both input/<wbr/>output) will match the maximum available
16893 resolution of JPEG streams.<wbr/></li>
16894 <li>Static metadata <a href="#static_android.reprocess.maxCaptureStall">android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall</a>.<wbr/></li>
16895 <li>Only below controls are effective for reprocessing requests and
16896 will be present in capture results,<wbr/> other controls in reprocess
16897 requests will be ignored by the camera device.<wbr/><ul>
16898 <li>android.<wbr/>jpeg.<wbr/>*</li>
16899 <li><a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></li>
16900 <li><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></li>
16903 <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a> and
16904 <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>
16908 <span class="entry_type_enum_name">READ_SENSOR_SETTINGS (v3.2)</span>
16909 <span class="entry_type_enum_optional">[optional]</span>
16910 <span class="entry_type_enum_notes"><p>The camera device supports accurately reporting the sensor settings for many of
16911 the sensor controls while the built-in 3A algorithm is running.<wbr/> This allows
16912 reporting of sensor settings even when these settings cannot be manually changed.<wbr/></p>
16913 <p>The values reported for the following controls are guaranteed to be available
16914 in the CaptureResult,<wbr/> including when 3A is enabled:</p>
16916 <li>Exposure control<ul>
16917 <li><a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a></li>
16920 <li>Sensitivity control<ul>
16921 <li><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></li>
16924 <li>Lens controls (if the lens is adjustable)<ul>
16925 <li><a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a></li>
16926 <li><a href="#controls_android.lens.aperture">android.<wbr/>lens.<wbr/>aperture</a></li>
16930 <p>This capability is a subset of the MANUAL_<wbr/>SENSOR control capability,<wbr/> and will
16931 always be included if the MANUAL_<wbr/>SENSOR capability is available.<wbr/></p></span>
16934 <span class="entry_type_enum_name">BURST_CAPTURE (v3.2)</span>
16935 <span class="entry_type_enum_optional">[optional]</span>
16936 <span class="entry_type_enum_notes"><p>The camera device supports capturing high-resolution images at >= 20 frames per
16937 second,<wbr/> in at least the uncompressed YUV format,<wbr/> when post-processing settings are set
16938 to FAST.<wbr/> Additionally,<wbr/> maximum-resolution images can be captured at >= 10 frames
16939 per second.<wbr/> Here,<wbr/> 'high resolution' means at least 8 megapixels,<wbr/> or the maximum
16940 resolution of the device,<wbr/> whichever is smaller.<wbr/></p></span>
16943 <span class="entry_type_enum_name">YUV_REPROCESSING (v3.2)</span>
16944 <span class="entry_type_enum_optional">[optional]</span>
16945 <span class="entry_type_enum_notes"><p>The camera device supports the YUV_<wbr/>420_<wbr/>888 reprocessing use case,<wbr/> similar as
16946 PRIVATE_<wbr/>REPROCESSING,<wbr/> This capability requires the camera device to support the
16949 <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>
16950 <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
16951 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>
16952 <li><a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getValidOutputFormatsForInput">StreamConfigurationMap#getValidOutputFormatsForInput</a>
16953 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>
16954 <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>
16955 <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
16956 drop relative to the sensor's maximum capture rate (at that resolution).<wbr/></li>
16957 <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
16958 <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>
16959 <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
16960 maximum available resolution of <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a> streams.<wbr/></li>
16961 <li>Static metadata <a href="#static_android.reprocess.maxCaptureStall">android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall</a>.<wbr/></li>
16962 <li>Only the below controls are effective for reprocessing requests and will be present
16963 in capture results.<wbr/> The reprocess requests are from the original capture results
16964 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
16965 reprocess requests will be ignored by the camera device.<wbr/><ul>
16966 <li>android.<wbr/>jpeg.<wbr/>*</li>
16967 <li><a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></li>
16968 <li><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></li>
16969 <li><a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a></li>
16972 <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a> and
16973 <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>
16977 <span class="entry_type_enum_name">DEPTH_OUTPUT (v3.2)</span>
16978 <span class="entry_type_enum_optional">[optional]</span>
16979 <span class="entry_type_enum_notes"><p>The camera device can produce depth measurements from its field of view.<wbr/></p>
16980 <p>This capability requires the camera device to support the following:</p>
16982 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#DEPTH16">ImageFormat#DEPTH16</a> is supported as
16983 an output format.<wbr/></li>
16984 <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
16985 optionally supported as an output format.<wbr/></li>
16986 <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
16987 list the following calibration metadata entries in both <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html">CameraCharacteristics</a>
16988 and <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">CaptureResult</a>:<ul>
16989 <li><a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a></li>
16990 <li><a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a></li>
16991 <li><a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a></li>
16992 <li><a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a></li>
16995 <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>
16996 <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>
16997 <li>A LIMITED camera with only the DEPTH_<wbr/>OUTPUT capability does not have to support
16998 normal YUV_<wbr/>420_<wbr/>888,<wbr/> JPEG,<wbr/> and PRIV-format outputs.<wbr/> It only has to support the DEPTH16
17001 <p>Generally,<wbr/> depth output operates at a slower frame rate than standard color capture,<wbr/>
17002 so the DEPTH16 and DEPTH_<wbr/>POINT_<wbr/>CLOUD formats will commonly have a stall duration that
17003 should be accounted for (see <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a>).<wbr/>
17004 On a device that supports both depth and color-based output,<wbr/> to enable smooth preview,<wbr/>
17005 using a repeating burst is recommended,<wbr/> where a depth-output target is only included
17006 once every N frames,<wbr/> where N is the ratio between preview output rate and depth output
17007 rate,<wbr/> including depth stall time.<wbr/></p></span>
17010 <span class="entry_type_enum_name">CONSTRAINED_HIGH_SPEED_VIDEO (v3.2)</span>
17011 <span class="entry_type_enum_optional">[optional]</span>
17012 <span class="entry_type_enum_notes"><p>The device supports constrained high speed video recording (frame rate >=120fps) use
17013 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
17014 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>
17015 <p>A camera device can still support high speed video streaming by advertising the high
17016 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
17017 normal capture request per frame control and synchronization requirements will apply
17018 to the high speed fps ranges,<wbr/> the same as all other fps ranges.<wbr/> This capability
17019 describes the capability of a specialized operating mode with many limitations (see
17020 below),<wbr/> which is only targeted at high speed video recording.<wbr/></p>
17021 <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/>
17022 To get desired output frame rates,<wbr/> the application is only allowed to select video
17023 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
17024 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>
17025 <p>In this capability,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to
17026 ON,<wbr/> AUTO,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode
17027 controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture
17028 and post-processing parameters is possible.<wbr/> All other controls operate the
17029 same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other
17030 android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p>
17032 <li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li>
17033 <li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li>
17034 <li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li>
17035 <li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li>
17036 <li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li>
17037 <li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li>
17038 <li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li>
17039 <li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li>
17040 <li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li>
17041 <li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li>
17043 <p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p>
17045 <li><a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> (TORCH mode only,<wbr/> automatic flash for still capture will not
17046 work since aeMode is ON)</li>
17047 <li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li>
17048 <li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li>
17049 <li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> (if it is supported)</li>
17051 <p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may
17052 be lower than what camera can output,<wbr/> depending on the destination Surfaces for
17053 the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/>
17054 the application need check if the video encoder is capable of supporting the
17055 high frame rate for a given video size,<wbr/> or it will end up with lower recording
17056 frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the actual preview frame
17057 rate will be bounded by the screen refresh rate.<wbr/></p>
17058 <p>The camera device will only support up to 2 high speed simultaneous output surfaces
17059 (preview and recording surfaces) in this mode.<wbr/> Above controls will be effective only
17060 if all of below conditions are true:</p>
17062 <li>The application creates a camera capture session with no more than 2 surfaces via
17063 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>.<wbr/> The
17064 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
17065 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>
17066 <li>The stream sizes are selected from the sizes reported by
17067 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighSpeedVideoSizes">StreamConfigurationMap#getHighSpeedVideoSizes</a>.<wbr/></li>
17068 <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>
17070 <p>When above conditions are NOT satistied,<wbr/>
17071 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>
17072 will fail.<wbr/></p>
17073 <p>Switching to a FPS range that has different maximum FPS may trigger some camera device
17074 reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that
17075 the application avoids unnecessary maximum target FPS changes as much as possible
17076 during high speed streaming.<wbr/></p></span>
17079 <span class="entry_type_enum_name">MOTION_TRACKING (v3.3)</span>
17080 <span class="entry_type_enum_optional">[optional]</span>
17081 <span class="entry_type_enum_notes"><p>The camera device supports the MOTION_<wbr/>TRACKING value for
17082 <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>
17083 <p>This limits the motion blur of capture images,<wbr/> resulting in better image tracking
17084 results for use cases such as image stabilization or augmented reality.<wbr/></p></span>
17087 <span class="entry_type_enum_name">LOGICAL_MULTI_CAMERA (v3.3)</span>
17088 <span class="entry_type_enum_optional">[optional]</span>
17089 <span class="entry_type_enum_notes"><p>The camera device is a logical camera backed by two or more physical cameras that are
17090 also exposed to the application.<wbr/></p>
17091 <p>This capability requires the camera device to support the following:</p>
17093 <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>
17094 <li><a href="#static_android.logicalMultiCamera.physicalIds">android.<wbr/>logical<wbr/>Multi<wbr/>Camera.<wbr/>physical<wbr/>Ids</a></li>
17095 <li><a href="#static_android.logicalMultiCamera.sensorSyncType">android.<wbr/>logical<wbr/>Multi<wbr/>Camera.<wbr/>sensor<wbr/>Sync<wbr/>Type</a></li>
17098 <li>The underlying physical cameras' static metadata must list the following entries,<wbr/>
17099 so that the application can correlate pixels from the physical streams:<ul>
17100 <li><a href="#static_android.lens.poseReference">android.<wbr/>lens.<wbr/>pose<wbr/>Reference</a></li>
17101 <li><a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a></li>
17102 <li><a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a></li>
17103 <li><a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a></li>
17104 <li><a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a></li>
17107 <li>The SENSOR_<wbr/>INFO_<wbr/>TIMESTAMP_<wbr/>SOURCE of the logical device and physical devices must be
17108 the same.<wbr/></li>
17109 <li>The logical camera device must be LIMITED or higher device.<wbr/></li>
17111 <p>Both the logical camera device and its underlying physical devices support the
17112 mandatory stream combinations required for their device levels.<wbr/></p>
17113 <p>Additionally,<wbr/> for each guaranteed stream combination,<wbr/> the logical camera supports:</p>
17115 <li>For each guaranteed stream combination,<wbr/> the logical camera supports replacing one
17116 logical <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">YUV_<wbr/>420_<wbr/>888</a>
17117 or raw stream with two physical streams of the same size and format,<wbr/> each from a
17118 separate physical camera,<wbr/> given that the size and format are supported by both
17119 physical cameras.<wbr/></li>
17120 <li>If the logical camera doesn't advertise RAW capability,<wbr/> but the underlying physical
17121 cameras do,<wbr/> the logical camera will support guaranteed stream combinations for RAW
17122 capability,<wbr/> except that the RAW streams will be physical streams,<wbr/> each from a separate
17123 physical camera.<wbr/> This is usually the case when the physical cameras have different
17124 sensor sizes.<wbr/></li>
17126 <p>Using physical streams in place of a logical stream of the same size and format will
17127 not slow down the frame rate of the capture,<wbr/> as long as the minimum frame duration
17128 of the physical and logical streams are the same.<wbr/></p></span>
17131 <span class="entry_type_enum_name">MONOCHROME (v3.3)</span>
17132 <span class="entry_type_enum_optional">[optional]</span>
17133 <span class="entry_type_enum_notes"><p>The camera device is a monochrome camera that doesn't contain a color filter array,<wbr/>
17134 and the pixel values on U and Y planes are all 128.<wbr/></p></span>
17138 </td> <!-- entry_type -->
17140 <td class="entry_description">
17141 <p>List of capabilities that this camera device
17142 advertises as fully supporting.<wbr/></p>
17145 <td class="entry_units">
17148 <td class="entry_range">
17151 <td class="entry_hal_version">
17155 <td class="entry_tags">
17159 <tr class="entries_header">
17160 <th class="th_details" colspan="6">Details</th>
17162 <tr class="entry_cont">
17163 <td class="entry_details" colspan="6">
17164 <p>A capability is a contract that the camera device makes in order
17165 to be able to satisfy one or more use cases.<wbr/></p>
17166 <p>Listing a capability guarantees that the whole set of features
17167 required to support a common use will all be available.<wbr/></p>
17168 <p>Using a subset of the functionality provided by an unsupported
17169 capability may be possible on a specific camera device implementation;
17170 to do this query each of <a href="#static_android.request.availableRequestKeys">android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys</a>,<wbr/>
17171 <a href="#static_android.request.availableResultKeys">android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys</a>,<wbr/>
17172 <a href="#static_android.request.availableCharacteristicsKeys">android.<wbr/>request.<wbr/>available<wbr/>Characteristics<wbr/>Keys</a>.<wbr/></p>
17173 <p>The following capabilities are guaranteed to be available on
17174 <a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> <code>==</code> FULL devices:</p>
17176 <li>MANUAL_<wbr/>SENSOR</li>
17177 <li>MANUAL_<wbr/>POST_<wbr/>PROCESSING</li>
17179 <p>Other capabilities may be available on either FULL or LIMITED
17180 devices,<wbr/> but the application should query this key to be sure.<wbr/></p>
17184 <tr class="entries_header">
17185 <th class="th_details" colspan="6">HAL Implementation Details</th>
17187 <tr class="entry_cont">
17188 <td class="entry_details" colspan="6">
17189 <p>Additional constraint details per-capability will be available
17190 in the Compatibility Test Suite.<wbr/></p>
17191 <p>Minimum baseline requirements required for the
17192 BACKWARD_<wbr/>COMPATIBLE capability are not explicitly listed.<wbr/>
17193 Instead refer to "BC" tags and the camera CTS tests in the
17194 android.<wbr/>hardware.<wbr/>camera2.<wbr/>cts package.<wbr/></p>
17195 <p>Listed controls that can be either request or result (e.<wbr/>g.<wbr/>
17196 <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>) must be available both in the
17197 request and the result in order to be considered to be
17198 capability-compliant.<wbr/></p>
17199 <p>For example,<wbr/> if the HAL claims to support MANUAL control,<wbr/>
17200 then exposure time must be configurable via the request <em>and</em>
17201 the actual exposure applied must be available via
17202 the result.<wbr/></p>
17203 <p>If MANUAL_<wbr/>SENSOR is omitted,<wbr/> the HAL may choose to omit the
17204 <a href="#static_android.scaler.availableMinFrameDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Min<wbr/>Frame<wbr/>Durations</a> static property entirely.<wbr/></p>
17205 <p>For PRIVATE_<wbr/>REPROCESSING and YUV_<wbr/>REPROCESSING capabilities,<wbr/> see
17206 hardware/<wbr/>libhardware/<wbr/>include/<wbr/>hardware/<wbr/>camera3.<wbr/>h Section 10 for more information.<wbr/></p>
17207 <p>Devices that support the MANUAL_<wbr/>SENSOR capability must support the
17208 CAMERA3_<wbr/>TEMPLATE_<wbr/>MANUAL template defined in camera3.<wbr/>h.<wbr/></p>
17209 <p>Devices that support the PRIVATE_<wbr/>REPROCESSING capability or the
17210 YUV_<wbr/>REPROCESSING capability must support the
17211 CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template defined in camera3.<wbr/>h.<wbr/></p>
17212 <p>For DEPTH_<wbr/>OUTPUT,<wbr/> the depth-format keys
17213 <a href="#static_android.depth.availableDepthStreamConfigurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stream<wbr/>Configurations</a>,<wbr/>
17214 <a href="#static_android.depth.availableDepthMinFrameDurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Min<wbr/>Frame<wbr/>Durations</a>,<wbr/>
17215 <a href="#static_android.depth.availableDepthStallDurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stall<wbr/>Durations</a> must be available,<wbr/> in
17216 addition to the other keys explicitly mentioned in the DEPTH_<wbr/>OUTPUT
17217 enum notes.<wbr/> The entry <a href="#static_android.depth.maxDepthSamples">android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples</a> must be available
17218 if the DEPTH_<wbr/>POINT_<wbr/>CLOUD format is supported (HAL pixel format BLOB,<wbr/> dataspace
17220 <p>For a camera device with LOGICAL_<wbr/>MULTI_<wbr/>CAMERA capability,<wbr/> it should operate in the
17221 same way as a physical camera device based on its hardware level and capabilities.<wbr/>
17222 It's recommended that its feature set is superset of that of individual physical cameras.<wbr/></p>
17223 <p>For MONOCHROME,<wbr/> the camera device must also advertise BACKWARD_<wbr/>COMPATIBLE capability,<wbr/> and
17224 it is exclusive of both RAW and MANUAL_<wbr/>POST_<wbr/>PROCESSING capabilities:</p>
17227 <p>To maintain backward compatibility,<wbr/> the camera device must support all
17228 BACKWARD_<wbr/>COMPATIBLE required keys.<wbr/> The <a href="#static_android.control.awbAvailableModes">android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes</a> key only contains
17229 AUTO,<wbr/> and <a href="#dynamic_android.control.awbState">android.<wbr/>control.<wbr/>awb<wbr/>State</a> are either CONVERGED or LOCKED depending on
17230 <a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a>.<wbr/></p>
17233 <p>A monochrome device doesn't need to advertise DNG related optional metadata tags.<wbr/></p>
17236 <p><a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>,<wbr/> <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>,<wbr/> and
17237 <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are not applicable.<wbr/> So the camera device cannot
17238 be a FULL device.<wbr/> However,<wbr/> the HAL can still advertise other individual capabilites.<wbr/></p>
17241 <p>If the device supports tonemap control,<wbr/> only <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> is used.<wbr/>
17242 CurveGreen and curveBlue are no-ops.<wbr/></p>
17248 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17249 <!-- end of entry -->
17252 <tr class="entry" id="static_android.request.availableRequestKeys">
17253 <td class="entry_name
17255 android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys
17257 <td class="entry_type">
17258 <span class="entry_type_name">int32</span>
17259 <span class="entry_type_container">x</span>
17261 <span class="entry_type_array">
17264 <span class="entry_type_visibility"> [ndk_public]</span>
17267 <span class="entry_type_hwlevel">[legacy] </span>
17272 </td> <!-- entry_type -->
17274 <td class="entry_description">
17275 <p>A list of all keys that the camera device has available
17276 to use with <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureRequest.html">CaptureRequest</a>.<wbr/></p>
17279 <td class="entry_units">
17282 <td class="entry_range">
17285 <td class="entry_hal_version">
17289 <td class="entry_tags">
17293 <tr class="entries_header">
17294 <th class="th_details" colspan="6">Details</th>
17296 <tr class="entry_cont">
17297 <td class="entry_details" colspan="6">
17298 <p>Attempting to set a key into a CaptureRequest that is not
17299 listed here will result in an invalid request and will be rejected
17300 by the camera device.<wbr/></p>
17301 <p>This field can be used to query the feature set of a camera device
17302 at a more granular level than capabilities.<wbr/> This is especially
17303 important for optional keys that are not listed under any capability
17304 in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
17308 <tr class="entries_header">
17309 <th class="th_details" colspan="6">HAL Implementation Details</th>
17311 <tr class="entry_cont">
17312 <td class="entry_details" colspan="6">
17313 <p>Vendor tags can be listed here.<wbr/> Vendor tag metadata should also
17314 use the extensions C api (refer to camera3.<wbr/>h for more details).<wbr/></p>
17315 <p>Setting/<wbr/>getting vendor tags will be checked against the metadata
17316 vendor extensions API and not against this field.<wbr/></p>
17317 <p>The HAL must not consume any request tags that are not listed either
17318 here or in the vendor tag list.<wbr/></p>
17319 <p>The public camera2 API will always make the vendor tags visible
17321 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a>.<wbr/></p>
17325 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17326 <!-- end of entry -->
17329 <tr class="entry" id="static_android.request.availableResultKeys">
17330 <td class="entry_name
17332 android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys
17334 <td class="entry_type">
17335 <span class="entry_type_name">int32</span>
17336 <span class="entry_type_container">x</span>
17338 <span class="entry_type_array">
17341 <span class="entry_type_visibility"> [ndk_public]</span>
17344 <span class="entry_type_hwlevel">[legacy] </span>
17349 </td> <!-- entry_type -->
17351 <td class="entry_description">
17352 <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>
17355 <td class="entry_units">
17358 <td class="entry_range">
17361 <td class="entry_hal_version">
17365 <td class="entry_tags">
17369 <tr class="entries_header">
17370 <th class="th_details" colspan="6">Details</th>
17372 <tr class="entry_cont">
17373 <td class="entry_details" colspan="6">
17374 <p>Attempting to get a key from a CaptureResult that is not
17375 listed here will always return a <code>null</code> value.<wbr/> Getting a key from
17376 a CaptureResult that is listed here will generally never return a <code>null</code>
17378 <p>The following keys may return <code>null</code> unless they are enabled:</p>
17380 <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>
17382 <p>(Those sometimes-null keys will nevertheless be listed here
17383 if they are available.<wbr/>)</p>
17384 <p>This field can be used to query the feature set of a camera device
17385 at a more granular level than capabilities.<wbr/> This is especially
17386 important for optional keys that are not listed under any capability
17387 in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
17391 <tr class="entries_header">
17392 <th class="th_details" colspan="6">HAL Implementation Details</th>
17394 <tr class="entry_cont">
17395 <td class="entry_details" colspan="6">
17396 <p>Tags listed here must always have an entry in the result metadata,<wbr/>
17397 even if that size is 0 elements.<wbr/> Only array-type tags (e.<wbr/>g.<wbr/> lists,<wbr/>
17398 matrices,<wbr/> strings) are allowed to have 0 elements.<wbr/></p>
17399 <p>Vendor tags can be listed here.<wbr/> Vendor tag metadata should also
17400 use the extensions C api (refer to camera3.<wbr/>h for more details).<wbr/></p>
17401 <p>Setting/<wbr/>getting vendor tags will be checked against the metadata
17402 vendor extensions API and not against this field.<wbr/></p>
17403 <p>The HAL must not produce any result tags that are not listed either
17404 here or in the vendor tag list.<wbr/></p>
17405 <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>
17409 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17410 <!-- end of entry -->
17413 <tr class="entry" id="static_android.request.availableCharacteristicsKeys">
17414 <td class="entry_name
17416 android.<wbr/>request.<wbr/>available<wbr/>Characteristics<wbr/>Keys
17418 <td class="entry_type">
17419 <span class="entry_type_name">int32</span>
17420 <span class="entry_type_container">x</span>
17422 <span class="entry_type_array">
17425 <span class="entry_type_visibility"> [ndk_public]</span>
17428 <span class="entry_type_hwlevel">[legacy] </span>
17433 </td> <!-- entry_type -->
17435 <td class="entry_description">
17436 <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>
17439 <td class="entry_units">
17442 <td class="entry_range">
17445 <td class="entry_hal_version">
17449 <td class="entry_tags">
17453 <tr class="entries_header">
17454 <th class="th_details" colspan="6">Details</th>
17456 <tr class="entry_cont">
17457 <td class="entry_details" colspan="6">
17458 <p>This entry follows the same rules as
17459 <a href="#static_android.request.availableResultKeys">android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys</a> (except that it applies for
17460 CameraCharacteristics instead of CaptureResult).<wbr/> See above for more
17465 <tr class="entries_header">
17466 <th class="th_details" colspan="6">HAL Implementation Details</th>
17468 <tr class="entry_cont">
17469 <td class="entry_details" colspan="6">
17470 <p>Keys listed here must always have an entry in the static info metadata,<wbr/>
17471 even if that size is 0 elements.<wbr/> Only array-type tags (e.<wbr/>g.<wbr/> lists,<wbr/>
17472 matrices,<wbr/> strings) are allowed to have 0 elements.<wbr/></p>
17473 <p>Vendor tags can listed here.<wbr/> Vendor tag metadata should also use
17474 the extensions C api (refer to camera3.<wbr/>h for more details).<wbr/></p>
17475 <p>Setting/<wbr/>getting vendor tags will be checked against the metadata
17476 vendor extensions API and not against this field.<wbr/></p>
17477 <p>The HAL must not have any tags in its static info that are not listed
17478 either here or in the vendor tag list.<wbr/></p>
17479 <p>The public camera2 API will always make the vendor tags visible
17480 via <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getKeys">CameraCharacteristics#getKeys</a>.<wbr/></p>
17484 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17485 <!-- end of entry -->
17488 <tr class="entry" id="static_android.request.availableSessionKeys">
17489 <td class="entry_name
17491 android.<wbr/>request.<wbr/>available<wbr/>Session<wbr/>Keys
17493 <td class="entry_type">
17494 <span class="entry_type_name">int32</span>
17495 <span class="entry_type_container">x</span>
17497 <span class="entry_type_array">
17500 <span class="entry_type_visibility"> [ndk_public]</span>
17503 <span class="entry_type_hwlevel">[legacy] </span>
17508 </td> <!-- entry_type -->
17510 <td class="entry_description">
17511 <p>A subset of the available request keys that the camera device
17512 can pass as part of the capture session initialization.<wbr/></p>
17515 <td class="entry_units">
17518 <td class="entry_range">
17521 <td class="entry_hal_version">
17525 <td class="entry_tags">
17529 <tr class="entries_header">
17530 <th class="th_details" colspan="6">Details</th>
17532 <tr class="entry_cont">
17533 <td class="entry_details" colspan="6">
17534 <p>This is a subset of <a href="#static_android.request.availableRequestKeys">android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys</a> which
17535 contains a list of keys that are difficult to apply per-frame and
17536 can result in unexpected delays when modified during the capture session
17537 lifetime.<wbr/> Typical examples include parameters that require a
17538 time-consuming hardware re-configuration or internal camera pipeline
17539 change.<wbr/> For performance reasons we advise clients to pass their initial
17541 <a href="https://developer.android.com/reference/SessionConfiguration.html#setSessionParameters">SessionConfiguration#setSessionParameters</a>.<wbr/>
17542 Once the camera capture session is enabled it is also recommended to avoid
17543 changing them from their initial values set in
17544 <a href="https://developer.android.com/reference/SessionConfiguration.html#setSessionParameters">SessionConfiguration#setSessionParameters</a>.<wbr/>
17545 Control over session parameters can still be exerted in capture requests
17546 but clients should be aware and expect delays during their application.<wbr/>
17547 An example usage scenario could look like this:</p>
17549 <li>The camera client starts by quering the session parameter key list via
17550 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableSessionKeys">CameraCharacteristics#getAvailableSessionKeys</a>.<wbr/></li>
17551 <li>Before triggering the capture session create sequence,<wbr/> a capture request
17553 <a href="https://developer.android.com/reference/CameraDevice.html#createCaptureRequest">CameraDevice#createCaptureRequest</a>
17554 using an appropriate template matching the particular use case.<wbr/></li>
17555 <li>The client should go over the list of session parameters and check
17556 whether some of the keys listed matches with the parameters that
17557 they intend to modify as part of the first capture request.<wbr/></li>
17558 <li>If there is no such match,<wbr/> the capture request can be passed
17560 <a href="https://developer.android.com/reference/SessionConfiguration.html#setSessionParameters">SessionConfiguration#setSessionParameters</a>.<wbr/></li>
17561 <li>If matches do exist,<wbr/> the client should update the respective values
17562 and pass the request to
17563 <a href="https://developer.android.com/reference/SessionConfiguration.html#setSessionParameters">SessionConfiguration#setSessionParameters</a>.<wbr/></li>
17564 <li>After the capture session initialization completes the session parameter
17565 key list can continue to serve as reference when posting or updating
17566 further requests.<wbr/> As mentioned above further changes to session
17567 parameters should ideally be avoided,<wbr/> if updates are necessary
17568 however clients could expect a delay/<wbr/>glitch during the
17569 parameter switch.<wbr/></li>
17574 <tr class="entries_header">
17575 <th class="th_details" colspan="6">HAL Implementation Details</th>
17577 <tr class="entry_cont">
17578 <td class="entry_details" colspan="6">
17579 <p>Vendor tags can be listed here.<wbr/> Vendor tag metadata should also
17580 use the extensions C api (refer to
17581 android.<wbr/>hardware.<wbr/>camera.<wbr/>device.<wbr/>V3_<wbr/>4.<wbr/>Stream<wbr/>Configuration.<wbr/>session<wbr/>Params for more details).<wbr/></p>
17582 <p>Setting/<wbr/>getting vendor tags will be checked against the metadata
17583 vendor extensions API and not against this field.<wbr/></p>
17584 <p>The HAL must not consume any request tags in the session parameters that
17585 are not listed either here or in the vendor tag list.<wbr/></p>
17586 <p>The public camera2 API will always make the vendor tags visible
17588 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableSessionKeys">CameraCharacteristics#getAvailableSessionKeys</a>.<wbr/></p>
17592 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17593 <!-- end of entry -->
17596 <tr class="entry" id="static_android.request.availablePhysicalCameraRequestKeys">
17597 <td class="entry_name
17599 android.<wbr/>request.<wbr/>available<wbr/>Physical<wbr/>Camera<wbr/>Request<wbr/>Keys
17601 <td class="entry_type">
17602 <span class="entry_type_name">int32</span>
17603 <span class="entry_type_container">x</span>
17605 <span class="entry_type_array">
17608 <span class="entry_type_visibility"> [hidden]</span>
17611 <span class="entry_type_hwlevel">[limited] </span>
17616 </td> <!-- entry_type -->
17618 <td class="entry_description">
17619 <p>A subset of the available request keys that can be overriden for
17620 physical devices backing a logical multi-camera.<wbr/></p>
17623 <td class="entry_units">
17626 <td class="entry_range">
17629 <td class="entry_hal_version">
17633 <td class="entry_tags">
17637 <tr class="entries_header">
17638 <th class="th_details" colspan="6">Details</th>
17640 <tr class="entry_cont">
17641 <td class="entry_details" colspan="6">
17642 <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
17643 of keys that can be overriden using <a href="https://developer.android.com/reference/CaptureRequest/Builder.html#setPhysicalCameraKey">Builder#setPhysicalCameraKey</a>.<wbr/>
17644 The respective value of such request key can be obtained by calling
17645 <a href="https://developer.android.com/reference/CaptureRequest/Builder.html#getPhysicalCameraKey">Builder#getPhysicalCameraKey</a>.<wbr/> Capture requests that contain
17646 individual physical device requests must be built via
17647 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureRequest(int,">Set)</a>.<wbr/></p>
17651 <tr class="entries_header">
17652 <th class="th_details" colspan="6">HAL Implementation Details</th>
17654 <tr class="entry_cont">
17655 <td class="entry_details" colspan="6">
17656 <p>Vendor tags can be listed here.<wbr/> Vendor tag metadata should also
17657 use the extensions C api (refer to
17658 android.<wbr/>hardware.<wbr/>camera.<wbr/>device.<wbr/>V3_<wbr/>4.<wbr/>Capture<wbr/>Request.<wbr/>physical<wbr/>Camera<wbr/>Settings for more
17659 details).<wbr/></p>
17660 <p>Setting/<wbr/>getting vendor tags will be checked against the metadata
17661 vendor extensions API and not against this field.<wbr/></p>
17662 <p>The HAL must not consume any request tags in the session parameters that
17663 are not listed either here or in the vendor tag list.<wbr/></p>
17664 <p>There should be no overlap between this set of keys and the available session keys
17665 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableSessionKeys">CameraCharacteristics#getAvailableSessionKeys</a> along
17666 with any other controls that can have impact on the dual-camera sync.<wbr/></p>
17667 <p>The public camera2 API will always make the vendor tags visible
17669 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailablePhysicalCameraRequestKeys">CameraCharacteristics#getAvailablePhysicalCameraRequestKeys</a>.<wbr/></p>
17673 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17674 <!-- end of entry -->
17678 <!-- end of kind -->
17680 <tr><td colspan="7" class="kind">dynamic</td></tr>
17682 <thead class="entries_header">
17684 <th class="th_name">Property Name</th>
17685 <th class="th_type">Type</th>
17686 <th class="th_description">Description</th>
17687 <th class="th_units">Units</th>
17688 <th class="th_range">Range</th>
17689 <th class="th_hal_version">Initial HIDL HAL version</th>
17690 <th class="th_tags">Tags</th>
17705 <tr class="entry" id="dynamic_android.request.frameCount">
17706 <td class="entry_name
17707 entry_name_deprecated
17709 android.<wbr/>request.<wbr/>frame<wbr/>Count
17711 <td class="entry_type">
17712 <span class="entry_type_name">int32</span>
17714 <span class="entry_type_visibility"> [hidden]</span>
17718 <span class="entry_type_deprecated">[deprecated] </span>
17722 </td> <!-- entry_type -->
17724 <td class="entry_description">
17725 <p>A frame counter set by the framework.<wbr/> This value monotonically
17726 increases with every new result (that is,<wbr/> each new result has a unique
17727 frameCount value).<wbr/></p>
17730 <td class="entry_units">
17734 <td class="entry_range">
17735 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
17739 <td class="entry_hal_version">
17743 <td class="entry_tags">
17747 <tr class="entries_header">
17748 <th class="th_details" colspan="6">Details</th>
17750 <tr class="entry_cont">
17751 <td class="entry_details" colspan="6">
17752 <p>Reset on release()</p>
17757 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17758 <!-- end of entry -->
17761 <tr class="entry" id="dynamic_android.request.id">
17762 <td class="entry_name
17764 android.<wbr/>request.<wbr/>id
17766 <td class="entry_type">
17767 <span class="entry_type_name">int32</span>
17769 <span class="entry_type_visibility"> [hidden]</span>
17776 </td> <!-- entry_type -->
17778 <td class="entry_description">
17779 <p>An application-specified ID for the current
17780 request.<wbr/> Must be maintained unchanged in output
17784 <td class="entry_units">
17785 arbitrary integer assigned by application
17788 <td class="entry_range">
17792 <td class="entry_hal_version">
17796 <td class="entry_tags">
17797 <ul class="entry_tags">
17798 <li><a href="#tag_V1">V1</a></li>
17805 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17806 <!-- end of entry -->
17809 <tr class="entry" id="dynamic_android.request.metadataMode">
17810 <td class="entry_name
17812 android.<wbr/>request.<wbr/>metadata<wbr/>Mode
17814 <td class="entry_type">
17815 <span class="entry_type_name entry_type_name_enum">byte</span>
17817 <span class="entry_type_visibility"> [system]</span>
17823 <ul class="entry_type_enum">
17825 <span class="entry_type_enum_name">NONE (v3.2)</span>
17826 <span class="entry_type_enum_notes"><p>No metadata should be produced on output,<wbr/> except
17827 for application-bound buffer data.<wbr/> If no
17828 application-bound streams exist,<wbr/> no frame should be
17829 placed in the output frame queue.<wbr/> If such streams
17830 exist,<wbr/> a frame should be placed on the output queue
17831 with null metadata but with the necessary output buffer
17832 information.<wbr/> Timestamp information should still be
17833 included with any output stream buffers</p></span>
17836 <span class="entry_type_enum_name">FULL (v3.2)</span>
17837 <span class="entry_type_enum_notes"><p>All metadata should be produced.<wbr/> Statistics will
17838 only be produced if they are separately
17843 </td> <!-- entry_type -->
17845 <td class="entry_description">
17846 <p>How much metadata to produce on
17850 <td class="entry_units">
17853 <td class="entry_range">
17856 <td class="entry_hal_version">
17860 <td class="entry_tags">
17861 <ul class="entry_tags">
17862 <li><a href="#tag_FUTURE">FUTURE</a></li>
17869 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17870 <!-- end of entry -->
17873 <tr class="entry" id="dynamic_android.request.outputStreams">
17874 <td class="entry_name
17875 entry_name_deprecated
17877 android.<wbr/>request.<wbr/>output<wbr/>Streams
17879 <td class="entry_type">
17880 <span class="entry_type_name">int32</span>
17881 <span class="entry_type_container">x</span>
17883 <span class="entry_type_array">
17886 <span class="entry_type_visibility"> [system]</span>
17890 <span class="entry_type_deprecated">[deprecated] </span>
17894 </td> <!-- entry_type -->
17896 <td class="entry_description">
17897 <p>Lists which camera output streams image data
17898 from this capture must be sent to</p>
17901 <td class="entry_units">
17902 List of camera stream IDs
17905 <td class="entry_range">
17906 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
17907 <p>List must only include streams that have been
17911 <td class="entry_hal_version">
17915 <td class="entry_tags">
17916 <ul class="entry_tags">
17917 <li><a href="#tag_HAL2">HAL2</a></li>
17922 <tr class="entries_header">
17923 <th class="th_details" colspan="6">Details</th>
17925 <tr class="entry_cont">
17926 <td class="entry_details" colspan="6">
17927 <p>If no output streams are listed,<wbr/> then the image
17928 data should simply be discarded.<wbr/> The image data must
17929 still be captured for metadata and statistics production,<wbr/>
17930 and the lens and flash must operate as requested.<wbr/></p>
17935 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17936 <!-- end of entry -->
17939 <tr class="entry" id="dynamic_android.request.pipelineDepth">
17940 <td class="entry_name
17942 android.<wbr/>request.<wbr/>pipeline<wbr/>Depth
17944 <td class="entry_type">
17945 <span class="entry_type_name">byte</span>
17947 <span class="entry_type_visibility"> [public]</span>
17950 <span class="entry_type_hwlevel">[legacy] </span>
17955 </td> <!-- entry_type -->
17957 <td class="entry_description">
17958 <p>Specifies the number of pipeline stages the frame went
17959 through from when it was exposed to when the final completed result
17960 was available to the framework.<wbr/></p>
17963 <td class="entry_units">
17966 <td class="entry_range">
17967 <p><= <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a></p>
17970 <td class="entry_hal_version">
17974 <td class="entry_tags">
17978 <tr class="entries_header">
17979 <th class="th_details" colspan="6">Details</th>
17981 <tr class="entry_cont">
17982 <td class="entry_details" colspan="6">
17983 <p>Depending on what settings are used in the request,<wbr/> and
17984 what streams are configured,<wbr/> the data may undergo less processing,<wbr/>
17985 and some pipeline stages skipped.<wbr/></p>
17986 <p>See <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a> for more details.<wbr/></p>
17990 <tr class="entries_header">
17991 <th class="th_details" colspan="6">HAL Implementation Details</th>
17993 <tr class="entry_cont">
17994 <td class="entry_details" colspan="6">
17995 <p>This value must always represent the accurate count of how many
17996 pipeline stages were actually used.<wbr/></p>
18000 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18001 <!-- end of entry -->
18005 <!-- end of kind -->
18008 <!-- end of section -->
18009 <tr><td colspan="7" id="section_scaler" class="section">scaler</td></tr>
18012 <tr><td colspan="7" class="kind">controls</td></tr>
18014 <thead class="entries_header">
18016 <th class="th_name">Property Name</th>
18017 <th class="th_type">Type</th>
18018 <th class="th_description">Description</th>
18019 <th class="th_units">Units</th>
18020 <th class="th_range">Range</th>
18021 <th class="th_hal_version">Initial HIDL HAL version</th>
18022 <th class="th_tags">Tags</th>
18037 <tr class="entry" id="controls_android.scaler.cropRegion">
18038 <td class="entry_name
18040 android.<wbr/>scaler.<wbr/>crop<wbr/>Region
18042 <td class="entry_type">
18043 <span class="entry_type_name">int32</span>
18044 <span class="entry_type_container">x</span>
18046 <span class="entry_type_array">
18049 <span class="entry_type_visibility"> [public as rectangle]</span>
18052 <span class="entry_type_hwlevel">[legacy] </span>
18057 </td> <!-- entry_type -->
18059 <td class="entry_description">
18060 <p>The desired region of the sensor to read out for this capture.<wbr/></p>
18063 <td class="entry_units">
18064 Pixel coordinates relative to
18065 android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
18068 <td class="entry_range">
18071 <td class="entry_hal_version">
18075 <td class="entry_tags">
18076 <ul class="entry_tags">
18077 <li><a href="#tag_BC">BC</a></li>
18082 <tr class="entries_header">
18083 <th class="th_details" colspan="6">Details</th>
18085 <tr class="entry_cont">
18086 <td class="entry_details" colspan="6">
18087 <p>This control can be used to implement digital zoom.<wbr/></p>
18088 <p>The crop region coordinate system is based off
18089 <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
18090 top-left corner of the sensor active array.<wbr/></p>
18091 <p>Output streams use this rectangle to produce their output,<wbr/>
18092 cropping to a smaller region if necessary to maintain the
18093 stream's aspect ratio,<wbr/> then scaling the sensor input to
18094 match the output's configured resolution.<wbr/></p>
18095 <p>The crop region is applied after the RAW to other color
18096 space (e.<wbr/>g.<wbr/> YUV) conversion.<wbr/> Since raw streams
18097 (e.<wbr/>g.<wbr/> RAW16) don't have the conversion stage,<wbr/> they are not
18098 croppable.<wbr/> The crop region will be ignored by raw streams.<wbr/></p>
18099 <p>For non-raw streams,<wbr/> any additional per-stream cropping will
18100 be done to maximize the final pixel area of the stream.<wbr/></p>
18101 <p>For example,<wbr/> if the crop region is set to a 4:3 aspect
18102 ratio,<wbr/> then 4:3 streams will use the exact crop
18103 region.<wbr/> 16:9 streams will further crop vertically
18104 (letterbox).<wbr/></p>
18105 <p>Conversely,<wbr/> if the crop region is set to a 16:9,<wbr/> then 4:3
18106 outputs will crop horizontally (pillarbox),<wbr/> and 16:9
18107 streams will match exactly.<wbr/> These additional crops will
18108 be centered within the crop region.<wbr/></p>
18109 <p>The width and height of the crop region cannot
18110 be set to be smaller than
18111 <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
18112 <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>
18113 <p>The camera device may adjust the crop region to account
18114 for rounding and other hardware requirements; the final
18115 crop region used will be included in the output capture
18120 <tr class="entries_header">
18121 <th class="th_details" colspan="6">HAL Implementation Details</th>
18123 <tr class="entry_cont">
18124 <td class="entry_details" colspan="6">
18125 <p>The output streams must maintain square pixels at all
18126 times,<wbr/> no matter what the relative aspect ratios of the
18127 crop region and the stream are.<wbr/> Negative values for
18128 corner are allowed for raw output if full pixel array is
18129 larger than active pixel array.<wbr/> Width and height may be
18130 rounded to nearest larger supportable width,<wbr/> especially
18131 for raw output,<wbr/> where only a few fixed scales may be
18132 possible.<wbr/></p>
18133 <p>For a set of output streams configured,<wbr/> if the sensor output is cropped to a smaller
18134 size than active array size,<wbr/> the HAL need follow below cropping rules:</p>
18137 <p>The HAL need handle the cropRegion as if the sensor crop size is the effective active
18138 array size.<wbr/>More specifically,<wbr/> the HAL must transform the request cropRegion from
18139 <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>
18141 <li>Translate the requested cropRegion w.<wbr/>r.<wbr/>t.,<wbr/> the left top corner of the sensor
18142 cropped pixel area by (tx,<wbr/> ty),<wbr/>
18143 where <code>tx = sensorCrop.<wbr/>top * (sensorCrop.<wbr/>height /<wbr/> activeArraySize.<wbr/>height)</code>
18144 and <code>tx = sensorCrop.<wbr/>left * (sensorCrop.<wbr/>width /<wbr/> activeArraySize.<wbr/>width)</code>.<wbr/> The
18145 (sensorCrop.<wbr/>top,<wbr/> sensorCrop.<wbr/>left) is the coordinate based off the
18146 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></li>
18147 <li>Scale the width and height of requested cropRegion with scaling factor of
18148 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
18149 respectively.<wbr/>
18150 Once this new cropRegion is calculated,<wbr/> the HAL must use this region to crop the image
18151 with regard to the sensor crop size (effective active array size).<wbr/> The HAL still need
18152 follow the general cropping rule for this new cropRegion and effective active
18153 array size.<wbr/></li>
18157 <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/>
18158 The HAL need convert the new cropRegion generated above w.<wbr/>r.<wbr/>t.,<wbr/> full active array size.<wbr/>
18159 The reported cropRegion may be slightly different with the requested cropRegion since
18160 the HAL may adjust the crop region to account for rounding,<wbr/> conversion error,<wbr/> or other
18161 hardware limitations.<wbr/></p>
18164 <p>HAL2.<wbr/>x uses only (x,<wbr/> y,<wbr/> width)</p>
18168 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18169 <!-- end of entry -->
18173 <!-- end of kind -->
18175 <tr><td colspan="7" class="kind">static</td></tr>
18177 <thead class="entries_header">
18179 <th class="th_name">Property Name</th>
18180 <th class="th_type">Type</th>
18181 <th class="th_description">Description</th>
18182 <th class="th_units">Units</th>
18183 <th class="th_range">Range</th>
18184 <th class="th_hal_version">Initial HIDL HAL version</th>
18185 <th class="th_tags">Tags</th>
18200 <tr class="entry" id="static_android.scaler.availableFormats">
18201 <td class="entry_name
18202 entry_name_deprecated
18204 android.<wbr/>scaler.<wbr/>available<wbr/>Formats
18206 <td class="entry_type">
18207 <span class="entry_type_name entry_type_name_enum">int32</span>
18208 <span class="entry_type_container">x</span>
18210 <span class="entry_type_array">
18213 <span class="entry_type_visibility"> [hidden as imageFormat]</span>
18217 <span class="entry_type_deprecated">[deprecated] </span>
18220 <ul class="entry_type_enum">
18222 <span class="entry_type_enum_name">RAW16 (v3.2)</span>
18223 <span class="entry_type_enum_optional">[optional]</span>
18224 <span class="entry_type_enum_value">0x20</span>
18225 <span class="entry_type_enum_notes"><p>RAW16 is a standard,<wbr/> cross-platform format for raw image
18226 buffers with 16-bit pixels.<wbr/></p>
18227 <p>Buffers of this format are typically expected to have a
18228 Bayer Color Filter Array (CFA) layout,<wbr/> which is given in
18229 <a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a>.<wbr/> Sensors with
18230 CFAs that are not representable by a format in
18231 <a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a> should not
18232 use this format.<wbr/></p>
18233 <p>Buffers of this format will also follow the constraints given for
18234 RAW_<wbr/>OPAQUE buffers,<wbr/> but with relaxed performance constraints.<wbr/></p>
18235 <p>This format is intended to give users access to the full contents
18236 of the buffers coming directly from the image sensor prior to any
18237 cropping or scaling operations,<wbr/> and all coordinate systems for
18238 metadata used for this format are relative to the size of the
18239 active region of the image sensor before any geometric distortion
18240 correction has been applied (i.<wbr/>e.<wbr/>
18241 <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
18242 dimensions for this format are limited to the full dimensions of
18243 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
18244 <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
18245 only supported output size).<wbr/></p>
18246 <p>See <a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a> for
18247 the full set of performance guarantees.<wbr/></p></span>
18250 <span class="entry_type_enum_name">RAW_OPAQUE (v3.2)</span>
18251 <span class="entry_type_enum_optional">[optional]</span>
18252 <span class="entry_type_enum_value">0x24</span>
18253 <span class="entry_type_enum_notes"><p>RAW_<wbr/>OPAQUE (or
18254 <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_PRIVATE">RAW_<wbr/>PRIVATE</a>
18255 as referred in public API) is a format for raw image buffers
18256 coming from an image sensor.<wbr/></p>
18257 <p>The actual structure of buffers of this format is
18258 platform-specific,<wbr/> but must follow several constraints:</p>
18260 <li>No image post-processing operations may have been applied to
18261 buffers of this type.<wbr/> These buffers contain raw image data coming
18262 directly from the image sensor.<wbr/></li>
18263 <li>If a buffer of this format is passed to the camera device for
18264 reprocessing,<wbr/> the resulting images will be identical to the images
18265 produced if the buffer had come directly from the sensor and was
18266 processed with the same settings.<wbr/></li>
18268 <p>The intended use for this format is to allow access to the native
18269 raw format buffers coming directly from the camera sensor without
18270 any additional conversions or decrease in framerate.<wbr/></p>
18271 <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
18272 performance guarantees.<wbr/></p></span>
18275 <span class="entry_type_enum_name">YV12 (v3.2)</span>
18276 <span class="entry_type_enum_optional">[optional]</span>
18277 <span class="entry_type_enum_value">0x32315659</span>
18278 <span class="entry_type_enum_notes"><p>YCrCb 4:2:0 Planar</p></span>
18281 <span class="entry_type_enum_name">YCrCb_420_SP (v3.2)</span>
18282 <span class="entry_type_enum_optional">[optional]</span>
18283 <span class="entry_type_enum_value">0x11</span>
18284 <span class="entry_type_enum_notes"><p>NV21</p></span>
18287 <span class="entry_type_enum_name">IMPLEMENTATION_DEFINED (v3.2)</span>
18288 <span class="entry_type_enum_value">0x22</span>
18289 <span class="entry_type_enum_notes"><p>System internal format,<wbr/> not application-accessible</p></span>
18292 <span class="entry_type_enum_name">YCbCr_420_888 (v3.2)</span>
18293 <span class="entry_type_enum_value">0x23</span>
18294 <span class="entry_type_enum_notes"><p>Flexible YUV420 Format</p></span>
18297 <span class="entry_type_enum_name">BLOB (v3.2)</span>
18298 <span class="entry_type_enum_value">0x21</span>
18299 <span class="entry_type_enum_notes"><p>JPEG format</p></span>
18303 </td> <!-- entry_type -->
18305 <td class="entry_description">
18306 <p>The list of image formats that are supported by this
18307 camera device for output streams.<wbr/></p>
18310 <td class="entry_units">
18313 <td class="entry_range">
18314 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
18317 <td class="entry_hal_version">
18321 <td class="entry_tags">
18322 <ul class="entry_tags">
18323 <li><a href="#tag_BC">BC</a></li>
18328 <tr class="entries_header">
18329 <th class="th_details" colspan="6">Details</th>
18331 <tr class="entry_cont">
18332 <td class="entry_details" colspan="6">
18333 <p>All camera devices will support JPEG and YUV_<wbr/>420_<wbr/>888 formats.<wbr/></p>
18334 <p>When set to YUV_<wbr/>420_<wbr/>888,<wbr/> application can access the YUV420 data directly.<wbr/></p>
18338 <tr class="entries_header">
18339 <th class="th_details" colspan="6">HAL Implementation Details</th>
18341 <tr class="entry_cont">
18342 <td class="entry_details" colspan="6">
18343 <p>These format values are from HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>* in
18344 system/<wbr/>core/<wbr/>include/<wbr/>system/<wbr/>graphics.<wbr/>h.<wbr/></p>
18345 <p>When IMPLEMENTATION_<wbr/>DEFINED is used,<wbr/> the platform
18346 gralloc module will select a format based on the usage flags provided
18347 by the camera HAL device and the other endpoint of the stream.<wbr/> It is
18348 usually used by preview and recording streams,<wbr/> where the application doesn't
18349 need access the image data.<wbr/></p>
18350 <p>YCb<wbr/>Cr_<wbr/>420_<wbr/>888 format must be supported by the HAL.<wbr/> When an image stream
18351 needs CPU/<wbr/>application direct access,<wbr/> this format will be used.<wbr/></p>
18352 <p>The BLOB format must be supported by the HAL.<wbr/> This is used for the JPEG stream.<wbr/></p>
18353 <p>A RAW_<wbr/>OPAQUE buffer should contain only pixel data.<wbr/> It is strongly
18354 recommended that any information used by the camera device when
18355 processing images is fully expressed by the result metadata
18356 for that image buffer.<wbr/></p>
18360 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18361 <!-- end of entry -->
18364 <tr class="entry" id="static_android.scaler.availableJpegMinDurations">
18365 <td class="entry_name
18366 entry_name_deprecated
18368 android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Min<wbr/>Durations
18370 <td class="entry_type">
18371 <span class="entry_type_name">int64</span>
18372 <span class="entry_type_container">x</span>
18374 <span class="entry_type_array">
18377 <span class="entry_type_visibility"> [hidden]</span>
18381 <span class="entry_type_deprecated">[deprecated] </span>
18385 </td> <!-- entry_type -->
18387 <td class="entry_description">
18388 <p>The minimum frame duration that is supported
18389 for each resolution in <a href="#static_android.scaler.availableJpegSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes</a>.<wbr/></p>
18392 <td class="entry_units">
18396 <td class="entry_range">
18397 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
18398 <p>TODO: Remove property.<wbr/></p>
18401 <td class="entry_hal_version">
18405 <td class="entry_tags">
18406 <ul class="entry_tags">
18407 <li><a href="#tag_BC">BC</a></li>
18412 <tr class="entries_header">
18413 <th class="th_details" colspan="6">Details</th>
18415 <tr class="entry_cont">
18416 <td class="entry_details" colspan="6">
18417 <p>This corresponds to the minimum steady-state frame duration when only
18418 that JPEG stream is active and captured in a burst,<wbr/> with all
18419 processing (typically in android.<wbr/>*.<wbr/>mode) set to FAST.<wbr/></p>
18420 <p>When multiple streams are configured,<wbr/> the minimum
18421 frame duration will be >= max(individual stream min
18427 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18428 <!-- end of entry -->
18431 <tr class="entry" id="static_android.scaler.availableJpegSizes">
18432 <td class="entry_name
18433 entry_name_deprecated
18435 android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes
18437 <td class="entry_type">
18438 <span class="entry_type_name">int32</span>
18439 <span class="entry_type_container">x</span>
18441 <span class="entry_type_array">
18444 <span class="entry_type_visibility"> [hidden as size]</span>
18448 <span class="entry_type_deprecated">[deprecated] </span>
18452 </td> <!-- entry_type -->
18454 <td class="entry_description">
18455 <p>The JPEG resolutions that are supported by this camera device.<wbr/></p>
18458 <td class="entry_units">
18461 <td class="entry_range">
18462 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
18463 <p>TODO: Remove property.<wbr/></p>
18466 <td class="entry_hal_version">
18470 <td class="entry_tags">
18471 <ul class="entry_tags">
18472 <li><a href="#tag_BC">BC</a></li>
18477 <tr class="entries_header">
18478 <th class="th_details" colspan="6">Details</th>
18480 <tr class="entry_cont">
18481 <td class="entry_details" colspan="6">
18482 <p>The resolutions are listed as <code>(width,<wbr/> height)</code> pairs.<wbr/> All camera devices will support
18483 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>
18487 <tr class="entries_header">
18488 <th class="th_details" colspan="6">HAL Implementation Details</th>
18490 <tr class="entry_cont">
18491 <td class="entry_details" colspan="6">
18492 <p>The HAL must include sensor maximum resolution
18493 (defined by <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>),<wbr/>
18494 and should include half/<wbr/>quarter of sensor maximum resolution.<wbr/></p>
18498 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18499 <!-- end of entry -->
18502 <tr class="entry" id="static_android.scaler.availableMaxDigitalZoom">
18503 <td class="entry_name
18505 android.<wbr/>scaler.<wbr/>available<wbr/>Max<wbr/>Digital<wbr/>Zoom
18507 <td class="entry_type">
18508 <span class="entry_type_name">float</span>
18510 <span class="entry_type_visibility"> [public]</span>
18513 <span class="entry_type_hwlevel">[legacy] </span>
18518 </td> <!-- entry_type -->
18520 <td class="entry_description">
18521 <p>The maximum ratio between both active area width
18522 and crop region width,<wbr/> and active area height and
18523 crop region height,<wbr/> for <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></p>
18526 <td class="entry_units">
18530 <td class="entry_range">
18534 <td class="entry_hal_version">
18538 <td class="entry_tags">
18539 <ul class="entry_tags">
18540 <li><a href="#tag_BC">BC</a></li>
18545 <tr class="entries_header">
18546 <th class="th_details" colspan="6">Details</th>
18548 <tr class="entry_cont">
18549 <td class="entry_details" colspan="6">
18550 <p>This represents the maximum amount of zooming possible by
18551 the camera device,<wbr/> or equivalently,<wbr/> the minimum cropping
18552 window size.<wbr/></p>
18553 <p>Crop regions that have a width or height that is smaller
18554 than this ratio allows will be rounded up to the minimum
18555 allowed size by the camera device.<wbr/></p>
18560 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18561 <!-- end of entry -->
18564 <tr class="entry" id="static_android.scaler.availableProcessedMinDurations">
18565 <td class="entry_name
18566 entry_name_deprecated
18568 android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Min<wbr/>Durations
18570 <td class="entry_type">
18571 <span class="entry_type_name">int64</span>
18572 <span class="entry_type_container">x</span>
18574 <span class="entry_type_array">
18577 <span class="entry_type_visibility"> [hidden]</span>
18581 <span class="entry_type_deprecated">[deprecated] </span>
18585 </td> <!-- entry_type -->
18587 <td class="entry_description">
18588 <p>For each available processed output size (defined in
18589 <a href="#static_android.scaler.availableProcessedSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Sizes</a>),<wbr/> this property lists the
18590 minimum supportable frame duration for that size.<wbr/></p>
18593 <td class="entry_units">
18597 <td class="entry_range">
18598 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
18601 <td class="entry_hal_version">
18605 <td class="entry_tags">
18606 <ul class="entry_tags">
18607 <li><a href="#tag_BC">BC</a></li>
18612 <tr class="entries_header">
18613 <th class="th_details" colspan="6">Details</th>
18615 <tr class="entry_cont">
18616 <td class="entry_details" colspan="6">
18617 <p>This should correspond to the frame duration when only that processed
18618 stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode)
18619 set to FAST.<wbr/></p>
18620 <p>When multiple streams are configured,<wbr/> the minimum frame duration will
18621 be >= max(individual stream min durations).<wbr/></p>
18626 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18627 <!-- end of entry -->
18630 <tr class="entry" id="static_android.scaler.availableProcessedSizes">
18631 <td class="entry_name
18632 entry_name_deprecated
18634 android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Sizes
18636 <td class="entry_type">
18637 <span class="entry_type_name">int32</span>
18638 <span class="entry_type_container">x</span>
18640 <span class="entry_type_array">
18643 <span class="entry_type_visibility"> [hidden as size]</span>
18647 <span class="entry_type_deprecated">[deprecated] </span>
18651 </td> <!-- entry_type -->
18653 <td class="entry_description">
18654 <p>The resolutions available for use with
18655 processed output streams,<wbr/> such as YV12,<wbr/> NV12,<wbr/> and
18656 platform opaque YUV/<wbr/>RGB streams to the GPU or video
18657 encoders.<wbr/></p>
18660 <td class="entry_units">
18663 <td class="entry_range">
18664 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
18667 <td class="entry_hal_version">
18671 <td class="entry_tags">
18672 <ul class="entry_tags">
18673 <li><a href="#tag_BC">BC</a></li>
18678 <tr class="entries_header">
18679 <th class="th_details" colspan="6">Details</th>
18681 <tr class="entry_cont">
18682 <td class="entry_details" colspan="6">
18683 <p>The resolutions are listed as <code>(width,<wbr/> height)</code> pairs.<wbr/></p>
18684 <p>For a given use case,<wbr/> the actual maximum supported resolution
18685 may be lower than what is listed here,<wbr/> depending on the destination
18686 Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/>
18687 the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p)
18688 smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448)
18689 can provide.<wbr/></p>
18690 <p>Please reference the documentation for the image data destination to
18691 check if it limits the maximum size for image data.<wbr/></p>
18695 <tr class="entries_header">
18696 <th class="th_details" colspan="6">HAL Implementation Details</th>
18698 <tr class="entry_cont">
18699 <td class="entry_details" colspan="6">
18700 <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/>
18701 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>
18702 and each below resolution if it is smaller than or equal to the sensor
18703 maximum resolution (if they are not listed in JPEG sizes already):</p>
18705 <li>240p (320 x 240)</li>
18706 <li>480p (640 x 480)</li>
18707 <li>720p (1280 x 720)</li>
18708 <li>1080p (1920 x 1080)</li>
18710 <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/>
18711 the HAL only has to list up to the maximum video size supported by the devices.<wbr/></p>
18715 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18716 <!-- end of entry -->
18719 <tr class="entry" id="static_android.scaler.availableRawMinDurations">
18720 <td class="entry_name
18721 entry_name_deprecated
18723 android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Min<wbr/>Durations
18725 <td class="entry_type">
18726 <span class="entry_type_name">int64</span>
18727 <span class="entry_type_container">x</span>
18729 <span class="entry_type_array">
18732 <span class="entry_type_visibility"> [system]</span>
18736 <span class="entry_type_deprecated">[deprecated] </span>
18740 </td> <!-- entry_type -->
18742 <td class="entry_description">
18743 <p>For each available raw output size (defined in
18744 <a href="#static_android.scaler.availableRawSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Sizes</a>),<wbr/> this property lists the minimum
18745 supportable frame duration for that size.<wbr/></p>
18748 <td class="entry_units">
18752 <td class="entry_range">
18753 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
18756 <td class="entry_hal_version">
18760 <td class="entry_tags">
18761 <ul class="entry_tags">
18762 <li><a href="#tag_BC">BC</a></li>
18767 <tr class="entries_header">
18768 <th class="th_details" colspan="6">Details</th>
18770 <tr class="entry_cont">
18771 <td class="entry_details" colspan="6">
18772 <p>Should correspond to the frame duration when only the raw stream is
18774 <p>When multiple streams are configured,<wbr/> the minimum
18775 frame duration will be >= max(individual stream min
18781 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18782 <!-- end of entry -->
18785 <tr class="entry" id="static_android.scaler.availableRawSizes">
18786 <td class="entry_name
18787 entry_name_deprecated
18789 android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Sizes
18791 <td class="entry_type">
18792 <span class="entry_type_name">int32</span>
18793 <span class="entry_type_container">x</span>
18795 <span class="entry_type_array">
18798 <span class="entry_type_visibility"> [system as size]</span>
18802 <span class="entry_type_deprecated">[deprecated] </span>
18806 </td> <!-- entry_type -->
18808 <td class="entry_description">
18809 <p>The resolutions available for use with raw
18810 sensor output streams,<wbr/> listed as width,<wbr/>
18814 <td class="entry_units">
18817 <td class="entry_range">
18818 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
18821 <td class="entry_hal_version">
18825 <td class="entry_tags">
18831 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18832 <!-- end of entry -->
18835 <tr class="entry" id="static_android.scaler.availableInputOutputFormatsMap">
18836 <td class="entry_name
18838 android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map
18840 <td class="entry_type">
18841 <span class="entry_type_name">int32</span>
18843 <span class="entry_type_visibility"> [hidden as reprocessFormatsMap]</span>
18850 </td> <!-- entry_type -->
18852 <td class="entry_description">
18853 <p>The mapping of image formats that are supported by this
18854 camera device for input streams,<wbr/> to their corresponding output formats.<wbr/></p>
18857 <td class="entry_units">
18860 <td class="entry_range">
18863 <td class="entry_hal_version">
18867 <td class="entry_tags">
18868 <ul class="entry_tags">
18869 <li><a href="#tag_REPROC">REPROC</a></li>
18874 <tr class="entries_header">
18875 <th class="th_details" colspan="6">Details</th>
18877 <tr class="entry_cont">
18878 <td class="entry_details" colspan="6">
18879 <p>All camera devices with at least 1
18880 <a href="#static_android.request.maxNumInputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Input<wbr/>Streams</a> will have at least one
18881 available input format.<wbr/></p>
18882 <p>The camera device will support the following map of formats,<wbr/>
18883 if its dependent capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>) is supported:</p>
18887 <th align="left">Input Format</th>
18888 <th align="left">Output Format</th>
18889 <th align="left">Capability</th>
18894 <td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td>
18895 <td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
18896 <td align="left">PRIVATE_<wbr/>REPROCESSING</td>
18899 <td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td>
18900 <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>
18901 <td align="left">PRIVATE_<wbr/>REPROCESSING</td>
18904 <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>
18905 <td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
18906 <td align="left">YUV_<wbr/>REPROCESSING</td>
18909 <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>
18910 <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>
18911 <td align="left">YUV_<wbr/>REPROCESSING</td>
18915 <p>PRIVATE refers to a device-internal format that is not directly application-visible.<wbr/> A
18916 PRIVATE input surface can be acquired by <a href="https://developer.android.com/reference/android/media/ImageReader.html#newInstance">ImageReader#newInstance</a>
18917 with <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> as the format.<wbr/></p>
18918 <p>For a PRIVATE_<wbr/>REPROCESSING-capable camera device,<wbr/> using the PRIVATE format as either input
18919 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>
18920 <p>Attempting to configure an input stream with output streams not
18921 listed as available in this map is not valid.<wbr/></p>
18925 <tr class="entries_header">
18926 <th class="th_details" colspan="6">HAL Implementation Details</th>
18928 <tr class="entry_cont">
18929 <td class="entry_details" colspan="6">
18930 <p>For the formats,<wbr/> see <code>system/<wbr/>core/<wbr/>include/<wbr/>system/<wbr/>graphics.<wbr/>h</code> for a definition
18931 of the image format enumerations.<wbr/> The PRIVATE format refers to the
18932 HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>IMPLEMENTATION_<wbr/>DEFINED format.<wbr/> The HAL could determine
18933 the actual format by using the gralloc usage flags.<wbr/>
18934 For ZSL use case in particular,<wbr/> the HAL could choose appropriate format (partially
18935 processed YUV or RAW based format) by checking the format and GRALLOC_<wbr/>USAGE_<wbr/>HW_<wbr/>CAMERA_<wbr/>ZSL.<wbr/>
18936 See camera3.<wbr/>h for more details.<wbr/></p>
18937 <p>This value is encoded as a variable-size array-of-arrays.<wbr/>
18938 The inner array always contains <code>[format,<wbr/> length,<wbr/> ...<wbr/>]</code> where
18939 <code>...<wbr/></code> has <code>length</code> elements.<wbr/> An inner array is followed by another
18940 inner array if the total metadata entry size hasn't yet been exceeded.<wbr/></p>
18941 <p>A code sample to read/<wbr/>write this encoding (with a device that
18942 supports reprocessing IMPLEMENTATION_<wbr/>DEFINED to YUV_<wbr/>420_<wbr/>888,<wbr/> and JPEG,<wbr/>
18943 and reprocessing YUV_<wbr/>420_<wbr/>888 to YUV_<wbr/>420_<wbr/>888 and JPEG):</p>
18944 <pre><code>//<wbr/> reading
18945 int32_<wbr/>t* contents = &entry.<wbr/>i32[0];
18946 for (size_<wbr/>t i = 0; i < entry.<wbr/>count; ) {
18947 int32_<wbr/>t format = contents[i++];
18948 int32_<wbr/>t length = contents[i++];
18949 int32_<wbr/>t output_<wbr/>formats[length];
18950 memcpy(&output_<wbr/>formats[0],<wbr/> &contents[i],<wbr/>
18951 length * sizeof(int32_<wbr/>t));
18955 //<wbr/> writing (static example,<wbr/> PRIVATE_<wbr/>REPROCESSING + YUV_<wbr/>REPROCESSING)
18956 int32_<wbr/>t[] contents = {
18957 IMPLEMENTATION_<wbr/>DEFINED,<wbr/> 2,<wbr/> YUV_<wbr/>420_<wbr/>888,<wbr/> BLOB,<wbr/>
18958 YUV_<wbr/>420_<wbr/>888,<wbr/> 2,<wbr/> YUV_<wbr/>420_<wbr/>888,<wbr/> BLOB,<wbr/>
18960 update_<wbr/>camera_<wbr/>metadata_<wbr/>entry(metadata,<wbr/> index,<wbr/> &contents[0],<wbr/>
18961 sizeof(contents)/<wbr/>sizeof(contents[0]),<wbr/> &updated_<wbr/>entry);
18963 <p>If the HAL claims to support any of the capabilities listed in the
18964 above details,<wbr/> then it must also support all the input-output
18965 combinations listed for that capability.<wbr/> It can optionally support
18966 additional formats if it so chooses.<wbr/></p>
18970 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18971 <!-- end of entry -->
18974 <tr class="entry" id="static_android.scaler.availableStreamConfigurations">
18975 <td class="entry_name
18977 android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations
18979 <td class="entry_type">
18980 <span class="entry_type_name entry_type_name_enum">int32</span>
18981 <span class="entry_type_container">x</span>
18983 <span class="entry_type_array">
18986 <span class="entry_type_visibility"> [ndk_public as streamConfiguration]</span>
18989 <span class="entry_type_hwlevel">[legacy] </span>
18993 <ul class="entry_type_enum">
18995 <span class="entry_type_enum_name">OUTPUT (v3.2)</span>
18998 <span class="entry_type_enum_name">INPUT (v3.2)</span>
19002 </td> <!-- entry_type -->
19004 <td class="entry_description">
19005 <p>The available stream configurations that this
19006 camera device supports
19007 (i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p>
19010 <td class="entry_units">
19013 <td class="entry_range">
19016 <td class="entry_hal_version">
19020 <td class="entry_tags">
19024 <tr class="entries_header">
19025 <th class="th_details" colspan="6">Details</th>
19027 <tr class="entry_cont">
19028 <td class="entry_details" colspan="6">
19029 <p>The configurations are listed as <code>(format,<wbr/> width,<wbr/> height,<wbr/> input?)</code>
19031 <p>For a given use case,<wbr/> the actual maximum supported resolution
19032 may be lower than what is listed here,<wbr/> depending on the destination
19033 Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/>
19034 the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p)
19035 smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448)
19036 can provide.<wbr/></p>
19037 <p>Please reference the documentation for the image data destination to
19038 check if it limits the maximum size for image data.<wbr/></p>
19039 <p>Not all output formats may be supported in a configuration with
19040 an input stream of a particular format.<wbr/> For more details,<wbr/> see
19041 <a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a>.<wbr/></p>
19042 <p>The following table describes the minimum required output stream
19043 configurations based on the hardware level
19044 (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>):</p>
19048 <th align="center">Format</th>
19049 <th align="center">Size</th>
19050 <th align="center">Hardware Level</th>
19051 <th align="center">Notes</th>
19056 <td align="center">JPEG</td>
19057 <td align="center"><a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></td>
19058 <td align="center">Any</td>
19059 <td align="center"></td>
19062 <td align="center">JPEG</td>
19063 <td align="center">1920x1080 (1080p)</td>
19064 <td align="center">Any</td>
19065 <td align="center">if 1080p <= activeArraySize</td>
19068 <td align="center">JPEG</td>
19069 <td align="center">1280x720 (720)</td>
19070 <td align="center">Any</td>
19071 <td align="center">if 720p <= activeArraySize</td>
19074 <td align="center">JPEG</td>
19075 <td align="center">640x480 (480p)</td>
19076 <td align="center">Any</td>
19077 <td align="center">if 480p <= activeArraySize</td>
19080 <td align="center">JPEG</td>
19081 <td align="center">320x240 (240p)</td>
19082 <td align="center">Any</td>
19083 <td align="center">if 240p <= activeArraySize</td>
19086 <td align="center">YUV_<wbr/>420_<wbr/>888</td>
19087 <td align="center">all output sizes available for JPEG</td>
19088 <td align="center">FULL</td>
19089 <td align="center"></td>
19092 <td align="center">YUV_<wbr/>420_<wbr/>888</td>
19093 <td align="center">all output sizes available for JPEG,<wbr/> up to the maximum video size</td>
19094 <td align="center">LIMITED</td>
19095 <td align="center"></td>
19098 <td align="center">IMPLEMENTATION_<wbr/>DEFINED</td>
19099 <td align="center">same as YUV_<wbr/>420_<wbr/>888</td>
19100 <td align="center">Any</td>
19101 <td align="center"></td>
19105 <p>Refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> for additional
19106 mandatory stream configurations on a per-capability basis.<wbr/></p>
19110 <tr class="entries_header">
19111 <th class="th_details" colspan="6">HAL Implementation Details</th>
19113 <tr class="entry_cont">
19114 <td class="entry_details" colspan="6">
19115 <p>It is recommended (but not mandatory) to also include half/<wbr/>quarter
19116 of sensor maximum resolution for JPEG formats (regardless of hardware
19118 <p>(The following is a rewording of the above required table):</p>
19119 <p>For JPEG format,<wbr/> the sizes may be restricted by below conditions:</p>
19121 <li>The HAL may choose the aspect ratio of each Jpeg size to be one of well known ones
19122 (e.<wbr/>g.<wbr/> 4:3,<wbr/> 16:9,<wbr/> 3:2 etc.<wbr/>).<wbr/> If the sensor maximum resolution
19123 (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/>
19124 it does not have to be included in the supported JPEG sizes.<wbr/></li>
19125 <li>Some hardware JPEG encoders may have pixel boundary alignment requirements,<wbr/> such as
19126 the dimensions being a multiple of 16.<wbr/></li>
19128 <p>Therefore,<wbr/> the maximum JPEG size may be smaller than sensor maximum resolution.<wbr/>
19129 However,<wbr/> the largest JPEG size must be as close as possible to the sensor maximum
19130 resolution given above constraints.<wbr/> It is required that after aspect ratio adjustments,<wbr/>
19131 additional size reduction due to other issues must be less than 3% in area.<wbr/> For example,<wbr/>
19132 if the sensor maximum resolution is 3280x2464,<wbr/> if the maximum JPEG size has aspect
19133 ratio 4:3,<wbr/> the JPEG encoder alignment requirement is 16,<wbr/> the maximum JPEG size will be
19134 3264x2448.<wbr/></p>
19135 <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/>
19136 the HAL must include all YUV_<wbr/>420_<wbr/>888 sizes that have JPEG sizes listed
19137 here as output streams.<wbr/></p>
19138 <p>It must also include each below resolution if it is smaller than or
19139 equal to the sensor maximum resolution (for both YUV_<wbr/>420_<wbr/>888 and JPEG
19140 formats),<wbr/> as output streams:</p>
19142 <li>240p (320 x 240)</li>
19143 <li>480p (640 x 480)</li>
19144 <li>720p (1280 x 720)</li>
19145 <li>1080p (1920 x 1080)</li>
19147 <p>For LIMITED capability devices
19148 (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == LIMITED</code>),<wbr/>
19149 the HAL only has to list up to the maximum video size
19150 supported by the device.<wbr/></p>
19151 <p>Regardless of hardware level,<wbr/> every output resolution available for
19152 YUV_<wbr/>420_<wbr/>888 must also be available for IMPLEMENTATION_<wbr/>DEFINED.<wbr/></p>
19153 <p>This supercedes the following fields,<wbr/> which are now deprecated:</p>
19155 <li>availableFormats</li>
19156 <li>available[Processed,<wbr/>Raw,<wbr/>Jpeg]Sizes</li>
19161 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19162 <!-- end of entry -->
19165 <tr class="entry" id="static_android.scaler.availableMinFrameDurations">
19166 <td class="entry_name
19168 android.<wbr/>scaler.<wbr/>available<wbr/>Min<wbr/>Frame<wbr/>Durations
19170 <td class="entry_type">
19171 <span class="entry_type_name">int64</span>
19172 <span class="entry_type_container">x</span>
19174 <span class="entry_type_array">
19177 <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
19180 <span class="entry_type_hwlevel">[legacy] </span>
19185 </td> <!-- entry_type -->
19187 <td class="entry_description">
19188 <p>This lists the minimum frame duration for each
19189 format/<wbr/>size combination.<wbr/></p>
19192 <td class="entry_units">
19193 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
19196 <td class="entry_range">
19199 <td class="entry_hal_version">
19203 <td class="entry_tags">
19204 <ul class="entry_tags">
19205 <li><a href="#tag_V1">V1</a></li>
19210 <tr class="entries_header">
19211 <th class="th_details" colspan="6">Details</th>
19213 <tr class="entry_cont">
19214 <td class="entry_details" colspan="6">
19215 <p>This should correspond to the frame duration when only that
19216 stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode)
19217 set to either OFF or FAST.<wbr/></p>
19218 <p>When multiple streams are used in a request,<wbr/> the minimum frame
19219 duration will be max(individual stream min durations).<wbr/></p>
19220 <p>The minimum frame duration of a stream (of a particular format,<wbr/> size)
19221 is the same regardless of whether the stream is input or output.<wbr/></p>
19222 <p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> and
19223 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for more details about
19224 calculating the max frame rate.<wbr/></p>
19229 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19230 <!-- end of entry -->
19233 <tr class="entry" id="static_android.scaler.availableStallDurations">
19234 <td class="entry_name
19236 android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations
19238 <td class="entry_type">
19239 <span class="entry_type_name">int64</span>
19240 <span class="entry_type_container">x</span>
19242 <span class="entry_type_array">
19245 <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
19248 <span class="entry_type_hwlevel">[legacy] </span>
19253 </td> <!-- entry_type -->
19255 <td class="entry_description">
19256 <p>This lists the maximum stall duration for each
19257 output format/<wbr/>size combination.<wbr/></p>
19260 <td class="entry_units">
19261 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
19264 <td class="entry_range">
19267 <td class="entry_hal_version">
19271 <td class="entry_tags">
19272 <ul class="entry_tags">
19273 <li><a href="#tag_V1">V1</a></li>
19278 <tr class="entries_header">
19279 <th class="th_details" colspan="6">Details</th>
19281 <tr class="entry_cont">
19282 <td class="entry_details" colspan="6">
19283 <p>A stall duration is how much extra time would get added
19284 to the normal minimum frame duration for a repeating request
19285 that has streams with non-zero stall.<wbr/></p>
19286 <p>For example,<wbr/> consider JPEG captures which have the following
19287 characteristics:</p>
19289 <li>JPEG streams act like processed YUV streams in requests for which
19290 they are not included; in requests in which they are directly
19291 referenced,<wbr/> they act as JPEG streams.<wbr/> This is because supporting a
19292 JPEG stream requires the underlying YUV data to always be ready for
19293 use by a JPEG encoder,<wbr/> but the encoder will only be used (and impact
19294 frame duration) on requests that actually reference a JPEG stream.<wbr/></li>
19295 <li>The JPEG processor can run concurrently to the rest of the camera
19296 pipeline,<wbr/> but cannot process more than 1 capture at a time.<wbr/></li>
19298 <p>In other words,<wbr/> using a repeating YUV request would result
19299 in a steady frame rate (let's say it's 30 FPS).<wbr/> If a single
19300 JPEG request is submitted periodically,<wbr/> the frame rate will stay
19301 at 30 FPS (as long as we wait for the previous JPEG to return each
19302 time).<wbr/> If we try to submit a repeating YUV + JPEG request,<wbr/> then
19303 the frame rate will drop from 30 FPS.<wbr/></p>
19304 <p>In general,<wbr/> submitting a new request with a non-0 stall time
19305 stream will <em>not</em> cause a frame rate drop unless there are still
19306 outstanding buffers for that stream from previous requests.<wbr/></p>
19307 <p>Submitting a repeating request with streams (call this <code>S</code>)
19308 is the same as setting the minimum frame duration from
19309 the normal minimum frame duration corresponding to <code>S</code>,<wbr/> added with
19310 the maximum stall duration for <code>S</code>.<wbr/></p>
19311 <p>If interleaving requests with and without a stall duration,<wbr/>
19312 a request will stall by the maximum of the remaining times
19313 for each can-stall stream with outstanding buffers.<wbr/></p>
19314 <p>This means that a stalling request will not have an exposure start
19315 until the stall has completed.<wbr/></p>
19316 <p>This should correspond to the stall duration when only that stream is
19317 active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode) set to FAST
19318 or OFF.<wbr/> Setting any of the processing modes to HIGH_<wbr/>QUALITY
19319 effectively results in an indeterminate stall duration for all
19320 streams in a request (the regular stall calculation rules are
19321 ignored).<wbr/></p>
19322 <p>The following formats may always have a stall duration:</p>
19324 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></li>
19325 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_SENSOR">ImageFormat#RAW_<wbr/>SENSOR</a></li>
19327 <p>The following formats will never have a stall duration:</p>
19329 <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>
19330 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW10">ImageFormat#RAW10</a></li>
19331 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW12">ImageFormat#RAW12</a></li>
19333 <p>All other formats may or may not have an allowed stall duration on
19334 a per-capability basis; refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>
19335 for more details.<wbr/></p>
19336 <p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> for more information about
19337 calculating the max frame rate (absent stalls).<wbr/></p>
19341 <tr class="entries_header">
19342 <th class="th_details" colspan="6">HAL Implementation Details</th>
19344 <tr class="entry_cont">
19345 <td class="entry_details" colspan="6">
19346 <p>If possible,<wbr/> it is recommended that all non-JPEG formats
19347 (such as RAW16) should not have a stall duration.<wbr/> RAW10,<wbr/> RAW12,<wbr/> RAW_<wbr/>OPAQUE
19348 and IMPLEMENTATION_<wbr/>DEFINED must not have stall durations.<wbr/></p>
19352 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19353 <!-- end of entry -->
19356 <tr class="entry" id="static_android.scaler.streamConfigurationMap">
19357 <td class="entry_name
19359 android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map
19361 <td class="entry_type">
19362 <span class="entry_type_name">int32</span>
19364 <span class="entry_type_visibility"> [java_public as streamConfigurationMap]</span>
19366 <span class="entry_type_synthetic">[synthetic] </span>
19368 <span class="entry_type_hwlevel">[legacy] </span>
19373 </td> <!-- entry_type -->
19375 <td class="entry_description">
19376 <p>The available stream configurations that this
19377 camera device supports; also includes the minimum frame durations
19378 and the stall durations for each format/<wbr/>size combination.<wbr/></p>
19381 <td class="entry_units">
19384 <td class="entry_range">
19387 <td class="entry_hal_version">
19391 <td class="entry_tags">
19395 <tr class="entries_header">
19396 <th class="th_details" colspan="6">Details</th>
19398 <tr class="entry_cont">
19399 <td class="entry_details" colspan="6">
19400 <p>All camera devices will support sensor maximum resolution (defined by
19401 <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>
19402 <p>For a given use case,<wbr/> the actual maximum supported resolution
19403 may be lower than what is listed here,<wbr/> depending on the destination
19404 Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/>
19405 the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p)
19406 smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448)
19407 can provide.<wbr/></p>
19408 <p>Please reference the documentation for the image data destination to
19409 check if it limits the maximum size for image data.<wbr/></p>
19410 <p>The following table describes the minimum required output stream
19411 configurations based on the hardware level
19412 (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>):</p>
19416 <th align="center">Format</th>
19417 <th align="center">Size</th>
19418 <th align="center">Hardware Level</th>
19419 <th align="center">Notes</th>
19424 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
19425 <td align="center"><a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> (*1)</td>
19426 <td align="center">Any</td>
19427 <td align="center"></td>
19430 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
19431 <td align="center">1920x1080 (1080p)</td>
19432 <td align="center">Any</td>
19433 <td align="center">if 1080p <= activeArraySize</td>
19436 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
19437 <td align="center">1280x720 (720p)</td>
19438 <td align="center">Any</td>
19439 <td align="center">if 720p <= activeArraySize</td>
19442 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
19443 <td align="center">640x480 (480p)</td>
19444 <td align="center">Any</td>
19445 <td align="center">if 480p <= activeArraySize</td>
19448 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
19449 <td align="center">320x240 (240p)</td>
19450 <td align="center">Any</td>
19451 <td align="center">if 240p <= activeArraySize</td>
19454 <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>
19455 <td align="center">all output sizes available for JPEG</td>
19456 <td align="center">FULL</td>
19457 <td align="center"></td>
19460 <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>
19461 <td align="center">all output sizes available for JPEG,<wbr/> up to the maximum video size</td>
19462 <td align="center">LIMITED</td>
19463 <td align="center"></td>
19466 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td>
19467 <td align="center">same as YUV_<wbr/>420_<wbr/>888</td>
19468 <td align="center">Any</td>
19469 <td align="center"></td>
19473 <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
19474 stream configurations on a per-capability basis.<wbr/></p>
19475 <p>*1: For JPEG format,<wbr/> the sizes may be restricted by below conditions:</p>
19477 <li>The HAL may choose the aspect ratio of each Jpeg size to be one of well known ones
19478 (e.<wbr/>g.<wbr/> 4:3,<wbr/> 16:9,<wbr/> 3:2 etc.<wbr/>).<wbr/> If the sensor maximum resolution
19479 (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/>
19480 it does not have to be included in the supported JPEG sizes.<wbr/></li>
19481 <li>Some hardware JPEG encoders may have pixel boundary alignment requirements,<wbr/> such as
19482 the dimensions being a multiple of 16.<wbr/>
19483 Therefore,<wbr/> the maximum JPEG size may be smaller than sensor maximum resolution.<wbr/>
19484 However,<wbr/> the largest JPEG size will be as close as possible to the sensor maximum
19485 resolution given above constraints.<wbr/> It is required that after aspect ratio adjustments,<wbr/>
19486 additional size reduction due to other issues must be less than 3% in area.<wbr/> For example,<wbr/>
19487 if the sensor maximum resolution is 3280x2464,<wbr/> if the maximum JPEG size has aspect
19488 ratio 4:3,<wbr/> and the JPEG encoder alignment requirement is 16,<wbr/> the maximum JPEG size will be
19489 3264x2448.<wbr/></li>
19494 <tr class="entries_header">
19495 <th class="th_details" colspan="6">HAL Implementation Details</th>
19497 <tr class="entry_cont">
19498 <td class="entry_details" colspan="6">
19499 <p>Do not set this property directly
19500 (it is synthetic and will not be available at the HAL layer);
19501 set the <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> instead.<wbr/></p>
19502 <p>Not all output formats may be supported in a configuration with
19503 an input stream of a particular format.<wbr/> For more details,<wbr/> see
19504 <a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a>.<wbr/></p>
19505 <p>It is recommended (but not mandatory) to also include half/<wbr/>quarter
19506 of sensor maximum resolution for JPEG formats (regardless of hardware
19508 <p>(The following is a rewording of the above required table):</p>
19509 <p>The HAL must include sensor maximum resolution (defined by
19510 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>).<wbr/></p>
19511 <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/>
19512 the HAL must include all YUV_<wbr/>420_<wbr/>888 sizes that have JPEG sizes listed
19513 here as output streams.<wbr/></p>
19514 <p>It must also include each below resolution if it is smaller than or
19515 equal to the sensor maximum resolution (for both YUV_<wbr/>420_<wbr/>888 and JPEG
19516 formats),<wbr/> as output streams:</p>
19518 <li>240p (320 x 240)</li>
19519 <li>480p (640 x 480)</li>
19520 <li>720p (1280 x 720)</li>
19521 <li>1080p (1920 x 1080)</li>
19523 <p>For LIMITED capability devices
19524 (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == LIMITED</code>),<wbr/>
19525 the HAL only has to list up to the maximum video size
19526 supported by the device.<wbr/></p>
19527 <p>Regardless of hardware level,<wbr/> every output resolution available for
19528 YUV_<wbr/>420_<wbr/>888 must also be available for IMPLEMENTATION_<wbr/>DEFINED.<wbr/></p>
19529 <p>This supercedes the following fields,<wbr/> which are now deprecated:</p>
19531 <li>availableFormats</li>
19532 <li>available[Processed,<wbr/>Raw,<wbr/>Jpeg]Sizes</li>
19537 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19538 <!-- end of entry -->
19541 <tr class="entry" id="static_android.scaler.croppingType">
19542 <td class="entry_name
19544 android.<wbr/>scaler.<wbr/>cropping<wbr/>Type
19546 <td class="entry_type">
19547 <span class="entry_type_name entry_type_name_enum">byte</span>
19549 <span class="entry_type_visibility"> [public]</span>
19552 <span class="entry_type_hwlevel">[legacy] </span>
19556 <ul class="entry_type_enum">
19558 <span class="entry_type_enum_name">CENTER_ONLY (v3.2)</span>
19559 <span class="entry_type_enum_notes"><p>The camera device only supports centered crop regions.<wbr/></p></span>
19562 <span class="entry_type_enum_name">FREEFORM (v3.2)</span>
19563 <span class="entry_type_enum_notes"><p>The camera device supports arbitrarily chosen crop regions.<wbr/></p></span>
19567 </td> <!-- entry_type -->
19569 <td class="entry_description">
19570 <p>The crop type that this camera device supports.<wbr/></p>
19573 <td class="entry_units">
19576 <td class="entry_range">
19579 <td class="entry_hal_version">
19583 <td class="entry_tags">
19587 <tr class="entries_header">
19588 <th class="th_details" colspan="6">Details</th>
19590 <tr class="entry_cont">
19591 <td class="entry_details" colspan="6">
19592 <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
19593 device that only supports CENTER_<wbr/>ONLY cropping,<wbr/> the camera device will move the
19594 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>)
19595 and keep the crop region width and height unchanged.<wbr/> The camera device will return the
19596 final used crop region in metadata result <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></p>
19597 <p>Camera devices that support FREEFORM cropping will support any crop region that
19598 is inside of the active array.<wbr/> The camera device will apply the same crop region and
19599 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>
19600 <p>LEGACY capability devices will only support CENTER_<wbr/>ONLY cropping.<wbr/></p>
19605 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19606 <!-- end of entry -->
19610 <!-- end of kind -->
19612 <tr><td colspan="7" class="kind">dynamic</td></tr>
19614 <thead class="entries_header">
19616 <th class="th_name">Property Name</th>
19617 <th class="th_type">Type</th>
19618 <th class="th_description">Description</th>
19619 <th class="th_units">Units</th>
19620 <th class="th_range">Range</th>
19621 <th class="th_hal_version">Initial HIDL HAL version</th>
19622 <th class="th_tags">Tags</th>
19637 <tr class="entry" id="dynamic_android.scaler.cropRegion">
19638 <td class="entry_name
19640 android.<wbr/>scaler.<wbr/>crop<wbr/>Region
19642 <td class="entry_type">
19643 <span class="entry_type_name">int32</span>
19644 <span class="entry_type_container">x</span>
19646 <span class="entry_type_array">
19649 <span class="entry_type_visibility"> [public as rectangle]</span>
19652 <span class="entry_type_hwlevel">[legacy] </span>
19657 </td> <!-- entry_type -->
19659 <td class="entry_description">
19660 <p>The desired region of the sensor to read out for this capture.<wbr/></p>
19663 <td class="entry_units">
19664 Pixel coordinates relative to
19665 android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
19668 <td class="entry_range">
19671 <td class="entry_hal_version">
19675 <td class="entry_tags">
19676 <ul class="entry_tags">
19677 <li><a href="#tag_BC">BC</a></li>
19682 <tr class="entries_header">
19683 <th class="th_details" colspan="6">Details</th>
19685 <tr class="entry_cont">
19686 <td class="entry_details" colspan="6">
19687 <p>This control can be used to implement digital zoom.<wbr/></p>
19688 <p>The crop region coordinate system is based off
19689 <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
19690 top-left corner of the sensor active array.<wbr/></p>
19691 <p>Output streams use this rectangle to produce their output,<wbr/>
19692 cropping to a smaller region if necessary to maintain the
19693 stream's aspect ratio,<wbr/> then scaling the sensor input to
19694 match the output's configured resolution.<wbr/></p>
19695 <p>The crop region is applied after the RAW to other color
19696 space (e.<wbr/>g.<wbr/> YUV) conversion.<wbr/> Since raw streams
19697 (e.<wbr/>g.<wbr/> RAW16) don't have the conversion stage,<wbr/> they are not
19698 croppable.<wbr/> The crop region will be ignored by raw streams.<wbr/></p>
19699 <p>For non-raw streams,<wbr/> any additional per-stream cropping will
19700 be done to maximize the final pixel area of the stream.<wbr/></p>
19701 <p>For example,<wbr/> if the crop region is set to a 4:3 aspect
19702 ratio,<wbr/> then 4:3 streams will use the exact crop
19703 region.<wbr/> 16:9 streams will further crop vertically
19704 (letterbox).<wbr/></p>
19705 <p>Conversely,<wbr/> if the crop region is set to a 16:9,<wbr/> then 4:3
19706 outputs will crop horizontally (pillarbox),<wbr/> and 16:9
19707 streams will match exactly.<wbr/> These additional crops will
19708 be centered within the crop region.<wbr/></p>
19709 <p>The width and height of the crop region cannot
19710 be set to be smaller than
19711 <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
19712 <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>
19713 <p>The camera device may adjust the crop region to account
19714 for rounding and other hardware requirements; the final
19715 crop region used will be included in the output capture
19720 <tr class="entries_header">
19721 <th class="th_details" colspan="6">HAL Implementation Details</th>
19723 <tr class="entry_cont">
19724 <td class="entry_details" colspan="6">
19725 <p>The output streams must maintain square pixels at all
19726 times,<wbr/> no matter what the relative aspect ratios of the
19727 crop region and the stream are.<wbr/> Negative values for
19728 corner are allowed for raw output if full pixel array is
19729 larger than active pixel array.<wbr/> Width and height may be
19730 rounded to nearest larger supportable width,<wbr/> especially
19731 for raw output,<wbr/> where only a few fixed scales may be
19732 possible.<wbr/></p>
19733 <p>For a set of output streams configured,<wbr/> if the sensor output is cropped to a smaller
19734 size than active array size,<wbr/> the HAL need follow below cropping rules:</p>
19737 <p>The HAL need handle the cropRegion as if the sensor crop size is the effective active
19738 array size.<wbr/>More specifically,<wbr/> the HAL must transform the request cropRegion from
19739 <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>
19741 <li>Translate the requested cropRegion w.<wbr/>r.<wbr/>t.,<wbr/> the left top corner of the sensor
19742 cropped pixel area by (tx,<wbr/> ty),<wbr/>
19743 where <code>tx = sensorCrop.<wbr/>top * (sensorCrop.<wbr/>height /<wbr/> activeArraySize.<wbr/>height)</code>
19744 and <code>tx = sensorCrop.<wbr/>left * (sensorCrop.<wbr/>width /<wbr/> activeArraySize.<wbr/>width)</code>.<wbr/> The
19745 (sensorCrop.<wbr/>top,<wbr/> sensorCrop.<wbr/>left) is the coordinate based off the
19746 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></li>
19747 <li>Scale the width and height of requested cropRegion with scaling factor of
19748 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
19749 respectively.<wbr/>
19750 Once this new cropRegion is calculated,<wbr/> the HAL must use this region to crop the image
19751 with regard to the sensor crop size (effective active array size).<wbr/> The HAL still need
19752 follow the general cropping rule for this new cropRegion and effective active
19753 array size.<wbr/></li>
19757 <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/>
19758 The HAL need convert the new cropRegion generated above w.<wbr/>r.<wbr/>t.,<wbr/> full active array size.<wbr/>
19759 The reported cropRegion may be slightly different with the requested cropRegion since
19760 the HAL may adjust the crop region to account for rounding,<wbr/> conversion error,<wbr/> or other
19761 hardware limitations.<wbr/></p>
19764 <p>HAL2.<wbr/>x uses only (x,<wbr/> y,<wbr/> width)</p>
19768 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19769 <!-- end of entry -->
19773 <!-- end of kind -->
19776 <!-- end of section -->
19777 <tr><td colspan="7" id="section_sensor" class="section">sensor</td></tr>
19780 <tr><td colspan="7" class="kind">controls</td></tr>
19782 <thead class="entries_header">
19784 <th class="th_name">Property Name</th>
19785 <th class="th_type">Type</th>
19786 <th class="th_description">Description</th>
19787 <th class="th_units">Units</th>
19788 <th class="th_range">Range</th>
19789 <th class="th_hal_version">Initial HIDL HAL version</th>
19790 <th class="th_tags">Tags</th>
19805 <tr class="entry" id="controls_android.sensor.exposureTime">
19806 <td class="entry_name
19808 android.<wbr/>sensor.<wbr/>exposure<wbr/>Time
19810 <td class="entry_type">
19811 <span class="entry_type_name">int64</span>
19813 <span class="entry_type_visibility"> [public]</span>
19816 <span class="entry_type_hwlevel">[full] </span>
19821 </td> <!-- entry_type -->
19823 <td class="entry_description">
19824 <p>Duration each pixel is exposed to
19828 <td class="entry_units">
19832 <td class="entry_range">
19833 <p><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></p>
19836 <td class="entry_hal_version">
19840 <td class="entry_tags">
19841 <ul class="entry_tags">
19842 <li><a href="#tag_V1">V1</a></li>
19847 <tr class="entries_header">
19848 <th class="th_details" colspan="6">Details</th>
19850 <tr class="entry_cont">
19851 <td class="entry_details" colspan="6">
19852 <p>If the sensor can't expose this exact duration,<wbr/> it will shorten the
19853 duration exposed to the nearest possible value (rather than expose longer).<wbr/>
19854 The final exposure time used will be available in the output capture result.<wbr/></p>
19855 <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
19856 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
19861 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19862 <!-- end of entry -->
19865 <tr class="entry" id="controls_android.sensor.frameDuration">
19866 <td class="entry_name
19868 android.<wbr/>sensor.<wbr/>frame<wbr/>Duration
19870 <td class="entry_type">
19871 <span class="entry_type_name">int64</span>
19873 <span class="entry_type_visibility"> [public]</span>
19876 <span class="entry_type_hwlevel">[full] </span>
19881 </td> <!-- entry_type -->
19883 <td class="entry_description">
19884 <p>Duration from start of frame exposure to
19885 start of next frame exposure.<wbr/></p>
19888 <td class="entry_units">
19892 <td class="entry_range">
19893 <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/>
19894 The duration is capped to <code>max(duration,<wbr/> exposureTime + overhead)</code>.<wbr/></p>
19897 <td class="entry_hal_version">
19901 <td class="entry_tags">
19902 <ul class="entry_tags">
19903 <li><a href="#tag_V1">V1</a></li>
19908 <tr class="entries_header">
19909 <th class="th_details" colspan="6">Details</th>
19911 <tr class="entry_cont">
19912 <td class="entry_details" colspan="6">
19913 <p>The maximum frame rate that can be supported by a camera subsystem is
19914 a function of many factors:</p>
19916 <li>Requested resolutions of output image streams</li>
19917 <li>Availability of binning /<wbr/> skipping modes on the imager</li>
19918 <li>The bandwidth of the imager interface</li>
19919 <li>The bandwidth of the various ISP processing blocks</li>
19921 <p>Since these factors can vary greatly between different ISPs and
19922 sensors,<wbr/> the camera abstraction tries to represent the bandwidth
19923 restrictions with as simple a model as possible.<wbr/></p>
19924 <p>The model presented has the following characteristics:</p>
19926 <li>The image sensor is always configured to output the smallest
19927 resolution possible given the application's requested output stream
19928 sizes.<wbr/> The smallest resolution is defined as being at least as large
19929 as the largest requested output stream size; the camera pipeline must
19930 never digitally upsample sensor data when the crop region covers the
19931 whole sensor.<wbr/> In general,<wbr/> this means that if only small output stream
19932 resolutions are configured,<wbr/> the sensor can provide a higher frame
19934 <li>Since any request may use any or all the currently configured
19935 output streams,<wbr/> the sensor and ISP must be configured to support
19936 scaling a single capture to all the streams at the same time.<wbr/> This
19937 means the camera pipeline must be ready to produce the largest
19938 requested output size without any delay.<wbr/> Therefore,<wbr/> the overall
19939 frame rate of a given configured stream set is governed only by the
19940 largest requested stream resolution.<wbr/></li>
19941 <li>Using more than one output stream in a request does not affect the
19942 frame duration.<wbr/></li>
19943 <li>Certain format-streams may need to do additional background processing
19944 before data is consumed/<wbr/>produced by that stream.<wbr/> These processors
19945 can run concurrently to the rest of the camera pipeline,<wbr/> but
19946 cannot process more than 1 capture at a time.<wbr/></li>
19948 <p>The necessary information for the application,<wbr/> given the model above,<wbr/> is provided via
19949 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/>
19950 These are used to determine the maximum frame rate /<wbr/> minimum frame duration that is
19951 possible for a given stream configuration.<wbr/></p>
19952 <p>Specifically,<wbr/> the application can use the following rules to
19953 determine the minimum frame duration it can request from the camera
19956 <li>Let the set of currently configured input/<wbr/>output streams be called <code>S</code>.<wbr/></li>
19957 <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>
19958 (with its respective size/<wbr/>format).<wbr/> Let this set of frame durations be called <code>F</code>.<wbr/></li>
19959 <li>For any given request <code>R</code>,<wbr/> the minimum frame duration allowed for <code>R</code> is the maximum
19960 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>
19962 <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>
19963 using its respective size/<wbr/>format),<wbr/> then the frame duration in <code>F</code> determines the steady
19964 state frame rate that the application will get if it uses <code>R</code> as a repeating request.<wbr/> Let
19965 this special kind of request be called <code>Rsimple</code>.<wbr/></p>
19966 <p>A repeating request <code>Rsimple</code> can be <em>occasionally</em> interleaved by a single capture of a
19967 new request <code>Rstall</code> (which has at least one in-use stream with a non-0 stall time) and if
19968 <code>Rstall</code> has the same minimum frame duration this will not cause a frame rate loss if all
19969 buffers from the previous <code>Rstall</code> have already been delivered.<wbr/></p>
19970 <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>
19971 <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
19972 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
19976 <tr class="entries_header">
19977 <th class="th_details" colspan="6">HAL Implementation Details</th>
19979 <tr class="entry_cont">
19980 <td class="entry_details" colspan="6">
19981 <p>For more details about stalling,<wbr/> see
19982 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>.<wbr/></p>
19986 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19987 <!-- end of entry -->
19990 <tr class="entry" id="controls_android.sensor.sensitivity">
19991 <td class="entry_name
19993 android.<wbr/>sensor.<wbr/>sensitivity
19995 <td class="entry_type">
19996 <span class="entry_type_name">int32</span>
19998 <span class="entry_type_visibility"> [public]</span>
20001 <span class="entry_type_hwlevel">[full] </span>
20006 </td> <!-- entry_type -->
20008 <td class="entry_description">
20009 <p>The amount of gain applied to sensor data
20010 before processing.<wbr/></p>
20013 <td class="entry_units">
20014 ISO arithmetic units
20017 <td class="entry_range">
20018 <p><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></p>
20021 <td class="entry_hal_version">
20025 <td class="entry_tags">
20026 <ul class="entry_tags">
20027 <li><a href="#tag_V1">V1</a></li>
20032 <tr class="entries_header">
20033 <th class="th_details" colspan="6">Details</th>
20035 <tr class="entry_cont">
20036 <td class="entry_details" colspan="6">
20037 <p>The sensitivity is the standard ISO sensitivity value,<wbr/>
20038 as defined in ISO 12232:2006.<wbr/></p>
20039 <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
20040 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
20041 is guaranteed to use only analog amplification for applying the gain.<wbr/></p>
20042 <p>If the camera device cannot apply the exact sensitivity
20043 requested,<wbr/> it will reduce the gain to the nearest supported
20044 value.<wbr/> The final sensitivity used will be available in the
20045 output capture result.<wbr/></p>
20046 <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
20047 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
20051 <tr class="entries_header">
20052 <th class="th_details" colspan="6">HAL Implementation Details</th>
20054 <tr class="entry_cont">
20055 <td class="entry_details" colspan="6">
20056 <p>ISO 12232:2006 REI method is acceptable.<wbr/></p>
20060 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20061 <!-- end of entry -->
20064 <tr class="entry" id="controls_android.sensor.testPatternData">
20065 <td class="entry_name
20067 android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data
20069 <td class="entry_type">
20070 <span class="entry_type_name">int32</span>
20071 <span class="entry_type_container">x</span>
20073 <span class="entry_type_array">
20076 <span class="entry_type_visibility"> [public]</span>
20083 </td> <!-- entry_type -->
20085 <td class="entry_description">
20086 <p>A pixel <code>[R,<wbr/> G_<wbr/>even,<wbr/> G_<wbr/>odd,<wbr/> B]</code> that supplies the test pattern
20087 when <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a> is SOLID_<wbr/>COLOR.<wbr/></p>
20090 <td class="entry_units">
20093 <td class="entry_range">
20096 <td class="entry_hal_version">
20100 <td class="entry_tags">
20104 <tr class="entries_header">
20105 <th class="th_details" colspan="6">Details</th>
20107 <tr class="entry_cont">
20108 <td class="entry_details" colspan="6">
20109 <p>Each color channel is treated as an unsigned 32-bit integer.<wbr/>
20110 The camera device then uses the most significant X bits
20111 that correspond to how many bits are in its Bayer raw sensor
20113 <p>For example,<wbr/> a sensor with RAW10 Bayer output would use the
20114 10 most significant bits from each color channel.<wbr/></p>
20118 <tr class="entries_header">
20119 <th class="th_details" colspan="6">HAL Implementation Details</th>
20121 <tr class="entry_cont">
20122 <td class="entry_details" colspan="6">
20127 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20128 <!-- end of entry -->
20131 <tr class="entry" id="controls_android.sensor.testPatternMode">
20132 <td class="entry_name
20134 android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode
20136 <td class="entry_type">
20137 <span class="entry_type_name entry_type_name_enum">int32</span>
20139 <span class="entry_type_visibility"> [public]</span>
20145 <ul class="entry_type_enum">
20147 <span class="entry_type_enum_name">OFF (v3.2)</span>
20148 <span class="entry_type_enum_notes"><p>No test pattern mode is used,<wbr/> and the camera
20149 device returns captures from the image sensor.<wbr/></p>
20150 <p>This is the default if the key is not set.<wbr/></p></span>
20153 <span class="entry_type_enum_name">SOLID_COLOR (v3.2)</span>
20154 <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
20155 respective color channel provided in
20156 <a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a>.<wbr/></p>
20157 <p>For example:</p>
20158 <pre><code>android.<wbr/>testPatternData = [0,<wbr/> 0xFFFFFFFF,<wbr/> 0xFFFFFFFF,<wbr/> 0]
20160 <p>All green pixels are 100% green.<wbr/> All red/<wbr/>blue pixels are black.<wbr/></p>
20161 <pre><code>android.<wbr/>testPatternData = [0xFFFFFFFF,<wbr/> 0,<wbr/> 0xFFFFFFFF,<wbr/> 0]
20163 <p>All red pixels are 100% red.<wbr/> Only the odd green pixels
20164 are 100% green.<wbr/> All blue pixels are 100% black.<wbr/></p></span>
20167 <span class="entry_type_enum_name">COLOR_BARS (v3.2)</span>
20168 <span class="entry_type_enum_notes"><p>All pixel data is replaced with an 8-bar color pattern.<wbr/></p>
20169 <p>The vertical bars (left-to-right) are as follows:</p>
20171 <li>100% white</li>
20180 <p>In general the image would look like the following:</p>
20181 <pre><code>W Y C G M R B K
20186 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
20187 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
20188 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
20190 (B = Blue,<wbr/> K = Black)
20192 <p>Each bar should take up 1/<wbr/>8 of the sensor pixel array width.<wbr/>
20193 When this is not possible,<wbr/> the bar size should be rounded
20194 down to the nearest integer and the pattern can repeat
20195 on the right side.<wbr/></p>
20196 <p>Each bar's height must always take up the full sensor
20197 pixel array height.<wbr/></p>
20198 <p>Each pixel in this test pattern must be set to either
20199 0% intensity or 100% intensity.<wbr/></p></span>
20202 <span class="entry_type_enum_name">COLOR_BARS_FADE_TO_GRAY (v3.2)</span>
20203 <span class="entry_type_enum_notes"><p>The test pattern is similar to COLOR_<wbr/>BARS,<wbr/> except that
20204 each bar should start at its specified color at the top,<wbr/>
20205 and fade to gray at the bottom.<wbr/></p>
20206 <p>Furthermore each bar is further subdivided into a left and
20207 right half.<wbr/> The left half should have a smooth gradient,<wbr/>
20208 and the right half should have a quantized gradient.<wbr/></p>
20209 <p>In particular,<wbr/> the right half's should consist of blocks of the
20210 same color for 1/<wbr/>16th active sensor pixel array width.<wbr/></p>
20211 <p>The least significant bits in the quantized gradient should
20212 be copied from the most significant bits of the smooth gradient.<wbr/></p>
20213 <p>The height of each bar should always be a multiple of 128.<wbr/>
20214 When this is not the case,<wbr/> the pattern should repeat at the bottom
20215 of the image.<wbr/></p></span>
20218 <span class="entry_type_enum_name">PN9 (v3.2)</span>
20219 <span class="entry_type_enum_notes"><p>All pixel data is replaced by a pseudo-random sequence
20220 generated from a PN9 512-bit sequence (typically implemented
20221 in hardware with a linear feedback shift register).<wbr/></p>
20222 <p>The generator should be reset at the beginning of each frame,<wbr/>
20223 and thus each subsequent raw frame with this test pattern should
20224 be exactly the same as the last.<wbr/></p></span>
20227 <span class="entry_type_enum_name">CUSTOM1 (v3.2)</span>
20228 <span class="entry_type_enum_value">256</span>
20229 <span class="entry_type_enum_notes"><p>The first custom test pattern.<wbr/> All custom patterns that are
20230 available only on this camera device are at least this numeric
20232 <p>All of the custom test patterns will be static
20233 (that is the raw image must not vary from frame to frame).<wbr/></p></span>
20237 </td> <!-- entry_type -->
20239 <td class="entry_description">
20240 <p>When enabled,<wbr/> the sensor sends a test pattern instead of
20241 doing a real exposure from the camera.<wbr/></p>
20244 <td class="entry_units">
20247 <td class="entry_range">
20248 <p><a href="#static_android.sensor.availableTestPatternModes">android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes</a></p>
20251 <td class="entry_hal_version">
20255 <td class="entry_tags">
20259 <tr class="entries_header">
20260 <th class="th_details" colspan="6">Details</th>
20262 <tr class="entry_cont">
20263 <td class="entry_details" colspan="6">
20264 <p>When a test pattern is enabled,<wbr/> all manual sensor controls specified
20265 by android.<wbr/>sensor.<wbr/>* will be ignored.<wbr/> All other controls should
20266 work as normal.<wbr/></p>
20267 <p>For example,<wbr/> if manual flash is enabled,<wbr/> flash firing should still
20268 occur (and that the test pattern remain unmodified,<wbr/> since the flash
20269 would not actually affect it).<wbr/></p>
20270 <p>Defaults to OFF.<wbr/></p>
20274 <tr class="entries_header">
20275 <th class="th_details" colspan="6">HAL Implementation Details</th>
20277 <tr class="entry_cont">
20278 <td class="entry_details" colspan="6">
20279 <p>All test patterns are specified in the Bayer domain.<wbr/></p>
20280 <p>The HAL may choose to substitute test patterns from the sensor
20281 with test patterns from on-device memory.<wbr/> In that case,<wbr/> it should be
20282 indistinguishable to the ISP whether the data came from the
20283 sensor interconnect bus (such as CSI2) or memory.<wbr/></p>
20287 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20288 <!-- end of entry -->
20292 <!-- end of kind -->
20294 <tr><td colspan="7" class="kind">static</td></tr>
20296 <thead class="entries_header">
20298 <th class="th_name">Property Name</th>
20299 <th class="th_type">Type</th>
20300 <th class="th_description">Description</th>
20301 <th class="th_units">Units</th>
20302 <th class="th_range">Range</th>
20303 <th class="th_hal_version">Initial HIDL HAL version</th>
20304 <th class="th_tags">Tags</th>
20321 <tr class="entry" id="static_android.sensor.info.activeArraySize">
20322 <td class="entry_name
20324 android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
20326 <td class="entry_type">
20327 <span class="entry_type_name">int32</span>
20328 <span class="entry_type_container">x</span>
20330 <span class="entry_type_array">
20333 <span class="entry_type_visibility"> [public as rectangle]</span>
20336 <span class="entry_type_hwlevel">[legacy] </span>
20339 <div class="entry_type_notes">Four ints defining the active pixel rectangle</div>
20342 </td> <!-- entry_type -->
20344 <td class="entry_description">
20345 <p>The area of the image sensor which corresponds to active pixels after any geometric
20346 distortion correction has been applied.<wbr/></p>
20349 <td class="entry_units">
20350 Pixel coordinates on the image sensor
20353 <td class="entry_range">
20356 <td class="entry_hal_version">
20360 <td class="entry_tags">
20361 <ul class="entry_tags">
20362 <li><a href="#tag_RAW">RAW</a></li>
20367 <tr class="entries_header">
20368 <th class="th_details" colspan="6">Details</th>
20370 <tr class="entry_cont">
20371 <td class="entry_details" colspan="6">
20372 <p>This is the rectangle representing the size of the active region of the sensor (i.<wbr/>e.<wbr/>
20373 the region that actually receives light from the scene) after any geometric correction
20374 has been applied,<wbr/> and should be treated as the maximum size in pixels of any of the
20375 image output formats aside from the raw formats.<wbr/></p>
20376 <p>This rectangle is defined relative to the full pixel array; (0,<wbr/>0) is the top-left of
20377 the full pixel array,<wbr/> and the size of the full pixel array is given by
20378 <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
20379 <p>The coordinate system for most other keys that list pixel coordinates,<wbr/> including
20380 <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
20381 this field,<wbr/> with <code>(0,<wbr/> 0)</code> being the top-left of this rectangle.<wbr/></p>
20382 <p>The active array may be smaller than the full pixel array,<wbr/> since the full array may
20383 include black calibration pixels or other inactive regions,<wbr/> and geometric correction
20384 resulting in scaling or cropping may have been applied.<wbr/></p>
20388 <tr class="entries_header">
20389 <th class="th_details" colspan="6">HAL Implementation Details</th>
20391 <tr class="entry_cont">
20392 <td class="entry_details" colspan="6">
20393 <p>This array contains <code>(xmin,<wbr/> ymin,<wbr/> width,<wbr/> height)</code>.<wbr/> The <code>(xmin,<wbr/> ymin)</code> must be
20394 >= <code>(0,<wbr/>0)</code>.<wbr/>
20395 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>
20399 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20400 <!-- end of entry -->
20403 <tr class="entry" id="static_android.sensor.info.sensitivityRange">
20404 <td class="entry_name
20406 android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range
20408 <td class="entry_type">
20409 <span class="entry_type_name">int32</span>
20410 <span class="entry_type_container">x</span>
20412 <span class="entry_type_array">
20415 <span class="entry_type_visibility"> [public as rangeInt]</span>
20418 <span class="entry_type_hwlevel">[full] </span>
20421 <div class="entry_type_notes">Range of supported sensitivities</div>
20424 </td> <!-- entry_type -->
20426 <td class="entry_description">
20427 <p>Range of sensitivities for <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> supported by this
20428 camera device.<wbr/></p>
20431 <td class="entry_units">
20434 <td class="entry_range">
20435 <p>Min <= 100,<wbr/> Max >= 800</p>
20438 <td class="entry_hal_version">
20442 <td class="entry_tags">
20443 <ul class="entry_tags">
20444 <li><a href="#tag_BC">BC</a></li>
20445 <li><a href="#tag_V1">V1</a></li>
20450 <tr class="entries_header">
20451 <th class="th_details" colspan="6">Details</th>
20453 <tr class="entry_cont">
20454 <td class="entry_details" colspan="6">
20455 <p>The values are the standard ISO sensitivity values,<wbr/>
20456 as defined in ISO 12232:2006.<wbr/></p>
20461 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20462 <!-- end of entry -->
20465 <tr class="entry" id="static_android.sensor.info.colorFilterArrangement">
20466 <td class="entry_name
20468 android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement
20470 <td class="entry_type">
20471 <span class="entry_type_name entry_type_name_enum">byte</span>
20473 <span class="entry_type_visibility"> [public]</span>
20476 <span class="entry_type_hwlevel">[full] </span>
20480 <ul class="entry_type_enum">
20482 <span class="entry_type_enum_name">RGGB (v3.2)</span>
20485 <span class="entry_type_enum_name">GRBG (v3.2)</span>
20488 <span class="entry_type_enum_name">GBRG (v3.2)</span>
20491 <span class="entry_type_enum_name">BGGR (v3.2)</span>
20494 <span class="entry_type_enum_name">RGB (v3.2)</span>
20495 <span class="entry_type_enum_notes"><p>Sensor is not Bayer; output has 3 16-bit
20496 values for each pixel,<wbr/> instead of just 1 16-bit value
20497 per pixel.<wbr/></p></span>
20501 </td> <!-- entry_type -->
20503 <td class="entry_description">
20504 <p>The arrangement of color filters on sensor;
20505 represents the colors in the top-left 2x2 section of
20506 the sensor,<wbr/> in reading order.<wbr/></p>
20509 <td class="entry_units">
20512 <td class="entry_range">
20515 <td class="entry_hal_version">
20519 <td class="entry_tags">
20520 <ul class="entry_tags">
20521 <li><a href="#tag_RAW">RAW</a></li>
20528 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20529 <!-- end of entry -->
20532 <tr class="entry" id="static_android.sensor.info.exposureTimeRange">
20533 <td class="entry_name
20535 android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range
20537 <td class="entry_type">
20538 <span class="entry_type_name">int64</span>
20539 <span class="entry_type_container">x</span>
20541 <span class="entry_type_array">
20544 <span class="entry_type_visibility"> [public as rangeLong]</span>
20547 <span class="entry_type_hwlevel">[full] </span>
20550 <div class="entry_type_notes">nanoseconds</div>
20553 </td> <!-- entry_type -->
20555 <td class="entry_description">
20556 <p>The range of image exposure times for <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> supported
20557 by this camera device.<wbr/></p>
20560 <td class="entry_units">
20564 <td class="entry_range">
20565 <p>The minimum exposure time will be less than 100 us.<wbr/> For FULL
20566 capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/>
20567 the maximum exposure time will be greater than 100ms.<wbr/></p>
20570 <td class="entry_hal_version">
20574 <td class="entry_tags">
20575 <ul class="entry_tags">
20576 <li><a href="#tag_V1">V1</a></li>
20582 <tr class="entries_header">
20583 <th class="th_details" colspan="6">HAL Implementation Details</th>
20585 <tr class="entry_cont">
20586 <td class="entry_details" colspan="6">
20587 <p>For FULL capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/>
20588 The maximum of the range SHOULD be at least 1 second (1e9),<wbr/> MUST be at least
20593 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20594 <!-- end of entry -->
20597 <tr class="entry" id="static_android.sensor.info.maxFrameDuration">
20598 <td class="entry_name
20600 android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration
20602 <td class="entry_type">
20603 <span class="entry_type_name">int64</span>
20605 <span class="entry_type_visibility"> [public]</span>
20608 <span class="entry_type_hwlevel">[full] </span>
20613 </td> <!-- entry_type -->
20615 <td class="entry_description">
20616 <p>The maximum possible frame duration (minimum frame rate) for
20617 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> that is supported this camera device.<wbr/></p>
20620 <td class="entry_units">
20624 <td class="entry_range">
20625 <p>For FULL capability devices
20626 (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/> at least 100ms.<wbr/></p>
20629 <td class="entry_hal_version">
20633 <td class="entry_tags">
20634 <ul class="entry_tags">
20635 <li><a href="#tag_V1">V1</a></li>
20640 <tr class="entries_header">
20641 <th class="th_details" colspan="6">Details</th>
20643 <tr class="entry_cont">
20644 <td class="entry_details" colspan="6">
20645 <p>Attempting to use frame durations beyond the maximum will result in the frame
20646 duration being clipped to the maximum.<wbr/> See that control for a full definition of frame
20647 durations.<wbr/></p>
20648 <p>Refer to <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>
20649 for the minimum frame duration values.<wbr/></p>
20653 <tr class="entries_header">
20654 <th class="th_details" colspan="6">HAL Implementation Details</th>
20656 <tr class="entry_cont">
20657 <td class="entry_details" colspan="6">
20658 <p>For FULL capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/>
20659 The maximum of the range SHOULD be at least
20660 1 second (1e9),<wbr/> MUST be at least 100ms (100e6).<wbr/></p>
20661 <p><a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a> must be greater or
20662 equal to the <a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a> max
20663 value (since exposure time overrides frame duration).<wbr/></p>
20664 <p>Available minimum frame durations for JPEG must be no greater
20665 than that of the YUV_<wbr/>420_<wbr/>888/<wbr/>IMPLEMENTATION_<wbr/>DEFINED
20666 minimum frame durations (for that respective size).<wbr/></p>
20667 <p>Since JPEG processing is considered offline and can take longer than
20668 a single uncompressed capture,<wbr/> refer to
20669 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>
20670 for details about encoding this scenario.<wbr/></p>
20674 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20675 <!-- end of entry -->
20678 <tr class="entry" id="static_android.sensor.info.physicalSize">
20679 <td class="entry_name
20681 android.<wbr/>sensor.<wbr/>info.<wbr/>physical<wbr/>Size
20683 <td class="entry_type">
20684 <span class="entry_type_name">float</span>
20685 <span class="entry_type_container">x</span>
20687 <span class="entry_type_array">
20690 <span class="entry_type_visibility"> [public as sizeF]</span>
20693 <span class="entry_type_hwlevel">[legacy] </span>
20696 <div class="entry_type_notes">width x height</div>
20699 </td> <!-- entry_type -->
20701 <td class="entry_description">
20702 <p>The physical dimensions of the full pixel
20706 <td class="entry_units">
20710 <td class="entry_range">
20713 <td class="entry_hal_version">
20717 <td class="entry_tags">
20718 <ul class="entry_tags">
20719 <li><a href="#tag_V1">V1</a></li>
20720 <li><a href="#tag_BC">BC</a></li>
20725 <tr class="entries_header">
20726 <th class="th_details" colspan="6">Details</th>
20728 <tr class="entry_cont">
20729 <td class="entry_details" colspan="6">
20730 <p>This is the physical size of the sensor pixel
20731 array defined by <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
20735 <tr class="entries_header">
20736 <th class="th_details" colspan="6">HAL Implementation Details</th>
20738 <tr class="entry_cont">
20739 <td class="entry_details" colspan="6">
20740 <p>Needed for FOV calculation for old API</p>
20744 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20745 <!-- end of entry -->
20748 <tr class="entry" id="static_android.sensor.info.pixelArraySize">
20749 <td class="entry_name
20751 android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size
20753 <td class="entry_type">
20754 <span class="entry_type_name">int32</span>
20755 <span class="entry_type_container">x</span>
20757 <span class="entry_type_array">
20760 <span class="entry_type_visibility"> [public as size]</span>
20763 <span class="entry_type_hwlevel">[legacy] </span>
20768 </td> <!-- entry_type -->
20770 <td class="entry_description">
20771 <p>Dimensions of the full pixel array,<wbr/> possibly
20772 including black calibration pixels.<wbr/></p>
20775 <td class="entry_units">
20779 <td class="entry_range">
20782 <td class="entry_hal_version">
20786 <td class="entry_tags">
20787 <ul class="entry_tags">
20788 <li><a href="#tag_RAW">RAW</a></li>
20789 <li><a href="#tag_BC">BC</a></li>
20794 <tr class="entries_header">
20795 <th class="th_details" colspan="6">Details</th>
20797 <tr class="entry_cont">
20798 <td class="entry_details" colspan="6">
20799 <p>The pixel count of the full pixel array of the image sensor,<wbr/> which covers
20800 <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
20801 the raw buffers produced by this sensor.<wbr/></p>
20802 <p>If a camera device supports raw sensor formats,<wbr/> either this or
20803 <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
20804 output formats listed in <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html">StreamConfigurationMap</a>
20805 (this depends on whether or not the image sensor returns buffers containing pixels that
20806 are not part of the active array region for blacklevel calibration or other purposes).<wbr/></p>
20807 <p>Some parts of the full pixel array may not receive light from the scene,<wbr/>
20808 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
20809 defines the rectangle of active pixels that will be included in processed image
20815 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20816 <!-- end of entry -->
20819 <tr class="entry" id="static_android.sensor.info.whiteLevel">
20820 <td class="entry_name
20822 android.<wbr/>sensor.<wbr/>info.<wbr/>white<wbr/>Level
20824 <td class="entry_type">
20825 <span class="entry_type_name">int32</span>
20827 <span class="entry_type_visibility"> [public]</span>
20834 </td> <!-- entry_type -->
20836 <td class="entry_description">
20837 <p>Maximum raw value output by sensor.<wbr/></p>
20840 <td class="entry_units">
20843 <td class="entry_range">
20844 <p>> 255 (8-bit output)</p>
20847 <td class="entry_hal_version">
20851 <td class="entry_tags">
20852 <ul class="entry_tags">
20853 <li><a href="#tag_RAW">RAW</a></li>
20858 <tr class="entries_header">
20859 <th class="th_details" colspan="6">Details</th>
20861 <tr class="entry_cont">
20862 <td class="entry_details" colspan="6">
20863 <p>This specifies the fully-saturated encoding level for the raw
20864 sample values from the sensor.<wbr/> This is typically caused by the
20865 sensor becoming highly non-linear or clipping.<wbr/> The minimum for
20866 each channel is specified by the offset in the
20867 <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> key.<wbr/></p>
20868 <p>The white level is typically determined either by sensor bit depth
20869 (8-14 bits is expected),<wbr/> or by the point where the sensor response
20870 becomes too non-linear to be useful.<wbr/> The default value for this is
20871 maximum representable value for a 16-bit raw sample (2^16 - 1).<wbr/></p>
20872 <p>The white level values of captured images may vary for different
20873 capture settings (e.<wbr/>g.,<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>).<wbr/> This key
20874 represents a coarse approximation for such case.<wbr/> It is recommended
20875 to use <a href="#dynamic_android.sensor.dynamicWhiteLevel">android.<wbr/>sensor.<wbr/>dynamic<wbr/>White<wbr/>Level</a> for captures when supported
20876 by the camera device,<wbr/> which provides more accurate white level values.<wbr/></p>
20880 <tr class="entries_header">
20881 <th class="th_details" colspan="6">HAL Implementation Details</th>
20883 <tr class="entry_cont">
20884 <td class="entry_details" colspan="6">
20885 <p>The full bit depth of the sensor must be available in the raw data,<wbr/>
20886 so the value for linear sensors should not be significantly lower
20887 than maximum raw value supported,<wbr/> i.<wbr/>e.<wbr/> 2^(sensor bits per pixel).<wbr/></p>
20891 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20892 <!-- end of entry -->
20895 <tr class="entry" id="static_android.sensor.info.timestampSource">
20896 <td class="entry_name
20898 android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source
20900 <td class="entry_type">
20901 <span class="entry_type_name entry_type_name_enum">byte</span>
20903 <span class="entry_type_visibility"> [public]</span>
20906 <span class="entry_type_hwlevel">[legacy] </span>
20910 <ul class="entry_type_enum">
20912 <span class="entry_type_enum_name">UNKNOWN (v3.2)</span>
20913 <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/>
20914 but can not be compared to timestamps from other subsystems
20915 (e.<wbr/>g.<wbr/> accelerometer,<wbr/> gyro etc.<wbr/>),<wbr/> or other instances of the same or different
20916 camera devices in the same system.<wbr/> Timestamps between streams and results for
20917 a single camera instance are comparable,<wbr/> and the timestamps for all buffers
20918 and the result metadata generated by a single capture are identical.<wbr/></p></span>
20921 <span class="entry_type_enum_name">REALTIME (v3.2)</span>
20922 <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
20923 <a href="https://developer.android.com/reference/android/os/SystemClock.html#elapsedRealtimeNanos">SystemClock#elapsedRealtimeNanos</a>,<wbr/>
20924 and they can be compared to other timestamps using that base.<wbr/></p></span>
20928 </td> <!-- entry_type -->
20930 <td class="entry_description">
20931 <p>The time base source for sensor capture start timestamps.<wbr/></p>
20934 <td class="entry_units">
20937 <td class="entry_range">
20940 <td class="entry_hal_version">
20944 <td class="entry_tags">
20945 <ul class="entry_tags">
20946 <li><a href="#tag_V1">V1</a></li>
20951 <tr class="entries_header">
20952 <th class="th_details" colspan="6">Details</th>
20954 <tr class="entry_cont">
20955 <td class="entry_details" colspan="6">
20956 <p>The timestamps provided for captures are always in nanoseconds and monotonic,<wbr/> but
20957 may not based on a time source that can be compared to other system time sources.<wbr/></p>
20958 <p>This characteristic defines the source for the timestamps,<wbr/> and therefore whether they
20959 can be compared against other system time sources/<wbr/>timestamps.<wbr/></p>
20963 <tr class="entries_header">
20964 <th class="th_details" colspan="6">HAL Implementation Details</th>
20966 <tr class="entry_cont">
20967 <td class="entry_details" colspan="6">
20968 <p>For camera devices implement UNKNOWN,<wbr/> the camera framework expects that the timestamp
20969 source to be SYSTEM_<wbr/>TIME_<wbr/>MONOTONIC.<wbr/> For camera devices implement REALTIME,<wbr/> the camera
20970 framework expects that the timestamp source to be SYSTEM_<wbr/>TIME_<wbr/>BOOTTIME.<wbr/> See
20971 system/<wbr/>core/<wbr/>include/<wbr/>utils/<wbr/>Timers.<wbr/>h for the definition of SYSTEM_<wbr/>TIME_<wbr/>MONOTONIC and
20972 SYSTEM_<wbr/>TIME_<wbr/>BOOTTIME.<wbr/> Note that HAL must follow above expectation; otherwise video
20973 recording might suffer unexpected behavior.<wbr/></p>
20974 <p>Also,<wbr/> camera devices which implement REALTIME must pass the ITS sensor fusion test which
20975 tests the alignment between camera timestamps and gyro sensor timestamps.<wbr/></p>
20979 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20980 <!-- end of entry -->
20983 <tr class="entry" id="static_android.sensor.info.lensShadingApplied">
20984 <td class="entry_name
20986 android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied
20988 <td class="entry_type">
20989 <span class="entry_type_name entry_type_name_enum">byte</span>
20991 <span class="entry_type_visibility"> [public as boolean]</span>
20997 <ul class="entry_type_enum">
20999 <span class="entry_type_enum_name">FALSE (v3.2)</span>
21002 <span class="entry_type_enum_name">TRUE (v3.2)</span>
21006 </td> <!-- entry_type -->
21008 <td class="entry_description">
21009 <p>Whether the RAW images output from this camera device are subject to
21010 lens shading correction.<wbr/></p>
21013 <td class="entry_units">
21016 <td class="entry_range">
21019 <td class="entry_hal_version">
21023 <td class="entry_tags">
21027 <tr class="entries_header">
21028 <th class="th_details" colspan="6">Details</th>
21030 <tr class="entry_cont">
21031 <td class="entry_details" colspan="6">
21032 <p>If TRUE,<wbr/> all images produced by the camera device in the RAW image formats will
21033 have lens shading correction already applied to it.<wbr/> If FALSE,<wbr/> the images will
21034 not be adjusted for lens shading correction.<wbr/>
21035 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>
21036 <p>This key will be <code>null</code> for all devices do not report this information.<wbr/>
21037 Devices with RAW capability will always report this information in this key.<wbr/></p>
21042 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21043 <!-- end of entry -->
21046 <tr class="entry" id="static_android.sensor.info.preCorrectionActiveArraySize">
21047 <td class="entry_name
21049 android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size
21051 <td class="entry_type">
21052 <span class="entry_type_name">int32</span>
21053 <span class="entry_type_container">x</span>
21055 <span class="entry_type_array">
21058 <span class="entry_type_visibility"> [public as rectangle]</span>
21061 <span class="entry_type_hwlevel">[legacy] </span>
21064 <div class="entry_type_notes">Four ints defining the active pixel rectangle</div>
21067 </td> <!-- entry_type -->
21069 <td class="entry_description">
21070 <p>The area of the image sensor which corresponds to active pixels prior to the
21071 application of any geometric distortion correction.<wbr/></p>
21074 <td class="entry_units">
21075 Pixel coordinates on the image sensor
21078 <td class="entry_range">
21081 <td class="entry_hal_version">
21085 <td class="entry_tags">
21086 <ul class="entry_tags">
21087 <li><a href="#tag_RAW">RAW</a></li>
21092 <tr class="entries_header">
21093 <th class="th_details" colspan="6">Details</th>
21095 <tr class="entry_cont">
21096 <td class="entry_details" colspan="6">
21097 <p>This is the rectangle representing the size of the active region of the sensor (i.<wbr/>e.<wbr/>
21098 the region that actually receives light from the scene) before any geometric correction
21099 has been applied,<wbr/> and should be treated as the active region rectangle for any of the
21100 raw formats.<wbr/> All metadata associated with raw processing (e.<wbr/>g.<wbr/> the lens shading
21101 correction map,<wbr/> and radial distortion fields) treats the top,<wbr/> left of this rectangle as
21102 the origin,<wbr/> (0,<wbr/>0).<wbr/></p>
21103 <p>The size of this region determines the maximum field of view and the maximum number of
21104 pixels that an image from this sensor can contain,<wbr/> prior to the application of
21105 geometric distortion correction.<wbr/> The effective maximum pixel dimensions of a
21106 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>
21107 field,<wbr/> and the effective maximum field of view for a post-distortion-corrected image
21108 can be calculated by applying the geometric distortion correction fields to this
21109 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>
21110 <p>E.<wbr/>g.<wbr/> to calculate position of a pixel,<wbr/> (x,<wbr/>y),<wbr/> in a processed YUV output image with the
21111 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/>
21112 (x',<wbr/> y'),<wbr/> in the raw pixel array with dimensions give in
21113 <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>:</p>
21115 <li>Choose a pixel (x',<wbr/> y') within the active array region of the raw buffer given in
21116 <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
21117 to be outside of the FOV,<wbr/> and will not be shown in the processed output image.<wbr/></li>
21118 <li>Apply geometric distortion correction to get the post-distortion pixel coordinate,<wbr/>
21119 (x_<wbr/>i,<wbr/> y_<wbr/>i).<wbr/> When applying geometric correction metadata,<wbr/> note that metadata for raw
21120 buffers is defined relative to the top,<wbr/> left of the
21121 <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>
21122 <li>If the resulting corrected pixel coordinate is within the region given in
21123 <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
21124 processed output image buffer is <code>(x_<wbr/>i - activeArray.<wbr/>left,<wbr/> y_<wbr/>i - activeArray.<wbr/>top)</code>,<wbr/>
21125 when the top,<wbr/> left coordinate of that buffer is treated as (0,<wbr/> 0).<wbr/></li>
21127 <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>
21128 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/>
21129 <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
21130 correction doesn't change the pixel coordinate,<wbr/> the resulting pixel selected in
21131 pixel coordinates would be x,<wbr/>y = (25,<wbr/> 25) relative to the top,<wbr/>left of the raw buffer
21132 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)
21133 relative to the top,<wbr/>left of post-processed YUV output buffer with dimensions given in
21134 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
21135 <p>The currently supported fields that correct for geometric distortion are:</p>
21137 <li><a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a>.<wbr/></li>
21139 <p>If all of the geometric distortion fields are no-ops,<wbr/> this rectangle will be the same
21140 as the post-distortion-corrected rectangle given in
21141 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
21142 <p>This rectangle is defined relative to the full pixel array; (0,<wbr/>0) is the top-left of
21143 the full pixel array,<wbr/> and the size of the full pixel array is given by
21144 <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
21145 <p>The pre-correction active array may be smaller than the full pixel array,<wbr/> since the
21146 full array may include black calibration pixels or other inactive regions.<wbr/></p>
21150 <tr class="entries_header">
21151 <th class="th_details" colspan="6">HAL Implementation Details</th>
21153 <tr class="entry_cont">
21154 <td class="entry_details" colspan="6">
21155 <p>This array contains <code>(xmin,<wbr/> ymin,<wbr/> width,<wbr/> height)</code>.<wbr/> The <code>(xmin,<wbr/> ymin)</code> must be
21156 >= <code>(0,<wbr/>0)</code>.<wbr/>
21157 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>
21158 <p>If omitted by the HAL implementation,<wbr/> the camera framework will assume that this is
21159 the same as the post-correction active array region given in
21160 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
21164 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21165 <!-- end of entry -->
21171 <tr class="entry" id="static_android.sensor.referenceIlluminant1">
21172 <td class="entry_name
21174 android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1
21176 <td class="entry_type">
21177 <span class="entry_type_name entry_type_name_enum">byte</span>
21179 <span class="entry_type_visibility"> [public]</span>
21185 <ul class="entry_type_enum">
21187 <span class="entry_type_enum_name">DAYLIGHT (v3.2)</span>
21188 <span class="entry_type_enum_value">1</span>
21191 <span class="entry_type_enum_name">FLUORESCENT (v3.2)</span>
21192 <span class="entry_type_enum_value">2</span>
21195 <span class="entry_type_enum_name">TUNGSTEN (v3.2)</span>
21196 <span class="entry_type_enum_value">3</span>
21197 <span class="entry_type_enum_notes"><p>Incandescent light</p></span>
21200 <span class="entry_type_enum_name">FLASH (v3.2)</span>
21201 <span class="entry_type_enum_value">4</span>
21204 <span class="entry_type_enum_name">FINE_WEATHER (v3.2)</span>
21205 <span class="entry_type_enum_value">9</span>
21208 <span class="entry_type_enum_name">CLOUDY_WEATHER (v3.2)</span>
21209 <span class="entry_type_enum_value">10</span>
21212 <span class="entry_type_enum_name">SHADE (v3.2)</span>
21213 <span class="entry_type_enum_value">11</span>
21216 <span class="entry_type_enum_name">DAYLIGHT_FLUORESCENT (v3.2)</span>
21217 <span class="entry_type_enum_value">12</span>
21218 <span class="entry_type_enum_notes"><p>D 5700 - 7100K</p></span>
21221 <span class="entry_type_enum_name">DAY_WHITE_FLUORESCENT (v3.2)</span>
21222 <span class="entry_type_enum_value">13</span>
21223 <span class="entry_type_enum_notes"><p>N 4600 - 5400K</p></span>
21226 <span class="entry_type_enum_name">COOL_WHITE_FLUORESCENT (v3.2)</span>
21227 <span class="entry_type_enum_value">14</span>
21228 <span class="entry_type_enum_notes"><p>W 3900 - 4500K</p></span>
21231 <span class="entry_type_enum_name">WHITE_FLUORESCENT (v3.2)</span>
21232 <span class="entry_type_enum_value">15</span>
21233 <span class="entry_type_enum_notes"><p>WW 3200 - 3700K</p></span>
21236 <span class="entry_type_enum_name">STANDARD_A (v3.2)</span>
21237 <span class="entry_type_enum_value">17</span>
21240 <span class="entry_type_enum_name">STANDARD_B (v3.2)</span>
21241 <span class="entry_type_enum_value">18</span>
21244 <span class="entry_type_enum_name">STANDARD_C (v3.2)</span>
21245 <span class="entry_type_enum_value">19</span>
21248 <span class="entry_type_enum_name">D55 (v3.2)</span>
21249 <span class="entry_type_enum_value">20</span>
21252 <span class="entry_type_enum_name">D65 (v3.2)</span>
21253 <span class="entry_type_enum_value">21</span>
21256 <span class="entry_type_enum_name">D75 (v3.2)</span>
21257 <span class="entry_type_enum_value">22</span>
21260 <span class="entry_type_enum_name">D50 (v3.2)</span>
21261 <span class="entry_type_enum_value">23</span>
21264 <span class="entry_type_enum_name">ISO_STUDIO_TUNGSTEN (v3.2)</span>
21265 <span class="entry_type_enum_value">24</span>
21269 </td> <!-- entry_type -->
21271 <td class="entry_description">
21272 <p>The standard reference illuminant used as the scene light source when
21273 calculating the <a href="#static_android.sensor.colorTransform1">android.<wbr/>sensor.<wbr/>color<wbr/>Transform1</a>,<wbr/>
21274 <a href="#static_android.sensor.calibrationTransform1">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1</a>,<wbr/> and
21275 <a href="#static_android.sensor.forwardMatrix1">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1</a> matrices.<wbr/></p>
21278 <td class="entry_units">
21281 <td class="entry_range">
21284 <td class="entry_hal_version">
21288 <td class="entry_tags">
21289 <ul class="entry_tags">
21290 <li><a href="#tag_RAW">RAW</a></li>
21295 <tr class="entries_header">
21296 <th class="th_details" colspan="6">Details</th>
21298 <tr class="entry_cont">
21299 <td class="entry_details" colspan="6">
21300 <p>The values in this key correspond to the values defined for the
21301 EXIF LightSource tag.<wbr/> These illuminants are standard light sources
21302 that are often used calibrating camera devices.<wbr/></p>
21303 <p>If this key is present,<wbr/> then <a href="#static_android.sensor.colorTransform1">android.<wbr/>sensor.<wbr/>color<wbr/>Transform1</a>,<wbr/>
21304 <a href="#static_android.sensor.calibrationTransform1">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1</a>,<wbr/> and
21305 <a href="#static_android.sensor.forwardMatrix1">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1</a> will also be present.<wbr/></p>
21306 <p>Some devices may choose to provide a second set of calibration
21307 information for improved quality,<wbr/> including
21308 <a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> and its corresponding matrices.<wbr/></p>
21312 <tr class="entries_header">
21313 <th class="th_details" colspan="6">HAL Implementation Details</th>
21315 <tr class="entry_cont">
21316 <td class="entry_details" colspan="6">
21317 <p>The first reference illuminant (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>)
21318 and corresponding matrices must be present to support the RAW capability
21319 and DNG output.<wbr/></p>
21320 <p>When producing raw images with a color profile that has only been
21321 calibrated against a single light source,<wbr/> it is valid to omit
21322 <a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> along with the
21323 <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/>
21324 and <a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> matrices.<wbr/></p>
21325 <p>If only <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> is included,<wbr/> it should be
21326 chosen so that it is representative of typical scene lighting.<wbr/> In
21327 general,<wbr/> D50 or DAYLIGHT will be chosen for this case.<wbr/></p>
21328 <p>If both <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> and
21329 <a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> are included,<wbr/> they should be
21330 chosen to represent the typical range of scene lighting conditions.<wbr/>
21331 In general,<wbr/> low color temperature illuminant such as Standard-A will
21332 be chosen for the first reference illuminant and a higher color
21333 temperature illuminant such as D65 will be chosen for the second
21334 reference illuminant.<wbr/></p>
21338 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21339 <!-- end of entry -->
21342 <tr class="entry" id="static_android.sensor.referenceIlluminant2">
21343 <td class="entry_name
21345 android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2
21347 <td class="entry_type">
21348 <span class="entry_type_name">byte</span>
21350 <span class="entry_type_visibility"> [public]</span>
21357 </td> <!-- entry_type -->
21359 <td class="entry_description">
21360 <p>The standard reference illuminant used as the scene light source when
21361 calculating the <a href="#static_android.sensor.colorTransform2">android.<wbr/>sensor.<wbr/>color<wbr/>Transform2</a>,<wbr/>
21362 <a href="#static_android.sensor.calibrationTransform2">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2</a>,<wbr/> and
21363 <a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> matrices.<wbr/></p>
21366 <td class="entry_units">
21369 <td class="entry_range">
21370 <p>Any value listed in <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a></p>
21373 <td class="entry_hal_version">
21377 <td class="entry_tags">
21378 <ul class="entry_tags">
21379 <li><a href="#tag_RAW">RAW</a></li>
21384 <tr class="entries_header">
21385 <th class="th_details" colspan="6">Details</th>
21387 <tr class="entry_cont">
21388 <td class="entry_details" colspan="6">
21389 <p>See <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> for more details.<wbr/></p>
21390 <p>If this key is present,<wbr/> then <a href="#static_android.sensor.colorTransform2">android.<wbr/>sensor.<wbr/>color<wbr/>Transform2</a>,<wbr/>
21391 <a href="#static_android.sensor.calibrationTransform2">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2</a>,<wbr/> and
21392 <a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> will also be present.<wbr/></p>
21397 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21398 <!-- end of entry -->
21401 <tr class="entry" id="static_android.sensor.calibrationTransform1">
21402 <td class="entry_name
21404 android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1
21406 <td class="entry_type">
21407 <span class="entry_type_name">rational</span>
21408 <span class="entry_type_container">x</span>
21410 <span class="entry_type_array">
21413 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
21418 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
21421 </td> <!-- entry_type -->
21423 <td class="entry_description">
21424 <p>A per-device calibration transform matrix that maps from the
21425 reference sensor colorspace to the actual device sensor colorspace.<wbr/></p>
21428 <td class="entry_units">
21431 <td class="entry_range">
21434 <td class="entry_hal_version">
21438 <td class="entry_tags">
21439 <ul class="entry_tags">
21440 <li><a href="#tag_RAW">RAW</a></li>
21445 <tr class="entries_header">
21446 <th class="th_details" colspan="6">Details</th>
21448 <tr class="entry_cont">
21449 <td class="entry_details" colspan="6">
21450 <p>This matrix is used to correct for per-device variations in the
21451 sensor colorspace,<wbr/> and is used for processing raw buffer data.<wbr/></p>
21452 <p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
21453 contains a per-device calibration transform that maps colors
21454 from reference sensor color space (i.<wbr/>e.<wbr/> the "golden module"
21455 colorspace) into this camera device's native sensor color
21456 space under the first reference illuminant
21457 (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>).<wbr/></p>
21462 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21463 <!-- end of entry -->
21466 <tr class="entry" id="static_android.sensor.calibrationTransform2">
21467 <td class="entry_name
21469 android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2
21471 <td class="entry_type">
21472 <span class="entry_type_name">rational</span>
21473 <span class="entry_type_container">x</span>
21475 <span class="entry_type_array">
21478 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
21483 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
21486 </td> <!-- entry_type -->
21488 <td class="entry_description">
21489 <p>A per-device calibration transform matrix that maps from the
21490 reference sensor colorspace to the actual device sensor colorspace
21491 (this is the colorspace of the raw buffer data).<wbr/></p>
21494 <td class="entry_units">
21497 <td class="entry_range">
21500 <td class="entry_hal_version">
21504 <td class="entry_tags">
21505 <ul class="entry_tags">
21506 <li><a href="#tag_RAW">RAW</a></li>
21511 <tr class="entries_header">
21512 <th class="th_details" colspan="6">Details</th>
21514 <tr class="entry_cont">
21515 <td class="entry_details" colspan="6">
21516 <p>This matrix is used to correct for per-device variations in the
21517 sensor colorspace,<wbr/> and is used for processing raw buffer data.<wbr/></p>
21518 <p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
21519 contains a per-device calibration transform that maps colors
21520 from reference sensor color space (i.<wbr/>e.<wbr/> the "golden module"
21521 colorspace) into this camera device's native sensor color
21522 space under the second reference illuminant
21523 (<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>).<wbr/></p>
21524 <p>This matrix will only be present if the second reference
21525 illuminant is present.<wbr/></p>
21530 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21531 <!-- end of entry -->
21534 <tr class="entry" id="static_android.sensor.colorTransform1">
21535 <td class="entry_name
21537 android.<wbr/>sensor.<wbr/>color<wbr/>Transform1
21539 <td class="entry_type">
21540 <span class="entry_type_name">rational</span>
21541 <span class="entry_type_container">x</span>
21543 <span class="entry_type_array">
21546 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
21551 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
21554 </td> <!-- entry_type -->
21556 <td class="entry_description">
21557 <p>A matrix that transforms color values from CIE XYZ color space to
21558 reference sensor color space.<wbr/></p>
21561 <td class="entry_units">
21564 <td class="entry_range">
21567 <td class="entry_hal_version">
21571 <td class="entry_tags">
21572 <ul class="entry_tags">
21573 <li><a href="#tag_RAW">RAW</a></li>
21578 <tr class="entries_header">
21579 <th class="th_details" colspan="6">Details</th>
21581 <tr class="entry_cont">
21582 <td class="entry_details" colspan="6">
21583 <p>This matrix is used to convert from the standard CIE XYZ color
21584 space to the reference sensor colorspace,<wbr/> and is used when processing
21585 raw buffer data.<wbr/></p>
21586 <p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
21587 contains a color transform matrix that maps colors from the CIE
21588 XYZ color space to the reference sensor color space (i.<wbr/>e.<wbr/> the
21589 "golden module" colorspace) under the first reference illuminant
21590 (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>).<wbr/></p>
21591 <p>The white points chosen in both the reference sensor color space
21592 and the CIE XYZ colorspace when calculating this transform will
21593 match the standard white point for the first reference illuminant
21594 (i.<wbr/>e.<wbr/> no chromatic adaptation will be applied by this transform).<wbr/></p>
21599 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21600 <!-- end of entry -->
21603 <tr class="entry" id="static_android.sensor.colorTransform2">
21604 <td class="entry_name
21606 android.<wbr/>sensor.<wbr/>color<wbr/>Transform2
21608 <td class="entry_type">
21609 <span class="entry_type_name">rational</span>
21610 <span class="entry_type_container">x</span>
21612 <span class="entry_type_array">
21615 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
21620 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
21623 </td> <!-- entry_type -->
21625 <td class="entry_description">
21626 <p>A matrix that transforms color values from CIE XYZ color space to
21627 reference sensor color space.<wbr/></p>
21630 <td class="entry_units">
21633 <td class="entry_range">
21636 <td class="entry_hal_version">
21640 <td class="entry_tags">
21641 <ul class="entry_tags">
21642 <li><a href="#tag_RAW">RAW</a></li>
21647 <tr class="entries_header">
21648 <th class="th_details" colspan="6">Details</th>
21650 <tr class="entry_cont">
21651 <td class="entry_details" colspan="6">
21652 <p>This matrix is used to convert from the standard CIE XYZ color
21653 space to the reference sensor colorspace,<wbr/> and is used when processing
21654 raw buffer data.<wbr/></p>
21655 <p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
21656 contains a color transform matrix that maps colors from the CIE
21657 XYZ color space to the reference sensor color space (i.<wbr/>e.<wbr/> the
21658 "golden module" colorspace) under the second reference illuminant
21659 (<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>).<wbr/></p>
21660 <p>The white points chosen in both the reference sensor color space
21661 and the CIE XYZ colorspace when calculating this transform will
21662 match the standard white point for the second reference illuminant
21663 (i.<wbr/>e.<wbr/> no chromatic adaptation will be applied by this transform).<wbr/></p>
21664 <p>This matrix will only be present if the second reference
21665 illuminant is present.<wbr/></p>
21670 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21671 <!-- end of entry -->
21674 <tr class="entry" id="static_android.sensor.forwardMatrix1">
21675 <td class="entry_name
21677 android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1
21679 <td class="entry_type">
21680 <span class="entry_type_name">rational</span>
21681 <span class="entry_type_container">x</span>
21683 <span class="entry_type_array">
21686 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
21691 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
21694 </td> <!-- entry_type -->
21696 <td class="entry_description">
21697 <p>A matrix that transforms white balanced camera colors from the reference
21698 sensor colorspace to the CIE XYZ colorspace with a D50 whitepoint.<wbr/></p>
21701 <td class="entry_units">
21704 <td class="entry_range">
21707 <td class="entry_hal_version">
21711 <td class="entry_tags">
21712 <ul class="entry_tags">
21713 <li><a href="#tag_RAW">RAW</a></li>
21718 <tr class="entries_header">
21719 <th class="th_details" colspan="6">Details</th>
21721 <tr class="entry_cont">
21722 <td class="entry_details" colspan="6">
21723 <p>This matrix is used to convert to the standard CIE XYZ colorspace,<wbr/> and
21724 is used when processing raw buffer data.<wbr/></p>
21725 <p>This matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and contains
21726 a color transform matrix that maps white balanced colors from the
21727 reference sensor color space to the CIE XYZ color space with a D50 white
21729 <p>Under the first reference illuminant (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>)
21730 this matrix is chosen so that the standard white point for this reference
21731 illuminant in the reference sensor colorspace is mapped to D50 in the
21732 CIE XYZ colorspace.<wbr/></p>
21737 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21738 <!-- end of entry -->
21741 <tr class="entry" id="static_android.sensor.forwardMatrix2">
21742 <td class="entry_name
21744 android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2
21746 <td class="entry_type">
21747 <span class="entry_type_name">rational</span>
21748 <span class="entry_type_container">x</span>
21750 <span class="entry_type_array">
21753 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
21758 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
21761 </td> <!-- entry_type -->
21763 <td class="entry_description">
21764 <p>A matrix that transforms white balanced camera colors from the reference
21765 sensor colorspace to the CIE XYZ colorspace with a D50 whitepoint.<wbr/></p>
21768 <td class="entry_units">
21771 <td class="entry_range">
21774 <td class="entry_hal_version">
21778 <td class="entry_tags">
21779 <ul class="entry_tags">
21780 <li><a href="#tag_RAW">RAW</a></li>
21785 <tr class="entries_header">
21786 <th class="th_details" colspan="6">Details</th>
21788 <tr class="entry_cont">
21789 <td class="entry_details" colspan="6">
21790 <p>This matrix is used to convert to the standard CIE XYZ colorspace,<wbr/> and
21791 is used when processing raw buffer data.<wbr/></p>
21792 <p>This matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and contains
21793 a color transform matrix that maps white balanced colors from the
21794 reference sensor color space to the CIE XYZ color space with a D50 white
21796 <p>Under the second reference illuminant (<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>)
21797 this matrix is chosen so that the standard white point for this reference
21798 illuminant in the reference sensor colorspace is mapped to D50 in the
21799 CIE XYZ colorspace.<wbr/></p>
21800 <p>This matrix will only be present if the second reference
21801 illuminant is present.<wbr/></p>
21806 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21807 <!-- end of entry -->
21810 <tr class="entry" id="static_android.sensor.baseGainFactor">
21811 <td class="entry_name
21813 android.<wbr/>sensor.<wbr/>base<wbr/>Gain<wbr/>Factor
21815 <td class="entry_type">
21816 <span class="entry_type_name">rational</span>
21818 <span class="entry_type_visibility"> [system]</span>
21825 </td> <!-- entry_type -->
21827 <td class="entry_description">
21828 <p>Gain factor from electrons to raw units when
21832 <td class="entry_units">
21835 <td class="entry_range">
21838 <td class="entry_hal_version">
21842 <td class="entry_tags">
21843 <ul class="entry_tags">
21844 <li><a href="#tag_FUTURE">FUTURE</a></li>
21851 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21852 <!-- end of entry -->
21855 <tr class="entry" id="static_android.sensor.blackLevelPattern">
21856 <td class="entry_name
21858 android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern
21860 <td class="entry_type">
21861 <span class="entry_type_name">int32</span>
21862 <span class="entry_type_container">x</span>
21864 <span class="entry_type_array">
21867 <span class="entry_type_visibility"> [public as blackLevelPattern]</span>
21872 <div class="entry_type_notes">2x2 raw count block</div>
21875 </td> <!-- entry_type -->
21877 <td class="entry_description">
21878 <p>A fixed black level offset for each of the color filter arrangement
21879 (CFA) mosaic channels.<wbr/></p>
21882 <td class="entry_units">
21885 <td class="entry_range">
21886 <p>>= 0 for each.<wbr/></p>
21889 <td class="entry_hal_version">
21893 <td class="entry_tags">
21894 <ul class="entry_tags">
21895 <li><a href="#tag_RAW">RAW</a></li>
21900 <tr class="entries_header">
21901 <th class="th_details" colspan="6">Details</th>
21903 <tr class="entry_cont">
21904 <td class="entry_details" colspan="6">
21905 <p>This key specifies the zero light value for each of the CFA mosaic
21906 channels in the camera sensor.<wbr/> The maximal value output by the
21907 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>
21908 <p>The values are given in the same order as channels listed for the CFA
21909 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
21910 nth value given corresponds to the black level offset for the nth
21911 color channel listed in the CFA.<wbr/></p>
21912 <p>The black level values of captured images may vary for different
21913 capture settings (e.<wbr/>g.,<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>).<wbr/> This key
21914 represents a coarse approximation for such case.<wbr/> It is recommended to
21915 use <a href="#dynamic_android.sensor.dynamicBlackLevel">android.<wbr/>sensor.<wbr/>dynamic<wbr/>Black<wbr/>Level</a> or use pixels from
21916 <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a> directly for captures when
21917 supported by the camera device,<wbr/> which provides more accurate black
21918 level values.<wbr/> For raw capture in particular,<wbr/> it is recommended to use
21919 pixels from <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a> to calculate black
21920 level values for each frame.<wbr/></p>
21924 <tr class="entries_header">
21925 <th class="th_details" colspan="6">HAL Implementation Details</th>
21927 <tr class="entry_cont">
21928 <td class="entry_details" colspan="6">
21929 <p>The values are given in row-column scan order,<wbr/> with the first value
21930 corresponding to the element of the CFA in row=0,<wbr/> column=0.<wbr/></p>
21934 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21935 <!-- end of entry -->
21938 <tr class="entry" id="static_android.sensor.maxAnalogSensitivity">
21939 <td class="entry_name
21941 android.<wbr/>sensor.<wbr/>max<wbr/>Analog<wbr/>Sensitivity
21943 <td class="entry_type">
21944 <span class="entry_type_name">int32</span>
21946 <span class="entry_type_visibility"> [public]</span>
21949 <span class="entry_type_hwlevel">[full] </span>
21954 </td> <!-- entry_type -->
21956 <td class="entry_description">
21957 <p>Maximum sensitivity that is implemented
21958 purely through analog gain.<wbr/></p>
21961 <td class="entry_units">
21964 <td class="entry_range">
21967 <td class="entry_hal_version">
21971 <td class="entry_tags">
21972 <ul class="entry_tags">
21973 <li><a href="#tag_V1">V1</a></li>
21974 <li><a href="#tag_FULL">FULL</a></li>
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>For <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> values less than or
21985 equal to this,<wbr/> all applied gain must be analog.<wbr/> For
21986 values above this,<wbr/> the gain applied can be a mix of analog and
21992 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21993 <!-- end of entry -->
21996 <tr class="entry" id="static_android.sensor.orientation">
21997 <td class="entry_name
21999 android.<wbr/>sensor.<wbr/>orientation
22001 <td class="entry_type">
22002 <span class="entry_type_name">int32</span>
22004 <span class="entry_type_visibility"> [public]</span>
22007 <span class="entry_type_hwlevel">[legacy] </span>
22012 </td> <!-- entry_type -->
22014 <td class="entry_description">
22015 <p>Clockwise angle through which the output image needs to be rotated to be
22016 upright on the device screen in its native orientation.<wbr/></p>
22019 <td class="entry_units">
22020 Degrees of clockwise rotation; always a multiple of
22024 <td class="entry_range">
22025 <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p>
22028 <td class="entry_hal_version">
22032 <td class="entry_tags">
22033 <ul class="entry_tags">
22034 <li><a href="#tag_BC">BC</a></li>
22039 <tr class="entries_header">
22040 <th class="th_details" colspan="6">Details</th>
22042 <tr class="entry_cont">
22043 <td class="entry_details" colspan="6">
22044 <p>Also defines the direction of rolling shutter readout,<wbr/> which is from top to bottom in
22045 the sensor's coordinate system.<wbr/></p>
22050 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22051 <!-- end of entry -->
22054 <tr class="entry" id="static_android.sensor.profileHueSatMapDimensions">
22055 <td class="entry_name
22057 android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map<wbr/>Dimensions
22059 <td class="entry_type">
22060 <span class="entry_type_name">int32</span>
22061 <span class="entry_type_container">x</span>
22063 <span class="entry_type_array">
22066 <span class="entry_type_visibility"> [system]</span>
22071 <div class="entry_type_notes">Number of samples for hue,<wbr/> saturation,<wbr/> and value</div>
22074 </td> <!-- entry_type -->
22076 <td class="entry_description">
22077 <p>The number of input samples for each dimension of
22078 <a href="#dynamic_android.sensor.profileHueSatMap">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map</a>.<wbr/></p>
22081 <td class="entry_units">
22084 <td class="entry_range">
22085 <p>Hue >= 1,<wbr/>
22086 Saturation >= 2,<wbr/>
22090 <td class="entry_hal_version">
22094 <td class="entry_tags">
22095 <ul class="entry_tags">
22096 <li><a href="#tag_RAW">RAW</a></li>
22101 <tr class="entries_header">
22102 <th class="th_details" colspan="6">Details</th>
22104 <tr class="entry_cont">
22105 <td class="entry_details" colspan="6">
22106 <p>The number of input samples for the hue,<wbr/> saturation,<wbr/> and value
22107 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
22108 dimensions given is hue,<wbr/> saturation,<wbr/> value; where hue is the 0th
22114 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22115 <!-- end of entry -->
22118 <tr class="entry" id="static_android.sensor.availableTestPatternModes">
22119 <td class="entry_name
22121 android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes
22123 <td class="entry_type">
22124 <span class="entry_type_name">int32</span>
22125 <span class="entry_type_container">x</span>
22127 <span class="entry_type_array">
22130 <span class="entry_type_visibility"> [public]</span>
22135 <div class="entry_type_notes">list of enums</div>
22138 </td> <!-- entry_type -->
22140 <td class="entry_description">
22141 <p>List of sensor test pattern modes for <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a>
22142 supported by this camera device.<wbr/></p>
22145 <td class="entry_units">
22148 <td class="entry_range">
22149 <p>Any value listed in <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a></p>
22152 <td class="entry_hal_version">
22156 <td class="entry_tags">
22160 <tr class="entries_header">
22161 <th class="th_details" colspan="6">Details</th>
22163 <tr class="entry_cont">
22164 <td class="entry_details" colspan="6">
22165 <p>Defaults to OFF,<wbr/> and always includes OFF if defined.<wbr/></p>
22169 <tr class="entries_header">
22170 <th class="th_details" colspan="6">HAL Implementation Details</th>
22172 <tr class="entry_cont">
22173 <td class="entry_details" colspan="6">
22174 <p>All custom modes must be >= CUSTOM1.<wbr/></p>
22178 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22179 <!-- end of entry -->
22182 <tr class="entry" id="static_android.sensor.opticalBlackRegions">
22183 <td class="entry_name
22185 android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions
22187 <td class="entry_type">
22188 <span class="entry_type_name">int32</span>
22189 <span class="entry_type_container">x</span>
22191 <span class="entry_type_array">
22194 <span class="entry_type_visibility"> [public as rectangle]</span>
22201 </td> <!-- entry_type -->
22203 <td class="entry_description">
22204 <p>List of disjoint rectangles indicating the sensor
22205 optically shielded black pixel regions.<wbr/></p>
22208 <td class="entry_units">
22211 <td class="entry_range">
22214 <td class="entry_hal_version">
22218 <td class="entry_tags">
22222 <tr class="entries_header">
22223 <th class="th_details" colspan="6">Details</th>
22225 <tr class="entry_cont">
22226 <td class="entry_details" colspan="6">
22227 <p>In most camera sensors,<wbr/> the active array is surrounded by some
22228 optically shielded pixel areas.<wbr/> By blocking light,<wbr/> these pixels
22229 provides a reliable black reference for black level compensation
22230 in active array region.<wbr/></p>
22231 <p>This key provides a list of disjoint rectangles specifying the
22232 regions of optically shielded (with metal shield) black pixel
22233 regions if the camera device is capable of reading out these black
22234 pixels in the output raw images.<wbr/> In comparison to the fixed black
22235 level values reported by <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a>,<wbr/> this key
22236 may provide a more accurate way for the application to calculate
22237 black level of each captured raw images.<wbr/></p>
22238 <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
22239 <a href="#dynamic_android.sensor.dynamicWhiteLevel">android.<wbr/>sensor.<wbr/>dynamic<wbr/>White<wbr/>Level</a> will also be reported.<wbr/></p>
22243 <tr class="entries_header">
22244 <th class="th_details" colspan="6">HAL Implementation Details</th>
22246 <tr class="entry_cont">
22247 <td class="entry_details" colspan="6">
22248 <p>This array contains (xmin,<wbr/> ymin,<wbr/> width,<wbr/> height).<wbr/> The (xmin,<wbr/> ymin)
22249 must be >= (0,<wbr/>0) and <=
22250 <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
22251 <= <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/> Each region must be
22252 outside the region reported by
22253 <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>
22254 <p>The HAL must report minimal number of disjoint regions for the
22255 optically shielded back pixel regions.<wbr/> For example,<wbr/> if a region can
22256 be covered by one rectangle,<wbr/> the HAL must not split this region into
22257 multiple rectangles.<wbr/></p>
22261 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22262 <!-- end of entry -->
22265 <tr class="entry" id="static_android.sensor.opaqueRawSize">
22266 <td class="entry_name
22268 android.<wbr/>sensor.<wbr/>opaque<wbr/>Raw<wbr/>Size
22270 <td class="entry_type">
22271 <span class="entry_type_name">int32</span>
22272 <span class="entry_type_container">x</span>
22274 <span class="entry_type_array">
22277 <span class="entry_type_visibility"> [system]</span>
22284 </td> <!-- entry_type -->
22286 <td class="entry_description">
22287 <p>Size in bytes for all the listed opaque RAW buffer sizes</p>
22290 <td class="entry_units">
22293 <td class="entry_range">
22294 <p>Must be large enough to fit the opaque RAW of corresponding size produced by
22298 <td class="entry_hal_version">
22302 <td class="entry_tags">
22306 <tr class="entries_header">
22307 <th class="th_details" colspan="6">Details</th>
22309 <tr class="entry_cont">
22310 <td class="entry_details" colspan="6">
22311 <p>This configurations are listed as <code>(width,<wbr/> height,<wbr/> size_<wbr/>in_<wbr/>bytes)</code> tuples.<wbr/>
22312 This is used for sizing the gralloc buffers for opaque RAW buffers.<wbr/>
22313 All RAW_<wbr/>OPAQUE output stream configuration listed in
22314 <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> will have a corresponding tuple in
22315 this key.<wbr/></p>
22319 <tr class="entries_header">
22320 <th class="th_details" colspan="6">HAL Implementation Details</th>
22322 <tr class="entry_cont">
22323 <td class="entry_details" colspan="6">
22324 <p>This key is added in legacy HAL3.<wbr/>4.<wbr/></p>
22325 <p>For legacy HAL3.<wbr/>4 or above: devices advertising RAW_<wbr/>OPAQUE format output must list this
22326 key.<wbr/> For legacy HAL3.<wbr/>3 or earlier devices: if RAW_<wbr/>OPAQUE ouput is advertised,<wbr/> camera
22327 framework will derive this key by assuming each pixel takes two bytes and no padding bytes
22328 between rows.<wbr/></p>
22332 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22333 <!-- end of entry -->
22337 <!-- end of kind -->
22339 <tr><td colspan="7" class="kind">dynamic</td></tr>
22341 <thead class="entries_header">
22343 <th class="th_name">Property Name</th>
22344 <th class="th_type">Type</th>
22345 <th class="th_description">Description</th>
22346 <th class="th_units">Units</th>
22347 <th class="th_range">Range</th>
22348 <th class="th_hal_version">Initial HIDL HAL version</th>
22349 <th class="th_tags">Tags</th>
22364 <tr class="entry" id="dynamic_android.sensor.exposureTime">
22365 <td class="entry_name
22367 android.<wbr/>sensor.<wbr/>exposure<wbr/>Time
22369 <td class="entry_type">
22370 <span class="entry_type_name">int64</span>
22372 <span class="entry_type_visibility"> [public]</span>
22375 <span class="entry_type_hwlevel">[full] </span>
22380 </td> <!-- entry_type -->
22382 <td class="entry_description">
22383 <p>Duration each pixel is exposed to
22387 <td class="entry_units">
22391 <td class="entry_range">
22392 <p><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></p>
22395 <td class="entry_hal_version">
22399 <td class="entry_tags">
22400 <ul class="entry_tags">
22401 <li><a href="#tag_V1">V1</a></li>
22406 <tr class="entries_header">
22407 <th class="th_details" colspan="6">Details</th>
22409 <tr class="entry_cont">
22410 <td class="entry_details" colspan="6">
22411 <p>If the sensor can't expose this exact duration,<wbr/> it will shorten the
22412 duration exposed to the nearest possible value (rather than expose longer).<wbr/>
22413 The final exposure time used will be available in the output capture result.<wbr/></p>
22414 <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
22415 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
22420 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22421 <!-- end of entry -->
22424 <tr class="entry" id="dynamic_android.sensor.frameDuration">
22425 <td class="entry_name
22427 android.<wbr/>sensor.<wbr/>frame<wbr/>Duration
22429 <td class="entry_type">
22430 <span class="entry_type_name">int64</span>
22432 <span class="entry_type_visibility"> [public]</span>
22435 <span class="entry_type_hwlevel">[full] </span>
22440 </td> <!-- entry_type -->
22442 <td class="entry_description">
22443 <p>Duration from start of frame exposure to
22444 start of next frame exposure.<wbr/></p>
22447 <td class="entry_units">
22451 <td class="entry_range">
22452 <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/>
22453 The duration is capped to <code>max(duration,<wbr/> exposureTime + overhead)</code>.<wbr/></p>
22456 <td class="entry_hal_version">
22460 <td class="entry_tags">
22461 <ul class="entry_tags">
22462 <li><a href="#tag_V1">V1</a></li>
22467 <tr class="entries_header">
22468 <th class="th_details" colspan="6">Details</th>
22470 <tr class="entry_cont">
22471 <td class="entry_details" colspan="6">
22472 <p>The maximum frame rate that can be supported by a camera subsystem is
22473 a function of many factors:</p>
22475 <li>Requested resolutions of output image streams</li>
22476 <li>Availability of binning /<wbr/> skipping modes on the imager</li>
22477 <li>The bandwidth of the imager interface</li>
22478 <li>The bandwidth of the various ISP processing blocks</li>
22480 <p>Since these factors can vary greatly between different ISPs and
22481 sensors,<wbr/> the camera abstraction tries to represent the bandwidth
22482 restrictions with as simple a model as possible.<wbr/></p>
22483 <p>The model presented has the following characteristics:</p>
22485 <li>The image sensor is always configured to output the smallest
22486 resolution possible given the application's requested output stream
22487 sizes.<wbr/> The smallest resolution is defined as being at least as large
22488 as the largest requested output stream size; the camera pipeline must
22489 never digitally upsample sensor data when the crop region covers the
22490 whole sensor.<wbr/> In general,<wbr/> this means that if only small output stream
22491 resolutions are configured,<wbr/> the sensor can provide a higher frame
22493 <li>Since any request may use any or all the currently configured
22494 output streams,<wbr/> the sensor and ISP must be configured to support
22495 scaling a single capture to all the streams at the same time.<wbr/> This
22496 means the camera pipeline must be ready to produce the largest
22497 requested output size without any delay.<wbr/> Therefore,<wbr/> the overall
22498 frame rate of a given configured stream set is governed only by the
22499 largest requested stream resolution.<wbr/></li>
22500 <li>Using more than one output stream in a request does not affect the
22501 frame duration.<wbr/></li>
22502 <li>Certain format-streams may need to do additional background processing
22503 before data is consumed/<wbr/>produced by that stream.<wbr/> These processors
22504 can run concurrently to the rest of the camera pipeline,<wbr/> but
22505 cannot process more than 1 capture at a time.<wbr/></li>
22507 <p>The necessary information for the application,<wbr/> given the model above,<wbr/> is provided via
22508 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/>
22509 These are used to determine the maximum frame rate /<wbr/> minimum frame duration that is
22510 possible for a given stream configuration.<wbr/></p>
22511 <p>Specifically,<wbr/> the application can use the following rules to
22512 determine the minimum frame duration it can request from the camera
22515 <li>Let the set of currently configured input/<wbr/>output streams be called <code>S</code>.<wbr/></li>
22516 <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>
22517 (with its respective size/<wbr/>format).<wbr/> Let this set of frame durations be called <code>F</code>.<wbr/></li>
22518 <li>For any given request <code>R</code>,<wbr/> the minimum frame duration allowed for <code>R</code> is the maximum
22519 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>
22521 <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>
22522 using its respective size/<wbr/>format),<wbr/> then the frame duration in <code>F</code> determines the steady
22523 state frame rate that the application will get if it uses <code>R</code> as a repeating request.<wbr/> Let
22524 this special kind of request be called <code>Rsimple</code>.<wbr/></p>
22525 <p>A repeating request <code>Rsimple</code> can be <em>occasionally</em> interleaved by a single capture of a
22526 new request <code>Rstall</code> (which has at least one in-use stream with a non-0 stall time) and if
22527 <code>Rstall</code> has the same minimum frame duration this will not cause a frame rate loss if all
22528 buffers from the previous <code>Rstall</code> have already been delivered.<wbr/></p>
22529 <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>
22530 <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
22531 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
22535 <tr class="entries_header">
22536 <th class="th_details" colspan="6">HAL Implementation Details</th>
22538 <tr class="entry_cont">
22539 <td class="entry_details" colspan="6">
22540 <p>For more details about stalling,<wbr/> see
22541 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>.<wbr/></p>
22545 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22546 <!-- end of entry -->
22549 <tr class="entry" id="dynamic_android.sensor.sensitivity">
22550 <td class="entry_name
22552 android.<wbr/>sensor.<wbr/>sensitivity
22554 <td class="entry_type">
22555 <span class="entry_type_name">int32</span>
22557 <span class="entry_type_visibility"> [public]</span>
22560 <span class="entry_type_hwlevel">[full] </span>
22565 </td> <!-- entry_type -->
22567 <td class="entry_description">
22568 <p>The amount of gain applied to sensor data
22569 before processing.<wbr/></p>
22572 <td class="entry_units">
22573 ISO arithmetic units
22576 <td class="entry_range">
22577 <p><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></p>
22580 <td class="entry_hal_version">
22584 <td class="entry_tags">
22585 <ul class="entry_tags">
22586 <li><a href="#tag_V1">V1</a></li>
22591 <tr class="entries_header">
22592 <th class="th_details" colspan="6">Details</th>
22594 <tr class="entry_cont">
22595 <td class="entry_details" colspan="6">
22596 <p>The sensitivity is the standard ISO sensitivity value,<wbr/>
22597 as defined in ISO 12232:2006.<wbr/></p>
22598 <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
22599 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
22600 is guaranteed to use only analog amplification for applying the gain.<wbr/></p>
22601 <p>If the camera device cannot apply the exact sensitivity
22602 requested,<wbr/> it will reduce the gain to the nearest supported
22603 value.<wbr/> The final sensitivity used will be available in the
22604 output capture result.<wbr/></p>
22605 <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
22606 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
22610 <tr class="entries_header">
22611 <th class="th_details" colspan="6">HAL Implementation Details</th>
22613 <tr class="entry_cont">
22614 <td class="entry_details" colspan="6">
22615 <p>ISO 12232:2006 REI method is acceptable.<wbr/></p>
22619 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22620 <!-- end of entry -->
22623 <tr class="entry" id="dynamic_android.sensor.timestamp">
22624 <td class="entry_name
22626 android.<wbr/>sensor.<wbr/>timestamp
22628 <td class="entry_type">
22629 <span class="entry_type_name">int64</span>
22631 <span class="entry_type_visibility"> [public]</span>
22634 <span class="entry_type_hwlevel">[legacy] </span>
22639 </td> <!-- entry_type -->
22641 <td class="entry_description">
22642 <p>Time at start of exposure of first
22643 row of the image sensor active array,<wbr/> in nanoseconds.<wbr/></p>
22646 <td class="entry_units">
22650 <td class="entry_range">
22654 <td class="entry_hal_version">
22658 <td class="entry_tags">
22659 <ul class="entry_tags">
22660 <li><a href="#tag_BC">BC</a></li>
22665 <tr class="entries_header">
22666 <th class="th_details" colspan="6">Details</th>
22668 <tr class="entry_cont">
22669 <td class="entry_details" colspan="6">
22670 <p>The timestamps are also included in all image
22671 buffers produced for the same capture,<wbr/> and will be identical
22672 on all the outputs.<wbr/></p>
22673 <p>When <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> UNKNOWN,<wbr/>
22674 the timestamps measure time since an unspecified starting point,<wbr/>
22675 and are monotonically increasing.<wbr/> They can be compared with the
22676 timestamps for other captures from the same camera device,<wbr/> but are
22677 not guaranteed to be comparable to any other time source.<wbr/></p>
22678 <p>When <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME,<wbr/> the
22679 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
22680 be compared to other timestamps from other subsystems that
22681 are using that base.<wbr/></p>
22682 <p>For reprocessing,<wbr/> the timestamp will match the start of exposure of
22683 the input image,<wbr/> i.<wbr/>e.<wbr/> <a href="https://developer.android.com/reference/CaptureResult.html#SENSOR_TIMESTAMP">the
22684 timestamp</a> in the TotalCaptureResult that was used to create the
22685 reprocess capture request.<wbr/></p>
22689 <tr class="entries_header">
22690 <th class="th_details" colspan="6">HAL Implementation Details</th>
22692 <tr class="entry_cont">
22693 <td class="entry_details" colspan="6">
22694 <p>All timestamps must be in reference to the kernel's
22695 CLOCK_<wbr/>BOOTTIME monotonic clock,<wbr/> which properly accounts for
22696 time spent asleep.<wbr/> This allows for synchronization with
22697 sensors that continue to operate while the system is
22698 otherwise asleep.<wbr/></p>
22699 <p>If <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME,<wbr/>
22700 The timestamp must be synchronized with the timestamps from other
22701 sensor subsystems that are using the same timebase.<wbr/></p>
22702 <p>For reprocessing,<wbr/> the input image's start of exposure can be looked up
22703 with <a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a> from the metadata included in the
22704 capture request.<wbr/></p>
22708 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22709 <!-- end of entry -->
22712 <tr class="entry" id="dynamic_android.sensor.temperature">
22713 <td class="entry_name
22715 android.<wbr/>sensor.<wbr/>temperature
22717 <td class="entry_type">
22718 <span class="entry_type_name">float</span>
22720 <span class="entry_type_visibility"> [system]</span>
22727 </td> <!-- entry_type -->
22729 <td class="entry_description">
22730 <p>The temperature of the sensor,<wbr/> sampled at the time
22731 exposure began for this frame.<wbr/></p>
22732 <p>The thermal diode being queried should be inside the sensor PCB,<wbr/> or
22733 somewhere close to it.<wbr/></p>
22736 <td class="entry_units">
22740 <td class="entry_range">
22741 <p>Optional.<wbr/> This value is missing if no temperature is available.<wbr/></p>
22744 <td class="entry_hal_version">
22748 <td class="entry_tags">
22749 <ul class="entry_tags">
22750 <li><a href="#tag_FUTURE">FUTURE</a></li>
22757 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22758 <!-- end of entry -->
22761 <tr class="entry" id="dynamic_android.sensor.neutralColorPoint">
22762 <td class="entry_name
22764 android.<wbr/>sensor.<wbr/>neutral<wbr/>Color<wbr/>Point
22766 <td class="entry_type">
22767 <span class="entry_type_name">rational</span>
22768 <span class="entry_type_container">x</span>
22770 <span class="entry_type_array">
22773 <span class="entry_type_visibility"> [public]</span>
22780 </td> <!-- entry_type -->
22782 <td class="entry_description">
22783 <p>The estimated camera neutral color in the native sensor colorspace at
22784 the time of capture.<wbr/></p>
22787 <td class="entry_units">
22790 <td class="entry_range">
22793 <td class="entry_hal_version">
22797 <td class="entry_tags">
22798 <ul class="entry_tags">
22799 <li><a href="#tag_RAW">RAW</a></li>
22804 <tr class="entries_header">
22805 <th class="th_details" colspan="6">Details</th>
22807 <tr class="entry_cont">
22808 <td class="entry_details" colspan="6">
22809 <p>This value gives the neutral color point encoded as an RGB value in the
22810 native sensor color space.<wbr/> The neutral color point indicates the
22811 currently estimated white point of the scene illumination.<wbr/> It can be
22812 used to interpolate between the provided color transforms when
22813 processing raw sensor data.<wbr/></p>
22814 <p>The order of the values is R,<wbr/> G,<wbr/> B; where R is in the lowest index.<wbr/></p>
22819 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22820 <!-- end of entry -->
22823 <tr class="entry" id="dynamic_android.sensor.noiseProfile">
22824 <td class="entry_name
22826 android.<wbr/>sensor.<wbr/>noise<wbr/>Profile
22828 <td class="entry_type">
22829 <span class="entry_type_name">double</span>
22830 <span class="entry_type_container">x</span>
22832 <span class="entry_type_array">
22835 <span class="entry_type_visibility"> [public as pairDoubleDouble]</span>
22840 <div class="entry_type_notes">Pairs of noise model coefficients</div>
22843 </td> <!-- entry_type -->
22845 <td class="entry_description">
22846 <p>Noise model coefficients for each CFA mosaic channel.<wbr/></p>
22849 <td class="entry_units">
22852 <td class="entry_range">
22855 <td class="entry_hal_version">
22859 <td class="entry_tags">
22860 <ul class="entry_tags">
22861 <li><a href="#tag_RAW">RAW</a></li>
22866 <tr class="entries_header">
22867 <th class="th_details" colspan="6">Details</th>
22869 <tr class="entry_cont">
22870 <td class="entry_details" colspan="6">
22871 <p>This key contains two noise model coefficients for each CFA channel
22872 corresponding to the sensor amplification (S) and sensor readout
22873 noise (O).<wbr/> These are given as pairs of coefficients for each channel
22874 in the same order as channels listed for the CFA layout key
22875 (see <a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a>).<wbr/> This is
22876 represented as an array of Pair<Double,<wbr/> Double>,<wbr/> where
22877 the first member of the Pair at index n is the S coefficient and the
22878 second member is the O coefficient for the nth color channel in the CFA.<wbr/></p>
22879 <p>These coefficients are used in a two parameter noise model to describe
22880 the amount of noise present in the image for each CFA channel.<wbr/> The
22881 noise model used here is:</p>
22882 <p>N(x) = sqrt(Sx + O)</p>
22883 <p>Where x represents the recorded signal of a CFA channel normalized to
22884 the range [0,<wbr/> 1],<wbr/> and S and O are the noise model coeffiecients for
22885 that channel.<wbr/></p>
22886 <p>A more detailed description of the noise model can be found in the
22887 Adobe DNG specification for the NoiseProfile tag.<wbr/></p>
22891 <tr class="entries_header">
22892 <th class="th_details" colspan="6">HAL Implementation Details</th>
22894 <tr class="entry_cont">
22895 <td class="entry_details" colspan="6">
22896 <p>For a CFA layout of RGGB,<wbr/> the list of coefficients would be given as
22897 an array of doubles S0,<wbr/>O0,<wbr/>S1,<wbr/>O1,...,<wbr/> where S0 and O0 are the coefficients
22898 for the red channel,<wbr/> S1 and O1 are the coefficients for the first green
22899 channel,<wbr/> etc.<wbr/></p>
22903 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22904 <!-- end of entry -->
22907 <tr class="entry" id="dynamic_android.sensor.profileHueSatMap">
22908 <td class="entry_name
22910 android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map
22912 <td class="entry_type">
22913 <span class="entry_type_name">float</span>
22914 <span class="entry_type_container">x</span>
22916 <span class="entry_type_array">
22917 hue_samples x saturation_samples x value_samples x 3
22919 <span class="entry_type_visibility"> [system]</span>
22924 <div class="entry_type_notes">Mapping for hue,<wbr/> saturation,<wbr/> and value</div>
22927 </td> <!-- entry_type -->
22929 <td class="entry_description">
22930 <p>A mapping containing a hue shift,<wbr/> saturation scale,<wbr/> and value scale
22931 for each pixel.<wbr/></p>
22934 <td class="entry_units">
22936 The hue shift is given in degrees; saturation and value scale factors are
22937 unitless and are between 0 and 1 inclusive
22941 <td class="entry_range">
22944 <td class="entry_hal_version">
22948 <td class="entry_tags">
22949 <ul class="entry_tags">
22950 <li><a href="#tag_RAW">RAW</a></li>
22955 <tr class="entries_header">
22956 <th class="th_details" colspan="6">Details</th>
22958 <tr class="entry_cont">
22959 <td class="entry_details" colspan="6">
22960 <p>hue_<wbr/>samples,<wbr/> saturation_<wbr/>samples,<wbr/> and value_<wbr/>samples are given in
22961 <a href="#static_android.sensor.profileHueSatMapDimensions">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map<wbr/>Dimensions</a>.<wbr/></p>
22962 <p>Each entry of this map contains three floats corresponding to the
22963 hue shift,<wbr/> saturation scale,<wbr/> and value scale,<wbr/> respectively; where the
22964 hue shift has the lowest index.<wbr/> The map entries are stored in the key
22965 in nested loop order,<wbr/> with the value divisions in the outer loop,<wbr/> the
22966 hue divisions in the middle loop,<wbr/> and the saturation divisions in the
22967 inner loop.<wbr/> All zero input saturation entries are required to have a
22968 value scale factor of 1.<wbr/>0.<wbr/></p>
22973 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22974 <!-- end of entry -->
22977 <tr class="entry" id="dynamic_android.sensor.profileToneCurve">
22978 <td class="entry_name
22980 android.<wbr/>sensor.<wbr/>profile<wbr/>Tone<wbr/>Curve
22982 <td class="entry_type">
22983 <span class="entry_type_name">float</span>
22984 <span class="entry_type_container">x</span>
22986 <span class="entry_type_array">
22989 <span class="entry_type_visibility"> [system]</span>
22994 <div class="entry_type_notes">Samples defining a spline for a tone-mapping curve</div>
22997 </td> <!-- entry_type -->
22999 <td class="entry_description">
23000 <p>A list of x,<wbr/>y samples defining a tone-mapping curve for gamma adjustment.<wbr/></p>
23003 <td class="entry_units">
23006 <td class="entry_range">
23007 <p>Each sample has an input range of <code>[0,<wbr/> 1]</code> and an output range of
23008 <code>[0,<wbr/> 1]</code>.<wbr/> The first sample is required to be <code>(0,<wbr/> 0)</code>,<wbr/> and the last
23009 sample is required to be <code>(1,<wbr/> 1)</code>.<wbr/></p>
23012 <td class="entry_hal_version">
23016 <td class="entry_tags">
23017 <ul class="entry_tags">
23018 <li><a href="#tag_RAW">RAW</a></li>
23023 <tr class="entries_header">
23024 <th class="th_details" colspan="6">Details</th>
23026 <tr class="entry_cont">
23027 <td class="entry_details" colspan="6">
23028 <p>This key contains a default tone curve that can be applied while
23029 processing the image as a starting point for user adjustments.<wbr/>
23030 The curve is specified as a list of value pairs in linear gamma.<wbr/>
23031 The curve is interpolated using a cubic spline.<wbr/></p>
23036 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23037 <!-- end of entry -->
23040 <tr class="entry" id="dynamic_android.sensor.greenSplit">
23041 <td class="entry_name
23043 android.<wbr/>sensor.<wbr/>green<wbr/>Split
23045 <td class="entry_type">
23046 <span class="entry_type_name">float</span>
23048 <span class="entry_type_visibility"> [public]</span>
23055 </td> <!-- entry_type -->
23057 <td class="entry_description">
23058 <p>The worst-case divergence between Bayer green channels.<wbr/></p>
23061 <td class="entry_units">
23064 <td class="entry_range">
23068 <td class="entry_hal_version">
23072 <td class="entry_tags">
23073 <ul class="entry_tags">
23074 <li><a href="#tag_RAW">RAW</a></li>
23079 <tr class="entries_header">
23080 <th class="th_details" colspan="6">Details</th>
23082 <tr class="entry_cont">
23083 <td class="entry_details" colspan="6">
23084 <p>This value is an estimate of the worst case split between the
23085 Bayer green channels in the red and blue rows in the sensor color
23086 filter array.<wbr/></p>
23087 <p>The green split is calculated as follows:</p>
23089 <li>A 5x5 pixel (or larger) window W within the active sensor array is
23090 chosen.<wbr/> The term 'pixel' here is taken to mean a group of 4 Bayer
23091 mosaic channels (R,<wbr/> Gr,<wbr/> Gb,<wbr/> B).<wbr/> The location and size of the window
23092 chosen is implementation defined,<wbr/> and should be chosen to provide a
23093 green split estimate that is both representative of the entire image
23094 for this camera sensor,<wbr/> and can be calculated quickly.<wbr/></li>
23095 <li>The arithmetic mean of the green channels from the red
23096 rows (mean_<wbr/>Gr) within W is computed.<wbr/></li>
23097 <li>The arithmetic mean of the green channels from the blue
23098 rows (mean_<wbr/>Gb) within W is computed.<wbr/></li>
23099 <li>The maximum ratio R of the two means is computed as follows:
23100 <code>R = max((mean_<wbr/>Gr + 1)/<wbr/>(mean_<wbr/>Gb + 1),<wbr/> (mean_<wbr/>Gb + 1)/<wbr/>(mean_<wbr/>Gr + 1))</code></li>
23102 <p>The ratio R is the green split divergence reported for this property,<wbr/>
23103 which represents how much the green channels differ in the mosaic
23104 pattern.<wbr/> This value is typically used to determine the treatment of
23105 the green mosaic channels when demosaicing.<wbr/></p>
23106 <p>The green split value can be roughly interpreted as follows:</p>
23108 <li>R < 1.<wbr/>03 is a negligible split (<3% divergence).<wbr/></li>
23109 <li>1.<wbr/>20 <= R >= 1.<wbr/>03 will require some software
23110 correction to avoid demosaic errors (3-20% divergence).<wbr/></li>
23111 <li>R > 1.<wbr/>20 will require strong software correction to produce
23112 a usuable image (>20% divergence).<wbr/></li>
23117 <tr class="entries_header">
23118 <th class="th_details" colspan="6">HAL Implementation Details</th>
23120 <tr class="entry_cont">
23121 <td class="entry_details" colspan="6">
23122 <p>The green split given may be a static value based on prior
23123 characterization of the camera sensor using the green split
23124 calculation method given here over a large,<wbr/> representative,<wbr/> sample
23125 set of images.<wbr/> Other methods of calculation that produce equivalent
23126 results,<wbr/> and can be interpreted in the same manner,<wbr/> may be used.<wbr/></p>
23130 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23131 <!-- end of entry -->
23134 <tr class="entry" id="dynamic_android.sensor.testPatternData">
23135 <td class="entry_name
23137 android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data
23139 <td class="entry_type">
23140 <span class="entry_type_name">int32</span>
23141 <span class="entry_type_container">x</span>
23143 <span class="entry_type_array">
23146 <span class="entry_type_visibility"> [public]</span>
23153 </td> <!-- entry_type -->
23155 <td class="entry_description">
23156 <p>A pixel <code>[R,<wbr/> G_<wbr/>even,<wbr/> G_<wbr/>odd,<wbr/> B]</code> that supplies the test pattern
23157 when <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a> is SOLID_<wbr/>COLOR.<wbr/></p>
23160 <td class="entry_units">
23163 <td class="entry_range">
23166 <td class="entry_hal_version">
23170 <td class="entry_tags">
23174 <tr class="entries_header">
23175 <th class="th_details" colspan="6">Details</th>
23177 <tr class="entry_cont">
23178 <td class="entry_details" colspan="6">
23179 <p>Each color channel is treated as an unsigned 32-bit integer.<wbr/>
23180 The camera device then uses the most significant X bits
23181 that correspond to how many bits are in its Bayer raw sensor
23183 <p>For example,<wbr/> a sensor with RAW10 Bayer output would use the
23184 10 most significant bits from each color channel.<wbr/></p>
23188 <tr class="entries_header">
23189 <th class="th_details" colspan="6">HAL Implementation Details</th>
23191 <tr class="entry_cont">
23192 <td class="entry_details" colspan="6">
23197 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23198 <!-- end of entry -->
23201 <tr class="entry" id="dynamic_android.sensor.testPatternMode">
23202 <td class="entry_name
23204 android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode
23206 <td class="entry_type">
23207 <span class="entry_type_name entry_type_name_enum">int32</span>
23209 <span class="entry_type_visibility"> [public]</span>
23215 <ul class="entry_type_enum">
23217 <span class="entry_type_enum_name">OFF (v3.2)</span>
23218 <span class="entry_type_enum_notes"><p>No test pattern mode is used,<wbr/> and the camera
23219 device returns captures from the image sensor.<wbr/></p>
23220 <p>This is the default if the key is not set.<wbr/></p></span>
23223 <span class="entry_type_enum_name">SOLID_COLOR (v3.2)</span>
23224 <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
23225 respective color channel provided in
23226 <a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a>.<wbr/></p>
23227 <p>For example:</p>
23228 <pre><code>android.<wbr/>testPatternData = [0,<wbr/> 0xFFFFFFFF,<wbr/> 0xFFFFFFFF,<wbr/> 0]
23230 <p>All green pixels are 100% green.<wbr/> All red/<wbr/>blue pixels are black.<wbr/></p>
23231 <pre><code>android.<wbr/>testPatternData = [0xFFFFFFFF,<wbr/> 0,<wbr/> 0xFFFFFFFF,<wbr/> 0]
23233 <p>All red pixels are 100% red.<wbr/> Only the odd green pixels
23234 are 100% green.<wbr/> All blue pixels are 100% black.<wbr/></p></span>
23237 <span class="entry_type_enum_name">COLOR_BARS (v3.2)</span>
23238 <span class="entry_type_enum_notes"><p>All pixel data is replaced with an 8-bar color pattern.<wbr/></p>
23239 <p>The vertical bars (left-to-right) are as follows:</p>
23241 <li>100% white</li>
23250 <p>In general the image would look like the following:</p>
23251 <pre><code>W Y C G M R B K
23256 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
23257 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
23258 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
23260 (B = Blue,<wbr/> K = Black)
23262 <p>Each bar should take up 1/<wbr/>8 of the sensor pixel array width.<wbr/>
23263 When this is not possible,<wbr/> the bar size should be rounded
23264 down to the nearest integer and the pattern can repeat
23265 on the right side.<wbr/></p>
23266 <p>Each bar's height must always take up the full sensor
23267 pixel array height.<wbr/></p>
23268 <p>Each pixel in this test pattern must be set to either
23269 0% intensity or 100% intensity.<wbr/></p></span>
23272 <span class="entry_type_enum_name">COLOR_BARS_FADE_TO_GRAY (v3.2)</span>
23273 <span class="entry_type_enum_notes"><p>The test pattern is similar to COLOR_<wbr/>BARS,<wbr/> except that
23274 each bar should start at its specified color at the top,<wbr/>
23275 and fade to gray at the bottom.<wbr/></p>
23276 <p>Furthermore each bar is further subdivided into a left and
23277 right half.<wbr/> The left half should have a smooth gradient,<wbr/>
23278 and the right half should have a quantized gradient.<wbr/></p>
23279 <p>In particular,<wbr/> the right half's should consist of blocks of the
23280 same color for 1/<wbr/>16th active sensor pixel array width.<wbr/></p>
23281 <p>The least significant bits in the quantized gradient should
23282 be copied from the most significant bits of the smooth gradient.<wbr/></p>
23283 <p>The height of each bar should always be a multiple of 128.<wbr/>
23284 When this is not the case,<wbr/> the pattern should repeat at the bottom
23285 of the image.<wbr/></p></span>
23288 <span class="entry_type_enum_name">PN9 (v3.2)</span>
23289 <span class="entry_type_enum_notes"><p>All pixel data is replaced by a pseudo-random sequence
23290 generated from a PN9 512-bit sequence (typically implemented
23291 in hardware with a linear feedback shift register).<wbr/></p>
23292 <p>The generator should be reset at the beginning of each frame,<wbr/>
23293 and thus each subsequent raw frame with this test pattern should
23294 be exactly the same as the last.<wbr/></p></span>
23297 <span class="entry_type_enum_name">CUSTOM1 (v3.2)</span>
23298 <span class="entry_type_enum_value">256</span>
23299 <span class="entry_type_enum_notes"><p>The first custom test pattern.<wbr/> All custom patterns that are
23300 available only on this camera device are at least this numeric
23302 <p>All of the custom test patterns will be static
23303 (that is the raw image must not vary from frame to frame).<wbr/></p></span>
23307 </td> <!-- entry_type -->
23309 <td class="entry_description">
23310 <p>When enabled,<wbr/> the sensor sends a test pattern instead of
23311 doing a real exposure from the camera.<wbr/></p>
23314 <td class="entry_units">
23317 <td class="entry_range">
23318 <p><a href="#static_android.sensor.availableTestPatternModes">android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes</a></p>
23321 <td class="entry_hal_version">
23325 <td class="entry_tags">
23329 <tr class="entries_header">
23330 <th class="th_details" colspan="6">Details</th>
23332 <tr class="entry_cont">
23333 <td class="entry_details" colspan="6">
23334 <p>When a test pattern is enabled,<wbr/> all manual sensor controls specified
23335 by android.<wbr/>sensor.<wbr/>* will be ignored.<wbr/> All other controls should
23336 work as normal.<wbr/></p>
23337 <p>For example,<wbr/> if manual flash is enabled,<wbr/> flash firing should still
23338 occur (and that the test pattern remain unmodified,<wbr/> since the flash
23339 would not actually affect it).<wbr/></p>
23340 <p>Defaults to OFF.<wbr/></p>
23344 <tr class="entries_header">
23345 <th class="th_details" colspan="6">HAL Implementation Details</th>
23347 <tr class="entry_cont">
23348 <td class="entry_details" colspan="6">
23349 <p>All test patterns are specified in the Bayer domain.<wbr/></p>
23350 <p>The HAL may choose to substitute test patterns from the sensor
23351 with test patterns from on-device memory.<wbr/> In that case,<wbr/> it should be
23352 indistinguishable to the ISP whether the data came from the
23353 sensor interconnect bus (such as CSI2) or memory.<wbr/></p>
23357 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23358 <!-- end of entry -->
23361 <tr class="entry" id="dynamic_android.sensor.rollingShutterSkew">
23362 <td class="entry_name
23364 android.<wbr/>sensor.<wbr/>rolling<wbr/>Shutter<wbr/>Skew
23366 <td class="entry_type">
23367 <span class="entry_type_name">int64</span>
23369 <span class="entry_type_visibility"> [public]</span>
23372 <span class="entry_type_hwlevel">[limited] </span>
23377 </td> <!-- entry_type -->
23379 <td class="entry_description">
23380 <p>Duration between the start of first row exposure
23381 and the start of last row exposure.<wbr/></p>
23384 <td class="entry_units">
23388 <td class="entry_range">
23389 <p>>= 0 and <
23390 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/></p>
23393 <td class="entry_hal_version">
23397 <td class="entry_tags">
23398 <ul class="entry_tags">
23399 <li><a href="#tag_V1">V1</a></li>
23404 <tr class="entries_header">
23405 <th class="th_details" colspan="6">Details</th>
23407 <tr class="entry_cont">
23408 <td class="entry_details" colspan="6">
23409 <p>This is the exposure time skew between the first and last
23410 row exposure start times.<wbr/> The first row and the last row are
23411 the first and last rows inside of the
23412 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
23413 <p>For typical camera sensors that use rolling shutters,<wbr/> this is also equivalent
23414 to the frame readout time.<wbr/></p>
23418 <tr class="entries_header">
23419 <th class="th_details" colspan="6">HAL Implementation Details</th>
23421 <tr class="entry_cont">
23422 <td class="entry_details" colspan="6">
23423 <p>The HAL must report <code>0</code> if the sensor is using global shutter,<wbr/> where all pixels begin
23424 exposure at the same time.<wbr/></p>
23428 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23429 <!-- end of entry -->
23432 <tr class="entry" id="dynamic_android.sensor.dynamicBlackLevel">
23433 <td class="entry_name
23435 android.<wbr/>sensor.<wbr/>dynamic<wbr/>Black<wbr/>Level
23437 <td class="entry_type">
23438 <span class="entry_type_name">float</span>
23439 <span class="entry_type_container">x</span>
23441 <span class="entry_type_array">
23444 <span class="entry_type_visibility"> [public]</span>
23449 <div class="entry_type_notes">2x2 raw count block</div>
23452 </td> <!-- entry_type -->
23454 <td class="entry_description">
23455 <p>A per-frame dynamic black level offset for each of the color filter
23456 arrangement (CFA) mosaic channels.<wbr/></p>
23459 <td class="entry_units">
23462 <td class="entry_range">
23463 <p>>= 0 for each.<wbr/></p>
23466 <td class="entry_hal_version">
23470 <td class="entry_tags">
23471 <ul class="entry_tags">
23472 <li><a href="#tag_RAW">RAW</a></li>
23477 <tr class="entries_header">
23478 <th class="th_details" colspan="6">Details</th>
23480 <tr class="entry_cont">
23481 <td class="entry_details" colspan="6">
23482 <p>Camera sensor black levels may vary dramatically for different
23483 capture settings (e.<wbr/>g.<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>).<wbr/> The fixed black
23484 level reported by <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> may be too
23485 inaccurate to represent the actual value on a per-frame basis.<wbr/> The
23486 camera device internal pipeline relies on reliable black level values
23487 to process the raw images appropriately.<wbr/> To get the best image
23488 quality,<wbr/> the camera device may choose to estimate the per frame black
23489 level values either based on optically shielded black regions
23490 (<a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a>) or its internal model.<wbr/></p>
23491 <p>This key reports the camera device estimated per-frame zero light
23492 value for each of the CFA mosaic channels in the camera sensor.<wbr/> The
23493 <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> may only represent a coarse
23494 approximation of the actual black level values.<wbr/> This value is the
23495 black level used in camera device internal image processing pipeline
23496 and generally more accurate than the fixed black level values.<wbr/>
23497 However,<wbr/> since they are estimated values by the camera device,<wbr/> they
23498 may not be as accurate as the black level values calculated from the
23499 optical black pixels reported by <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a>.<wbr/></p>
23500 <p>The values are given in the same order as channels listed for the CFA
23501 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
23502 nth value given corresponds to the black level offset for the nth
23503 color channel listed in the CFA.<wbr/></p>
23504 <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
23505 camera device advertises this key via <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureResultKeys">CameraCharacteristics#getAvailableCaptureResultKeys</a>.<wbr/></p>
23509 <tr class="entries_header">
23510 <th class="th_details" colspan="6">HAL Implementation Details</th>
23512 <tr class="entry_cont">
23513 <td class="entry_details" colspan="6">
23514 <p>The values are given in row-column scan order,<wbr/> with the first value
23515 corresponding to the element of the CFA in row=0,<wbr/> column=0.<wbr/></p>
23519 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23520 <!-- end of entry -->
23523 <tr class="entry" id="dynamic_android.sensor.dynamicWhiteLevel">
23524 <td class="entry_name
23526 android.<wbr/>sensor.<wbr/>dynamic<wbr/>White<wbr/>Level
23528 <td class="entry_type">
23529 <span class="entry_type_name">int32</span>
23531 <span class="entry_type_visibility"> [public]</span>
23538 </td> <!-- entry_type -->
23540 <td class="entry_description">
23541 <p>Maximum raw value output by sensor for this frame.<wbr/></p>
23544 <td class="entry_units">
23547 <td class="entry_range">
23551 <td class="entry_hal_version">
23555 <td class="entry_tags">
23556 <ul class="entry_tags">
23557 <li><a href="#tag_RAW">RAW</a></li>
23562 <tr class="entries_header">
23563 <th class="th_details" colspan="6">Details</th>
23565 <tr class="entry_cont">
23566 <td class="entry_details" colspan="6">
23567 <p>Since the <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> may change for different
23568 capture settings (e.<wbr/>g.,<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>),<wbr/> the white
23569 level will change accordingly.<wbr/> This key is similar to
23570 <a href="#static_android.sensor.info.whiteLevel">android.<wbr/>sensor.<wbr/>info.<wbr/>white<wbr/>Level</a>,<wbr/> but specifies the camera device
23571 estimated white level for each frame.<wbr/></p>
23572 <p>This key will be available if <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a> is
23573 available or the camera device advertises this key via
23574 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a>.<wbr/></p>
23578 <tr class="entries_header">
23579 <th class="th_details" colspan="6">HAL Implementation Details</th>
23581 <tr class="entry_cont">
23582 <td class="entry_details" colspan="6">
23583 <p>The full bit depth of the sensor must be available in the raw data,<wbr/>
23584 so the value for linear sensors should not be significantly lower
23585 than maximum raw value supported,<wbr/> i.<wbr/>e.<wbr/> 2^(sensor bits per pixel).<wbr/></p>
23589 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23590 <!-- end of entry -->
23594 <!-- end of kind -->
23597 <!-- end of section -->
23598 <tr><td colspan="7" id="section_shading" class="section">shading</td></tr>
23601 <tr><td colspan="7" class="kind">controls</td></tr>
23603 <thead class="entries_header">
23605 <th class="th_name">Property Name</th>
23606 <th class="th_type">Type</th>
23607 <th class="th_description">Description</th>
23608 <th class="th_units">Units</th>
23609 <th class="th_range">Range</th>
23610 <th class="th_hal_version">Initial HIDL HAL version</th>
23611 <th class="th_tags">Tags</th>
23626 <tr class="entry" id="controls_android.shading.mode">
23627 <td class="entry_name
23629 android.<wbr/>shading.<wbr/>mode
23631 <td class="entry_type">
23632 <span class="entry_type_name entry_type_name_enum">byte</span>
23634 <span class="entry_type_visibility"> [public]</span>
23637 <span class="entry_type_hwlevel">[full] </span>
23641 <ul class="entry_type_enum">
23643 <span class="entry_type_enum_name">OFF (v3.2)</span>
23644 <span class="entry_type_enum_notes"><p>No lens shading correction is applied.<wbr/></p></span>
23647 <span class="entry_type_enum_name">FAST (v3.2)</span>
23648 <span class="entry_type_enum_notes"><p>Apply lens shading corrections,<wbr/> without slowing
23649 frame rate relative to sensor raw output</p></span>
23652 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
23653 <span class="entry_type_enum_notes"><p>Apply high-quality lens shading correction,<wbr/> at the
23654 cost of possibly reduced frame rate.<wbr/></p></span>
23658 </td> <!-- entry_type -->
23660 <td class="entry_description">
23661 <p>Quality of lens shading correction applied
23662 to the image data.<wbr/></p>
23665 <td class="entry_units">
23668 <td class="entry_range">
23669 <p><a href="#static_android.shading.availableModes">android.<wbr/>shading.<wbr/>available<wbr/>Modes</a></p>
23672 <td class="entry_hal_version">
23676 <td class="entry_tags">
23680 <tr class="entries_header">
23681 <th class="th_details" colspan="6">Details</th>
23683 <tr class="entry_cont">
23684 <td class="entry_details" colspan="6">
23685 <p>When set to OFF mode,<wbr/> no lens shading correction will be applied by the
23686 camera device,<wbr/> and an identity lens shading map data will be provided
23687 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
23688 shading map with size of <code>[ 4,<wbr/> 3 ]</code>,<wbr/>
23689 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
23690 map shown below:</p>
23691 <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/>
23692 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/>
23693 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/>
23694 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/>
23695 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/>
23696 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 ]
23698 <p>When set to other modes,<wbr/> lens shading correction will be applied by the camera
23699 device.<wbr/> Applications can request lens shading map data by setting
23700 <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
23701 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
23702 data will be the one applied by the camera device for this capture request.<wbr/></p>
23703 <p>The shading map data may depend on the auto-exposure (AE) and AWB statistics,<wbr/> therefore
23704 the reliability of the map data may be affected by the AE and AWB algorithms.<wbr/> When AE and
23705 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>
23706 OFF),<wbr/> to get best results,<wbr/> it is recommended that the applications wait for the AE and AWB
23707 to be converged before using the returned shading map data.<wbr/></p>
23712 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23713 <!-- end of entry -->
23716 <tr class="entry" id="controls_android.shading.strength">
23717 <td class="entry_name
23719 android.<wbr/>shading.<wbr/>strength
23721 <td class="entry_type">
23722 <span class="entry_type_name">byte</span>
23724 <span class="entry_type_visibility"> [system]</span>
23731 </td> <!-- entry_type -->
23733 <td class="entry_description">
23734 <p>Control the amount of shading correction
23735 applied to the images</p>
23738 <td class="entry_units">
23739 unitless: 1-10; 10 is full shading
23743 <td class="entry_range">
23746 <td class="entry_hal_version">
23750 <td class="entry_tags">
23751 <ul class="entry_tags">
23752 <li><a href="#tag_FUTURE">FUTURE</a></li>
23759 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23760 <!-- end of entry -->
23764 <!-- end of kind -->
23766 <tr><td colspan="7" class="kind">dynamic</td></tr>
23768 <thead class="entries_header">
23770 <th class="th_name">Property Name</th>
23771 <th class="th_type">Type</th>
23772 <th class="th_description">Description</th>
23773 <th class="th_units">Units</th>
23774 <th class="th_range">Range</th>
23775 <th class="th_hal_version">Initial HIDL HAL version</th>
23776 <th class="th_tags">Tags</th>
23791 <tr class="entry" id="dynamic_android.shading.mode">
23792 <td class="entry_name
23794 android.<wbr/>shading.<wbr/>mode
23796 <td class="entry_type">
23797 <span class="entry_type_name entry_type_name_enum">byte</span>
23799 <span class="entry_type_visibility"> [public]</span>
23802 <span class="entry_type_hwlevel">[full] </span>
23806 <ul class="entry_type_enum">
23808 <span class="entry_type_enum_name">OFF (v3.2)</span>
23809 <span class="entry_type_enum_notes"><p>No lens shading correction is applied.<wbr/></p></span>
23812 <span class="entry_type_enum_name">FAST (v3.2)</span>
23813 <span class="entry_type_enum_notes"><p>Apply lens shading corrections,<wbr/> without slowing
23814 frame rate relative to sensor raw output</p></span>
23817 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
23818 <span class="entry_type_enum_notes"><p>Apply high-quality lens shading correction,<wbr/> at the
23819 cost of possibly reduced frame rate.<wbr/></p></span>
23823 </td> <!-- entry_type -->
23825 <td class="entry_description">
23826 <p>Quality of lens shading correction applied
23827 to the image data.<wbr/></p>
23830 <td class="entry_units">
23833 <td class="entry_range">
23834 <p><a href="#static_android.shading.availableModes">android.<wbr/>shading.<wbr/>available<wbr/>Modes</a></p>
23837 <td class="entry_hal_version">
23841 <td class="entry_tags">
23845 <tr class="entries_header">
23846 <th class="th_details" colspan="6">Details</th>
23848 <tr class="entry_cont">
23849 <td class="entry_details" colspan="6">
23850 <p>When set to OFF mode,<wbr/> no lens shading correction will be applied by the
23851 camera device,<wbr/> and an identity lens shading map data will be provided
23852 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
23853 shading map with size of <code>[ 4,<wbr/> 3 ]</code>,<wbr/>
23854 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
23855 map shown below:</p>
23856 <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/>
23857 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/>
23858 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/>
23859 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/>
23860 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/>
23861 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 ]
23863 <p>When set to other modes,<wbr/> lens shading correction will be applied by the camera
23864 device.<wbr/> Applications can request lens shading map data by setting
23865 <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
23866 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
23867 data will be the one applied by the camera device for this capture request.<wbr/></p>
23868 <p>The shading map data may depend on the auto-exposure (AE) and AWB statistics,<wbr/> therefore
23869 the reliability of the map data may be affected by the AE and AWB algorithms.<wbr/> When AE and
23870 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>
23871 OFF),<wbr/> to get best results,<wbr/> it is recommended that the applications wait for the AE and AWB
23872 to be converged before using the returned shading map data.<wbr/></p>
23877 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23878 <!-- end of entry -->
23882 <!-- end of kind -->
23884 <tr><td colspan="7" class="kind">static</td></tr>
23886 <thead class="entries_header">
23888 <th class="th_name">Property Name</th>
23889 <th class="th_type">Type</th>
23890 <th class="th_description">Description</th>
23891 <th class="th_units">Units</th>
23892 <th class="th_range">Range</th>
23893 <th class="th_hal_version">Initial HIDL HAL version</th>
23894 <th class="th_tags">Tags</th>
23909 <tr class="entry" id="static_android.shading.availableModes">
23910 <td class="entry_name
23912 android.<wbr/>shading.<wbr/>available<wbr/>Modes
23914 <td class="entry_type">
23915 <span class="entry_type_name">byte</span>
23916 <span class="entry_type_container">x</span>
23918 <span class="entry_type_array">
23921 <span class="entry_type_visibility"> [public as enumList]</span>
23924 <span class="entry_type_hwlevel">[legacy] </span>
23927 <div class="entry_type_notes">List of enums (android.<wbr/>shading.<wbr/>mode).<wbr/></div>
23930 </td> <!-- entry_type -->
23932 <td class="entry_description">
23933 <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>
23936 <td class="entry_units">
23939 <td class="entry_range">
23940 <p>Any value listed in <a href="#controls_android.shading.mode">android.<wbr/>shading.<wbr/>mode</a></p>
23943 <td class="entry_hal_version">
23947 <td class="entry_tags">
23951 <tr class="entries_header">
23952 <th class="th_details" colspan="6">Details</th>
23954 <tr class="entry_cont">
23955 <td class="entry_details" colspan="6">
23956 <p>This list contains lens shading modes that can be set for the camera device.<wbr/>
23957 Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always
23958 list OFF and FAST mode.<wbr/> This includes all FULL level devices.<wbr/>
23959 LEGACY devices will always only support FAST mode.<wbr/></p>
23963 <tr class="entries_header">
23964 <th class="th_details" colspan="6">HAL Implementation Details</th>
23966 <tr class="entry_cont">
23967 <td class="entry_details" colspan="6">
23968 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if lens shading correction control is
23969 available on the camera device,<wbr/> but the underlying implementation can be the same for
23970 both modes.<wbr/> That is,<wbr/> if the highest quality implementation on the camera device does not
23971 slow down capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
23975 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23976 <!-- end of entry -->
23980 <!-- end of kind -->
23983 <!-- end of section -->
23984 <tr><td colspan="7" id="section_statistics" class="section">statistics</td></tr>
23987 <tr><td colspan="7" class="kind">controls</td></tr>
23989 <thead class="entries_header">
23991 <th class="th_name">Property Name</th>
23992 <th class="th_type">Type</th>
23993 <th class="th_description">Description</th>
23994 <th class="th_units">Units</th>
23995 <th class="th_range">Range</th>
23996 <th class="th_hal_version">Initial HIDL HAL version</th>
23997 <th class="th_tags">Tags</th>
24012 <tr class="entry" id="controls_android.statistics.faceDetectMode">
24013 <td class="entry_name
24015 android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode
24017 <td class="entry_type">
24018 <span class="entry_type_name entry_type_name_enum">byte</span>
24020 <span class="entry_type_visibility"> [public]</span>
24023 <span class="entry_type_hwlevel">[legacy] </span>
24027 <ul class="entry_type_enum">
24029 <span class="entry_type_enum_name">OFF (v3.2)</span>
24030 <span class="entry_type_enum_notes"><p>Do not include face detection statistics in capture
24031 results.<wbr/></p></span>
24034 <span class="entry_type_enum_name">SIMPLE (v3.2)</span>
24035 <span class="entry_type_enum_optional">[optional]</span>
24036 <span class="entry_type_enum_notes"><p>Return face rectangle and confidence values only.<wbr/></p></span>
24039 <span class="entry_type_enum_name">FULL (v3.2)</span>
24040 <span class="entry_type_enum_optional">[optional]</span>
24041 <span class="entry_type_enum_notes"><p>Return all face
24042 metadata.<wbr/></p>
24043 <p>In this mode,<wbr/> face rectangles,<wbr/> scores,<wbr/> landmarks,<wbr/> and face IDs are all valid.<wbr/></p></span>
24047 </td> <!-- entry_type -->
24049 <td class="entry_description">
24050 <p>Operating mode for the face detector
24054 <td class="entry_units">
24057 <td class="entry_range">
24058 <p><a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a></p>
24061 <td class="entry_hal_version">
24065 <td class="entry_tags">
24066 <ul class="entry_tags">
24067 <li><a href="#tag_BC">BC</a></li>
24072 <tr class="entries_header">
24073 <th class="th_details" colspan="6">Details</th>
24075 <tr class="entry_cont">
24076 <td class="entry_details" colspan="6">
24077 <p>Whether face detection is enabled,<wbr/> and whether it
24078 should output just the basic fields or the full set of
24083 <tr class="entries_header">
24084 <th class="th_details" colspan="6">HAL Implementation Details</th>
24086 <tr class="entry_cont">
24087 <td class="entry_details" colspan="6">
24088 <p>SIMPLE mode must fill in <a href="#dynamic_android.statistics.faceRectangles">android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles</a> and
24089 <a href="#dynamic_android.statistics.faceScores">android.<wbr/>statistics.<wbr/>face<wbr/>Scores</a>.<wbr/>
24090 FULL mode must also fill in <a href="#dynamic_android.statistics.faceIds">android.<wbr/>statistics.<wbr/>face<wbr/>Ids</a>,<wbr/> and
24091 <a href="#dynamic_android.statistics.faceLandmarks">android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks</a>.<wbr/></p>
24095 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24096 <!-- end of entry -->
24099 <tr class="entry" id="controls_android.statistics.histogramMode">
24100 <td class="entry_name
24102 android.<wbr/>statistics.<wbr/>histogram<wbr/>Mode
24104 <td class="entry_type">
24105 <span class="entry_type_name entry_type_name_enum">byte</span>
24107 <span class="entry_type_visibility"> [system as boolean]</span>
24113 <ul class="entry_type_enum">
24115 <span class="entry_type_enum_name">OFF (v3.2)</span>
24118 <span class="entry_type_enum_name">ON (v3.2)</span>
24122 </td> <!-- entry_type -->
24124 <td class="entry_description">
24125 <p>Operating mode for histogram
24129 <td class="entry_units">
24132 <td class="entry_range">
24135 <td class="entry_hal_version">
24139 <td class="entry_tags">
24140 <ul class="entry_tags">
24141 <li><a href="#tag_FUTURE">FUTURE</a></li>
24148 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24149 <!-- end of entry -->
24152 <tr class="entry" id="controls_android.statistics.sharpnessMapMode">
24153 <td class="entry_name
24155 android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map<wbr/>Mode
24157 <td class="entry_type">
24158 <span class="entry_type_name entry_type_name_enum">byte</span>
24160 <span class="entry_type_visibility"> [system as boolean]</span>
24166 <ul class="entry_type_enum">
24168 <span class="entry_type_enum_name">OFF (v3.2)</span>
24171 <span class="entry_type_enum_name">ON (v3.2)</span>
24175 </td> <!-- entry_type -->
24177 <td class="entry_description">
24178 <p>Operating mode for sharpness map
24182 <td class="entry_units">
24185 <td class="entry_range">
24188 <td class="entry_hal_version">
24192 <td class="entry_tags">
24193 <ul class="entry_tags">
24194 <li><a href="#tag_FUTURE">FUTURE</a></li>
24201 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24202 <!-- end of entry -->
24205 <tr class="entry" id="controls_android.statistics.hotPixelMapMode">
24206 <td class="entry_name
24208 android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode
24210 <td class="entry_type">
24211 <span class="entry_type_name entry_type_name_enum">byte</span>
24213 <span class="entry_type_visibility"> [public as boolean]</span>
24219 <ul class="entry_type_enum">
24221 <span class="entry_type_enum_name">OFF (v3.2)</span>
24222 <span class="entry_type_enum_notes"><p>Hot pixel map production is disabled.<wbr/></p></span>
24225 <span class="entry_type_enum_name">ON (v3.2)</span>
24226 <span class="entry_type_enum_notes"><p>Hot pixel map production is enabled.<wbr/></p></span>
24230 </td> <!-- entry_type -->
24232 <td class="entry_description">
24233 <p>Operating mode for hot pixel map generation.<wbr/></p>
24236 <td class="entry_units">
24239 <td class="entry_range">
24240 <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>
24243 <td class="entry_hal_version">
24247 <td class="entry_tags">
24248 <ul class="entry_tags">
24249 <li><a href="#tag_V1">V1</a></li>
24250 <li><a href="#tag_RAW">RAW</a></li>
24255 <tr class="entries_header">
24256 <th class="th_details" colspan="6">Details</th>
24258 <tr class="entry_cont">
24259 <td class="entry_details" colspan="6">
24260 <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/>
24261 If set to <code>false</code>,<wbr/> no hot pixel map will be returned.<wbr/></p>
24266 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24267 <!-- end of entry -->
24270 <tr class="entry" id="controls_android.statistics.lensShadingMapMode">
24271 <td class="entry_name
24273 android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode
24275 <td class="entry_type">
24276 <span class="entry_type_name entry_type_name_enum">byte</span>
24278 <span class="entry_type_visibility"> [public]</span>
24281 <span class="entry_type_hwlevel">[full] </span>
24285 <ul class="entry_type_enum">
24287 <span class="entry_type_enum_name">OFF (v3.2)</span>
24288 <span class="entry_type_enum_notes"><p>Do not include a lens shading map in the capture result.<wbr/></p></span>
24291 <span class="entry_type_enum_name">ON (v3.2)</span>
24292 <span class="entry_type_enum_notes"><p>Include a lens shading map in the capture result.<wbr/></p></span>
24296 </td> <!-- entry_type -->
24298 <td class="entry_description">
24299 <p>Whether the camera device will output the lens
24300 shading map in output result metadata.<wbr/></p>
24303 <td class="entry_units">
24306 <td class="entry_range">
24307 <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>
24310 <td class="entry_hal_version">
24314 <td class="entry_tags">
24315 <ul class="entry_tags">
24316 <li><a href="#tag_RAW">RAW</a></li>
24321 <tr class="entries_header">
24322 <th class="th_details" colspan="6">Details</th>
24324 <tr class="entry_cont">
24325 <td class="entry_details" colspan="6">
24326 <p>When set to ON,<wbr/>
24327 <a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> will be provided in
24328 the output result metadata.<wbr/></p>
24329 <p>ON is always supported on devices with the RAW capability.<wbr/></p>
24334 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24335 <!-- end of entry -->
24338 <tr class="entry" id="controls_android.statistics.oisDataMode">
24339 <td class="entry_name
24341 android.<wbr/>statistics.<wbr/>ois<wbr/>Data<wbr/>Mode
24343 <td class="entry_type">
24344 <span class="entry_type_name entry_type_name_enum">byte</span>
24346 <span class="entry_type_visibility"> [public]</span>
24352 <ul class="entry_type_enum">
24354 <span class="entry_type_enum_name">OFF (v3.3)</span>
24355 <span class="entry_type_enum_notes"><p>Do not include OIS data in the capture result.<wbr/></p></span>
24358 <span class="entry_type_enum_name">ON (v3.3)</span>
24359 <span class="entry_type_enum_notes"><p>Include OIS data in the capture result.<wbr/></p></span>
24363 </td> <!-- entry_type -->
24365 <td class="entry_description">
24366 <p>A control for selecting whether OIS position information is included in output
24367 result metadata.<wbr/></p>
24370 <td class="entry_units">
24373 <td class="entry_range">
24374 <p><a href="#static_android.statistics.info.availableOisDataModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Ois<wbr/>Data<wbr/>Modes</a></p>
24377 <td class="entry_hal_version">
24381 <td class="entry_tags">
24387 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24388 <!-- end of entry -->
24392 <!-- end of kind -->
24394 <tr><td colspan="7" class="kind">static</td></tr>
24396 <thead class="entries_header">
24398 <th class="th_name">Property Name</th>
24399 <th class="th_type">Type</th>
24400 <th class="th_description">Description</th>
24401 <th class="th_units">Units</th>
24402 <th class="th_range">Range</th>
24403 <th class="th_hal_version">Initial HIDL HAL version</th>
24404 <th class="th_tags">Tags</th>
24421 <tr class="entry" id="static_android.statistics.info.availableFaceDetectModes">
24422 <td class="entry_name
24424 android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes
24426 <td class="entry_type">
24427 <span class="entry_type_name">byte</span>
24428 <span class="entry_type_container">x</span>
24430 <span class="entry_type_array">
24433 <span class="entry_type_visibility"> [public as enumList]</span>
24436 <span class="entry_type_hwlevel">[legacy] </span>
24439 <div class="entry_type_notes">List of enums from android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</div>
24442 </td> <!-- entry_type -->
24444 <td class="entry_description">
24445 <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
24446 supported by this camera device.<wbr/></p>
24449 <td class="entry_units">
24452 <td class="entry_range">
24453 <p>Any value listed in <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></p>
24456 <td class="entry_hal_version">
24460 <td class="entry_tags">
24464 <tr class="entries_header">
24465 <th class="th_details" colspan="6">Details</th>
24467 <tr class="entry_cont">
24468 <td class="entry_details" colspan="6">
24469 <p>OFF is always supported.<wbr/></p>
24474 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24475 <!-- end of entry -->
24478 <tr class="entry" id="static_android.statistics.info.histogramBucketCount">
24479 <td class="entry_name
24481 android.<wbr/>statistics.<wbr/>info.<wbr/>histogram<wbr/>Bucket<wbr/>Count
24483 <td class="entry_type">
24484 <span class="entry_type_name">int32</span>
24486 <span class="entry_type_visibility"> [system]</span>
24493 </td> <!-- entry_type -->
24495 <td class="entry_description">
24496 <p>Number of histogram buckets
24500 <td class="entry_units">
24503 <td class="entry_range">
24507 <td class="entry_hal_version">
24511 <td class="entry_tags">
24512 <ul class="entry_tags">
24513 <li><a href="#tag_FUTURE">FUTURE</a></li>
24520 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24521 <!-- end of entry -->
24524 <tr class="entry" id="static_android.statistics.info.maxFaceCount">
24525 <td class="entry_name
24527 android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Face<wbr/>Count
24529 <td class="entry_type">
24530 <span class="entry_type_name">int32</span>
24532 <span class="entry_type_visibility"> [public]</span>
24535 <span class="entry_type_hwlevel">[legacy] </span>
24540 </td> <!-- entry_type -->
24542 <td class="entry_description">
24543 <p>The maximum number of simultaneously detectable
24547 <td class="entry_units">
24550 <td class="entry_range">
24551 <p>0 for cameras without available face detection; otherwise:
24552 <code>>=4</code> for LIMITED or FULL hwlevel devices or
24553 <code>>0</code> for LEGACY devices.<wbr/></p>
24556 <td class="entry_hal_version">
24560 <td class="entry_tags">
24561 <ul class="entry_tags">
24562 <li><a href="#tag_BC">BC</a></li>
24569 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24570 <!-- end of entry -->
24573 <tr class="entry" id="static_android.statistics.info.maxHistogramCount">
24574 <td class="entry_name
24576 android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Histogram<wbr/>Count
24578 <td class="entry_type">
24579 <span class="entry_type_name">int32</span>
24581 <span class="entry_type_visibility"> [system]</span>
24588 </td> <!-- entry_type -->
24590 <td class="entry_description">
24591 <p>Maximum value possible for a histogram
24595 <td class="entry_units">
24598 <td class="entry_range">
24601 <td class="entry_hal_version">
24605 <td class="entry_tags">
24606 <ul class="entry_tags">
24607 <li><a href="#tag_FUTURE">FUTURE</a></li>
24614 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24615 <!-- end of entry -->
24618 <tr class="entry" id="static_android.statistics.info.maxSharpnessMapValue">
24619 <td class="entry_name
24621 android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Sharpness<wbr/>Map<wbr/>Value
24623 <td class="entry_type">
24624 <span class="entry_type_name">int32</span>
24626 <span class="entry_type_visibility"> [system]</span>
24633 </td> <!-- entry_type -->
24635 <td class="entry_description">
24636 <p>Maximum value possible for a sharpness map
24640 <td class="entry_units">
24643 <td class="entry_range">
24646 <td class="entry_hal_version">
24650 <td class="entry_tags">
24651 <ul class="entry_tags">
24652 <li><a href="#tag_FUTURE">FUTURE</a></li>
24659 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24660 <!-- end of entry -->
24663 <tr class="entry" id="static_android.statistics.info.sharpnessMapSize">
24664 <td class="entry_name
24666 android.<wbr/>statistics.<wbr/>info.<wbr/>sharpness<wbr/>Map<wbr/>Size
24668 <td class="entry_type">
24669 <span class="entry_type_name">int32</span>
24670 <span class="entry_type_container">x</span>
24672 <span class="entry_type_array">
24675 <span class="entry_type_visibility"> [system as size]</span>
24680 <div class="entry_type_notes">width x height</div>
24683 </td> <!-- entry_type -->
24685 <td class="entry_description">
24686 <p>Dimensions of the sharpness
24690 <td class="entry_units">
24693 <td class="entry_range">
24694 <p>Must be at least 32 x 32</p>
24697 <td class="entry_hal_version">
24701 <td class="entry_tags">
24702 <ul class="entry_tags">
24703 <li><a href="#tag_FUTURE">FUTURE</a></li>
24710 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24711 <!-- end of entry -->
24714 <tr class="entry" id="static_android.statistics.info.availableHotPixelMapModes">
24715 <td class="entry_name
24717 android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Map<wbr/>Modes
24719 <td class="entry_type">
24720 <span class="entry_type_name">byte</span>
24721 <span class="entry_type_container">x</span>
24723 <span class="entry_type_array">
24726 <span class="entry_type_visibility"> [public as boolean]</span>
24731 <div class="entry_type_notes">list of enums</div>
24734 </td> <!-- entry_type -->
24736 <td class="entry_description">
24737 <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
24738 supported by this camera device.<wbr/></p>
24741 <td class="entry_units">
24744 <td class="entry_range">
24745 <p>Any value listed in <a href="#controls_android.statistics.hotPixelMapMode">android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode</a></p>
24748 <td class="entry_hal_version">
24752 <td class="entry_tags">
24753 <ul class="entry_tags">
24754 <li><a href="#tag_V1">V1</a></li>
24755 <li><a href="#tag_RAW">RAW</a></li>
24760 <tr class="entries_header">
24761 <th class="th_details" colspan="6">Details</th>
24763 <tr class="entry_cont">
24764 <td class="entry_details" colspan="6">
24765 <p>If no hotpixel map output is available for this camera device,<wbr/> this will contain only
24766 <code>false</code>.<wbr/></p>
24767 <p>ON is always supported on devices with the RAW capability.<wbr/></p>
24772 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24773 <!-- end of entry -->
24776 <tr class="entry" id="static_android.statistics.info.availableLensShadingMapModes">
24777 <td class="entry_name
24779 android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Lens<wbr/>Shading<wbr/>Map<wbr/>Modes
24781 <td class="entry_type">
24782 <span class="entry_type_name">byte</span>
24783 <span class="entry_type_container">x</span>
24785 <span class="entry_type_array">
24788 <span class="entry_type_visibility"> [public as enumList]</span>
24793 <div class="entry_type_notes">list of enums</div>
24796 </td> <!-- entry_type -->
24798 <td class="entry_description">
24799 <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
24800 are supported by this camera device.<wbr/></p>
24803 <td class="entry_units">
24806 <td class="entry_range">
24807 <p>Any value listed in <a href="#controls_android.statistics.lensShadingMapMode">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode</a></p>
24810 <td class="entry_hal_version">
24814 <td class="entry_tags">
24818 <tr class="entries_header">
24819 <th class="th_details" colspan="6">Details</th>
24821 <tr class="entry_cont">
24822 <td class="entry_details" colspan="6">
24823 <p>If no lens shading map output is available for this camera device,<wbr/> this key will
24824 contain only OFF.<wbr/></p>
24825 <p>ON is always supported on devices with the RAW capability.<wbr/>
24826 LEGACY mode devices will always only support OFF.<wbr/></p>
24831 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24832 <!-- end of entry -->
24835 <tr class="entry" id="static_android.statistics.info.availableOisDataModes">
24836 <td class="entry_name
24838 android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Ois<wbr/>Data<wbr/>Modes
24840 <td class="entry_type">
24841 <span class="entry_type_name">byte</span>
24842 <span class="entry_type_container">x</span>
24844 <span class="entry_type_array">
24847 <span class="entry_type_visibility"> [public as enumList]</span>
24852 <div class="entry_type_notes">list of enums</div>
24855 </td> <!-- entry_type -->
24857 <td class="entry_description">
24858 <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
24859 are supported by this camera device.<wbr/></p>
24862 <td class="entry_units">
24865 <td class="entry_range">
24866 <p>Any value listed in <a href="#controls_android.statistics.oisDataMode">android.<wbr/>statistics.<wbr/>ois<wbr/>Data<wbr/>Mode</a></p>
24869 <td class="entry_hal_version">
24873 <td class="entry_tags">
24877 <tr class="entries_header">
24878 <th class="th_details" colspan="6">Details</th>
24880 <tr class="entry_cont">
24881 <td class="entry_details" colspan="6">
24882 <p>If no OIS data output is available for this camera device,<wbr/> this key will
24883 contain only OFF.<wbr/></p>
24888 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24889 <!-- end of entry -->
24896 <!-- end of kind -->
24898 <tr><td colspan="7" class="kind">dynamic</td></tr>
24900 <thead class="entries_header">
24902 <th class="th_name">Property Name</th>
24903 <th class="th_type">Type</th>
24904 <th class="th_description">Description</th>
24905 <th class="th_units">Units</th>
24906 <th class="th_range">Range</th>
24907 <th class="th_hal_version">Initial HIDL HAL version</th>
24908 <th class="th_tags">Tags</th>
24923 <tr class="entry" id="dynamic_android.statistics.faceDetectMode">
24924 <td class="entry_name
24926 android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode
24928 <td class="entry_type">
24929 <span class="entry_type_name entry_type_name_enum">byte</span>
24931 <span class="entry_type_visibility"> [public]</span>
24934 <span class="entry_type_hwlevel">[legacy] </span>
24938 <ul class="entry_type_enum">
24940 <span class="entry_type_enum_name">OFF (v3.2)</span>
24941 <span class="entry_type_enum_notes"><p>Do not include face detection statistics in capture
24942 results.<wbr/></p></span>
24945 <span class="entry_type_enum_name">SIMPLE (v3.2)</span>
24946 <span class="entry_type_enum_optional">[optional]</span>
24947 <span class="entry_type_enum_notes"><p>Return face rectangle and confidence values only.<wbr/></p></span>
24950 <span class="entry_type_enum_name">FULL (v3.2)</span>
24951 <span class="entry_type_enum_optional">[optional]</span>
24952 <span class="entry_type_enum_notes"><p>Return all face
24953 metadata.<wbr/></p>
24954 <p>In this mode,<wbr/> face rectangles,<wbr/> scores,<wbr/> landmarks,<wbr/> and face IDs are all valid.<wbr/></p></span>
24958 </td> <!-- entry_type -->
24960 <td class="entry_description">
24961 <p>Operating mode for the face detector
24965 <td class="entry_units">
24968 <td class="entry_range">
24969 <p><a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a></p>
24972 <td class="entry_hal_version">
24976 <td class="entry_tags">
24977 <ul class="entry_tags">
24978 <li><a href="#tag_BC">BC</a></li>
24983 <tr class="entries_header">
24984 <th class="th_details" colspan="6">Details</th>
24986 <tr class="entry_cont">
24987 <td class="entry_details" colspan="6">
24988 <p>Whether face detection is enabled,<wbr/> and whether it
24989 should output just the basic fields or the full set of
24994 <tr class="entries_header">
24995 <th class="th_details" colspan="6">HAL Implementation Details</th>
24997 <tr class="entry_cont">
24998 <td class="entry_details" colspan="6">
24999 <p>SIMPLE mode must fill in <a href="#dynamic_android.statistics.faceRectangles">android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles</a> and
25000 <a href="#dynamic_android.statistics.faceScores">android.<wbr/>statistics.<wbr/>face<wbr/>Scores</a>.<wbr/>
25001 FULL mode must also fill in <a href="#dynamic_android.statistics.faceIds">android.<wbr/>statistics.<wbr/>face<wbr/>Ids</a>,<wbr/> and
25002 <a href="#dynamic_android.statistics.faceLandmarks">android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks</a>.<wbr/></p>
25006 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25007 <!-- end of entry -->
25010 <tr class="entry" id="dynamic_android.statistics.faceIds">
25011 <td class="entry_name
25013 android.<wbr/>statistics.<wbr/>face<wbr/>Ids
25015 <td class="entry_type">
25016 <span class="entry_type_name">int32</span>
25017 <span class="entry_type_container">x</span>
25019 <span class="entry_type_array">
25022 <span class="entry_type_visibility"> [ndk_public]</span>
25025 <span class="entry_type_hwlevel">[legacy] </span>
25030 </td> <!-- entry_type -->
25032 <td class="entry_description">
25033 <p>List of unique IDs for detected faces.<wbr/></p>
25036 <td class="entry_units">
25039 <td class="entry_range">
25042 <td class="entry_hal_version">
25046 <td class="entry_tags">
25047 <ul class="entry_tags">
25048 <li><a href="#tag_BC">BC</a></li>
25053 <tr class="entries_header">
25054 <th class="th_details" colspan="6">Details</th>
25056 <tr class="entry_cont">
25057 <td class="entry_details" colspan="6">
25058 <p>Each detected face is given a unique ID that is valid for as long as the face is visible
25059 to the camera device.<wbr/> A face that leaves the field of view and later returns may be
25060 assigned a new ID.<wbr/></p>
25061 <p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> == FULL</p>
25066 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25067 <!-- end of entry -->
25070 <tr class="entry" id="dynamic_android.statistics.faceLandmarks">
25071 <td class="entry_name
25073 android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks
25075 <td class="entry_type">
25076 <span class="entry_type_name">int32</span>
25077 <span class="entry_type_container">x</span>
25079 <span class="entry_type_array">
25082 <span class="entry_type_visibility"> [ndk_public]</span>
25085 <span class="entry_type_hwlevel">[legacy] </span>
25088 <div class="entry_type_notes">(leftEyeX,<wbr/> leftEyeY,<wbr/> rightEyeX,<wbr/> rightEyeY,<wbr/> mouthX,<wbr/> mouthY)</div>
25091 </td> <!-- entry_type -->
25093 <td class="entry_description">
25094 <p>List of landmarks for detected
25098 <td class="entry_units">
25101 <td class="entry_range">
25104 <td class="entry_hal_version">
25108 <td class="entry_tags">
25109 <ul class="entry_tags">
25110 <li><a href="#tag_BC">BC</a></li>
25115 <tr class="entries_header">
25116 <th class="th_details" colspan="6">Details</th>
25118 <tr class="entry_cont">
25119 <td class="entry_details" colspan="6">
25120 <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
25121 <code>(0,<wbr/> 0)</code> being the top-left pixel of the active array.<wbr/></p>
25122 <p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> == FULL</p>
25127 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25128 <!-- end of entry -->
25131 <tr class="entry" id="dynamic_android.statistics.faceRectangles">
25132 <td class="entry_name
25134 android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles
25136 <td class="entry_type">
25137 <span class="entry_type_name">int32</span>
25138 <span class="entry_type_container">x</span>
25140 <span class="entry_type_array">
25143 <span class="entry_type_visibility"> [ndk_public as rectangle]</span>
25146 <span class="entry_type_hwlevel">[legacy] </span>
25149 <div class="entry_type_notes">(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax).<wbr/> (0,<wbr/>0) is top-left of active pixel area</div>
25152 </td> <!-- entry_type -->
25154 <td class="entry_description">
25155 <p>List of the bounding rectangles for detected
25159 <td class="entry_units">
25162 <td class="entry_range">
25165 <td class="entry_hal_version">
25169 <td class="entry_tags">
25170 <ul class="entry_tags">
25171 <li><a href="#tag_BC">BC</a></li>
25176 <tr class="entries_header">
25177 <th class="th_details" colspan="6">Details</th>
25179 <tr class="entry_cont">
25180 <td class="entry_details" colspan="6">
25181 <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
25182 <code>(0,<wbr/> 0)</code> being the top-left pixel of the active array.<wbr/></p>
25183 <p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> != OFF</p>
25188 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25189 <!-- end of entry -->
25192 <tr class="entry" id="dynamic_android.statistics.faceScores">
25193 <td class="entry_name
25195 android.<wbr/>statistics.<wbr/>face<wbr/>Scores
25197 <td class="entry_type">
25198 <span class="entry_type_name">byte</span>
25199 <span class="entry_type_container">x</span>
25201 <span class="entry_type_array">
25204 <span class="entry_type_visibility"> [ndk_public]</span>
25207 <span class="entry_type_hwlevel">[legacy] </span>
25212 </td> <!-- entry_type -->
25214 <td class="entry_description">
25215 <p>List of the face confidence scores for
25219 <td class="entry_units">
25222 <td class="entry_range">
25226 <td class="entry_hal_version">
25230 <td class="entry_tags">
25231 <ul class="entry_tags">
25232 <li><a href="#tag_BC">BC</a></li>
25237 <tr class="entries_header">
25238 <th class="th_details" colspan="6">Details</th>
25240 <tr class="entry_cont">
25241 <td class="entry_details" colspan="6">
25242 <p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> != OFF.<wbr/></p>
25246 <tr class="entries_header">
25247 <th class="th_details" colspan="6">HAL Implementation Details</th>
25249 <tr class="entry_cont">
25250 <td class="entry_details" colspan="6">
25251 <p>The value should be meaningful (for example,<wbr/> setting 100 at
25252 all times is illegal).<wbr/></p>
25256 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25257 <!-- end of entry -->
25260 <tr class="entry" id="dynamic_android.statistics.faces">
25261 <td class="entry_name
25263 android.<wbr/>statistics.<wbr/>faces
25265 <td class="entry_type">
25266 <span class="entry_type_name">int32</span>
25267 <span class="entry_type_container">x</span>
25269 <span class="entry_type_array">
25272 <span class="entry_type_visibility"> [java_public as face]</span>
25274 <span class="entry_type_synthetic">[synthetic] </span>
25276 <span class="entry_type_hwlevel">[legacy] </span>
25281 </td> <!-- entry_type -->
25283 <td class="entry_description">
25284 <p>List of the faces detected through camera face detection
25285 in this capture.<wbr/></p>
25288 <td class="entry_units">
25291 <td class="entry_range">
25294 <td class="entry_hal_version">
25298 <td class="entry_tags">
25302 <tr class="entries_header">
25303 <th class="th_details" colspan="6">Details</th>
25305 <tr class="entry_cont">
25306 <td class="entry_details" colspan="6">
25307 <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>
25312 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25313 <!-- end of entry -->
25316 <tr class="entry" id="dynamic_android.statistics.histogram">
25317 <td class="entry_name
25319 android.<wbr/>statistics.<wbr/>histogram
25321 <td class="entry_type">
25322 <span class="entry_type_name">int32</span>
25323 <span class="entry_type_container">x</span>
25325 <span class="entry_type_array">
25328 <span class="entry_type_visibility"> [system]</span>
25333 <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>
25336 </td> <!-- entry_type -->
25338 <td class="entry_description">
25339 <p>A 3-channel histogram based on the raw
25343 <td class="entry_units">
25346 <td class="entry_range">
25349 <td class="entry_hal_version">
25353 <td class="entry_tags">
25354 <ul class="entry_tags">
25355 <li><a href="#tag_FUTURE">FUTURE</a></li>
25360 <tr class="entries_header">
25361 <th class="th_details" colspan="6">Details</th>
25363 <tr class="entry_cont">
25364 <td class="entry_details" colspan="6">
25365 <p>The k'th bucket (0-based) covers the input range
25366 (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/>
25367 (k + 1) * w /<wbr/> N ).<wbr/> If only a monochrome sharpness map is
25368 supported,<wbr/> all channels should have the same data</p>
25373 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25374 <!-- end of entry -->
25377 <tr class="entry" id="dynamic_android.statistics.histogramMode">
25378 <td class="entry_name
25380 android.<wbr/>statistics.<wbr/>histogram<wbr/>Mode
25382 <td class="entry_type">
25383 <span class="entry_type_name entry_type_name_enum">byte</span>
25385 <span class="entry_type_visibility"> [system as boolean]</span>
25391 <ul class="entry_type_enum">
25393 <span class="entry_type_enum_name">OFF (v3.2)</span>
25396 <span class="entry_type_enum_name">ON (v3.2)</span>
25400 </td> <!-- entry_type -->
25402 <td class="entry_description">
25403 <p>Operating mode for histogram
25407 <td class="entry_units">
25410 <td class="entry_range">
25413 <td class="entry_hal_version">
25417 <td class="entry_tags">
25418 <ul class="entry_tags">
25419 <li><a href="#tag_FUTURE">FUTURE</a></li>
25426 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25427 <!-- end of entry -->
25430 <tr class="entry" id="dynamic_android.statistics.sharpnessMap">
25431 <td class="entry_name
25433 android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map
25435 <td class="entry_type">
25436 <span class="entry_type_name">int32</span>
25437 <span class="entry_type_container">x</span>
25439 <span class="entry_type_array">
25442 <span class="entry_type_visibility"> [system]</span>
25447 <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>
25450 </td> <!-- entry_type -->
25452 <td class="entry_description">
25453 <p>A 3-channel sharpness map,<wbr/> based on the raw
25457 <td class="entry_units">
25460 <td class="entry_range">
25463 <td class="entry_hal_version">
25467 <td class="entry_tags">
25468 <ul class="entry_tags">
25469 <li><a href="#tag_FUTURE">FUTURE</a></li>
25474 <tr class="entries_header">
25475 <th class="th_details" colspan="6">Details</th>
25477 <tr class="entry_cont">
25478 <td class="entry_details" colspan="6">
25479 <p>If only a monochrome sharpness map is supported,<wbr/>
25480 all channels should have the same data</p>
25485 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25486 <!-- end of entry -->
25489 <tr class="entry" id="dynamic_android.statistics.sharpnessMapMode">
25490 <td class="entry_name
25492 android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map<wbr/>Mode
25494 <td class="entry_type">
25495 <span class="entry_type_name entry_type_name_enum">byte</span>
25497 <span class="entry_type_visibility"> [system as boolean]</span>
25503 <ul class="entry_type_enum">
25505 <span class="entry_type_enum_name">OFF (v3.2)</span>
25508 <span class="entry_type_enum_name">ON (v3.2)</span>
25512 </td> <!-- entry_type -->
25514 <td class="entry_description">
25515 <p>Operating mode for sharpness map
25519 <td class="entry_units">
25522 <td class="entry_range">
25525 <td class="entry_hal_version">
25529 <td class="entry_tags">
25530 <ul class="entry_tags">
25531 <li><a href="#tag_FUTURE">FUTURE</a></li>
25538 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25539 <!-- end of entry -->
25542 <tr class="entry" id="dynamic_android.statistics.lensShadingCorrectionMap">
25543 <td class="entry_name
25545 android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Correction<wbr/>Map
25547 <td class="entry_type">
25548 <span class="entry_type_name">byte</span>
25550 <span class="entry_type_visibility"> [java_public as lensShadingMap]</span>
25553 <span class="entry_type_hwlevel">[full] </span>
25558 </td> <!-- entry_type -->
25560 <td class="entry_description">
25561 <p>The shading map is a low-resolution floating-point map
25562 that lists the coefficients used to correct for vignetting,<wbr/> for each
25563 Bayer color channel.<wbr/></p>
25566 <td class="entry_units">
25569 <td class="entry_range">
25570 <p>Each gain factor is >= 1</p>
25573 <td class="entry_hal_version">
25577 <td class="entry_tags">
25581 <tr class="entries_header">
25582 <th class="th_details" colspan="6">Details</th>
25584 <tr class="entry_cont">
25585 <td class="entry_details" colspan="6">
25586 <p>The map provided here is the same map that is used by the camera device to
25587 correct both color shading and vignetting for output non-RAW images.<wbr/></p>
25588 <p>When there is no lens shading correction applied to RAW
25589 output images (<a href="#static_android.sensor.info.lensShadingApplied">android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied</a> <code>==</code>
25590 false),<wbr/> this map is the complete lens shading correction
25591 map; when there is some lens shading correction applied to
25592 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
25593 correction map that needs to be applied to get shading
25594 corrected images that match the camera device's output for
25595 non-RAW formats.<wbr/></p>
25596 <p>For a complete shading correction map,<wbr/> the least shaded
25597 section of the image will have a gain factor of 1; all
25598 other sections will have gains above 1.<wbr/></p>
25599 <p>When <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> = TRANSFORM_<wbr/>MATRIX,<wbr/> the map
25600 will take into account the colorCorrection settings.<wbr/></p>
25601 <p>The shading map is for the entire active pixel array,<wbr/> and is not
25602 affected by the crop region specified in the request.<wbr/> Each shading map
25603 entry is the value of the shading compensation map over a specific
25604 pixel on the sensor.<wbr/> Specifically,<wbr/> with a (N x M) resolution shading
25605 map,<wbr/> and an active pixel array size (W x H),<wbr/> shading map entry
25606 (x,<wbr/>y) ϵ (0 ...<wbr/> N-1,<wbr/> 0 ...<wbr/> M-1) is the value of the shading map at
25607 pixel ( ((W-1)/<wbr/>(N-1)) * x,<wbr/> ((H-1)/<wbr/>(M-1)) * y) for the four color channels.<wbr/>
25608 The map is assumed to be bilinearly interpolated between the sample points.<wbr/></p>
25609 <p>The channel order is [R,<wbr/> Geven,<wbr/> Godd,<wbr/> B],<wbr/> where Geven is the green
25610 channel for the even rows of a Bayer pattern,<wbr/> and Godd is the odd rows.<wbr/>
25611 The shading map is stored in a fully interleaved format.<wbr/></p>
25612 <p>The shading map will generally have on the order of 30-40 rows and columns,<wbr/>
25613 and will be smaller than 64x64.<wbr/></p>
25614 <p>As an example,<wbr/> given a very small map defined as:</p>
25615 <pre><code>width,<wbr/>height = [ 4,<wbr/> 3 ]
25617 [ 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/>
25618 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/>
25619 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/>
25620 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/>
25621 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/>
25622 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 ]
25624 <p>The low-resolution scaling map images for each channel are
25625 (displayed using nearest-neighbor interpolation):</p>
25626 <p><img alt="Red lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/red_shading.png"/>
25627 <img alt="Green (even rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_e_shading.png"/>
25628 <img alt="Green (odd rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_o_shading.png"/>
25629 <img alt="Blue lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/blue_shading.png"/></p>
25630 <p>As a visualization only,<wbr/> inverting the full-color map to recover an
25631 image of a gray wall (using bicubic interpolation for visual quality) as captured by the sensor gives:</p>
25632 <p><img alt="Image of a uniform white wall (inverse shading map)" src="images/camera2/metadata/android.statistics.lensShadingMap/inv_shading.png"/></p>
25637 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25638 <!-- end of entry -->
25641 <tr class="entry" id="dynamic_android.statistics.lensShadingMap">
25642 <td class="entry_name
25644 android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map
25646 <td class="entry_type">
25647 <span class="entry_type_name">float</span>
25648 <span class="entry_type_container">x</span>
25650 <span class="entry_type_array">
25653 <span class="entry_type_visibility"> [ndk_public]</span>
25656 <span class="entry_type_hwlevel">[full] </span>
25659 <div class="entry_type_notes">2D array of float gain factors per channel to correct lens shading</div>
25662 </td> <!-- entry_type -->
25664 <td class="entry_description">
25665 <p>The shading map is a low-resolution floating-point map
25666 that lists the coefficients used to correct for vignetting and color shading,<wbr/>
25667 for each Bayer color channel of RAW image data.<wbr/></p>
25670 <td class="entry_units">
25673 <td class="entry_range">
25674 <p>Each gain factor is >= 1</p>
25677 <td class="entry_hal_version">
25681 <td class="entry_tags">
25685 <tr class="entries_header">
25686 <th class="th_details" colspan="6">Details</th>
25688 <tr class="entry_cont">
25689 <td class="entry_details" colspan="6">
25690 <p>The map provided here is the same map that is used by the camera device to
25691 correct both color shading and vignetting for output non-RAW images.<wbr/></p>
25692 <p>When there is no lens shading correction applied to RAW
25693 output images (<a href="#static_android.sensor.info.lensShadingApplied">android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied</a> <code>==</code>
25694 false),<wbr/> this map is the complete lens shading correction
25695 map; when there is some lens shading correction applied to
25696 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
25697 correction map that needs to be applied to get shading
25698 corrected images that match the camera device's output for
25699 non-RAW formats.<wbr/></p>
25700 <p>For a complete shading correction map,<wbr/> the least shaded
25701 section of the image will have a gain factor of 1; all
25702 other sections will have gains above 1.<wbr/></p>
25703 <p>When <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> = TRANSFORM_<wbr/>MATRIX,<wbr/> the map
25704 will take into account the colorCorrection settings.<wbr/></p>
25705 <p>The shading map is for the entire active pixel array,<wbr/> and is not
25706 affected by the crop region specified in the request.<wbr/> Each shading map
25707 entry is the value of the shading compensation map over a specific
25708 pixel on the sensor.<wbr/> Specifically,<wbr/> with a (N x M) resolution shading
25709 map,<wbr/> and an active pixel array size (W x H),<wbr/> shading map entry
25710 (x,<wbr/>y) ϵ (0 ...<wbr/> N-1,<wbr/> 0 ...<wbr/> M-1) is the value of the shading map at
25711 pixel ( ((W-1)/<wbr/>(N-1)) * x,<wbr/> ((H-1)/<wbr/>(M-1)) * y) for the four color channels.<wbr/>
25712 The map is assumed to be bilinearly interpolated between the sample points.<wbr/></p>
25713 <p>The channel order is [R,<wbr/> Geven,<wbr/> Godd,<wbr/> B],<wbr/> where Geven is the green
25714 channel for the even rows of a Bayer pattern,<wbr/> and Godd is the odd rows.<wbr/>
25715 The shading map is stored in a fully interleaved format,<wbr/> and its size
25716 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>
25717 <p>The shading map will generally have on the order of 30-40 rows and columns,<wbr/>
25718 and will be smaller than 64x64.<wbr/></p>
25719 <p>As an example,<wbr/> given a very small map defined as:</p>
25720 <pre><code><a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a> = [ 4,<wbr/> 3 ]
25721 <a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> =
25722 [ 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/>
25723 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/>
25724 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/>
25725 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/>
25726 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/>
25727 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 ]
25729 <p>The low-resolution scaling map images for each channel are
25730 (displayed using nearest-neighbor interpolation):</p>
25731 <p><img alt="Red lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/red_shading.png"/>
25732 <img alt="Green (even rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_e_shading.png"/>
25733 <img alt="Green (odd rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_o_shading.png"/>
25734 <img alt="Blue lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/blue_shading.png"/></p>
25735 <p>As a visualization only,<wbr/> inverting the full-color map to recover an
25736 image of a gray wall (using bicubic interpolation for visual quality)
25737 as captured by the sensor gives:</p>
25738 <p><img alt="Image of a uniform white wall (inverse shading map)" src="images/camera2/metadata/android.statistics.lensShadingMap/inv_shading.png"/></p>
25739 <p>Note that the RAW image data might be subject to lens shading
25740 correction not reported on this map.<wbr/> Query
25741 <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
25742 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>
25743 is TRUE,<wbr/> the RAW image data is subject to partial or full lens shading
25744 correction.<wbr/> In the case full lens shading correction is applied to RAW
25745 images,<wbr/> the gain factor map reported in this key will contain all 1.<wbr/>0 gains.<wbr/>
25746 In other words,<wbr/> the map reported in this key is the remaining lens shading
25747 that needs to be applied on the RAW image to get images without lens shading
25748 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
25753 <tr class="entries_header">
25754 <th class="th_details" colspan="6">HAL Implementation Details</th>
25756 <tr class="entry_cont">
25757 <td class="entry_details" colspan="6">
25758 <p>The lens shading map calculation may depend on exposure and white balance statistics.<wbr/>
25759 When AE and AWB are in AUTO modes
25760 (<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
25761 may have all the information it need to generate most accurate lens shading map.<wbr/> When
25762 AE or AWB are in manual mode
25763 (<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
25764 may be adversely impacted by manual exposure or white balance parameters.<wbr/> To avoid
25765 generating unreliable shading map data,<wbr/> the HAL may choose to lock the shading map with
25766 the latest known good map generated when the AE and AWB are in AUTO modes.<wbr/></p>
25770 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25771 <!-- end of entry -->
25774 <tr class="entry" id="dynamic_android.statistics.predictedColorGains">
25775 <td class="entry_name
25776 entry_name_deprecated
25778 android.<wbr/>statistics.<wbr/>predicted<wbr/>Color<wbr/>Gains
25780 <td class="entry_type">
25781 <span class="entry_type_name">float</span>
25782 <span class="entry_type_container">x</span>
25784 <span class="entry_type_array">
25787 <span class="entry_type_visibility"> [hidden]</span>
25791 <span class="entry_type_deprecated">[deprecated] </span>
25793 <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div>
25796 </td> <!-- entry_type -->
25798 <td class="entry_description">
25799 <p>The best-fit color channel gains calculated
25800 by the camera device's statistics units for the current output frame.<wbr/></p>
25803 <td class="entry_units">
25806 <td class="entry_range">
25807 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
25810 <td class="entry_hal_version">
25814 <td class="entry_tags">
25818 <tr class="entries_header">
25819 <th class="th_details" colspan="6">Details</th>
25821 <tr class="entry_cont">
25822 <td class="entry_details" colspan="6">
25823 <p>This may be different than the gains used for this frame,<wbr/>
25824 since statistics processing on data from a new frame
25825 typically completes after the transform has already been
25826 applied to that frame.<wbr/></p>
25827 <p>The 4 channel gains are defined in Bayer domain,<wbr/>
25828 see <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> for details.<wbr/></p>
25829 <p>This value should always be calculated by the auto-white balance (AWB) block,<wbr/>
25830 regardless of the android.<wbr/>control.<wbr/>* current values.<wbr/></p>
25835 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25836 <!-- end of entry -->
25839 <tr class="entry" id="dynamic_android.statistics.predictedColorTransform">
25840 <td class="entry_name
25841 entry_name_deprecated
25843 android.<wbr/>statistics.<wbr/>predicted<wbr/>Color<wbr/>Transform
25845 <td class="entry_type">
25846 <span class="entry_type_name">rational</span>
25847 <span class="entry_type_container">x</span>
25849 <span class="entry_type_array">
25852 <span class="entry_type_visibility"> [hidden]</span>
25856 <span class="entry_type_deprecated">[deprecated] </span>
25858 <div class="entry_type_notes">3x3 rational matrix in row-major order</div>
25861 </td> <!-- entry_type -->
25863 <td class="entry_description">
25864 <p>The best-fit color transform matrix estimate
25865 calculated by the camera device's statistics units for the current
25866 output frame.<wbr/></p>
25869 <td class="entry_units">
25872 <td class="entry_range">
25873 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
25876 <td class="entry_hal_version">
25880 <td class="entry_tags">
25884 <tr class="entries_header">
25885 <th class="th_details" colspan="6">Details</th>
25887 <tr class="entry_cont">
25888 <td class="entry_details" colspan="6">
25889 <p>The camera device will provide the estimate from its
25890 statistics unit on the white balance transforms to use
25891 for the next frame.<wbr/> These are the values the camera device believes
25892 are the best fit for the current output frame.<wbr/> This may
25893 be different than the transform used for this frame,<wbr/> since
25894 statistics processing on data from a new frame typically
25895 completes after the transform has already been applied to
25896 that frame.<wbr/></p>
25897 <p>These estimates must be provided for all frames,<wbr/> even if
25898 capture settings and color transforms are set by the application.<wbr/></p>
25899 <p>This value should always be calculated by the auto-white balance (AWB) block,<wbr/>
25900 regardless of the android.<wbr/>control.<wbr/>* current values.<wbr/></p>
25905 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25906 <!-- end of entry -->
25909 <tr class="entry" id="dynamic_android.statistics.sceneFlicker">
25910 <td class="entry_name
25912 android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker
25914 <td class="entry_type">
25915 <span class="entry_type_name entry_type_name_enum">byte</span>
25917 <span class="entry_type_visibility"> [public]</span>
25920 <span class="entry_type_hwlevel">[full] </span>
25924 <ul class="entry_type_enum">
25926 <span class="entry_type_enum_name">NONE (v3.2)</span>
25927 <span class="entry_type_enum_notes"><p>The camera device does not detect any flickering illumination
25928 in the current scene.<wbr/></p></span>
25931 <span class="entry_type_enum_name">50HZ (v3.2)</span>
25932 <span class="entry_type_enum_notes"><p>The camera device detects illumination flickering at 50Hz
25933 in the current scene.<wbr/></p></span>
25936 <span class="entry_type_enum_name">60HZ (v3.2)</span>
25937 <span class="entry_type_enum_notes"><p>The camera device detects illumination flickering at 60Hz
25938 in the current scene.<wbr/></p></span>
25942 </td> <!-- entry_type -->
25944 <td class="entry_description">
25945 <p>The camera device estimated scene illumination lighting
25946 frequency.<wbr/></p>
25949 <td class="entry_units">
25952 <td class="entry_range">
25955 <td class="entry_hal_version">
25959 <td class="entry_tags">
25963 <tr class="entries_header">
25964 <th class="th_details" colspan="6">Details</th>
25966 <tr class="entry_cont">
25967 <td class="entry_details" colspan="6">
25968 <p>Many light sources,<wbr/> such as most fluorescent lights,<wbr/> flicker at a rate
25969 that depends on the local utility power standards.<wbr/> This flicker must be
25970 accounted for by auto-exposure routines to avoid artifacts in captured images.<wbr/>
25971 The camera device uses this entry to tell the application what the scene
25972 illuminant frequency is.<wbr/></p>
25973 <p>When manual exposure control is enabled
25974 (<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> ==
25975 OFF</code>),<wbr/> the <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> doesn't perform
25976 antibanding,<wbr/> and the application can ensure it selects
25977 exposure times that do not cause banding issues by looking
25978 into this metadata field.<wbr/> See
25979 <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> for more details.<wbr/></p>
25980 <p>Reports NONE if there doesn't appear to be flickering illumination.<wbr/></p>
25985 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25986 <!-- end of entry -->
25989 <tr class="entry" id="dynamic_android.statistics.hotPixelMapMode">
25990 <td class="entry_name
25992 android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode
25994 <td class="entry_type">
25995 <span class="entry_type_name entry_type_name_enum">byte</span>
25997 <span class="entry_type_visibility"> [public as boolean]</span>
26003 <ul class="entry_type_enum">
26005 <span class="entry_type_enum_name">OFF (v3.2)</span>
26006 <span class="entry_type_enum_notes"><p>Hot pixel map production is disabled.<wbr/></p></span>
26009 <span class="entry_type_enum_name">ON (v3.2)</span>
26010 <span class="entry_type_enum_notes"><p>Hot pixel map production is enabled.<wbr/></p></span>
26014 </td> <!-- entry_type -->
26016 <td class="entry_description">
26017 <p>Operating mode for hot pixel map generation.<wbr/></p>
26020 <td class="entry_units">
26023 <td class="entry_range">
26024 <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>
26027 <td class="entry_hal_version">
26031 <td class="entry_tags">
26032 <ul class="entry_tags">
26033 <li><a href="#tag_V1">V1</a></li>
26034 <li><a href="#tag_RAW">RAW</a></li>
26039 <tr class="entries_header">
26040 <th class="th_details" colspan="6">Details</th>
26042 <tr class="entry_cont">
26043 <td class="entry_details" colspan="6">
26044 <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/>
26045 If set to <code>false</code>,<wbr/> no hot pixel map will be returned.<wbr/></p>
26050 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26051 <!-- end of entry -->
26054 <tr class="entry" id="dynamic_android.statistics.hotPixelMap">
26055 <td class="entry_name
26057 android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map
26059 <td class="entry_type">
26060 <span class="entry_type_name">int32</span>
26061 <span class="entry_type_container">x</span>
26063 <span class="entry_type_array">
26066 <span class="entry_type_visibility"> [public as point]</span>
26071 <div class="entry_type_notes">list of coordinates based on android.<wbr/>sensor.<wbr/>pixel<wbr/>Array<wbr/>Size</div>
26074 </td> <!-- entry_type -->
26076 <td class="entry_description">
26077 <p>List of <code>(x,<wbr/> y)</code> coordinates of hot/<wbr/>defective pixels on the sensor.<wbr/></p>
26080 <td class="entry_units">
26083 <td class="entry_range">
26084 <p>n <= number of pixels on the sensor.<wbr/>
26085 The <code>(x,<wbr/> y)</code> coordinates must be bounded by
26086 <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
26089 <td class="entry_hal_version">
26093 <td class="entry_tags">
26094 <ul class="entry_tags">
26095 <li><a href="#tag_V1">V1</a></li>
26096 <li><a href="#tag_RAW">RAW</a></li>
26101 <tr class="entries_header">
26102 <th class="th_details" colspan="6">Details</th>
26104 <tr class="entry_cont">
26105 <td class="entry_details" colspan="6">
26106 <p>A coordinate <code>(x,<wbr/> y)</code> must lie between <code>(0,<wbr/> 0)</code>,<wbr/> and
26107 <code>(width - 1,<wbr/> height - 1)</code> (inclusive),<wbr/> which are the top-left and
26108 bottom-right of the pixel array,<wbr/> respectively.<wbr/> The width and
26109 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/>
26110 This may include hot pixels that lie outside of the active array
26111 bounds given by <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
26115 <tr class="entries_header">
26116 <th class="th_details" colspan="6">HAL Implementation Details</th>
26118 <tr class="entry_cont">
26119 <td class="entry_details" colspan="6">
26120 <p>A hotpixel map contains the coordinates of pixels on the camera
26121 sensor that do report valid values (usually due to defects in
26122 the camera sensor).<wbr/> This includes pixels that are stuck at certain
26123 values,<wbr/> or have a response that does not accuractly encode the
26124 incoming light from the scene.<wbr/></p>
26125 <p>To avoid performance issues,<wbr/> there should be significantly fewer hot
26126 pixels than actual pixels on the camera sensor.<wbr/></p>
26130 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26131 <!-- end of entry -->
26134 <tr class="entry" id="dynamic_android.statistics.lensShadingMapMode">
26135 <td class="entry_name
26137 android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode
26139 <td class="entry_type">
26140 <span class="entry_type_name entry_type_name_enum">byte</span>
26142 <span class="entry_type_visibility"> [public]</span>
26145 <span class="entry_type_hwlevel">[full] </span>
26149 <ul class="entry_type_enum">
26151 <span class="entry_type_enum_name">OFF (v3.2)</span>
26152 <span class="entry_type_enum_notes"><p>Do not include a lens shading map in the capture result.<wbr/></p></span>
26155 <span class="entry_type_enum_name">ON (v3.2)</span>
26156 <span class="entry_type_enum_notes"><p>Include a lens shading map in the capture result.<wbr/></p></span>
26160 </td> <!-- entry_type -->
26162 <td class="entry_description">
26163 <p>Whether the camera device will output the lens
26164 shading map in output result metadata.<wbr/></p>
26167 <td class="entry_units">
26170 <td class="entry_range">
26171 <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>
26174 <td class="entry_hal_version">
26178 <td class="entry_tags">
26179 <ul class="entry_tags">
26180 <li><a href="#tag_RAW">RAW</a></li>
26185 <tr class="entries_header">
26186 <th class="th_details" colspan="6">Details</th>
26188 <tr class="entry_cont">
26189 <td class="entry_details" colspan="6">
26190 <p>When set to ON,<wbr/>
26191 <a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> will be provided in
26192 the output result metadata.<wbr/></p>
26193 <p>ON is always supported on devices with the RAW capability.<wbr/></p>
26198 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26199 <!-- end of entry -->
26202 <tr class="entry" id="dynamic_android.statistics.oisDataMode">
26203 <td class="entry_name
26205 android.<wbr/>statistics.<wbr/>ois<wbr/>Data<wbr/>Mode
26207 <td class="entry_type">
26208 <span class="entry_type_name entry_type_name_enum">byte</span>
26210 <span class="entry_type_visibility"> [public]</span>
26216 <ul class="entry_type_enum">
26218 <span class="entry_type_enum_name">OFF (v3.3)</span>
26219 <span class="entry_type_enum_notes"><p>Do not include OIS data in the capture result.<wbr/></p></span>
26222 <span class="entry_type_enum_name">ON (v3.3)</span>
26223 <span class="entry_type_enum_notes"><p>Include OIS data in the capture result.<wbr/></p></span>
26227 </td> <!-- entry_type -->
26229 <td class="entry_description">
26230 <p>A control for selecting whether OIS position information is included in output
26231 result metadata.<wbr/></p>
26234 <td class="entry_units">
26237 <td class="entry_range">
26238 <p><a href="#static_android.statistics.info.availableOisDataModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Ois<wbr/>Data<wbr/>Modes</a></p>
26241 <td class="entry_hal_version">
26245 <td class="entry_tags">
26251 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26252 <!-- end of entry -->
26255 <tr class="entry" id="dynamic_android.statistics.oisTimestamps">
26256 <td class="entry_name
26258 android.<wbr/>statistics.<wbr/>ois<wbr/>Timestamps
26260 <td class="entry_type">
26261 <span class="entry_type_name">int64</span>
26262 <span class="entry_type_container">x</span>
26264 <span class="entry_type_array">
26267 <span class="entry_type_visibility"> [ndk_public]</span>
26274 </td> <!-- entry_type -->
26276 <td class="entry_description">
26277 <p>An array of timestamps of OIS samples,<wbr/> in nanoseconds.<wbr/></p>
26280 <td class="entry_units">
26284 <td class="entry_range">
26287 <td class="entry_hal_version">
26291 <td class="entry_tags">
26295 <tr class="entries_header">
26296 <th class="th_details" colspan="6">Details</th>
26298 <tr class="entry_cont">
26299 <td class="entry_details" colspan="6">
26300 <p>The array contains the timestamps of OIS samples.<wbr/> The timestamps are in the same
26301 timebase as and comparable to <a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a>.<wbr/></p>
26306 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26307 <!-- end of entry -->
26310 <tr class="entry" id="dynamic_android.statistics.oisXShifts">
26311 <td class="entry_name
26313 android.<wbr/>statistics.<wbr/>ois<wbr/>XShifts
26315 <td class="entry_type">
26316 <span class="entry_type_name">float</span>
26317 <span class="entry_type_container">x</span>
26319 <span class="entry_type_array">
26322 <span class="entry_type_visibility"> [ndk_public]</span>
26329 </td> <!-- entry_type -->
26331 <td class="entry_description">
26332 <p>An array of shifts of OIS samples,<wbr/> in x direction.<wbr/></p>
26335 <td class="entry_units">
26336 Pixels in active array.<wbr/>
26339 <td class="entry_range">
26342 <td class="entry_hal_version">
26346 <td class="entry_tags">
26350 <tr class="entries_header">
26351 <th class="th_details" colspan="6">Details</th>
26353 <tr class="entry_cont">
26354 <td class="entry_details" colspan="6">
26355 <p>The array contains the amount of shifts in x direction,<wbr/> in pixels,<wbr/> based on OIS samples.<wbr/>
26356 A positive value is a shift from left to right in active array coordinate system.<wbr/> For
26357 example,<wbr/> if the optical center is (1000,<wbr/> 500) in active array coordinates,<wbr/> a shift of
26358 (3,<wbr/> 0) puts the new optical center at (1003,<wbr/> 500).<wbr/></p>
26359 <p>The number of shifts must match the number of timestamps in
26360 <a href="#dynamic_android.statistics.oisTimestamps">android.<wbr/>statistics.<wbr/>ois<wbr/>Timestamps</a>.<wbr/></p>
26365 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26366 <!-- end of entry -->
26369 <tr class="entry" id="dynamic_android.statistics.oisYShifts">
26370 <td class="entry_name
26372 android.<wbr/>statistics.<wbr/>ois<wbr/>YShifts
26374 <td class="entry_type">
26375 <span class="entry_type_name">float</span>
26376 <span class="entry_type_container">x</span>
26378 <span class="entry_type_array">
26381 <span class="entry_type_visibility"> [ndk_public]</span>
26388 </td> <!-- entry_type -->
26390 <td class="entry_description">
26391 <p>An array of shifts of OIS samples,<wbr/> in y direction.<wbr/></p>
26394 <td class="entry_units">
26395 Pixels in active array.<wbr/>
26398 <td class="entry_range">
26401 <td class="entry_hal_version">
26405 <td class="entry_tags">
26409 <tr class="entries_header">
26410 <th class="th_details" colspan="6">Details</th>
26412 <tr class="entry_cont">
26413 <td class="entry_details" colspan="6">
26414 <p>The array contains the amount of shifts in y direction,<wbr/> in pixels,<wbr/> based on OIS samples.<wbr/>
26415 A positive value is a shift from top to bottom in active array coordinate system.<wbr/> For
26416 example,<wbr/> if the optical center is (1000,<wbr/> 500) in active array coordinates,<wbr/> a shift of
26417 (0,<wbr/> 5) puts the new optical center at (1000,<wbr/> 505).<wbr/></p>
26418 <p>The number of shifts must match the number of timestamps in
26419 <a href="#dynamic_android.statistics.oisTimestamps">android.<wbr/>statistics.<wbr/>ois<wbr/>Timestamps</a>.<wbr/></p>
26424 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26425 <!-- end of entry -->
26428 <tr class="entry" id="dynamic_android.statistics.oisSamples">
26429 <td class="entry_name
26431 android.<wbr/>statistics.<wbr/>ois<wbr/>Samples
26433 <td class="entry_type">
26434 <span class="entry_type_name">float</span>
26435 <span class="entry_type_container">x</span>
26437 <span class="entry_type_array">
26440 <span class="entry_type_visibility"> [java_public as oisSample]</span>
26442 <span class="entry_type_synthetic">[synthetic] </span>
26448 </td> <!-- entry_type -->
26450 <td class="entry_description">
26451 <p>An array of OIS samples.<wbr/></p>
26454 <td class="entry_units">
26457 <td class="entry_range">
26460 <td class="entry_hal_version">
26464 <td class="entry_tags">
26468 <tr class="entries_header">
26469 <th class="th_details" colspan="6">Details</th>
26471 <tr class="entry_cont">
26472 <td class="entry_details" colspan="6">
26473 <p>Each OIS sample contains the timestamp and the amount of shifts in x and y direction,<wbr/>
26474 in pixels,<wbr/> of the OIS sample.<wbr/></p>
26475 <p>A positive value for a shift in x direction is a shift from left to right in active array
26476 coordinate system.<wbr/> For example,<wbr/> if the optical center is (1000,<wbr/> 500) in active array
26477 coordinates,<wbr/> a shift of (3,<wbr/> 0) puts the new optical center at (1003,<wbr/> 500).<wbr/></p>
26478 <p>A positive value for a shift in y direction is a shift from top to bottom in active array
26479 coordinate system.<wbr/> For example,<wbr/> if the optical center is (1000,<wbr/> 500) in active array
26480 coordinates,<wbr/> a shift of (0,<wbr/> 5) puts the new optical center at (1000,<wbr/> 505).<wbr/></p>
26485 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26486 <!-- end of entry -->
26490 <!-- end of kind -->
26493 <!-- end of section -->
26494 <tr><td colspan="7" id="section_tonemap" class="section">tonemap</td></tr>
26497 <tr><td colspan="7" class="kind">controls</td></tr>
26499 <thead class="entries_header">
26501 <th class="th_name">Property Name</th>
26502 <th class="th_type">Type</th>
26503 <th class="th_description">Description</th>
26504 <th class="th_units">Units</th>
26505 <th class="th_range">Range</th>
26506 <th class="th_hal_version">Initial HIDL HAL version</th>
26507 <th class="th_tags">Tags</th>
26522 <tr class="entry" id="controls_android.tonemap.curveBlue">
26523 <td class="entry_name
26525 android.<wbr/>tonemap.<wbr/>curve<wbr/>Blue
26527 <td class="entry_type">
26528 <span class="entry_type_name">float</span>
26529 <span class="entry_type_container">x</span>
26531 <span class="entry_type_array">
26534 <span class="entry_type_visibility"> [ndk_public]</span>
26537 <span class="entry_type_hwlevel">[full] </span>
26540 <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>
26543 </td> <!-- entry_type -->
26545 <td class="entry_description">
26546 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the blue
26547 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
26548 CONTRAST_<wbr/>CURVE.<wbr/></p>
26551 <td class="entry_units">
26554 <td class="entry_range">
26557 <td class="entry_hal_version">
26561 <td class="entry_tags">
26565 <tr class="entries_header">
26566 <th class="th_details" colspan="6">Details</th>
26568 <tr class="entry_cont">
26569 <td class="entry_details" colspan="6">
26570 <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
26575 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26576 <!-- end of entry -->
26579 <tr class="entry" id="controls_android.tonemap.curveGreen">
26580 <td class="entry_name
26582 android.<wbr/>tonemap.<wbr/>curve<wbr/>Green
26584 <td class="entry_type">
26585 <span class="entry_type_name">float</span>
26586 <span class="entry_type_container">x</span>
26588 <span class="entry_type_array">
26591 <span class="entry_type_visibility"> [ndk_public]</span>
26594 <span class="entry_type_hwlevel">[full] </span>
26597 <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>
26600 </td> <!-- entry_type -->
26602 <td class="entry_description">
26603 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the green
26604 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
26605 CONTRAST_<wbr/>CURVE.<wbr/></p>
26608 <td class="entry_units">
26611 <td class="entry_range">
26614 <td class="entry_hal_version">
26618 <td class="entry_tags">
26622 <tr class="entries_header">
26623 <th class="th_details" colspan="6">Details</th>
26625 <tr class="entry_cont">
26626 <td class="entry_details" colspan="6">
26627 <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
26632 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26633 <!-- end of entry -->
26636 <tr class="entry" id="controls_android.tonemap.curveRed">
26637 <td class="entry_name
26639 android.<wbr/>tonemap.<wbr/>curve<wbr/>Red
26641 <td class="entry_type">
26642 <span class="entry_type_name">float</span>
26643 <span class="entry_type_container">x</span>
26645 <span class="entry_type_array">
26648 <span class="entry_type_visibility"> [ndk_public]</span>
26651 <span class="entry_type_hwlevel">[full] </span>
26654 <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>
26657 </td> <!-- entry_type -->
26659 <td class="entry_description">
26660 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the red
26661 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
26662 CONTRAST_<wbr/>CURVE.<wbr/></p>
26665 <td class="entry_units">
26668 <td class="entry_range">
26669 <p>0-1 on both input and output coordinates,<wbr/> normalized
26670 as a floating-point value such that 0 == black and 1 == white.<wbr/></p>
26673 <td class="entry_hal_version">
26677 <td class="entry_tags">
26681 <tr class="entries_header">
26682 <th class="th_details" colspan="6">Details</th>
26684 <tr class="entry_cont">
26685 <td class="entry_details" colspan="6">
26686 <p>Each channel's curve is defined by an array of control points:</p>
26687 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> =
26688 [ P0in,<wbr/> P0out,<wbr/> P1in,<wbr/> P1out,<wbr/> P2in,<wbr/> P2out,<wbr/> P3in,<wbr/> P3out,<wbr/> ...,<wbr/> PNin,<wbr/> PNout ]
26689 2 <= N <= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
26690 <p>These are sorted in order of increasing <code>Pin</code>; it is
26691 required that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
26692 define a complete mapping.<wbr/> For input values between control points,<wbr/>
26693 the camera device must linearly interpolate between the control
26695 <p>Each curve can have an independent number of points,<wbr/> and the number
26696 of points can be less than max (that is,<wbr/> the request doesn't have to
26697 always provide a curve with number of points equivalent to
26698 <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
26699 <p>For devices with MONOCHROME capability,<wbr/> only red channel is used.<wbr/> Green and blue channels
26700 are ignored.<wbr/></p>
26701 <p>A few examples,<wbr/> and their corresponding graphical mappings; these
26702 only specify the red channel and the precision is limited to 4
26703 digits,<wbr/> for conciseness.<wbr/></p>
26704 <p>Linear mapping:</p>
26705 <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 ]
26707 <p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
26708 <p>Invert mapping:</p>
26709 <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 ]
26711 <p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
26712 <p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
26713 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
26714 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/>
26715 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/>
26716 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/>
26717 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 ]
26719 <p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
26720 <p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
26721 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
26722 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/>
26723 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/>
26724 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/>
26725 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 ]
26727 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
26731 <tr class="entries_header">
26732 <th class="th_details" colspan="6">HAL Implementation Details</th>
26734 <tr class="entry_cont">
26735 <td class="entry_details" colspan="6">
26736 <p>For good quality of mapping,<wbr/> at least 128 control points are
26737 preferred.<wbr/></p>
26738 <p>A typical use case of this would be a gamma-1/<wbr/>2.<wbr/>2 curve,<wbr/> with as many
26739 control points used as are available.<wbr/></p>
26743 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26744 <!-- end of entry -->
26747 <tr class="entry" id="controls_android.tonemap.curve">
26748 <td class="entry_name
26750 android.<wbr/>tonemap.<wbr/>curve
26752 <td class="entry_type">
26753 <span class="entry_type_name">float</span>
26755 <span class="entry_type_visibility"> [java_public as tonemapCurve]</span>
26757 <span class="entry_type_synthetic">[synthetic] </span>
26759 <span class="entry_type_hwlevel">[full] </span>
26764 </td> <!-- entry_type -->
26766 <td class="entry_description">
26767 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a>
26768 is CONTRAST_<wbr/>CURVE.<wbr/></p>
26771 <td class="entry_units">
26774 <td class="entry_range">
26777 <td class="entry_hal_version">
26781 <td class="entry_tags">
26785 <tr class="entries_header">
26786 <th class="th_details" colspan="6">Details</th>
26788 <tr class="entry_cont">
26789 <td class="entry_details" colspan="6">
26790 <p>The tonemapCurve consist of three curves for each of red,<wbr/> green,<wbr/> and blue
26791 channels respectively.<wbr/> The following example uses the red channel as an
26792 example.<wbr/> The same logic applies to green and blue channel.<wbr/>
26793 Each channel's curve is defined by an array of control points:</p>
26794 <pre><code>curveRed =
26795 [ 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) ]
26796 2 <= N <= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
26797 <p>These are sorted in order of increasing <code>Pin</code>; it is always
26798 guaranteed that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
26799 define a complete mapping.<wbr/> For input values between control points,<wbr/>
26800 the camera device must linearly interpolate between the control
26802 <p>Each curve can have an independent number of points,<wbr/> and the number
26803 of points can be less than max (that is,<wbr/> the request doesn't have to
26804 always provide a curve with number of points equivalent to
26805 <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
26806 <p>For devices with MONOCHROME capability,<wbr/> only red channel is used.<wbr/> Green and blue channels
26807 are ignored.<wbr/></p>
26808 <p>A few examples,<wbr/> and their corresponding graphical mappings; these
26809 only specify the red channel and the precision is limited to 4
26810 digits,<wbr/> for conciseness.<wbr/></p>
26811 <p>Linear mapping:</p>
26812 <pre><code>curveRed = [ (0,<wbr/> 0),<wbr/> (1.<wbr/>0,<wbr/> 1.<wbr/>0) ]
26814 <p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
26815 <p>Invert mapping:</p>
26816 <pre><code>curveRed = [ (0,<wbr/> 1.<wbr/>0),<wbr/> (1.<wbr/>0,<wbr/> 0) ]
26818 <p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
26819 <p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
26820 <pre><code>curveRed = [
26821 (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/>
26822 (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/>
26823 (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/>
26824 (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) ]
26826 <p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
26827 <p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
26828 <pre><code>curveRed = [
26829 (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/>
26830 (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/>
26831 (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/>
26832 (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) ]
26834 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
26838 <tr class="entries_header">
26839 <th class="th_details" colspan="6">HAL Implementation Details</th>
26841 <tr class="entry_cont">
26842 <td class="entry_details" colspan="6">
26843 <p>This entry is created by the framework from the curveRed,<wbr/> curveGreen and
26844 curveBlue entries.<wbr/></p>
26848 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26849 <!-- end of entry -->
26852 <tr class="entry" id="controls_android.tonemap.mode">
26853 <td class="entry_name
26855 android.<wbr/>tonemap.<wbr/>mode
26857 <td class="entry_type">
26858 <span class="entry_type_name entry_type_name_enum">byte</span>
26860 <span class="entry_type_visibility"> [public]</span>
26863 <span class="entry_type_hwlevel">[full] </span>
26867 <ul class="entry_type_enum">
26869 <span class="entry_type_enum_name">CONTRAST_CURVE (v3.2)</span>
26870 <span class="entry_type_enum_notes"><p>Use the tone mapping curve specified in
26871 the <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>* entries.<wbr/></p>
26872 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
26873 for applying the tonemapping curve specified by
26874 <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p>
26875 <p>Must not slow down frame rate relative to raw
26876 sensor output.<wbr/></p></span>
26879 <span class="entry_type_enum_name">FAST (v3.2)</span>
26880 <span class="entry_type_enum_notes"><p>Advanced gamma mapping and color enhancement may be applied,<wbr/> without
26881 reducing frame rate compared to raw sensor output.<wbr/></p></span>
26884 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
26885 <span class="entry_type_enum_notes"><p>High-quality gamma mapping and color enhancement will be applied,<wbr/> at
26886 the cost of possibly reduced frame rate compared to raw sensor output.<wbr/></p></span>
26889 <span class="entry_type_enum_name">GAMMA_VALUE (v3.2)</span>
26890 <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
26891 tonemapping.<wbr/></p>
26892 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
26893 for applying the tonemapping curve specified by <a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a>.<wbr/></p>
26894 <p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
26897 <span class="entry_type_enum_name">PRESET_CURVE (v3.2)</span>
26898 <span class="entry_type_enum_notes"><p>Use the preset tonemapping curve specified in
26899 <a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a> to peform tonemapping.<wbr/></p>
26900 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
26901 for applying the tonemapping curve specified by
26902 <a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a>.<wbr/></p>
26903 <p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
26907 </td> <!-- entry_type -->
26909 <td class="entry_description">
26910 <p>High-level global contrast/<wbr/>gamma/<wbr/>tonemapping control.<wbr/></p>
26913 <td class="entry_units">
26916 <td class="entry_range">
26917 <p><a href="#static_android.tonemap.availableToneMapModes">android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes</a></p>
26920 <td class="entry_hal_version">
26924 <td class="entry_tags">
26928 <tr class="entries_header">
26929 <th class="th_details" colspan="6">Details</th>
26931 <tr class="entry_cont">
26932 <td class="entry_details" colspan="6">
26933 <p>When switching to an application-defined contrast curve by setting
26934 <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> to CONTRAST_<wbr/>CURVE,<wbr/> the curve is defined
26935 per-channel with a set of <code>(in,<wbr/> out)</code> points that specify the
26936 mapping from input high-bit-depth pixel value to the output
26937 low-bit-depth value.<wbr/> Since the actual pixel ranges of both input
26938 and output may change depending on the camera pipeline,<wbr/> the values
26939 are specified by normalized floating-point numbers.<wbr/></p>
26940 <p>More-complex color mapping operations such as 3D color look-up
26941 tables,<wbr/> selective chroma enhancement,<wbr/> or other non-linear color
26942 transforms will be disabled when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
26943 CONTRAST_<wbr/>CURVE.<wbr/></p>
26944 <p>When using either FAST or HIGH_<wbr/>QUALITY,<wbr/> the camera device will
26945 emit its own tonemap curve in <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/>
26946 These values are always available,<wbr/> and as close as possible to the
26947 actually used nonlinear/<wbr/>nonglobal transforms.<wbr/></p>
26948 <p>If a request is sent with CONTRAST_<wbr/>CURVE with the camera device's
26949 provided curve in FAST or HIGH_<wbr/>QUALITY,<wbr/> the image's tonemap will be
26950 roughly the same.<wbr/></p>
26955 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26956 <!-- end of entry -->
26959 <tr class="entry" id="controls_android.tonemap.gamma">
26960 <td class="entry_name
26962 android.<wbr/>tonemap.<wbr/>gamma
26964 <td class="entry_type">
26965 <span class="entry_type_name">float</span>
26967 <span class="entry_type_visibility"> [public]</span>
26974 </td> <!-- entry_type -->
26976 <td class="entry_description">
26977 <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
26978 GAMMA_<wbr/>VALUE</p>
26981 <td class="entry_units">
26984 <td class="entry_range">
26987 <td class="entry_hal_version">
26991 <td class="entry_tags">
26995 <tr class="entries_header">
26996 <th class="th_details" colspan="6">Details</th>
26998 <tr class="entry_cont">
26999 <td class="entry_details" colspan="6">
27000 <p>The tonemap curve will be defined the following formula:
27001 * OUT = pow(IN,<wbr/> 1.<wbr/>0 /<wbr/> gamma)
27002 where IN and OUT is the input pixel value scaled to range [0.<wbr/>0,<wbr/> 1.<wbr/>0],<wbr/>
27003 pow is the power function and gamma is the gamma value specified by this
27005 <p>The same curve will be applied to all color channels.<wbr/> The camera device
27006 may clip the input gamma value to its supported range.<wbr/> The actual applied
27007 value will be returned in capture result.<wbr/></p>
27008 <p>The valid range of gamma value varies on different devices,<wbr/> but values
27009 within [1.<wbr/>0,<wbr/> 5.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
27014 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27015 <!-- end of entry -->
27018 <tr class="entry" id="controls_android.tonemap.presetCurve">
27019 <td class="entry_name
27021 android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve
27023 <td class="entry_type">
27024 <span class="entry_type_name entry_type_name_enum">byte</span>
27026 <span class="entry_type_visibility"> [public]</span>
27032 <ul class="entry_type_enum">
27034 <span class="entry_type_enum_name">SRGB (v3.2)</span>
27035 <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by sRGB</p></span>
27038 <span class="entry_type_enum_name">REC709 (v3.2)</span>
27039 <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by ITU-R BT.<wbr/>709</p></span>
27043 </td> <!-- entry_type -->
27045 <td class="entry_description">
27046 <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
27047 PRESET_<wbr/>CURVE</p>
27050 <td class="entry_units">
27053 <td class="entry_range">
27056 <td class="entry_hal_version">
27060 <td class="entry_tags">
27064 <tr class="entries_header">
27065 <th class="th_details" colspan="6">Details</th>
27067 <tr class="entry_cont">
27068 <td class="entry_details" colspan="6">
27069 <p>The tonemap curve will be defined by specified standard.<wbr/></p>
27070 <p>sRGB (approximated by 16 control points):</p>
27071 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
27072 <p>Rec.<wbr/> 709 (approximated by 16 control points):</p>
27073 <p><img alt="Rec. 709 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/rec709_tonemap.png"/></p>
27074 <p>Note that above figures show a 16 control points approximation of preset
27075 curves.<wbr/> Camera devices may apply a different approximation to the curve.<wbr/></p>
27080 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27081 <!-- end of entry -->
27085 <!-- end of kind -->
27087 <tr><td colspan="7" class="kind">static</td></tr>
27089 <thead class="entries_header">
27091 <th class="th_name">Property Name</th>
27092 <th class="th_type">Type</th>
27093 <th class="th_description">Description</th>
27094 <th class="th_units">Units</th>
27095 <th class="th_range">Range</th>
27096 <th class="th_hal_version">Initial HIDL HAL version</th>
27097 <th class="th_tags">Tags</th>
27112 <tr class="entry" id="static_android.tonemap.maxCurvePoints">
27113 <td class="entry_name
27115 android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points
27117 <td class="entry_type">
27118 <span class="entry_type_name">int32</span>
27120 <span class="entry_type_visibility"> [public]</span>
27123 <span class="entry_type_hwlevel">[full] </span>
27128 </td> <!-- entry_type -->
27130 <td class="entry_description">
27131 <p>Maximum number of supported points in the
27132 tonemap curve that can be used for <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p>
27135 <td class="entry_units">
27138 <td class="entry_range">
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>If the actual number of points provided by the application (in <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>*) is
27155 less than this maximum,<wbr/> the camera device will resample the curve to its internal
27156 representation,<wbr/> using linear interpolation.<wbr/></p>
27157 <p>The output curves in the result metadata may have a different number
27158 of points than the input curves,<wbr/> and will represent the actual
27159 hardware curves used as closely as possible when linearly interpolated.<wbr/></p>
27163 <tr class="entries_header">
27164 <th class="th_details" colspan="6">HAL Implementation Details</th>
27166 <tr class="entry_cont">
27167 <td class="entry_details" colspan="6">
27168 <p>This value must be at least 64.<wbr/> This should be at least 128.<wbr/></p>
27172 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27173 <!-- end of entry -->
27176 <tr class="entry" id="static_android.tonemap.availableToneMapModes">
27177 <td class="entry_name
27179 android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes
27181 <td class="entry_type">
27182 <span class="entry_type_name">byte</span>
27183 <span class="entry_type_container">x</span>
27185 <span class="entry_type_array">
27188 <span class="entry_type_visibility"> [public as enumList]</span>
27191 <span class="entry_type_hwlevel">[full] </span>
27194 <div class="entry_type_notes">list of enums</div>
27197 </td> <!-- entry_type -->
27199 <td class="entry_description">
27200 <p>List of tonemapping modes for <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> that are supported by this camera
27204 <td class="entry_units">
27207 <td class="entry_range">
27208 <p>Any value listed in <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a></p>
27211 <td class="entry_hal_version">
27215 <td class="entry_tags">
27219 <tr class="entries_header">
27220 <th class="th_details" colspan="6">Details</th>
27222 <tr class="entry_cont">
27223 <td class="entry_details" colspan="6">
27224 <p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always contain
27225 at least one of below mode combinations:</p>
27227 <li>CONTRAST_<wbr/>CURVE,<wbr/> FAST and HIGH_<wbr/>QUALITY</li>
27228 <li>GAMMA_<wbr/>VALUE,<wbr/> PRESET_<wbr/>CURVE,<wbr/> FAST and HIGH_<wbr/>QUALITY</li>
27230 <p>This includes all FULL level devices.<wbr/></p>
27234 <tr class="entries_header">
27235 <th class="th_details" colspan="6">HAL Implementation Details</th>
27237 <tr class="entry_cont">
27238 <td class="entry_details" colspan="6">
27239 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if automatic tonemap control is available
27240 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
27241 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
27242 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
27246 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27247 <!-- end of entry -->
27251 <!-- end of kind -->
27253 <tr><td colspan="7" class="kind">dynamic</td></tr>
27255 <thead class="entries_header">
27257 <th class="th_name">Property Name</th>
27258 <th class="th_type">Type</th>
27259 <th class="th_description">Description</th>
27260 <th class="th_units">Units</th>
27261 <th class="th_range">Range</th>
27262 <th class="th_hal_version">Initial HIDL HAL version</th>
27263 <th class="th_tags">Tags</th>
27278 <tr class="entry" id="dynamic_android.tonemap.curveBlue">
27279 <td class="entry_name
27281 android.<wbr/>tonemap.<wbr/>curve<wbr/>Blue
27283 <td class="entry_type">
27284 <span class="entry_type_name">float</span>
27285 <span class="entry_type_container">x</span>
27287 <span class="entry_type_array">
27290 <span class="entry_type_visibility"> [ndk_public]</span>
27293 <span class="entry_type_hwlevel">[full] </span>
27296 <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>
27299 </td> <!-- entry_type -->
27301 <td class="entry_description">
27302 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the blue
27303 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
27304 CONTRAST_<wbr/>CURVE.<wbr/></p>
27307 <td class="entry_units">
27310 <td class="entry_range">
27313 <td class="entry_hal_version">
27317 <td class="entry_tags">
27321 <tr class="entries_header">
27322 <th class="th_details" colspan="6">Details</th>
27324 <tr class="entry_cont">
27325 <td class="entry_details" colspan="6">
27326 <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
27331 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27332 <!-- end of entry -->
27335 <tr class="entry" id="dynamic_android.tonemap.curveGreen">
27336 <td class="entry_name
27338 android.<wbr/>tonemap.<wbr/>curve<wbr/>Green
27340 <td class="entry_type">
27341 <span class="entry_type_name">float</span>
27342 <span class="entry_type_container">x</span>
27344 <span class="entry_type_array">
27347 <span class="entry_type_visibility"> [ndk_public]</span>
27350 <span class="entry_type_hwlevel">[full] </span>
27353 <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>
27356 </td> <!-- entry_type -->
27358 <td class="entry_description">
27359 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the green
27360 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
27361 CONTRAST_<wbr/>CURVE.<wbr/></p>
27364 <td class="entry_units">
27367 <td class="entry_range">
27370 <td class="entry_hal_version">
27374 <td class="entry_tags">
27378 <tr class="entries_header">
27379 <th class="th_details" colspan="6">Details</th>
27381 <tr class="entry_cont">
27382 <td class="entry_details" colspan="6">
27383 <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
27388 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27389 <!-- end of entry -->
27392 <tr class="entry" id="dynamic_android.tonemap.curveRed">
27393 <td class="entry_name
27395 android.<wbr/>tonemap.<wbr/>curve<wbr/>Red
27397 <td class="entry_type">
27398 <span class="entry_type_name">float</span>
27399 <span class="entry_type_container">x</span>
27401 <span class="entry_type_array">
27404 <span class="entry_type_visibility"> [ndk_public]</span>
27407 <span class="entry_type_hwlevel">[full] </span>
27410 <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>
27413 </td> <!-- entry_type -->
27415 <td class="entry_description">
27416 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the red
27417 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
27418 CONTRAST_<wbr/>CURVE.<wbr/></p>
27421 <td class="entry_units">
27424 <td class="entry_range">
27425 <p>0-1 on both input and output coordinates,<wbr/> normalized
27426 as a floating-point value such that 0 == black and 1 == white.<wbr/></p>
27429 <td class="entry_hal_version">
27433 <td class="entry_tags">
27437 <tr class="entries_header">
27438 <th class="th_details" colspan="6">Details</th>
27440 <tr class="entry_cont">
27441 <td class="entry_details" colspan="6">
27442 <p>Each channel's curve is defined by an array of control points:</p>
27443 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> =
27444 [ P0in,<wbr/> P0out,<wbr/> P1in,<wbr/> P1out,<wbr/> P2in,<wbr/> P2out,<wbr/> P3in,<wbr/> P3out,<wbr/> ...,<wbr/> PNin,<wbr/> PNout ]
27445 2 <= N <= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
27446 <p>These are sorted in order of increasing <code>Pin</code>; it is
27447 required that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
27448 define a complete mapping.<wbr/> For input values between control points,<wbr/>
27449 the camera device must linearly interpolate between the control
27451 <p>Each curve can have an independent number of points,<wbr/> and the number
27452 of points can be less than max (that is,<wbr/> the request doesn't have to
27453 always provide a curve with number of points equivalent to
27454 <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
27455 <p>For devices with MONOCHROME capability,<wbr/> only red channel is used.<wbr/> Green and blue channels
27456 are ignored.<wbr/></p>
27457 <p>A few examples,<wbr/> and their corresponding graphical mappings; these
27458 only specify the red channel and the precision is limited to 4
27459 digits,<wbr/> for conciseness.<wbr/></p>
27460 <p>Linear mapping:</p>
27461 <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 ]
27463 <p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
27464 <p>Invert mapping:</p>
27465 <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 ]
27467 <p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
27468 <p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
27469 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
27470 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/>
27471 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/>
27472 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/>
27473 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 ]
27475 <p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
27476 <p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
27477 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
27478 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/>
27479 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/>
27480 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/>
27481 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 ]
27483 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
27487 <tr class="entries_header">
27488 <th class="th_details" colspan="6">HAL Implementation Details</th>
27490 <tr class="entry_cont">
27491 <td class="entry_details" colspan="6">
27492 <p>For good quality of mapping,<wbr/> at least 128 control points are
27493 preferred.<wbr/></p>
27494 <p>A typical use case of this would be a gamma-1/<wbr/>2.<wbr/>2 curve,<wbr/> with as many
27495 control points used as are available.<wbr/></p>
27499 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27500 <!-- end of entry -->
27503 <tr class="entry" id="dynamic_android.tonemap.curve">
27504 <td class="entry_name
27506 android.<wbr/>tonemap.<wbr/>curve
27508 <td class="entry_type">
27509 <span class="entry_type_name">float</span>
27511 <span class="entry_type_visibility"> [java_public as tonemapCurve]</span>
27513 <span class="entry_type_synthetic">[synthetic] </span>
27515 <span class="entry_type_hwlevel">[full] </span>
27520 </td> <!-- entry_type -->
27522 <td class="entry_description">
27523 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a>
27524 is CONTRAST_<wbr/>CURVE.<wbr/></p>
27527 <td class="entry_units">
27530 <td class="entry_range">
27533 <td class="entry_hal_version">
27537 <td class="entry_tags">
27541 <tr class="entries_header">
27542 <th class="th_details" colspan="6">Details</th>
27544 <tr class="entry_cont">
27545 <td class="entry_details" colspan="6">
27546 <p>The tonemapCurve consist of three curves for each of red,<wbr/> green,<wbr/> and blue
27547 channels respectively.<wbr/> The following example uses the red channel as an
27548 example.<wbr/> The same logic applies to green and blue channel.<wbr/>
27549 Each channel's curve is defined by an array of control points:</p>
27550 <pre><code>curveRed =
27551 [ 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) ]
27552 2 <= N <= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
27553 <p>These are sorted in order of increasing <code>Pin</code>; it is always
27554 guaranteed that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
27555 define a complete mapping.<wbr/> For input values between control points,<wbr/>
27556 the camera device must linearly interpolate between the control
27558 <p>Each curve can have an independent number of points,<wbr/> and the number
27559 of points can be less than max (that is,<wbr/> the request doesn't have to
27560 always provide a curve with number of points equivalent to
27561 <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
27562 <p>For devices with MONOCHROME capability,<wbr/> only red channel is used.<wbr/> Green and blue channels
27563 are ignored.<wbr/></p>
27564 <p>A few examples,<wbr/> and their corresponding graphical mappings; these
27565 only specify the red channel and the precision is limited to 4
27566 digits,<wbr/> for conciseness.<wbr/></p>
27567 <p>Linear mapping:</p>
27568 <pre><code>curveRed = [ (0,<wbr/> 0),<wbr/> (1.<wbr/>0,<wbr/> 1.<wbr/>0) ]
27570 <p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
27571 <p>Invert mapping:</p>
27572 <pre><code>curveRed = [ (0,<wbr/> 1.<wbr/>0),<wbr/> (1.<wbr/>0,<wbr/> 0) ]
27574 <p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
27575 <p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
27576 <pre><code>curveRed = [
27577 (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/>
27578 (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/>
27579 (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/>
27580 (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) ]
27582 <p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
27583 <p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
27584 <pre><code>curveRed = [
27585 (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/>
27586 (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/>
27587 (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/>
27588 (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) ]
27590 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
27594 <tr class="entries_header">
27595 <th class="th_details" colspan="6">HAL Implementation Details</th>
27597 <tr class="entry_cont">
27598 <td class="entry_details" colspan="6">
27599 <p>This entry is created by the framework from the curveRed,<wbr/> curveGreen and
27600 curveBlue entries.<wbr/></p>
27604 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27605 <!-- end of entry -->
27608 <tr class="entry" id="dynamic_android.tonemap.mode">
27609 <td class="entry_name
27611 android.<wbr/>tonemap.<wbr/>mode
27613 <td class="entry_type">
27614 <span class="entry_type_name entry_type_name_enum">byte</span>
27616 <span class="entry_type_visibility"> [public]</span>
27619 <span class="entry_type_hwlevel">[full] </span>
27623 <ul class="entry_type_enum">
27625 <span class="entry_type_enum_name">CONTRAST_CURVE (v3.2)</span>
27626 <span class="entry_type_enum_notes"><p>Use the tone mapping curve specified in
27627 the <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>* entries.<wbr/></p>
27628 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
27629 for applying the tonemapping curve specified by
27630 <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p>
27631 <p>Must not slow down frame rate relative to raw
27632 sensor output.<wbr/></p></span>
27635 <span class="entry_type_enum_name">FAST (v3.2)</span>
27636 <span class="entry_type_enum_notes"><p>Advanced gamma mapping and color enhancement may be applied,<wbr/> without
27637 reducing frame rate compared to raw sensor output.<wbr/></p></span>
27640 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
27641 <span class="entry_type_enum_notes"><p>High-quality gamma mapping and color enhancement will be applied,<wbr/> at
27642 the cost of possibly reduced frame rate compared to raw sensor output.<wbr/></p></span>
27645 <span class="entry_type_enum_name">GAMMA_VALUE (v3.2)</span>
27646 <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
27647 tonemapping.<wbr/></p>
27648 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
27649 for applying the tonemapping curve specified by <a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a>.<wbr/></p>
27650 <p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
27653 <span class="entry_type_enum_name">PRESET_CURVE (v3.2)</span>
27654 <span class="entry_type_enum_notes"><p>Use the preset tonemapping curve specified in
27655 <a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a> to peform tonemapping.<wbr/></p>
27656 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
27657 for applying the tonemapping curve specified by
27658 <a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a>.<wbr/></p>
27659 <p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
27663 </td> <!-- entry_type -->
27665 <td class="entry_description">
27666 <p>High-level global contrast/<wbr/>gamma/<wbr/>tonemapping control.<wbr/></p>
27669 <td class="entry_units">
27672 <td class="entry_range">
27673 <p><a href="#static_android.tonemap.availableToneMapModes">android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes</a></p>
27676 <td class="entry_hal_version">
27680 <td class="entry_tags">
27684 <tr class="entries_header">
27685 <th class="th_details" colspan="6">Details</th>
27687 <tr class="entry_cont">
27688 <td class="entry_details" colspan="6">
27689 <p>When switching to an application-defined contrast curve by setting
27690 <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> to CONTRAST_<wbr/>CURVE,<wbr/> the curve is defined
27691 per-channel with a set of <code>(in,<wbr/> out)</code> points that specify the
27692 mapping from input high-bit-depth pixel value to the output
27693 low-bit-depth value.<wbr/> Since the actual pixel ranges of both input
27694 and output may change depending on the camera pipeline,<wbr/> the values
27695 are specified by normalized floating-point numbers.<wbr/></p>
27696 <p>More-complex color mapping operations such as 3D color look-up
27697 tables,<wbr/> selective chroma enhancement,<wbr/> or other non-linear color
27698 transforms will be disabled when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
27699 CONTRAST_<wbr/>CURVE.<wbr/></p>
27700 <p>When using either FAST or HIGH_<wbr/>QUALITY,<wbr/> the camera device will
27701 emit its own tonemap curve in <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/>
27702 These values are always available,<wbr/> and as close as possible to the
27703 actually used nonlinear/<wbr/>nonglobal transforms.<wbr/></p>
27704 <p>If a request is sent with CONTRAST_<wbr/>CURVE with the camera device's
27705 provided curve in FAST or HIGH_<wbr/>QUALITY,<wbr/> the image's tonemap will be
27706 roughly the same.<wbr/></p>
27711 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27712 <!-- end of entry -->
27715 <tr class="entry" id="dynamic_android.tonemap.gamma">
27716 <td class="entry_name
27718 android.<wbr/>tonemap.<wbr/>gamma
27720 <td class="entry_type">
27721 <span class="entry_type_name">float</span>
27723 <span class="entry_type_visibility"> [public]</span>
27730 </td> <!-- entry_type -->
27732 <td class="entry_description">
27733 <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
27734 GAMMA_<wbr/>VALUE</p>
27737 <td class="entry_units">
27740 <td class="entry_range">
27743 <td class="entry_hal_version">
27747 <td class="entry_tags">
27751 <tr class="entries_header">
27752 <th class="th_details" colspan="6">Details</th>
27754 <tr class="entry_cont">
27755 <td class="entry_details" colspan="6">
27756 <p>The tonemap curve will be defined the following formula:
27757 * OUT = pow(IN,<wbr/> 1.<wbr/>0 /<wbr/> gamma)
27758 where IN and OUT is the input pixel value scaled to range [0.<wbr/>0,<wbr/> 1.<wbr/>0],<wbr/>
27759 pow is the power function and gamma is the gamma value specified by this
27761 <p>The same curve will be applied to all color channels.<wbr/> The camera device
27762 may clip the input gamma value to its supported range.<wbr/> The actual applied
27763 value will be returned in capture result.<wbr/></p>
27764 <p>The valid range of gamma value varies on different devices,<wbr/> but values
27765 within [1.<wbr/>0,<wbr/> 5.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
27770 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27771 <!-- end of entry -->
27774 <tr class="entry" id="dynamic_android.tonemap.presetCurve">
27775 <td class="entry_name
27777 android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve
27779 <td class="entry_type">
27780 <span class="entry_type_name entry_type_name_enum">byte</span>
27782 <span class="entry_type_visibility"> [public]</span>
27788 <ul class="entry_type_enum">
27790 <span class="entry_type_enum_name">SRGB (v3.2)</span>
27791 <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by sRGB</p></span>
27794 <span class="entry_type_enum_name">REC709 (v3.2)</span>
27795 <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by ITU-R BT.<wbr/>709</p></span>
27799 </td> <!-- entry_type -->
27801 <td class="entry_description">
27802 <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
27803 PRESET_<wbr/>CURVE</p>
27806 <td class="entry_units">
27809 <td class="entry_range">
27812 <td class="entry_hal_version">
27816 <td class="entry_tags">
27820 <tr class="entries_header">
27821 <th class="th_details" colspan="6">Details</th>
27823 <tr class="entry_cont">
27824 <td class="entry_details" colspan="6">
27825 <p>The tonemap curve will be defined by specified standard.<wbr/></p>
27826 <p>sRGB (approximated by 16 control points):</p>
27827 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
27828 <p>Rec.<wbr/> 709 (approximated by 16 control points):</p>
27829 <p><img alt="Rec. 709 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/rec709_tonemap.png"/></p>
27830 <p>Note that above figures show a 16 control points approximation of preset
27831 curves.<wbr/> Camera devices may apply a different approximation to the curve.<wbr/></p>
27836 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27837 <!-- end of entry -->
27841 <!-- end of kind -->
27844 <!-- end of section -->
27845 <tr><td colspan="7" id="section_led" class="section">led</td></tr>
27848 <tr><td colspan="7" class="kind">controls</td></tr>
27850 <thead class="entries_header">
27852 <th class="th_name">Property Name</th>
27853 <th class="th_type">Type</th>
27854 <th class="th_description">Description</th>
27855 <th class="th_units">Units</th>
27856 <th class="th_range">Range</th>
27857 <th class="th_hal_version">Initial HIDL HAL version</th>
27858 <th class="th_tags">Tags</th>
27873 <tr class="entry" id="controls_android.led.transmit">
27874 <td class="entry_name
27876 android.<wbr/>led.<wbr/>transmit
27878 <td class="entry_type">
27879 <span class="entry_type_name entry_type_name_enum">byte</span>
27881 <span class="entry_type_visibility"> [hidden as boolean]</span>
27887 <ul class="entry_type_enum">
27889 <span class="entry_type_enum_name">OFF (v3.2)</span>
27892 <span class="entry_type_enum_name">ON (v3.2)</span>
27896 </td> <!-- entry_type -->
27898 <td class="entry_description">
27899 <p>This LED is nominally used to indicate to the user
27900 that the camera is powered on and may be streaming images back to the
27901 Application Processor.<wbr/> In certain rare circumstances,<wbr/> the OS may
27902 disable this when video is processed locally and not transmitted to
27903 any untrusted applications.<wbr/></p>
27904 <p>In particular,<wbr/> the LED <em>must</em> always be on when the data could be
27905 transmitted off the device.<wbr/> The LED <em>should</em> always be on whenever
27906 data is stored locally on the device.<wbr/></p>
27907 <p>The LED <em>may</em> be off if a trusted application is using the data that
27908 doesn't violate the above rules.<wbr/></p>
27911 <td class="entry_units">
27914 <td class="entry_range">
27917 <td class="entry_hal_version">
27921 <td class="entry_tags">
27927 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27928 <!-- end of entry -->
27932 <!-- end of kind -->
27934 <tr><td colspan="7" class="kind">dynamic</td></tr>
27936 <thead class="entries_header">
27938 <th class="th_name">Property Name</th>
27939 <th class="th_type">Type</th>
27940 <th class="th_description">Description</th>
27941 <th class="th_units">Units</th>
27942 <th class="th_range">Range</th>
27943 <th class="th_hal_version">Initial HIDL HAL version</th>
27944 <th class="th_tags">Tags</th>
27959 <tr class="entry" id="dynamic_android.led.transmit">
27960 <td class="entry_name
27962 android.<wbr/>led.<wbr/>transmit
27964 <td class="entry_type">
27965 <span class="entry_type_name entry_type_name_enum">byte</span>
27967 <span class="entry_type_visibility"> [hidden as boolean]</span>
27973 <ul class="entry_type_enum">
27975 <span class="entry_type_enum_name">OFF (v3.2)</span>
27978 <span class="entry_type_enum_name">ON (v3.2)</span>
27982 </td> <!-- entry_type -->
27984 <td class="entry_description">
27985 <p>This LED is nominally used to indicate to the user
27986 that the camera is powered on and may be streaming images back to the
27987 Application Processor.<wbr/> In certain rare circumstances,<wbr/> the OS may
27988 disable this when video is processed locally and not transmitted to
27989 any untrusted applications.<wbr/></p>
27990 <p>In particular,<wbr/> the LED <em>must</em> always be on when the data could be
27991 transmitted off the device.<wbr/> The LED <em>should</em> always be on whenever
27992 data is stored locally on the device.<wbr/></p>
27993 <p>The LED <em>may</em> be off if a trusted application is using the data that
27994 doesn't violate the above rules.<wbr/></p>
27997 <td class="entry_units">
28000 <td class="entry_range">
28003 <td class="entry_hal_version">
28007 <td class="entry_tags">
28013 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28014 <!-- end of entry -->
28018 <!-- end of kind -->
28020 <tr><td colspan="7" class="kind">static</td></tr>
28022 <thead class="entries_header">
28024 <th class="th_name">Property Name</th>
28025 <th class="th_type">Type</th>
28026 <th class="th_description">Description</th>
28027 <th class="th_units">Units</th>
28028 <th class="th_range">Range</th>
28029 <th class="th_hal_version">Initial HIDL HAL version</th>
28030 <th class="th_tags">Tags</th>
28045 <tr class="entry" id="static_android.led.availableLeds">
28046 <td class="entry_name
28048 android.<wbr/>led.<wbr/>available<wbr/>Leds
28050 <td class="entry_type">
28051 <span class="entry_type_name entry_type_name_enum">byte</span>
28052 <span class="entry_type_container">x</span>
28054 <span class="entry_type_array">
28057 <span class="entry_type_visibility"> [hidden]</span>
28063 <ul class="entry_type_enum">
28065 <span class="entry_type_enum_name">TRANSMIT (v3.2)</span>
28066 <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>
28070 </td> <!-- entry_type -->
28072 <td class="entry_description">
28073 <p>A list of camera LEDs that are available on this system.<wbr/></p>
28076 <td class="entry_units">
28079 <td class="entry_range">
28082 <td class="entry_hal_version">
28086 <td class="entry_tags">
28092 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28093 <!-- end of entry -->
28097 <!-- end of kind -->
28100 <!-- end of section -->
28101 <tr><td colspan="7" id="section_info" class="section">info</td></tr>
28104 <tr><td colspan="7" class="kind">static</td></tr>
28106 <thead class="entries_header">
28108 <th class="th_name">Property Name</th>
28109 <th class="th_type">Type</th>
28110 <th class="th_description">Description</th>
28111 <th class="th_units">Units</th>
28112 <th class="th_range">Range</th>
28113 <th class="th_hal_version">Initial HIDL HAL version</th>
28114 <th class="th_tags">Tags</th>
28129 <tr class="entry" id="static_android.info.supportedHardwareLevel">
28130 <td class="entry_name
28132 android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level
28134 <td class="entry_type">
28135 <span class="entry_type_name entry_type_name_enum">byte</span>
28137 <span class="entry_type_visibility"> [public]</span>
28140 <span class="entry_type_hwlevel">[legacy] </span>
28144 <ul class="entry_type_enum">
28146 <span class="entry_type_enum_name">LIMITED (v3.2)</span>
28147 <span class="entry_type_enum_notes"><p>This camera device does not have enough capabilities to qualify as a <code>FULL</code> device or
28149 <p>Only the stream configurations listed in the <code>LEGACY</code> and <code>LIMITED</code> tables in the
28150 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">createCaptureSession</a> documentation are guaranteed to be supported.<wbr/></p>
28151 <p>All <code>LIMITED</code> devices support the <code>BACKWARDS_<wbr/>COMPATIBLE</code> capability,<wbr/> indicating basic
28152 support for color image capture.<wbr/> The only exception is that the device may
28153 alternatively support only the <code>DEPTH_<wbr/>OUTPUT</code> capability,<wbr/> if it can only output depth
28154 measurements and not color images.<wbr/></p>
28155 <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>
28156 to lock exposure metering (and calculate flash power,<wbr/> for cameras with flash) before
28157 capturing a high-quality still image.<wbr/></p>
28158 <p>A <code>LIMITED</code> device that only lists the <code>BACKWARDS_<wbr/>COMPATIBLE</code> capability is only
28159 required to support full-automatic operation and post-processing (<code>OFF</code> is not
28160 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
28161 <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>)</p>
28162 <p>Additional capabilities may optionally be supported by a <code>LIMITED</code>-level device,<wbr/> and
28163 can be checked for in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p></span>
28166 <span class="entry_type_enum_name">FULL (v3.2)</span>
28167 <span class="entry_type_enum_notes"><p>This camera device is capable of supporting advanced imaging applications.<wbr/></p>
28168 <p>The stream configurations listed in the <code>FULL</code>,<wbr/> <code>LEGACY</code> and <code>LIMITED</code> tables in the
28169 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">createCaptureSession</a> documentation are guaranteed to be supported.<wbr/></p>
28170 <p>A <code>FULL</code> device will support below capabilities:</p>
28172 <li><code>BURST_<wbr/>CAPTURE</code> capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
28173 <code>BURST_<wbr/>CAPTURE</code>)</li>
28174 <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>
28175 <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>
28176 <li>Manual post-processing control (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
28177 <code>MANUAL_<wbr/>POST_<wbr/>PROCESSING</code>)</li>
28178 <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>
28179 <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>
28182 Pre-API level 23,<wbr/> FULL devices also supported arbitrary cropping region
28183 (<a href="#static_android.scaler.croppingType">android.<wbr/>scaler.<wbr/>cropping<wbr/>Type</a> <code>== FREEFORM</code>); this requirement was relaxed in API level
28184 23,<wbr/> and <code>FULL</code> devices may only support <code>CENTERED</code> cropping.<wbr/></p></span>
28187 <span class="entry_type_enum_name">LEGACY (v3.2)</span>
28188 <span class="entry_type_enum_notes"><p>This camera device is running in backward compatibility mode.<wbr/></p>
28189 <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>
28190 <p>A <code>LEGACY</code> device does not support per-frame control,<wbr/> manual sensor control,<wbr/> manual
28191 post-processing,<wbr/> arbitrary cropping regions,<wbr/> and has relaxed performance constraints.<wbr/>
28192 No additional capabilities beyond <code>BACKWARD_<wbr/>COMPATIBLE</code> will ever be listed by a
28193 <code>LEGACY</code> device in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
28194 <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>
28195 devices.<wbr/> Instead,<wbr/> every request that includes a JPEG-format output target is treated
28196 as triggering a still capture,<wbr/> internally executing a precapture trigger.<wbr/> This may
28197 fire the flash for flash power metering during precapture,<wbr/> and then fire the flash
28198 for the final capture,<wbr/> if a flash is available on the device and the AE mode is set to
28199 enable the flash.<wbr/></p></span>
28202 <span class="entry_type_enum_name">3 (v3.2)</span>
28203 <span class="entry_type_enum_notes"><p>This camera device is capable of YUV reprocessing and RAW data capture,<wbr/> in addition to
28204 FULL-level capabilities.<wbr/></p>
28205 <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
28206 <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>
28207 <p>The following additional capabilities are guaranteed to be supported:</p>
28209 <li><code>YUV_<wbr/>REPROCESSING</code> capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
28210 <code>YUV_<wbr/>REPROCESSING</code>)</li>
28211 <li><code>RAW</code> capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
28212 <code>RAW</code>)</li>
28216 <span class="entry_type_enum_name">EXTERNAL (v3.3)</span>
28217 <span class="entry_type_enum_notes"><p>This camera device is backed by an external camera connected to this Android device.<wbr/></p>
28218 <p>The device has capability identical to a LIMITED level device,<wbr/> with the following
28221 <li>The device may not report lens/<wbr/>sensor related information such as<ul>
28222 <li><a href="#controls_android.lens.focalLength">android.<wbr/>lens.<wbr/>focal<wbr/>Length</a></li>
28223 <li><a href="#static_android.lens.info.hyperfocalDistance">android.<wbr/>lens.<wbr/>info.<wbr/>hyperfocal<wbr/>Distance</a></li>
28224 <li><a href="#static_android.sensor.info.physicalSize">android.<wbr/>sensor.<wbr/>info.<wbr/>physical<wbr/>Size</a></li>
28225 <li><a href="#static_android.sensor.info.whiteLevel">android.<wbr/>sensor.<wbr/>info.<wbr/>white<wbr/>Level</a></li>
28226 <li><a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a></li>
28227 <li><a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a></li>
28228 <li><a href="#dynamic_android.sensor.rollingShutterSkew">android.<wbr/>sensor.<wbr/>rolling<wbr/>Shutter<wbr/>Skew</a></li>
28231 <li>The device will report 0 for <a href="#static_android.sensor.orientation">android.<wbr/>sensor.<wbr/>orientation</a></li>
28232 <li>The device has less guarantee on stable framerate,<wbr/> as the framerate partly depends
28233 on the external camera being used.<wbr/></li>
28238 </td> <!-- entry_type -->
28240 <td class="entry_description">
28241 <p>Generally classifies the overall set of the camera device functionality.<wbr/></p>
28244 <td class="entry_units">
28247 <td class="entry_range">
28250 <td class="entry_hal_version">
28254 <td class="entry_tags">
28258 <tr class="entries_header">
28259 <th class="th_details" colspan="6">Details</th>
28261 <tr class="entry_cont">
28262 <td class="entry_details" colspan="6">
28263 <p>The supported hardware level is a high-level description of the camera device's
28264 capabilities,<wbr/> summarizing several capabilities into one field.<wbr/> Each level adds additional
28265 features to the previous one,<wbr/> and is always a strict superset of the previous level.<wbr/>
28266 The ordering is <code>LEGACY < LIMITED < FULL < LEVEL_<wbr/>3</code>.<wbr/></p>
28267 <p>Starting from <code>LEVEL_<wbr/>3</code>,<wbr/> the level enumerations are guaranteed to be in increasing
28268 numerical value as well.<wbr/> To check if a given device is at least at a given hardware level,<wbr/>
28269 the following code snippet can be used:</p>
28270 <pre><code>//<wbr/> Returns true if the device supports the required hardware level,<wbr/> or better.<wbr/>
28271 boolean isHardwareLevelSupported(CameraCharacteristics c,<wbr/> int requiredLevel) {
28272 int deviceLevel = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>INFO_<wbr/>SUPPORTED_<wbr/>HARDWARE_<wbr/>LEVEL);
28273 if (deviceLevel == Camera<wbr/>Characteristics.<wbr/>INFO_<wbr/>SUPPORTED_<wbr/>HARDWARE_<wbr/>LEVEL_<wbr/>LEGACY) {
28274 return requiredLevel == deviceLevel;
28276 //<wbr/> deviceLevel is not LEGACY,<wbr/> can use numerical sort
28277 return requiredLevel <= deviceLevel;
28280 <p>At a high level,<wbr/> the levels are:</p>
28282 <li><code>LEGACY</code> devices operate in a backwards-compatibility mode for older
28283 Android devices,<wbr/> and have very limited capabilities.<wbr/></li>
28284 <li><code>LIMITED</code> devices represent the
28285 baseline feature set,<wbr/> and may also include additional capabilities that are
28286 subsets of <code>FULL</code>.<wbr/></li>
28287 <li><code>FULL</code> devices additionally support per-frame manual control of sensor,<wbr/> flash,<wbr/> lens and
28288 post-processing settings,<wbr/> and image capture at a high rate.<wbr/></li>
28289 <li><code>LEVEL_<wbr/>3</code> devices additionally support YUV reprocessing and RAW image capture,<wbr/> along
28290 with additional output stream configurations.<wbr/></li>
28292 <p>See the individual level enums for full descriptions of the supported capabilities.<wbr/> The
28293 <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> entry describes the device's capabilities at a
28294 finer-grain level,<wbr/> if needed.<wbr/> In addition,<wbr/> many controls have their available settings or
28295 ranges defined in individual entries from <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html">CameraCharacteristics</a>.<wbr/></p>
28296 <p>Some features are not part of any particular hardware level or capability and must be
28297 queried separately.<wbr/> These include:</p>
28299 <li>Calibrated timestamps (<a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME)</li>
28300 <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>
28301 <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>
28302 <li>Optical or electrical image stabilization
28303 (<a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a>,<wbr/>
28304 <a href="#static_android.control.availableVideoStabilizationModes">android.<wbr/>control.<wbr/>available<wbr/>Video<wbr/>Stabilization<wbr/>Modes</a>)</li>
28309 <tr class="entries_header">
28310 <th class="th_details" colspan="6">HAL Implementation Details</th>
28312 <tr class="entry_cont">
28313 <td class="entry_details" colspan="6">
28314 <p>A camera HALv3 device can implement one of three possible operational modes; LIMITED,<wbr/>
28315 FULL,<wbr/> and LEVEL_<wbr/>3.<wbr/></p>
28316 <p>FULL support or better is expected from new higher-end devices.<wbr/> Limited
28317 mode has hardware requirements roughly in line with those for a camera HAL device v1
28318 implementation,<wbr/> and is expected from older or inexpensive devices.<wbr/> Each level is a strict
28319 superset of the previous level,<wbr/> and they share the same essential operational flow.<wbr/></p>
28320 <p>For full details refer to "S3.<wbr/> Operational Modes" in camera3.<wbr/>h</p>
28321 <p>Camera HAL3+ must not implement LEGACY mode.<wbr/> It is there for backwards compatibility in
28322 the <code>android.<wbr/>hardware.<wbr/>camera2</code> user-facing API only on legacy HALv1 devices,<wbr/> and is
28323 implemented by the camera framework code.<wbr/></p>
28324 <p>EXTERNAL level devices have lower peformance bar in CTS since the peformance might depend
28325 on the external camera being used and is not fully controlled by the device manufacturer.<wbr/>
28326 The ITS test suite is exempted for the same reason.<wbr/></p>
28330 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28331 <!-- end of entry -->
28334 <tr class="entry" id="static_android.info.version">
28335 <td class="entry_name
28337 android.<wbr/>info.<wbr/>version
28339 <td class="entry_type">
28340 <span class="entry_type_name">byte</span>
28342 <span class="entry_type_visibility"> [public as string]</span>
28349 </td> <!-- entry_type -->
28351 <td class="entry_description">
28352 <p>A short string for manufacturer version information about the camera device,<wbr/> such as
28353 ISP hardware,<wbr/> sensors,<wbr/> etc.<wbr/></p>
28356 <td class="entry_units">
28359 <td class="entry_range">
28362 <td class="entry_hal_version">
28366 <td class="entry_tags">
28370 <tr class="entries_header">
28371 <th class="th_details" colspan="6">Details</th>
28373 <tr class="entry_cont">
28374 <td class="entry_details" colspan="6">
28375 <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>
28376 in jpeg EXIF.<wbr/> This key may be absent if no version information is available on the
28381 <tr class="entries_header">
28382 <th class="th_details" colspan="6">HAL Implementation Details</th>
28384 <tr class="entry_cont">
28385 <td class="entry_details" colspan="6">
28386 <p>The string must consist of only alphanumeric characters,<wbr/> punctuation,<wbr/> and
28387 whitespace,<wbr/> i.<wbr/>e.<wbr/> it must match regular expression "[\p{Alnum}\p{Punct}\p{Space}]*".<wbr/>
28388 It must not exceed 256 characters.<wbr/></p>
28392 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28393 <!-- end of entry -->
28397 <!-- end of kind -->
28400 <!-- end of section -->
28401 <tr><td colspan="7" id="section_blackLevel" class="section">blackLevel</td></tr>
28404 <tr><td colspan="7" class="kind">controls</td></tr>
28406 <thead class="entries_header">
28408 <th class="th_name">Property Name</th>
28409 <th class="th_type">Type</th>
28410 <th class="th_description">Description</th>
28411 <th class="th_units">Units</th>
28412 <th class="th_range">Range</th>
28413 <th class="th_hal_version">Initial HIDL HAL version</th>
28414 <th class="th_tags">Tags</th>
28429 <tr class="entry" id="controls_android.blackLevel.lock">
28430 <td class="entry_name
28432 android.<wbr/>black<wbr/>Level.<wbr/>lock
28434 <td class="entry_type">
28435 <span class="entry_type_name entry_type_name_enum">byte</span>
28437 <span class="entry_type_visibility"> [public as boolean]</span>
28440 <span class="entry_type_hwlevel">[full] </span>
28444 <ul class="entry_type_enum">
28446 <span class="entry_type_enum_name">OFF (v3.2)</span>
28449 <span class="entry_type_enum_name">ON (v3.2)</span>
28453 </td> <!-- entry_type -->
28455 <td class="entry_description">
28456 <p>Whether black-level compensation is locked
28457 to its current values,<wbr/> or is free to vary.<wbr/></p>
28460 <td class="entry_units">
28463 <td class="entry_range">
28466 <td class="entry_hal_version">
28470 <td class="entry_tags">
28471 <ul class="entry_tags">
28472 <li><a href="#tag_HAL2">HAL2</a></li>
28477 <tr class="entries_header">
28478 <th class="th_details" colspan="6">Details</th>
28480 <tr class="entry_cont">
28481 <td class="entry_details" colspan="6">
28482 <p>When set to <code>true</code> (ON),<wbr/> the values used for black-level
28483 compensation will not change until the lock is set to
28484 <code>false</code> (OFF).<wbr/></p>
28485 <p>Since changes to certain capture parameters (such as
28486 exposure time) may require resetting of black level
28487 compensation,<wbr/> the camera device must report whether setting
28488 the black level lock was successful in the output result
28489 metadata.<wbr/></p>
28490 <p>For example,<wbr/> if a sequence of requests is as follows:</p>
28492 <li>Request 1: Exposure = 10ms,<wbr/> Black level lock = OFF</li>
28493 <li>Request 2: Exposure = 10ms,<wbr/> Black level lock = ON</li>
28494 <li>Request 3: Exposure = 10ms,<wbr/> Black level lock = ON</li>
28495 <li>Request 4: Exposure = 20ms,<wbr/> Black level lock = ON</li>
28496 <li>Request 5: Exposure = 20ms,<wbr/> Black level lock = ON</li>
28497 <li>Request 6: Exposure = 20ms,<wbr/> Black level lock = ON</li>
28499 <p>And the exposure change in Request 4 requires the camera
28500 device to reset the black level offsets,<wbr/> then the output
28501 result metadata is expected to be:</p>
28503 <li>Result 1: Exposure = 10ms,<wbr/> Black level lock = OFF</li>
28504 <li>Result 2: Exposure = 10ms,<wbr/> Black level lock = ON</li>
28505 <li>Result 3: Exposure = 10ms,<wbr/> Black level lock = ON</li>
28506 <li>Result 4: Exposure = 20ms,<wbr/> Black level lock = OFF</li>
28507 <li>Result 5: Exposure = 20ms,<wbr/> Black level lock = ON</li>
28508 <li>Result 6: Exposure = 20ms,<wbr/> Black level lock = ON</li>
28510 <p>This indicates to the application that on frame 4,<wbr/> black
28511 levels were reset due to exposure value changes,<wbr/> and pixel
28512 values may not be consistent across captures.<wbr/></p>
28513 <p>The camera device will maintain the lock to the extent
28514 possible,<wbr/> only overriding the lock to OFF when changes to
28515 other request parameters require a black level recalculation
28516 or reset.<wbr/></p>
28520 <tr class="entries_header">
28521 <th class="th_details" colspan="6">HAL Implementation Details</th>
28523 <tr class="entry_cont">
28524 <td class="entry_details" colspan="6">
28525 <p>If for some reason black level locking is no longer possible
28526 (for example,<wbr/> the analog gain has changed,<wbr/> which forces
28527 black level offsets to be recalculated),<wbr/> then the HAL must
28528 override this request (and it must report 'OFF' when this
28529 does happen) until the next capture for which locking is
28530 possible again.<wbr/></p>
28534 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28535 <!-- end of entry -->
28539 <!-- end of kind -->
28541 <tr><td colspan="7" class="kind">dynamic</td></tr>
28543 <thead class="entries_header">
28545 <th class="th_name">Property Name</th>
28546 <th class="th_type">Type</th>
28547 <th class="th_description">Description</th>
28548 <th class="th_units">Units</th>
28549 <th class="th_range">Range</th>
28550 <th class="th_hal_version">Initial HIDL HAL version</th>
28551 <th class="th_tags">Tags</th>
28566 <tr class="entry" id="dynamic_android.blackLevel.lock">
28567 <td class="entry_name
28569 android.<wbr/>black<wbr/>Level.<wbr/>lock
28571 <td class="entry_type">
28572 <span class="entry_type_name entry_type_name_enum">byte</span>
28574 <span class="entry_type_visibility"> [public as boolean]</span>
28577 <span class="entry_type_hwlevel">[full] </span>
28581 <ul class="entry_type_enum">
28583 <span class="entry_type_enum_name">OFF (v3.2)</span>
28586 <span class="entry_type_enum_name">ON (v3.2)</span>
28590 </td> <!-- entry_type -->
28592 <td class="entry_description">
28593 <p>Whether black-level compensation is locked
28594 to its current values,<wbr/> or is free to vary.<wbr/></p>
28597 <td class="entry_units">
28600 <td class="entry_range">
28603 <td class="entry_hal_version">
28607 <td class="entry_tags">
28608 <ul class="entry_tags">
28609 <li><a href="#tag_HAL2">HAL2</a></li>
28614 <tr class="entries_header">
28615 <th class="th_details" colspan="6">Details</th>
28617 <tr class="entry_cont">
28618 <td class="entry_details" colspan="6">
28619 <p>Whether the black level offset was locked for this frame.<wbr/> Should be
28620 ON if <a href="#controls_android.blackLevel.lock">android.<wbr/>black<wbr/>Level.<wbr/>lock</a> was ON in the capture request,<wbr/> unless
28621 a change in other capture settings forced the camera device to
28622 perform a black level reset.<wbr/></p>
28626 <tr class="entries_header">
28627 <th class="th_details" colspan="6">HAL Implementation Details</th>
28629 <tr class="entry_cont">
28630 <td class="entry_details" colspan="6">
28631 <p>If for some reason black level locking is no longer possible
28632 (for example,<wbr/> the analog gain has changed,<wbr/> which forces
28633 black level offsets to be recalculated),<wbr/> then the HAL must
28634 override this request (and it must report 'OFF' when this
28635 does happen) until the next capture for which locking is
28636 possible again.<wbr/></p>
28640 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28641 <!-- end of entry -->
28645 <!-- end of kind -->
28648 <!-- end of section -->
28649 <tr><td colspan="7" id="section_sync" class="section">sync</td></tr>
28652 <tr><td colspan="7" class="kind">dynamic</td></tr>
28654 <thead class="entries_header">
28656 <th class="th_name">Property Name</th>
28657 <th class="th_type">Type</th>
28658 <th class="th_description">Description</th>
28659 <th class="th_units">Units</th>
28660 <th class="th_range">Range</th>
28661 <th class="th_hal_version">Initial HIDL HAL version</th>
28662 <th class="th_tags">Tags</th>
28677 <tr class="entry" id="dynamic_android.sync.frameNumber">
28678 <td class="entry_name
28680 android.<wbr/>sync.<wbr/>frame<wbr/>Number
28682 <td class="entry_type">
28683 <span class="entry_type_name entry_type_name_enum">int64</span>
28685 <span class="entry_type_visibility"> [ndk_public]</span>
28688 <span class="entry_type_hwlevel">[legacy] </span>
28692 <ul class="entry_type_enum">
28694 <span class="entry_type_enum_name">CONVERGING (v3.2)</span>
28695 <span class="entry_type_enum_value">-1</span>
28696 <span class="entry_type_enum_notes"><p>The current result is not yet fully synchronized to any request.<wbr/></p>
28697 <p>Synchronization is in progress,<wbr/> and reading metadata from this
28698 result may include a mix of data that have taken effect since the
28699 last synchronization time.<wbr/></p>
28700 <p>In some future result,<wbr/> within <a href="#static_android.sync.maxLatency">android.<wbr/>sync.<wbr/>max<wbr/>Latency</a> frames,<wbr/>
28701 this value will update to the actual frame number frame number
28702 the result is guaranteed to be synchronized to (as long as the
28703 request settings remain constant).<wbr/></p></span>
28706 <span class="entry_type_enum_name">UNKNOWN (v3.2)</span>
28707 <span class="entry_type_enum_value">-2</span>
28708 <span class="entry_type_enum_notes"><p>The current result's synchronization status is unknown.<wbr/></p>
28709 <p>The result may have already converged,<wbr/> or it may be in
28710 progress.<wbr/> Reading from this result may include some mix
28711 of settings from past requests.<wbr/></p>
28712 <p>After a settings change,<wbr/> the new settings will eventually all
28713 take effect for the output buffers and results.<wbr/> However,<wbr/> this
28714 value will not change when that happens.<wbr/> Altering settings
28715 rapidly may provide outcomes using mixes of settings from recent
28716 requests.<wbr/></p>
28717 <p>This value is intended primarily for backwards compatibility with
28718 the older camera implementations (for android.<wbr/>hardware.<wbr/>Camera).<wbr/></p></span>
28722 </td> <!-- entry_type -->
28724 <td class="entry_description">
28725 <p>The frame number corresponding to the last request
28726 with which the output result (metadata + buffers) has been fully
28727 synchronized.<wbr/></p>
28730 <td class="entry_units">
28733 <td class="entry_range">
28734 <p>Either a non-negative value corresponding to a
28735 <code>frame_<wbr/>number</code>,<wbr/> or one of the two enums (CONVERGING /<wbr/> UNKNOWN).<wbr/></p>
28738 <td class="entry_hal_version">
28742 <td class="entry_tags">
28743 <ul class="entry_tags">
28744 <li><a href="#tag_V1">V1</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>When a request is submitted to the camera device,<wbr/> there is usually a
28755 delay of several frames before the controls get applied.<wbr/> A camera
28756 device may either choose to account for this delay by implementing a
28757 pipeline and carefully submit well-timed atomic control updates,<wbr/> or
28758 it may start streaming control changes that span over several frame
28759 boundaries.<wbr/></p>
28760 <p>In the latter case,<wbr/> whenever a request's settings change relative to
28761 the previous submitted request,<wbr/> the full set of changes may take
28762 multiple frame durations to fully take effect.<wbr/> Some settings may
28763 take effect sooner (in less frame durations) than others.<wbr/></p>
28764 <p>While a set of control changes are being propagated,<wbr/> this value
28765 will be CONVERGING.<wbr/></p>
28766 <p>Once it is fully known that a set of control changes have been
28767 finished propagating,<wbr/> and the resulting updated control settings
28768 have been read back by the camera device,<wbr/> this value will be set
28769 to a non-negative frame number (corresponding to the request to
28770 which the results have synchronized to).<wbr/></p>
28771 <p>Older camera device implementations may not have a way to detect
28772 when all camera controls have been applied,<wbr/> and will always set this
28773 value to UNKNOWN.<wbr/></p>
28774 <p>FULL capability devices will always have this value set to the
28775 frame number of the request corresponding to this result.<wbr/></p>
28776 <p><em>Further details</em>:</p>
28778 <li>Whenever a request differs from the last request,<wbr/> any future
28779 results not yet returned may have this value set to CONVERGING (this
28780 could include any in-progress captures not yet returned by the camera
28781 device,<wbr/> for more details see pipeline considerations below).<wbr/></li>
28782 <li>Submitting a series of multiple requests that differ from the
28783 previous request (e.<wbr/>g.<wbr/> r1,<wbr/> r2,<wbr/> r3 s.<wbr/>t.<wbr/> r1 != r2 != r3)
28784 moves the new synchronization frame to the last non-repeating
28785 request (using the smallest frame number from the contiguous list of
28786 repeating requests).<wbr/></li>
28787 <li>Submitting the same request repeatedly will not change this value
28788 to CONVERGING,<wbr/> if it was already a non-negative value.<wbr/></li>
28789 <li>When this value changes to non-negative,<wbr/> that means that all of the
28790 metadata controls from the request have been applied,<wbr/> all of the
28791 metadata controls from the camera device have been read to the
28792 updated values (into the result),<wbr/> and all of the graphics buffers
28793 corresponding to this result are also synchronized to the request.<wbr/></li>
28795 <p><em>Pipeline considerations</em>:</p>
28796 <p>Submitting a request with updated controls relative to the previously
28797 submitted requests may also invalidate the synchronization state
28798 of all the results corresponding to currently in-flight requests.<wbr/></p>
28799 <p>In other words,<wbr/> results for this current request and up to
28800 <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a> prior requests may have their
28801 <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> change to CONVERGING.<wbr/></p>
28805 <tr class="entries_header">
28806 <th class="th_details" colspan="6">HAL Implementation Details</th>
28808 <tr class="entry_cont">
28809 <td class="entry_details" colspan="6">
28810 <p>Using UNKNOWN here is illegal unless <a href="#static_android.sync.maxLatency">android.<wbr/>sync.<wbr/>max<wbr/>Latency</a>
28811 is also UNKNOWN.<wbr/></p>
28812 <p>FULL capability devices should simply set this value to the
28813 <code>frame_<wbr/>number</code> of the request this result corresponds to.<wbr/></p>
28817 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28818 <!-- end of entry -->
28822 <!-- end of kind -->
28824 <tr><td colspan="7" class="kind">static</td></tr>
28826 <thead class="entries_header">
28828 <th class="th_name">Property Name</th>
28829 <th class="th_type">Type</th>
28830 <th class="th_description">Description</th>
28831 <th class="th_units">Units</th>
28832 <th class="th_range">Range</th>
28833 <th class="th_hal_version">Initial HIDL HAL version</th>
28834 <th class="th_tags">Tags</th>
28849 <tr class="entry" id="static_android.sync.maxLatency">
28850 <td class="entry_name
28852 android.<wbr/>sync.<wbr/>max<wbr/>Latency
28854 <td class="entry_type">
28855 <span class="entry_type_name entry_type_name_enum">int32</span>
28857 <span class="entry_type_visibility"> [public]</span>
28860 <span class="entry_type_hwlevel">[legacy] </span>
28864 <ul class="entry_type_enum">
28866 <span class="entry_type_enum_name">PER_FRAME_CONTROL (v3.2)</span>
28867 <span class="entry_type_enum_value">0</span>
28868 <span class="entry_type_enum_notes"><p>Every frame has the requests immediately applied.<wbr/></p>
28869 <p>Changing controls over multiple requests one after another will
28870 produce results that have those controls applied atomically
28871 each frame.<wbr/></p>
28872 <p>All FULL capability devices will have this as their maxLatency.<wbr/></p></span>
28875 <span class="entry_type_enum_name">UNKNOWN (v3.2)</span>
28876 <span class="entry_type_enum_value">-1</span>
28877 <span class="entry_type_enum_notes"><p>Each new frame has some subset (potentially the entire set)
28878 of the past requests applied to the camera settings.<wbr/></p>
28879 <p>By submitting a series of identical requests,<wbr/> the camera device
28880 will eventually have the camera settings applied,<wbr/> but it is
28881 unknown when that exact point will be.<wbr/></p>
28882 <p>All LEGACY capability devices will have this as their maxLatency.<wbr/></p></span>
28886 </td> <!-- entry_type -->
28888 <td class="entry_description">
28889 <p>The maximum number of frames that can occur after a request
28890 (different than the previous) has been submitted,<wbr/> and before the
28891 result's state becomes synchronized.<wbr/></p>
28894 <td class="entry_units">
28898 <td class="entry_range">
28899 <p>A positive value,<wbr/> PER_<wbr/>FRAME_<wbr/>CONTROL,<wbr/> or UNKNOWN.<wbr/></p>
28902 <td class="entry_hal_version">
28906 <td class="entry_tags">
28907 <ul class="entry_tags">
28908 <li><a href="#tag_V1">V1</a></li>
28913 <tr class="entries_header">
28914 <th class="th_details" colspan="6">Details</th>
28916 <tr class="entry_cont">
28917 <td class="entry_details" colspan="6">
28918 <p>This defines the maximum distance (in number of metadata results),<wbr/>
28919 between the frame number of the request that has new controls to apply
28920 and the frame number of the result that has all the controls applied.<wbr/></p>
28921 <p>In other words this acts as an upper boundary for how many frames
28922 must occur before the camera device knows for a fact that the new
28923 submitted camera settings have been applied in outgoing frames.<wbr/></p>
28927 <tr class="entries_header">
28928 <th class="th_details" colspan="6">HAL Implementation Details</th>
28930 <tr class="entry_cont">
28931 <td class="entry_details" colspan="6">
28932 <p>For example if maxLatency was 2,<wbr/></p>
28933 <pre><code>initial request = X (repeating)
28939 where requestN has frameNumber N,<wbr/> and the first of the repeating
28940 initial request's has frameNumber F (and F < 1).<wbr/>
28942 initial result = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == F }
28943 result1 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == F }
28944 result2 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == CONVERGING }
28945 result3 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == CONVERGING }
28946 result4 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == 2 }
28948 where resultN has frameNumber N.<wbr/>
28950 <p>Since <code>result4</code> has a <code>frameNumber == 4</code> and
28951 <code><a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == 2</code>,<wbr/> the distance is clearly
28952 <code>4 - 2 = 2</code>.<wbr/></p>
28953 <p>Use <code>frame_<wbr/>count</code> from camera3_<wbr/>request_<wbr/>t instead of
28954 <a href="#controls_android.request.frameCount">android.<wbr/>request.<wbr/>frame<wbr/>Count</a> or
28955 <code><a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html#getFrameNumber">CaptureResult#getFrameNumber</a></code>.<wbr/></p>
28956 <p>LIMITED devices are strongly encouraged to use a non-negative
28957 value.<wbr/> If UNKNOWN is used here then app developers do not have a way
28958 to know when sensor settings have been applied.<wbr/></p>
28962 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28963 <!-- end of entry -->
28967 <!-- end of kind -->
28970 <!-- end of section -->
28971 <tr><td colspan="7" id="section_reprocess" class="section">reprocess</td></tr>
28974 <tr><td colspan="7" class="kind">controls</td></tr>
28976 <thead class="entries_header">
28978 <th class="th_name">Property Name</th>
28979 <th class="th_type">Type</th>
28980 <th class="th_description">Description</th>
28981 <th class="th_units">Units</th>
28982 <th class="th_range">Range</th>
28983 <th class="th_hal_version">Initial HIDL HAL version</th>
28984 <th class="th_tags">Tags</th>
28999 <tr class="entry" id="controls_android.reprocess.effectiveExposureFactor">
29000 <td class="entry_name
29002 android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor
29004 <td class="entry_type">
29005 <span class="entry_type_name">float</span>
29007 <span class="entry_type_visibility"> [java_public]</span>
29010 <span class="entry_type_hwlevel">[limited] </span>
29015 </td> <!-- entry_type -->
29017 <td class="entry_description">
29018 <p>The amount of exposure time increase factor applied to the original output
29019 frame by the application processing before sending for reprocessing.<wbr/></p>
29022 <td class="entry_units">
29023 Relative exposure time increase factor.<wbr/>
29026 <td class="entry_range">
29027 <p>>= 1.<wbr/>0</p>
29030 <td class="entry_hal_version">
29034 <td class="entry_tags">
29035 <ul class="entry_tags">
29036 <li><a href="#tag_REPROC">REPROC</a></li>
29041 <tr class="entries_header">
29042 <th class="th_details" colspan="6">Details</th>
29044 <tr class="entry_cont">
29045 <td class="entry_details" colspan="6">
29046 <p>This is optional,<wbr/> and will be supported if the camera device supports YUV_<wbr/>REPROCESSING
29047 capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains YUV_<wbr/>REPROCESSING).<wbr/></p>
29048 <p>For some YUV reprocessing use cases,<wbr/> the application may choose to filter the original
29049 output frames to effectively reduce the noise to the same level as a frame that was
29050 captured with longer exposure time.<wbr/> To be more specific,<wbr/> assuming the original captured
29051 images were captured with a sensitivity of S and an exposure time of T,<wbr/> the model in
29052 the camera device is that the amount of noise in the image would be approximately what
29053 would be expected if the original capture parameters had been a sensitivity of
29054 S/<wbr/>effectiveExposureFactor and an exposure time of T*effectiveExposureFactor,<wbr/> rather
29055 than S and T respectively.<wbr/> If the captured images were processed by the application
29056 before being sent for reprocessing,<wbr/> then the application may have used image processing
29057 algorithms and/<wbr/>or multi-frame image fusion to reduce the noise in the
29058 application-processed images (input images).<wbr/> By using the effectiveExposureFactor
29059 control,<wbr/> the application can communicate to the camera device the actual noise level
29060 improvement in the application-processed image.<wbr/> With this information,<wbr/> the camera
29061 device can select appropriate noise reduction and edge enhancement parameters to avoid
29062 excessive noise reduction (<a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a>) and insufficient edge
29063 enhancement (<a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a>) being applied to the reprocessed frames.<wbr/></p>
29064 <p>For example,<wbr/> for multi-frame image fusion use case,<wbr/> the application may fuse
29065 multiple output frames together to a final frame for reprocessing.<wbr/> When N image are
29066 fused into 1 image for reprocessing,<wbr/> the exposure time increase factor could be up to
29067 square root of N (based on a simple photon shot noise model).<wbr/> The camera device will
29068 adjust the reprocessing noise reduction and edge enhancement parameters accordingly to
29069 produce the best quality images.<wbr/></p>
29070 <p>This is relative factor,<wbr/> 1.<wbr/>0 indicates the application hasn't processed the input
29071 buffer in a way that affects its effective exposure time.<wbr/></p>
29072 <p>This control is only effective for YUV reprocessing capture request.<wbr/> For noise
29073 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/>
29074 Similarly,<wbr/> for edge enhancement reprocessing,<wbr/> it is only effective when
29075 <code><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a> != OFF</code>.<wbr/></p>
29080 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29081 <!-- end of entry -->
29085 <!-- end of kind -->
29087 <tr><td colspan="7" class="kind">dynamic</td></tr>
29089 <thead class="entries_header">
29091 <th class="th_name">Property Name</th>
29092 <th class="th_type">Type</th>
29093 <th class="th_description">Description</th>
29094 <th class="th_units">Units</th>
29095 <th class="th_range">Range</th>
29096 <th class="th_hal_version">Initial HIDL HAL version</th>
29097 <th class="th_tags">Tags</th>
29112 <tr class="entry" id="dynamic_android.reprocess.effectiveExposureFactor">
29113 <td class="entry_name
29115 android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor
29117 <td class="entry_type">
29118 <span class="entry_type_name">float</span>
29120 <span class="entry_type_visibility"> [java_public]</span>
29123 <span class="entry_type_hwlevel">[limited] </span>
29128 </td> <!-- entry_type -->
29130 <td class="entry_description">
29131 <p>The amount of exposure time increase factor applied to the original output
29132 frame by the application processing before sending for reprocessing.<wbr/></p>
29135 <td class="entry_units">
29136 Relative exposure time increase factor.<wbr/>
29139 <td class="entry_range">
29140 <p>>= 1.<wbr/>0</p>
29143 <td class="entry_hal_version">
29147 <td class="entry_tags">
29148 <ul class="entry_tags">
29149 <li><a href="#tag_REPROC">REPROC</a></li>
29154 <tr class="entries_header">
29155 <th class="th_details" colspan="6">Details</th>
29157 <tr class="entry_cont">
29158 <td class="entry_details" colspan="6">
29159 <p>This is optional,<wbr/> and will be supported if the camera device supports YUV_<wbr/>REPROCESSING
29160 capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains YUV_<wbr/>REPROCESSING).<wbr/></p>
29161 <p>For some YUV reprocessing use cases,<wbr/> the application may choose to filter the original
29162 output frames to effectively reduce the noise to the same level as a frame that was
29163 captured with longer exposure time.<wbr/> To be more specific,<wbr/> assuming the original captured
29164 images were captured with a sensitivity of S and an exposure time of T,<wbr/> the model in
29165 the camera device is that the amount of noise in the image would be approximately what
29166 would be expected if the original capture parameters had been a sensitivity of
29167 S/<wbr/>effectiveExposureFactor and an exposure time of T*effectiveExposureFactor,<wbr/> rather
29168 than S and T respectively.<wbr/> If the captured images were processed by the application
29169 before being sent for reprocessing,<wbr/> then the application may have used image processing
29170 algorithms and/<wbr/>or multi-frame image fusion to reduce the noise in the
29171 application-processed images (input images).<wbr/> By using the effectiveExposureFactor
29172 control,<wbr/> the application can communicate to the camera device the actual noise level
29173 improvement in the application-processed image.<wbr/> With this information,<wbr/> the camera
29174 device can select appropriate noise reduction and edge enhancement parameters to avoid
29175 excessive noise reduction (<a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a>) and insufficient edge
29176 enhancement (<a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a>) being applied to the reprocessed frames.<wbr/></p>
29177 <p>For example,<wbr/> for multi-frame image fusion use case,<wbr/> the application may fuse
29178 multiple output frames together to a final frame for reprocessing.<wbr/> When N image are
29179 fused into 1 image for reprocessing,<wbr/> the exposure time increase factor could be up to
29180 square root of N (based on a simple photon shot noise model).<wbr/> The camera device will
29181 adjust the reprocessing noise reduction and edge enhancement parameters accordingly to
29182 produce the best quality images.<wbr/></p>
29183 <p>This is relative factor,<wbr/> 1.<wbr/>0 indicates the application hasn't processed the input
29184 buffer in a way that affects its effective exposure time.<wbr/></p>
29185 <p>This control is only effective for YUV reprocessing capture request.<wbr/> For noise
29186 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/>
29187 Similarly,<wbr/> for edge enhancement reprocessing,<wbr/> it is only effective when
29188 <code><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a> != OFF</code>.<wbr/></p>
29193 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29194 <!-- end of entry -->
29198 <!-- end of kind -->
29200 <tr><td colspan="7" class="kind">static</td></tr>
29202 <thead class="entries_header">
29204 <th class="th_name">Property Name</th>
29205 <th class="th_type">Type</th>
29206 <th class="th_description">Description</th>
29207 <th class="th_units">Units</th>
29208 <th class="th_range">Range</th>
29209 <th class="th_hal_version">Initial HIDL HAL version</th>
29210 <th class="th_tags">Tags</th>
29225 <tr class="entry" id="static_android.reprocess.maxCaptureStall">
29226 <td class="entry_name
29228 android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall
29230 <td class="entry_type">
29231 <span class="entry_type_name">int32</span>
29233 <span class="entry_type_visibility"> [java_public]</span>
29236 <span class="entry_type_hwlevel">[limited] </span>
29241 </td> <!-- entry_type -->
29243 <td class="entry_description">
29244 <p>The maximal camera capture pipeline stall (in unit of frame count) introduced by a
29245 reprocess capture request.<wbr/></p>
29248 <td class="entry_units">
29249 Number of frames.<wbr/>
29252 <td class="entry_range">
29256 <td class="entry_hal_version">
29260 <td class="entry_tags">
29261 <ul class="entry_tags">
29262 <li><a href="#tag_REPROC">REPROC</a></li>
29267 <tr class="entries_header">
29268 <th class="th_details" colspan="6">Details</th>
29270 <tr class="entry_cont">
29271 <td class="entry_details" colspan="6">
29272 <p>The key describes the maximal interference that one reprocess (input) request
29273 can introduce to the camera simultaneous streaming of regular (output) capture
29274 requests,<wbr/> including repeating requests.<wbr/></p>
29275 <p>When a reprocessing capture request is submitted while a camera output repeating request
29276 (e.<wbr/>g.<wbr/> preview) is being served by the camera device,<wbr/> it may preempt the camera capture
29277 pipeline for at least one frame duration so that the camera device is unable to process
29278 the following capture request in time for the next sensor start of exposure boundary.<wbr/>
29279 When this happens,<wbr/> the application may observe a capture time gap (longer than one frame
29280 duration) between adjacent capture output frames,<wbr/> which usually exhibits as preview
29281 glitch if the repeating request output targets include a preview surface.<wbr/> This key gives
29282 the worst-case number of frame stall introduced by one reprocess request with any kind of
29283 formats/<wbr/>sizes combination.<wbr/></p>
29284 <p>If this key reports 0,<wbr/> it means a reprocess request doesn't introduce any glitch to the
29285 ongoing camera repeating request outputs,<wbr/> as if this reprocess request is never issued.<wbr/></p>
29286 <p>This key is supported if the camera device supports PRIVATE or YUV reprocessing (
29287 i.<wbr/>e.<wbr/> <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains PRIVATE_<wbr/>REPROCESSING or
29288 YUV_<wbr/>REPROCESSING).<wbr/></p>
29293 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29294 <!-- end of entry -->
29298 <!-- end of kind -->
29301 <!-- end of section -->
29302 <tr><td colspan="7" id="section_depth" class="section">depth</td></tr>
29305 <tr><td colspan="7" class="kind">static</td></tr>
29307 <thead class="entries_header">
29309 <th class="th_name">Property Name</th>
29310 <th class="th_type">Type</th>
29311 <th class="th_description">Description</th>
29312 <th class="th_units">Units</th>
29313 <th class="th_range">Range</th>
29314 <th class="th_hal_version">Initial HIDL HAL version</th>
29315 <th class="th_tags">Tags</th>
29330 <tr class="entry" id="static_android.depth.maxDepthSamples">
29331 <td class="entry_name
29333 android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples
29335 <td class="entry_type">
29336 <span class="entry_type_name">int32</span>
29338 <span class="entry_type_visibility"> [system]</span>
29341 <span class="entry_type_hwlevel">[limited] </span>
29346 </td> <!-- entry_type -->
29348 <td class="entry_description">
29349 <p>Maximum number of points that a depth point cloud may contain.<wbr/></p>
29352 <td class="entry_units">
29355 <td class="entry_range">
29358 <td class="entry_hal_version">
29362 <td class="entry_tags">
29363 <ul class="entry_tags">
29364 <li><a href="#tag_DEPTH">DEPTH</a></li>
29369 <tr class="entries_header">
29370 <th class="th_details" colspan="6">Details</th>
29372 <tr class="entry_cont">
29373 <td class="entry_details" colspan="6">
29374 <p>If a camera device supports outputting depth range data in the form of a depth point
29375 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
29376 number of points an output buffer may contain.<wbr/></p>
29377 <p>Any given buffer may contain between 0 and maxDepthSamples points,<wbr/> inclusive.<wbr/>
29378 If output in the depth point cloud format is not supported,<wbr/> this entry will
29379 not be defined.<wbr/></p>
29384 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29385 <!-- end of entry -->
29388 <tr class="entry" id="static_android.depth.availableDepthStreamConfigurations">
29389 <td class="entry_name
29391 android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stream<wbr/>Configurations
29393 <td class="entry_type">
29394 <span class="entry_type_name entry_type_name_enum">int32</span>
29395 <span class="entry_type_container">x</span>
29397 <span class="entry_type_array">
29400 <span class="entry_type_visibility"> [ndk_public as streamConfiguration]</span>
29403 <span class="entry_type_hwlevel">[limited] </span>
29407 <ul class="entry_type_enum">
29409 <span class="entry_type_enum_name">OUTPUT (v3.2)</span>
29412 <span class="entry_type_enum_name">INPUT (v3.2)</span>
29416 </td> <!-- entry_type -->
29418 <td class="entry_description">
29419 <p>The available depth dataspace stream
29420 configurations that this camera device supports
29421 (i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p>
29424 <td class="entry_units">
29427 <td class="entry_range">
29430 <td class="entry_hal_version">
29434 <td class="entry_tags">
29435 <ul class="entry_tags">
29436 <li><a href="#tag_DEPTH">DEPTH</a></li>
29441 <tr class="entries_header">
29442 <th class="th_details" colspan="6">Details</th>
29444 <tr class="entry_cont">
29445 <td class="entry_details" colspan="6">
29446 <p>These are output stream configurations for use with
29447 dataSpace HAL_<wbr/>DATASPACE_<wbr/>DEPTH.<wbr/> The configurations are
29448 listed as <code>(format,<wbr/> width,<wbr/> height,<wbr/> input?)</code> tuples.<wbr/></p>
29449 <p>Only devices that support depth output for at least
29450 the HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>Y16 dense depth map may include
29451 this entry.<wbr/></p>
29452 <p>A device that also supports the HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>BLOB
29453 sparse depth point cloud must report a single entry for
29454 the format in this list as <code>(HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>BLOB,<wbr/>
29455 <a href="#static_android.depth.maxDepthSamples">android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples</a>,<wbr/> 1,<wbr/> OUTPUT)</code> in addition to
29456 the entries for HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>Y16.<wbr/></p>
29461 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29462 <!-- end of entry -->
29465 <tr class="entry" id="static_android.depth.availableDepthMinFrameDurations">
29466 <td class="entry_name
29468 android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Min<wbr/>Frame<wbr/>Durations
29470 <td class="entry_type">
29471 <span class="entry_type_name">int64</span>
29472 <span class="entry_type_container">x</span>
29474 <span class="entry_type_array">
29477 <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
29480 <span class="entry_type_hwlevel">[limited] </span>
29485 </td> <!-- entry_type -->
29487 <td class="entry_description">
29488 <p>This lists the minimum frame duration for each
29489 format/<wbr/>size combination for depth output formats.<wbr/></p>
29492 <td class="entry_units">
29493 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
29496 <td class="entry_range">
29499 <td class="entry_hal_version">
29503 <td class="entry_tags">
29504 <ul class="entry_tags">
29505 <li><a href="#tag_DEPTH">DEPTH</a></li>
29510 <tr class="entries_header">
29511 <th class="th_details" colspan="6">Details</th>
29513 <tr class="entry_cont">
29514 <td class="entry_details" colspan="6">
29515 <p>This should correspond to the frame duration when only that
29516 stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode)
29517 set to either OFF or FAST.<wbr/></p>
29518 <p>When multiple streams are used in a request,<wbr/> the minimum frame
29519 duration will be max(individual stream min durations).<wbr/></p>
29520 <p>The minimum frame duration of a stream (of a particular format,<wbr/> size)
29521 is the same regardless of whether the stream is input or output.<wbr/></p>
29522 <p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> and
29523 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for more details about
29524 calculating the max frame rate.<wbr/></p>
29529 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29530 <!-- end of entry -->
29533 <tr class="entry" id="static_android.depth.availableDepthStallDurations">
29534 <td class="entry_name
29536 android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stall<wbr/>Durations
29538 <td class="entry_type">
29539 <span class="entry_type_name">int64</span>
29540 <span class="entry_type_container">x</span>
29542 <span class="entry_type_array">
29545 <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
29548 <span class="entry_type_hwlevel">[limited] </span>
29553 </td> <!-- entry_type -->
29555 <td class="entry_description">
29556 <p>This lists the maximum stall duration for each
29557 output format/<wbr/>size combination for depth streams.<wbr/></p>
29560 <td class="entry_units">
29561 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
29564 <td class="entry_range">
29567 <td class="entry_hal_version">
29571 <td class="entry_tags">
29572 <ul class="entry_tags">
29573 <li><a href="#tag_DEPTH">DEPTH</a></li>
29578 <tr class="entries_header">
29579 <th class="th_details" colspan="6">Details</th>
29581 <tr class="entry_cont">
29582 <td class="entry_details" colspan="6">
29583 <p>A stall duration is how much extra time would get added
29584 to the normal minimum frame duration for a repeating request
29585 that has streams with non-zero stall.<wbr/></p>
29586 <p>This functions similarly to
29587 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for depth
29589 <p>All depth output stream formats may have a nonzero stall
29590 duration.<wbr/></p>
29595 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29596 <!-- end of entry -->
29599 <tr class="entry" id="static_android.depth.depthIsExclusive">
29600 <td class="entry_name
29602 android.<wbr/>depth.<wbr/>depth<wbr/>Is<wbr/>Exclusive
29604 <td class="entry_type">
29605 <span class="entry_type_name entry_type_name_enum">byte</span>
29607 <span class="entry_type_visibility"> [public as boolean]</span>
29610 <span class="entry_type_hwlevel">[limited] </span>
29614 <ul class="entry_type_enum">
29616 <span class="entry_type_enum_name">FALSE (v3.2)</span>
29619 <span class="entry_type_enum_name">TRUE (v3.2)</span>
29623 </td> <!-- entry_type -->
29625 <td class="entry_description">
29626 <p>Indicates whether a capture request may target both a
29627 DEPTH16 /<wbr/> DEPTH_<wbr/>POINT_<wbr/>CLOUD output,<wbr/> and normal color outputs (such as
29628 YUV_<wbr/>420_<wbr/>888,<wbr/> JPEG,<wbr/> or RAW) simultaneously.<wbr/></p>
29631 <td class="entry_units">
29634 <td class="entry_range">
29637 <td class="entry_hal_version">
29641 <td class="entry_tags">
29645 <tr class="entries_header">
29646 <th class="th_details" colspan="6">Details</th>
29648 <tr class="entry_cont">
29649 <td class="entry_details" colspan="6">
29650 <p>If TRUE,<wbr/> including both depth and color outputs in a single
29651 capture request is not supported.<wbr/> An application must interleave color
29652 and depth requests.<wbr/> If FALSE,<wbr/> a single request can target both types
29653 of output.<wbr/></p>
29654 <p>Typically,<wbr/> this restriction exists on camera devices that
29655 need to emit a specific pattern or wavelength of light to
29656 measure depth values,<wbr/> which causes the color image to be
29657 corrupted during depth measurement.<wbr/></p>
29662 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29663 <!-- end of entry -->
29667 <!-- end of kind -->
29670 <!-- end of section -->
29671 <tr><td colspan="7" id="section_logicalMultiCamera" class="section">logicalMultiCamera</td></tr>
29674 <tr><td colspan="7" class="kind">static</td></tr>
29676 <thead class="entries_header">
29678 <th class="th_name">Property Name</th>
29679 <th class="th_type">Type</th>
29680 <th class="th_description">Description</th>
29681 <th class="th_units">Units</th>
29682 <th class="th_range">Range</th>
29683 <th class="th_hal_version">Initial HIDL HAL version</th>
29684 <th class="th_tags">Tags</th>
29699 <tr class="entry" id="static_android.logicalMultiCamera.physicalIds">
29700 <td class="entry_name
29702 android.<wbr/>logical<wbr/>Multi<wbr/>Camera.<wbr/>physical<wbr/>Ids
29704 <td class="entry_type">
29705 <span class="entry_type_name">byte</span>
29706 <span class="entry_type_container">x</span>
29708 <span class="entry_type_array">
29711 <span class="entry_type_visibility"> [hidden]</span>
29714 <span class="entry_type_hwlevel">[limited] </span>
29719 </td> <!-- entry_type -->
29721 <td class="entry_description">
29722 <p>String containing the ids of the underlying physical cameras.<wbr/></p>
29725 <td class="entry_units">
29726 UTF-8 null-terminated string
29729 <td class="entry_range">
29732 <td class="entry_hal_version">
29736 <td class="entry_tags">
29737 <ul class="entry_tags">
29738 <li><a href="#tag_LOGICALCAMERA">LOGICALCAMERA</a></li>
29743 <tr class="entries_header">
29744 <th class="th_details" colspan="6">Details</th>
29746 <tr class="entry_cont">
29747 <td class="entry_details" colspan="6">
29748 <p>For a logical camera,<wbr/> this is concatenation of all underlying physical camera ids.<wbr/>
29749 The null terminator for physical camera id must be preserved so that the whole string
29750 can be tokenized using '\0' to generate list of physical camera ids.<wbr/></p>
29751 <p>For example,<wbr/> if the physical camera ids of the logical camera are "2" and "3",<wbr/> the
29752 value of this tag will be ['2',<wbr/> '\0',<wbr/> '3',<wbr/> '\0'].<wbr/></p>
29753 <p>The number of physical camera ids must be no less than 2.<wbr/></p>
29758 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29759 <!-- end of entry -->
29762 <tr class="entry" id="static_android.logicalMultiCamera.sensorSyncType">
29763 <td class="entry_name
29765 android.<wbr/>logical<wbr/>Multi<wbr/>Camera.<wbr/>sensor<wbr/>Sync<wbr/>Type
29767 <td class="entry_type">
29768 <span class="entry_type_name entry_type_name_enum">byte</span>
29770 <span class="entry_type_visibility"> [public]</span>
29773 <span class="entry_type_hwlevel">[limited] </span>
29777 <ul class="entry_type_enum">
29779 <span class="entry_type_enum_name">APPROXIMATE (v3.3)</span>
29780 <span class="entry_type_enum_notes"><p>A software mechanism is used to synchronize between the physical cameras.<wbr/> As a result,<wbr/>
29781 the timestamp of an image from a physical stream is only an approximation of the
29782 image sensor start-of-exposure time.<wbr/></p></span>
29785 <span class="entry_type_enum_name">CALIBRATED (v3.3)</span>
29786 <span class="entry_type_enum_notes"><p>The camera device supports frame timestamp synchronization at the hardware level,<wbr/>
29787 and the timestamp of a physical stream image accurately reflects its
29788 start-of-exposure time.<wbr/></p></span>
29792 </td> <!-- entry_type -->
29794 <td class="entry_description">
29795 <p>The accuracy of frame timestamp synchronization between physical cameras</p>
29798 <td class="entry_units">
29801 <td class="entry_range">
29804 <td class="entry_hal_version">
29808 <td class="entry_tags">
29809 <ul class="entry_tags">
29810 <li><a href="#tag_LOGICALCAMERA">LOGICALCAMERA</a></li>
29815 <tr class="entries_header">
29816 <th class="th_details" colspan="6">Details</th>
29818 <tr class="entry_cont">
29819 <td class="entry_details" colspan="6">
29820 <p>The accuracy of the frame timestamp synchronization determines the physical cameras'
29821 ability to start exposure at the same time.<wbr/> If the sensorSyncType is CALIBRATED,<wbr/>
29822 the physical camera sensors usually run in master-slave mode so that their shutter
29823 time is synchronized.<wbr/> For APPROXIMATE sensorSyncType,<wbr/> the camera sensors usually run in
29824 master-master mode,<wbr/> and there could be offset between their start of exposure.<wbr/></p>
29825 <p>In both cases,<wbr/> all images generated for a particular capture request still carry the same
29826 timestamps,<wbr/> so that they can be used to look up the matching frame number and
29827 onCaptureStarted callback.<wbr/></p>
29832 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29833 <!-- end of entry -->
29837 <!-- end of kind -->
29840 <!-- end of section -->
29841 <tr><td colspan="7" id="section_distortionCorrection" class="section">distortionCorrection</td></tr>
29844 <tr><td colspan="7" class="kind">controls</td></tr>
29846 <thead class="entries_header">
29848 <th class="th_name">Property Name</th>
29849 <th class="th_type">Type</th>
29850 <th class="th_description">Description</th>
29851 <th class="th_units">Units</th>
29852 <th class="th_range">Range</th>
29853 <th class="th_hal_version">Initial HIDL HAL version</th>
29854 <th class="th_tags">Tags</th>
29869 <tr class="entry" id="controls_android.distortionCorrection.mode">
29870 <td class="entry_name
29872 android.<wbr/>distortion<wbr/>Correction.<wbr/>mode
29874 <td class="entry_type">
29875 <span class="entry_type_name entry_type_name_enum">byte</span>
29877 <span class="entry_type_visibility"> [public]</span>
29883 <ul class="entry_type_enum">
29885 <span class="entry_type_enum_name">OFF (v3.3)</span>
29886 <span class="entry_type_enum_notes"><p>No distortion correction is applied.<wbr/></p></span>
29889 <span class="entry_type_enum_name">FAST (v3.3)</span>
29890 <span class="entry_type_enum_notes"><p>Lens distortion correction is applied without reducing frame rate
29891 relative to sensor output.<wbr/> It may be the same as OFF if distortion correction would
29892 reduce frame rate relative to sensor.<wbr/></p></span>
29895 <span class="entry_type_enum_name">HIGH_QUALITY (v3.3)</span>
29896 <span class="entry_type_enum_notes"><p>High-quality distortion correction is applied,<wbr/> at the cost of
29897 possibly reduced frame rate relative to sensor output.<wbr/></p></span>
29901 </td> <!-- entry_type -->
29903 <td class="entry_description">
29904 <p>Mode of operation for the lens distortion correction block.<wbr/></p>
29907 <td class="entry_units">
29910 <td class="entry_range">
29911 <p><a href="#static_android.distortionCorrection.availableModes">android.<wbr/>distortion<wbr/>Correction.<wbr/>available<wbr/>Modes</a></p>
29914 <td class="entry_hal_version">
29918 <td class="entry_tags">
29922 <tr class="entries_header">
29923 <th class="th_details" colspan="6">Details</th>
29925 <tr class="entry_cont">
29926 <td class="entry_details" colspan="6">
29927 <p>The lens distortion correction block attempts to improve image quality by fixing
29928 radial,<wbr/> tangential,<wbr/> or other geometric aberrations in the camera device's optics.<wbr/> If
29929 available,<wbr/> the <a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a> field documents the lens's distortion parameters.<wbr/></p>
29930 <p>OFF means no distortion correction is done.<wbr/></p>
29931 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined distortion correction will be
29932 applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device will use the highest-quality
29933 correction algorithms,<wbr/> even if it slows down capture rate.<wbr/> FAST means the camera device
29934 will not slow down capture rate when applying correction.<wbr/> FAST may be the same as OFF if
29935 any correction at all would slow down capture rate.<wbr/> Every output stream will have a
29936 similar amount of enhancement applied.<wbr/></p>
29937 <p>The correction only applies to processed outputs such as YUV,<wbr/> JPEG,<wbr/> or DEPTH16; it is not
29938 applied to any RAW output.<wbr/> Metadata coordinates such as face rectangles or metering
29939 regions are also not affected by correction.<wbr/></p>
29940 <p>Applications enabling distortion correction need to pay extra attention when converting
29941 image coordinates between corrected output buffers and the sensor array.<wbr/> For example,<wbr/> if
29942 the app supports tap-to-focus and enables correction,<wbr/> it then has to apply the distortion
29943 model described in <a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a> to the image buffer tap coordinates to properly
29944 calculate the tap position on the sensor active array to be used with
29945 <a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a>.<wbr/> The same applies in reverse to detected face rectangles if
29946 they need to be drawn on top of the corrected output buffers.<wbr/></p>
29951 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29952 <!-- end of entry -->
29956 <!-- end of kind -->
29958 <tr><td colspan="7" class="kind">static</td></tr>
29960 <thead class="entries_header">
29962 <th class="th_name">Property Name</th>
29963 <th class="th_type">Type</th>
29964 <th class="th_description">Description</th>
29965 <th class="th_units">Units</th>
29966 <th class="th_range">Range</th>
29967 <th class="th_hal_version">Initial HIDL HAL version</th>
29968 <th class="th_tags">Tags</th>
29983 <tr class="entry" id="static_android.distortionCorrection.availableModes">
29984 <td class="entry_name
29986 android.<wbr/>distortion<wbr/>Correction.<wbr/>available<wbr/>Modes
29988 <td class="entry_type">
29989 <span class="entry_type_name">byte</span>
29990 <span class="entry_type_container">x</span>
29992 <span class="entry_type_array">
29995 <span class="entry_type_visibility"> [public as enumList]</span>
30000 <div class="entry_type_notes">list of enums</div>
30003 </td> <!-- entry_type -->
30005 <td class="entry_description">
30006 <p>List of distortion correction modes for <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> that are
30007 supported by this camera device.<wbr/></p>
30010 <td class="entry_units">
30013 <td class="entry_range">
30014 <p>Any value listed in <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a></p>
30017 <td class="entry_hal_version">
30021 <td class="entry_tags">
30022 <ul class="entry_tags">
30023 <li><a href="#tag_V1">V1</a></li>
30024 <li><a href="#tag_REPROC">REPROC</a></li>
30029 <tr class="entries_header">
30030 <th class="th_details" colspan="6">Details</th>
30032 <tr class="entry_cont">
30033 <td class="entry_details" colspan="6">
30034 <p>No device is required to support this API; such devices will always list only 'OFF'.<wbr/>
30035 All devices that support this API will list both FAST and HIGH_<wbr/>QUALITY.<wbr/></p>
30039 <tr class="entries_header">
30040 <th class="th_details" colspan="6">HAL Implementation Details</th>
30042 <tr class="entry_cont">
30043 <td class="entry_details" colspan="6">
30044 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if distortion correction is available
30045 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
30046 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
30047 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
30051 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
30052 <!-- end of entry -->
30056 <!-- end of kind -->
30058 <tr><td colspan="7" class="kind">dynamic</td></tr>
30060 <thead class="entries_header">
30062 <th class="th_name">Property Name</th>
30063 <th class="th_type">Type</th>
30064 <th class="th_description">Description</th>
30065 <th class="th_units">Units</th>
30066 <th class="th_range">Range</th>
30067 <th class="th_hal_version">Initial HIDL HAL version</th>
30068 <th class="th_tags">Tags</th>
30083 <tr class="entry" id="dynamic_android.distortionCorrection.mode">
30084 <td class="entry_name
30086 android.<wbr/>distortion<wbr/>Correction.<wbr/>mode
30088 <td class="entry_type">
30089 <span class="entry_type_name entry_type_name_enum">byte</span>
30091 <span class="entry_type_visibility"> [public]</span>
30097 <ul class="entry_type_enum">
30099 <span class="entry_type_enum_name">OFF (v3.3)</span>
30100 <span class="entry_type_enum_notes"><p>No distortion correction is applied.<wbr/></p></span>
30103 <span class="entry_type_enum_name">FAST (v3.3)</span>
30104 <span class="entry_type_enum_notes"><p>Lens distortion correction is applied without reducing frame rate
30105 relative to sensor output.<wbr/> It may be the same as OFF if distortion correction would
30106 reduce frame rate relative to sensor.<wbr/></p></span>
30109 <span class="entry_type_enum_name">HIGH_QUALITY (v3.3)</span>
30110 <span class="entry_type_enum_notes"><p>High-quality distortion correction is applied,<wbr/> at the cost of
30111 possibly reduced frame rate relative to sensor output.<wbr/></p></span>
30115 </td> <!-- entry_type -->
30117 <td class="entry_description">
30118 <p>Mode of operation for the lens distortion correction block.<wbr/></p>
30121 <td class="entry_units">
30124 <td class="entry_range">
30125 <p><a href="#static_android.distortionCorrection.availableModes">android.<wbr/>distortion<wbr/>Correction.<wbr/>available<wbr/>Modes</a></p>
30128 <td class="entry_hal_version">
30132 <td class="entry_tags">
30136 <tr class="entries_header">
30137 <th class="th_details" colspan="6">Details</th>
30139 <tr class="entry_cont">
30140 <td class="entry_details" colspan="6">
30141 <p>The lens distortion correction block attempts to improve image quality by fixing
30142 radial,<wbr/> tangential,<wbr/> or other geometric aberrations in the camera device's optics.<wbr/> If
30143 available,<wbr/> the <a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a> field documents the lens's distortion parameters.<wbr/></p>
30144 <p>OFF means no distortion correction is done.<wbr/></p>
30145 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined distortion correction will be
30146 applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device will use the highest-quality
30147 correction algorithms,<wbr/> even if it slows down capture rate.<wbr/> FAST means the camera device
30148 will not slow down capture rate when applying correction.<wbr/> FAST may be the same as OFF if
30149 any correction at all would slow down capture rate.<wbr/> Every output stream will have a
30150 similar amount of enhancement applied.<wbr/></p>
30151 <p>The correction only applies to processed outputs such as YUV,<wbr/> JPEG,<wbr/> or DEPTH16; it is not
30152 applied to any RAW output.<wbr/> Metadata coordinates such as face rectangles or metering
30153 regions are also not affected by correction.<wbr/></p>
30154 <p>Applications enabling distortion correction need to pay extra attention when converting
30155 image coordinates between corrected output buffers and the sensor array.<wbr/> For example,<wbr/> if
30156 the app supports tap-to-focus and enables correction,<wbr/> it then has to apply the distortion
30157 model described in <a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a> to the image buffer tap coordinates to properly
30158 calculate the tap position on the sensor active array to be used with
30159 <a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a>.<wbr/> The same applies in reverse to detected face rectangles if
30160 they need to be drawn on top of the corrected output buffers.<wbr/></p>
30165 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
30166 <!-- end of entry -->
30170 <!-- end of kind -->
30173 <!-- end of section -->
30174 <!-- </namespace> -->
30177 <div class="tags" id="tag_index">
30180 <li id="tag_BC">BC -
30181 Needed for backwards compatibility with old Java API
30183 <ul class="tags_entries">
30184 <li><a href="#controls_android.control.aeAntibandingMode">android.control.aeAntibandingMode</a> (controls)</li>
30185 <li><a href="#controls_android.control.aeExposureCompensation">android.control.aeExposureCompensation</a> (controls)</li>
30186 <li><a href="#controls_android.control.aeLock">android.control.aeLock</a> (controls)</li>
30187 <li><a href="#controls_android.control.aeMode">android.control.aeMode</a> (controls)</li>
30188 <li><a href="#controls_android.control.aeRegions">android.control.aeRegions</a> (controls)</li>
30189 <li><a href="#controls_android.control.aeTargetFpsRange">android.control.aeTargetFpsRange</a> (controls)</li>
30190 <li><a href="#controls_android.control.aePrecaptureTrigger">android.control.aePrecaptureTrigger</a> (controls)</li>
30191 <li><a href="#controls_android.control.afMode">android.control.afMode</a> (controls)</li>
30192 <li><a href="#controls_android.control.afRegions">android.control.afRegions</a> (controls)</li>
30193 <li><a href="#controls_android.control.afTrigger">android.control.afTrigger</a> (controls)</li>
30194 <li><a href="#controls_android.control.awbLock">android.control.awbLock</a> (controls)</li>
30195 <li><a href="#controls_android.control.awbMode">android.control.awbMode</a> (controls)</li>
30196 <li><a href="#controls_android.control.awbRegions">android.control.awbRegions</a> (controls)</li>
30197 <li><a href="#controls_android.control.captureIntent">android.control.captureIntent</a> (controls)</li>
30198 <li><a href="#controls_android.control.effectMode">android.control.effectMode</a> (controls)</li>
30199 <li><a href="#controls_android.control.mode">android.control.mode</a> (controls)</li>
30200 <li><a href="#controls_android.control.sceneMode">android.control.sceneMode</a> (controls)</li>
30201 <li><a href="#controls_android.control.videoStabilizationMode">android.control.videoStabilizationMode</a> (controls)</li>
30202 <li><a href="#static_android.control.aeAvailableAntibandingModes">android.control.aeAvailableAntibandingModes</a> (static)</li>
30203 <li><a href="#static_android.control.aeAvailableModes">android.control.aeAvailableModes</a> (static)</li>
30204 <li><a href="#static_android.control.aeAvailableTargetFpsRanges">android.control.aeAvailableTargetFpsRanges</a> (static)</li>
30205 <li><a href="#static_android.control.aeCompensationRange">android.control.aeCompensationRange</a> (static)</li>
30206 <li><a href="#static_android.control.aeCompensationStep">android.control.aeCompensationStep</a> (static)</li>
30207 <li><a href="#static_android.control.afAvailableModes">android.control.afAvailableModes</a> (static)</li>
30208 <li><a href="#static_android.control.availableEffects">android.control.availableEffects</a> (static)</li>
30209 <li><a href="#static_android.control.availableSceneModes">android.control.availableSceneModes</a> (static)</li>
30210 <li><a href="#static_android.control.availableVideoStabilizationModes">android.control.availableVideoStabilizationModes</a> (static)</li>
30211 <li><a href="#static_android.control.awbAvailableModes">android.control.awbAvailableModes</a> (static)</li>
30212 <li><a href="#static_android.control.maxRegions">android.control.maxRegions</a> (static)</li>
30213 <li><a href="#static_android.control.sceneModeOverrides">android.control.sceneModeOverrides</a> (static)</li>
30214 <li><a href="#static_android.control.aeLockAvailable">android.control.aeLockAvailable</a> (static)</li>
30215 <li><a href="#static_android.control.awbLockAvailable">android.control.awbLockAvailable</a> (static)</li>
30216 <li><a href="#controls_android.flash.mode">android.flash.mode</a> (controls)</li>
30217 <li><a href="#static_android.flash.info.available">android.flash.info.available</a> (static)</li>
30218 <li><a href="#controls_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a> (controls)</li>
30219 <li><a href="#controls_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a> (controls)</li>
30220 <li><a href="#controls_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a> (controls)</li>
30221 <li><a href="#controls_android.jpeg.orientation">android.jpeg.orientation</a> (controls)</li>
30222 <li><a href="#controls_android.jpeg.quality">android.jpeg.quality</a> (controls)</li>
30223 <li><a href="#controls_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a> (controls)</li>
30224 <li><a href="#controls_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a> (controls)</li>
30225 <li><a href="#static_android.jpeg.availableThumbnailSizes">android.jpeg.availableThumbnailSizes</a> (static)</li>
30226 <li><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a> (controls)</li>
30227 <li><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a> (static)</li>
30228 <li><a href="#dynamic_android.lens.focusRange">android.lens.focusRange</a> (dynamic)</li>
30229 <li><a href="#static_android.request.maxNumOutputStreams">android.request.maxNumOutputStreams</a> (static)</li>
30230 <li><a href="#controls_android.scaler.cropRegion">android.scaler.cropRegion</a> (controls)</li>
30231 <li><a href="#static_android.scaler.availableFormats">android.scaler.availableFormats</a> (static)</li>
30232 <li><a href="#static_android.scaler.availableJpegMinDurations">android.scaler.availableJpegMinDurations</a> (static)</li>
30233 <li><a href="#static_android.scaler.availableJpegSizes">android.scaler.availableJpegSizes</a> (static)</li>
30234 <li><a href="#static_android.scaler.availableMaxDigitalZoom">android.scaler.availableMaxDigitalZoom</a> (static)</li>
30235 <li><a href="#static_android.scaler.availableProcessedMinDurations">android.scaler.availableProcessedMinDurations</a> (static)</li>
30236 <li><a href="#static_android.scaler.availableProcessedSizes">android.scaler.availableProcessedSizes</a> (static)</li>
30237 <li><a href="#static_android.scaler.availableRawMinDurations">android.scaler.availableRawMinDurations</a> (static)</li>
30238 <li><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a> (static)</li>
30239 <li><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a> (static)</li>
30240 <li><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a> (static)</li>
30241 <li><a href="#static_android.sensor.orientation">android.sensor.orientation</a> (static)</li>
30242 <li><a href="#dynamic_android.sensor.timestamp">android.sensor.timestamp</a> (dynamic)</li>
30243 <li><a href="#controls_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a> (controls)</li>
30244 <li><a href="#static_android.statistics.info.maxFaceCount">android.statistics.info.maxFaceCount</a> (static)</li>
30245 <li><a href="#dynamic_android.statistics.faceIds">android.statistics.faceIds</a> (dynamic)</li>
30246 <li><a href="#dynamic_android.statistics.faceLandmarks">android.statistics.faceLandmarks</a> (dynamic)</li>
30247 <li><a href="#dynamic_android.statistics.faceRectangles">android.statistics.faceRectangles</a> (dynamic)</li>
30248 <li><a href="#dynamic_android.statistics.faceScores">android.statistics.faceScores</a> (dynamic)</li>
30249 <li><a href="#dynamic_android.lens.focalLength">android.lens.focalLength</a> (dynamic)</li>
30250 <li><a href="#dynamic_android.lens.focusDistance">android.lens.focusDistance</a> (dynamic)</li>
30252 </li> <!-- tag_BC -->
30253 <li id="tag_V1">V1 -
30254 New features for first camera 2 release (API1)
30256 <ul class="tags_entries">
30257 <li><a href="#static_android.colorCorrection.availableAberrationModes">android.colorCorrection.availableAberrationModes</a> (static)</li>
30258 <li><a href="#static_android.control.availableHighSpeedVideoConfigurations">android.control.availableHighSpeedVideoConfigurations</a> (static)</li>
30259 <li><a href="#controls_android.edge.mode">android.edge.mode</a> (controls)</li>
30260 <li><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a> (static)</li>
30261 <li><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a> (controls)</li>
30262 <li><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a> (static)</li>
30263 <li><a href="#controls_android.lens.aperture">android.lens.aperture</a> (controls)</li>
30264 <li><a href="#controls_android.lens.filterDensity">android.lens.filterDensity</a> (controls)</li>
30265 <li><a href="#controls_android.lens.focalLength">android.lens.focalLength</a> (controls)</li>
30266 <li><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a> (controls)</li>
30267 <li><a href="#controls_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a> (controls)</li>
30268 <li><a href="#static_android.lens.info.availableApertures">android.lens.info.availableApertures</a> (static)</li>
30269 <li><a href="#static_android.lens.info.availableFilterDensities">android.lens.info.availableFilterDensities</a> (static)</li>
30270 <li><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a> (static)</li>
30271 <li><a href="#static_android.lens.info.availableOpticalStabilization">android.lens.info.availableOpticalStabilization</a> (static)</li>
30272 <li><a href="#static_android.lens.info.minimumFocusDistance">android.lens.info.minimumFocusDistance</a> (static)</li>
30273 <li><a href="#static_android.lens.info.shadingMapSize">android.lens.info.shadingMapSize</a> (static)</li>
30274 <li><a href="#static_android.lens.info.focusDistanceCalibration">android.lens.info.focusDistanceCalibration</a> (static)</li>
30275 <li><a href="#dynamic_android.lens.state">android.lens.state</a> (dynamic)</li>
30276 <li><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a> (controls)</li>
30277 <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a> (static)</li>
30278 <li><a href="#controls_android.request.id">android.request.id</a> (controls)</li>
30279 <li><a href="#static_android.scaler.availableMinFrameDurations">android.scaler.availableMinFrameDurations</a> (static)</li>
30280 <li><a href="#static_android.scaler.availableStallDurations">android.scaler.availableStallDurations</a> (static)</li>
30281 <li><a href="#controls_android.sensor.exposureTime">android.sensor.exposureTime</a> (controls)</li>
30282 <li><a href="#controls_android.sensor.frameDuration">android.sensor.frameDuration</a> (controls)</li>
30283 <li><a href="#controls_android.sensor.sensitivity">android.sensor.sensitivity</a> (controls)</li>
30284 <li><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a> (static)</li>
30285 <li><a href="#static_android.sensor.info.exposureTimeRange">android.sensor.info.exposureTimeRange</a> (static)</li>
30286 <li><a href="#static_android.sensor.info.maxFrameDuration">android.sensor.info.maxFrameDuration</a> (static)</li>
30287 <li><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a> (static)</li>
30288 <li><a href="#static_android.sensor.info.timestampSource">android.sensor.info.timestampSource</a> (static)</li>
30289 <li><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a> (static)</li>
30290 <li><a href="#dynamic_android.sensor.rollingShutterSkew">android.sensor.rollingShutterSkew</a> (dynamic)</li>
30291 <li><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a> (controls)</li>
30292 <li><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a> (static)</li>
30293 <li><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a> (dynamic)</li>
30294 <li><a href="#dynamic_android.sync.frameNumber">android.sync.frameNumber</a> (dynamic)</li>
30295 <li><a href="#static_android.sync.maxLatency">android.sync.maxLatency</a> (static)</li>
30296 <li><a href="#static_android.distortionCorrection.availableModes">android.distortionCorrection.availableModes</a> (static)</li>
30297 <li><a href="#dynamic_android.edge.mode">android.edge.mode</a> (dynamic)</li>
30298 <li><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a> (dynamic)</li>
30299 <li><a href="#dynamic_android.lens.aperture">android.lens.aperture</a> (dynamic)</li>
30300 <li><a href="#dynamic_android.lens.filterDensity">android.lens.filterDensity</a> (dynamic)</li>
30301 <li><a href="#dynamic_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a> (dynamic)</li>
30302 <li><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a> (dynamic)</li>
30304 </li> <!-- tag_V1 -->
30305 <li id="tag_RAW">RAW -
30306 Needed for useful RAW image processing and DNG file support
30308 <ul class="tags_entries">
30309 <li><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a> (controls)</li>
30310 <li><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a> (static)</li>
30311 <li><a href="#static_android.sensor.info.activeArraySize">android.sensor.info.activeArraySize</a> (static)</li>
30312 <li><a href="#static_android.sensor.info.colorFilterArrangement">android.sensor.info.colorFilterArrangement</a> (static)</li>
30313 <li><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a> (static)</li>
30314 <li><a href="#static_android.sensor.info.whiteLevel">android.sensor.info.whiteLevel</a> (static)</li>
30315 <li><a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.sensor.info.preCorrectionActiveArraySize</a> (static)</li>
30316 <li><a href="#static_android.sensor.referenceIlluminant1">android.sensor.referenceIlluminant1</a> (static)</li>
30317 <li><a href="#static_android.sensor.referenceIlluminant2">android.sensor.referenceIlluminant2</a> (static)</li>
30318 <li><a href="#static_android.sensor.calibrationTransform1">android.sensor.calibrationTransform1</a> (static)</li>
30319 <li><a href="#static_android.sensor.calibrationTransform2">android.sensor.calibrationTransform2</a> (static)</li>
30320 <li><a href="#static_android.sensor.colorTransform1">android.sensor.colorTransform1</a> (static)</li>
30321 <li><a href="#static_android.sensor.colorTransform2">android.sensor.colorTransform2</a> (static)</li>
30322 <li><a href="#static_android.sensor.forwardMatrix1">android.sensor.forwardMatrix1</a> (static)</li>
30323 <li><a href="#static_android.sensor.forwardMatrix2">android.sensor.forwardMatrix2</a> (static)</li>
30324 <li><a href="#static_android.sensor.blackLevelPattern">android.sensor.blackLevelPattern</a> (static)</li>
30325 <li><a href="#static_android.sensor.profileHueSatMapDimensions">android.sensor.profileHueSatMapDimensions</a> (static)</li>
30326 <li><a href="#dynamic_android.sensor.neutralColorPoint">android.sensor.neutralColorPoint</a> (dynamic)</li>
30327 <li><a href="#dynamic_android.sensor.noiseProfile">android.sensor.noiseProfile</a> (dynamic)</li>
30328 <li><a href="#dynamic_android.sensor.profileHueSatMap">android.sensor.profileHueSatMap</a> (dynamic)</li>
30329 <li><a href="#dynamic_android.sensor.profileToneCurve">android.sensor.profileToneCurve</a> (dynamic)</li>
30330 <li><a href="#dynamic_android.sensor.greenSplit">android.sensor.greenSplit</a> (dynamic)</li>
30331 <li><a href="#dynamic_android.sensor.dynamicBlackLevel">android.sensor.dynamicBlackLevel</a> (dynamic)</li>
30332 <li><a href="#dynamic_android.sensor.dynamicWhiteLevel">android.sensor.dynamicWhiteLevel</a> (dynamic)</li>
30333 <li><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a> (controls)</li>
30334 <li><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a> (static)</li>
30335 <li><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a> (dynamic)</li>
30336 <li><a href="#controls_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a> (controls)</li>
30337 <li><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a> (dynamic)</li>
30339 </li> <!-- tag_RAW -->
30340 <li id="tag_HAL2">HAL2 -
30341 Entry is only used by camera device legacy HAL 2.x
30343 <ul class="tags_entries">
30344 <li><a href="#controls_android.request.inputStreams">android.request.inputStreams</a> (controls)</li>
30345 <li><a href="#controls_android.request.outputStreams">android.request.outputStreams</a> (controls)</li>
30346 <li><a href="#controls_android.request.type">android.request.type</a> (controls)</li>
30347 <li><a href="#static_android.request.maxNumReprocessStreams">android.request.maxNumReprocessStreams</a> (static)</li>
30348 <li><a href="#controls_android.blackLevel.lock">android.blackLevel.lock</a> (controls)</li>
30350 </li> <!-- tag_HAL2 -->
30351 <li id="tag_FULL">FULL -
30352 Entry is required for full hardware level devices, and optional for other hardware levels
30354 <ul class="tags_entries">
30355 <li><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a> (static)</li>
30357 </li> <!-- tag_FULL -->
30358 <li id="tag_DEPTH">DEPTH -
30359 Entry is required for the depth capability.
30361 <ul class="tags_entries">
30362 <li><a href="#static_android.lens.poseRotation">android.lens.poseRotation</a> (static)</li>
30363 <li><a href="#static_android.lens.poseTranslation">android.lens.poseTranslation</a> (static)</li>
30364 <li><a href="#static_android.lens.intrinsicCalibration">android.lens.intrinsicCalibration</a> (static)</li>
30365 <li><a href="#static_android.lens.radialDistortion">android.lens.radialDistortion</a> (static)</li>
30366 <li><a href="#static_android.lens.distortion">android.lens.distortion</a> (static)</li>
30367 <li><a href="#static_android.depth.maxDepthSamples">android.depth.maxDepthSamples</a> (static)</li>
30368 <li><a href="#static_android.depth.availableDepthStreamConfigurations">android.depth.availableDepthStreamConfigurations</a> (static)</li>
30369 <li><a href="#static_android.depth.availableDepthMinFrameDurations">android.depth.availableDepthMinFrameDurations</a> (static)</li>
30370 <li><a href="#static_android.depth.availableDepthStallDurations">android.depth.availableDepthStallDurations</a> (static)</li>
30372 </li> <!-- tag_DEPTH -->
30373 <li id="tag_REPROC">REPROC -
30374 Entry is required for the YUV or PRIVATE reprocessing capability.
30376 <ul class="tags_entries">
30377 <li><a href="#controls_android.edge.mode">android.edge.mode</a> (controls)</li>
30378 <li><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a> (static)</li>
30379 <li><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a> (controls)</li>
30380 <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a> (static)</li>
30381 <li><a href="#static_android.request.maxNumInputStreams">android.request.maxNumInputStreams</a> (static)</li>
30382 <li><a href="#static_android.scaler.availableInputOutputFormatsMap">android.scaler.availableInputOutputFormatsMap</a> (static)</li>
30383 <li><a href="#controls_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a> (controls)</li>
30384 <li><a href="#static_android.reprocess.maxCaptureStall">android.reprocess.maxCaptureStall</a> (static)</li>
30385 <li><a href="#static_android.distortionCorrection.availableModes">android.distortionCorrection.availableModes</a> (static)</li>
30386 <li><a href="#dynamic_android.edge.mode">android.edge.mode</a> (dynamic)</li>
30387 <li><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a> (dynamic)</li>
30389 </li> <!-- tag_REPROC -->
30390 <li id="tag_LOGICALCAMERA">LOGICALCAMERA -
30391 Entry is required for logical multi-camera capability.
30393 <ul class="tags_entries">
30394 <li><a href="#static_android.logicalMultiCamera.physicalIds">android.logicalMultiCamera.physicalIds</a> (static)</li>
30395 <li><a href="#static_android.logicalMultiCamera.sensorSyncType">android.logicalMultiCamera.sensorSyncType</a> (static)</li>
30397 </li> <!-- tag_LOGICALCAMERA -->
30398 <li id="tag_FUTURE">FUTURE -
30399 Entry is under-specified and is not required for now. This is for book-keeping purpose,
30400 do not implement or use it, it may be revised for future.
30402 <ul class="tags_entries">
30403 <li><a href="#controls_android.demosaic.mode">android.demosaic.mode</a> (controls)</li>
30404 <li><a href="#controls_android.edge.strength">android.edge.strength</a> (controls)</li>
30405 <li><a href="#controls_android.flash.firingPower">android.flash.firingPower</a> (controls)</li>
30406 <li><a href="#controls_android.flash.firingTime">android.flash.firingTime</a> (controls)</li>
30407 <li><a href="#static_android.flash.info.chargeDuration">android.flash.info.chargeDuration</a> (static)</li>
30408 <li><a href="#static_android.flash.colorTemperature">android.flash.colorTemperature</a> (static)</li>
30409 <li><a href="#static_android.flash.maxEnergy">android.flash.maxEnergy</a> (static)</li>
30410 <li><a href="#dynamic_android.jpeg.size">android.jpeg.size</a> (dynamic)</li>
30411 <li><a href="#controls_android.noiseReduction.strength">android.noiseReduction.strength</a> (controls)</li>
30412 <li><a href="#controls_android.request.metadataMode">android.request.metadataMode</a> (controls)</li>
30413 <li><a href="#static_android.sensor.baseGainFactor">android.sensor.baseGainFactor</a> (static)</li>
30414 <li><a href="#dynamic_android.sensor.temperature">android.sensor.temperature</a> (dynamic)</li>
30415 <li><a href="#controls_android.shading.strength">android.shading.strength</a> (controls)</li>
30416 <li><a href="#controls_android.statistics.histogramMode">android.statistics.histogramMode</a> (controls)</li>
30417 <li><a href="#controls_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a> (controls)</li>
30418 <li><a href="#static_android.statistics.info.histogramBucketCount">android.statistics.info.histogramBucketCount</a> (static)</li>
30419 <li><a href="#static_android.statistics.info.maxHistogramCount">android.statistics.info.maxHistogramCount</a> (static)</li>
30420 <li><a href="#static_android.statistics.info.maxSharpnessMapValue">android.statistics.info.maxSharpnessMapValue</a> (static)</li>
30421 <li><a href="#static_android.statistics.info.sharpnessMapSize">android.statistics.info.sharpnessMapSize</a> (static)</li>
30422 <li><a href="#dynamic_android.statistics.histogram">android.statistics.histogram</a> (dynamic)</li>
30423 <li><a href="#dynamic_android.statistics.sharpnessMap">android.statistics.sharpnessMap</a> (dynamic)</li>
30425 </li> <!-- tag_FUTURE -->
30429 [ <a href="#">top</a> ]