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,<wbr/> the following
11472 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;
11495 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11496 <!-- end of entry -->
11499 <tr class="entry" id="controls_android.jpeg.quality">
11500 <td class="entry_name
11502 android.<wbr/>jpeg.<wbr/>quality
11504 <td class="entry_type">
11505 <span class="entry_type_name">byte</span>
11507 <span class="entry_type_visibility"> [public]</span>
11510 <span class="entry_type_hwlevel">[legacy] </span>
11515 </td> <!-- entry_type -->
11517 <td class="entry_description">
11518 <p>Compression quality of the final JPEG
11522 <td class="entry_units">
11525 <td class="entry_range">
11526 <p>1-100; larger is higher quality</p>
11529 <td class="entry_hal_version">
11533 <td class="entry_tags">
11534 <ul class="entry_tags">
11535 <li><a href="#tag_BC">BC</a></li>
11540 <tr class="entries_header">
11541 <th class="th_details" colspan="6">Details</th>
11543 <tr class="entry_cont">
11544 <td class="entry_details" colspan="6">
11545 <p>85-95 is typical usage range.<wbr/></p>
11550 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11551 <!-- end of entry -->
11554 <tr class="entry" id="controls_android.jpeg.thumbnailQuality">
11555 <td class="entry_name
11557 android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Quality
11559 <td class="entry_type">
11560 <span class="entry_type_name">byte</span>
11562 <span class="entry_type_visibility"> [public]</span>
11565 <span class="entry_type_hwlevel">[legacy] </span>
11570 </td> <!-- entry_type -->
11572 <td class="entry_description">
11573 <p>Compression quality of JPEG
11574 thumbnail.<wbr/></p>
11577 <td class="entry_units">
11580 <td class="entry_range">
11581 <p>1-100; larger is higher quality</p>
11584 <td class="entry_hal_version">
11588 <td class="entry_tags">
11589 <ul class="entry_tags">
11590 <li><a href="#tag_BC">BC</a></li>
11597 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11598 <!-- end of entry -->
11601 <tr class="entry" id="controls_android.jpeg.thumbnailSize">
11602 <td class="entry_name
11604 android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size
11606 <td class="entry_type">
11607 <span class="entry_type_name">int32</span>
11608 <span class="entry_type_container">x</span>
11610 <span class="entry_type_array">
11613 <span class="entry_type_visibility"> [public as size]</span>
11616 <span class="entry_type_hwlevel">[legacy] </span>
11621 </td> <!-- entry_type -->
11623 <td class="entry_description">
11624 <p>Resolution of embedded JPEG thumbnail.<wbr/></p>
11627 <td class="entry_units">
11630 <td class="entry_range">
11631 <p><a href="#static_android.jpeg.availableThumbnailSizes">android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes</a></p>
11634 <td class="entry_hal_version">
11638 <td class="entry_tags">
11639 <ul class="entry_tags">
11640 <li><a href="#tag_BC">BC</a></li>
11645 <tr class="entries_header">
11646 <th class="th_details" colspan="6">Details</th>
11648 <tr class="entry_cont">
11649 <td class="entry_details" colspan="6">
11650 <p>When set to (0,<wbr/> 0) value,<wbr/> the JPEG EXIF will not contain thumbnail,<wbr/>
11651 but the captured JPEG will still be a valid image.<wbr/></p>
11652 <p>For best results,<wbr/> when issuing a request for a JPEG image,<wbr/> the thumbnail size selected
11653 should have the same aspect ratio as the main JPEG output.<wbr/></p>
11654 <p>If the thumbnail image aspect ratio differs from the JPEG primary image aspect
11655 ratio,<wbr/> the camera device creates the thumbnail by cropping it from the primary image.<wbr/>
11656 For example,<wbr/> if the primary image has 4:3 aspect ratio,<wbr/> the thumbnail image has
11657 16:9 aspect ratio,<wbr/> the primary image will be cropped vertically (letterbox) to
11658 generate the thumbnail image.<wbr/> The thumbnail image will always have a smaller Field
11659 Of View (FOV) than the primary image when aspect ratios differ.<wbr/></p>
11660 <p>When an <a href="#controls_android.jpeg.orientation">android.<wbr/>jpeg.<wbr/>orientation</a> of non-zero degree is requested,<wbr/>
11661 the camera device will handle thumbnail rotation in one of the following ways:</p>
11663 <li>Set the <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>
11664 and keep jpeg and thumbnail image data unrotated.<wbr/></li>
11665 <li>Rotate the jpeg and thumbnail image data and not set
11666 <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>.<wbr/> In this
11667 case,<wbr/> LIMITED or FULL hardware level devices will report rotated thumnail size in
11668 capture result,<wbr/> so the width and height will be interchanged if 90 or 270 degree
11669 orientation is requested.<wbr/> LEGACY device will always report unrotated thumbnail
11675 <tr class="entries_header">
11676 <th class="th_details" colspan="6">HAL Implementation Details</th>
11678 <tr class="entry_cont">
11679 <td class="entry_details" colspan="6">
11680 <p>The HAL must not squeeze or stretch the downscaled primary image to generate thumbnail.<wbr/>
11681 The cropping must be done on the primary jpeg image rather than the sensor active array.<wbr/>
11682 The stream cropping rule specified by "S5.<wbr/> Cropping" in camera3.<wbr/>h doesn't apply to the
11683 thumbnail image cropping.<wbr/></p>
11687 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11688 <!-- end of entry -->
11692 <!-- end of kind -->
11694 <tr><td colspan="7" class="kind">static</td></tr>
11696 <thead class="entries_header">
11698 <th class="th_name">Property Name</th>
11699 <th class="th_type">Type</th>
11700 <th class="th_description">Description</th>
11701 <th class="th_units">Units</th>
11702 <th class="th_range">Range</th>
11703 <th class="th_hal_version">Initial HIDL HAL version</th>
11704 <th class="th_tags">Tags</th>
11719 <tr class="entry" id="static_android.jpeg.availableThumbnailSizes">
11720 <td class="entry_name
11722 android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes
11724 <td class="entry_type">
11725 <span class="entry_type_name">int32</span>
11726 <span class="entry_type_container">x</span>
11728 <span class="entry_type_array">
11731 <span class="entry_type_visibility"> [public as size]</span>
11734 <span class="entry_type_hwlevel">[legacy] </span>
11739 </td> <!-- entry_type -->
11741 <td class="entry_description">
11742 <p>List of JPEG thumbnail sizes for <a href="#controls_android.jpeg.thumbnailSize">android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size</a> supported by this
11743 camera device.<wbr/></p>
11746 <td class="entry_units">
11749 <td class="entry_range">
11752 <td class="entry_hal_version">
11756 <td class="entry_tags">
11757 <ul class="entry_tags">
11758 <li><a href="#tag_BC">BC</a></li>
11763 <tr class="entries_header">
11764 <th class="th_details" colspan="6">Details</th>
11766 <tr class="entry_cont">
11767 <td class="entry_details" colspan="6">
11768 <p>This list will include at least one non-zero resolution,<wbr/> plus <code>(0,<wbr/>0)</code> for indicating no
11769 thumbnail should be generated.<wbr/></p>
11770 <p>Below condiditions will be satisfied for this size list:</p>
11772 <li>The sizes will be sorted by increasing pixel area (width x height).<wbr/>
11773 If several resolutions have the same area,<wbr/> they will be sorted by increasing width.<wbr/></li>
11774 <li>The aspect ratio of the largest thumbnail size will be same as the
11775 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/>
11776 The largest size is defined as the size that has the largest pixel area
11777 in a given size list.<wbr/></li>
11778 <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
11779 one corresponding size that has the same aspect ratio in availableThumbnailSizes,<wbr/>
11780 and vice versa.<wbr/></li>
11781 <li>All non-<code>(0,<wbr/> 0)</code> sizes will have non-zero widths and heights.<wbr/></li>
11787 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11788 <!-- end of entry -->
11791 <tr class="entry" id="static_android.jpeg.maxSize">
11792 <td class="entry_name
11794 android.<wbr/>jpeg.<wbr/>max<wbr/>Size
11796 <td class="entry_type">
11797 <span class="entry_type_name">int32</span>
11799 <span class="entry_type_visibility"> [system]</span>
11806 </td> <!-- entry_type -->
11808 <td class="entry_description">
11809 <p>Maximum size in bytes for the compressed
11813 <td class="entry_units">
11816 <td class="entry_range">
11817 <p>Must be large enough to fit any JPEG produced by
11821 <td class="entry_hal_version">
11825 <td class="entry_tags">
11829 <tr class="entries_header">
11830 <th class="th_details" colspan="6">Details</th>
11832 <tr class="entry_cont">
11833 <td class="entry_details" colspan="6">
11834 <p>This is used for sizing the gralloc buffers for
11840 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11841 <!-- end of entry -->
11845 <!-- end of kind -->
11847 <tr><td colspan="7" class="kind">dynamic</td></tr>
11849 <thead class="entries_header">
11851 <th class="th_name">Property Name</th>
11852 <th class="th_type">Type</th>
11853 <th class="th_description">Description</th>
11854 <th class="th_units">Units</th>
11855 <th class="th_range">Range</th>
11856 <th class="th_hal_version">Initial HIDL HAL version</th>
11857 <th class="th_tags">Tags</th>
11872 <tr class="entry" id="dynamic_android.jpeg.gpsLocation">
11873 <td class="entry_name
11875 android.<wbr/>jpeg.<wbr/>gps<wbr/>Location
11877 <td class="entry_type">
11878 <span class="entry_type_name">byte</span>
11880 <span class="entry_type_visibility"> [java_public as location]</span>
11882 <span class="entry_type_synthetic">[synthetic] </span>
11884 <span class="entry_type_hwlevel">[legacy] </span>
11889 </td> <!-- entry_type -->
11891 <td class="entry_description">
11892 <p>A location object to use when generating image GPS metadata.<wbr/></p>
11895 <td class="entry_units">
11898 <td class="entry_range">
11901 <td class="entry_hal_version">
11905 <td class="entry_tags">
11909 <tr class="entries_header">
11910 <th class="th_details" colspan="6">Details</th>
11912 <tr class="entry_cont">
11913 <td class="entry_details" colspan="6">
11914 <p>Setting a location object in a request will include the GPS coordinates of the location
11915 into any JPEG images captured based on the request.<wbr/> These coordinates can then be
11916 viewed by anyone who receives the JPEG image.<wbr/></p>
11921 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11922 <!-- end of entry -->
11925 <tr class="entry" id="dynamic_android.jpeg.gpsCoordinates">
11926 <td class="entry_name
11928 android.<wbr/>jpeg.<wbr/>gps<wbr/>Coordinates
11930 <td class="entry_type">
11931 <span class="entry_type_name">double</span>
11932 <span class="entry_type_container">x</span>
11934 <span class="entry_type_array">
11937 <span class="entry_type_visibility"> [ndk_public]</span>
11940 <span class="entry_type_hwlevel">[legacy] </span>
11943 <div class="entry_type_notes">latitude,<wbr/> longitude,<wbr/> altitude.<wbr/> First two in degrees,<wbr/> the third in meters</div>
11946 </td> <!-- entry_type -->
11948 <td class="entry_description">
11949 <p>GPS coordinates to include in output JPEG
11953 <td class="entry_units">
11956 <td class="entry_range">
11957 <p>(-180 - 180],<wbr/> [-90,<wbr/>90],<wbr/> [-inf,<wbr/> inf]</p>
11960 <td class="entry_hal_version">
11964 <td class="entry_tags">
11965 <ul class="entry_tags">
11966 <li><a href="#tag_BC">BC</a></li>
11973 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11974 <!-- end of entry -->
11977 <tr class="entry" id="dynamic_android.jpeg.gpsProcessingMethod">
11978 <td class="entry_name
11980 android.<wbr/>jpeg.<wbr/>gps<wbr/>Processing<wbr/>Method
11982 <td class="entry_type">
11983 <span class="entry_type_name">byte</span>
11985 <span class="entry_type_visibility"> [ndk_public as string]</span>
11988 <span class="entry_type_hwlevel">[legacy] </span>
11993 </td> <!-- entry_type -->
11995 <td class="entry_description">
11996 <p>32 characters describing GPS algorithm to
11997 include in EXIF.<wbr/></p>
12000 <td class="entry_units">
12001 UTF-8 null-terminated string
12004 <td class="entry_range">
12007 <td class="entry_hal_version">
12011 <td class="entry_tags">
12012 <ul class="entry_tags">
12013 <li><a href="#tag_BC">BC</a></li>
12020 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12021 <!-- end of entry -->
12024 <tr class="entry" id="dynamic_android.jpeg.gpsTimestamp">
12025 <td class="entry_name
12027 android.<wbr/>jpeg.<wbr/>gps<wbr/>Timestamp
12029 <td class="entry_type">
12030 <span class="entry_type_name">int64</span>
12032 <span class="entry_type_visibility"> [ndk_public]</span>
12035 <span class="entry_type_hwlevel">[legacy] </span>
12040 </td> <!-- entry_type -->
12042 <td class="entry_description">
12043 <p>Time GPS fix was made to include in
12047 <td class="entry_units">
12048 UTC in seconds since January 1,<wbr/> 1970
12051 <td class="entry_range">
12054 <td class="entry_hal_version">
12058 <td class="entry_tags">
12059 <ul class="entry_tags">
12060 <li><a href="#tag_BC">BC</a></li>
12067 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12068 <!-- end of entry -->
12071 <tr class="entry" id="dynamic_android.jpeg.orientation">
12072 <td class="entry_name
12074 android.<wbr/>jpeg.<wbr/>orientation
12076 <td class="entry_type">
12077 <span class="entry_type_name">int32</span>
12079 <span class="entry_type_visibility"> [public]</span>
12082 <span class="entry_type_hwlevel">[legacy] </span>
12087 </td> <!-- entry_type -->
12089 <td class="entry_description">
12090 <p>The orientation for a JPEG image.<wbr/></p>
12093 <td class="entry_units">
12094 Degrees in multiples of 90
12097 <td class="entry_range">
12098 <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p>
12101 <td class="entry_hal_version">
12105 <td class="entry_tags">
12106 <ul class="entry_tags">
12107 <li><a href="#tag_BC">BC</a></li>
12112 <tr class="entries_header">
12113 <th class="th_details" colspan="6">Details</th>
12115 <tr class="entry_cont">
12116 <td class="entry_details" colspan="6">
12117 <p>The clockwise rotation angle in degrees,<wbr/> relative to the orientation
12118 to the camera,<wbr/> that the JPEG picture needs to be rotated by,<wbr/> to be viewed
12120 <p>Camera devices may either encode this value into the JPEG EXIF header,<wbr/> or
12121 rotate the image data to match this orientation.<wbr/> When the image data is rotated,<wbr/>
12122 the thumbnail data will also be rotated.<wbr/></p>
12123 <p>Note that this orientation is relative to the orientation of the camera sensor,<wbr/> given
12124 by <a href="#static_android.sensor.orientation">android.<wbr/>sensor.<wbr/>orientation</a>.<wbr/></p>
12125 <p>To translate from the device orientation given by the Android sensor APIs,<wbr/> the following
12126 sample code may be used:</p>
12127 <pre><code>private int getJpegOrientation(CameraCharacteristics c,<wbr/> int deviceOrientation) {
12128 if (deviceOrientation == android.<wbr/>view.<wbr/>Orientation<wbr/>Event<wbr/>Listener.<wbr/>ORIENTATION_<wbr/>UNKNOWN) return 0;
12129 int sensorOrientation = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>SENSOR_<wbr/>ORIENTATION);
12131 //<wbr/> Round device orientation to a multiple of 90
12132 deviceOrientation = (deviceOrientation + 45) /<wbr/> 90 * 90;
12134 //<wbr/> Reverse device orientation for front-facing cameras
12135 boolean facingFront = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING) == Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING_<wbr/>FRONT;
12136 if (facingFront) deviceOrientation = -deviceOrientation;
12138 //<wbr/> Calculate desired JPEG orientation relative to camera orientation to make
12139 //<wbr/> the image upright relative to the device orientation
12140 int jpegOrientation = (sensorOrientation + deviceOrientation + 360) % 360;
12142 return jpegOrientation;
12149 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12150 <!-- end of entry -->
12153 <tr class="entry" id="dynamic_android.jpeg.quality">
12154 <td class="entry_name
12156 android.<wbr/>jpeg.<wbr/>quality
12158 <td class="entry_type">
12159 <span class="entry_type_name">byte</span>
12161 <span class="entry_type_visibility"> [public]</span>
12164 <span class="entry_type_hwlevel">[legacy] </span>
12169 </td> <!-- entry_type -->
12171 <td class="entry_description">
12172 <p>Compression quality of the final JPEG
12176 <td class="entry_units">
12179 <td class="entry_range">
12180 <p>1-100; larger is higher quality</p>
12183 <td class="entry_hal_version">
12187 <td class="entry_tags">
12188 <ul class="entry_tags">
12189 <li><a href="#tag_BC">BC</a></li>
12194 <tr class="entries_header">
12195 <th class="th_details" colspan="6">Details</th>
12197 <tr class="entry_cont">
12198 <td class="entry_details" colspan="6">
12199 <p>85-95 is typical usage range.<wbr/></p>
12204 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12205 <!-- end of entry -->
12208 <tr class="entry" id="dynamic_android.jpeg.size">
12209 <td class="entry_name
12211 android.<wbr/>jpeg.<wbr/>size
12213 <td class="entry_type">
12214 <span class="entry_type_name">int32</span>
12216 <span class="entry_type_visibility"> [system]</span>
12223 </td> <!-- entry_type -->
12225 <td class="entry_description">
12226 <p>The size of the compressed JPEG image,<wbr/> in
12230 <td class="entry_units">
12233 <td class="entry_range">
12237 <td class="entry_hal_version">
12241 <td class="entry_tags">
12242 <ul class="entry_tags">
12243 <li><a href="#tag_FUTURE">FUTURE</a></li>
12248 <tr class="entries_header">
12249 <th class="th_details" colspan="6">Details</th>
12251 <tr class="entry_cont">
12252 <td class="entry_details" colspan="6">
12253 <p>If no JPEG output is produced for the request,<wbr/>
12254 this must be 0.<wbr/></p>
12255 <p>Otherwise,<wbr/> this describes the real size of the compressed
12256 JPEG image placed in the output stream.<wbr/> More specifically,<wbr/>
12257 if <a href="#static_android.jpeg.maxSize">android.<wbr/>jpeg.<wbr/>max<wbr/>Size</a> = 1000000,<wbr/> and a specific capture
12258 has <a href="#dynamic_android.jpeg.size">android.<wbr/>jpeg.<wbr/>size</a> = 500000,<wbr/> then the output buffer from
12259 the JPEG stream will be 1000000 bytes,<wbr/> of which the first
12260 500000 make up the real data.<wbr/></p>
12265 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12266 <!-- end of entry -->
12269 <tr class="entry" id="dynamic_android.jpeg.thumbnailQuality">
12270 <td class="entry_name
12272 android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Quality
12274 <td class="entry_type">
12275 <span class="entry_type_name">byte</span>
12277 <span class="entry_type_visibility"> [public]</span>
12280 <span class="entry_type_hwlevel">[legacy] </span>
12285 </td> <!-- entry_type -->
12287 <td class="entry_description">
12288 <p>Compression quality of JPEG
12289 thumbnail.<wbr/></p>
12292 <td class="entry_units">
12295 <td class="entry_range">
12296 <p>1-100; larger is higher quality</p>
12299 <td class="entry_hal_version">
12303 <td class="entry_tags">
12304 <ul class="entry_tags">
12305 <li><a href="#tag_BC">BC</a></li>
12312 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12313 <!-- end of entry -->
12316 <tr class="entry" id="dynamic_android.jpeg.thumbnailSize">
12317 <td class="entry_name
12319 android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size
12321 <td class="entry_type">
12322 <span class="entry_type_name">int32</span>
12323 <span class="entry_type_container">x</span>
12325 <span class="entry_type_array">
12328 <span class="entry_type_visibility"> [public as size]</span>
12331 <span class="entry_type_hwlevel">[legacy] </span>
12336 </td> <!-- entry_type -->
12338 <td class="entry_description">
12339 <p>Resolution of embedded JPEG thumbnail.<wbr/></p>
12342 <td class="entry_units">
12345 <td class="entry_range">
12346 <p><a href="#static_android.jpeg.availableThumbnailSizes">android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes</a></p>
12349 <td class="entry_hal_version">
12353 <td class="entry_tags">
12354 <ul class="entry_tags">
12355 <li><a href="#tag_BC">BC</a></li>
12360 <tr class="entries_header">
12361 <th class="th_details" colspan="6">Details</th>
12363 <tr class="entry_cont">
12364 <td class="entry_details" colspan="6">
12365 <p>When set to (0,<wbr/> 0) value,<wbr/> the JPEG EXIF will not contain thumbnail,<wbr/>
12366 but the captured JPEG will still be a valid image.<wbr/></p>
12367 <p>For best results,<wbr/> when issuing a request for a JPEG image,<wbr/> the thumbnail size selected
12368 should have the same aspect ratio as the main JPEG output.<wbr/></p>
12369 <p>If the thumbnail image aspect ratio differs from the JPEG primary image aspect
12370 ratio,<wbr/> the camera device creates the thumbnail by cropping it from the primary image.<wbr/>
12371 For example,<wbr/> if the primary image has 4:3 aspect ratio,<wbr/> the thumbnail image has
12372 16:9 aspect ratio,<wbr/> the primary image will be cropped vertically (letterbox) to
12373 generate the thumbnail image.<wbr/> The thumbnail image will always have a smaller Field
12374 Of View (FOV) than the primary image when aspect ratios differ.<wbr/></p>
12375 <p>When an <a href="#controls_android.jpeg.orientation">android.<wbr/>jpeg.<wbr/>orientation</a> of non-zero degree is requested,<wbr/>
12376 the camera device will handle thumbnail rotation in one of the following ways:</p>
12378 <li>Set the <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>
12379 and keep jpeg and thumbnail image data unrotated.<wbr/></li>
12380 <li>Rotate the jpeg and thumbnail image data and not set
12381 <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>.<wbr/> In this
12382 case,<wbr/> LIMITED or FULL hardware level devices will report rotated thumnail size in
12383 capture result,<wbr/> so the width and height will be interchanged if 90 or 270 degree
12384 orientation is requested.<wbr/> LEGACY device will always report unrotated thumbnail
12390 <tr class="entries_header">
12391 <th class="th_details" colspan="6">HAL Implementation Details</th>
12393 <tr class="entry_cont">
12394 <td class="entry_details" colspan="6">
12395 <p>The HAL must not squeeze or stretch the downscaled primary image to generate thumbnail.<wbr/>
12396 The cropping must be done on the primary jpeg image rather than the sensor active array.<wbr/>
12397 The stream cropping rule specified by "S5.<wbr/> Cropping" in camera3.<wbr/>h doesn't apply to the
12398 thumbnail image cropping.<wbr/></p>
12402 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12403 <!-- end of entry -->
12407 <!-- end of kind -->
12410 <!-- end of section -->
12411 <tr><td colspan="7" id="section_lens" class="section">lens</td></tr>
12414 <tr><td colspan="7" class="kind">controls</td></tr>
12416 <thead class="entries_header">
12418 <th class="th_name">Property Name</th>
12419 <th class="th_type">Type</th>
12420 <th class="th_description">Description</th>
12421 <th class="th_units">Units</th>
12422 <th class="th_range">Range</th>
12423 <th class="th_hal_version">Initial HIDL HAL version</th>
12424 <th class="th_tags">Tags</th>
12439 <tr class="entry" id="controls_android.lens.aperture">
12440 <td class="entry_name
12442 android.<wbr/>lens.<wbr/>aperture
12444 <td class="entry_type">
12445 <span class="entry_type_name">float</span>
12447 <span class="entry_type_visibility"> [public]</span>
12450 <span class="entry_type_hwlevel">[full] </span>
12455 </td> <!-- entry_type -->
12457 <td class="entry_description">
12458 <p>The desired lens aperture size,<wbr/> as a ratio of lens focal length to the
12459 effective aperture diameter.<wbr/></p>
12462 <td class="entry_units">
12463 The f-number (f/<wbr/>N)
12466 <td class="entry_range">
12467 <p><a href="#static_android.lens.info.availableApertures">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures</a></p>
12470 <td class="entry_hal_version">
12474 <td class="entry_tags">
12475 <ul class="entry_tags">
12476 <li><a href="#tag_V1">V1</a></li>
12481 <tr class="entries_header">
12482 <th class="th_details" colspan="6">Details</th>
12484 <tr class="entry_cont">
12485 <td class="entry_details" colspan="6">
12486 <p>Setting this value is only supported on the camera devices that have a variable
12487 aperture lens.<wbr/></p>
12488 <p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/>
12489 this can be set along with <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
12490 <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>
12491 to achieve manual exposure control.<wbr/></p>
12492 <p>The requested aperture value may take several frames to reach the
12493 requested value; the camera device will report the current (intermediate)
12494 aperture size in capture result metadata while the aperture is changing.<wbr/>
12495 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>
12496 <p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is one of
12497 the ON modes,<wbr/> this will be overridden by the camera device
12498 auto-exposure algorithm,<wbr/> the overridden values are then provided
12499 back to the user in the corresponding result.<wbr/></p>
12504 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12505 <!-- end of entry -->
12508 <tr class="entry" id="controls_android.lens.filterDensity">
12509 <td class="entry_name
12511 android.<wbr/>lens.<wbr/>filter<wbr/>Density
12513 <td class="entry_type">
12514 <span class="entry_type_name">float</span>
12516 <span class="entry_type_visibility"> [public]</span>
12519 <span class="entry_type_hwlevel">[full] </span>
12524 </td> <!-- entry_type -->
12526 <td class="entry_description">
12527 <p>The desired setting for the lens neutral density filter(s).<wbr/></p>
12530 <td class="entry_units">
12531 Exposure Value (EV)
12534 <td class="entry_range">
12535 <p><a href="#static_android.lens.info.availableFilterDensities">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities</a></p>
12538 <td class="entry_hal_version">
12542 <td class="entry_tags">
12543 <ul class="entry_tags">
12544 <li><a href="#tag_V1">V1</a></li>
12549 <tr class="entries_header">
12550 <th class="th_details" colspan="6">Details</th>
12552 <tr class="entry_cont">
12553 <td class="entry_details" colspan="6">
12554 <p>This control will not be supported on most camera devices.<wbr/></p>
12555 <p>Lens filters are typically used to lower the amount of light the
12556 sensor is exposed to (measured in steps of EV).<wbr/> As used here,<wbr/> an EV
12557 step is the standard logarithmic representation,<wbr/> which are
12558 non-negative,<wbr/> and inversely proportional to the amount of light
12559 hitting the sensor.<wbr/> For example,<wbr/> setting this to 0 would result
12560 in no reduction of the incoming light,<wbr/> and setting this to 2 would
12561 mean that the filter is set to reduce incoming light by two stops
12562 (allowing 1/<wbr/>4 of the prior amount of light to the sensor).<wbr/></p>
12563 <p>It may take several frames before the lens filter density changes
12564 to the requested value.<wbr/> While the filter density is still changing,<wbr/>
12565 <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p>
12570 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12571 <!-- end of entry -->
12574 <tr class="entry" id="controls_android.lens.focalLength">
12575 <td class="entry_name
12577 android.<wbr/>lens.<wbr/>focal<wbr/>Length
12579 <td class="entry_type">
12580 <span class="entry_type_name">float</span>
12582 <span class="entry_type_visibility"> [public]</span>
12585 <span class="entry_type_hwlevel">[legacy] </span>
12590 </td> <!-- entry_type -->
12592 <td class="entry_description">
12593 <p>The desired lens focal length; used for optical zoom.<wbr/></p>
12596 <td class="entry_units">
12600 <td class="entry_range">
12601 <p><a href="#static_android.lens.info.availableFocalLengths">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths</a></p>
12604 <td class="entry_hal_version">
12608 <td class="entry_tags">
12609 <ul class="entry_tags">
12610 <li><a href="#tag_V1">V1</a></li>
12615 <tr class="entries_header">
12616 <th class="th_details" colspan="6">Details</th>
12618 <tr class="entry_cont">
12619 <td class="entry_details" colspan="6">
12620 <p>This setting controls the physical focal length of the camera
12621 device's lens.<wbr/> Changing the focal length changes the field of
12622 view of the camera device,<wbr/> and is usually used for optical zoom.<wbr/></p>
12623 <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
12624 setting won't be applied instantaneously,<wbr/> and it may take several
12625 frames before the lens can change to the requested focal length.<wbr/>
12626 While the focal length is still changing,<wbr/> <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will
12627 be set to MOVING.<wbr/></p>
12628 <p>Optical zoom will not be supported on most devices.<wbr/></p>
12633 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12634 <!-- end of entry -->
12637 <tr class="entry" id="controls_android.lens.focusDistance">
12638 <td class="entry_name
12640 android.<wbr/>lens.<wbr/>focus<wbr/>Distance
12642 <td class="entry_type">
12643 <span class="entry_type_name">float</span>
12645 <span class="entry_type_visibility"> [public]</span>
12648 <span class="entry_type_hwlevel">[full] </span>
12653 </td> <!-- entry_type -->
12655 <td class="entry_description">
12656 <p>Desired distance to plane of sharpest focus,<wbr/>
12657 measured from frontmost surface of the lens.<wbr/></p>
12660 <td class="entry_units">
12661 See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
12664 <td class="entry_range">
12668 <td class="entry_hal_version">
12672 <td class="entry_tags">
12673 <ul class="entry_tags">
12674 <li><a href="#tag_BC">BC</a></li>
12675 <li><a href="#tag_V1">V1</a></li>
12680 <tr class="entries_header">
12681 <th class="th_details" colspan="6">Details</th>
12683 <tr class="entry_cont">
12684 <td class="entry_details" colspan="6">
12685 <p>This control can be used for setting manual focus,<wbr/> on devices that support
12686 the MANUAL_<wbr/>SENSOR capability and have a variable-focus lens (see
12687 <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a>).<wbr/></p>
12688 <p>A value of <code>0.<wbr/>0f</code> means infinity focus.<wbr/> The value set will be clamped to
12689 <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>
12690 <p>Like <a href="#controls_android.lens.focalLength">android.<wbr/>lens.<wbr/>focal<wbr/>Length</a>,<wbr/> this setting won't be applied
12691 instantaneously,<wbr/> and it may take several frames before the lens
12692 can move to the requested focus distance.<wbr/> While the lens is still moving,<wbr/>
12693 <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p>
12694 <p>LEGACY devices support at most setting this to <code>0.<wbr/>0f</code>
12695 for infinity focus.<wbr/></p>
12700 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12701 <!-- end of entry -->
12704 <tr class="entry" id="controls_android.lens.opticalStabilizationMode">
12705 <td class="entry_name
12707 android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode
12709 <td class="entry_type">
12710 <span class="entry_type_name entry_type_name_enum">byte</span>
12712 <span class="entry_type_visibility"> [public]</span>
12715 <span class="entry_type_hwlevel">[limited] </span>
12719 <ul class="entry_type_enum">
12721 <span class="entry_type_enum_name">OFF (v3.2)</span>
12722 <span class="entry_type_enum_notes"><p>Optical stabilization is unavailable.<wbr/></p></span>
12725 <span class="entry_type_enum_name">ON (v3.2)</span>
12726 <span class="entry_type_enum_optional">[optional]</span>
12727 <span class="entry_type_enum_notes"><p>Optical stabilization is enabled.<wbr/></p></span>
12731 </td> <!-- entry_type -->
12733 <td class="entry_description">
12734 <p>Sets whether the camera device uses optical image stabilization (OIS)
12735 when capturing images.<wbr/></p>
12738 <td class="entry_units">
12741 <td class="entry_range">
12742 <p><a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a></p>
12745 <td class="entry_hal_version">
12749 <td class="entry_tags">
12750 <ul class="entry_tags">
12751 <li><a href="#tag_V1">V1</a></li>
12756 <tr class="entries_header">
12757 <th class="th_details" colspan="6">Details</th>
12759 <tr class="entry_cont">
12760 <td class="entry_details" colspan="6">
12761 <p>OIS is used to compensate for motion blur due to small
12762 movements of the camera during capture.<wbr/> Unlike digital image
12763 stabilization (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> OIS
12764 makes use of mechanical elements to stabilize the camera
12765 sensor,<wbr/> and thus allows for longer exposure times before
12766 camera shake becomes apparent.<wbr/></p>
12767 <p>Switching between different optical stabilization modes may take several
12768 frames to initialize,<wbr/> the camera device will report the current mode in
12769 capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/> the
12770 optical stabilization modes in the first several capture results may still
12771 be "OFF",<wbr/> and it will become "ON" when the initialization is done.<wbr/></p>
12772 <p>If a camera device supports both OIS and digital image stabilization
12773 (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may produce undesirable
12774 interaction,<wbr/> so it is recommended not to enable both at the same time.<wbr/></p>
12775 <p>Not all devices will support OIS; see
12776 <a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a> for
12777 available controls.<wbr/></p>
12782 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12783 <!-- end of entry -->
12787 <!-- end of kind -->
12789 <tr><td colspan="7" class="kind">static</td></tr>
12791 <thead class="entries_header">
12793 <th class="th_name">Property Name</th>
12794 <th class="th_type">Type</th>
12795 <th class="th_description">Description</th>
12796 <th class="th_units">Units</th>
12797 <th class="th_range">Range</th>
12798 <th class="th_hal_version">Initial HIDL HAL version</th>
12799 <th class="th_tags">Tags</th>
12816 <tr class="entry" id="static_android.lens.info.availableApertures">
12817 <td class="entry_name
12819 android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures
12821 <td class="entry_type">
12822 <span class="entry_type_name">float</span>
12823 <span class="entry_type_container">x</span>
12825 <span class="entry_type_array">
12828 <span class="entry_type_visibility"> [public]</span>
12831 <span class="entry_type_hwlevel">[full] </span>
12836 </td> <!-- entry_type -->
12838 <td class="entry_description">
12839 <p>List of aperture size values for <a href="#controls_android.lens.aperture">android.<wbr/>lens.<wbr/>aperture</a> that are
12840 supported by this camera device.<wbr/></p>
12843 <td class="entry_units">
12844 The aperture f-number
12847 <td class="entry_range">
12850 <td class="entry_hal_version">
12854 <td class="entry_tags">
12855 <ul class="entry_tags">
12856 <li><a href="#tag_V1">V1</a></li>
12861 <tr class="entries_header">
12862 <th class="th_details" colspan="6">Details</th>
12864 <tr class="entry_cont">
12865 <td class="entry_details" colspan="6">
12866 <p>If the camera device doesn't support a variable lens aperture,<wbr/>
12867 this list will contain only one value,<wbr/> which is the fixed aperture size.<wbr/></p>
12868 <p>If the camera device supports a variable aperture,<wbr/> the aperture values
12869 in this list will be sorted in ascending order.<wbr/></p>
12874 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12875 <!-- end of entry -->
12878 <tr class="entry" id="static_android.lens.info.availableFilterDensities">
12879 <td class="entry_name
12881 android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities
12883 <td class="entry_type">
12884 <span class="entry_type_name">float</span>
12885 <span class="entry_type_container">x</span>
12887 <span class="entry_type_array">
12890 <span class="entry_type_visibility"> [public]</span>
12893 <span class="entry_type_hwlevel">[full] </span>
12898 </td> <!-- entry_type -->
12900 <td class="entry_description">
12901 <p>List of neutral density filter values for
12902 <a href="#controls_android.lens.filterDensity">android.<wbr/>lens.<wbr/>filter<wbr/>Density</a> that are supported by this camera device.<wbr/></p>
12905 <td class="entry_units">
12906 Exposure value (EV)
12909 <td class="entry_range">
12910 <p>Values are >= 0</p>
12913 <td class="entry_hal_version">
12917 <td class="entry_tags">
12918 <ul class="entry_tags">
12919 <li><a href="#tag_V1">V1</a></li>
12924 <tr class="entries_header">
12925 <th class="th_details" colspan="6">Details</th>
12927 <tr class="entry_cont">
12928 <td class="entry_details" colspan="6">
12929 <p>If a neutral density filter is not supported by this camera device,<wbr/>
12930 this list will contain only 0.<wbr/> Otherwise,<wbr/> this list will include every
12931 filter density supported by the camera device,<wbr/> in ascending order.<wbr/></p>
12936 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12937 <!-- end of entry -->
12940 <tr class="entry" id="static_android.lens.info.availableFocalLengths">
12941 <td class="entry_name
12943 android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths
12945 <td class="entry_type">
12946 <span class="entry_type_name">float</span>
12947 <span class="entry_type_container">x</span>
12949 <span class="entry_type_array">
12952 <span class="entry_type_visibility"> [public]</span>
12955 <span class="entry_type_hwlevel">[legacy] </span>
12958 <div class="entry_type_notes">The list of available focal lengths</div>
12961 </td> <!-- entry_type -->
12963 <td class="entry_description">
12964 <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
12968 <td class="entry_units">
12972 <td class="entry_range">
12973 <p>Values are > 0</p>
12976 <td class="entry_hal_version">
12980 <td class="entry_tags">
12981 <ul class="entry_tags">
12982 <li><a href="#tag_BC">BC</a></li>
12983 <li><a href="#tag_V1">V1</a></li>
12988 <tr class="entries_header">
12989 <th class="th_details" colspan="6">Details</th>
12991 <tr class="entry_cont">
12992 <td class="entry_details" colspan="6">
12993 <p>If optical zoom is not supported,<wbr/> this list will only contain
12994 a single value corresponding to the fixed focal length of the
12995 device.<wbr/> Otherwise,<wbr/> this list will include every focal length supported
12996 by the camera device,<wbr/> in ascending order.<wbr/></p>
13001 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13002 <!-- end of entry -->
13005 <tr class="entry" id="static_android.lens.info.availableOpticalStabilization">
13006 <td class="entry_name
13008 android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization
13010 <td class="entry_type">
13011 <span class="entry_type_name">byte</span>
13012 <span class="entry_type_container">x</span>
13014 <span class="entry_type_array">
13017 <span class="entry_type_visibility"> [public as enumList]</span>
13020 <span class="entry_type_hwlevel">[limited] </span>
13023 <div class="entry_type_notes">list of enums</div>
13026 </td> <!-- entry_type -->
13028 <td class="entry_description">
13029 <p>List of optical image stabilization (OIS) modes for
13030 <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>
13033 <td class="entry_units">
13036 <td class="entry_range">
13037 <p>Any value listed in <a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a></p>
13040 <td class="entry_hal_version">
13044 <td class="entry_tags">
13045 <ul class="entry_tags">
13046 <li><a href="#tag_V1">V1</a></li>
13051 <tr class="entries_header">
13052 <th class="th_details" colspan="6">Details</th>
13054 <tr class="entry_cont">
13055 <td class="entry_details" colspan="6">
13056 <p>If OIS is not supported by a given camera device,<wbr/> this list will
13057 contain only OFF.<wbr/></p>
13062 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13063 <!-- end of entry -->
13066 <tr class="entry" id="static_android.lens.info.hyperfocalDistance">
13067 <td class="entry_name
13069 android.<wbr/>lens.<wbr/>info.<wbr/>hyperfocal<wbr/>Distance
13071 <td class="entry_type">
13072 <span class="entry_type_name">float</span>
13074 <span class="entry_type_visibility"> [public]</span>
13077 <span class="entry_type_hwlevel">[limited] </span>
13082 </td> <!-- entry_type -->
13084 <td class="entry_description">
13085 <p>Hyperfocal distance for this lens.<wbr/></p>
13088 <td class="entry_units">
13089 See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
13092 <td class="entry_range">
13093 <p>If lens is fixed focus,<wbr/> >= 0.<wbr/> If lens has focuser unit,<wbr/> the value is
13094 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>
13097 <td class="entry_hal_version">
13101 <td class="entry_tags">
13105 <tr class="entries_header">
13106 <th class="th_details" colspan="6">Details</th>
13108 <tr class="entry_cont">
13109 <td class="entry_details" colspan="6">
13110 <p>If the lens is not fixed focus,<wbr/> the camera device will report this
13111 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>
13116 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13117 <!-- end of entry -->
13120 <tr class="entry" id="static_android.lens.info.minimumFocusDistance">
13121 <td class="entry_name
13123 android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance
13125 <td class="entry_type">
13126 <span class="entry_type_name">float</span>
13128 <span class="entry_type_visibility"> [public]</span>
13131 <span class="entry_type_hwlevel">[limited] </span>
13136 </td> <!-- entry_type -->
13138 <td class="entry_description">
13139 <p>Shortest distance from frontmost surface
13140 of the lens that can be brought into sharp focus.<wbr/></p>
13143 <td class="entry_units">
13144 See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
13147 <td class="entry_range">
13151 <td class="entry_hal_version">
13155 <td class="entry_tags">
13156 <ul class="entry_tags">
13157 <li><a href="#tag_V1">V1</a></li>
13162 <tr class="entries_header">
13163 <th class="th_details" colspan="6">Details</th>
13165 <tr class="entry_cont">
13166 <td class="entry_details" colspan="6">
13167 <p>If the lens is fixed-focus,<wbr/> this will be
13172 <tr class="entries_header">
13173 <th class="th_details" colspan="6">HAL Implementation Details</th>
13175 <tr class="entry_cont">
13176 <td class="entry_details" colspan="6">
13177 <p>Mandatory for FULL devices; LIMITED devices
13178 must always set this value to 0 for fixed-focus; and may omit
13179 the minimum focus distance otherwise.<wbr/></p>
13180 <p>This field is also mandatory for all devices advertising
13181 the MANUAL_<wbr/>SENSOR capability.<wbr/></p>
13185 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13186 <!-- end of entry -->
13189 <tr class="entry" id="static_android.lens.info.shadingMapSize">
13190 <td class="entry_name
13192 android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size
13194 <td class="entry_type">
13195 <span class="entry_type_name">int32</span>
13196 <span class="entry_type_container">x</span>
13198 <span class="entry_type_array">
13201 <span class="entry_type_visibility"> [ndk_public as size]</span>
13204 <span class="entry_type_hwlevel">[full] </span>
13207 <div class="entry_type_notes">width and height (N,<wbr/> M) of lens shading map provided by the camera device.<wbr/></div>
13210 </td> <!-- entry_type -->
13212 <td class="entry_description">
13213 <p>Dimensions of lens shading map.<wbr/></p>
13216 <td class="entry_units">
13219 <td class="entry_range">
13220 <p>Both values >= 1</p>
13223 <td class="entry_hal_version">
13227 <td class="entry_tags">
13228 <ul class="entry_tags">
13229 <li><a href="#tag_V1">V1</a></li>
13234 <tr class="entries_header">
13235 <th class="th_details" colspan="6">Details</th>
13237 <tr class="entry_cont">
13238 <td class="entry_details" colspan="6">
13239 <p>The map should be on the order of 30-40 rows and columns,<wbr/> and
13240 must be smaller than 64x64.<wbr/></p>
13245 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13246 <!-- end of entry -->
13249 <tr class="entry" id="static_android.lens.info.focusDistanceCalibration">
13250 <td class="entry_name
13252 android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration
13254 <td class="entry_type">
13255 <span class="entry_type_name entry_type_name_enum">byte</span>
13257 <span class="entry_type_visibility"> [public]</span>
13260 <span class="entry_type_hwlevel">[limited] </span>
13264 <ul class="entry_type_enum">
13266 <span class="entry_type_enum_name">UNCALIBRATED (v3.2)</span>
13267 <span class="entry_type_enum_notes"><p>The lens focus distance is not accurate,<wbr/> and the units used for
13268 <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> do not correspond to any physical units.<wbr/></p>
13269 <p>Setting the lens to the same focus distance on separate occasions may
13270 result in a different real focus distance,<wbr/> depending on factors such
13271 as the orientation of the device,<wbr/> the age of the focusing mechanism,<wbr/>
13272 and the device temperature.<wbr/> The focus distance value will still be
13273 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
13274 represents the farthest focus.<wbr/></p></span>
13277 <span class="entry_type_enum_name">APPROXIMATE (v3.2)</span>
13278 <span class="entry_type_enum_notes"><p>The lens focus distance is measured in diopters.<wbr/></p>
13279 <p>However,<wbr/> setting the lens to the same focus distance
13280 on separate occasions may result in a different real
13281 focus distance,<wbr/> depending on factors such as the
13282 orientation of the device,<wbr/> the age of the focusing
13283 mechanism,<wbr/> and the device temperature.<wbr/></p></span>
13286 <span class="entry_type_enum_name">CALIBRATED (v3.2)</span>
13287 <span class="entry_type_enum_notes"><p>The lens focus distance is measured in diopters,<wbr/> and
13288 is calibrated.<wbr/></p>
13289 <p>The lens mechanism is calibrated so that setting the
13290 same focus distance is repeatable on multiple
13291 occasions with good accuracy,<wbr/> and the focus distance
13292 corresponds to the real physical distance to the plane
13293 of best focus.<wbr/></p></span>
13297 </td> <!-- entry_type -->
13299 <td class="entry_description">
13300 <p>The lens focus distance calibration quality.<wbr/></p>
13303 <td class="entry_units">
13306 <td class="entry_range">
13309 <td class="entry_hal_version">
13313 <td class="entry_tags">
13314 <ul class="entry_tags">
13315 <li><a href="#tag_V1">V1</a></li>
13320 <tr class="entries_header">
13321 <th class="th_details" colspan="6">Details</th>
13323 <tr class="entry_cont">
13324 <td class="entry_details" colspan="6">
13325 <p>The lens focus distance calibration quality determines the reliability of
13326 focus related metadata entries,<wbr/> i.<wbr/>e.<wbr/> <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a>,<wbr/>
13327 <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
13328 <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a>.<wbr/></p>
13329 <p>APPROXIMATE and CALIBRATED devices report the focus metadata in
13330 units of diopters (1/<wbr/>meter),<wbr/> so <code>0.<wbr/>0f</code> represents focusing at infinity,<wbr/>
13331 and increasing positive numbers represent focusing closer and closer
13332 to the camera device.<wbr/> The focus distance control also uses diopters
13333 on these devices.<wbr/></p>
13334 <p>UNCALIBRATED devices do not use units that are directly comparable
13335 to any real physical measurement,<wbr/> but <code>0.<wbr/>0f</code> still represents farthest
13336 focus,<wbr/> and <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a> represents the
13337 nearest focus the device can achieve.<wbr/></p>
13341 <tr class="entries_header">
13342 <th class="th_details" colspan="6">HAL Implementation Details</th>
13344 <tr class="entry_cont">
13345 <td class="entry_details" colspan="6">
13346 <p>For devices advertise APPROXIMATE quality or higher,<wbr/> diopters 0 (infinity
13347 focus) must work.<wbr/> When autofocus is disabled (<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> == OFF)
13348 and the lens focus distance is set to 0 diopters
13349 (<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> == 0),<wbr/> the lens will move to focus at infinity
13350 and is stably focused at infinity even if the device tilts.<wbr/> It may take the
13351 lens some time to move; during the move the lens state should be MOVING and
13352 the output diopter value should be changing toward 0.<wbr/></p>
13356 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13357 <!-- end of entry -->
13363 <tr class="entry" id="static_android.lens.facing">
13364 <td class="entry_name
13366 android.<wbr/>lens.<wbr/>facing
13368 <td class="entry_type">
13369 <span class="entry_type_name entry_type_name_enum">byte</span>
13371 <span class="entry_type_visibility"> [public]</span>
13374 <span class="entry_type_hwlevel">[legacy] </span>
13378 <ul class="entry_type_enum">
13380 <span class="entry_type_enum_name">FRONT (v3.2)</span>
13381 <span class="entry_type_enum_notes"><p>The camera device faces the same direction as the device's screen.<wbr/></p></span>
13384 <span class="entry_type_enum_name">BACK (v3.2)</span>
13385 <span class="entry_type_enum_notes"><p>The camera device faces the opposite direction as the device's screen.<wbr/></p></span>
13388 <span class="entry_type_enum_name">EXTERNAL (v3.2)</span>
13389 <span class="entry_type_enum_notes"><p>The camera device is an external camera,<wbr/> and has no fixed facing relative to the
13390 device's screen.<wbr/></p></span>
13394 </td> <!-- entry_type -->
13396 <td class="entry_description">
13397 <p>Direction the camera faces relative to
13398 device screen.<wbr/></p>
13401 <td class="entry_units">
13404 <td class="entry_range">
13407 <td class="entry_hal_version">
13411 <td class="entry_tags">
13417 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13418 <!-- end of entry -->
13421 <tr class="entry" id="static_android.lens.poseRotation">
13422 <td class="entry_name
13424 android.<wbr/>lens.<wbr/>pose<wbr/>Rotation
13426 <td class="entry_type">
13427 <span class="entry_type_name">float</span>
13428 <span class="entry_type_container">x</span>
13430 <span class="entry_type_array">
13433 <span class="entry_type_visibility"> [public]</span>
13440 </td> <!-- entry_type -->
13442 <td class="entry_description">
13443 <p>The orientation of the camera relative to the sensor
13444 coordinate system.<wbr/></p>
13447 <td class="entry_units">
13449 Quaternion coefficients
13453 <td class="entry_range">
13456 <td class="entry_hal_version">
13460 <td class="entry_tags">
13461 <ul class="entry_tags">
13462 <li><a href="#tag_DEPTH">DEPTH</a></li>
13467 <tr class="entries_header">
13468 <th class="th_details" colspan="6">Details</th>
13470 <tr class="entry_cont">
13471 <td class="entry_details" colspan="6">
13472 <p>The four coefficients that describe the quaternion
13473 rotation from the Android sensor coordinate system to a
13474 camera-aligned coordinate system where the X-axis is
13475 aligned with the long side of the image sensor,<wbr/> the Y-axis
13476 is aligned with the short side of the image sensor,<wbr/> and
13477 the Z-axis is aligned with the optical axis of the sensor.<wbr/></p>
13478 <p>To convert from the quaternion coefficients <code>(x,<wbr/>y,<wbr/>z,<wbr/>w)</code>
13479 to the axis of rotation <code>(a_<wbr/>x,<wbr/> a_<wbr/>y,<wbr/> a_<wbr/>z)</code> and rotation
13480 amount <code>theta</code>,<wbr/> the following formulas can be used:</p>
13481 <pre><code> theta = 2 * acos(w)
13482 a_<wbr/>x = x /<wbr/> sin(theta/<wbr/>2)
13483 a_<wbr/>y = y /<wbr/> sin(theta/<wbr/>2)
13484 a_<wbr/>z = z /<wbr/> sin(theta/<wbr/>2)
13486 <p>To create a 3x3 rotation matrix that applies the rotation
13487 defined by this quaternion,<wbr/> the following matrix can be
13489 <pre><code>R = [ 1 - 2y^2 - 2z^2,<wbr/> 2xy - 2zw,<wbr/> 2xz + 2yw,<wbr/>
13490 2xy + 2zw,<wbr/> 1 - 2x^2 - 2z^2,<wbr/> 2yz - 2xw,<wbr/>
13491 2xz - 2yw,<wbr/> 2yz + 2xw,<wbr/> 1 - 2x^2 - 2y^2 ]
13493 <p>This matrix can then be used to apply the rotation to a
13494 column vector point with</p>
13495 <p><code>p' = Rp</code></p>
13496 <p>where <code>p</code> is in the device sensor coordinate system,<wbr/> and
13497 <code>p'</code> is in the camera-oriented coordinate system.<wbr/></p>
13502 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13503 <!-- end of entry -->
13506 <tr class="entry" id="static_android.lens.poseTranslation">
13507 <td class="entry_name
13509 android.<wbr/>lens.<wbr/>pose<wbr/>Translation
13511 <td class="entry_type">
13512 <span class="entry_type_name">float</span>
13513 <span class="entry_type_container">x</span>
13515 <span class="entry_type_array">
13518 <span class="entry_type_visibility"> [public]</span>
13525 </td> <!-- entry_type -->
13527 <td class="entry_description">
13528 <p>Position of the camera optical center.<wbr/></p>
13531 <td class="entry_units">
13535 <td class="entry_range">
13538 <td class="entry_hal_version">
13542 <td class="entry_tags">
13543 <ul class="entry_tags">
13544 <li><a href="#tag_DEPTH">DEPTH</a></li>
13549 <tr class="entries_header">
13550 <th class="th_details" colspan="6">Details</th>
13552 <tr class="entry_cont">
13553 <td class="entry_details" colspan="6">
13554 <p>The position of the camera device's lens optical center,<wbr/>
13555 as a three-dimensional vector <code>(x,<wbr/>y,<wbr/>z)</code>.<wbr/></p>
13556 <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
13557 is relative to the optical center of the largest camera device facing in the same
13558 direction as this camera,<wbr/> in the <a href="https://developer.android.com/reference/android/hardware/SensorEvent.html">Android sensor
13559 coordinate axes</a>.<wbr/> Note that only the axis definitions are shared with the sensor
13560 coordinate system,<wbr/> but not the origin.<wbr/></p>
13561 <p>If this device is the largest or only camera device with a given facing,<wbr/> then this
13562 position will be <code>(0,<wbr/> 0,<wbr/> 0)</code>; a camera device with a lens optical center located 3 cm
13563 from the main sensor along the +X axis (to the right from the user's perspective) will
13564 report <code>(0.<wbr/>03,<wbr/> 0,<wbr/> 0)</code>.<wbr/></p>
13565 <p>To transform a pixel coordinates between two cameras facing the same direction,<wbr/> first
13566 the source camera <a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a> must be corrected for.<wbr/> Then the source
13567 camera <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> needs to be applied,<wbr/> followed by the
13568 <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
13569 relative to the destination camera,<wbr/> the <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> of the destination
13570 camera,<wbr/> and finally the inverse of <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> of the destination
13571 camera.<wbr/> This obtains a radial-distortion-free coordinate in the destination camera pixel
13572 coordinates.<wbr/></p>
13573 <p>To compare this against a real image from the destination camera,<wbr/> the destination camera
13574 image then needs to be corrected for radial distortion before comparison or sampling.<wbr/></p>
13575 <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
13576 the center of the primary gyroscope on the device.<wbr/></p>
13581 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13582 <!-- end of entry -->
13585 <tr class="entry" id="static_android.lens.intrinsicCalibration">
13586 <td class="entry_name
13588 android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration
13590 <td class="entry_type">
13591 <span class="entry_type_name">float</span>
13592 <span class="entry_type_container">x</span>
13594 <span class="entry_type_array">
13597 <span class="entry_type_visibility"> [public]</span>
13604 </td> <!-- entry_type -->
13606 <td class="entry_description">
13607 <p>The parameters for this camera device's intrinsic
13608 calibration.<wbr/></p>
13611 <td class="entry_units">
13614 android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size
13615 coordinate system.<wbr/>
13619 <td class="entry_range">
13622 <td class="entry_hal_version">
13626 <td class="entry_tags">
13627 <ul class="entry_tags">
13628 <li><a href="#tag_DEPTH">DEPTH</a></li>
13633 <tr class="entries_header">
13634 <th class="th_details" colspan="6">Details</th>
13636 <tr class="entry_cont">
13637 <td class="entry_details" colspan="6">
13638 <p>The five calibration parameters that describe the
13639 transform from camera-centric 3D coordinates to sensor
13640 pixel coordinates:</p>
13641 <pre><code>[f_<wbr/>x,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>x,<wbr/> c_<wbr/>y,<wbr/> s]
13643 <p>Where <code>f_<wbr/>x</code> and <code>f_<wbr/>y</code> are the horizontal and vertical
13644 focal lengths,<wbr/> <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code> is the position of the optical
13645 axis,<wbr/> and <code>s</code> is a skew parameter for the sensor plane not
13646 being aligned with the lens plane.<wbr/></p>
13647 <p>These are typically used within a transformation matrix K:</p>
13648 <pre><code>K = [ f_<wbr/>x,<wbr/> s,<wbr/> c_<wbr/>x,<wbr/>
13649 0,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>y,<wbr/>
13652 <p>which can then be combined with the camera pose rotation
13653 <code>R</code> and translation <code>t</code> (<a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> and
13654 <a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a>,<wbr/> respective) to calculate the
13655 complete transform from world coordinates to pixel
13657 <pre><code>P = [ K 0 * [ R t
13660 <p>and with <code>p_<wbr/>w</code> being a point in the world coordinate system
13661 and <code>p_<wbr/>s</code> being a point in the camera active pixel array
13662 coordinate system,<wbr/> and with the mapping including the
13663 homogeneous division by z:</p>
13664 <pre><code> p_<wbr/>h = (x_<wbr/>h,<wbr/> y_<wbr/>h,<wbr/> z_<wbr/>h) = P p_<wbr/>w
13665 p_<wbr/>s = p_<wbr/>h /<wbr/> z_<wbr/>h
13667 <p>so <code>[x_<wbr/>s,<wbr/> y_<wbr/>s]</code> is the pixel coordinates of the world
13668 point,<wbr/> <code>z_<wbr/>s = 1</code>,<wbr/> and <code>w_<wbr/>s</code> is a measurement of disparity
13669 (depth) in pixel coordinates.<wbr/></p>
13670 <p>Note that the coordinate system for this transform is the
13671 <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/>
13672 where <code>(0,<wbr/>0)</code> is the top-left of the
13673 preCorrectionActiveArraySize rectangle.<wbr/> Once the pose and
13674 intrinsic calibration transforms have been applied to a
13675 world point,<wbr/> then the <a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a>
13676 transform needs to be applied,<wbr/> and the result adjusted to
13677 be in the <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> coordinate
13678 system (where <code>(0,<wbr/> 0)</code> is the top-left of the
13679 activeArraySize rectangle),<wbr/> to determine the final pixel
13680 coordinate of the world point for processed (non-RAW)
13681 output buffers.<wbr/></p>
13686 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13687 <!-- end of entry -->
13690 <tr class="entry" id="static_android.lens.radialDistortion">
13691 <td class="entry_name
13692 entry_name_deprecated
13694 android.<wbr/>lens.<wbr/>radial<wbr/>Distortion
13696 <td class="entry_type">
13697 <span class="entry_type_name">float</span>
13698 <span class="entry_type_container">x</span>
13700 <span class="entry_type_array">
13703 <span class="entry_type_visibility"> [public]</span>
13707 <span class="entry_type_deprecated">[deprecated] </span>
13711 </td> <!-- entry_type -->
13713 <td class="entry_description">
13714 <p>The correction coefficients to correct for this camera device's
13715 radial and tangential lens distortion.<wbr/></p>
13718 <td class="entry_units">
13720 Unitless coefficients.<wbr/>
13724 <td class="entry_range">
13725 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
13728 <td class="entry_hal_version">
13732 <td class="entry_tags">
13733 <ul class="entry_tags">
13734 <li><a href="#tag_DEPTH">DEPTH</a></li>
13739 <tr class="entries_header">
13740 <th class="th_details" colspan="6">Details</th>
13742 <tr class="entry_cont">
13743 <td class="entry_details" colspan="6">
13744 <p>Four radial distortion coefficients <code>[kappa_<wbr/>0,<wbr/> kappa_<wbr/>1,<wbr/> kappa_<wbr/>2,<wbr/>
13745 kappa_<wbr/>3]</code> and two tangential distortion coefficients
13746 <code>[kappa_<wbr/>4,<wbr/> kappa_<wbr/>5]</code> that can be used to correct the
13747 lens's geometric distortion with the mapping equations:</p>
13748 <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 ) +
13749 kappa_<wbr/>4 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>5 * ( r^2 + 2 * x_<wbr/>i^2 )
13750 y_<wbr/>c = y_<wbr/>i * ( kappa_<wbr/>0 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) +
13751 kappa_<wbr/>5 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>4 * ( r^2 + 2 * y_<wbr/>i^2 )
13753 <p>Here,<wbr/> <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> are the coordinates to sample in the
13754 input image that correspond to the pixel values in the
13755 corrected image at the coordinate <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code>:</p>
13756 <pre><code> correctedImage(x_<wbr/>i,<wbr/> y_<wbr/>i) = sample_<wbr/>at(x_<wbr/>c,<wbr/> y_<wbr/>c,<wbr/> inputImage)
13758 <p>The pixel coordinates are defined in a normalized
13759 coordinate system related to the
13760 <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> calibration fields.<wbr/>
13761 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
13762 lens optical center <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code>.<wbr/> The maximum magnitudes
13763 of both x and y coordinates are normalized to be 1 at the
13764 edge further from the optical center,<wbr/> so the range
13765 for both dimensions is <code>-1 <= x <= 1</code>.<wbr/></p>
13766 <p>Finally,<wbr/> <code>r</code> represents the radial distance from the
13767 optical center,<wbr/> <code>r^2 = x_<wbr/>i^2 + y_<wbr/>i^2</code>,<wbr/> and its magnitude
13768 is therefore no larger than <code>|<wbr/>r|<wbr/> <= sqrt(2)</code>.<wbr/></p>
13769 <p>The distortion model used is the Brown-Conrady model.<wbr/></p>
13774 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13775 <!-- end of entry -->
13778 <tr class="entry" id="static_android.lens.poseReference">
13779 <td class="entry_name
13781 android.<wbr/>lens.<wbr/>pose<wbr/>Reference
13783 <td class="entry_type">
13784 <span class="entry_type_name entry_type_name_enum">byte</span>
13786 <span class="entry_type_visibility"> [public]</span>
13792 <ul class="entry_type_enum">
13794 <span class="entry_type_enum_name">PRIMARY_CAMERA (v3.3)</span>
13795 <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
13796 the largest camera device facing the same direction as this camera.<wbr/></p>
13797 <p>This is the default value for API levels before Android P.<wbr/></p></span>
13800 <span class="entry_type_enum_name">GYROSCOPE (v3.3)</span>
13801 <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
13802 primary gyroscope of this Android device.<wbr/></p></span>
13806 </td> <!-- entry_type -->
13808 <td class="entry_description">
13809 <p>The origin for <a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a>.<wbr/></p>
13812 <td class="entry_units">
13815 <td class="entry_range">
13818 <td class="entry_hal_version">
13822 <td class="entry_tags">
13826 <tr class="entries_header">
13827 <th class="th_details" colspan="6">Details</th>
13829 <tr class="entry_cont">
13830 <td class="entry_details" colspan="6">
13831 <p>Different calibration methods and use cases can produce better or worse results
13832 depending on the selected coordinate origin.<wbr/></p>
13837 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13838 <!-- end of entry -->
13841 <tr class="entry" id="static_android.lens.distortion">
13842 <td class="entry_name
13844 android.<wbr/>lens.<wbr/>distortion
13846 <td class="entry_type">
13847 <span class="entry_type_name">float</span>
13848 <span class="entry_type_container">x</span>
13850 <span class="entry_type_array">
13853 <span class="entry_type_visibility"> [public]</span>
13860 </td> <!-- entry_type -->
13862 <td class="entry_description">
13863 <p>The correction coefficients to correct for this camera device's
13864 radial and tangential lens distortion.<wbr/></p>
13865 <p>Replaces the deprecated <a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a> field,<wbr/> which was
13866 inconsistently defined.<wbr/></p>
13869 <td class="entry_units">
13871 Unitless coefficients.<wbr/>
13875 <td class="entry_range">
13878 <td class="entry_hal_version">
13882 <td class="entry_tags">
13883 <ul class="entry_tags">
13884 <li><a href="#tag_DEPTH">DEPTH</a></li>
13889 <tr class="entries_header">
13890 <th class="th_details" colspan="6">Details</th>
13892 <tr class="entry_cont">
13893 <td class="entry_details" colspan="6">
13894 <p>Three radial distortion coefficients <code>[kappa_<wbr/>1,<wbr/> kappa_<wbr/>2,<wbr/>
13895 kappa_<wbr/>3]</code> and two tangential distortion coefficients
13896 <code>[kappa_<wbr/>4,<wbr/> kappa_<wbr/>5]</code> that can be used to correct the
13897 lens's geometric distortion with the mapping equations:</p>
13898 <pre><code> x_<wbr/>c = x_<wbr/>i * ( 1 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) +
13899 kappa_<wbr/>4 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>5 * ( r^2 + 2 * x_<wbr/>i^2 )
13900 y_<wbr/>c = y_<wbr/>i * ( 1 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) +
13901 kappa_<wbr/>5 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>4 * ( r^2 + 2 * y_<wbr/>i^2 )
13903 <p>Here,<wbr/> <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> are the coordinates to sample in the
13904 input image that correspond to the pixel values in the
13905 corrected image at the coordinate <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code>:</p>
13906 <pre><code> correctedImage(x_<wbr/>i,<wbr/> y_<wbr/>i) = sample_<wbr/>at(x_<wbr/>c,<wbr/> y_<wbr/>c,<wbr/> inputImage)
13908 <p>The pixel coordinates are defined in a coordinate system
13909 related to the <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a>
13910 calibration fields; see that entry for details of the mapping stages.<wbr/>
13911 Both <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code> and <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code>
13912 have <code>(0,<wbr/>0)</code> at the lens optical center <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code>,<wbr/> and
13913 the range of the coordinates depends on the focal length
13914 terms of the intrinsic calibration.<wbr/></p>
13915 <p>Finally,<wbr/> <code>r</code> represents the radial distance from the
13916 optical center,<wbr/> <code>r^2 = x_<wbr/>i^2 + y_<wbr/>i^2</code>.<wbr/></p>
13917 <p>The distortion model used is the Brown-Conrady model.<wbr/></p>
13922 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13923 <!-- end of entry -->
13927 <!-- end of kind -->
13929 <tr><td colspan="7" class="kind">dynamic</td></tr>
13931 <thead class="entries_header">
13933 <th class="th_name">Property Name</th>
13934 <th class="th_type">Type</th>
13935 <th class="th_description">Description</th>
13936 <th class="th_units">Units</th>
13937 <th class="th_range">Range</th>
13938 <th class="th_hal_version">Initial HIDL HAL version</th>
13939 <th class="th_tags">Tags</th>
13954 <tr class="entry" id="dynamic_android.lens.aperture">
13955 <td class="entry_name
13957 android.<wbr/>lens.<wbr/>aperture
13959 <td class="entry_type">
13960 <span class="entry_type_name">float</span>
13962 <span class="entry_type_visibility"> [public]</span>
13965 <span class="entry_type_hwlevel">[full] </span>
13970 </td> <!-- entry_type -->
13972 <td class="entry_description">
13973 <p>The desired lens aperture size,<wbr/> as a ratio of lens focal length to the
13974 effective aperture diameter.<wbr/></p>
13977 <td class="entry_units">
13978 The f-number (f/<wbr/>N)
13981 <td class="entry_range">
13982 <p><a href="#static_android.lens.info.availableApertures">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures</a></p>
13985 <td class="entry_hal_version">
13989 <td class="entry_tags">
13990 <ul class="entry_tags">
13991 <li><a href="#tag_V1">V1</a></li>
13996 <tr class="entries_header">
13997 <th class="th_details" colspan="6">Details</th>
13999 <tr class="entry_cont">
14000 <td class="entry_details" colspan="6">
14001 <p>Setting this value is only supported on the camera devices that have a variable
14002 aperture lens.<wbr/></p>
14003 <p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/>
14004 this can be set along with <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
14005 <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>
14006 to achieve manual exposure control.<wbr/></p>
14007 <p>The requested aperture value may take several frames to reach the
14008 requested value; the camera device will report the current (intermediate)
14009 aperture size in capture result metadata while the aperture is changing.<wbr/>
14010 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>
14011 <p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is one of
14012 the ON modes,<wbr/> this will be overridden by the camera device
14013 auto-exposure algorithm,<wbr/> the overridden values are then provided
14014 back to the user in the corresponding result.<wbr/></p>
14019 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14020 <!-- end of entry -->
14023 <tr class="entry" id="dynamic_android.lens.filterDensity">
14024 <td class="entry_name
14026 android.<wbr/>lens.<wbr/>filter<wbr/>Density
14028 <td class="entry_type">
14029 <span class="entry_type_name">float</span>
14031 <span class="entry_type_visibility"> [public]</span>
14034 <span class="entry_type_hwlevel">[full] </span>
14039 </td> <!-- entry_type -->
14041 <td class="entry_description">
14042 <p>The desired setting for the lens neutral density filter(s).<wbr/></p>
14045 <td class="entry_units">
14046 Exposure Value (EV)
14049 <td class="entry_range">
14050 <p><a href="#static_android.lens.info.availableFilterDensities">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities</a></p>
14053 <td class="entry_hal_version">
14057 <td class="entry_tags">
14058 <ul class="entry_tags">
14059 <li><a href="#tag_V1">V1</a></li>
14064 <tr class="entries_header">
14065 <th class="th_details" colspan="6">Details</th>
14067 <tr class="entry_cont">
14068 <td class="entry_details" colspan="6">
14069 <p>This control will not be supported on most camera devices.<wbr/></p>
14070 <p>Lens filters are typically used to lower the amount of light the
14071 sensor is exposed to (measured in steps of EV).<wbr/> As used here,<wbr/> an EV
14072 step is the standard logarithmic representation,<wbr/> which are
14073 non-negative,<wbr/> and inversely proportional to the amount of light
14074 hitting the sensor.<wbr/> For example,<wbr/> setting this to 0 would result
14075 in no reduction of the incoming light,<wbr/> and setting this to 2 would
14076 mean that the filter is set to reduce incoming light by two stops
14077 (allowing 1/<wbr/>4 of the prior amount of light to the sensor).<wbr/></p>
14078 <p>It may take several frames before the lens filter density changes
14079 to the requested value.<wbr/> While the filter density is still changing,<wbr/>
14080 <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p>
14085 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14086 <!-- end of entry -->
14089 <tr class="entry" id="dynamic_android.lens.focalLength">
14090 <td class="entry_name
14092 android.<wbr/>lens.<wbr/>focal<wbr/>Length
14094 <td class="entry_type">
14095 <span class="entry_type_name">float</span>
14097 <span class="entry_type_visibility"> [public]</span>
14100 <span class="entry_type_hwlevel">[legacy] </span>
14105 </td> <!-- entry_type -->
14107 <td class="entry_description">
14108 <p>The desired lens focal length; used for optical zoom.<wbr/></p>
14111 <td class="entry_units">
14115 <td class="entry_range">
14116 <p><a href="#static_android.lens.info.availableFocalLengths">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths</a></p>
14119 <td class="entry_hal_version">
14123 <td class="entry_tags">
14124 <ul class="entry_tags">
14125 <li><a href="#tag_BC">BC</a></li>
14130 <tr class="entries_header">
14131 <th class="th_details" colspan="6">Details</th>
14133 <tr class="entry_cont">
14134 <td class="entry_details" colspan="6">
14135 <p>This setting controls the physical focal length of the camera
14136 device's lens.<wbr/> Changing the focal length changes the field of
14137 view of the camera device,<wbr/> and is usually used for optical zoom.<wbr/></p>
14138 <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
14139 setting won't be applied instantaneously,<wbr/> and it may take several
14140 frames before the lens can change to the requested focal length.<wbr/>
14141 While the focal length is still changing,<wbr/> <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will
14142 be set to MOVING.<wbr/></p>
14143 <p>Optical zoom will not be supported on most devices.<wbr/></p>
14148 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14149 <!-- end of entry -->
14152 <tr class="entry" id="dynamic_android.lens.focusDistance">
14153 <td class="entry_name
14155 android.<wbr/>lens.<wbr/>focus<wbr/>Distance
14157 <td class="entry_type">
14158 <span class="entry_type_name">float</span>
14160 <span class="entry_type_visibility"> [public]</span>
14163 <span class="entry_type_hwlevel">[full] </span>
14168 </td> <!-- entry_type -->
14170 <td class="entry_description">
14171 <p>Desired distance to plane of sharpest focus,<wbr/>
14172 measured from frontmost surface of the lens.<wbr/></p>
14175 <td class="entry_units">
14176 See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
14179 <td class="entry_range">
14183 <td class="entry_hal_version">
14187 <td class="entry_tags">
14188 <ul class="entry_tags">
14189 <li><a href="#tag_BC">BC</a></li>
14194 <tr class="entries_header">
14195 <th class="th_details" colspan="6">Details</th>
14197 <tr class="entry_cont">
14198 <td class="entry_details" colspan="6">
14199 <p>Should be zero for fixed-focus cameras</p>
14204 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14205 <!-- end of entry -->
14208 <tr class="entry" id="dynamic_android.lens.focusRange">
14209 <td class="entry_name
14211 android.<wbr/>lens.<wbr/>focus<wbr/>Range
14213 <td class="entry_type">
14214 <span class="entry_type_name">float</span>
14215 <span class="entry_type_container">x</span>
14217 <span class="entry_type_array">
14220 <span class="entry_type_visibility"> [public as pairFloatFloat]</span>
14223 <span class="entry_type_hwlevel">[limited] </span>
14226 <div class="entry_type_notes">Range of scene distances that are in focus</div>
14229 </td> <!-- entry_type -->
14231 <td class="entry_description">
14232 <p>The range of scene distances that are in
14233 sharp focus (depth of field).<wbr/></p>
14236 <td class="entry_units">
14237 A pair of focus distances in diopters: (near,<wbr/>
14238 far); see android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details.<wbr/>
14241 <td class="entry_range">
14245 <td class="entry_hal_version">
14249 <td class="entry_tags">
14250 <ul class="entry_tags">
14251 <li><a href="#tag_BC">BC</a></li>
14256 <tr class="entries_header">
14257 <th class="th_details" colspan="6">Details</th>
14259 <tr class="entry_cont">
14260 <td class="entry_details" colspan="6">
14261 <p>If variable focus not supported,<wbr/> can still report
14262 fixed depth of field range</p>
14267 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14268 <!-- end of entry -->
14271 <tr class="entry" id="dynamic_android.lens.opticalStabilizationMode">
14272 <td class="entry_name
14274 android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode
14276 <td class="entry_type">
14277 <span class="entry_type_name entry_type_name_enum">byte</span>
14279 <span class="entry_type_visibility"> [public]</span>
14282 <span class="entry_type_hwlevel">[limited] </span>
14286 <ul class="entry_type_enum">
14288 <span class="entry_type_enum_name">OFF (v3.2)</span>
14289 <span class="entry_type_enum_notes"><p>Optical stabilization is unavailable.<wbr/></p></span>
14292 <span class="entry_type_enum_name">ON (v3.2)</span>
14293 <span class="entry_type_enum_optional">[optional]</span>
14294 <span class="entry_type_enum_notes"><p>Optical stabilization is enabled.<wbr/></p></span>
14298 </td> <!-- entry_type -->
14300 <td class="entry_description">
14301 <p>Sets whether the camera device uses optical image stabilization (OIS)
14302 when capturing images.<wbr/></p>
14305 <td class="entry_units">
14308 <td class="entry_range">
14309 <p><a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a></p>
14312 <td class="entry_hal_version">
14316 <td class="entry_tags">
14317 <ul class="entry_tags">
14318 <li><a href="#tag_V1">V1</a></li>
14323 <tr class="entries_header">
14324 <th class="th_details" colspan="6">Details</th>
14326 <tr class="entry_cont">
14327 <td class="entry_details" colspan="6">
14328 <p>OIS is used to compensate for motion blur due to small
14329 movements of the camera during capture.<wbr/> Unlike digital image
14330 stabilization (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> OIS
14331 makes use of mechanical elements to stabilize the camera
14332 sensor,<wbr/> and thus allows for longer exposure times before
14333 camera shake becomes apparent.<wbr/></p>
14334 <p>Switching between different optical stabilization modes may take several
14335 frames to initialize,<wbr/> the camera device will report the current mode in
14336 capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/> the
14337 optical stabilization modes in the first several capture results may still
14338 be "OFF",<wbr/> and it will become "ON" when the initialization is done.<wbr/></p>
14339 <p>If a camera device supports both OIS and digital image stabilization
14340 (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may produce undesirable
14341 interaction,<wbr/> so it is recommended not to enable both at the same time.<wbr/></p>
14342 <p>Not all devices will support OIS; see
14343 <a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a> for
14344 available controls.<wbr/></p>
14349 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14350 <!-- end of entry -->
14353 <tr class="entry" id="dynamic_android.lens.state">
14354 <td class="entry_name
14356 android.<wbr/>lens.<wbr/>state
14358 <td class="entry_type">
14359 <span class="entry_type_name entry_type_name_enum">byte</span>
14361 <span class="entry_type_visibility"> [public]</span>
14364 <span class="entry_type_hwlevel">[limited] </span>
14368 <ul class="entry_type_enum">
14370 <span class="entry_type_enum_name">STATIONARY (v3.2)</span>
14371 <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/>
14372 <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>
14375 <span class="entry_type_enum_name">MOVING (v3.2)</span>
14376 <span class="entry_type_enum_notes"><p>One or several of the lens parameters
14377 (<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/>
14378 <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
14379 currently changing.<wbr/></p></span>
14383 </td> <!-- entry_type -->
14385 <td class="entry_description">
14386 <p>Current lens status.<wbr/></p>
14389 <td class="entry_units">
14392 <td class="entry_range">
14395 <td class="entry_hal_version">
14399 <td class="entry_tags">
14400 <ul class="entry_tags">
14401 <li><a href="#tag_V1">V1</a></li>
14406 <tr class="entries_header">
14407 <th class="th_details" colspan="6">Details</th>
14409 <tr class="entry_cont">
14410 <td class="entry_details" colspan="6">
14411 <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/>
14412 <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/>
14413 they may take several frames to reach the requested values.<wbr/> This state indicates
14414 the current status of the lens parameters.<wbr/></p>
14415 <p>When the state is STATIONARY,<wbr/> the lens parameters are not changing.<wbr/> This could be
14416 either because the parameters are all fixed,<wbr/> or because the lens has had enough
14417 time to reach the most recently-requested values.<wbr/>
14418 If all these lens parameters are not changable for a camera device,<wbr/> as listed below:</p>
14420 <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
14421 <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> parameter will always be 0.<wbr/></li>
14422 <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/>
14423 which means the optical zoom is not supported.<wbr/></li>
14424 <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>
14425 <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>
14427 <p>Then this state will always be STATIONARY.<wbr/></p>
14428 <p>When the state is MOVING,<wbr/> it indicates that at least one of the lens parameters
14429 is changing.<wbr/></p>
14434 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14435 <!-- end of entry -->
14438 <tr class="entry" id="dynamic_android.lens.poseRotation">
14439 <td class="entry_name
14441 android.<wbr/>lens.<wbr/>pose<wbr/>Rotation
14443 <td class="entry_type">
14444 <span class="entry_type_name">float</span>
14445 <span class="entry_type_container">x</span>
14447 <span class="entry_type_array">
14450 <span class="entry_type_visibility"> [public]</span>
14457 </td> <!-- entry_type -->
14459 <td class="entry_description">
14460 <p>The orientation of the camera relative to the sensor
14461 coordinate system.<wbr/></p>
14464 <td class="entry_units">
14466 Quaternion coefficients
14470 <td class="entry_range">
14473 <td class="entry_hal_version">
14477 <td class="entry_tags">
14478 <ul class="entry_tags">
14479 <li><a href="#tag_DEPTH">DEPTH</a></li>
14484 <tr class="entries_header">
14485 <th class="th_details" colspan="6">Details</th>
14487 <tr class="entry_cont">
14488 <td class="entry_details" colspan="6">
14489 <p>The four coefficients that describe the quaternion
14490 rotation from the Android sensor coordinate system to a
14491 camera-aligned coordinate system where the X-axis is
14492 aligned with the long side of the image sensor,<wbr/> the Y-axis
14493 is aligned with the short side of the image sensor,<wbr/> and
14494 the Z-axis is aligned with the optical axis of the sensor.<wbr/></p>
14495 <p>To convert from the quaternion coefficients <code>(x,<wbr/>y,<wbr/>z,<wbr/>w)</code>
14496 to the axis of rotation <code>(a_<wbr/>x,<wbr/> a_<wbr/>y,<wbr/> a_<wbr/>z)</code> and rotation
14497 amount <code>theta</code>,<wbr/> the following formulas can be used:</p>
14498 <pre><code> theta = 2 * acos(w)
14499 a_<wbr/>x = x /<wbr/> sin(theta/<wbr/>2)
14500 a_<wbr/>y = y /<wbr/> sin(theta/<wbr/>2)
14501 a_<wbr/>z = z /<wbr/> sin(theta/<wbr/>2)
14503 <p>To create a 3x3 rotation matrix that applies the rotation
14504 defined by this quaternion,<wbr/> the following matrix can be
14506 <pre><code>R = [ 1 - 2y^2 - 2z^2,<wbr/> 2xy - 2zw,<wbr/> 2xz + 2yw,<wbr/>
14507 2xy + 2zw,<wbr/> 1 - 2x^2 - 2z^2,<wbr/> 2yz - 2xw,<wbr/>
14508 2xz - 2yw,<wbr/> 2yz + 2xw,<wbr/> 1 - 2x^2 - 2y^2 ]
14510 <p>This matrix can then be used to apply the rotation to a
14511 column vector point with</p>
14512 <p><code>p' = Rp</code></p>
14513 <p>where <code>p</code> is in the device sensor coordinate system,<wbr/> and
14514 <code>p'</code> is in the camera-oriented coordinate system.<wbr/></p>
14519 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14520 <!-- end of entry -->
14523 <tr class="entry" id="dynamic_android.lens.poseTranslation">
14524 <td class="entry_name
14526 android.<wbr/>lens.<wbr/>pose<wbr/>Translation
14528 <td class="entry_type">
14529 <span class="entry_type_name">float</span>
14530 <span class="entry_type_container">x</span>
14532 <span class="entry_type_array">
14535 <span class="entry_type_visibility"> [public]</span>
14542 </td> <!-- entry_type -->
14544 <td class="entry_description">
14545 <p>Position of the camera optical center.<wbr/></p>
14548 <td class="entry_units">
14552 <td class="entry_range">
14555 <td class="entry_hal_version">
14559 <td class="entry_tags">
14560 <ul class="entry_tags">
14561 <li><a href="#tag_DEPTH">DEPTH</a></li>
14566 <tr class="entries_header">
14567 <th class="th_details" colspan="6">Details</th>
14569 <tr class="entry_cont">
14570 <td class="entry_details" colspan="6">
14571 <p>The position of the camera device's lens optical center,<wbr/>
14572 as a three-dimensional vector <code>(x,<wbr/>y,<wbr/>z)</code>.<wbr/></p>
14573 <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
14574 is relative to the optical center of the largest camera device facing in the same
14575 direction as this camera,<wbr/> in the <a href="https://developer.android.com/reference/android/hardware/SensorEvent.html">Android sensor
14576 coordinate axes</a>.<wbr/> Note that only the axis definitions are shared with the sensor
14577 coordinate system,<wbr/> but not the origin.<wbr/></p>
14578 <p>If this device is the largest or only camera device with a given facing,<wbr/> then this
14579 position will be <code>(0,<wbr/> 0,<wbr/> 0)</code>; a camera device with a lens optical center located 3 cm
14580 from the main sensor along the +X axis (to the right from the user's perspective) will
14581 report <code>(0.<wbr/>03,<wbr/> 0,<wbr/> 0)</code>.<wbr/></p>
14582 <p>To transform a pixel coordinates between two cameras facing the same direction,<wbr/> first
14583 the source camera <a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a> must be corrected for.<wbr/> Then the source
14584 camera <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> needs to be applied,<wbr/> followed by the
14585 <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
14586 relative to the destination camera,<wbr/> the <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> of the destination
14587 camera,<wbr/> and finally the inverse of <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> of the destination
14588 camera.<wbr/> This obtains a radial-distortion-free coordinate in the destination camera pixel
14589 coordinates.<wbr/></p>
14590 <p>To compare this against a real image from the destination camera,<wbr/> the destination camera
14591 image then needs to be corrected for radial distortion before comparison or sampling.<wbr/></p>
14592 <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
14593 the center of the primary gyroscope on the device.<wbr/></p>
14598 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14599 <!-- end of entry -->
14602 <tr class="entry" id="dynamic_android.lens.intrinsicCalibration">
14603 <td class="entry_name
14605 android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration
14607 <td class="entry_type">
14608 <span class="entry_type_name">float</span>
14609 <span class="entry_type_container">x</span>
14611 <span class="entry_type_array">
14614 <span class="entry_type_visibility"> [public]</span>
14621 </td> <!-- entry_type -->
14623 <td class="entry_description">
14624 <p>The parameters for this camera device's intrinsic
14625 calibration.<wbr/></p>
14628 <td class="entry_units">
14631 android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size
14632 coordinate system.<wbr/>
14636 <td class="entry_range">
14639 <td class="entry_hal_version">
14643 <td class="entry_tags">
14644 <ul class="entry_tags">
14645 <li><a href="#tag_DEPTH">DEPTH</a></li>
14650 <tr class="entries_header">
14651 <th class="th_details" colspan="6">Details</th>
14653 <tr class="entry_cont">
14654 <td class="entry_details" colspan="6">
14655 <p>The five calibration parameters that describe the
14656 transform from camera-centric 3D coordinates to sensor
14657 pixel coordinates:</p>
14658 <pre><code>[f_<wbr/>x,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>x,<wbr/> c_<wbr/>y,<wbr/> s]
14660 <p>Where <code>f_<wbr/>x</code> and <code>f_<wbr/>y</code> are the horizontal and vertical
14661 focal lengths,<wbr/> <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code> is the position of the optical
14662 axis,<wbr/> and <code>s</code> is a skew parameter for the sensor plane not
14663 being aligned with the lens plane.<wbr/></p>
14664 <p>These are typically used within a transformation matrix K:</p>
14665 <pre><code>K = [ f_<wbr/>x,<wbr/> s,<wbr/> c_<wbr/>x,<wbr/>
14666 0,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>y,<wbr/>
14669 <p>which can then be combined with the camera pose rotation
14670 <code>R</code> and translation <code>t</code> (<a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> and
14671 <a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a>,<wbr/> respective) to calculate the
14672 complete transform from world coordinates to pixel
14674 <pre><code>P = [ K 0 * [ R t
14677 <p>and with <code>p_<wbr/>w</code> being a point in the world coordinate system
14678 and <code>p_<wbr/>s</code> being a point in the camera active pixel array
14679 coordinate system,<wbr/> and with the mapping including the
14680 homogeneous division by z:</p>
14681 <pre><code> p_<wbr/>h = (x_<wbr/>h,<wbr/> y_<wbr/>h,<wbr/> z_<wbr/>h) = P p_<wbr/>w
14682 p_<wbr/>s = p_<wbr/>h /<wbr/> z_<wbr/>h
14684 <p>so <code>[x_<wbr/>s,<wbr/> y_<wbr/>s]</code> is the pixel coordinates of the world
14685 point,<wbr/> <code>z_<wbr/>s = 1</code>,<wbr/> and <code>w_<wbr/>s</code> is a measurement of disparity
14686 (depth) in pixel coordinates.<wbr/></p>
14687 <p>Note that the coordinate system for this transform is the
14688 <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/>
14689 where <code>(0,<wbr/>0)</code> is the top-left of the
14690 preCorrectionActiveArraySize rectangle.<wbr/> Once the pose and
14691 intrinsic calibration transforms have been applied to a
14692 world point,<wbr/> then the <a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a>
14693 transform needs to be applied,<wbr/> and the result adjusted to
14694 be in the <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> coordinate
14695 system (where <code>(0,<wbr/> 0)</code> is the top-left of the
14696 activeArraySize rectangle),<wbr/> to determine the final pixel
14697 coordinate of the world point for processed (non-RAW)
14698 output buffers.<wbr/></p>
14703 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14704 <!-- end of entry -->
14707 <tr class="entry" id="dynamic_android.lens.radialDistortion">
14708 <td class="entry_name
14709 entry_name_deprecated
14711 android.<wbr/>lens.<wbr/>radial<wbr/>Distortion
14713 <td class="entry_type">
14714 <span class="entry_type_name">float</span>
14715 <span class="entry_type_container">x</span>
14717 <span class="entry_type_array">
14720 <span class="entry_type_visibility"> [public]</span>
14724 <span class="entry_type_deprecated">[deprecated] </span>
14728 </td> <!-- entry_type -->
14730 <td class="entry_description">
14731 <p>The correction coefficients to correct for this camera device's
14732 radial and tangential lens distortion.<wbr/></p>
14735 <td class="entry_units">
14737 Unitless coefficients.<wbr/>
14741 <td class="entry_range">
14742 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
14745 <td class="entry_hal_version">
14749 <td class="entry_tags">
14750 <ul class="entry_tags">
14751 <li><a href="#tag_DEPTH">DEPTH</a></li>
14756 <tr class="entries_header">
14757 <th class="th_details" colspan="6">Details</th>
14759 <tr class="entry_cont">
14760 <td class="entry_details" colspan="6">
14761 <p>Four radial distortion coefficients <code>[kappa_<wbr/>0,<wbr/> kappa_<wbr/>1,<wbr/> kappa_<wbr/>2,<wbr/>
14762 kappa_<wbr/>3]</code> and two tangential distortion coefficients
14763 <code>[kappa_<wbr/>4,<wbr/> kappa_<wbr/>5]</code> that can be used to correct the
14764 lens's geometric distortion with the mapping equations:</p>
14765 <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 ) +
14766 kappa_<wbr/>4 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>5 * ( r^2 + 2 * x_<wbr/>i^2 )
14767 y_<wbr/>c = y_<wbr/>i * ( kappa_<wbr/>0 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) +
14768 kappa_<wbr/>5 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>4 * ( r^2 + 2 * y_<wbr/>i^2 )
14770 <p>Here,<wbr/> <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> are the coordinates to sample in the
14771 input image that correspond to the pixel values in the
14772 corrected image at the coordinate <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code>:</p>
14773 <pre><code> correctedImage(x_<wbr/>i,<wbr/> y_<wbr/>i) = sample_<wbr/>at(x_<wbr/>c,<wbr/> y_<wbr/>c,<wbr/> inputImage)
14775 <p>The pixel coordinates are defined in a normalized
14776 coordinate system related to the
14777 <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> calibration fields.<wbr/>
14778 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
14779 lens optical center <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code>.<wbr/> The maximum magnitudes
14780 of both x and y coordinates are normalized to be 1 at the
14781 edge further from the optical center,<wbr/> so the range
14782 for both dimensions is <code>-1 <= x <= 1</code>.<wbr/></p>
14783 <p>Finally,<wbr/> <code>r</code> represents the radial distance from the
14784 optical center,<wbr/> <code>r^2 = x_<wbr/>i^2 + y_<wbr/>i^2</code>,<wbr/> and its magnitude
14785 is therefore no larger than <code>|<wbr/>r|<wbr/> <= sqrt(2)</code>.<wbr/></p>
14786 <p>The distortion model used is the Brown-Conrady model.<wbr/></p>
14791 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14792 <!-- end of entry -->
14795 <tr class="entry" id="dynamic_android.lens.distortion">
14796 <td class="entry_name
14798 android.<wbr/>lens.<wbr/>distortion
14800 <td class="entry_type">
14801 <span class="entry_type_name">float</span>
14802 <span class="entry_type_container">x</span>
14804 <span class="entry_type_array">
14807 <span class="entry_type_visibility"> [public]</span>
14814 </td> <!-- entry_type -->
14816 <td class="entry_description">
14817 <p>The correction coefficients to correct for this camera device's
14818 radial and tangential lens distortion.<wbr/></p>
14819 <p>Replaces the deprecated <a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a> field,<wbr/> which was
14820 inconsistently defined.<wbr/></p>
14823 <td class="entry_units">
14825 Unitless coefficients.<wbr/>
14829 <td class="entry_range">
14832 <td class="entry_hal_version">
14836 <td class="entry_tags">
14837 <ul class="entry_tags">
14838 <li><a href="#tag_DEPTH">DEPTH</a></li>
14843 <tr class="entries_header">
14844 <th class="th_details" colspan="6">Details</th>
14846 <tr class="entry_cont">
14847 <td class="entry_details" colspan="6">
14848 <p>Three radial distortion coefficients <code>[kappa_<wbr/>1,<wbr/> kappa_<wbr/>2,<wbr/>
14849 kappa_<wbr/>3]</code> and two tangential distortion coefficients
14850 <code>[kappa_<wbr/>4,<wbr/> kappa_<wbr/>5]</code> that can be used to correct the
14851 lens's geometric distortion with the mapping equations:</p>
14852 <pre><code> x_<wbr/>c = x_<wbr/>i * ( 1 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) +
14853 kappa_<wbr/>4 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>5 * ( r^2 + 2 * x_<wbr/>i^2 )
14854 y_<wbr/>c = y_<wbr/>i * ( 1 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) +
14855 kappa_<wbr/>5 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>4 * ( r^2 + 2 * y_<wbr/>i^2 )
14857 <p>Here,<wbr/> <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> are the coordinates to sample in the
14858 input image that correspond to the pixel values in the
14859 corrected image at the coordinate <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code>:</p>
14860 <pre><code> correctedImage(x_<wbr/>i,<wbr/> y_<wbr/>i) = sample_<wbr/>at(x_<wbr/>c,<wbr/> y_<wbr/>c,<wbr/> inputImage)
14862 <p>The pixel coordinates are defined in a coordinate system
14863 related to the <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a>
14864 calibration fields; see that entry for details of the mapping stages.<wbr/>
14865 Both <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code> and <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code>
14866 have <code>(0,<wbr/>0)</code> at the lens optical center <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code>,<wbr/> and
14867 the range of the coordinates depends on the focal length
14868 terms of the intrinsic calibration.<wbr/></p>
14869 <p>Finally,<wbr/> <code>r</code> represents the radial distance from the
14870 optical center,<wbr/> <code>r^2 = x_<wbr/>i^2 + y_<wbr/>i^2</code>.<wbr/></p>
14871 <p>The distortion model used is the Brown-Conrady model.<wbr/></p>
14876 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14877 <!-- end of entry -->
14881 <!-- end of kind -->
14884 <!-- end of section -->
14885 <tr><td colspan="7" id="section_noiseReduction" class="section">noiseReduction</td></tr>
14888 <tr><td colspan="7" class="kind">controls</td></tr>
14890 <thead class="entries_header">
14892 <th class="th_name">Property Name</th>
14893 <th class="th_type">Type</th>
14894 <th class="th_description">Description</th>
14895 <th class="th_units">Units</th>
14896 <th class="th_range">Range</th>
14897 <th class="th_hal_version">Initial HIDL HAL version</th>
14898 <th class="th_tags">Tags</th>
14913 <tr class="entry" id="controls_android.noiseReduction.mode">
14914 <td class="entry_name
14916 android.<wbr/>noise<wbr/>Reduction.<wbr/>mode
14918 <td class="entry_type">
14919 <span class="entry_type_name entry_type_name_enum">byte</span>
14921 <span class="entry_type_visibility"> [public]</span>
14924 <span class="entry_type_hwlevel">[full] </span>
14928 <ul class="entry_type_enum">
14930 <span class="entry_type_enum_name">OFF (v3.2)</span>
14931 <span class="entry_type_enum_notes"><p>No noise reduction is applied.<wbr/></p></span>
14934 <span class="entry_type_enum_name">FAST (v3.2)</span>
14935 <span class="entry_type_enum_notes"><p>Noise reduction is applied without reducing frame rate relative to sensor
14936 output.<wbr/> It may be the same as OFF if noise reduction will reduce frame rate
14937 relative to sensor.<wbr/></p></span>
14940 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
14941 <span class="entry_type_enum_notes"><p>High-quality noise reduction is applied,<wbr/> at the cost of possibly reduced frame
14942 rate relative to sensor output.<wbr/></p></span>
14945 <span class="entry_type_enum_name">MINIMAL (v3.2)</span>
14946 <span class="entry_type_enum_optional">[optional]</span>
14947 <span class="entry_type_enum_notes"><p>MINIMAL noise reduction is applied without reducing frame rate relative to
14948 sensor output.<wbr/> </p></span>
14951 <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span>
14952 <span class="entry_type_enum_optional">[optional]</span>
14953 <span class="entry_type_enum_notes"><p>Noise reduction is applied at different levels for different output streams,<wbr/>
14954 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>)
14955 or below have noise reduction applied,<wbr/> while higher-resolution streams have MINIMAL (if
14956 supported) or no noise reduction applied (if MINIMAL is not supported.<wbr/>) The degree of
14957 noise reduction for low-resolution streams is tuned so that frame rate is not impacted,<wbr/>
14958 and the quality is equal to or better than FAST (since it is only applied to
14959 lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p>
14960 <p>This mode is intended to be used by applications operating in a zero-shutter-lag mode
14961 with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures
14962 high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is
14963 produced via reprocessing when a user takes a picture.<wbr/> For such a use case,<wbr/> the
14964 high-resolution buffers must not have noise reduction applied to maximize efficiency of
14965 preview and to avoid over-applying noise filtering when reprocessing,<wbr/> while
14966 low-resolution buffers (used for recording or preview,<wbr/> generally) need noise reduction
14967 applied for reasonable preview quality.<wbr/></p>
14968 <p>This mode is guaranteed to be supported by devices that support either the
14969 YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities
14970 (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will
14971 be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span>
14975 </td> <!-- entry_type -->
14977 <td class="entry_description">
14978 <p>Mode of operation for the noise reduction algorithm.<wbr/></p>
14981 <td class="entry_units">
14984 <td class="entry_range">
14985 <p><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a></p>
14988 <td class="entry_hal_version">
14992 <td class="entry_tags">
14993 <ul class="entry_tags">
14994 <li><a href="#tag_V1">V1</a></li>
14995 <li><a href="#tag_REPROC">REPROC</a></li>
15000 <tr class="entries_header">
15001 <th class="th_details" colspan="6">Details</th>
15003 <tr class="entry_cont">
15004 <td class="entry_details" colspan="6">
15005 <p>The noise reduction algorithm attempts to improve image quality by removing
15006 excessive noise added by the capture process,<wbr/> especially in dark conditions.<wbr/></p>
15007 <p>OFF means no noise reduction will be applied by the camera device,<wbr/> for both raw and
15008 YUV domain.<wbr/></p>
15009 <p>MINIMAL means that only sensor raw domain basic noise reduction is enabled ,<wbr/>to remove
15010 demosaicing or other processing artifacts.<wbr/> For YUV_<wbr/>REPROCESSING,<wbr/> MINIMAL is same as OFF.<wbr/>
15011 This mode is optional,<wbr/> may not be support by all devices.<wbr/> The application should check
15012 <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>
15013 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined noise filtering
15014 will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device
15015 will use the highest-quality noise filtering algorithms,<wbr/>
15016 even if it slows down capture rate.<wbr/> FAST means the camera device will not
15017 slow down capture rate when applying noise filtering.<wbr/> FAST may be the same as MINIMAL if
15018 MINIMAL is listed,<wbr/> or the same as OFF if any noise filtering will slow down capture rate.<wbr/>
15019 Every output stream will have a similar amount of enhancement applied.<wbr/></p>
15020 <p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular
15021 buffer of high-resolution images during preview and reprocess image(s) from that buffer
15022 into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies
15023 noise reduction to low-resolution streams (below maximum recording resolution) to maximize
15024 preview quality,<wbr/> but does not apply noise reduction to high-resolution streams,<wbr/> since
15025 those will be reprocessed later if necessary.<wbr/></p>
15026 <p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera device
15027 will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV domain noise reduction,<wbr/> respectively.<wbr/> The camera device
15028 may adjust the noise reduction parameters for best image quality based on the
15029 <a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a> if it is set.<wbr/></p>
15033 <tr class="entries_header">
15034 <th class="th_details" colspan="6">HAL Implementation Details</th>
15036 <tr class="entry_cont">
15037 <td class="entry_details" colspan="6">
15038 <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
15039 adjust the internal noise reduction parameters appropriately to get the best quality
15044 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15045 <!-- end of entry -->
15048 <tr class="entry" id="controls_android.noiseReduction.strength">
15049 <td class="entry_name
15051 android.<wbr/>noise<wbr/>Reduction.<wbr/>strength
15053 <td class="entry_type">
15054 <span class="entry_type_name">byte</span>
15056 <span class="entry_type_visibility"> [system]</span>
15063 </td> <!-- entry_type -->
15065 <td class="entry_description">
15066 <p>Control the amount of noise reduction
15067 applied to the images</p>
15070 <td class="entry_units">
15071 1-10; 10 is max noise reduction
15074 <td class="entry_range">
15078 <td class="entry_hal_version">
15082 <td class="entry_tags">
15083 <ul class="entry_tags">
15084 <li><a href="#tag_FUTURE">FUTURE</a></li>
15091 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15092 <!-- end of entry -->
15096 <!-- end of kind -->
15098 <tr><td colspan="7" class="kind">static</td></tr>
15100 <thead class="entries_header">
15102 <th class="th_name">Property Name</th>
15103 <th class="th_type">Type</th>
15104 <th class="th_description">Description</th>
15105 <th class="th_units">Units</th>
15106 <th class="th_range">Range</th>
15107 <th class="th_hal_version">Initial HIDL HAL version</th>
15108 <th class="th_tags">Tags</th>
15123 <tr class="entry" id="static_android.noiseReduction.availableNoiseReductionModes">
15124 <td class="entry_name
15126 android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes
15128 <td class="entry_type">
15129 <span class="entry_type_name">byte</span>
15130 <span class="entry_type_container">x</span>
15132 <span class="entry_type_array">
15135 <span class="entry_type_visibility"> [public as enumList]</span>
15138 <span class="entry_type_hwlevel">[limited] </span>
15141 <div class="entry_type_notes">list of enums</div>
15144 </td> <!-- entry_type -->
15146 <td class="entry_description">
15147 <p>List of noise reduction modes for <a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a> that are supported
15148 by this camera device.<wbr/></p>
15151 <td class="entry_units">
15154 <td class="entry_range">
15155 <p>Any value listed in <a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></p>
15158 <td class="entry_hal_version">
15162 <td class="entry_tags">
15163 <ul class="entry_tags">
15164 <li><a href="#tag_V1">V1</a></li>
15165 <li><a href="#tag_REPROC">REPROC</a></li>
15170 <tr class="entries_header">
15171 <th class="th_details" colspan="6">Details</th>
15173 <tr class="entry_cont">
15174 <td class="entry_details" colspan="6">
15175 <p>Full-capability camera devices will always support OFF and FAST.<wbr/></p>
15176 <p>Camera devices that support YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING will support
15177 ZERO_<wbr/>SHUTTER_<wbr/>LAG.<wbr/></p>
15178 <p>Legacy-capability camera devices will only support FAST mode.<wbr/></p>
15182 <tr class="entries_header">
15183 <th class="th_details" colspan="6">HAL Implementation Details</th>
15185 <tr class="entry_cont">
15186 <td class="entry_details" colspan="6">
15187 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if noise reduction control is available
15188 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
15189 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
15190 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
15194 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15195 <!-- end of entry -->
15199 <!-- end of kind -->
15201 <tr><td colspan="7" class="kind">dynamic</td></tr>
15203 <thead class="entries_header">
15205 <th class="th_name">Property Name</th>
15206 <th class="th_type">Type</th>
15207 <th class="th_description">Description</th>
15208 <th class="th_units">Units</th>
15209 <th class="th_range">Range</th>
15210 <th class="th_hal_version">Initial HIDL HAL version</th>
15211 <th class="th_tags">Tags</th>
15226 <tr class="entry" id="dynamic_android.noiseReduction.mode">
15227 <td class="entry_name
15229 android.<wbr/>noise<wbr/>Reduction.<wbr/>mode
15231 <td class="entry_type">
15232 <span class="entry_type_name entry_type_name_enum">byte</span>
15234 <span class="entry_type_visibility"> [public]</span>
15237 <span class="entry_type_hwlevel">[full] </span>
15241 <ul class="entry_type_enum">
15243 <span class="entry_type_enum_name">OFF (v3.2)</span>
15244 <span class="entry_type_enum_notes"><p>No noise reduction is applied.<wbr/></p></span>
15247 <span class="entry_type_enum_name">FAST (v3.2)</span>
15248 <span class="entry_type_enum_notes"><p>Noise reduction is applied without reducing frame rate relative to sensor
15249 output.<wbr/> It may be the same as OFF if noise reduction will reduce frame rate
15250 relative to sensor.<wbr/></p></span>
15253 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
15254 <span class="entry_type_enum_notes"><p>High-quality noise reduction is applied,<wbr/> at the cost of possibly reduced frame
15255 rate relative to sensor output.<wbr/></p></span>
15258 <span class="entry_type_enum_name">MINIMAL (v3.2)</span>
15259 <span class="entry_type_enum_optional">[optional]</span>
15260 <span class="entry_type_enum_notes"><p>MINIMAL noise reduction is applied without reducing frame rate relative to
15261 sensor output.<wbr/> </p></span>
15264 <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span>
15265 <span class="entry_type_enum_optional">[optional]</span>
15266 <span class="entry_type_enum_notes"><p>Noise reduction is applied at different levels for different output streams,<wbr/>
15267 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>)
15268 or below have noise reduction applied,<wbr/> while higher-resolution streams have MINIMAL (if
15269 supported) or no noise reduction applied (if MINIMAL is not supported.<wbr/>) The degree of
15270 noise reduction for low-resolution streams is tuned so that frame rate is not impacted,<wbr/>
15271 and the quality is equal to or better than FAST (since it is only applied to
15272 lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p>
15273 <p>This mode is intended to be used by applications operating in a zero-shutter-lag mode
15274 with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures
15275 high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is
15276 produced via reprocessing when a user takes a picture.<wbr/> For such a use case,<wbr/> the
15277 high-resolution buffers must not have noise reduction applied to maximize efficiency of
15278 preview and to avoid over-applying noise filtering when reprocessing,<wbr/> while
15279 low-resolution buffers (used for recording or preview,<wbr/> generally) need noise reduction
15280 applied for reasonable preview quality.<wbr/></p>
15281 <p>This mode is guaranteed to be supported by devices that support either the
15282 YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities
15283 (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will
15284 be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span>
15288 </td> <!-- entry_type -->
15290 <td class="entry_description">
15291 <p>Mode of operation for the noise reduction algorithm.<wbr/></p>
15294 <td class="entry_units">
15297 <td class="entry_range">
15298 <p><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a></p>
15301 <td class="entry_hal_version">
15305 <td class="entry_tags">
15306 <ul class="entry_tags">
15307 <li><a href="#tag_V1">V1</a></li>
15308 <li><a href="#tag_REPROC">REPROC</a></li>
15313 <tr class="entries_header">
15314 <th class="th_details" colspan="6">Details</th>
15316 <tr class="entry_cont">
15317 <td class="entry_details" colspan="6">
15318 <p>The noise reduction algorithm attempts to improve image quality by removing
15319 excessive noise added by the capture process,<wbr/> especially in dark conditions.<wbr/></p>
15320 <p>OFF means no noise reduction will be applied by the camera device,<wbr/> for both raw and
15321 YUV domain.<wbr/></p>
15322 <p>MINIMAL means that only sensor raw domain basic noise reduction is enabled ,<wbr/>to remove
15323 demosaicing or other processing artifacts.<wbr/> For YUV_<wbr/>REPROCESSING,<wbr/> MINIMAL is same as OFF.<wbr/>
15324 This mode is optional,<wbr/> may not be support by all devices.<wbr/> The application should check
15325 <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>
15326 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined noise filtering
15327 will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device
15328 will use the highest-quality noise filtering algorithms,<wbr/>
15329 even if it slows down capture rate.<wbr/> FAST means the camera device will not
15330 slow down capture rate when applying noise filtering.<wbr/> FAST may be the same as MINIMAL if
15331 MINIMAL is listed,<wbr/> or the same as OFF if any noise filtering will slow down capture rate.<wbr/>
15332 Every output stream will have a similar amount of enhancement applied.<wbr/></p>
15333 <p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular
15334 buffer of high-resolution images during preview and reprocess image(s) from that buffer
15335 into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies
15336 noise reduction to low-resolution streams (below maximum recording resolution) to maximize
15337 preview quality,<wbr/> but does not apply noise reduction to high-resolution streams,<wbr/> since
15338 those will be reprocessed later if necessary.<wbr/></p>
15339 <p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera device
15340 will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV domain noise reduction,<wbr/> respectively.<wbr/> The camera device
15341 may adjust the noise reduction parameters for best image quality based on the
15342 <a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a> if it is set.<wbr/></p>
15346 <tr class="entries_header">
15347 <th class="th_details" colspan="6">HAL Implementation Details</th>
15349 <tr class="entry_cont">
15350 <td class="entry_details" colspan="6">
15351 <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
15352 adjust the internal noise reduction parameters appropriately to get the best quality
15357 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15358 <!-- end of entry -->
15362 <!-- end of kind -->
15365 <!-- end of section -->
15366 <tr><td colspan="7" id="section_quirks" class="section">quirks</td></tr>
15369 <tr><td colspan="7" class="kind">static</td></tr>
15371 <thead class="entries_header">
15373 <th class="th_name">Property Name</th>
15374 <th class="th_type">Type</th>
15375 <th class="th_description">Description</th>
15376 <th class="th_units">Units</th>
15377 <th class="th_range">Range</th>
15378 <th class="th_hal_version">Initial HIDL HAL version</th>
15379 <th class="th_tags">Tags</th>
15394 <tr class="entry" id="static_android.quirks.meteringCropRegion">
15395 <td class="entry_name
15396 entry_name_deprecated
15398 android.<wbr/>quirks.<wbr/>metering<wbr/>Crop<wbr/>Region
15400 <td class="entry_type">
15401 <span class="entry_type_name">byte</span>
15403 <span class="entry_type_visibility"> [system]</span>
15407 <span class="entry_type_deprecated">[deprecated] </span>
15411 </td> <!-- entry_type -->
15413 <td class="entry_description">
15414 <p>If set to 1,<wbr/> the camera service does not
15415 scale 'normalized' coordinates with respect to the crop
15416 region.<wbr/> This applies to metering input (a{e,<wbr/>f,<wbr/>wb}Region
15417 and output (face rectangles).<wbr/></p>
15420 <td class="entry_units">
15423 <td class="entry_range">
15424 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15427 <td class="entry_hal_version">
15431 <td class="entry_tags">
15435 <tr class="entries_header">
15436 <th class="th_details" colspan="6">Details</th>
15438 <tr class="entry_cont">
15439 <td class="entry_details" colspan="6">
15440 <p>Normalized coordinates refer to those in the
15441 (-1000,<wbr/>1000) range mentioned in the
15442 android.<wbr/>hardware.<wbr/>Camera API.<wbr/></p>
15443 <p>HAL implementations should instead always use and emit
15444 sensor array-relative coordinates for all region data.<wbr/> Does
15445 not need to be listed in static metadata.<wbr/> Support will be
15446 removed in future versions of camera service.<wbr/></p>
15451 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15452 <!-- end of entry -->
15455 <tr class="entry" id="static_android.quirks.triggerAfWithAuto">
15456 <td class="entry_name
15457 entry_name_deprecated
15459 android.<wbr/>quirks.<wbr/>trigger<wbr/>Af<wbr/>With<wbr/>Auto
15461 <td class="entry_type">
15462 <span class="entry_type_name">byte</span>
15464 <span class="entry_type_visibility"> [system]</span>
15468 <span class="entry_type_deprecated">[deprecated] </span>
15472 </td> <!-- entry_type -->
15474 <td class="entry_description">
15475 <p>If set to 1,<wbr/> then the camera service always
15476 switches to FOCUS_<wbr/>MODE_<wbr/>AUTO before issuing a AF
15480 <td class="entry_units">
15483 <td class="entry_range">
15484 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15487 <td class="entry_hal_version">
15491 <td class="entry_tags">
15495 <tr class="entries_header">
15496 <th class="th_details" colspan="6">Details</th>
15498 <tr class="entry_cont">
15499 <td class="entry_details" colspan="6">
15500 <p>HAL implementations should implement AF trigger
15501 modes for AUTO,<wbr/> MACRO,<wbr/> CONTINUOUS_<wbr/>FOCUS,<wbr/> and
15502 CONTINUOUS_<wbr/>PICTURE modes instead of using this flag.<wbr/> Does
15503 not need to be listed in static metadata.<wbr/> Support will be
15504 removed in future versions of camera service</p>
15509 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15510 <!-- end of entry -->
15513 <tr class="entry" id="static_android.quirks.useZslFormat">
15514 <td class="entry_name
15515 entry_name_deprecated
15517 android.<wbr/>quirks.<wbr/>use<wbr/>Zsl<wbr/>Format
15519 <td class="entry_type">
15520 <span class="entry_type_name">byte</span>
15522 <span class="entry_type_visibility"> [system]</span>
15526 <span class="entry_type_deprecated">[deprecated] </span>
15530 </td> <!-- entry_type -->
15532 <td class="entry_description">
15533 <p>If set to 1,<wbr/> the camera service uses
15534 CAMERA2_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>ZSL instead of
15535 HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>IMPLEMENTATION_<wbr/>DEFINED for the zero
15536 shutter lag stream</p>
15539 <td class="entry_units">
15542 <td class="entry_range">
15543 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15546 <td class="entry_hal_version">
15550 <td class="entry_tags">
15554 <tr class="entries_header">
15555 <th class="th_details" colspan="6">Details</th>
15557 <tr class="entry_cont">
15558 <td class="entry_details" colspan="6">
15559 <p>HAL implementations should use gralloc usage flags
15560 to determine that a stream will be used for
15561 zero-shutter-lag,<wbr/> instead of relying on an explicit
15562 format setting.<wbr/> Does not need to be listed in static
15563 metadata.<wbr/> Support will be removed in future versions of
15564 camera service.<wbr/></p>
15569 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15570 <!-- end of entry -->
15573 <tr class="entry" id="static_android.quirks.usePartialResult">
15574 <td class="entry_name
15575 entry_name_deprecated
15577 android.<wbr/>quirks.<wbr/>use<wbr/>Partial<wbr/>Result
15579 <td class="entry_type">
15580 <span class="entry_type_name">byte</span>
15582 <span class="entry_type_visibility"> [hidden]</span>
15586 <span class="entry_type_deprecated">[deprecated] </span>
15590 </td> <!-- entry_type -->
15592 <td class="entry_description">
15593 <p>If set to 1,<wbr/> the HAL will always split result
15594 metadata for a single capture into multiple buffers,<wbr/>
15595 returned using multiple process_<wbr/>capture_<wbr/>result calls.<wbr/></p>
15598 <td class="entry_units">
15601 <td class="entry_range">
15602 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15605 <td class="entry_hal_version">
15609 <td class="entry_tags">
15613 <tr class="entries_header">
15614 <th class="th_details" colspan="6">Details</th>
15616 <tr class="entry_cont">
15617 <td class="entry_details" colspan="6">
15618 <p>Does not need to be listed in static
15619 metadata.<wbr/> Support for partial results will be reworked in
15620 future versions of camera service.<wbr/> This quirk will stop
15621 working at that point; DO NOT USE without careful
15622 consideration of future support.<wbr/></p>
15626 <tr class="entries_header">
15627 <th class="th_details" colspan="6">HAL Implementation Details</th>
15629 <tr class="entry_cont">
15630 <td class="entry_details" colspan="6">
15631 <p>Refer to <code>camera3_<wbr/>capture_<wbr/>result::partial_<wbr/>result</code>
15632 for information on how to implement partial results.<wbr/></p>
15636 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15637 <!-- end of entry -->
15641 <!-- end of kind -->
15643 <tr><td colspan="7" class="kind">dynamic</td></tr>
15645 <thead class="entries_header">
15647 <th class="th_name">Property Name</th>
15648 <th class="th_type">Type</th>
15649 <th class="th_description">Description</th>
15650 <th class="th_units">Units</th>
15651 <th class="th_range">Range</th>
15652 <th class="th_hal_version">Initial HIDL HAL version</th>
15653 <th class="th_tags">Tags</th>
15668 <tr class="entry" id="dynamic_android.quirks.partialResult">
15669 <td class="entry_name
15670 entry_name_deprecated
15672 android.<wbr/>quirks.<wbr/>partial<wbr/>Result
15674 <td class="entry_type">
15675 <span class="entry_type_name entry_type_name_enum">byte</span>
15677 <span class="entry_type_visibility"> [hidden as boolean]</span>
15681 <span class="entry_type_deprecated">[deprecated] </span>
15684 <ul class="entry_type_enum">
15686 <span class="entry_type_enum_name">FINAL (v3.2)</span>
15687 <span class="entry_type_enum_notes"><p>The last or only metadata result buffer
15688 for this capture.<wbr/></p></span>
15691 <span class="entry_type_enum_name">PARTIAL (v3.2)</span>
15692 <span class="entry_type_enum_notes"><p>A partial buffer of result metadata for this
15693 capture.<wbr/> More result buffers for this capture will be sent
15694 by the camera device,<wbr/> the last of which will be marked
15695 FINAL.<wbr/></p></span>
15699 </td> <!-- entry_type -->
15701 <td class="entry_description">
15702 <p>Whether a result given to the framework is the
15703 final one for the capture,<wbr/> or only a partial that contains a
15704 subset of the full set of dynamic metadata
15708 <td class="entry_units">
15711 <td class="entry_range">
15712 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15713 <p>Optional.<wbr/> Default value is FINAL.<wbr/></p>
15716 <td class="entry_hal_version">
15720 <td class="entry_tags">
15724 <tr class="entries_header">
15725 <th class="th_details" colspan="6">Details</th>
15727 <tr class="entry_cont">
15728 <td class="entry_details" colspan="6">
15729 <p>The entries in the result metadata buffers for a
15730 single capture may not overlap,<wbr/> except for this entry.<wbr/> The
15731 FINAL buffers must retain FIFO ordering relative to the
15732 requests that generate them,<wbr/> so the FINAL buffer for frame 3 must
15733 always be sent to the framework after the FINAL buffer for frame 2,<wbr/> and
15734 before the FINAL buffer for frame 4.<wbr/> PARTIAL buffers may be returned
15735 in any order relative to other frames,<wbr/> but all PARTIAL buffers for a given
15736 capture must arrive before the FINAL buffer for that capture.<wbr/> This entry may
15737 only be used by the camera device if quirks.<wbr/>usePartialResult is set to 1.<wbr/></p>
15741 <tr class="entries_header">
15742 <th class="th_details" colspan="6">HAL Implementation Details</th>
15744 <tr class="entry_cont">
15745 <td class="entry_details" colspan="6">
15746 <p>Refer to <code>camera3_<wbr/>capture_<wbr/>result::partial_<wbr/>result</code>
15747 for information on how to implement partial results.<wbr/></p>
15751 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15752 <!-- end of entry -->
15756 <!-- end of kind -->
15759 <!-- end of section -->
15760 <tr><td colspan="7" id="section_request" class="section">request</td></tr>
15763 <tr><td colspan="7" class="kind">controls</td></tr>
15765 <thead class="entries_header">
15767 <th class="th_name">Property Name</th>
15768 <th class="th_type">Type</th>
15769 <th class="th_description">Description</th>
15770 <th class="th_units">Units</th>
15771 <th class="th_range">Range</th>
15772 <th class="th_hal_version">Initial HIDL HAL version</th>
15773 <th class="th_tags">Tags</th>
15788 <tr class="entry" id="controls_android.request.frameCount">
15789 <td class="entry_name
15790 entry_name_deprecated
15792 android.<wbr/>request.<wbr/>frame<wbr/>Count
15794 <td class="entry_type">
15795 <span class="entry_type_name">int32</span>
15797 <span class="entry_type_visibility"> [system]</span>
15801 <span class="entry_type_deprecated">[deprecated] </span>
15805 </td> <!-- entry_type -->
15807 <td class="entry_description">
15808 <p>A frame counter set by the framework.<wbr/> Must
15809 be maintained unchanged in output frame.<wbr/> This value monotonically
15810 increases with every new result (that is,<wbr/> each new result has a unique
15811 frameCount value).<wbr/></p>
15814 <td class="entry_units">
15815 incrementing integer
15818 <td class="entry_range">
15819 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15820 <p>Any int.<wbr/></p>
15823 <td class="entry_hal_version">
15827 <td class="entry_tags">
15833 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15834 <!-- end of entry -->
15837 <tr class="entry" id="controls_android.request.id">
15838 <td class="entry_name
15840 android.<wbr/>request.<wbr/>id
15842 <td class="entry_type">
15843 <span class="entry_type_name">int32</span>
15845 <span class="entry_type_visibility"> [hidden]</span>
15852 </td> <!-- entry_type -->
15854 <td class="entry_description">
15855 <p>An application-specified ID for the current
15856 request.<wbr/> Must be maintained unchanged in output
15860 <td class="entry_units">
15861 arbitrary integer assigned by application
15864 <td class="entry_range">
15868 <td class="entry_hal_version">
15872 <td class="entry_tags">
15873 <ul class="entry_tags">
15874 <li><a href="#tag_V1">V1</a></li>
15881 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15882 <!-- end of entry -->
15885 <tr class="entry" id="controls_android.request.inputStreams">
15886 <td class="entry_name
15887 entry_name_deprecated
15889 android.<wbr/>request.<wbr/>input<wbr/>Streams
15891 <td class="entry_type">
15892 <span class="entry_type_name">int32</span>
15893 <span class="entry_type_container">x</span>
15895 <span class="entry_type_array">
15898 <span class="entry_type_visibility"> [system]</span>
15902 <span class="entry_type_deprecated">[deprecated] </span>
15906 </td> <!-- entry_type -->
15908 <td class="entry_description">
15909 <p>List which camera reprocess stream is used
15910 for the source of reprocessing data.<wbr/></p>
15913 <td class="entry_units">
15914 List of camera reprocess stream IDs
15917 <td class="entry_range">
15918 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15919 <p>Typically,<wbr/> only one entry allowed,<wbr/> must be a valid reprocess stream ID.<wbr/></p>
15922 <td class="entry_hal_version">
15926 <td class="entry_tags">
15927 <ul class="entry_tags">
15928 <li><a href="#tag_HAL2">HAL2</a></li>
15933 <tr class="entries_header">
15934 <th class="th_details" colspan="6">Details</th>
15936 <tr class="entry_cont">
15937 <td class="entry_details" colspan="6">
15938 <p>Only meaningful when <a href="#controls_android.request.type">android.<wbr/>request.<wbr/>type</a> ==
15939 REPROCESS.<wbr/> Ignored otherwise</p>
15944 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15945 <!-- end of entry -->
15948 <tr class="entry" id="controls_android.request.metadataMode">
15949 <td class="entry_name
15951 android.<wbr/>request.<wbr/>metadata<wbr/>Mode
15953 <td class="entry_type">
15954 <span class="entry_type_name entry_type_name_enum">byte</span>
15956 <span class="entry_type_visibility"> [system]</span>
15962 <ul class="entry_type_enum">
15964 <span class="entry_type_enum_name">NONE (v3.2)</span>
15965 <span class="entry_type_enum_notes"><p>No metadata should be produced on output,<wbr/> except
15966 for application-bound buffer data.<wbr/> If no
15967 application-bound streams exist,<wbr/> no frame should be
15968 placed in the output frame queue.<wbr/> If such streams
15969 exist,<wbr/> a frame should be placed on the output queue
15970 with null metadata but with the necessary output buffer
15971 information.<wbr/> Timestamp information should still be
15972 included with any output stream buffers</p></span>
15975 <span class="entry_type_enum_name">FULL (v3.2)</span>
15976 <span class="entry_type_enum_notes"><p>All metadata should be produced.<wbr/> Statistics will
15977 only be produced if they are separately
15982 </td> <!-- entry_type -->
15984 <td class="entry_description">
15985 <p>How much metadata to produce on
15989 <td class="entry_units">
15992 <td class="entry_range">
15995 <td class="entry_hal_version">
15999 <td class="entry_tags">
16000 <ul class="entry_tags">
16001 <li><a href="#tag_FUTURE">FUTURE</a></li>
16008 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16009 <!-- end of entry -->
16012 <tr class="entry" id="controls_android.request.outputStreams">
16013 <td class="entry_name
16014 entry_name_deprecated
16016 android.<wbr/>request.<wbr/>output<wbr/>Streams
16018 <td class="entry_type">
16019 <span class="entry_type_name">int32</span>
16020 <span class="entry_type_container">x</span>
16022 <span class="entry_type_array">
16025 <span class="entry_type_visibility"> [system]</span>
16029 <span class="entry_type_deprecated">[deprecated] </span>
16033 </td> <!-- entry_type -->
16035 <td class="entry_description">
16036 <p>Lists which camera output streams image data
16037 from this capture must be sent to</p>
16040 <td class="entry_units">
16041 List of camera stream IDs
16044 <td class="entry_range">
16045 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
16046 <p>List must only include streams that have been
16050 <td class="entry_hal_version">
16054 <td class="entry_tags">
16055 <ul class="entry_tags">
16056 <li><a href="#tag_HAL2">HAL2</a></li>
16061 <tr class="entries_header">
16062 <th class="th_details" colspan="6">Details</th>
16064 <tr class="entry_cont">
16065 <td class="entry_details" colspan="6">
16066 <p>If no output streams are listed,<wbr/> then the image
16067 data should simply be discarded.<wbr/> The image data must
16068 still be captured for metadata and statistics production,<wbr/>
16069 and the lens and flash must operate as requested.<wbr/></p>
16074 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16075 <!-- end of entry -->
16078 <tr class="entry" id="controls_android.request.type">
16079 <td class="entry_name
16080 entry_name_deprecated
16082 android.<wbr/>request.<wbr/>type
16084 <td class="entry_type">
16085 <span class="entry_type_name entry_type_name_enum">byte</span>
16087 <span class="entry_type_visibility"> [system]</span>
16091 <span class="entry_type_deprecated">[deprecated] </span>
16094 <ul class="entry_type_enum">
16096 <span class="entry_type_enum_name">CAPTURE (v3.2)</span>
16097 <span class="entry_type_enum_notes"><p>Capture a new image from the imaging hardware,<wbr/>
16098 and process it according to the
16099 settings</p></span>
16102 <span class="entry_type_enum_name">REPROCESS (v3.2)</span>
16103 <span class="entry_type_enum_notes"><p>Process previously captured data; the
16104 <a href="#controls_android.request.inputStreams">android.<wbr/>request.<wbr/>input<wbr/>Streams</a> parameter determines the
16105 source reprocessing stream.<wbr/> TODO: Mark dynamic metadata
16106 needed for reprocessing with [RP]</p></span>
16110 </td> <!-- entry_type -->
16112 <td class="entry_description">
16113 <p>The type of the request; either CAPTURE or
16114 REPROCESS.<wbr/> For legacy HAL3,<wbr/> this tag is redundant.<wbr/></p>
16117 <td class="entry_units">
16120 <td class="entry_range">
16121 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
16124 <td class="entry_hal_version">
16128 <td class="entry_tags">
16129 <ul class="entry_tags">
16130 <li><a href="#tag_HAL2">HAL2</a></li>
16137 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16138 <!-- end of entry -->
16142 <!-- end of kind -->
16144 <tr><td colspan="7" class="kind">static</td></tr>
16146 <thead class="entries_header">
16148 <th class="th_name">Property Name</th>
16149 <th class="th_type">Type</th>
16150 <th class="th_description">Description</th>
16151 <th class="th_units">Units</th>
16152 <th class="th_range">Range</th>
16153 <th class="th_hal_version">Initial HIDL HAL version</th>
16154 <th class="th_tags">Tags</th>
16169 <tr class="entry" id="static_android.request.maxNumOutputStreams">
16170 <td class="entry_name
16172 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams
16174 <td class="entry_type">
16175 <span class="entry_type_name">int32</span>
16176 <span class="entry_type_container">x</span>
16178 <span class="entry_type_array">
16181 <span class="entry_type_visibility"> [ndk_public]</span>
16184 <span class="entry_type_hwlevel">[legacy] </span>
16189 </td> <!-- entry_type -->
16191 <td class="entry_description">
16192 <p>The maximum numbers of different types of output streams
16193 that can be configured and used simultaneously by a camera device.<wbr/></p>
16196 <td class="entry_units">
16199 <td class="entry_range">
16200 <p>For processed (and stalling) format streams,<wbr/> >= 1.<wbr/></p>
16201 <p>For Raw format (either stalling or non-stalling) streams,<wbr/> >= 0.<wbr/></p>
16202 <p>For processed (but not stalling) format streams,<wbr/> >= 3
16203 for FULL mode devices (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL</code>);
16204 >= 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>
16207 <td class="entry_hal_version">
16211 <td class="entry_tags">
16212 <ul class="entry_tags">
16213 <li><a href="#tag_BC">BC</a></li>
16218 <tr class="entries_header">
16219 <th class="th_details" colspan="6">Details</th>
16221 <tr class="entry_cont">
16222 <td class="entry_details" colspan="6">
16223 <p>This is a 3 element tuple that contains the max number of output simultaneous
16224 streams for raw sensor,<wbr/> processed (but not stalling),<wbr/> and processed (and stalling)
16225 formats respectively.<wbr/> For example,<wbr/> assuming that JPEG is typically a processed and
16226 stalling stream,<wbr/> if max raw sensor format output stream number is 1,<wbr/> max YUV streams
16227 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>
16228 <p>This lists the upper bound of the number of output streams supported by
16229 the camera device.<wbr/> Using more streams simultaneously may require more hardware and
16230 CPU resources that will consume more power.<wbr/> The image format for an output stream can
16231 be any supported format provided by <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a>.<wbr/>
16232 The formats defined in <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> can be catergorized
16233 into the 3 stream types as below:</p>
16235 <li>Processed (but stalling): any non-RAW format with a stallDurations > 0.<wbr/>
16236 Typically <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">JPEG format</a>.<wbr/></li>
16237 <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
16238 <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW12">RAW12</a>.<wbr/></li>
16239 <li>Processed (but not-stalling): any non-RAW format without a stall duration.<wbr/> Typically
16240 <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">YUV_<wbr/>420_<wbr/>888</a>,<wbr/>
16241 <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>
16247 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16248 <!-- end of entry -->
16251 <tr class="entry" id="static_android.request.maxNumOutputRaw">
16252 <td class="entry_name
16254 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Raw
16256 <td class="entry_type">
16257 <span class="entry_type_name">int32</span>
16259 <span class="entry_type_visibility"> [java_public]</span>
16261 <span class="entry_type_synthetic">[synthetic] </span>
16263 <span class="entry_type_hwlevel">[legacy] </span>
16268 </td> <!-- entry_type -->
16270 <td class="entry_description">
16271 <p>The maximum numbers of different types of output streams
16272 that can be configured and used simultaneously by a camera device
16273 for any <code>RAW</code> formats.<wbr/></p>
16276 <td class="entry_units">
16279 <td class="entry_range">
16283 <td class="entry_hal_version">
16287 <td class="entry_tags">
16291 <tr class="entries_header">
16292 <th class="th_details" colspan="6">Details</th>
16294 <tr class="entry_cont">
16295 <td class="entry_details" colspan="6">
16296 <p>This value contains the max number of output simultaneous
16297 streams from the raw sensor.<wbr/></p>
16298 <p>This lists the upper bound of the number of output streams supported by
16299 the camera device.<wbr/> Using more streams simultaneously may require more hardware and
16300 CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can
16301 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>
16302 <p>In particular,<wbr/> a <code>RAW</code> format is typically one of:</p>
16304 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_SENSOR">RAW_<wbr/>SENSOR</a></li>
16305 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW10">RAW10</a></li>
16306 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW12">RAW12</a></li>
16308 <p>LEGACY mode devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> <code>==</code> LEGACY)
16309 never support raw streams.<wbr/></p>
16314 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16315 <!-- end of entry -->
16318 <tr class="entry" id="static_android.request.maxNumOutputProc">
16319 <td class="entry_name
16321 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Proc
16323 <td class="entry_type">
16324 <span class="entry_type_name">int32</span>
16326 <span class="entry_type_visibility"> [java_public]</span>
16328 <span class="entry_type_synthetic">[synthetic] </span>
16330 <span class="entry_type_hwlevel">[legacy] </span>
16335 </td> <!-- entry_type -->
16337 <td class="entry_description">
16338 <p>The maximum numbers of different types of output streams
16339 that can be configured and used simultaneously by a camera device
16340 for any processed (but not-stalling) formats.<wbr/></p>
16343 <td class="entry_units">
16346 <td class="entry_range">
16348 for FULL mode devices (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL</code>);
16349 >= 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>
16352 <td class="entry_hal_version">
16356 <td class="entry_tags">
16360 <tr class="entries_header">
16361 <th class="th_details" colspan="6">Details</th>
16363 <tr class="entry_cont">
16364 <td class="entry_details" colspan="6">
16365 <p>This value contains the max number of output simultaneous
16366 streams for any processed (but not-stalling) formats.<wbr/></p>
16367 <p>This lists the upper bound of the number of output streams supported by
16368 the camera device.<wbr/> Using more streams simultaneously may require more hardware and
16369 CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can
16370 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>
16371 <p>Processed (but not-stalling) is defined as any non-RAW format without a stall duration.<wbr/>
16374 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">YUV_<wbr/>420_<wbr/>888</a></li>
16375 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#NV21">NV21</a></li>
16376 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YV12">YV12</a></li>
16377 <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>
16379 <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
16380 processed format -- it will return 0 for a non-stalling stream.<wbr/></p>
16381 <p>LEGACY devices will support at least 2 processing/<wbr/>non-stalling streams.<wbr/></p>
16386 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16387 <!-- end of entry -->
16390 <tr class="entry" id="static_android.request.maxNumOutputProcStalling">
16391 <td class="entry_name
16393 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Proc<wbr/>Stalling
16395 <td class="entry_type">
16396 <span class="entry_type_name">int32</span>
16398 <span class="entry_type_visibility"> [java_public]</span>
16400 <span class="entry_type_synthetic">[synthetic] </span>
16402 <span class="entry_type_hwlevel">[legacy] </span>
16407 </td> <!-- entry_type -->
16409 <td class="entry_description">
16410 <p>The maximum numbers of different types of output streams
16411 that can be configured and used simultaneously by a camera device
16412 for any processed (and stalling) formats.<wbr/></p>
16415 <td class="entry_units">
16418 <td class="entry_range">
16422 <td class="entry_hal_version">
16426 <td class="entry_tags">
16430 <tr class="entries_header">
16431 <th class="th_details" colspan="6">Details</th>
16433 <tr class="entry_cont">
16434 <td class="entry_details" colspan="6">
16435 <p>This value contains the max number of output simultaneous
16436 streams for any processed (but not-stalling) formats.<wbr/></p>
16437 <p>This lists the upper bound of the number of output streams supported by
16438 the camera device.<wbr/> Using more streams simultaneously may require more hardware and
16439 CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can
16440 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>
16441 <p>A processed and stalling format is defined as any non-RAW format with a stallDurations
16442 > 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>
16443 <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
16444 processed format -- it will return a non-0 value for a stalling stream.<wbr/></p>
16445 <p>LEGACY devices will support up to 1 processing/<wbr/>stalling stream.<wbr/></p>
16450 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16451 <!-- end of entry -->
16454 <tr class="entry" id="static_android.request.maxNumReprocessStreams">
16455 <td class="entry_name
16456 entry_name_deprecated
16458 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Reprocess<wbr/>Streams
16460 <td class="entry_type">
16461 <span class="entry_type_name">int32</span>
16462 <span class="entry_type_container">x</span>
16464 <span class="entry_type_array">
16467 <span class="entry_type_visibility"> [system]</span>
16471 <span class="entry_type_deprecated">[deprecated] </span>
16475 </td> <!-- entry_type -->
16477 <td class="entry_description">
16478 <p>How many reprocessing streams of any type
16479 can be allocated at the same time.<wbr/></p>
16482 <td class="entry_units">
16485 <td class="entry_range">
16486 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
16490 <td class="entry_hal_version">
16494 <td class="entry_tags">
16495 <ul class="entry_tags">
16496 <li><a href="#tag_HAL2">HAL2</a></li>
16501 <tr class="entries_header">
16502 <th class="th_details" colspan="6">Details</th>
16504 <tr class="entry_cont">
16505 <td class="entry_details" colspan="6">
16506 <p>Only used by HAL2.<wbr/>x.<wbr/></p>
16507 <p>When set to 0,<wbr/> it means no reprocess stream is supported.<wbr/></p>
16512 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16513 <!-- end of entry -->
16516 <tr class="entry" id="static_android.request.maxNumInputStreams">
16517 <td class="entry_name
16519 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Input<wbr/>Streams
16521 <td class="entry_type">
16522 <span class="entry_type_name">int32</span>
16524 <span class="entry_type_visibility"> [java_public]</span>
16527 <span class="entry_type_hwlevel">[full] </span>
16532 </td> <!-- entry_type -->
16534 <td class="entry_description">
16535 <p>The maximum numbers of any type of input streams
16536 that can be configured and used simultaneously by a camera device.<wbr/></p>
16539 <td class="entry_units">
16542 <td class="entry_range">
16543 <p>0 or 1.<wbr/></p>
16546 <td class="entry_hal_version">
16550 <td class="entry_tags">
16551 <ul class="entry_tags">
16552 <li><a href="#tag_REPROC">REPROC</a></li>
16557 <tr class="entries_header">
16558 <th class="th_details" colspan="6">Details</th>
16560 <tr class="entry_cont">
16561 <td class="entry_details" colspan="6">
16562 <p>When set to 0,<wbr/> it means no input stream is supported.<wbr/></p>
16563 <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
16564 input stream,<wbr/> there must be at least one output stream configured to to receive the
16565 reprocessed images.<wbr/></p>
16566 <p>When an input stream and some output streams are used in a reprocessing request,<wbr/>
16567 only the input buffer will be used to produce these output stream buffers,<wbr/> and a
16568 new sensor image will not be captured.<wbr/></p>
16569 <p>For example,<wbr/> for Zero Shutter Lag (ZSL) still capture use case,<wbr/> the input
16570 stream image format will be PRIVATE,<wbr/> the associated output stream image format
16571 should be JPEG.<wbr/></p>
16575 <tr class="entries_header">
16576 <th class="th_details" colspan="6">HAL Implementation Details</th>
16578 <tr class="entry_cont">
16579 <td class="entry_details" colspan="6">
16580 <p>For the reprocessing flow and controls,<wbr/> see
16581 hardware/<wbr/>libhardware/<wbr/>include/<wbr/>hardware/<wbr/>camera3.<wbr/>h Section 10 for more details.<wbr/></p>
16585 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16586 <!-- end of entry -->
16589 <tr class="entry" id="static_android.request.pipelineMaxDepth">
16590 <td class="entry_name
16592 android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth
16594 <td class="entry_type">
16595 <span class="entry_type_name">byte</span>
16597 <span class="entry_type_visibility"> [public]</span>
16600 <span class="entry_type_hwlevel">[legacy] </span>
16605 </td> <!-- entry_type -->
16607 <td class="entry_description">
16608 <p>Specifies the number of maximum pipeline stages a frame
16609 has to go through from when it's exposed to when it's available
16610 to the framework.<wbr/></p>
16613 <td class="entry_units">
16616 <td class="entry_range">
16619 <td class="entry_hal_version">
16623 <td class="entry_tags">
16627 <tr class="entries_header">
16628 <th class="th_details" colspan="6">Details</th>
16630 <tr class="entry_cont">
16631 <td class="entry_details" colspan="6">
16632 <p>A typical minimum value for this is 2 (one stage to expose,<wbr/>
16633 one stage to readout) from the sensor.<wbr/> The ISP then usually adds
16634 its own stages to do custom HW processing.<wbr/> Further stages may be
16635 added by SW processing.<wbr/></p>
16636 <p>Depending on what settings are used (e.<wbr/>g.<wbr/> YUV,<wbr/> JPEG) and what
16637 processing is enabled (e.<wbr/>g.<wbr/> face detection),<wbr/> the actual pipeline
16638 depth (specified by <a href="#dynamic_android.request.pipelineDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Depth</a>) may be less than
16639 the max pipeline depth.<wbr/></p>
16640 <p>A pipeline depth of X stages is equivalent to a pipeline latency of
16641 X frame intervals.<wbr/></p>
16642 <p>This value will normally be 8 or less,<wbr/> however,<wbr/> for high speed capture session,<wbr/>
16643 the max pipeline depth will be up to 8 x size of high speed capture request list.<wbr/></p>
16647 <tr class="entries_header">
16648 <th class="th_details" colspan="6">HAL Implementation Details</th>
16650 <tr class="entry_cont">
16651 <td class="entry_details" colspan="6">
16652 <p>This value should be 4 or less,<wbr/> expect for the high speed recording session,<wbr/> where the
16653 max batch sizes may be larger than 1.<wbr/></p>
16657 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16658 <!-- end of entry -->
16661 <tr class="entry" id="static_android.request.partialResultCount">
16662 <td class="entry_name
16664 android.<wbr/>request.<wbr/>partial<wbr/>Result<wbr/>Count
16666 <td class="entry_type">
16667 <span class="entry_type_name">int32</span>
16669 <span class="entry_type_visibility"> [public]</span>
16676 </td> <!-- entry_type -->
16678 <td class="entry_description">
16679 <p>Defines how many sub-components
16680 a result will be composed of.<wbr/></p>
16683 <td class="entry_units">
16686 <td class="entry_range">
16690 <td class="entry_hal_version">
16694 <td class="entry_tags">
16698 <tr class="entries_header">
16699 <th class="th_details" colspan="6">Details</th>
16701 <tr class="entry_cont">
16702 <td class="entry_details" colspan="6">
16703 <p>In order to combat the pipeline latency,<wbr/> partial results
16704 may be delivered to the application layer from the camera device as
16705 soon as they are available.<wbr/></p>
16706 <p>Optional; defaults to 1.<wbr/> A value of 1 means that partial
16707 results are not supported,<wbr/> and only the final TotalCaptureResult will
16708 be produced by the camera device.<wbr/></p>
16709 <p>A typical use case for this might be: after requesting an
16710 auto-focus (AF) lock the new AF state might be available 50%
16711 of the way through the pipeline.<wbr/> The camera device could
16712 then immediately dispatch this state via a partial result to
16713 the application,<wbr/> and the rest of the metadata via later
16714 partial results.<wbr/></p>
16719 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16720 <!-- end of entry -->
16723 <tr class="entry" id="static_android.request.availableCapabilities">
16724 <td class="entry_name
16726 android.<wbr/>request.<wbr/>available<wbr/>Capabilities
16728 <td class="entry_type">
16729 <span class="entry_type_name entry_type_name_enum">byte</span>
16730 <span class="entry_type_container">x</span>
16732 <span class="entry_type_array">
16735 <span class="entry_type_visibility"> [public]</span>
16738 <span class="entry_type_hwlevel">[legacy] </span>
16742 <ul class="entry_type_enum">
16744 <span class="entry_type_enum_name">BACKWARD_COMPATIBLE (v3.2)</span>
16745 <span class="entry_type_enum_notes"><p>The minimal set of capabilities that every camera
16746 device (regardless of <a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>)
16747 supports.<wbr/></p>
16748 <p>This capability is listed by all normal devices,<wbr/> and
16749 indicates that the camera device has a feature set
16750 that's comparable to the baseline requirements for the
16751 older android.<wbr/>hardware.<wbr/>Camera API.<wbr/></p>
16752 <p>Devices with the DEPTH_<wbr/>OUTPUT capability might not list this
16753 capability,<wbr/> indicating that they support only depth measurement,<wbr/>
16754 not standard color output.<wbr/></p></span>
16757 <span class="entry_type_enum_name">MANUAL_SENSOR (v3.2)</span>
16758 <span class="entry_type_enum_optional">[optional]</span>
16759 <span class="entry_type_enum_notes"><p>The camera device can be manually controlled (3A algorithms such
16760 as auto-exposure,<wbr/> and auto-focus can be bypassed).<wbr/>
16761 The camera device supports basic manual control of the sensor image
16762 acquisition related stages.<wbr/> This means the following controls are
16763 guaranteed to be supported:</p>
16765 <li>Manual frame duration control<ul>
16766 <li><a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a></li>
16767 <li><a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a></li>
16770 <li>Manual exposure control<ul>
16771 <li><a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a></li>
16772 <li><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></li>
16775 <li>Manual sensitivity control<ul>
16776 <li><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></li>
16777 <li><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></li>
16780 <li>Manual lens control (if the lens is adjustable)<ul>
16781 <li>android.<wbr/>lens.<wbr/>*</li>
16784 <li>Manual flash control (if a flash unit is present)<ul>
16785 <li>android.<wbr/>flash.<wbr/>*</li>
16788 <li>Manual black level locking<ul>
16789 <li><a href="#controls_android.blackLevel.lock">android.<wbr/>black<wbr/>Level.<wbr/>lock</a></li>
16792 <li>Auto exposure lock<ul>
16793 <li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li>
16797 <p>If any of the above 3A algorithms are enabled,<wbr/> then the camera
16798 device will accurately report the values applied by 3A in the
16800 <p>A given camera device may also support additional manual sensor controls,<wbr/>
16801 but this capability only covers the above list of controls.<wbr/></p>
16802 <p>If this is supported,<wbr/> <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> will
16803 additionally return a min frame duration that is greater than
16804 zero for each supported size-format combination.<wbr/></p></span>
16807 <span class="entry_type_enum_name">MANUAL_POST_PROCESSING (v3.2)</span>
16808 <span class="entry_type_enum_optional">[optional]</span>
16809 <span class="entry_type_enum_notes"><p>The camera device post-processing stages can be manually controlled.<wbr/>
16810 The camera device supports basic manual control of the image post-processing
16811 stages.<wbr/> This means the following controls are guaranteed to be supported:</p>
16814 <p>Manual tonemap control</p>
16816 <li><a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a></li>
16817 <li><a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a></li>
16818 <li><a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></li>
16819 <li><a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a></li>
16820 <li><a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a></li>
16824 <p>Manual white balance control</p>
16826 <li><a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a></li>
16827 <li><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a></li>
16830 <li>Manual lens shading map control<ul>
16831 <li><a href="#controls_android.shading.mode">android.<wbr/>shading.<wbr/>mode</a></li>
16832 <li><a href="#controls_android.statistics.lensShadingMapMode">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode</a></li>
16833 <li><a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a></li>
16834 <li><a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a></li>
16837 <li>Manual aberration correction control (if aberration correction is supported)<ul>
16838 <li><a href="#controls_android.colorCorrection.aberrationMode">android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode</a></li>
16839 <li><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></li>
16842 <li>Auto white balance lock<ul>
16843 <li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li>
16847 <p>If auto white balance is enabled,<wbr/> then the camera device
16848 will accurately report the values applied by AWB in the result.<wbr/></p>
16849 <p>A given camera device may also support additional post-processing
16850 controls,<wbr/> but this capability only covers the above list of controls.<wbr/></p></span>
16853 <span class="entry_type_enum_name">RAW (v3.2)</span>
16854 <span class="entry_type_enum_optional">[optional]</span>
16855 <span class="entry_type_enum_notes"><p>The camera device supports outputting RAW buffers and
16856 metadata for interpreting them.<wbr/></p>
16857 <p>Devices supporting the RAW capability allow both for
16858 saving DNG files,<wbr/> and for direct application processing of
16859 raw sensor images.<wbr/></p>
16861 <li>RAW_<wbr/>SENSOR is supported as an output format.<wbr/></li>
16862 <li>The maximum available resolution for RAW_<wbr/>SENSOR streams
16863 will match either the value in
16864 <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a> or
16865 <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>
16866 <li>All DNG-related optional metadata entries are provided
16867 by the camera device.<wbr/></li>
16871 <span class="entry_type_enum_name">PRIVATE_REPROCESSING (v3.2)</span>
16872 <span class="entry_type_enum_optional">[optional]</span>
16873 <span class="entry_type_enum_notes"><p>The camera device supports the Zero Shutter Lag reprocessing use case.<wbr/></p>
16875 <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>
16876 <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/>
16877 that is,<wbr/> <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> is included in the lists of
16878 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>
16879 <li><a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getValidOutputFormatsForInput">StreamConfigurationMap#getValidOutputFormatsForInput</a>
16880 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>
16881 <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>
16882 <li>Using <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> does not cause a frame rate drop
16883 relative to the sensor's maximum capture rate (at that resolution).<wbr/></li>
16884 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> will be reprocessable into both
16885 <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a> and
16886 <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a> formats.<wbr/></li>
16887 <li>The maximum available resolution for PRIVATE streams
16888 (both input/<wbr/>output) will match the maximum available
16889 resolution of JPEG streams.<wbr/></li>
16890 <li>Static metadata <a href="#static_android.reprocess.maxCaptureStall">android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall</a>.<wbr/></li>
16891 <li>Only below controls are effective for reprocessing requests and
16892 will be present in capture results,<wbr/> other controls in reprocess
16893 requests will be ignored by the camera device.<wbr/><ul>
16894 <li>android.<wbr/>jpeg.<wbr/>*</li>
16895 <li><a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></li>
16896 <li><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></li>
16899 <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a> and
16900 <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>
16904 <span class="entry_type_enum_name">READ_SENSOR_SETTINGS (v3.2)</span>
16905 <span class="entry_type_enum_optional">[optional]</span>
16906 <span class="entry_type_enum_notes"><p>The camera device supports accurately reporting the sensor settings for many of
16907 the sensor controls while the built-in 3A algorithm is running.<wbr/> This allows
16908 reporting of sensor settings even when these settings cannot be manually changed.<wbr/></p>
16909 <p>The values reported for the following controls are guaranteed to be available
16910 in the CaptureResult,<wbr/> including when 3A is enabled:</p>
16912 <li>Exposure control<ul>
16913 <li><a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a></li>
16916 <li>Sensitivity control<ul>
16917 <li><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></li>
16920 <li>Lens controls (if the lens is adjustable)<ul>
16921 <li><a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a></li>
16922 <li><a href="#controls_android.lens.aperture">android.<wbr/>lens.<wbr/>aperture</a></li>
16926 <p>This capability is a subset of the MANUAL_<wbr/>SENSOR control capability,<wbr/> and will
16927 always be included if the MANUAL_<wbr/>SENSOR capability is available.<wbr/></p></span>
16930 <span class="entry_type_enum_name">BURST_CAPTURE (v3.2)</span>
16931 <span class="entry_type_enum_optional">[optional]</span>
16932 <span class="entry_type_enum_notes"><p>The camera device supports capturing high-resolution images at >= 20 frames per
16933 second,<wbr/> in at least the uncompressed YUV format,<wbr/> when post-processing settings are set
16934 to FAST.<wbr/> Additionally,<wbr/> maximum-resolution images can be captured at >= 10 frames
16935 per second.<wbr/> Here,<wbr/> 'high resolution' means at least 8 megapixels,<wbr/> or the maximum
16936 resolution of the device,<wbr/> whichever is smaller.<wbr/></p></span>
16939 <span class="entry_type_enum_name">YUV_REPROCESSING (v3.2)</span>
16940 <span class="entry_type_enum_optional">[optional]</span>
16941 <span class="entry_type_enum_notes"><p>The camera device supports the YUV_<wbr/>420_<wbr/>888 reprocessing use case,<wbr/> similar as
16942 PRIVATE_<wbr/>REPROCESSING,<wbr/> This capability requires the camera device to support the
16945 <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>
16946 <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
16947 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>
16948 <li><a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getValidOutputFormatsForInput">StreamConfigurationMap#getValidOutputFormatsForInput</a>
16949 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>
16950 <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>
16951 <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
16952 drop relative to the sensor's maximum capture rate (at that resolution).<wbr/></li>
16953 <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
16954 <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>
16955 <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
16956 maximum available resolution of <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a> streams.<wbr/></li>
16957 <li>Static metadata <a href="#static_android.reprocess.maxCaptureStall">android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall</a>.<wbr/></li>
16958 <li>Only the below controls are effective for reprocessing requests and will be present
16959 in capture results.<wbr/> The reprocess requests are from the original capture results
16960 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
16961 reprocess requests will be ignored by the camera device.<wbr/><ul>
16962 <li>android.<wbr/>jpeg.<wbr/>*</li>
16963 <li><a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></li>
16964 <li><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></li>
16965 <li><a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a></li>
16968 <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a> and
16969 <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>
16973 <span class="entry_type_enum_name">DEPTH_OUTPUT (v3.2)</span>
16974 <span class="entry_type_enum_optional">[optional]</span>
16975 <span class="entry_type_enum_notes"><p>The camera device can produce depth measurements from its field of view.<wbr/></p>
16976 <p>This capability requires the camera device to support the following:</p>
16978 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#DEPTH16">ImageFormat#DEPTH16</a> is supported as
16979 an output format.<wbr/></li>
16980 <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
16981 optionally supported as an output format.<wbr/></li>
16982 <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
16983 list the following calibration metadata entries in both <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html">CameraCharacteristics</a>
16984 and <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">CaptureResult</a>:<ul>
16985 <li><a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a></li>
16986 <li><a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a></li>
16987 <li><a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a></li>
16988 <li><a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a></li>
16991 <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>
16992 <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>
16993 <li>A LIMITED camera with only the DEPTH_<wbr/>OUTPUT capability does not have to support
16994 normal YUV_<wbr/>420_<wbr/>888,<wbr/> JPEG,<wbr/> and PRIV-format outputs.<wbr/> It only has to support the DEPTH16
16997 <p>Generally,<wbr/> depth output operates at a slower frame rate than standard color capture,<wbr/>
16998 so the DEPTH16 and DEPTH_<wbr/>POINT_<wbr/>CLOUD formats will commonly have a stall duration that
16999 should be accounted for (see <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a>).<wbr/>
17000 On a device that supports both depth and color-based output,<wbr/> to enable smooth preview,<wbr/>
17001 using a repeating burst is recommended,<wbr/> where a depth-output target is only included
17002 once every N frames,<wbr/> where N is the ratio between preview output rate and depth output
17003 rate,<wbr/> including depth stall time.<wbr/></p></span>
17006 <span class="entry_type_enum_name">CONSTRAINED_HIGH_SPEED_VIDEO (v3.2)</span>
17007 <span class="entry_type_enum_optional">[optional]</span>
17008 <span class="entry_type_enum_notes"><p>The device supports constrained high speed video recording (frame rate >=120fps) use
17009 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
17010 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>
17011 <p>A camera device can still support high speed video streaming by advertising the high
17012 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
17013 normal capture request per frame control and synchronization requirements will apply
17014 to the high speed fps ranges,<wbr/> the same as all other fps ranges.<wbr/> This capability
17015 describes the capability of a specialized operating mode with many limitations (see
17016 below),<wbr/> which is only targeted at high speed video recording.<wbr/></p>
17017 <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/>
17018 To get desired output frame rates,<wbr/> the application is only allowed to select video
17019 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
17020 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>
17021 <p>In this capability,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to
17022 ON,<wbr/> AUTO,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode
17023 controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture
17024 and post-processing parameters is possible.<wbr/> All other controls operate the
17025 same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other
17026 android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p>
17028 <li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li>
17029 <li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li>
17030 <li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li>
17031 <li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li>
17032 <li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li>
17033 <li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li>
17034 <li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li>
17035 <li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li>
17036 <li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li>
17037 <li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li>
17039 <p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p>
17041 <li><a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> (TORCH mode only,<wbr/> automatic flash for still capture will not
17042 work since aeMode is ON)</li>
17043 <li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li>
17044 <li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li>
17045 <li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> (if it is supported)</li>
17047 <p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may
17048 be lower than what camera can output,<wbr/> depending on the destination Surfaces for
17049 the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/>
17050 the application need check if the video encoder is capable of supporting the
17051 high frame rate for a given video size,<wbr/> or it will end up with lower recording
17052 frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the actual preview frame
17053 rate will be bounded by the screen refresh rate.<wbr/></p>
17054 <p>The camera device will only support up to 2 high speed simultaneous output surfaces
17055 (preview and recording surfaces) in this mode.<wbr/> Above controls will be effective only
17056 if all of below conditions are true:</p>
17058 <li>The application creates a camera capture session with no more than 2 surfaces via
17059 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>.<wbr/> The
17060 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
17061 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>
17062 <li>The stream sizes are selected from the sizes reported by
17063 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighSpeedVideoSizes">StreamConfigurationMap#getHighSpeedVideoSizes</a>.<wbr/></li>
17064 <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>
17066 <p>When above conditions are NOT satistied,<wbr/>
17067 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>
17068 will fail.<wbr/></p>
17069 <p>Switching to a FPS range that has different maximum FPS may trigger some camera device
17070 reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that
17071 the application avoids unnecessary maximum target FPS changes as much as possible
17072 during high speed streaming.<wbr/></p></span>
17075 <span class="entry_type_enum_name">MOTION_TRACKING (v3.3)</span>
17076 <span class="entry_type_enum_optional">[optional]</span>
17077 <span class="entry_type_enum_notes"><p>The camera device supports the MOTION_<wbr/>TRACKING value for
17078 <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>
17079 <p>This limits the motion blur of capture images,<wbr/> resulting in better image tracking
17080 results for use cases such as image stabilization or augmented reality.<wbr/></p></span>
17083 <span class="entry_type_enum_name">LOGICAL_MULTI_CAMERA (v3.3)</span>
17084 <span class="entry_type_enum_optional">[optional]</span>
17085 <span class="entry_type_enum_notes"><p>The camera device is a logical camera backed by two or more physical cameras that are
17086 also exposed to the application.<wbr/></p>
17087 <p>This capability requires the camera device to support the following:</p>
17089 <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>
17090 <li><a href="#static_android.logicalMultiCamera.physicalIds">android.<wbr/>logical<wbr/>Multi<wbr/>Camera.<wbr/>physical<wbr/>Ids</a></li>
17091 <li><a href="#static_android.logicalMultiCamera.sensorSyncType">android.<wbr/>logical<wbr/>Multi<wbr/>Camera.<wbr/>sensor<wbr/>Sync<wbr/>Type</a></li>
17094 <li>The underlying physical cameras' static metadata must list the following entries,<wbr/>
17095 so that the application can correlate pixels from the physical streams:<ul>
17096 <li><a href="#static_android.lens.poseReference">android.<wbr/>lens.<wbr/>pose<wbr/>Reference</a></li>
17097 <li><a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a></li>
17098 <li><a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a></li>
17099 <li><a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a></li>
17100 <li><a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a></li>
17103 <li>The SENSOR_<wbr/>INFO_<wbr/>TIMESTAMP_<wbr/>SOURCE of the logical device and physical devices must be
17104 the same.<wbr/></li>
17105 <li>The logical camera device must be LIMITED or higher device.<wbr/></li>
17107 <p>Both the logical camera device and its underlying physical devices support the
17108 mandatory stream combinations required for their device levels.<wbr/></p>
17109 <p>Additionally,<wbr/> for each guaranteed stream combination,<wbr/> the logical camera supports:</p>
17111 <li>For each guaranteed stream combination,<wbr/> the logical camera supports replacing one
17112 logical <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">YUV_<wbr/>420_<wbr/>888</a>
17113 or raw stream with two physical streams of the same size and format,<wbr/> each from a
17114 separate physical camera,<wbr/> given that the size and format are supported by both
17115 physical cameras.<wbr/></li>
17116 <li>If the logical camera doesn't advertise RAW capability,<wbr/> but the underlying physical
17117 cameras do,<wbr/> the logical camera will support guaranteed stream combinations for RAW
17118 capability,<wbr/> except that the RAW streams will be physical streams,<wbr/> each from a separate
17119 physical camera.<wbr/> This is usually the case when the physical cameras have different
17120 sensor sizes.<wbr/></li>
17122 <p>Using physical streams in place of a logical stream of the same size and format will
17123 not slow down the frame rate of the capture,<wbr/> as long as the minimum frame duration
17124 of the physical and logical streams are the same.<wbr/></p></span>
17127 <span class="entry_type_enum_name">MONOCHROME (v3.3)</span>
17128 <span class="entry_type_enum_optional">[optional]</span>
17129 <span class="entry_type_enum_notes"><p>The camera device is a monochrome camera that doesn't contain a color filter array,<wbr/>
17130 and the pixel values on U and Y planes are all 128.<wbr/></p></span>
17134 </td> <!-- entry_type -->
17136 <td class="entry_description">
17137 <p>List of capabilities that this camera device
17138 advertises as fully supporting.<wbr/></p>
17141 <td class="entry_units">
17144 <td class="entry_range">
17147 <td class="entry_hal_version">
17151 <td class="entry_tags">
17155 <tr class="entries_header">
17156 <th class="th_details" colspan="6">Details</th>
17158 <tr class="entry_cont">
17159 <td class="entry_details" colspan="6">
17160 <p>A capability is a contract that the camera device makes in order
17161 to be able to satisfy one or more use cases.<wbr/></p>
17162 <p>Listing a capability guarantees that the whole set of features
17163 required to support a common use will all be available.<wbr/></p>
17164 <p>Using a subset of the functionality provided by an unsupported
17165 capability may be possible on a specific camera device implementation;
17166 to do this query each of <a href="#static_android.request.availableRequestKeys">android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys</a>,<wbr/>
17167 <a href="#static_android.request.availableResultKeys">android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys</a>,<wbr/>
17168 <a href="#static_android.request.availableCharacteristicsKeys">android.<wbr/>request.<wbr/>available<wbr/>Characteristics<wbr/>Keys</a>.<wbr/></p>
17169 <p>The following capabilities are guaranteed to be available on
17170 <a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> <code>==</code> FULL devices:</p>
17172 <li>MANUAL_<wbr/>SENSOR</li>
17173 <li>MANUAL_<wbr/>POST_<wbr/>PROCESSING</li>
17175 <p>Other capabilities may be available on either FULL or LIMITED
17176 devices,<wbr/> but the application should query this key to be sure.<wbr/></p>
17180 <tr class="entries_header">
17181 <th class="th_details" colspan="6">HAL Implementation Details</th>
17183 <tr class="entry_cont">
17184 <td class="entry_details" colspan="6">
17185 <p>Additional constraint details per-capability will be available
17186 in the Compatibility Test Suite.<wbr/></p>
17187 <p>Minimum baseline requirements required for the
17188 BACKWARD_<wbr/>COMPATIBLE capability are not explicitly listed.<wbr/>
17189 Instead refer to "BC" tags and the camera CTS tests in the
17190 android.<wbr/>hardware.<wbr/>camera2.<wbr/>cts package.<wbr/></p>
17191 <p>Listed controls that can be either request or result (e.<wbr/>g.<wbr/>
17192 <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>) must be available both in the
17193 request and the result in order to be considered to be
17194 capability-compliant.<wbr/></p>
17195 <p>For example,<wbr/> if the HAL claims to support MANUAL control,<wbr/>
17196 then exposure time must be configurable via the request <em>and</em>
17197 the actual exposure applied must be available via
17198 the result.<wbr/></p>
17199 <p>If MANUAL_<wbr/>SENSOR is omitted,<wbr/> the HAL may choose to omit the
17200 <a href="#static_android.scaler.availableMinFrameDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Min<wbr/>Frame<wbr/>Durations</a> static property entirely.<wbr/></p>
17201 <p>For PRIVATE_<wbr/>REPROCESSING and YUV_<wbr/>REPROCESSING capabilities,<wbr/> see
17202 hardware/<wbr/>libhardware/<wbr/>include/<wbr/>hardware/<wbr/>camera3.<wbr/>h Section 10 for more information.<wbr/></p>
17203 <p>Devices that support the MANUAL_<wbr/>SENSOR capability must support the
17204 CAMERA3_<wbr/>TEMPLATE_<wbr/>MANUAL template defined in camera3.<wbr/>h.<wbr/></p>
17205 <p>Devices that support the PRIVATE_<wbr/>REPROCESSING capability or the
17206 YUV_<wbr/>REPROCESSING capability must support the
17207 CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template defined in camera3.<wbr/>h.<wbr/></p>
17208 <p>For DEPTH_<wbr/>OUTPUT,<wbr/> the depth-format keys
17209 <a href="#static_android.depth.availableDepthStreamConfigurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stream<wbr/>Configurations</a>,<wbr/>
17210 <a href="#static_android.depth.availableDepthMinFrameDurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Min<wbr/>Frame<wbr/>Durations</a>,<wbr/>
17211 <a href="#static_android.depth.availableDepthStallDurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stall<wbr/>Durations</a> must be available,<wbr/> in
17212 addition to the other keys explicitly mentioned in the DEPTH_<wbr/>OUTPUT
17213 enum notes.<wbr/> The entry <a href="#static_android.depth.maxDepthSamples">android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples</a> must be available
17214 if the DEPTH_<wbr/>POINT_<wbr/>CLOUD format is supported (HAL pixel format BLOB,<wbr/> dataspace
17216 <p>For a camera device with LOGICAL_<wbr/>MULTI_<wbr/>CAMERA capability,<wbr/> it should operate in the
17217 same way as a physical camera device based on its hardware level and capabilities.<wbr/>
17218 It's recommended that its feature set is superset of that of individual physical cameras.<wbr/></p>
17219 <p>For MONOCHROME,<wbr/> the camera device must also advertise BACKWARD_<wbr/>COMPATIBLE capability,<wbr/> and
17220 it is exclusive of both RAW and MANUAL_<wbr/>POST_<wbr/>PROCESSING capabilities:</p>
17223 <p>To maintain backward compatibility,<wbr/> the camera device must support all
17224 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
17225 AUTO,<wbr/> and <a href="#dynamic_android.control.awbState">android.<wbr/>control.<wbr/>awb<wbr/>State</a> are either CONVERGED or LOCKED depending on
17226 <a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a>.<wbr/></p>
17229 <p>A monochrome device doesn't need to advertise DNG related optional metadata tags.<wbr/></p>
17232 <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
17233 <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are not applicable.<wbr/> So the camera device cannot
17234 be a FULL device.<wbr/> However,<wbr/> the HAL can still advertise other individual capabilites.<wbr/></p>
17237 <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/>
17238 CurveGreen and curveBlue are no-ops.<wbr/></p>
17244 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17245 <!-- end of entry -->
17248 <tr class="entry" id="static_android.request.availableRequestKeys">
17249 <td class="entry_name
17251 android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys
17253 <td class="entry_type">
17254 <span class="entry_type_name">int32</span>
17255 <span class="entry_type_container">x</span>
17257 <span class="entry_type_array">
17260 <span class="entry_type_visibility"> [ndk_public]</span>
17263 <span class="entry_type_hwlevel">[legacy] </span>
17268 </td> <!-- entry_type -->
17270 <td class="entry_description">
17271 <p>A list of all keys that the camera device has available
17272 to use with <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureRequest.html">CaptureRequest</a>.<wbr/></p>
17275 <td class="entry_units">
17278 <td class="entry_range">
17281 <td class="entry_hal_version">
17285 <td class="entry_tags">
17289 <tr class="entries_header">
17290 <th class="th_details" colspan="6">Details</th>
17292 <tr class="entry_cont">
17293 <td class="entry_details" colspan="6">
17294 <p>Attempting to set a key into a CaptureRequest that is not
17295 listed here will result in an invalid request and will be rejected
17296 by the camera device.<wbr/></p>
17297 <p>This field can be used to query the feature set of a camera device
17298 at a more granular level than capabilities.<wbr/> This is especially
17299 important for optional keys that are not listed under any capability
17300 in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
17304 <tr class="entries_header">
17305 <th class="th_details" colspan="6">HAL Implementation Details</th>
17307 <tr class="entry_cont">
17308 <td class="entry_details" colspan="6">
17309 <p>Vendor tags can be listed here.<wbr/> Vendor tag metadata should also
17310 use the extensions C api (refer to camera3.<wbr/>h for more details).<wbr/></p>
17311 <p>Setting/<wbr/>getting vendor tags will be checked against the metadata
17312 vendor extensions API and not against this field.<wbr/></p>
17313 <p>The HAL must not consume any request tags that are not listed either
17314 here or in the vendor tag list.<wbr/></p>
17315 <p>The public camera2 API will always make the vendor tags visible
17317 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a>.<wbr/></p>
17321 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17322 <!-- end of entry -->
17325 <tr class="entry" id="static_android.request.availableResultKeys">
17326 <td class="entry_name
17328 android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys
17330 <td class="entry_type">
17331 <span class="entry_type_name">int32</span>
17332 <span class="entry_type_container">x</span>
17334 <span class="entry_type_array">
17337 <span class="entry_type_visibility"> [ndk_public]</span>
17340 <span class="entry_type_hwlevel">[legacy] </span>
17345 </td> <!-- entry_type -->
17347 <td class="entry_description">
17348 <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>
17351 <td class="entry_units">
17354 <td class="entry_range">
17357 <td class="entry_hal_version">
17361 <td class="entry_tags">
17365 <tr class="entries_header">
17366 <th class="th_details" colspan="6">Details</th>
17368 <tr class="entry_cont">
17369 <td class="entry_details" colspan="6">
17370 <p>Attempting to get a key from a CaptureResult that is not
17371 listed here will always return a <code>null</code> value.<wbr/> Getting a key from
17372 a CaptureResult that is listed here will generally never return a <code>null</code>
17374 <p>The following keys may return <code>null</code> unless they are enabled:</p>
17376 <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>
17378 <p>(Those sometimes-null keys will nevertheless be listed here
17379 if they are available.<wbr/>)</p>
17380 <p>This field can be used to query the feature set of a camera device
17381 at a more granular level than capabilities.<wbr/> This is especially
17382 important for optional keys that are not listed under any capability
17383 in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
17387 <tr class="entries_header">
17388 <th class="th_details" colspan="6">HAL Implementation Details</th>
17390 <tr class="entry_cont">
17391 <td class="entry_details" colspan="6">
17392 <p>Tags listed here must always have an entry in the result metadata,<wbr/>
17393 even if that size is 0 elements.<wbr/> Only array-type tags (e.<wbr/>g.<wbr/> lists,<wbr/>
17394 matrices,<wbr/> strings) are allowed to have 0 elements.<wbr/></p>
17395 <p>Vendor tags can be listed here.<wbr/> Vendor tag metadata should also
17396 use the extensions C api (refer to camera3.<wbr/>h for more details).<wbr/></p>
17397 <p>Setting/<wbr/>getting vendor tags will be checked against the metadata
17398 vendor extensions API and not against this field.<wbr/></p>
17399 <p>The HAL must not produce any result tags that are not listed either
17400 here or in the vendor tag list.<wbr/></p>
17401 <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>
17405 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17406 <!-- end of entry -->
17409 <tr class="entry" id="static_android.request.availableCharacteristicsKeys">
17410 <td class="entry_name
17412 android.<wbr/>request.<wbr/>available<wbr/>Characteristics<wbr/>Keys
17414 <td class="entry_type">
17415 <span class="entry_type_name">int32</span>
17416 <span class="entry_type_container">x</span>
17418 <span class="entry_type_array">
17421 <span class="entry_type_visibility"> [ndk_public]</span>
17424 <span class="entry_type_hwlevel">[legacy] </span>
17429 </td> <!-- entry_type -->
17431 <td class="entry_description">
17432 <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>
17435 <td class="entry_units">
17438 <td class="entry_range">
17441 <td class="entry_hal_version">
17445 <td class="entry_tags">
17449 <tr class="entries_header">
17450 <th class="th_details" colspan="6">Details</th>
17452 <tr class="entry_cont">
17453 <td class="entry_details" colspan="6">
17454 <p>This entry follows the same rules as
17455 <a href="#static_android.request.availableResultKeys">android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys</a> (except that it applies for
17456 CameraCharacteristics instead of CaptureResult).<wbr/> See above for more
17461 <tr class="entries_header">
17462 <th class="th_details" colspan="6">HAL Implementation Details</th>
17464 <tr class="entry_cont">
17465 <td class="entry_details" colspan="6">
17466 <p>Keys listed here must always have an entry in the static info metadata,<wbr/>
17467 even if that size is 0 elements.<wbr/> Only array-type tags (e.<wbr/>g.<wbr/> lists,<wbr/>
17468 matrices,<wbr/> strings) are allowed to have 0 elements.<wbr/></p>
17469 <p>Vendor tags can listed here.<wbr/> Vendor tag metadata should also use
17470 the extensions C api (refer to camera3.<wbr/>h for more details).<wbr/></p>
17471 <p>Setting/<wbr/>getting vendor tags will be checked against the metadata
17472 vendor extensions API and not against this field.<wbr/></p>
17473 <p>The HAL must not have any tags in its static info that are not listed
17474 either here or in the vendor tag list.<wbr/></p>
17475 <p>The public camera2 API will always make the vendor tags visible
17476 via <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getKeys">CameraCharacteristics#getKeys</a>.<wbr/></p>
17480 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17481 <!-- end of entry -->
17484 <tr class="entry" id="static_android.request.availableSessionKeys">
17485 <td class="entry_name
17487 android.<wbr/>request.<wbr/>available<wbr/>Session<wbr/>Keys
17489 <td class="entry_type">
17490 <span class="entry_type_name">int32</span>
17491 <span class="entry_type_container">x</span>
17493 <span class="entry_type_array">
17496 <span class="entry_type_visibility"> [ndk_public]</span>
17499 <span class="entry_type_hwlevel">[legacy] </span>
17504 </td> <!-- entry_type -->
17506 <td class="entry_description">
17507 <p>A subset of the available request keys that the camera device
17508 can pass as part of the capture session initialization.<wbr/></p>
17511 <td class="entry_units">
17514 <td class="entry_range">
17517 <td class="entry_hal_version">
17521 <td class="entry_tags">
17525 <tr class="entries_header">
17526 <th class="th_details" colspan="6">Details</th>
17528 <tr class="entry_cont">
17529 <td class="entry_details" colspan="6">
17530 <p>This is a subset of <a href="#static_android.request.availableRequestKeys">android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys</a> which
17531 contains a list of keys that are difficult to apply per-frame and
17532 can result in unexpected delays when modified during the capture session
17533 lifetime.<wbr/> Typical examples include parameters that require a
17534 time-consuming hardware re-configuration or internal camera pipeline
17535 change.<wbr/> For performance reasons we advise clients to pass their initial
17537 <a href="https://developer.android.com/reference/SessionConfiguration.html#setSessionParameters">SessionConfiguration#setSessionParameters</a>.<wbr/>
17538 Once the camera capture session is enabled it is also recommended to avoid
17539 changing them from their initial values set in
17540 <a href="https://developer.android.com/reference/SessionConfiguration.html#setSessionParameters">SessionConfiguration#setSessionParameters</a>.<wbr/>
17541 Control over session parameters can still be exerted in capture requests
17542 but clients should be aware and expect delays during their application.<wbr/>
17543 An example usage scenario could look like this:</p>
17545 <li>The camera client starts by quering the session parameter key list via
17546 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableSessionKeys">CameraCharacteristics#getAvailableSessionKeys</a>.<wbr/></li>
17547 <li>Before triggering the capture session create sequence,<wbr/> a capture request
17549 <a href="https://developer.android.com/reference/CameraDevice.html#createCaptureRequest">CameraDevice#createCaptureRequest</a>
17550 using an appropriate template matching the particular use case.<wbr/></li>
17551 <li>The client should go over the list of session parameters and check
17552 whether some of the keys listed matches with the parameters that
17553 they intend to modify as part of the first capture request.<wbr/></li>
17554 <li>If there is no such match,<wbr/> the capture request can be passed
17556 <a href="https://developer.android.com/reference/SessionConfiguration.html#setSessionParameters">SessionConfiguration#setSessionParameters</a>.<wbr/></li>
17557 <li>If matches do exist,<wbr/> the client should update the respective values
17558 and pass the request to
17559 <a href="https://developer.android.com/reference/SessionConfiguration.html#setSessionParameters">SessionConfiguration#setSessionParameters</a>.<wbr/></li>
17560 <li>After the capture session initialization completes the session parameter
17561 key list can continue to serve as reference when posting or updating
17562 further requests.<wbr/> As mentioned above further changes to session
17563 parameters should ideally be avoided,<wbr/> if updates are necessary
17564 however clients could expect a delay/<wbr/>glitch during the
17565 parameter switch.<wbr/></li>
17570 <tr class="entries_header">
17571 <th class="th_details" colspan="6">HAL Implementation Details</th>
17573 <tr class="entry_cont">
17574 <td class="entry_details" colspan="6">
17575 <p>Vendor tags can be listed here.<wbr/> Vendor tag metadata should also
17576 use the extensions C api (refer to
17577 android.<wbr/>hardware.<wbr/>camera.<wbr/>device.<wbr/>V3_<wbr/>4.<wbr/>Stream<wbr/>Configuration.<wbr/>session<wbr/>Params for more details).<wbr/></p>
17578 <p>Setting/<wbr/>getting vendor tags will be checked against the metadata
17579 vendor extensions API and not against this field.<wbr/></p>
17580 <p>The HAL must not consume any request tags in the session parameters that
17581 are not listed either here or in the vendor tag list.<wbr/></p>
17582 <p>The public camera2 API will always make the vendor tags visible
17584 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableSessionKeys">CameraCharacteristics#getAvailableSessionKeys</a>.<wbr/></p>
17588 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17589 <!-- end of entry -->
17592 <tr class="entry" id="static_android.request.availablePhysicalCameraRequestKeys">
17593 <td class="entry_name
17595 android.<wbr/>request.<wbr/>available<wbr/>Physical<wbr/>Camera<wbr/>Request<wbr/>Keys
17597 <td class="entry_type">
17598 <span class="entry_type_name">int32</span>
17599 <span class="entry_type_container">x</span>
17601 <span class="entry_type_array">
17604 <span class="entry_type_visibility"> [hidden]</span>
17607 <span class="entry_type_hwlevel">[limited] </span>
17612 </td> <!-- entry_type -->
17614 <td class="entry_description">
17615 <p>A subset of the available request keys that can be overriden for
17616 physical devices backing a logical multi-camera.<wbr/></p>
17619 <td class="entry_units">
17622 <td class="entry_range">
17625 <td class="entry_hal_version">
17629 <td class="entry_tags">
17633 <tr class="entries_header">
17634 <th class="th_details" colspan="6">Details</th>
17636 <tr class="entry_cont">
17637 <td class="entry_details" colspan="6">
17638 <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
17639 of keys that can be overriden using <a href="https://developer.android.com/reference/CaptureRequest/Builder.html#setPhysicalCameraKey">Builder#setPhysicalCameraKey</a>.<wbr/>
17640 The respective value of such request key can be obtained by calling
17641 <a href="https://developer.android.com/reference/CaptureRequest/Builder.html#getPhysicalCameraKey">Builder#getPhysicalCameraKey</a>.<wbr/> Capture requests that contain
17642 individual physical device requests must be built via
17643 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureRequest(int,">Set)</a>.<wbr/></p>
17647 <tr class="entries_header">
17648 <th class="th_details" colspan="6">HAL Implementation Details</th>
17650 <tr class="entry_cont">
17651 <td class="entry_details" colspan="6">
17652 <p>Vendor tags can be listed here.<wbr/> Vendor tag metadata should also
17653 use the extensions C api (refer to
17654 android.<wbr/>hardware.<wbr/>camera.<wbr/>device.<wbr/>V3_<wbr/>4.<wbr/>Capture<wbr/>Request.<wbr/>physical<wbr/>Camera<wbr/>Settings for more
17655 details).<wbr/></p>
17656 <p>Setting/<wbr/>getting vendor tags will be checked against the metadata
17657 vendor extensions API and not against this field.<wbr/></p>
17658 <p>The HAL must not consume any request tags in the session parameters that
17659 are not listed either here or in the vendor tag list.<wbr/></p>
17660 <p>There should be no overlap between this set of keys and the available session keys
17661 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableSessionKeys">CameraCharacteristics#getAvailableSessionKeys</a> along
17662 with any other controls that can have impact on the dual-camera sync.<wbr/></p>
17663 <p>The public camera2 API will always make the vendor tags visible
17665 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailablePhysicalCameraRequestKeys">CameraCharacteristics#getAvailablePhysicalCameraRequestKeys</a>.<wbr/></p>
17669 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17670 <!-- end of entry -->
17674 <!-- end of kind -->
17676 <tr><td colspan="7" class="kind">dynamic</td></tr>
17678 <thead class="entries_header">
17680 <th class="th_name">Property Name</th>
17681 <th class="th_type">Type</th>
17682 <th class="th_description">Description</th>
17683 <th class="th_units">Units</th>
17684 <th class="th_range">Range</th>
17685 <th class="th_hal_version">Initial HIDL HAL version</th>
17686 <th class="th_tags">Tags</th>
17701 <tr class="entry" id="dynamic_android.request.frameCount">
17702 <td class="entry_name
17703 entry_name_deprecated
17705 android.<wbr/>request.<wbr/>frame<wbr/>Count
17707 <td class="entry_type">
17708 <span class="entry_type_name">int32</span>
17710 <span class="entry_type_visibility"> [hidden]</span>
17714 <span class="entry_type_deprecated">[deprecated] </span>
17718 </td> <!-- entry_type -->
17720 <td class="entry_description">
17721 <p>A frame counter set by the framework.<wbr/> This value monotonically
17722 increases with every new result (that is,<wbr/> each new result has a unique
17723 frameCount value).<wbr/></p>
17726 <td class="entry_units">
17730 <td class="entry_range">
17731 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
17735 <td class="entry_hal_version">
17739 <td class="entry_tags">
17743 <tr class="entries_header">
17744 <th class="th_details" colspan="6">Details</th>
17746 <tr class="entry_cont">
17747 <td class="entry_details" colspan="6">
17748 <p>Reset on release()</p>
17753 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17754 <!-- end of entry -->
17757 <tr class="entry" id="dynamic_android.request.id">
17758 <td class="entry_name
17760 android.<wbr/>request.<wbr/>id
17762 <td class="entry_type">
17763 <span class="entry_type_name">int32</span>
17765 <span class="entry_type_visibility"> [hidden]</span>
17772 </td> <!-- entry_type -->
17774 <td class="entry_description">
17775 <p>An application-specified ID for the current
17776 request.<wbr/> Must be maintained unchanged in output
17780 <td class="entry_units">
17781 arbitrary integer assigned by application
17784 <td class="entry_range">
17788 <td class="entry_hal_version">
17792 <td class="entry_tags">
17793 <ul class="entry_tags">
17794 <li><a href="#tag_V1">V1</a></li>
17801 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17802 <!-- end of entry -->
17805 <tr class="entry" id="dynamic_android.request.metadataMode">
17806 <td class="entry_name
17808 android.<wbr/>request.<wbr/>metadata<wbr/>Mode
17810 <td class="entry_type">
17811 <span class="entry_type_name entry_type_name_enum">byte</span>
17813 <span class="entry_type_visibility"> [system]</span>
17819 <ul class="entry_type_enum">
17821 <span class="entry_type_enum_name">NONE (v3.2)</span>
17822 <span class="entry_type_enum_notes"><p>No metadata should be produced on output,<wbr/> except
17823 for application-bound buffer data.<wbr/> If no
17824 application-bound streams exist,<wbr/> no frame should be
17825 placed in the output frame queue.<wbr/> If such streams
17826 exist,<wbr/> a frame should be placed on the output queue
17827 with null metadata but with the necessary output buffer
17828 information.<wbr/> Timestamp information should still be
17829 included with any output stream buffers</p></span>
17832 <span class="entry_type_enum_name">FULL (v3.2)</span>
17833 <span class="entry_type_enum_notes"><p>All metadata should be produced.<wbr/> Statistics will
17834 only be produced if they are separately
17839 </td> <!-- entry_type -->
17841 <td class="entry_description">
17842 <p>How much metadata to produce on
17846 <td class="entry_units">
17849 <td class="entry_range">
17852 <td class="entry_hal_version">
17856 <td class="entry_tags">
17857 <ul class="entry_tags">
17858 <li><a href="#tag_FUTURE">FUTURE</a></li>
17865 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17866 <!-- end of entry -->
17869 <tr class="entry" id="dynamic_android.request.outputStreams">
17870 <td class="entry_name
17871 entry_name_deprecated
17873 android.<wbr/>request.<wbr/>output<wbr/>Streams
17875 <td class="entry_type">
17876 <span class="entry_type_name">int32</span>
17877 <span class="entry_type_container">x</span>
17879 <span class="entry_type_array">
17882 <span class="entry_type_visibility"> [system]</span>
17886 <span class="entry_type_deprecated">[deprecated] </span>
17890 </td> <!-- entry_type -->
17892 <td class="entry_description">
17893 <p>Lists which camera output streams image data
17894 from this capture must be sent to</p>
17897 <td class="entry_units">
17898 List of camera stream IDs
17901 <td class="entry_range">
17902 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
17903 <p>List must only include streams that have been
17907 <td class="entry_hal_version">
17911 <td class="entry_tags">
17912 <ul class="entry_tags">
17913 <li><a href="#tag_HAL2">HAL2</a></li>
17918 <tr class="entries_header">
17919 <th class="th_details" colspan="6">Details</th>
17921 <tr class="entry_cont">
17922 <td class="entry_details" colspan="6">
17923 <p>If no output streams are listed,<wbr/> then the image
17924 data should simply be discarded.<wbr/> The image data must
17925 still be captured for metadata and statistics production,<wbr/>
17926 and the lens and flash must operate as requested.<wbr/></p>
17931 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17932 <!-- end of entry -->
17935 <tr class="entry" id="dynamic_android.request.pipelineDepth">
17936 <td class="entry_name
17938 android.<wbr/>request.<wbr/>pipeline<wbr/>Depth
17940 <td class="entry_type">
17941 <span class="entry_type_name">byte</span>
17943 <span class="entry_type_visibility"> [public]</span>
17946 <span class="entry_type_hwlevel">[legacy] </span>
17951 </td> <!-- entry_type -->
17953 <td class="entry_description">
17954 <p>Specifies the number of pipeline stages the frame went
17955 through from when it was exposed to when the final completed result
17956 was available to the framework.<wbr/></p>
17959 <td class="entry_units">
17962 <td class="entry_range">
17963 <p><= <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a></p>
17966 <td class="entry_hal_version">
17970 <td class="entry_tags">
17974 <tr class="entries_header">
17975 <th class="th_details" colspan="6">Details</th>
17977 <tr class="entry_cont">
17978 <td class="entry_details" colspan="6">
17979 <p>Depending on what settings are used in the request,<wbr/> and
17980 what streams are configured,<wbr/> the data may undergo less processing,<wbr/>
17981 and some pipeline stages skipped.<wbr/></p>
17982 <p>See <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a> for more details.<wbr/></p>
17986 <tr class="entries_header">
17987 <th class="th_details" colspan="6">HAL Implementation Details</th>
17989 <tr class="entry_cont">
17990 <td class="entry_details" colspan="6">
17991 <p>This value must always represent the accurate count of how many
17992 pipeline stages were actually used.<wbr/></p>
17996 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17997 <!-- end of entry -->
18001 <!-- end of kind -->
18004 <!-- end of section -->
18005 <tr><td colspan="7" id="section_scaler" class="section">scaler</td></tr>
18008 <tr><td colspan="7" class="kind">controls</td></tr>
18010 <thead class="entries_header">
18012 <th class="th_name">Property Name</th>
18013 <th class="th_type">Type</th>
18014 <th class="th_description">Description</th>
18015 <th class="th_units">Units</th>
18016 <th class="th_range">Range</th>
18017 <th class="th_hal_version">Initial HIDL HAL version</th>
18018 <th class="th_tags">Tags</th>
18033 <tr class="entry" id="controls_android.scaler.cropRegion">
18034 <td class="entry_name
18036 android.<wbr/>scaler.<wbr/>crop<wbr/>Region
18038 <td class="entry_type">
18039 <span class="entry_type_name">int32</span>
18040 <span class="entry_type_container">x</span>
18042 <span class="entry_type_array">
18045 <span class="entry_type_visibility"> [public as rectangle]</span>
18048 <span class="entry_type_hwlevel">[legacy] </span>
18053 </td> <!-- entry_type -->
18055 <td class="entry_description">
18056 <p>The desired region of the sensor to read out for this capture.<wbr/></p>
18059 <td class="entry_units">
18060 Pixel coordinates relative to
18061 android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
18064 <td class="entry_range">
18067 <td class="entry_hal_version">
18071 <td class="entry_tags">
18072 <ul class="entry_tags">
18073 <li><a href="#tag_BC">BC</a></li>
18078 <tr class="entries_header">
18079 <th class="th_details" colspan="6">Details</th>
18081 <tr class="entry_cont">
18082 <td class="entry_details" colspan="6">
18083 <p>This control can be used to implement digital zoom.<wbr/></p>
18084 <p>The crop region coordinate system is based off
18085 <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
18086 top-left corner of the sensor active array.<wbr/></p>
18087 <p>Output streams use this rectangle to produce their output,<wbr/>
18088 cropping to a smaller region if necessary to maintain the
18089 stream's aspect ratio,<wbr/> then scaling the sensor input to
18090 match the output's configured resolution.<wbr/></p>
18091 <p>The crop region is applied after the RAW to other color
18092 space (e.<wbr/>g.<wbr/> YUV) conversion.<wbr/> Since raw streams
18093 (e.<wbr/>g.<wbr/> RAW16) don't have the conversion stage,<wbr/> they are not
18094 croppable.<wbr/> The crop region will be ignored by raw streams.<wbr/></p>
18095 <p>For non-raw streams,<wbr/> any additional per-stream cropping will
18096 be done to maximize the final pixel area of the stream.<wbr/></p>
18097 <p>For example,<wbr/> if the crop region is set to a 4:3 aspect
18098 ratio,<wbr/> then 4:3 streams will use the exact crop
18099 region.<wbr/> 16:9 streams will further crop vertically
18100 (letterbox).<wbr/></p>
18101 <p>Conversely,<wbr/> if the crop region is set to a 16:9,<wbr/> then 4:3
18102 outputs will crop horizontally (pillarbox),<wbr/> and 16:9
18103 streams will match exactly.<wbr/> These additional crops will
18104 be centered within the crop region.<wbr/></p>
18105 <p>The width and height of the crop region cannot
18106 be set to be smaller than
18107 <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
18108 <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>
18109 <p>The camera device may adjust the crop region to account
18110 for rounding and other hardware requirements; the final
18111 crop region used will be included in the output capture
18116 <tr class="entries_header">
18117 <th class="th_details" colspan="6">HAL Implementation Details</th>
18119 <tr class="entry_cont">
18120 <td class="entry_details" colspan="6">
18121 <p>The output streams must maintain square pixels at all
18122 times,<wbr/> no matter what the relative aspect ratios of the
18123 crop region and the stream are.<wbr/> Negative values for
18124 corner are allowed for raw output if full pixel array is
18125 larger than active pixel array.<wbr/> Width and height may be
18126 rounded to nearest larger supportable width,<wbr/> especially
18127 for raw output,<wbr/> where only a few fixed scales may be
18128 possible.<wbr/></p>
18129 <p>For a set of output streams configured,<wbr/> if the sensor output is cropped to a smaller
18130 size than active array size,<wbr/> the HAL need follow below cropping rules:</p>
18133 <p>The HAL need handle the cropRegion as if the sensor crop size is the effective active
18134 array size.<wbr/>More specifically,<wbr/> the HAL must transform the request cropRegion from
18135 <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>
18137 <li>Translate the requested cropRegion w.<wbr/>r.<wbr/>t.,<wbr/> the left top corner of the sensor
18138 cropped pixel area by (tx,<wbr/> ty),<wbr/>
18139 where <code>tx = sensorCrop.<wbr/>top * (sensorCrop.<wbr/>height /<wbr/> activeArraySize.<wbr/>height)</code>
18140 and <code>tx = sensorCrop.<wbr/>left * (sensorCrop.<wbr/>width /<wbr/> activeArraySize.<wbr/>width)</code>.<wbr/> The
18141 (sensorCrop.<wbr/>top,<wbr/> sensorCrop.<wbr/>left) is the coordinate based off the
18142 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></li>
18143 <li>Scale the width and height of requested cropRegion with scaling factor of
18144 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
18145 respectively.<wbr/>
18146 Once this new cropRegion is calculated,<wbr/> the HAL must use this region to crop the image
18147 with regard to the sensor crop size (effective active array size).<wbr/> The HAL still need
18148 follow the general cropping rule for this new cropRegion and effective active
18149 array size.<wbr/></li>
18153 <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/>
18154 The HAL need convert the new cropRegion generated above w.<wbr/>r.<wbr/>t.,<wbr/> full active array size.<wbr/>
18155 The reported cropRegion may be slightly different with the requested cropRegion since
18156 the HAL may adjust the crop region to account for rounding,<wbr/> conversion error,<wbr/> or other
18157 hardware limitations.<wbr/></p>
18160 <p>HAL2.<wbr/>x uses only (x,<wbr/> y,<wbr/> width)</p>
18164 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18165 <!-- end of entry -->
18169 <!-- end of kind -->
18171 <tr><td colspan="7" class="kind">static</td></tr>
18173 <thead class="entries_header">
18175 <th class="th_name">Property Name</th>
18176 <th class="th_type">Type</th>
18177 <th class="th_description">Description</th>
18178 <th class="th_units">Units</th>
18179 <th class="th_range">Range</th>
18180 <th class="th_hal_version">Initial HIDL HAL version</th>
18181 <th class="th_tags">Tags</th>
18196 <tr class="entry" id="static_android.scaler.availableFormats">
18197 <td class="entry_name
18198 entry_name_deprecated
18200 android.<wbr/>scaler.<wbr/>available<wbr/>Formats
18202 <td class="entry_type">
18203 <span class="entry_type_name entry_type_name_enum">int32</span>
18204 <span class="entry_type_container">x</span>
18206 <span class="entry_type_array">
18209 <span class="entry_type_visibility"> [hidden as imageFormat]</span>
18213 <span class="entry_type_deprecated">[deprecated] </span>
18216 <ul class="entry_type_enum">
18218 <span class="entry_type_enum_name">RAW16 (v3.2)</span>
18219 <span class="entry_type_enum_optional">[optional]</span>
18220 <span class="entry_type_enum_value">0x20</span>
18221 <span class="entry_type_enum_notes"><p>RAW16 is a standard,<wbr/> cross-platform format for raw image
18222 buffers with 16-bit pixels.<wbr/></p>
18223 <p>Buffers of this format are typically expected to have a
18224 Bayer Color Filter Array (CFA) layout,<wbr/> which is given in
18225 <a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a>.<wbr/> Sensors with
18226 CFAs that are not representable by a format in
18227 <a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a> should not
18228 use this format.<wbr/></p>
18229 <p>Buffers of this format will also follow the constraints given for
18230 RAW_<wbr/>OPAQUE buffers,<wbr/> but with relaxed performance constraints.<wbr/></p>
18231 <p>This format is intended to give users access to the full contents
18232 of the buffers coming directly from the image sensor prior to any
18233 cropping or scaling operations,<wbr/> and all coordinate systems for
18234 metadata used for this format are relative to the size of the
18235 active region of the image sensor before any geometric distortion
18236 correction has been applied (i.<wbr/>e.<wbr/>
18237 <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
18238 dimensions for this format are limited to the full dimensions of
18239 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
18240 <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
18241 only supported output size).<wbr/></p>
18242 <p>See <a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a> for
18243 the full set of performance guarantees.<wbr/></p></span>
18246 <span class="entry_type_enum_name">RAW_OPAQUE (v3.2)</span>
18247 <span class="entry_type_enum_optional">[optional]</span>
18248 <span class="entry_type_enum_value">0x24</span>
18249 <span class="entry_type_enum_notes"><p>RAW_<wbr/>OPAQUE (or
18250 <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_PRIVATE">RAW_<wbr/>PRIVATE</a>
18251 as referred in public API) is a format for raw image buffers
18252 coming from an image sensor.<wbr/></p>
18253 <p>The actual structure of buffers of this format is
18254 platform-specific,<wbr/> but must follow several constraints:</p>
18256 <li>No image post-processing operations may have been applied to
18257 buffers of this type.<wbr/> These buffers contain raw image data coming
18258 directly from the image sensor.<wbr/></li>
18259 <li>If a buffer of this format is passed to the camera device for
18260 reprocessing,<wbr/> the resulting images will be identical to the images
18261 produced if the buffer had come directly from the sensor and was
18262 processed with the same settings.<wbr/></li>
18264 <p>The intended use for this format is to allow access to the native
18265 raw format buffers coming directly from the camera sensor without
18266 any additional conversions or decrease in framerate.<wbr/></p>
18267 <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
18268 performance guarantees.<wbr/></p></span>
18271 <span class="entry_type_enum_name">YV12 (v3.2)</span>
18272 <span class="entry_type_enum_optional">[optional]</span>
18273 <span class="entry_type_enum_value">0x32315659</span>
18274 <span class="entry_type_enum_notes"><p>YCrCb 4:2:0 Planar</p></span>
18277 <span class="entry_type_enum_name">YCrCb_420_SP (v3.2)</span>
18278 <span class="entry_type_enum_optional">[optional]</span>
18279 <span class="entry_type_enum_value">0x11</span>
18280 <span class="entry_type_enum_notes"><p>NV21</p></span>
18283 <span class="entry_type_enum_name">IMPLEMENTATION_DEFINED (v3.2)</span>
18284 <span class="entry_type_enum_value">0x22</span>
18285 <span class="entry_type_enum_notes"><p>System internal format,<wbr/> not application-accessible</p></span>
18288 <span class="entry_type_enum_name">YCbCr_420_888 (v3.2)</span>
18289 <span class="entry_type_enum_value">0x23</span>
18290 <span class="entry_type_enum_notes"><p>Flexible YUV420 Format</p></span>
18293 <span class="entry_type_enum_name">BLOB (v3.2)</span>
18294 <span class="entry_type_enum_value">0x21</span>
18295 <span class="entry_type_enum_notes"><p>JPEG format</p></span>
18299 </td> <!-- entry_type -->
18301 <td class="entry_description">
18302 <p>The list of image formats that are supported by this
18303 camera device for output streams.<wbr/></p>
18306 <td class="entry_units">
18309 <td class="entry_range">
18310 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
18313 <td class="entry_hal_version">
18317 <td class="entry_tags">
18318 <ul class="entry_tags">
18319 <li><a href="#tag_BC">BC</a></li>
18324 <tr class="entries_header">
18325 <th class="th_details" colspan="6">Details</th>
18327 <tr class="entry_cont">
18328 <td class="entry_details" colspan="6">
18329 <p>All camera devices will support JPEG and YUV_<wbr/>420_<wbr/>888 formats.<wbr/></p>
18330 <p>When set to YUV_<wbr/>420_<wbr/>888,<wbr/> application can access the YUV420 data directly.<wbr/></p>
18334 <tr class="entries_header">
18335 <th class="th_details" colspan="6">HAL Implementation Details</th>
18337 <tr class="entry_cont">
18338 <td class="entry_details" colspan="6">
18339 <p>These format values are from HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>* in
18340 system/<wbr/>core/<wbr/>include/<wbr/>system/<wbr/>graphics.<wbr/>h.<wbr/></p>
18341 <p>When IMPLEMENTATION_<wbr/>DEFINED is used,<wbr/> the platform
18342 gralloc module will select a format based on the usage flags provided
18343 by the camera HAL device and the other endpoint of the stream.<wbr/> It is
18344 usually used by preview and recording streams,<wbr/> where the application doesn't
18345 need access the image data.<wbr/></p>
18346 <p>YCb<wbr/>Cr_<wbr/>420_<wbr/>888 format must be supported by the HAL.<wbr/> When an image stream
18347 needs CPU/<wbr/>application direct access,<wbr/> this format will be used.<wbr/></p>
18348 <p>The BLOB format must be supported by the HAL.<wbr/> This is used for the JPEG stream.<wbr/></p>
18349 <p>A RAW_<wbr/>OPAQUE buffer should contain only pixel data.<wbr/> It is strongly
18350 recommended that any information used by the camera device when
18351 processing images is fully expressed by the result metadata
18352 for that image buffer.<wbr/></p>
18356 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18357 <!-- end of entry -->
18360 <tr class="entry" id="static_android.scaler.availableJpegMinDurations">
18361 <td class="entry_name
18362 entry_name_deprecated
18364 android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Min<wbr/>Durations
18366 <td class="entry_type">
18367 <span class="entry_type_name">int64</span>
18368 <span class="entry_type_container">x</span>
18370 <span class="entry_type_array">
18373 <span class="entry_type_visibility"> [hidden]</span>
18377 <span class="entry_type_deprecated">[deprecated] </span>
18381 </td> <!-- entry_type -->
18383 <td class="entry_description">
18384 <p>The minimum frame duration that is supported
18385 for each resolution in <a href="#static_android.scaler.availableJpegSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes</a>.<wbr/></p>
18388 <td class="entry_units">
18392 <td class="entry_range">
18393 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
18394 <p>TODO: Remove property.<wbr/></p>
18397 <td class="entry_hal_version">
18401 <td class="entry_tags">
18402 <ul class="entry_tags">
18403 <li><a href="#tag_BC">BC</a></li>
18408 <tr class="entries_header">
18409 <th class="th_details" colspan="6">Details</th>
18411 <tr class="entry_cont">
18412 <td class="entry_details" colspan="6">
18413 <p>This corresponds to the minimum steady-state frame duration when only
18414 that JPEG stream is active and captured in a burst,<wbr/> with all
18415 processing (typically in android.<wbr/>*.<wbr/>mode) set to FAST.<wbr/></p>
18416 <p>When multiple streams are configured,<wbr/> the minimum
18417 frame duration will be >= max(individual stream min
18423 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18424 <!-- end of entry -->
18427 <tr class="entry" id="static_android.scaler.availableJpegSizes">
18428 <td class="entry_name
18429 entry_name_deprecated
18431 android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes
18433 <td class="entry_type">
18434 <span class="entry_type_name">int32</span>
18435 <span class="entry_type_container">x</span>
18437 <span class="entry_type_array">
18440 <span class="entry_type_visibility"> [hidden as size]</span>
18444 <span class="entry_type_deprecated">[deprecated] </span>
18448 </td> <!-- entry_type -->
18450 <td class="entry_description">
18451 <p>The JPEG resolutions that are supported by this camera device.<wbr/></p>
18454 <td class="entry_units">
18457 <td class="entry_range">
18458 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
18459 <p>TODO: Remove property.<wbr/></p>
18462 <td class="entry_hal_version">
18466 <td class="entry_tags">
18467 <ul class="entry_tags">
18468 <li><a href="#tag_BC">BC</a></li>
18473 <tr class="entries_header">
18474 <th class="th_details" colspan="6">Details</th>
18476 <tr class="entry_cont">
18477 <td class="entry_details" colspan="6">
18478 <p>The resolutions are listed as <code>(width,<wbr/> height)</code> pairs.<wbr/> All camera devices will support
18479 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>
18483 <tr class="entries_header">
18484 <th class="th_details" colspan="6">HAL Implementation Details</th>
18486 <tr class="entry_cont">
18487 <td class="entry_details" colspan="6">
18488 <p>The HAL must include sensor maximum resolution
18489 (defined by <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>),<wbr/>
18490 and should include half/<wbr/>quarter of sensor maximum resolution.<wbr/></p>
18494 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18495 <!-- end of entry -->
18498 <tr class="entry" id="static_android.scaler.availableMaxDigitalZoom">
18499 <td class="entry_name
18501 android.<wbr/>scaler.<wbr/>available<wbr/>Max<wbr/>Digital<wbr/>Zoom
18503 <td class="entry_type">
18504 <span class="entry_type_name">float</span>
18506 <span class="entry_type_visibility"> [public]</span>
18509 <span class="entry_type_hwlevel">[legacy] </span>
18514 </td> <!-- entry_type -->
18516 <td class="entry_description">
18517 <p>The maximum ratio between both active area width
18518 and crop region width,<wbr/> and active area height and
18519 crop region height,<wbr/> for <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></p>
18522 <td class="entry_units">
18526 <td class="entry_range">
18530 <td class="entry_hal_version">
18534 <td class="entry_tags">
18535 <ul class="entry_tags">
18536 <li><a href="#tag_BC">BC</a></li>
18541 <tr class="entries_header">
18542 <th class="th_details" colspan="6">Details</th>
18544 <tr class="entry_cont">
18545 <td class="entry_details" colspan="6">
18546 <p>This represents the maximum amount of zooming possible by
18547 the camera device,<wbr/> or equivalently,<wbr/> the minimum cropping
18548 window size.<wbr/></p>
18549 <p>Crop regions that have a width or height that is smaller
18550 than this ratio allows will be rounded up to the minimum
18551 allowed size by the camera device.<wbr/></p>
18556 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18557 <!-- end of entry -->
18560 <tr class="entry" id="static_android.scaler.availableProcessedMinDurations">
18561 <td class="entry_name
18562 entry_name_deprecated
18564 android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Min<wbr/>Durations
18566 <td class="entry_type">
18567 <span class="entry_type_name">int64</span>
18568 <span class="entry_type_container">x</span>
18570 <span class="entry_type_array">
18573 <span class="entry_type_visibility"> [hidden]</span>
18577 <span class="entry_type_deprecated">[deprecated] </span>
18581 </td> <!-- entry_type -->
18583 <td class="entry_description">
18584 <p>For each available processed output size (defined in
18585 <a href="#static_android.scaler.availableProcessedSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Sizes</a>),<wbr/> this property lists the
18586 minimum supportable frame duration for that size.<wbr/></p>
18589 <td class="entry_units">
18593 <td class="entry_range">
18594 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
18597 <td class="entry_hal_version">
18601 <td class="entry_tags">
18602 <ul class="entry_tags">
18603 <li><a href="#tag_BC">BC</a></li>
18608 <tr class="entries_header">
18609 <th class="th_details" colspan="6">Details</th>
18611 <tr class="entry_cont">
18612 <td class="entry_details" colspan="6">
18613 <p>This should correspond to the frame duration when only that processed
18614 stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode)
18615 set to FAST.<wbr/></p>
18616 <p>When multiple streams are configured,<wbr/> the minimum frame duration will
18617 be >= max(individual stream min durations).<wbr/></p>
18622 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18623 <!-- end of entry -->
18626 <tr class="entry" id="static_android.scaler.availableProcessedSizes">
18627 <td class="entry_name
18628 entry_name_deprecated
18630 android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Sizes
18632 <td class="entry_type">
18633 <span class="entry_type_name">int32</span>
18634 <span class="entry_type_container">x</span>
18636 <span class="entry_type_array">
18639 <span class="entry_type_visibility"> [hidden as size]</span>
18643 <span class="entry_type_deprecated">[deprecated] </span>
18647 </td> <!-- entry_type -->
18649 <td class="entry_description">
18650 <p>The resolutions available for use with
18651 processed output streams,<wbr/> such as YV12,<wbr/> NV12,<wbr/> and
18652 platform opaque YUV/<wbr/>RGB streams to the GPU or video
18653 encoders.<wbr/></p>
18656 <td class="entry_units">
18659 <td class="entry_range">
18660 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
18663 <td class="entry_hal_version">
18667 <td class="entry_tags">
18668 <ul class="entry_tags">
18669 <li><a href="#tag_BC">BC</a></li>
18674 <tr class="entries_header">
18675 <th class="th_details" colspan="6">Details</th>
18677 <tr class="entry_cont">
18678 <td class="entry_details" colspan="6">
18679 <p>The resolutions are listed as <code>(width,<wbr/> height)</code> pairs.<wbr/></p>
18680 <p>For a given use case,<wbr/> the actual maximum supported resolution
18681 may be lower than what is listed here,<wbr/> depending on the destination
18682 Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/>
18683 the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p)
18684 smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448)
18685 can provide.<wbr/></p>
18686 <p>Please reference the documentation for the image data destination to
18687 check if it limits the maximum size for image data.<wbr/></p>
18691 <tr class="entries_header">
18692 <th class="th_details" colspan="6">HAL Implementation Details</th>
18694 <tr class="entry_cont">
18695 <td class="entry_details" colspan="6">
18696 <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/>
18697 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>
18698 and each below resolution if it is smaller than or equal to the sensor
18699 maximum resolution (if they are not listed in JPEG sizes already):</p>
18701 <li>240p (320 x 240)</li>
18702 <li>480p (640 x 480)</li>
18703 <li>720p (1280 x 720)</li>
18704 <li>1080p (1920 x 1080)</li>
18706 <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/>
18707 the HAL only has to list up to the maximum video size supported by the devices.<wbr/></p>
18711 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18712 <!-- end of entry -->
18715 <tr class="entry" id="static_android.scaler.availableRawMinDurations">
18716 <td class="entry_name
18717 entry_name_deprecated
18719 android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Min<wbr/>Durations
18721 <td class="entry_type">
18722 <span class="entry_type_name">int64</span>
18723 <span class="entry_type_container">x</span>
18725 <span class="entry_type_array">
18728 <span class="entry_type_visibility"> [system]</span>
18732 <span class="entry_type_deprecated">[deprecated] </span>
18736 </td> <!-- entry_type -->
18738 <td class="entry_description">
18739 <p>For each available raw output size (defined in
18740 <a href="#static_android.scaler.availableRawSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Sizes</a>),<wbr/> this property lists the minimum
18741 supportable frame duration for that size.<wbr/></p>
18744 <td class="entry_units">
18748 <td class="entry_range">
18749 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
18752 <td class="entry_hal_version">
18756 <td class="entry_tags">
18757 <ul class="entry_tags">
18758 <li><a href="#tag_BC">BC</a></li>
18763 <tr class="entries_header">
18764 <th class="th_details" colspan="6">Details</th>
18766 <tr class="entry_cont">
18767 <td class="entry_details" colspan="6">
18768 <p>Should correspond to the frame duration when only the raw stream is
18770 <p>When multiple streams are configured,<wbr/> the minimum
18771 frame duration will be >= max(individual stream min
18777 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18778 <!-- end of entry -->
18781 <tr class="entry" id="static_android.scaler.availableRawSizes">
18782 <td class="entry_name
18783 entry_name_deprecated
18785 android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Sizes
18787 <td class="entry_type">
18788 <span class="entry_type_name">int32</span>
18789 <span class="entry_type_container">x</span>
18791 <span class="entry_type_array">
18794 <span class="entry_type_visibility"> [system as size]</span>
18798 <span class="entry_type_deprecated">[deprecated] </span>
18802 </td> <!-- entry_type -->
18804 <td class="entry_description">
18805 <p>The resolutions available for use with raw
18806 sensor output streams,<wbr/> listed as width,<wbr/>
18810 <td class="entry_units">
18813 <td class="entry_range">
18814 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
18817 <td class="entry_hal_version">
18821 <td class="entry_tags">
18827 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18828 <!-- end of entry -->
18831 <tr class="entry" id="static_android.scaler.availableInputOutputFormatsMap">
18832 <td class="entry_name
18834 android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map
18836 <td class="entry_type">
18837 <span class="entry_type_name">int32</span>
18839 <span class="entry_type_visibility"> [hidden as reprocessFormatsMap]</span>
18846 </td> <!-- entry_type -->
18848 <td class="entry_description">
18849 <p>The mapping of image formats that are supported by this
18850 camera device for input streams,<wbr/> to their corresponding output formats.<wbr/></p>
18853 <td class="entry_units">
18856 <td class="entry_range">
18859 <td class="entry_hal_version">
18863 <td class="entry_tags">
18864 <ul class="entry_tags">
18865 <li><a href="#tag_REPROC">REPROC</a></li>
18870 <tr class="entries_header">
18871 <th class="th_details" colspan="6">Details</th>
18873 <tr class="entry_cont">
18874 <td class="entry_details" colspan="6">
18875 <p>All camera devices with at least 1
18876 <a href="#static_android.request.maxNumInputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Input<wbr/>Streams</a> will have at least one
18877 available input format.<wbr/></p>
18878 <p>The camera device will support the following map of formats,<wbr/>
18879 if its dependent capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>) is supported:</p>
18883 <th align="left">Input Format</th>
18884 <th align="left">Output Format</th>
18885 <th align="left">Capability</th>
18890 <td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td>
18891 <td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
18892 <td align="left">PRIVATE_<wbr/>REPROCESSING</td>
18895 <td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td>
18896 <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>
18897 <td align="left">PRIVATE_<wbr/>REPROCESSING</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"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
18902 <td align="left">YUV_<wbr/>REPROCESSING</td>
18905 <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>
18906 <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>
18907 <td align="left">YUV_<wbr/>REPROCESSING</td>
18911 <p>PRIVATE refers to a device-internal format that is not directly application-visible.<wbr/> A
18912 PRIVATE input surface can be acquired by <a href="https://developer.android.com/reference/android/media/ImageReader.html#newInstance">ImageReader#newInstance</a>
18913 with <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> as the format.<wbr/></p>
18914 <p>For a PRIVATE_<wbr/>REPROCESSING-capable camera device,<wbr/> using the PRIVATE format as either input
18915 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>
18916 <p>Attempting to configure an input stream with output streams not
18917 listed as available in this map is not valid.<wbr/></p>
18921 <tr class="entries_header">
18922 <th class="th_details" colspan="6">HAL Implementation Details</th>
18924 <tr class="entry_cont">
18925 <td class="entry_details" colspan="6">
18926 <p>For the formats,<wbr/> see <code>system/<wbr/>core/<wbr/>include/<wbr/>system/<wbr/>graphics.<wbr/>h</code> for a definition
18927 of the image format enumerations.<wbr/> The PRIVATE format refers to the
18928 HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>IMPLEMENTATION_<wbr/>DEFINED format.<wbr/> The HAL could determine
18929 the actual format by using the gralloc usage flags.<wbr/>
18930 For ZSL use case in particular,<wbr/> the HAL could choose appropriate format (partially
18931 processed YUV or RAW based format) by checking the format and GRALLOC_<wbr/>USAGE_<wbr/>HW_<wbr/>CAMERA_<wbr/>ZSL.<wbr/>
18932 See camera3.<wbr/>h for more details.<wbr/></p>
18933 <p>This value is encoded as a variable-size array-of-arrays.<wbr/>
18934 The inner array always contains <code>[format,<wbr/> length,<wbr/> ...<wbr/>]</code> where
18935 <code>...<wbr/></code> has <code>length</code> elements.<wbr/> An inner array is followed by another
18936 inner array if the total metadata entry size hasn't yet been exceeded.<wbr/></p>
18937 <p>A code sample to read/<wbr/>write this encoding (with a device that
18938 supports reprocessing IMPLEMENTATION_<wbr/>DEFINED to YUV_<wbr/>420_<wbr/>888,<wbr/> and JPEG,<wbr/>
18939 and reprocessing YUV_<wbr/>420_<wbr/>888 to YUV_<wbr/>420_<wbr/>888 and JPEG):</p>
18940 <pre><code>//<wbr/> reading
18941 int32_<wbr/>t* contents = &entry.<wbr/>i32[0];
18942 for (size_<wbr/>t i = 0; i < entry.<wbr/>count; ) {
18943 int32_<wbr/>t format = contents[i++];
18944 int32_<wbr/>t length = contents[i++];
18945 int32_<wbr/>t output_<wbr/>formats[length];
18946 memcpy(&output_<wbr/>formats[0],<wbr/> &contents[i],<wbr/>
18947 length * sizeof(int32_<wbr/>t));
18951 //<wbr/> writing (static example,<wbr/> PRIVATE_<wbr/>REPROCESSING + YUV_<wbr/>REPROCESSING)
18952 int32_<wbr/>t[] contents = {
18953 IMPLEMENTATION_<wbr/>DEFINED,<wbr/> 2,<wbr/> YUV_<wbr/>420_<wbr/>888,<wbr/> BLOB,<wbr/>
18954 YUV_<wbr/>420_<wbr/>888,<wbr/> 2,<wbr/> YUV_<wbr/>420_<wbr/>888,<wbr/> BLOB,<wbr/>
18956 update_<wbr/>camera_<wbr/>metadata_<wbr/>entry(metadata,<wbr/> index,<wbr/> &contents[0],<wbr/>
18957 sizeof(contents)/<wbr/>sizeof(contents[0]),<wbr/> &updated_<wbr/>entry);
18959 <p>If the HAL claims to support any of the capabilities listed in the
18960 above details,<wbr/> then it must also support all the input-output
18961 combinations listed for that capability.<wbr/> It can optionally support
18962 additional formats if it so chooses.<wbr/></p>
18966 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18967 <!-- end of entry -->
18970 <tr class="entry" id="static_android.scaler.availableStreamConfigurations">
18971 <td class="entry_name
18973 android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations
18975 <td class="entry_type">
18976 <span class="entry_type_name entry_type_name_enum">int32</span>
18977 <span class="entry_type_container">x</span>
18979 <span class="entry_type_array">
18982 <span class="entry_type_visibility"> [ndk_public as streamConfiguration]</span>
18985 <span class="entry_type_hwlevel">[legacy] </span>
18989 <ul class="entry_type_enum">
18991 <span class="entry_type_enum_name">OUTPUT (v3.2)</span>
18994 <span class="entry_type_enum_name">INPUT (v3.2)</span>
18998 </td> <!-- entry_type -->
19000 <td class="entry_description">
19001 <p>The available stream configurations that this
19002 camera device supports
19003 (i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p>
19006 <td class="entry_units">
19009 <td class="entry_range">
19012 <td class="entry_hal_version">
19016 <td class="entry_tags">
19020 <tr class="entries_header">
19021 <th class="th_details" colspan="6">Details</th>
19023 <tr class="entry_cont">
19024 <td class="entry_details" colspan="6">
19025 <p>The configurations are listed as <code>(format,<wbr/> width,<wbr/> height,<wbr/> input?)</code>
19027 <p>For a given use case,<wbr/> the actual maximum supported resolution
19028 may be lower than what is listed here,<wbr/> depending on the destination
19029 Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/>
19030 the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p)
19031 smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448)
19032 can provide.<wbr/></p>
19033 <p>Please reference the documentation for the image data destination to
19034 check if it limits the maximum size for image data.<wbr/></p>
19035 <p>Not all output formats may be supported in a configuration with
19036 an input stream of a particular format.<wbr/> For more details,<wbr/> see
19037 <a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a>.<wbr/></p>
19038 <p>The following table describes the minimum required output stream
19039 configurations based on the hardware level
19040 (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>):</p>
19044 <th align="center">Format</th>
19045 <th align="center">Size</th>
19046 <th align="center">Hardware Level</th>
19047 <th align="center">Notes</th>
19052 <td align="center">JPEG</td>
19053 <td align="center"><a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></td>
19054 <td align="center">Any</td>
19055 <td align="center"></td>
19058 <td align="center">JPEG</td>
19059 <td align="center">1920x1080 (1080p)</td>
19060 <td align="center">Any</td>
19061 <td align="center">if 1080p <= activeArraySize</td>
19064 <td align="center">JPEG</td>
19065 <td align="center">1280x720 (720)</td>
19066 <td align="center">Any</td>
19067 <td align="center">if 720p <= activeArraySize</td>
19070 <td align="center">JPEG</td>
19071 <td align="center">640x480 (480p)</td>
19072 <td align="center">Any</td>
19073 <td align="center">if 480p <= activeArraySize</td>
19076 <td align="center">JPEG</td>
19077 <td align="center">320x240 (240p)</td>
19078 <td align="center">Any</td>
19079 <td align="center">if 240p <= activeArraySize</td>
19082 <td align="center">YUV_<wbr/>420_<wbr/>888</td>
19083 <td align="center">all output sizes available for JPEG</td>
19084 <td align="center">FULL</td>
19085 <td align="center"></td>
19088 <td align="center">YUV_<wbr/>420_<wbr/>888</td>
19089 <td align="center">all output sizes available for JPEG,<wbr/> up to the maximum video size</td>
19090 <td align="center">LIMITED</td>
19091 <td align="center"></td>
19094 <td align="center">IMPLEMENTATION_<wbr/>DEFINED</td>
19095 <td align="center">same as YUV_<wbr/>420_<wbr/>888</td>
19096 <td align="center">Any</td>
19097 <td align="center"></td>
19101 <p>Refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> for additional
19102 mandatory stream configurations on a per-capability basis.<wbr/></p>
19106 <tr class="entries_header">
19107 <th class="th_details" colspan="6">HAL Implementation Details</th>
19109 <tr class="entry_cont">
19110 <td class="entry_details" colspan="6">
19111 <p>It is recommended (but not mandatory) to also include half/<wbr/>quarter
19112 of sensor maximum resolution for JPEG formats (regardless of hardware
19114 <p>(The following is a rewording of the above required table):</p>
19115 <p>For JPEG format,<wbr/> the sizes may be restricted by below conditions:</p>
19117 <li>The HAL may choose the aspect ratio of each Jpeg size to be one of well known ones
19118 (e.<wbr/>g.<wbr/> 4:3,<wbr/> 16:9,<wbr/> 3:2 etc.<wbr/>).<wbr/> If the sensor maximum resolution
19119 (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/>
19120 it does not have to be included in the supported JPEG sizes.<wbr/></li>
19121 <li>Some hardware JPEG encoders may have pixel boundary alignment requirements,<wbr/> such as
19122 the dimensions being a multiple of 16.<wbr/></li>
19124 <p>Therefore,<wbr/> the maximum JPEG size may be smaller than sensor maximum resolution.<wbr/>
19125 However,<wbr/> the largest JPEG size must be as close as possible to the sensor maximum
19126 resolution given above constraints.<wbr/> It is required that after aspect ratio adjustments,<wbr/>
19127 additional size reduction due to other issues must be less than 3% in area.<wbr/> For example,<wbr/>
19128 if the sensor maximum resolution is 3280x2464,<wbr/> if the maximum JPEG size has aspect
19129 ratio 4:3,<wbr/> the JPEG encoder alignment requirement is 16,<wbr/> the maximum JPEG size will be
19130 3264x2448.<wbr/></p>
19131 <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/>
19132 the HAL must include all YUV_<wbr/>420_<wbr/>888 sizes that have JPEG sizes listed
19133 here as output streams.<wbr/></p>
19134 <p>It must also include each below resolution if it is smaller than or
19135 equal to the sensor maximum resolution (for both YUV_<wbr/>420_<wbr/>888 and JPEG
19136 formats),<wbr/> as output streams:</p>
19138 <li>240p (320 x 240)</li>
19139 <li>480p (640 x 480)</li>
19140 <li>720p (1280 x 720)</li>
19141 <li>1080p (1920 x 1080)</li>
19143 <p>For LIMITED capability devices
19144 (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == LIMITED</code>),<wbr/>
19145 the HAL only has to list up to the maximum video size
19146 supported by the device.<wbr/></p>
19147 <p>Regardless of hardware level,<wbr/> every output resolution available for
19148 YUV_<wbr/>420_<wbr/>888 must also be available for IMPLEMENTATION_<wbr/>DEFINED.<wbr/></p>
19149 <p>This supercedes the following fields,<wbr/> which are now deprecated:</p>
19151 <li>availableFormats</li>
19152 <li>available[Processed,<wbr/>Raw,<wbr/>Jpeg]Sizes</li>
19157 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19158 <!-- end of entry -->
19161 <tr class="entry" id="static_android.scaler.availableMinFrameDurations">
19162 <td class="entry_name
19164 android.<wbr/>scaler.<wbr/>available<wbr/>Min<wbr/>Frame<wbr/>Durations
19166 <td class="entry_type">
19167 <span class="entry_type_name">int64</span>
19168 <span class="entry_type_container">x</span>
19170 <span class="entry_type_array">
19173 <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
19176 <span class="entry_type_hwlevel">[legacy] </span>
19181 </td> <!-- entry_type -->
19183 <td class="entry_description">
19184 <p>This lists the minimum frame duration for each
19185 format/<wbr/>size combination.<wbr/></p>
19188 <td class="entry_units">
19189 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
19192 <td class="entry_range">
19195 <td class="entry_hal_version">
19199 <td class="entry_tags">
19200 <ul class="entry_tags">
19201 <li><a href="#tag_V1">V1</a></li>
19206 <tr class="entries_header">
19207 <th class="th_details" colspan="6">Details</th>
19209 <tr class="entry_cont">
19210 <td class="entry_details" colspan="6">
19211 <p>This should correspond to the frame duration when only that
19212 stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode)
19213 set to either OFF or FAST.<wbr/></p>
19214 <p>When multiple streams are used in a request,<wbr/> the minimum frame
19215 duration will be max(individual stream min durations).<wbr/></p>
19216 <p>The minimum frame duration of a stream (of a particular format,<wbr/> size)
19217 is the same regardless of whether the stream is input or output.<wbr/></p>
19218 <p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> and
19219 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for more details about
19220 calculating the max frame rate.<wbr/></p>
19225 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19226 <!-- end of entry -->
19229 <tr class="entry" id="static_android.scaler.availableStallDurations">
19230 <td class="entry_name
19232 android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations
19234 <td class="entry_type">
19235 <span class="entry_type_name">int64</span>
19236 <span class="entry_type_container">x</span>
19238 <span class="entry_type_array">
19241 <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
19244 <span class="entry_type_hwlevel">[legacy] </span>
19249 </td> <!-- entry_type -->
19251 <td class="entry_description">
19252 <p>This lists the maximum stall duration for each
19253 output format/<wbr/>size combination.<wbr/></p>
19256 <td class="entry_units">
19257 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
19260 <td class="entry_range">
19263 <td class="entry_hal_version">
19267 <td class="entry_tags">
19268 <ul class="entry_tags">
19269 <li><a href="#tag_V1">V1</a></li>
19274 <tr class="entries_header">
19275 <th class="th_details" colspan="6">Details</th>
19277 <tr class="entry_cont">
19278 <td class="entry_details" colspan="6">
19279 <p>A stall duration is how much extra time would get added
19280 to the normal minimum frame duration for a repeating request
19281 that has streams with non-zero stall.<wbr/></p>
19282 <p>For example,<wbr/> consider JPEG captures which have the following
19283 characteristics:</p>
19285 <li>JPEG streams act like processed YUV streams in requests for which
19286 they are not included; in requests in which they are directly
19287 referenced,<wbr/> they act as JPEG streams.<wbr/> This is because supporting a
19288 JPEG stream requires the underlying YUV data to always be ready for
19289 use by a JPEG encoder,<wbr/> but the encoder will only be used (and impact
19290 frame duration) on requests that actually reference a JPEG stream.<wbr/></li>
19291 <li>The JPEG processor can run concurrently to the rest of the camera
19292 pipeline,<wbr/> but cannot process more than 1 capture at a time.<wbr/></li>
19294 <p>In other words,<wbr/> using a repeating YUV request would result
19295 in a steady frame rate (let's say it's 30 FPS).<wbr/> If a single
19296 JPEG request is submitted periodically,<wbr/> the frame rate will stay
19297 at 30 FPS (as long as we wait for the previous JPEG to return each
19298 time).<wbr/> If we try to submit a repeating YUV + JPEG request,<wbr/> then
19299 the frame rate will drop from 30 FPS.<wbr/></p>
19300 <p>In general,<wbr/> submitting a new request with a non-0 stall time
19301 stream will <em>not</em> cause a frame rate drop unless there are still
19302 outstanding buffers for that stream from previous requests.<wbr/></p>
19303 <p>Submitting a repeating request with streams (call this <code>S</code>)
19304 is the same as setting the minimum frame duration from
19305 the normal minimum frame duration corresponding to <code>S</code>,<wbr/> added with
19306 the maximum stall duration for <code>S</code>.<wbr/></p>
19307 <p>If interleaving requests with and without a stall duration,<wbr/>
19308 a request will stall by the maximum of the remaining times
19309 for each can-stall stream with outstanding buffers.<wbr/></p>
19310 <p>This means that a stalling request will not have an exposure start
19311 until the stall has completed.<wbr/></p>
19312 <p>This should correspond to the stall duration when only that stream is
19313 active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode) set to FAST
19314 or OFF.<wbr/> Setting any of the processing modes to HIGH_<wbr/>QUALITY
19315 effectively results in an indeterminate stall duration for all
19316 streams in a request (the regular stall calculation rules are
19317 ignored).<wbr/></p>
19318 <p>The following formats may always have a stall duration:</p>
19320 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></li>
19321 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_SENSOR">ImageFormat#RAW_<wbr/>SENSOR</a></li>
19323 <p>The following formats will never have a stall duration:</p>
19325 <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>
19326 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW10">ImageFormat#RAW10</a></li>
19327 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW12">ImageFormat#RAW12</a></li>
19329 <p>All other formats may or may not have an allowed stall duration on
19330 a per-capability basis; refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>
19331 for more details.<wbr/></p>
19332 <p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> for more information about
19333 calculating the max frame rate (absent stalls).<wbr/></p>
19337 <tr class="entries_header">
19338 <th class="th_details" colspan="6">HAL Implementation Details</th>
19340 <tr class="entry_cont">
19341 <td class="entry_details" colspan="6">
19342 <p>If possible,<wbr/> it is recommended that all non-JPEG formats
19343 (such as RAW16) should not have a stall duration.<wbr/> RAW10,<wbr/> RAW12,<wbr/> RAW_<wbr/>OPAQUE
19344 and IMPLEMENTATION_<wbr/>DEFINED must not have stall durations.<wbr/></p>
19348 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19349 <!-- end of entry -->
19352 <tr class="entry" id="static_android.scaler.streamConfigurationMap">
19353 <td class="entry_name
19355 android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map
19357 <td class="entry_type">
19358 <span class="entry_type_name">int32</span>
19360 <span class="entry_type_visibility"> [java_public as streamConfigurationMap]</span>
19362 <span class="entry_type_synthetic">[synthetic] </span>
19364 <span class="entry_type_hwlevel">[legacy] </span>
19369 </td> <!-- entry_type -->
19371 <td class="entry_description">
19372 <p>The available stream configurations that this
19373 camera device supports; also includes the minimum frame durations
19374 and the stall durations for each format/<wbr/>size combination.<wbr/></p>
19377 <td class="entry_units">
19380 <td class="entry_range">
19383 <td class="entry_hal_version">
19387 <td class="entry_tags">
19391 <tr class="entries_header">
19392 <th class="th_details" colspan="6">Details</th>
19394 <tr class="entry_cont">
19395 <td class="entry_details" colspan="6">
19396 <p>All camera devices will support sensor maximum resolution (defined by
19397 <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>
19398 <p>For a given use case,<wbr/> the actual maximum supported resolution
19399 may be lower than what is listed here,<wbr/> depending on the destination
19400 Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/>
19401 the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p)
19402 smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448)
19403 can provide.<wbr/></p>
19404 <p>Please reference the documentation for the image data destination to
19405 check if it limits the maximum size for image data.<wbr/></p>
19406 <p>The following table describes the minimum required output stream
19407 configurations based on the hardware level
19408 (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>):</p>
19412 <th align="center">Format</th>
19413 <th align="center">Size</th>
19414 <th align="center">Hardware Level</th>
19415 <th align="center">Notes</th>
19420 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
19421 <td align="center"><a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> (*1)</td>
19422 <td align="center">Any</td>
19423 <td align="center"></td>
19426 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
19427 <td align="center">1920x1080 (1080p)</td>
19428 <td align="center">Any</td>
19429 <td align="center">if 1080p <= activeArraySize</td>
19432 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
19433 <td align="center">1280x720 (720p)</td>
19434 <td align="center">Any</td>
19435 <td align="center">if 720p <= activeArraySize</td>
19438 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
19439 <td align="center">640x480 (480p)</td>
19440 <td align="center">Any</td>
19441 <td align="center">if 480p <= activeArraySize</td>
19444 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
19445 <td align="center">320x240 (240p)</td>
19446 <td align="center">Any</td>
19447 <td align="center">if 240p <= activeArraySize</td>
19450 <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>
19451 <td align="center">all output sizes available for JPEG</td>
19452 <td align="center">FULL</td>
19453 <td align="center"></td>
19456 <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>
19457 <td align="center">all output sizes available for JPEG,<wbr/> up to the maximum video size</td>
19458 <td align="center">LIMITED</td>
19459 <td align="center"></td>
19462 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td>
19463 <td align="center">same as YUV_<wbr/>420_<wbr/>888</td>
19464 <td align="center">Any</td>
19465 <td align="center"></td>
19469 <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
19470 stream configurations on a per-capability basis.<wbr/></p>
19471 <p>*1: For JPEG format,<wbr/> the sizes may be restricted by below conditions:</p>
19473 <li>The HAL may choose the aspect ratio of each Jpeg size to be one of well known ones
19474 (e.<wbr/>g.<wbr/> 4:3,<wbr/> 16:9,<wbr/> 3:2 etc.<wbr/>).<wbr/> If the sensor maximum resolution
19475 (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/>
19476 it does not have to be included in the supported JPEG sizes.<wbr/></li>
19477 <li>Some hardware JPEG encoders may have pixel boundary alignment requirements,<wbr/> such as
19478 the dimensions being a multiple of 16.<wbr/>
19479 Therefore,<wbr/> the maximum JPEG size may be smaller than sensor maximum resolution.<wbr/>
19480 However,<wbr/> the largest JPEG size will be as close as possible to the sensor maximum
19481 resolution given above constraints.<wbr/> It is required that after aspect ratio adjustments,<wbr/>
19482 additional size reduction due to other issues must be less than 3% in area.<wbr/> For example,<wbr/>
19483 if the sensor maximum resolution is 3280x2464,<wbr/> if the maximum JPEG size has aspect
19484 ratio 4:3,<wbr/> and the JPEG encoder alignment requirement is 16,<wbr/> the maximum JPEG size will be
19485 3264x2448.<wbr/></li>
19490 <tr class="entries_header">
19491 <th class="th_details" colspan="6">HAL Implementation Details</th>
19493 <tr class="entry_cont">
19494 <td class="entry_details" colspan="6">
19495 <p>Do not set this property directly
19496 (it is synthetic and will not be available at the HAL layer);
19497 set the <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> instead.<wbr/></p>
19498 <p>Not all output formats may be supported in a configuration with
19499 an input stream of a particular format.<wbr/> For more details,<wbr/> see
19500 <a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a>.<wbr/></p>
19501 <p>It is recommended (but not mandatory) to also include half/<wbr/>quarter
19502 of sensor maximum resolution for JPEG formats (regardless of hardware
19504 <p>(The following is a rewording of the above required table):</p>
19505 <p>The HAL must include sensor maximum resolution (defined by
19506 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>).<wbr/></p>
19507 <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/>
19508 the HAL must include all YUV_<wbr/>420_<wbr/>888 sizes that have JPEG sizes listed
19509 here as output streams.<wbr/></p>
19510 <p>It must also include each below resolution if it is smaller than or
19511 equal to the sensor maximum resolution (for both YUV_<wbr/>420_<wbr/>888 and JPEG
19512 formats),<wbr/> as output streams:</p>
19514 <li>240p (320 x 240)</li>
19515 <li>480p (640 x 480)</li>
19516 <li>720p (1280 x 720)</li>
19517 <li>1080p (1920 x 1080)</li>
19519 <p>For LIMITED capability devices
19520 (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == LIMITED</code>),<wbr/>
19521 the HAL only has to list up to the maximum video size
19522 supported by the device.<wbr/></p>
19523 <p>Regardless of hardware level,<wbr/> every output resolution available for
19524 YUV_<wbr/>420_<wbr/>888 must also be available for IMPLEMENTATION_<wbr/>DEFINED.<wbr/></p>
19525 <p>This supercedes the following fields,<wbr/> which are now deprecated:</p>
19527 <li>availableFormats</li>
19528 <li>available[Processed,<wbr/>Raw,<wbr/>Jpeg]Sizes</li>
19533 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19534 <!-- end of entry -->
19537 <tr class="entry" id="static_android.scaler.croppingType">
19538 <td class="entry_name
19540 android.<wbr/>scaler.<wbr/>cropping<wbr/>Type
19542 <td class="entry_type">
19543 <span class="entry_type_name entry_type_name_enum">byte</span>
19545 <span class="entry_type_visibility"> [public]</span>
19548 <span class="entry_type_hwlevel">[legacy] </span>
19552 <ul class="entry_type_enum">
19554 <span class="entry_type_enum_name">CENTER_ONLY (v3.2)</span>
19555 <span class="entry_type_enum_notes"><p>The camera device only supports centered crop regions.<wbr/></p></span>
19558 <span class="entry_type_enum_name">FREEFORM (v3.2)</span>
19559 <span class="entry_type_enum_notes"><p>The camera device supports arbitrarily chosen crop regions.<wbr/></p></span>
19563 </td> <!-- entry_type -->
19565 <td class="entry_description">
19566 <p>The crop type that this camera device supports.<wbr/></p>
19569 <td class="entry_units">
19572 <td class="entry_range">
19575 <td class="entry_hal_version">
19579 <td class="entry_tags">
19583 <tr class="entries_header">
19584 <th class="th_details" colspan="6">Details</th>
19586 <tr class="entry_cont">
19587 <td class="entry_details" colspan="6">
19588 <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
19589 device that only supports CENTER_<wbr/>ONLY cropping,<wbr/> the camera device will move the
19590 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>)
19591 and keep the crop region width and height unchanged.<wbr/> The camera device will return the
19592 final used crop region in metadata result <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></p>
19593 <p>Camera devices that support FREEFORM cropping will support any crop region that
19594 is inside of the active array.<wbr/> The camera device will apply the same crop region and
19595 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>
19596 <p>LEGACY capability devices will only support CENTER_<wbr/>ONLY cropping.<wbr/></p>
19601 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19602 <!-- end of entry -->
19606 <!-- end of kind -->
19608 <tr><td colspan="7" class="kind">dynamic</td></tr>
19610 <thead class="entries_header">
19612 <th class="th_name">Property Name</th>
19613 <th class="th_type">Type</th>
19614 <th class="th_description">Description</th>
19615 <th class="th_units">Units</th>
19616 <th class="th_range">Range</th>
19617 <th class="th_hal_version">Initial HIDL HAL version</th>
19618 <th class="th_tags">Tags</th>
19633 <tr class="entry" id="dynamic_android.scaler.cropRegion">
19634 <td class="entry_name
19636 android.<wbr/>scaler.<wbr/>crop<wbr/>Region
19638 <td class="entry_type">
19639 <span class="entry_type_name">int32</span>
19640 <span class="entry_type_container">x</span>
19642 <span class="entry_type_array">
19645 <span class="entry_type_visibility"> [public as rectangle]</span>
19648 <span class="entry_type_hwlevel">[legacy] </span>
19653 </td> <!-- entry_type -->
19655 <td class="entry_description">
19656 <p>The desired region of the sensor to read out for this capture.<wbr/></p>
19659 <td class="entry_units">
19660 Pixel coordinates relative to
19661 android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
19664 <td class="entry_range">
19667 <td class="entry_hal_version">
19671 <td class="entry_tags">
19672 <ul class="entry_tags">
19673 <li><a href="#tag_BC">BC</a></li>
19678 <tr class="entries_header">
19679 <th class="th_details" colspan="6">Details</th>
19681 <tr class="entry_cont">
19682 <td class="entry_details" colspan="6">
19683 <p>This control can be used to implement digital zoom.<wbr/></p>
19684 <p>The crop region coordinate system is based off
19685 <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
19686 top-left corner of the sensor active array.<wbr/></p>
19687 <p>Output streams use this rectangle to produce their output,<wbr/>
19688 cropping to a smaller region if necessary to maintain the
19689 stream's aspect ratio,<wbr/> then scaling the sensor input to
19690 match the output's configured resolution.<wbr/></p>
19691 <p>The crop region is applied after the RAW to other color
19692 space (e.<wbr/>g.<wbr/> YUV) conversion.<wbr/> Since raw streams
19693 (e.<wbr/>g.<wbr/> RAW16) don't have the conversion stage,<wbr/> they are not
19694 croppable.<wbr/> The crop region will be ignored by raw streams.<wbr/></p>
19695 <p>For non-raw streams,<wbr/> any additional per-stream cropping will
19696 be done to maximize the final pixel area of the stream.<wbr/></p>
19697 <p>For example,<wbr/> if the crop region is set to a 4:3 aspect
19698 ratio,<wbr/> then 4:3 streams will use the exact crop
19699 region.<wbr/> 16:9 streams will further crop vertically
19700 (letterbox).<wbr/></p>
19701 <p>Conversely,<wbr/> if the crop region is set to a 16:9,<wbr/> then 4:3
19702 outputs will crop horizontally (pillarbox),<wbr/> and 16:9
19703 streams will match exactly.<wbr/> These additional crops will
19704 be centered within the crop region.<wbr/></p>
19705 <p>The width and height of the crop region cannot
19706 be set to be smaller than
19707 <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
19708 <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>
19709 <p>The camera device may adjust the crop region to account
19710 for rounding and other hardware requirements; the final
19711 crop region used will be included in the output capture
19716 <tr class="entries_header">
19717 <th class="th_details" colspan="6">HAL Implementation Details</th>
19719 <tr class="entry_cont">
19720 <td class="entry_details" colspan="6">
19721 <p>The output streams must maintain square pixels at all
19722 times,<wbr/> no matter what the relative aspect ratios of the
19723 crop region and the stream are.<wbr/> Negative values for
19724 corner are allowed for raw output if full pixel array is
19725 larger than active pixel array.<wbr/> Width and height may be
19726 rounded to nearest larger supportable width,<wbr/> especially
19727 for raw output,<wbr/> where only a few fixed scales may be
19728 possible.<wbr/></p>
19729 <p>For a set of output streams configured,<wbr/> if the sensor output is cropped to a smaller
19730 size than active array size,<wbr/> the HAL need follow below cropping rules:</p>
19733 <p>The HAL need handle the cropRegion as if the sensor crop size is the effective active
19734 array size.<wbr/>More specifically,<wbr/> the HAL must transform the request cropRegion from
19735 <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>
19737 <li>Translate the requested cropRegion w.<wbr/>r.<wbr/>t.,<wbr/> the left top corner of the sensor
19738 cropped pixel area by (tx,<wbr/> ty),<wbr/>
19739 where <code>tx = sensorCrop.<wbr/>top * (sensorCrop.<wbr/>height /<wbr/> activeArraySize.<wbr/>height)</code>
19740 and <code>tx = sensorCrop.<wbr/>left * (sensorCrop.<wbr/>width /<wbr/> activeArraySize.<wbr/>width)</code>.<wbr/> The
19741 (sensorCrop.<wbr/>top,<wbr/> sensorCrop.<wbr/>left) is the coordinate based off the
19742 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></li>
19743 <li>Scale the width and height of requested cropRegion with scaling factor of
19744 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
19745 respectively.<wbr/>
19746 Once this new cropRegion is calculated,<wbr/> the HAL must use this region to crop the image
19747 with regard to the sensor crop size (effective active array size).<wbr/> The HAL still need
19748 follow the general cropping rule for this new cropRegion and effective active
19749 array size.<wbr/></li>
19753 <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/>
19754 The HAL need convert the new cropRegion generated above w.<wbr/>r.<wbr/>t.,<wbr/> full active array size.<wbr/>
19755 The reported cropRegion may be slightly different with the requested cropRegion since
19756 the HAL may adjust the crop region to account for rounding,<wbr/> conversion error,<wbr/> or other
19757 hardware limitations.<wbr/></p>
19760 <p>HAL2.<wbr/>x uses only (x,<wbr/> y,<wbr/> width)</p>
19764 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19765 <!-- end of entry -->
19769 <!-- end of kind -->
19772 <!-- end of section -->
19773 <tr><td colspan="7" id="section_sensor" class="section">sensor</td></tr>
19776 <tr><td colspan="7" class="kind">controls</td></tr>
19778 <thead class="entries_header">
19780 <th class="th_name">Property Name</th>
19781 <th class="th_type">Type</th>
19782 <th class="th_description">Description</th>
19783 <th class="th_units">Units</th>
19784 <th class="th_range">Range</th>
19785 <th class="th_hal_version">Initial HIDL HAL version</th>
19786 <th class="th_tags">Tags</th>
19801 <tr class="entry" id="controls_android.sensor.exposureTime">
19802 <td class="entry_name
19804 android.<wbr/>sensor.<wbr/>exposure<wbr/>Time
19806 <td class="entry_type">
19807 <span class="entry_type_name">int64</span>
19809 <span class="entry_type_visibility"> [public]</span>
19812 <span class="entry_type_hwlevel">[full] </span>
19817 </td> <!-- entry_type -->
19819 <td class="entry_description">
19820 <p>Duration each pixel is exposed to
19824 <td class="entry_units">
19828 <td class="entry_range">
19829 <p><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></p>
19832 <td class="entry_hal_version">
19836 <td class="entry_tags">
19837 <ul class="entry_tags">
19838 <li><a href="#tag_V1">V1</a></li>
19843 <tr class="entries_header">
19844 <th class="th_details" colspan="6">Details</th>
19846 <tr class="entry_cont">
19847 <td class="entry_details" colspan="6">
19848 <p>If the sensor can't expose this exact duration,<wbr/> it will shorten the
19849 duration exposed to the nearest possible value (rather than expose longer).<wbr/>
19850 The final exposure time used will be available in the output capture result.<wbr/></p>
19851 <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
19852 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
19857 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19858 <!-- end of entry -->
19861 <tr class="entry" id="controls_android.sensor.frameDuration">
19862 <td class="entry_name
19864 android.<wbr/>sensor.<wbr/>frame<wbr/>Duration
19866 <td class="entry_type">
19867 <span class="entry_type_name">int64</span>
19869 <span class="entry_type_visibility"> [public]</span>
19872 <span class="entry_type_hwlevel">[full] </span>
19877 </td> <!-- entry_type -->
19879 <td class="entry_description">
19880 <p>Duration from start of frame exposure to
19881 start of next frame exposure.<wbr/></p>
19884 <td class="entry_units">
19888 <td class="entry_range">
19889 <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/>
19890 The duration is capped to <code>max(duration,<wbr/> exposureTime + overhead)</code>.<wbr/></p>
19893 <td class="entry_hal_version">
19897 <td class="entry_tags">
19898 <ul class="entry_tags">
19899 <li><a href="#tag_V1">V1</a></li>
19904 <tr class="entries_header">
19905 <th class="th_details" colspan="6">Details</th>
19907 <tr class="entry_cont">
19908 <td class="entry_details" colspan="6">
19909 <p>The maximum frame rate that can be supported by a camera subsystem is
19910 a function of many factors:</p>
19912 <li>Requested resolutions of output image streams</li>
19913 <li>Availability of binning /<wbr/> skipping modes on the imager</li>
19914 <li>The bandwidth of the imager interface</li>
19915 <li>The bandwidth of the various ISP processing blocks</li>
19917 <p>Since these factors can vary greatly between different ISPs and
19918 sensors,<wbr/> the camera abstraction tries to represent the bandwidth
19919 restrictions with as simple a model as possible.<wbr/></p>
19920 <p>The model presented has the following characteristics:</p>
19922 <li>The image sensor is always configured to output the smallest
19923 resolution possible given the application's requested output stream
19924 sizes.<wbr/> The smallest resolution is defined as being at least as large
19925 as the largest requested output stream size; the camera pipeline must
19926 never digitally upsample sensor data when the crop region covers the
19927 whole sensor.<wbr/> In general,<wbr/> this means that if only small output stream
19928 resolutions are configured,<wbr/> the sensor can provide a higher frame
19930 <li>Since any request may use any or all the currently configured
19931 output streams,<wbr/> the sensor and ISP must be configured to support
19932 scaling a single capture to all the streams at the same time.<wbr/> This
19933 means the camera pipeline must be ready to produce the largest
19934 requested output size without any delay.<wbr/> Therefore,<wbr/> the overall
19935 frame rate of a given configured stream set is governed only by the
19936 largest requested stream resolution.<wbr/></li>
19937 <li>Using more than one output stream in a request does not affect the
19938 frame duration.<wbr/></li>
19939 <li>Certain format-streams may need to do additional background processing
19940 before data is consumed/<wbr/>produced by that stream.<wbr/> These processors
19941 can run concurrently to the rest of the camera pipeline,<wbr/> but
19942 cannot process more than 1 capture at a time.<wbr/></li>
19944 <p>The necessary information for the application,<wbr/> given the model above,<wbr/> is provided via
19945 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/>
19946 These are used to determine the maximum frame rate /<wbr/> minimum frame duration that is
19947 possible for a given stream configuration.<wbr/></p>
19948 <p>Specifically,<wbr/> the application can use the following rules to
19949 determine the minimum frame duration it can request from the camera
19952 <li>Let the set of currently configured input/<wbr/>output streams be called <code>S</code>.<wbr/></li>
19953 <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>
19954 (with its respective size/<wbr/>format).<wbr/> Let this set of frame durations be called <code>F</code>.<wbr/></li>
19955 <li>For any given request <code>R</code>,<wbr/> the minimum frame duration allowed for <code>R</code> is the maximum
19956 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>
19958 <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>
19959 using its respective size/<wbr/>format),<wbr/> then the frame duration in <code>F</code> determines the steady
19960 state frame rate that the application will get if it uses <code>R</code> as a repeating request.<wbr/> Let
19961 this special kind of request be called <code>Rsimple</code>.<wbr/></p>
19962 <p>A repeating request <code>Rsimple</code> can be <em>occasionally</em> interleaved by a single capture of a
19963 new request <code>Rstall</code> (which has at least one in-use stream with a non-0 stall time) and if
19964 <code>Rstall</code> has the same minimum frame duration this will not cause a frame rate loss if all
19965 buffers from the previous <code>Rstall</code> have already been delivered.<wbr/></p>
19966 <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>
19967 <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
19968 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
19972 <tr class="entries_header">
19973 <th class="th_details" colspan="6">HAL Implementation Details</th>
19975 <tr class="entry_cont">
19976 <td class="entry_details" colspan="6">
19977 <p>For more details about stalling,<wbr/> see
19978 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>.<wbr/></p>
19982 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19983 <!-- end of entry -->
19986 <tr class="entry" id="controls_android.sensor.sensitivity">
19987 <td class="entry_name
19989 android.<wbr/>sensor.<wbr/>sensitivity
19991 <td class="entry_type">
19992 <span class="entry_type_name">int32</span>
19994 <span class="entry_type_visibility"> [public]</span>
19997 <span class="entry_type_hwlevel">[full] </span>
20002 </td> <!-- entry_type -->
20004 <td class="entry_description">
20005 <p>The amount of gain applied to sensor data
20006 before processing.<wbr/></p>
20009 <td class="entry_units">
20010 ISO arithmetic units
20013 <td class="entry_range">
20014 <p><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></p>
20017 <td class="entry_hal_version">
20021 <td class="entry_tags">
20022 <ul class="entry_tags">
20023 <li><a href="#tag_V1">V1</a></li>
20028 <tr class="entries_header">
20029 <th class="th_details" colspan="6">Details</th>
20031 <tr class="entry_cont">
20032 <td class="entry_details" colspan="6">
20033 <p>The sensitivity is the standard ISO sensitivity value,<wbr/>
20034 as defined in ISO 12232:2006.<wbr/></p>
20035 <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
20036 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
20037 is guaranteed to use only analog amplification for applying the gain.<wbr/></p>
20038 <p>If the camera device cannot apply the exact sensitivity
20039 requested,<wbr/> it will reduce the gain to the nearest supported
20040 value.<wbr/> The final sensitivity used will be available in the
20041 output capture result.<wbr/></p>
20042 <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
20043 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
20047 <tr class="entries_header">
20048 <th class="th_details" colspan="6">HAL Implementation Details</th>
20050 <tr class="entry_cont">
20051 <td class="entry_details" colspan="6">
20052 <p>ISO 12232:2006 REI method is acceptable.<wbr/></p>
20056 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20057 <!-- end of entry -->
20060 <tr class="entry" id="controls_android.sensor.testPatternData">
20061 <td class="entry_name
20063 android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data
20065 <td class="entry_type">
20066 <span class="entry_type_name">int32</span>
20067 <span class="entry_type_container">x</span>
20069 <span class="entry_type_array">
20072 <span class="entry_type_visibility"> [public]</span>
20079 </td> <!-- entry_type -->
20081 <td class="entry_description">
20082 <p>A pixel <code>[R,<wbr/> G_<wbr/>even,<wbr/> G_<wbr/>odd,<wbr/> B]</code> that supplies the test pattern
20083 when <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a> is SOLID_<wbr/>COLOR.<wbr/></p>
20086 <td class="entry_units">
20089 <td class="entry_range">
20092 <td class="entry_hal_version">
20096 <td class="entry_tags">
20100 <tr class="entries_header">
20101 <th class="th_details" colspan="6">Details</th>
20103 <tr class="entry_cont">
20104 <td class="entry_details" colspan="6">
20105 <p>Each color channel is treated as an unsigned 32-bit integer.<wbr/>
20106 The camera device then uses the most significant X bits
20107 that correspond to how many bits are in its Bayer raw sensor
20109 <p>For example,<wbr/> a sensor with RAW10 Bayer output would use the
20110 10 most significant bits from each color channel.<wbr/></p>
20114 <tr class="entries_header">
20115 <th class="th_details" colspan="6">HAL Implementation Details</th>
20117 <tr class="entry_cont">
20118 <td class="entry_details" colspan="6">
20123 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20124 <!-- end of entry -->
20127 <tr class="entry" id="controls_android.sensor.testPatternMode">
20128 <td class="entry_name
20130 android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode
20132 <td class="entry_type">
20133 <span class="entry_type_name entry_type_name_enum">int32</span>
20135 <span class="entry_type_visibility"> [public]</span>
20141 <ul class="entry_type_enum">
20143 <span class="entry_type_enum_name">OFF (v3.2)</span>
20144 <span class="entry_type_enum_notes"><p>No test pattern mode is used,<wbr/> and the camera
20145 device returns captures from the image sensor.<wbr/></p>
20146 <p>This is the default if the key is not set.<wbr/></p></span>
20149 <span class="entry_type_enum_name">SOLID_COLOR (v3.2)</span>
20150 <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
20151 respective color channel provided in
20152 <a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a>.<wbr/></p>
20153 <p>For example:</p>
20154 <pre><code>android.<wbr/>testPatternData = [0,<wbr/> 0xFFFFFFFF,<wbr/> 0xFFFFFFFF,<wbr/> 0]
20156 <p>All green pixels are 100% green.<wbr/> All red/<wbr/>blue pixels are black.<wbr/></p>
20157 <pre><code>android.<wbr/>testPatternData = [0xFFFFFFFF,<wbr/> 0,<wbr/> 0xFFFFFFFF,<wbr/> 0]
20159 <p>All red pixels are 100% red.<wbr/> Only the odd green pixels
20160 are 100% green.<wbr/> All blue pixels are 100% black.<wbr/></p></span>
20163 <span class="entry_type_enum_name">COLOR_BARS (v3.2)</span>
20164 <span class="entry_type_enum_notes"><p>All pixel data is replaced with an 8-bar color pattern.<wbr/></p>
20165 <p>The vertical bars (left-to-right) are as follows:</p>
20167 <li>100% white</li>
20176 <p>In general the image would look like the following:</p>
20177 <pre><code>W Y C G M R B K
20182 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
20183 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
20184 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
20186 (B = Blue,<wbr/> K = Black)
20188 <p>Each bar should take up 1/<wbr/>8 of the sensor pixel array width.<wbr/>
20189 When this is not possible,<wbr/> the bar size should be rounded
20190 down to the nearest integer and the pattern can repeat
20191 on the right side.<wbr/></p>
20192 <p>Each bar's height must always take up the full sensor
20193 pixel array height.<wbr/></p>
20194 <p>Each pixel in this test pattern must be set to either
20195 0% intensity or 100% intensity.<wbr/></p></span>
20198 <span class="entry_type_enum_name">COLOR_BARS_FADE_TO_GRAY (v3.2)</span>
20199 <span class="entry_type_enum_notes"><p>The test pattern is similar to COLOR_<wbr/>BARS,<wbr/> except that
20200 each bar should start at its specified color at the top,<wbr/>
20201 and fade to gray at the bottom.<wbr/></p>
20202 <p>Furthermore each bar is further subdivided into a left and
20203 right half.<wbr/> The left half should have a smooth gradient,<wbr/>
20204 and the right half should have a quantized gradient.<wbr/></p>
20205 <p>In particular,<wbr/> the right half's should consist of blocks of the
20206 same color for 1/<wbr/>16th active sensor pixel array width.<wbr/></p>
20207 <p>The least significant bits in the quantized gradient should
20208 be copied from the most significant bits of the smooth gradient.<wbr/></p>
20209 <p>The height of each bar should always be a multiple of 128.<wbr/>
20210 When this is not the case,<wbr/> the pattern should repeat at the bottom
20211 of the image.<wbr/></p></span>
20214 <span class="entry_type_enum_name">PN9 (v3.2)</span>
20215 <span class="entry_type_enum_notes"><p>All pixel data is replaced by a pseudo-random sequence
20216 generated from a PN9 512-bit sequence (typically implemented
20217 in hardware with a linear feedback shift register).<wbr/></p>
20218 <p>The generator should be reset at the beginning of each frame,<wbr/>
20219 and thus each subsequent raw frame with this test pattern should
20220 be exactly the same as the last.<wbr/></p></span>
20223 <span class="entry_type_enum_name">CUSTOM1 (v3.2)</span>
20224 <span class="entry_type_enum_value">256</span>
20225 <span class="entry_type_enum_notes"><p>The first custom test pattern.<wbr/> All custom patterns that are
20226 available only on this camera device are at least this numeric
20228 <p>All of the custom test patterns will be static
20229 (that is the raw image must not vary from frame to frame).<wbr/></p></span>
20233 </td> <!-- entry_type -->
20235 <td class="entry_description">
20236 <p>When enabled,<wbr/> the sensor sends a test pattern instead of
20237 doing a real exposure from the camera.<wbr/></p>
20240 <td class="entry_units">
20243 <td class="entry_range">
20244 <p><a href="#static_android.sensor.availableTestPatternModes">android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes</a></p>
20247 <td class="entry_hal_version">
20251 <td class="entry_tags">
20255 <tr class="entries_header">
20256 <th class="th_details" colspan="6">Details</th>
20258 <tr class="entry_cont">
20259 <td class="entry_details" colspan="6">
20260 <p>When a test pattern is enabled,<wbr/> all manual sensor controls specified
20261 by android.<wbr/>sensor.<wbr/>* will be ignored.<wbr/> All other controls should
20262 work as normal.<wbr/></p>
20263 <p>For example,<wbr/> if manual flash is enabled,<wbr/> flash firing should still
20264 occur (and that the test pattern remain unmodified,<wbr/> since the flash
20265 would not actually affect it).<wbr/></p>
20266 <p>Defaults to OFF.<wbr/></p>
20270 <tr class="entries_header">
20271 <th class="th_details" colspan="6">HAL Implementation Details</th>
20273 <tr class="entry_cont">
20274 <td class="entry_details" colspan="6">
20275 <p>All test patterns are specified in the Bayer domain.<wbr/></p>
20276 <p>The HAL may choose to substitute test patterns from the sensor
20277 with test patterns from on-device memory.<wbr/> In that case,<wbr/> it should be
20278 indistinguishable to the ISP whether the data came from the
20279 sensor interconnect bus (such as CSI2) or memory.<wbr/></p>
20283 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20284 <!-- end of entry -->
20288 <!-- end of kind -->
20290 <tr><td colspan="7" class="kind">static</td></tr>
20292 <thead class="entries_header">
20294 <th class="th_name">Property Name</th>
20295 <th class="th_type">Type</th>
20296 <th class="th_description">Description</th>
20297 <th class="th_units">Units</th>
20298 <th class="th_range">Range</th>
20299 <th class="th_hal_version">Initial HIDL HAL version</th>
20300 <th class="th_tags">Tags</th>
20317 <tr class="entry" id="static_android.sensor.info.activeArraySize">
20318 <td class="entry_name
20320 android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
20322 <td class="entry_type">
20323 <span class="entry_type_name">int32</span>
20324 <span class="entry_type_container">x</span>
20326 <span class="entry_type_array">
20329 <span class="entry_type_visibility"> [public as rectangle]</span>
20332 <span class="entry_type_hwlevel">[legacy] </span>
20335 <div class="entry_type_notes">Four ints defining the active pixel rectangle</div>
20338 </td> <!-- entry_type -->
20340 <td class="entry_description">
20341 <p>The area of the image sensor which corresponds to active pixels after any geometric
20342 distortion correction has been applied.<wbr/></p>
20345 <td class="entry_units">
20346 Pixel coordinates on the image sensor
20349 <td class="entry_range">
20352 <td class="entry_hal_version">
20356 <td class="entry_tags">
20357 <ul class="entry_tags">
20358 <li><a href="#tag_RAW">RAW</a></li>
20363 <tr class="entries_header">
20364 <th class="th_details" colspan="6">Details</th>
20366 <tr class="entry_cont">
20367 <td class="entry_details" colspan="6">
20368 <p>This is the rectangle representing the size of the active region of the sensor (i.<wbr/>e.<wbr/>
20369 the region that actually receives light from the scene) after any geometric correction
20370 has been applied,<wbr/> and should be treated as the maximum size in pixels of any of the
20371 image output formats aside from the raw formats.<wbr/></p>
20372 <p>This rectangle is defined relative to the full pixel array; (0,<wbr/>0) is the top-left of
20373 the full pixel array,<wbr/> and the size of the full pixel array is given by
20374 <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
20375 <p>The coordinate system for most other keys that list pixel coordinates,<wbr/> including
20376 <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
20377 this field,<wbr/> with <code>(0,<wbr/> 0)</code> being the top-left of this rectangle.<wbr/></p>
20378 <p>The active array may be smaller than the full pixel array,<wbr/> since the full array may
20379 include black calibration pixels or other inactive regions,<wbr/> and geometric correction
20380 resulting in scaling or cropping may have been applied.<wbr/></p>
20384 <tr class="entries_header">
20385 <th class="th_details" colspan="6">HAL Implementation Details</th>
20387 <tr class="entry_cont">
20388 <td class="entry_details" colspan="6">
20389 <p>This array contains <code>(xmin,<wbr/> ymin,<wbr/> width,<wbr/> height)</code>.<wbr/> The <code>(xmin,<wbr/> ymin)</code> must be
20390 >= <code>(0,<wbr/>0)</code>.<wbr/>
20391 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>
20395 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20396 <!-- end of entry -->
20399 <tr class="entry" id="static_android.sensor.info.sensitivityRange">
20400 <td class="entry_name
20402 android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range
20404 <td class="entry_type">
20405 <span class="entry_type_name">int32</span>
20406 <span class="entry_type_container">x</span>
20408 <span class="entry_type_array">
20411 <span class="entry_type_visibility"> [public as rangeInt]</span>
20414 <span class="entry_type_hwlevel">[full] </span>
20417 <div class="entry_type_notes">Range of supported sensitivities</div>
20420 </td> <!-- entry_type -->
20422 <td class="entry_description">
20423 <p>Range of sensitivities for <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> supported by this
20424 camera device.<wbr/></p>
20427 <td class="entry_units">
20430 <td class="entry_range">
20431 <p>Min <= 100,<wbr/> Max >= 800</p>
20434 <td class="entry_hal_version">
20438 <td class="entry_tags">
20439 <ul class="entry_tags">
20440 <li><a href="#tag_BC">BC</a></li>
20441 <li><a href="#tag_V1">V1</a></li>
20446 <tr class="entries_header">
20447 <th class="th_details" colspan="6">Details</th>
20449 <tr class="entry_cont">
20450 <td class="entry_details" colspan="6">
20451 <p>The values are the standard ISO sensitivity values,<wbr/>
20452 as defined in ISO 12232:2006.<wbr/></p>
20457 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20458 <!-- end of entry -->
20461 <tr class="entry" id="static_android.sensor.info.colorFilterArrangement">
20462 <td class="entry_name
20464 android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement
20466 <td class="entry_type">
20467 <span class="entry_type_name entry_type_name_enum">byte</span>
20469 <span class="entry_type_visibility"> [public]</span>
20472 <span class="entry_type_hwlevel">[full] </span>
20476 <ul class="entry_type_enum">
20478 <span class="entry_type_enum_name">RGGB (v3.2)</span>
20481 <span class="entry_type_enum_name">GRBG (v3.2)</span>
20484 <span class="entry_type_enum_name">GBRG (v3.2)</span>
20487 <span class="entry_type_enum_name">BGGR (v3.2)</span>
20490 <span class="entry_type_enum_name">RGB (v3.2)</span>
20491 <span class="entry_type_enum_notes"><p>Sensor is not Bayer; output has 3 16-bit
20492 values for each pixel,<wbr/> instead of just 1 16-bit value
20493 per pixel.<wbr/></p></span>
20497 </td> <!-- entry_type -->
20499 <td class="entry_description">
20500 <p>The arrangement of color filters on sensor;
20501 represents the colors in the top-left 2x2 section of
20502 the sensor,<wbr/> in reading order.<wbr/></p>
20505 <td class="entry_units">
20508 <td class="entry_range">
20511 <td class="entry_hal_version">
20515 <td class="entry_tags">
20516 <ul class="entry_tags">
20517 <li><a href="#tag_RAW">RAW</a></li>
20524 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20525 <!-- end of entry -->
20528 <tr class="entry" id="static_android.sensor.info.exposureTimeRange">
20529 <td class="entry_name
20531 android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range
20533 <td class="entry_type">
20534 <span class="entry_type_name">int64</span>
20535 <span class="entry_type_container">x</span>
20537 <span class="entry_type_array">
20540 <span class="entry_type_visibility"> [public as rangeLong]</span>
20543 <span class="entry_type_hwlevel">[full] </span>
20546 <div class="entry_type_notes">nanoseconds</div>
20549 </td> <!-- entry_type -->
20551 <td class="entry_description">
20552 <p>The range of image exposure times for <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> supported
20553 by this camera device.<wbr/></p>
20556 <td class="entry_units">
20560 <td class="entry_range">
20561 <p>The minimum exposure time will be less than 100 us.<wbr/> For FULL
20562 capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/>
20563 the maximum exposure time will be greater than 100ms.<wbr/></p>
20566 <td class="entry_hal_version">
20570 <td class="entry_tags">
20571 <ul class="entry_tags">
20572 <li><a href="#tag_V1">V1</a></li>
20578 <tr class="entries_header">
20579 <th class="th_details" colspan="6">HAL Implementation Details</th>
20581 <tr class="entry_cont">
20582 <td class="entry_details" colspan="6">
20583 <p>For FULL capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/>
20584 The maximum of the range SHOULD be at least 1 second (1e9),<wbr/> MUST be at least
20589 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20590 <!-- end of entry -->
20593 <tr class="entry" id="static_android.sensor.info.maxFrameDuration">
20594 <td class="entry_name
20596 android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration
20598 <td class="entry_type">
20599 <span class="entry_type_name">int64</span>
20601 <span class="entry_type_visibility"> [public]</span>
20604 <span class="entry_type_hwlevel">[full] </span>
20609 </td> <!-- entry_type -->
20611 <td class="entry_description">
20612 <p>The maximum possible frame duration (minimum frame rate) for
20613 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> that is supported this camera device.<wbr/></p>
20616 <td class="entry_units">
20620 <td class="entry_range">
20621 <p>For FULL capability devices
20622 (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/> at least 100ms.<wbr/></p>
20625 <td class="entry_hal_version">
20629 <td class="entry_tags">
20630 <ul class="entry_tags">
20631 <li><a href="#tag_V1">V1</a></li>
20636 <tr class="entries_header">
20637 <th class="th_details" colspan="6">Details</th>
20639 <tr class="entry_cont">
20640 <td class="entry_details" colspan="6">
20641 <p>Attempting to use frame durations beyond the maximum will result in the frame
20642 duration being clipped to the maximum.<wbr/> See that control for a full definition of frame
20643 durations.<wbr/></p>
20644 <p>Refer to <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>
20645 for the minimum frame duration values.<wbr/></p>
20649 <tr class="entries_header">
20650 <th class="th_details" colspan="6">HAL Implementation Details</th>
20652 <tr class="entry_cont">
20653 <td class="entry_details" colspan="6">
20654 <p>For FULL capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/>
20655 The maximum of the range SHOULD be at least
20656 1 second (1e9),<wbr/> MUST be at least 100ms (100e6).<wbr/></p>
20657 <p><a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a> must be greater or
20658 equal to the <a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a> max
20659 value (since exposure time overrides frame duration).<wbr/></p>
20660 <p>Available minimum frame durations for JPEG must be no greater
20661 than that of the YUV_<wbr/>420_<wbr/>888/<wbr/>IMPLEMENTATION_<wbr/>DEFINED
20662 minimum frame durations (for that respective size).<wbr/></p>
20663 <p>Since JPEG processing is considered offline and can take longer than
20664 a single uncompressed capture,<wbr/> refer to
20665 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>
20666 for details about encoding this scenario.<wbr/></p>
20670 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20671 <!-- end of entry -->
20674 <tr class="entry" id="static_android.sensor.info.physicalSize">
20675 <td class="entry_name
20677 android.<wbr/>sensor.<wbr/>info.<wbr/>physical<wbr/>Size
20679 <td class="entry_type">
20680 <span class="entry_type_name">float</span>
20681 <span class="entry_type_container">x</span>
20683 <span class="entry_type_array">
20686 <span class="entry_type_visibility"> [public as sizeF]</span>
20689 <span class="entry_type_hwlevel">[legacy] </span>
20692 <div class="entry_type_notes">width x height</div>
20695 </td> <!-- entry_type -->
20697 <td class="entry_description">
20698 <p>The physical dimensions of the full pixel
20702 <td class="entry_units">
20706 <td class="entry_range">
20709 <td class="entry_hal_version">
20713 <td class="entry_tags">
20714 <ul class="entry_tags">
20715 <li><a href="#tag_V1">V1</a></li>
20716 <li><a href="#tag_BC">BC</a></li>
20721 <tr class="entries_header">
20722 <th class="th_details" colspan="6">Details</th>
20724 <tr class="entry_cont">
20725 <td class="entry_details" colspan="6">
20726 <p>This is the physical size of the sensor pixel
20727 array defined by <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
20731 <tr class="entries_header">
20732 <th class="th_details" colspan="6">HAL Implementation Details</th>
20734 <tr class="entry_cont">
20735 <td class="entry_details" colspan="6">
20736 <p>Needed for FOV calculation for old API</p>
20740 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20741 <!-- end of entry -->
20744 <tr class="entry" id="static_android.sensor.info.pixelArraySize">
20745 <td class="entry_name
20747 android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size
20749 <td class="entry_type">
20750 <span class="entry_type_name">int32</span>
20751 <span class="entry_type_container">x</span>
20753 <span class="entry_type_array">
20756 <span class="entry_type_visibility"> [public as size]</span>
20759 <span class="entry_type_hwlevel">[legacy] </span>
20764 </td> <!-- entry_type -->
20766 <td class="entry_description">
20767 <p>Dimensions of the full pixel array,<wbr/> possibly
20768 including black calibration pixels.<wbr/></p>
20771 <td class="entry_units">
20775 <td class="entry_range">
20778 <td class="entry_hal_version">
20782 <td class="entry_tags">
20783 <ul class="entry_tags">
20784 <li><a href="#tag_RAW">RAW</a></li>
20785 <li><a href="#tag_BC">BC</a></li>
20790 <tr class="entries_header">
20791 <th class="th_details" colspan="6">Details</th>
20793 <tr class="entry_cont">
20794 <td class="entry_details" colspan="6">
20795 <p>The pixel count of the full pixel array of the image sensor,<wbr/> which covers
20796 <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
20797 the raw buffers produced by this sensor.<wbr/></p>
20798 <p>If a camera device supports raw sensor formats,<wbr/> either this or
20799 <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
20800 output formats listed in <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html">StreamConfigurationMap</a>
20801 (this depends on whether or not the image sensor returns buffers containing pixels that
20802 are not part of the active array region for blacklevel calibration or other purposes).<wbr/></p>
20803 <p>Some parts of the full pixel array may not receive light from the scene,<wbr/>
20804 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
20805 defines the rectangle of active pixels that will be included in processed image
20811 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20812 <!-- end of entry -->
20815 <tr class="entry" id="static_android.sensor.info.whiteLevel">
20816 <td class="entry_name
20818 android.<wbr/>sensor.<wbr/>info.<wbr/>white<wbr/>Level
20820 <td class="entry_type">
20821 <span class="entry_type_name">int32</span>
20823 <span class="entry_type_visibility"> [public]</span>
20830 </td> <!-- entry_type -->
20832 <td class="entry_description">
20833 <p>Maximum raw value output by sensor.<wbr/></p>
20836 <td class="entry_units">
20839 <td class="entry_range">
20840 <p>> 255 (8-bit output)</p>
20843 <td class="entry_hal_version">
20847 <td class="entry_tags">
20848 <ul class="entry_tags">
20849 <li><a href="#tag_RAW">RAW</a></li>
20854 <tr class="entries_header">
20855 <th class="th_details" colspan="6">Details</th>
20857 <tr class="entry_cont">
20858 <td class="entry_details" colspan="6">
20859 <p>This specifies the fully-saturated encoding level for the raw
20860 sample values from the sensor.<wbr/> This is typically caused by the
20861 sensor becoming highly non-linear or clipping.<wbr/> The minimum for
20862 each channel is specified by the offset in the
20863 <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> key.<wbr/></p>
20864 <p>The white level is typically determined either by sensor bit depth
20865 (8-14 bits is expected),<wbr/> or by the point where the sensor response
20866 becomes too non-linear to be useful.<wbr/> The default value for this is
20867 maximum representable value for a 16-bit raw sample (2^16 - 1).<wbr/></p>
20868 <p>The white level values of captured images may vary for different
20869 capture settings (e.<wbr/>g.,<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>).<wbr/> This key
20870 represents a coarse approximation for such case.<wbr/> It is recommended
20871 to use <a href="#dynamic_android.sensor.dynamicWhiteLevel">android.<wbr/>sensor.<wbr/>dynamic<wbr/>White<wbr/>Level</a> for captures when supported
20872 by the camera device,<wbr/> which provides more accurate white level values.<wbr/></p>
20876 <tr class="entries_header">
20877 <th class="th_details" colspan="6">HAL Implementation Details</th>
20879 <tr class="entry_cont">
20880 <td class="entry_details" colspan="6">
20881 <p>The full bit depth of the sensor must be available in the raw data,<wbr/>
20882 so the value for linear sensors should not be significantly lower
20883 than maximum raw value supported,<wbr/> i.<wbr/>e.<wbr/> 2^(sensor bits per pixel).<wbr/></p>
20887 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20888 <!-- end of entry -->
20891 <tr class="entry" id="static_android.sensor.info.timestampSource">
20892 <td class="entry_name
20894 android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source
20896 <td class="entry_type">
20897 <span class="entry_type_name entry_type_name_enum">byte</span>
20899 <span class="entry_type_visibility"> [public]</span>
20902 <span class="entry_type_hwlevel">[legacy] </span>
20906 <ul class="entry_type_enum">
20908 <span class="entry_type_enum_name">UNKNOWN (v3.2)</span>
20909 <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/>
20910 but can not be compared to timestamps from other subsystems
20911 (e.<wbr/>g.<wbr/> accelerometer,<wbr/> gyro etc.<wbr/>),<wbr/> or other instances of the same or different
20912 camera devices in the same system.<wbr/> Timestamps between streams and results for
20913 a single camera instance are comparable,<wbr/> and the timestamps for all buffers
20914 and the result metadata generated by a single capture are identical.<wbr/></p></span>
20917 <span class="entry_type_enum_name">REALTIME (v3.2)</span>
20918 <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
20919 <a href="https://developer.android.com/reference/android/os/SystemClock.html#elapsedRealtimeNanos">SystemClock#elapsedRealtimeNanos</a>,<wbr/>
20920 and they can be compared to other timestamps using that base.<wbr/></p></span>
20924 </td> <!-- entry_type -->
20926 <td class="entry_description">
20927 <p>The time base source for sensor capture start timestamps.<wbr/></p>
20930 <td class="entry_units">
20933 <td class="entry_range">
20936 <td class="entry_hal_version">
20940 <td class="entry_tags">
20941 <ul class="entry_tags">
20942 <li><a href="#tag_V1">V1</a></li>
20947 <tr class="entries_header">
20948 <th class="th_details" colspan="6">Details</th>
20950 <tr class="entry_cont">
20951 <td class="entry_details" colspan="6">
20952 <p>The timestamps provided for captures are always in nanoseconds and monotonic,<wbr/> but
20953 may not based on a time source that can be compared to other system time sources.<wbr/></p>
20954 <p>This characteristic defines the source for the timestamps,<wbr/> and therefore whether they
20955 can be compared against other system time sources/<wbr/>timestamps.<wbr/></p>
20959 <tr class="entries_header">
20960 <th class="th_details" colspan="6">HAL Implementation Details</th>
20962 <tr class="entry_cont">
20963 <td class="entry_details" colspan="6">
20964 <p>For camera devices implement UNKNOWN,<wbr/> the camera framework expects that the timestamp
20965 source to be SYSTEM_<wbr/>TIME_<wbr/>MONOTONIC.<wbr/> For camera devices implement REALTIME,<wbr/> the camera
20966 framework expects that the timestamp source to be SYSTEM_<wbr/>TIME_<wbr/>BOOTTIME.<wbr/> See
20967 system/<wbr/>core/<wbr/>include/<wbr/>utils/<wbr/>Timers.<wbr/>h for the definition of SYSTEM_<wbr/>TIME_<wbr/>MONOTONIC and
20968 SYSTEM_<wbr/>TIME_<wbr/>BOOTTIME.<wbr/> Note that HAL must follow above expectation; otherwise video
20969 recording might suffer unexpected behavior.<wbr/></p>
20970 <p>Also,<wbr/> camera devices which implement REALTIME must pass the ITS sensor fusion test which
20971 tests the alignment between camera timestamps and gyro sensor timestamps.<wbr/></p>
20975 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20976 <!-- end of entry -->
20979 <tr class="entry" id="static_android.sensor.info.lensShadingApplied">
20980 <td class="entry_name
20982 android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied
20984 <td class="entry_type">
20985 <span class="entry_type_name entry_type_name_enum">byte</span>
20987 <span class="entry_type_visibility"> [public as boolean]</span>
20993 <ul class="entry_type_enum">
20995 <span class="entry_type_enum_name">FALSE (v3.2)</span>
20998 <span class="entry_type_enum_name">TRUE (v3.2)</span>
21002 </td> <!-- entry_type -->
21004 <td class="entry_description">
21005 <p>Whether the RAW images output from this camera device are subject to
21006 lens shading correction.<wbr/></p>
21009 <td class="entry_units">
21012 <td class="entry_range">
21015 <td class="entry_hal_version">
21019 <td class="entry_tags">
21023 <tr class="entries_header">
21024 <th class="th_details" colspan="6">Details</th>
21026 <tr class="entry_cont">
21027 <td class="entry_details" colspan="6">
21028 <p>If TRUE,<wbr/> all images produced by the camera device in the RAW image formats will
21029 have lens shading correction already applied to it.<wbr/> If FALSE,<wbr/> the images will
21030 not be adjusted for lens shading correction.<wbr/>
21031 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>
21032 <p>This key will be <code>null</code> for all devices do not report this information.<wbr/>
21033 Devices with RAW capability will always report this information in this key.<wbr/></p>
21038 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21039 <!-- end of entry -->
21042 <tr class="entry" id="static_android.sensor.info.preCorrectionActiveArraySize">
21043 <td class="entry_name
21045 android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size
21047 <td class="entry_type">
21048 <span class="entry_type_name">int32</span>
21049 <span class="entry_type_container">x</span>
21051 <span class="entry_type_array">
21054 <span class="entry_type_visibility"> [public as rectangle]</span>
21057 <span class="entry_type_hwlevel">[legacy] </span>
21060 <div class="entry_type_notes">Four ints defining the active pixel rectangle</div>
21063 </td> <!-- entry_type -->
21065 <td class="entry_description">
21066 <p>The area of the image sensor which corresponds to active pixels prior to the
21067 application of any geometric distortion correction.<wbr/></p>
21070 <td class="entry_units">
21071 Pixel coordinates on the image sensor
21074 <td class="entry_range">
21077 <td class="entry_hal_version">
21081 <td class="entry_tags">
21082 <ul class="entry_tags">
21083 <li><a href="#tag_RAW">RAW</a></li>
21088 <tr class="entries_header">
21089 <th class="th_details" colspan="6">Details</th>
21091 <tr class="entry_cont">
21092 <td class="entry_details" colspan="6">
21093 <p>This is the rectangle representing the size of the active region of the sensor (i.<wbr/>e.<wbr/>
21094 the region that actually receives light from the scene) before any geometric correction
21095 has been applied,<wbr/> and should be treated as the active region rectangle for any of the
21096 raw formats.<wbr/> All metadata associated with raw processing (e.<wbr/>g.<wbr/> the lens shading
21097 correction map,<wbr/> and radial distortion fields) treats the top,<wbr/> left of this rectangle as
21098 the origin,<wbr/> (0,<wbr/>0).<wbr/></p>
21099 <p>The size of this region determines the maximum field of view and the maximum number of
21100 pixels that an image from this sensor can contain,<wbr/> prior to the application of
21101 geometric distortion correction.<wbr/> The effective maximum pixel dimensions of a
21102 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>
21103 field,<wbr/> and the effective maximum field of view for a post-distortion-corrected image
21104 can be calculated by applying the geometric distortion correction fields to this
21105 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>
21106 <p>E.<wbr/>g.<wbr/> to calculate position of a pixel,<wbr/> (x,<wbr/>y),<wbr/> in a processed YUV output image with the
21107 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/>
21108 (x',<wbr/> y'),<wbr/> in the raw pixel array with dimensions give in
21109 <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>:</p>
21111 <li>Choose a pixel (x',<wbr/> y') within the active array region of the raw buffer given in
21112 <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
21113 to be outside of the FOV,<wbr/> and will not be shown in the processed output image.<wbr/></li>
21114 <li>Apply geometric distortion correction to get the post-distortion pixel coordinate,<wbr/>
21115 (x_<wbr/>i,<wbr/> y_<wbr/>i).<wbr/> When applying geometric correction metadata,<wbr/> note that metadata for raw
21116 buffers is defined relative to the top,<wbr/> left of the
21117 <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>
21118 <li>If the resulting corrected pixel coordinate is within the region given in
21119 <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
21120 processed output image buffer is <code>(x_<wbr/>i - activeArray.<wbr/>left,<wbr/> y_<wbr/>i - activeArray.<wbr/>top)</code>,<wbr/>
21121 when the top,<wbr/> left coordinate of that buffer is treated as (0,<wbr/> 0).<wbr/></li>
21123 <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>
21124 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/>
21125 <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
21126 correction doesn't change the pixel coordinate,<wbr/> the resulting pixel selected in
21127 pixel coordinates would be x,<wbr/>y = (25,<wbr/> 25) relative to the top,<wbr/>left of the raw buffer
21128 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)
21129 relative to the top,<wbr/>left of post-processed YUV output buffer with dimensions given in
21130 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
21131 <p>The currently supported fields that correct for geometric distortion are:</p>
21133 <li><a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a>.<wbr/></li>
21135 <p>If all of the geometric distortion fields are no-ops,<wbr/> this rectangle will be the same
21136 as the post-distortion-corrected rectangle given in
21137 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
21138 <p>This rectangle is defined relative to the full pixel array; (0,<wbr/>0) is the top-left of
21139 the full pixel array,<wbr/> and the size of the full pixel array is given by
21140 <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
21141 <p>The pre-correction active array may be smaller than the full pixel array,<wbr/> since the
21142 full array may include black calibration pixels or other inactive regions.<wbr/></p>
21146 <tr class="entries_header">
21147 <th class="th_details" colspan="6">HAL Implementation Details</th>
21149 <tr class="entry_cont">
21150 <td class="entry_details" colspan="6">
21151 <p>This array contains <code>(xmin,<wbr/> ymin,<wbr/> width,<wbr/> height)</code>.<wbr/> The <code>(xmin,<wbr/> ymin)</code> must be
21152 >= <code>(0,<wbr/>0)</code>.<wbr/>
21153 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>
21154 <p>If omitted by the HAL implementation,<wbr/> the camera framework will assume that this is
21155 the same as the post-correction active array region given in
21156 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
21160 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21161 <!-- end of entry -->
21167 <tr class="entry" id="static_android.sensor.referenceIlluminant1">
21168 <td class="entry_name
21170 android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1
21172 <td class="entry_type">
21173 <span class="entry_type_name entry_type_name_enum">byte</span>
21175 <span class="entry_type_visibility"> [public]</span>
21181 <ul class="entry_type_enum">
21183 <span class="entry_type_enum_name">DAYLIGHT (v3.2)</span>
21184 <span class="entry_type_enum_value">1</span>
21187 <span class="entry_type_enum_name">FLUORESCENT (v3.2)</span>
21188 <span class="entry_type_enum_value">2</span>
21191 <span class="entry_type_enum_name">TUNGSTEN (v3.2)</span>
21192 <span class="entry_type_enum_value">3</span>
21193 <span class="entry_type_enum_notes"><p>Incandescent light</p></span>
21196 <span class="entry_type_enum_name">FLASH (v3.2)</span>
21197 <span class="entry_type_enum_value">4</span>
21200 <span class="entry_type_enum_name">FINE_WEATHER (v3.2)</span>
21201 <span class="entry_type_enum_value">9</span>
21204 <span class="entry_type_enum_name">CLOUDY_WEATHER (v3.2)</span>
21205 <span class="entry_type_enum_value">10</span>
21208 <span class="entry_type_enum_name">SHADE (v3.2)</span>
21209 <span class="entry_type_enum_value">11</span>
21212 <span class="entry_type_enum_name">DAYLIGHT_FLUORESCENT (v3.2)</span>
21213 <span class="entry_type_enum_value">12</span>
21214 <span class="entry_type_enum_notes"><p>D 5700 - 7100K</p></span>
21217 <span class="entry_type_enum_name">DAY_WHITE_FLUORESCENT (v3.2)</span>
21218 <span class="entry_type_enum_value">13</span>
21219 <span class="entry_type_enum_notes"><p>N 4600 - 5400K</p></span>
21222 <span class="entry_type_enum_name">COOL_WHITE_FLUORESCENT (v3.2)</span>
21223 <span class="entry_type_enum_value">14</span>
21224 <span class="entry_type_enum_notes"><p>W 3900 - 4500K</p></span>
21227 <span class="entry_type_enum_name">WHITE_FLUORESCENT (v3.2)</span>
21228 <span class="entry_type_enum_value">15</span>
21229 <span class="entry_type_enum_notes"><p>WW 3200 - 3700K</p></span>
21232 <span class="entry_type_enum_name">STANDARD_A (v3.2)</span>
21233 <span class="entry_type_enum_value">17</span>
21236 <span class="entry_type_enum_name">STANDARD_B (v3.2)</span>
21237 <span class="entry_type_enum_value">18</span>
21240 <span class="entry_type_enum_name">STANDARD_C (v3.2)</span>
21241 <span class="entry_type_enum_value">19</span>
21244 <span class="entry_type_enum_name">D55 (v3.2)</span>
21245 <span class="entry_type_enum_value">20</span>
21248 <span class="entry_type_enum_name">D65 (v3.2)</span>
21249 <span class="entry_type_enum_value">21</span>
21252 <span class="entry_type_enum_name">D75 (v3.2)</span>
21253 <span class="entry_type_enum_value">22</span>
21256 <span class="entry_type_enum_name">D50 (v3.2)</span>
21257 <span class="entry_type_enum_value">23</span>
21260 <span class="entry_type_enum_name">ISO_STUDIO_TUNGSTEN (v3.2)</span>
21261 <span class="entry_type_enum_value">24</span>
21265 </td> <!-- entry_type -->
21267 <td class="entry_description">
21268 <p>The standard reference illuminant used as the scene light source when
21269 calculating the <a href="#static_android.sensor.colorTransform1">android.<wbr/>sensor.<wbr/>color<wbr/>Transform1</a>,<wbr/>
21270 <a href="#static_android.sensor.calibrationTransform1">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1</a>,<wbr/> and
21271 <a href="#static_android.sensor.forwardMatrix1">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1</a> matrices.<wbr/></p>
21274 <td class="entry_units">
21277 <td class="entry_range">
21280 <td class="entry_hal_version">
21284 <td class="entry_tags">
21285 <ul class="entry_tags">
21286 <li><a href="#tag_RAW">RAW</a></li>
21291 <tr class="entries_header">
21292 <th class="th_details" colspan="6">Details</th>
21294 <tr class="entry_cont">
21295 <td class="entry_details" colspan="6">
21296 <p>The values in this key correspond to the values defined for the
21297 EXIF LightSource tag.<wbr/> These illuminants are standard light sources
21298 that are often used calibrating camera devices.<wbr/></p>
21299 <p>If this key is present,<wbr/> then <a href="#static_android.sensor.colorTransform1">android.<wbr/>sensor.<wbr/>color<wbr/>Transform1</a>,<wbr/>
21300 <a href="#static_android.sensor.calibrationTransform1">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1</a>,<wbr/> and
21301 <a href="#static_android.sensor.forwardMatrix1">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1</a> will also be present.<wbr/></p>
21302 <p>Some devices may choose to provide a second set of calibration
21303 information for improved quality,<wbr/> including
21304 <a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> and its corresponding matrices.<wbr/></p>
21308 <tr class="entries_header">
21309 <th class="th_details" colspan="6">HAL Implementation Details</th>
21311 <tr class="entry_cont">
21312 <td class="entry_details" colspan="6">
21313 <p>The first reference illuminant (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>)
21314 and corresponding matrices must be present to support the RAW capability
21315 and DNG output.<wbr/></p>
21316 <p>When producing raw images with a color profile that has only been
21317 calibrated against a single light source,<wbr/> it is valid to omit
21318 <a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> along with the
21319 <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/>
21320 and <a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> matrices.<wbr/></p>
21321 <p>If only <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> is included,<wbr/> it should be
21322 chosen so that it is representative of typical scene lighting.<wbr/> In
21323 general,<wbr/> D50 or DAYLIGHT will be chosen for this case.<wbr/></p>
21324 <p>If both <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> and
21325 <a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> are included,<wbr/> they should be
21326 chosen to represent the typical range of scene lighting conditions.<wbr/>
21327 In general,<wbr/> low color temperature illuminant such as Standard-A will
21328 be chosen for the first reference illuminant and a higher color
21329 temperature illuminant such as D65 will be chosen for the second
21330 reference illuminant.<wbr/></p>
21334 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21335 <!-- end of entry -->
21338 <tr class="entry" id="static_android.sensor.referenceIlluminant2">
21339 <td class="entry_name
21341 android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2
21343 <td class="entry_type">
21344 <span class="entry_type_name">byte</span>
21346 <span class="entry_type_visibility"> [public]</span>
21353 </td> <!-- entry_type -->
21355 <td class="entry_description">
21356 <p>The standard reference illuminant used as the scene light source when
21357 calculating the <a href="#static_android.sensor.colorTransform2">android.<wbr/>sensor.<wbr/>color<wbr/>Transform2</a>,<wbr/>
21358 <a href="#static_android.sensor.calibrationTransform2">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2</a>,<wbr/> and
21359 <a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> matrices.<wbr/></p>
21362 <td class="entry_units">
21365 <td class="entry_range">
21366 <p>Any value listed in <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a></p>
21369 <td class="entry_hal_version">
21373 <td class="entry_tags">
21374 <ul class="entry_tags">
21375 <li><a href="#tag_RAW">RAW</a></li>
21380 <tr class="entries_header">
21381 <th class="th_details" colspan="6">Details</th>
21383 <tr class="entry_cont">
21384 <td class="entry_details" colspan="6">
21385 <p>See <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> for more details.<wbr/></p>
21386 <p>If this key is present,<wbr/> then <a href="#static_android.sensor.colorTransform2">android.<wbr/>sensor.<wbr/>color<wbr/>Transform2</a>,<wbr/>
21387 <a href="#static_android.sensor.calibrationTransform2">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2</a>,<wbr/> and
21388 <a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> will also be present.<wbr/></p>
21393 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21394 <!-- end of entry -->
21397 <tr class="entry" id="static_android.sensor.calibrationTransform1">
21398 <td class="entry_name
21400 android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1
21402 <td class="entry_type">
21403 <span class="entry_type_name">rational</span>
21404 <span class="entry_type_container">x</span>
21406 <span class="entry_type_array">
21409 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
21414 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
21417 </td> <!-- entry_type -->
21419 <td class="entry_description">
21420 <p>A per-device calibration transform matrix that maps from the
21421 reference sensor colorspace to the actual device sensor colorspace.<wbr/></p>
21424 <td class="entry_units">
21427 <td class="entry_range">
21430 <td class="entry_hal_version">
21434 <td class="entry_tags">
21435 <ul class="entry_tags">
21436 <li><a href="#tag_RAW">RAW</a></li>
21441 <tr class="entries_header">
21442 <th class="th_details" colspan="6">Details</th>
21444 <tr class="entry_cont">
21445 <td class="entry_details" colspan="6">
21446 <p>This matrix is used to correct for per-device variations in the
21447 sensor colorspace,<wbr/> and is used for processing raw buffer data.<wbr/></p>
21448 <p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
21449 contains a per-device calibration transform that maps colors
21450 from reference sensor color space (i.<wbr/>e.<wbr/> the "golden module"
21451 colorspace) into this camera device's native sensor color
21452 space under the first reference illuminant
21453 (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>).<wbr/></p>
21458 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21459 <!-- end of entry -->
21462 <tr class="entry" id="static_android.sensor.calibrationTransform2">
21463 <td class="entry_name
21465 android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2
21467 <td class="entry_type">
21468 <span class="entry_type_name">rational</span>
21469 <span class="entry_type_container">x</span>
21471 <span class="entry_type_array">
21474 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
21479 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
21482 </td> <!-- entry_type -->
21484 <td class="entry_description">
21485 <p>A per-device calibration transform matrix that maps from the
21486 reference sensor colorspace to the actual device sensor colorspace
21487 (this is the colorspace of the raw buffer data).<wbr/></p>
21490 <td class="entry_units">
21493 <td class="entry_range">
21496 <td class="entry_hal_version">
21500 <td class="entry_tags">
21501 <ul class="entry_tags">
21502 <li><a href="#tag_RAW">RAW</a></li>
21507 <tr class="entries_header">
21508 <th class="th_details" colspan="6">Details</th>
21510 <tr class="entry_cont">
21511 <td class="entry_details" colspan="6">
21512 <p>This matrix is used to correct for per-device variations in the
21513 sensor colorspace,<wbr/> and is used for processing raw buffer data.<wbr/></p>
21514 <p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
21515 contains a per-device calibration transform that maps colors
21516 from reference sensor color space (i.<wbr/>e.<wbr/> the "golden module"
21517 colorspace) into this camera device's native sensor color
21518 space under the second reference illuminant
21519 (<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>).<wbr/></p>
21520 <p>This matrix will only be present if the second reference
21521 illuminant is present.<wbr/></p>
21526 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21527 <!-- end of entry -->
21530 <tr class="entry" id="static_android.sensor.colorTransform1">
21531 <td class="entry_name
21533 android.<wbr/>sensor.<wbr/>color<wbr/>Transform1
21535 <td class="entry_type">
21536 <span class="entry_type_name">rational</span>
21537 <span class="entry_type_container">x</span>
21539 <span class="entry_type_array">
21542 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
21547 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
21550 </td> <!-- entry_type -->
21552 <td class="entry_description">
21553 <p>A matrix that transforms color values from CIE XYZ color space to
21554 reference sensor color space.<wbr/></p>
21557 <td class="entry_units">
21560 <td class="entry_range">
21563 <td class="entry_hal_version">
21567 <td class="entry_tags">
21568 <ul class="entry_tags">
21569 <li><a href="#tag_RAW">RAW</a></li>
21574 <tr class="entries_header">
21575 <th class="th_details" colspan="6">Details</th>
21577 <tr class="entry_cont">
21578 <td class="entry_details" colspan="6">
21579 <p>This matrix is used to convert from the standard CIE XYZ color
21580 space to the reference sensor colorspace,<wbr/> and is used when processing
21581 raw buffer data.<wbr/></p>
21582 <p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
21583 contains a color transform matrix that maps colors from the CIE
21584 XYZ color space to the reference sensor color space (i.<wbr/>e.<wbr/> the
21585 "golden module" colorspace) under the first reference illuminant
21586 (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>).<wbr/></p>
21587 <p>The white points chosen in both the reference sensor color space
21588 and the CIE XYZ colorspace when calculating this transform will
21589 match the standard white point for the first reference illuminant
21590 (i.<wbr/>e.<wbr/> no chromatic adaptation will be applied by this transform).<wbr/></p>
21595 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21596 <!-- end of entry -->
21599 <tr class="entry" id="static_android.sensor.colorTransform2">
21600 <td class="entry_name
21602 android.<wbr/>sensor.<wbr/>color<wbr/>Transform2
21604 <td class="entry_type">
21605 <span class="entry_type_name">rational</span>
21606 <span class="entry_type_container">x</span>
21608 <span class="entry_type_array">
21611 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
21616 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
21619 </td> <!-- entry_type -->
21621 <td class="entry_description">
21622 <p>A matrix that transforms color values from CIE XYZ color space to
21623 reference sensor color space.<wbr/></p>
21626 <td class="entry_units">
21629 <td class="entry_range">
21632 <td class="entry_hal_version">
21636 <td class="entry_tags">
21637 <ul class="entry_tags">
21638 <li><a href="#tag_RAW">RAW</a></li>
21643 <tr class="entries_header">
21644 <th class="th_details" colspan="6">Details</th>
21646 <tr class="entry_cont">
21647 <td class="entry_details" colspan="6">
21648 <p>This matrix is used to convert from the standard CIE XYZ color
21649 space to the reference sensor colorspace,<wbr/> and is used when processing
21650 raw buffer data.<wbr/></p>
21651 <p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
21652 contains a color transform matrix that maps colors from the CIE
21653 XYZ color space to the reference sensor color space (i.<wbr/>e.<wbr/> the
21654 "golden module" colorspace) under the second reference illuminant
21655 (<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>).<wbr/></p>
21656 <p>The white points chosen in both the reference sensor color space
21657 and the CIE XYZ colorspace when calculating this transform will
21658 match the standard white point for the second reference illuminant
21659 (i.<wbr/>e.<wbr/> no chromatic adaptation will be applied by this transform).<wbr/></p>
21660 <p>This matrix will only be present if the second reference
21661 illuminant is present.<wbr/></p>
21666 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21667 <!-- end of entry -->
21670 <tr class="entry" id="static_android.sensor.forwardMatrix1">
21671 <td class="entry_name
21673 android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1
21675 <td class="entry_type">
21676 <span class="entry_type_name">rational</span>
21677 <span class="entry_type_container">x</span>
21679 <span class="entry_type_array">
21682 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
21687 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
21690 </td> <!-- entry_type -->
21692 <td class="entry_description">
21693 <p>A matrix that transforms white balanced camera colors from the reference
21694 sensor colorspace to the CIE XYZ colorspace with a D50 whitepoint.<wbr/></p>
21697 <td class="entry_units">
21700 <td class="entry_range">
21703 <td class="entry_hal_version">
21707 <td class="entry_tags">
21708 <ul class="entry_tags">
21709 <li><a href="#tag_RAW">RAW</a></li>
21714 <tr class="entries_header">
21715 <th class="th_details" colspan="6">Details</th>
21717 <tr class="entry_cont">
21718 <td class="entry_details" colspan="6">
21719 <p>This matrix is used to convert to the standard CIE XYZ colorspace,<wbr/> and
21720 is used when processing raw buffer data.<wbr/></p>
21721 <p>This matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and contains
21722 a color transform matrix that maps white balanced colors from the
21723 reference sensor color space to the CIE XYZ color space with a D50 white
21725 <p>Under the first reference illuminant (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>)
21726 this matrix is chosen so that the standard white point for this reference
21727 illuminant in the reference sensor colorspace is mapped to D50 in the
21728 CIE XYZ colorspace.<wbr/></p>
21733 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21734 <!-- end of entry -->
21737 <tr class="entry" id="static_android.sensor.forwardMatrix2">
21738 <td class="entry_name
21740 android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2
21742 <td class="entry_type">
21743 <span class="entry_type_name">rational</span>
21744 <span class="entry_type_container">x</span>
21746 <span class="entry_type_array">
21749 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
21754 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
21757 </td> <!-- entry_type -->
21759 <td class="entry_description">
21760 <p>A matrix that transforms white balanced camera colors from the reference
21761 sensor colorspace to the CIE XYZ colorspace with a D50 whitepoint.<wbr/></p>
21764 <td class="entry_units">
21767 <td class="entry_range">
21770 <td class="entry_hal_version">
21774 <td class="entry_tags">
21775 <ul class="entry_tags">
21776 <li><a href="#tag_RAW">RAW</a></li>
21781 <tr class="entries_header">
21782 <th class="th_details" colspan="6">Details</th>
21784 <tr class="entry_cont">
21785 <td class="entry_details" colspan="6">
21786 <p>This matrix is used to convert to the standard CIE XYZ colorspace,<wbr/> and
21787 is used when processing raw buffer data.<wbr/></p>
21788 <p>This matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and contains
21789 a color transform matrix that maps white balanced colors from the
21790 reference sensor color space to the CIE XYZ color space with a D50 white
21792 <p>Under the second reference illuminant (<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>)
21793 this matrix is chosen so that the standard white point for this reference
21794 illuminant in the reference sensor colorspace is mapped to D50 in the
21795 CIE XYZ colorspace.<wbr/></p>
21796 <p>This matrix will only be present if the second reference
21797 illuminant is present.<wbr/></p>
21802 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21803 <!-- end of entry -->
21806 <tr class="entry" id="static_android.sensor.baseGainFactor">
21807 <td class="entry_name
21809 android.<wbr/>sensor.<wbr/>base<wbr/>Gain<wbr/>Factor
21811 <td class="entry_type">
21812 <span class="entry_type_name">rational</span>
21814 <span class="entry_type_visibility"> [system]</span>
21821 </td> <!-- entry_type -->
21823 <td class="entry_description">
21824 <p>Gain factor from electrons to raw units when
21828 <td class="entry_units">
21831 <td class="entry_range">
21834 <td class="entry_hal_version">
21838 <td class="entry_tags">
21839 <ul class="entry_tags">
21840 <li><a href="#tag_FUTURE">FUTURE</a></li>
21847 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21848 <!-- end of entry -->
21851 <tr class="entry" id="static_android.sensor.blackLevelPattern">
21852 <td class="entry_name
21854 android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern
21856 <td class="entry_type">
21857 <span class="entry_type_name">int32</span>
21858 <span class="entry_type_container">x</span>
21860 <span class="entry_type_array">
21863 <span class="entry_type_visibility"> [public as blackLevelPattern]</span>
21868 <div class="entry_type_notes">2x2 raw count block</div>
21871 </td> <!-- entry_type -->
21873 <td class="entry_description">
21874 <p>A fixed black level offset for each of the color filter arrangement
21875 (CFA) mosaic channels.<wbr/></p>
21878 <td class="entry_units">
21881 <td class="entry_range">
21882 <p>>= 0 for each.<wbr/></p>
21885 <td class="entry_hal_version">
21889 <td class="entry_tags">
21890 <ul class="entry_tags">
21891 <li><a href="#tag_RAW">RAW</a></li>
21896 <tr class="entries_header">
21897 <th class="th_details" colspan="6">Details</th>
21899 <tr class="entry_cont">
21900 <td class="entry_details" colspan="6">
21901 <p>This key specifies the zero light value for each of the CFA mosaic
21902 channels in the camera sensor.<wbr/> The maximal value output by the
21903 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>
21904 <p>The values are given in the same order as channels listed for the CFA
21905 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
21906 nth value given corresponds to the black level offset for the nth
21907 color channel listed in the CFA.<wbr/></p>
21908 <p>The black level values of captured images may vary for different
21909 capture settings (e.<wbr/>g.,<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>).<wbr/> This key
21910 represents a coarse approximation for such case.<wbr/> It is recommended to
21911 use <a href="#dynamic_android.sensor.dynamicBlackLevel">android.<wbr/>sensor.<wbr/>dynamic<wbr/>Black<wbr/>Level</a> or use pixels from
21912 <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a> directly for captures when
21913 supported by the camera device,<wbr/> which provides more accurate black
21914 level values.<wbr/> For raw capture in particular,<wbr/> it is recommended to use
21915 pixels from <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a> to calculate black
21916 level values for each frame.<wbr/></p>
21920 <tr class="entries_header">
21921 <th class="th_details" colspan="6">HAL Implementation Details</th>
21923 <tr class="entry_cont">
21924 <td class="entry_details" colspan="6">
21925 <p>The values are given in row-column scan order,<wbr/> with the first value
21926 corresponding to the element of the CFA in row=0,<wbr/> column=0.<wbr/></p>
21930 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21931 <!-- end of entry -->
21934 <tr class="entry" id="static_android.sensor.maxAnalogSensitivity">
21935 <td class="entry_name
21937 android.<wbr/>sensor.<wbr/>max<wbr/>Analog<wbr/>Sensitivity
21939 <td class="entry_type">
21940 <span class="entry_type_name">int32</span>
21942 <span class="entry_type_visibility"> [public]</span>
21945 <span class="entry_type_hwlevel">[full] </span>
21950 </td> <!-- entry_type -->
21952 <td class="entry_description">
21953 <p>Maximum sensitivity that is implemented
21954 purely through analog gain.<wbr/></p>
21957 <td class="entry_units">
21960 <td class="entry_range">
21963 <td class="entry_hal_version">
21967 <td class="entry_tags">
21968 <ul class="entry_tags">
21969 <li><a href="#tag_V1">V1</a></li>
21970 <li><a href="#tag_FULL">FULL</a></li>
21975 <tr class="entries_header">
21976 <th class="th_details" colspan="6">Details</th>
21978 <tr class="entry_cont">
21979 <td class="entry_details" colspan="6">
21980 <p>For <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> values less than or
21981 equal to this,<wbr/> all applied gain must be analog.<wbr/> For
21982 values above this,<wbr/> the gain applied can be a mix of analog and
21988 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21989 <!-- end of entry -->
21992 <tr class="entry" id="static_android.sensor.orientation">
21993 <td class="entry_name
21995 android.<wbr/>sensor.<wbr/>orientation
21997 <td class="entry_type">
21998 <span class="entry_type_name">int32</span>
22000 <span class="entry_type_visibility"> [public]</span>
22003 <span class="entry_type_hwlevel">[legacy] </span>
22008 </td> <!-- entry_type -->
22010 <td class="entry_description">
22011 <p>Clockwise angle through which the output image needs to be rotated to be
22012 upright on the device screen in its native orientation.<wbr/></p>
22015 <td class="entry_units">
22016 Degrees of clockwise rotation; always a multiple of
22020 <td class="entry_range">
22021 <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p>
22024 <td class="entry_hal_version">
22028 <td class="entry_tags">
22029 <ul class="entry_tags">
22030 <li><a href="#tag_BC">BC</a></li>
22035 <tr class="entries_header">
22036 <th class="th_details" colspan="6">Details</th>
22038 <tr class="entry_cont">
22039 <td class="entry_details" colspan="6">
22040 <p>Also defines the direction of rolling shutter readout,<wbr/> which is from top to bottom in
22041 the sensor's coordinate system.<wbr/></p>
22046 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22047 <!-- end of entry -->
22050 <tr class="entry" id="static_android.sensor.profileHueSatMapDimensions">
22051 <td class="entry_name
22053 android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map<wbr/>Dimensions
22055 <td class="entry_type">
22056 <span class="entry_type_name">int32</span>
22057 <span class="entry_type_container">x</span>
22059 <span class="entry_type_array">
22062 <span class="entry_type_visibility"> [system]</span>
22067 <div class="entry_type_notes">Number of samples for hue,<wbr/> saturation,<wbr/> and value</div>
22070 </td> <!-- entry_type -->
22072 <td class="entry_description">
22073 <p>The number of input samples for each dimension of
22074 <a href="#dynamic_android.sensor.profileHueSatMap">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map</a>.<wbr/></p>
22077 <td class="entry_units">
22080 <td class="entry_range">
22081 <p>Hue >= 1,<wbr/>
22082 Saturation >= 2,<wbr/>
22086 <td class="entry_hal_version">
22090 <td class="entry_tags">
22091 <ul class="entry_tags">
22092 <li><a href="#tag_RAW">RAW</a></li>
22097 <tr class="entries_header">
22098 <th class="th_details" colspan="6">Details</th>
22100 <tr class="entry_cont">
22101 <td class="entry_details" colspan="6">
22102 <p>The number of input samples for the hue,<wbr/> saturation,<wbr/> and value
22103 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
22104 dimensions given is hue,<wbr/> saturation,<wbr/> value; where hue is the 0th
22110 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22111 <!-- end of entry -->
22114 <tr class="entry" id="static_android.sensor.availableTestPatternModes">
22115 <td class="entry_name
22117 android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes
22119 <td class="entry_type">
22120 <span class="entry_type_name">int32</span>
22121 <span class="entry_type_container">x</span>
22123 <span class="entry_type_array">
22126 <span class="entry_type_visibility"> [public]</span>
22131 <div class="entry_type_notes">list of enums</div>
22134 </td> <!-- entry_type -->
22136 <td class="entry_description">
22137 <p>List of sensor test pattern modes for <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a>
22138 supported by this camera device.<wbr/></p>
22141 <td class="entry_units">
22144 <td class="entry_range">
22145 <p>Any value listed in <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a></p>
22148 <td class="entry_hal_version">
22152 <td class="entry_tags">
22156 <tr class="entries_header">
22157 <th class="th_details" colspan="6">Details</th>
22159 <tr class="entry_cont">
22160 <td class="entry_details" colspan="6">
22161 <p>Defaults to OFF,<wbr/> and always includes OFF if defined.<wbr/></p>
22165 <tr class="entries_header">
22166 <th class="th_details" colspan="6">HAL Implementation Details</th>
22168 <tr class="entry_cont">
22169 <td class="entry_details" colspan="6">
22170 <p>All custom modes must be >= CUSTOM1.<wbr/></p>
22174 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22175 <!-- end of entry -->
22178 <tr class="entry" id="static_android.sensor.opticalBlackRegions">
22179 <td class="entry_name
22181 android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions
22183 <td class="entry_type">
22184 <span class="entry_type_name">int32</span>
22185 <span class="entry_type_container">x</span>
22187 <span class="entry_type_array">
22190 <span class="entry_type_visibility"> [public as rectangle]</span>
22197 </td> <!-- entry_type -->
22199 <td class="entry_description">
22200 <p>List of disjoint rectangles indicating the sensor
22201 optically shielded black pixel regions.<wbr/></p>
22204 <td class="entry_units">
22207 <td class="entry_range">
22210 <td class="entry_hal_version">
22214 <td class="entry_tags">
22218 <tr class="entries_header">
22219 <th class="th_details" colspan="6">Details</th>
22221 <tr class="entry_cont">
22222 <td class="entry_details" colspan="6">
22223 <p>In most camera sensors,<wbr/> the active array is surrounded by some
22224 optically shielded pixel areas.<wbr/> By blocking light,<wbr/> these pixels
22225 provides a reliable black reference for black level compensation
22226 in active array region.<wbr/></p>
22227 <p>This key provides a list of disjoint rectangles specifying the
22228 regions of optically shielded (with metal shield) black pixel
22229 regions if the camera device is capable of reading out these black
22230 pixels in the output raw images.<wbr/> In comparison to the fixed black
22231 level values reported by <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a>,<wbr/> this key
22232 may provide a more accurate way for the application to calculate
22233 black level of each captured raw images.<wbr/></p>
22234 <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
22235 <a href="#dynamic_android.sensor.dynamicWhiteLevel">android.<wbr/>sensor.<wbr/>dynamic<wbr/>White<wbr/>Level</a> will also be reported.<wbr/></p>
22239 <tr class="entries_header">
22240 <th class="th_details" colspan="6">HAL Implementation Details</th>
22242 <tr class="entry_cont">
22243 <td class="entry_details" colspan="6">
22244 <p>This array contains (xmin,<wbr/> ymin,<wbr/> width,<wbr/> height).<wbr/> The (xmin,<wbr/> ymin)
22245 must be >= (0,<wbr/>0) and <=
22246 <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
22247 <= <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/> Each region must be
22248 outside the region reported by
22249 <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>
22250 <p>The HAL must report minimal number of disjoint regions for the
22251 optically shielded back pixel regions.<wbr/> For example,<wbr/> if a region can
22252 be covered by one rectangle,<wbr/> the HAL must not split this region into
22253 multiple rectangles.<wbr/></p>
22257 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22258 <!-- end of entry -->
22261 <tr class="entry" id="static_android.sensor.opaqueRawSize">
22262 <td class="entry_name
22264 android.<wbr/>sensor.<wbr/>opaque<wbr/>Raw<wbr/>Size
22266 <td class="entry_type">
22267 <span class="entry_type_name">int32</span>
22268 <span class="entry_type_container">x</span>
22270 <span class="entry_type_array">
22273 <span class="entry_type_visibility"> [system]</span>
22280 </td> <!-- entry_type -->
22282 <td class="entry_description">
22283 <p>Size in bytes for all the listed opaque RAW buffer sizes</p>
22286 <td class="entry_units">
22289 <td class="entry_range">
22290 <p>Must be large enough to fit the opaque RAW of corresponding size produced by
22294 <td class="entry_hal_version">
22298 <td class="entry_tags">
22302 <tr class="entries_header">
22303 <th class="th_details" colspan="6">Details</th>
22305 <tr class="entry_cont">
22306 <td class="entry_details" colspan="6">
22307 <p>This configurations are listed as <code>(width,<wbr/> height,<wbr/> size_<wbr/>in_<wbr/>bytes)</code> tuples.<wbr/>
22308 This is used for sizing the gralloc buffers for opaque RAW buffers.<wbr/>
22309 All RAW_<wbr/>OPAQUE output stream configuration listed in
22310 <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> will have a corresponding tuple in
22311 this key.<wbr/></p>
22315 <tr class="entries_header">
22316 <th class="th_details" colspan="6">HAL Implementation Details</th>
22318 <tr class="entry_cont">
22319 <td class="entry_details" colspan="6">
22320 <p>This key is added in legacy HAL3.<wbr/>4.<wbr/></p>
22321 <p>For legacy HAL3.<wbr/>4 or above: devices advertising RAW_<wbr/>OPAQUE format output must list this
22322 key.<wbr/> For legacy HAL3.<wbr/>3 or earlier devices: if RAW_<wbr/>OPAQUE ouput is advertised,<wbr/> camera
22323 framework will derive this key by assuming each pixel takes two bytes and no padding bytes
22324 between rows.<wbr/></p>
22328 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22329 <!-- end of entry -->
22333 <!-- end of kind -->
22335 <tr><td colspan="7" class="kind">dynamic</td></tr>
22337 <thead class="entries_header">
22339 <th class="th_name">Property Name</th>
22340 <th class="th_type">Type</th>
22341 <th class="th_description">Description</th>
22342 <th class="th_units">Units</th>
22343 <th class="th_range">Range</th>
22344 <th class="th_hal_version">Initial HIDL HAL version</th>
22345 <th class="th_tags">Tags</th>
22360 <tr class="entry" id="dynamic_android.sensor.exposureTime">
22361 <td class="entry_name
22363 android.<wbr/>sensor.<wbr/>exposure<wbr/>Time
22365 <td class="entry_type">
22366 <span class="entry_type_name">int64</span>
22368 <span class="entry_type_visibility"> [public]</span>
22371 <span class="entry_type_hwlevel">[full] </span>
22376 </td> <!-- entry_type -->
22378 <td class="entry_description">
22379 <p>Duration each pixel is exposed to
22383 <td class="entry_units">
22387 <td class="entry_range">
22388 <p><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></p>
22391 <td class="entry_hal_version">
22395 <td class="entry_tags">
22396 <ul class="entry_tags">
22397 <li><a href="#tag_V1">V1</a></li>
22402 <tr class="entries_header">
22403 <th class="th_details" colspan="6">Details</th>
22405 <tr class="entry_cont">
22406 <td class="entry_details" colspan="6">
22407 <p>If the sensor can't expose this exact duration,<wbr/> it will shorten the
22408 duration exposed to the nearest possible value (rather than expose longer).<wbr/>
22409 The final exposure time used will be available in the output capture result.<wbr/></p>
22410 <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
22411 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
22416 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22417 <!-- end of entry -->
22420 <tr class="entry" id="dynamic_android.sensor.frameDuration">
22421 <td class="entry_name
22423 android.<wbr/>sensor.<wbr/>frame<wbr/>Duration
22425 <td class="entry_type">
22426 <span class="entry_type_name">int64</span>
22428 <span class="entry_type_visibility"> [public]</span>
22431 <span class="entry_type_hwlevel">[full] </span>
22436 </td> <!-- entry_type -->
22438 <td class="entry_description">
22439 <p>Duration from start of frame exposure to
22440 start of next frame exposure.<wbr/></p>
22443 <td class="entry_units">
22447 <td class="entry_range">
22448 <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/>
22449 The duration is capped to <code>max(duration,<wbr/> exposureTime + overhead)</code>.<wbr/></p>
22452 <td class="entry_hal_version">
22456 <td class="entry_tags">
22457 <ul class="entry_tags">
22458 <li><a href="#tag_V1">V1</a></li>
22463 <tr class="entries_header">
22464 <th class="th_details" colspan="6">Details</th>
22466 <tr class="entry_cont">
22467 <td class="entry_details" colspan="6">
22468 <p>The maximum frame rate that can be supported by a camera subsystem is
22469 a function of many factors:</p>
22471 <li>Requested resolutions of output image streams</li>
22472 <li>Availability of binning /<wbr/> skipping modes on the imager</li>
22473 <li>The bandwidth of the imager interface</li>
22474 <li>The bandwidth of the various ISP processing blocks</li>
22476 <p>Since these factors can vary greatly between different ISPs and
22477 sensors,<wbr/> the camera abstraction tries to represent the bandwidth
22478 restrictions with as simple a model as possible.<wbr/></p>
22479 <p>The model presented has the following characteristics:</p>
22481 <li>The image sensor is always configured to output the smallest
22482 resolution possible given the application's requested output stream
22483 sizes.<wbr/> The smallest resolution is defined as being at least as large
22484 as the largest requested output stream size; the camera pipeline must
22485 never digitally upsample sensor data when the crop region covers the
22486 whole sensor.<wbr/> In general,<wbr/> this means that if only small output stream
22487 resolutions are configured,<wbr/> the sensor can provide a higher frame
22489 <li>Since any request may use any or all the currently configured
22490 output streams,<wbr/> the sensor and ISP must be configured to support
22491 scaling a single capture to all the streams at the same time.<wbr/> This
22492 means the camera pipeline must be ready to produce the largest
22493 requested output size without any delay.<wbr/> Therefore,<wbr/> the overall
22494 frame rate of a given configured stream set is governed only by the
22495 largest requested stream resolution.<wbr/></li>
22496 <li>Using more than one output stream in a request does not affect the
22497 frame duration.<wbr/></li>
22498 <li>Certain format-streams may need to do additional background processing
22499 before data is consumed/<wbr/>produced by that stream.<wbr/> These processors
22500 can run concurrently to the rest of the camera pipeline,<wbr/> but
22501 cannot process more than 1 capture at a time.<wbr/></li>
22503 <p>The necessary information for the application,<wbr/> given the model above,<wbr/> is provided via
22504 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/>
22505 These are used to determine the maximum frame rate /<wbr/> minimum frame duration that is
22506 possible for a given stream configuration.<wbr/></p>
22507 <p>Specifically,<wbr/> the application can use the following rules to
22508 determine the minimum frame duration it can request from the camera
22511 <li>Let the set of currently configured input/<wbr/>output streams be called <code>S</code>.<wbr/></li>
22512 <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>
22513 (with its respective size/<wbr/>format).<wbr/> Let this set of frame durations be called <code>F</code>.<wbr/></li>
22514 <li>For any given request <code>R</code>,<wbr/> the minimum frame duration allowed for <code>R</code> is the maximum
22515 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>
22517 <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>
22518 using its respective size/<wbr/>format),<wbr/> then the frame duration in <code>F</code> determines the steady
22519 state frame rate that the application will get if it uses <code>R</code> as a repeating request.<wbr/> Let
22520 this special kind of request be called <code>Rsimple</code>.<wbr/></p>
22521 <p>A repeating request <code>Rsimple</code> can be <em>occasionally</em> interleaved by a single capture of a
22522 new request <code>Rstall</code> (which has at least one in-use stream with a non-0 stall time) and if
22523 <code>Rstall</code> has the same minimum frame duration this will not cause a frame rate loss if all
22524 buffers from the previous <code>Rstall</code> have already been delivered.<wbr/></p>
22525 <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>
22526 <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
22527 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
22531 <tr class="entries_header">
22532 <th class="th_details" colspan="6">HAL Implementation Details</th>
22534 <tr class="entry_cont">
22535 <td class="entry_details" colspan="6">
22536 <p>For more details about stalling,<wbr/> see
22537 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>.<wbr/></p>
22541 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22542 <!-- end of entry -->
22545 <tr class="entry" id="dynamic_android.sensor.sensitivity">
22546 <td class="entry_name
22548 android.<wbr/>sensor.<wbr/>sensitivity
22550 <td class="entry_type">
22551 <span class="entry_type_name">int32</span>
22553 <span class="entry_type_visibility"> [public]</span>
22556 <span class="entry_type_hwlevel">[full] </span>
22561 </td> <!-- entry_type -->
22563 <td class="entry_description">
22564 <p>The amount of gain applied to sensor data
22565 before processing.<wbr/></p>
22568 <td class="entry_units">
22569 ISO arithmetic units
22572 <td class="entry_range">
22573 <p><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></p>
22576 <td class="entry_hal_version">
22580 <td class="entry_tags">
22581 <ul class="entry_tags">
22582 <li><a href="#tag_V1">V1</a></li>
22587 <tr class="entries_header">
22588 <th class="th_details" colspan="6">Details</th>
22590 <tr class="entry_cont">
22591 <td class="entry_details" colspan="6">
22592 <p>The sensitivity is the standard ISO sensitivity value,<wbr/>
22593 as defined in ISO 12232:2006.<wbr/></p>
22594 <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
22595 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
22596 is guaranteed to use only analog amplification for applying the gain.<wbr/></p>
22597 <p>If the camera device cannot apply the exact sensitivity
22598 requested,<wbr/> it will reduce the gain to the nearest supported
22599 value.<wbr/> The final sensitivity used will be available in the
22600 output capture result.<wbr/></p>
22601 <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
22602 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
22606 <tr class="entries_header">
22607 <th class="th_details" colspan="6">HAL Implementation Details</th>
22609 <tr class="entry_cont">
22610 <td class="entry_details" colspan="6">
22611 <p>ISO 12232:2006 REI method is acceptable.<wbr/></p>
22615 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22616 <!-- end of entry -->
22619 <tr class="entry" id="dynamic_android.sensor.timestamp">
22620 <td class="entry_name
22622 android.<wbr/>sensor.<wbr/>timestamp
22624 <td class="entry_type">
22625 <span class="entry_type_name">int64</span>
22627 <span class="entry_type_visibility"> [public]</span>
22630 <span class="entry_type_hwlevel">[legacy] </span>
22635 </td> <!-- entry_type -->
22637 <td class="entry_description">
22638 <p>Time at start of exposure of first
22639 row of the image sensor active array,<wbr/> in nanoseconds.<wbr/></p>
22642 <td class="entry_units">
22646 <td class="entry_range">
22650 <td class="entry_hal_version">
22654 <td class="entry_tags">
22655 <ul class="entry_tags">
22656 <li><a href="#tag_BC">BC</a></li>
22661 <tr class="entries_header">
22662 <th class="th_details" colspan="6">Details</th>
22664 <tr class="entry_cont">
22665 <td class="entry_details" colspan="6">
22666 <p>The timestamps are also included in all image
22667 buffers produced for the same capture,<wbr/> and will be identical
22668 on all the outputs.<wbr/></p>
22669 <p>When <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> UNKNOWN,<wbr/>
22670 the timestamps measure time since an unspecified starting point,<wbr/>
22671 and are monotonically increasing.<wbr/> They can be compared with the
22672 timestamps for other captures from the same camera device,<wbr/> but are
22673 not guaranteed to be comparable to any other time source.<wbr/></p>
22674 <p>When <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME,<wbr/> the
22675 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
22676 be compared to other timestamps from other subsystems that
22677 are using that base.<wbr/></p>
22678 <p>For reprocessing,<wbr/> the timestamp will match the start of exposure of
22679 the input image,<wbr/> i.<wbr/>e.<wbr/> <a href="https://developer.android.com/reference/CaptureResult.html#SENSOR_TIMESTAMP">the
22680 timestamp</a> in the TotalCaptureResult that was used to create the
22681 reprocess capture request.<wbr/></p>
22685 <tr class="entries_header">
22686 <th class="th_details" colspan="6">HAL Implementation Details</th>
22688 <tr class="entry_cont">
22689 <td class="entry_details" colspan="6">
22690 <p>All timestamps must be in reference to the kernel's
22691 CLOCK_<wbr/>BOOTTIME monotonic clock,<wbr/> which properly accounts for
22692 time spent asleep.<wbr/> This allows for synchronization with
22693 sensors that continue to operate while the system is
22694 otherwise asleep.<wbr/></p>
22695 <p>If <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME,<wbr/>
22696 The timestamp must be synchronized with the timestamps from other
22697 sensor subsystems that are using the same timebase.<wbr/></p>
22698 <p>For reprocessing,<wbr/> the input image's start of exposure can be looked up
22699 with <a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a> from the metadata included in the
22700 capture request.<wbr/></p>
22704 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22705 <!-- end of entry -->
22708 <tr class="entry" id="dynamic_android.sensor.temperature">
22709 <td class="entry_name
22711 android.<wbr/>sensor.<wbr/>temperature
22713 <td class="entry_type">
22714 <span class="entry_type_name">float</span>
22716 <span class="entry_type_visibility"> [system]</span>
22723 </td> <!-- entry_type -->
22725 <td class="entry_description">
22726 <p>The temperature of the sensor,<wbr/> sampled at the time
22727 exposure began for this frame.<wbr/></p>
22728 <p>The thermal diode being queried should be inside the sensor PCB,<wbr/> or
22729 somewhere close to it.<wbr/></p>
22732 <td class="entry_units">
22736 <td class="entry_range">
22737 <p>Optional.<wbr/> This value is missing if no temperature is available.<wbr/></p>
22740 <td class="entry_hal_version">
22744 <td class="entry_tags">
22745 <ul class="entry_tags">
22746 <li><a href="#tag_FUTURE">FUTURE</a></li>
22753 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22754 <!-- end of entry -->
22757 <tr class="entry" id="dynamic_android.sensor.neutralColorPoint">
22758 <td class="entry_name
22760 android.<wbr/>sensor.<wbr/>neutral<wbr/>Color<wbr/>Point
22762 <td class="entry_type">
22763 <span class="entry_type_name">rational</span>
22764 <span class="entry_type_container">x</span>
22766 <span class="entry_type_array">
22769 <span class="entry_type_visibility"> [public]</span>
22776 </td> <!-- entry_type -->
22778 <td class="entry_description">
22779 <p>The estimated camera neutral color in the native sensor colorspace at
22780 the time of capture.<wbr/></p>
22783 <td class="entry_units">
22786 <td class="entry_range">
22789 <td class="entry_hal_version">
22793 <td class="entry_tags">
22794 <ul class="entry_tags">
22795 <li><a href="#tag_RAW">RAW</a></li>
22800 <tr class="entries_header">
22801 <th class="th_details" colspan="6">Details</th>
22803 <tr class="entry_cont">
22804 <td class="entry_details" colspan="6">
22805 <p>This value gives the neutral color point encoded as an RGB value in the
22806 native sensor color space.<wbr/> The neutral color point indicates the
22807 currently estimated white point of the scene illumination.<wbr/> It can be
22808 used to interpolate between the provided color transforms when
22809 processing raw sensor data.<wbr/></p>
22810 <p>The order of the values is R,<wbr/> G,<wbr/> B; where R is in the lowest index.<wbr/></p>
22815 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22816 <!-- end of entry -->
22819 <tr class="entry" id="dynamic_android.sensor.noiseProfile">
22820 <td class="entry_name
22822 android.<wbr/>sensor.<wbr/>noise<wbr/>Profile
22824 <td class="entry_type">
22825 <span class="entry_type_name">double</span>
22826 <span class="entry_type_container">x</span>
22828 <span class="entry_type_array">
22831 <span class="entry_type_visibility"> [public as pairDoubleDouble]</span>
22836 <div class="entry_type_notes">Pairs of noise model coefficients</div>
22839 </td> <!-- entry_type -->
22841 <td class="entry_description">
22842 <p>Noise model coefficients for each CFA mosaic channel.<wbr/></p>
22845 <td class="entry_units">
22848 <td class="entry_range">
22851 <td class="entry_hal_version">
22855 <td class="entry_tags">
22856 <ul class="entry_tags">
22857 <li><a href="#tag_RAW">RAW</a></li>
22862 <tr class="entries_header">
22863 <th class="th_details" colspan="6">Details</th>
22865 <tr class="entry_cont">
22866 <td class="entry_details" colspan="6">
22867 <p>This key contains two noise model coefficients for each CFA channel
22868 corresponding to the sensor amplification (S) and sensor readout
22869 noise (O).<wbr/> These are given as pairs of coefficients for each channel
22870 in the same order as channels listed for the CFA layout key
22871 (see <a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a>).<wbr/> This is
22872 represented as an array of Pair<Double,<wbr/> Double>,<wbr/> where
22873 the first member of the Pair at index n is the S coefficient and the
22874 second member is the O coefficient for the nth color channel in the CFA.<wbr/></p>
22875 <p>These coefficients are used in a two parameter noise model to describe
22876 the amount of noise present in the image for each CFA channel.<wbr/> The
22877 noise model used here is:</p>
22878 <p>N(x) = sqrt(Sx + O)</p>
22879 <p>Where x represents the recorded signal of a CFA channel normalized to
22880 the range [0,<wbr/> 1],<wbr/> and S and O are the noise model coeffiecients for
22881 that channel.<wbr/></p>
22882 <p>A more detailed description of the noise model can be found in the
22883 Adobe DNG specification for the NoiseProfile tag.<wbr/></p>
22887 <tr class="entries_header">
22888 <th class="th_details" colspan="6">HAL Implementation Details</th>
22890 <tr class="entry_cont">
22891 <td class="entry_details" colspan="6">
22892 <p>For a CFA layout of RGGB,<wbr/> the list of coefficients would be given as
22893 an array of doubles S0,<wbr/>O0,<wbr/>S1,<wbr/>O1,...,<wbr/> where S0 and O0 are the coefficients
22894 for the red channel,<wbr/> S1 and O1 are the coefficients for the first green
22895 channel,<wbr/> etc.<wbr/></p>
22899 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22900 <!-- end of entry -->
22903 <tr class="entry" id="dynamic_android.sensor.profileHueSatMap">
22904 <td class="entry_name
22906 android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map
22908 <td class="entry_type">
22909 <span class="entry_type_name">float</span>
22910 <span class="entry_type_container">x</span>
22912 <span class="entry_type_array">
22913 hue_samples x saturation_samples x value_samples x 3
22915 <span class="entry_type_visibility"> [system]</span>
22920 <div class="entry_type_notes">Mapping for hue,<wbr/> saturation,<wbr/> and value</div>
22923 </td> <!-- entry_type -->
22925 <td class="entry_description">
22926 <p>A mapping containing a hue shift,<wbr/> saturation scale,<wbr/> and value scale
22927 for each pixel.<wbr/></p>
22930 <td class="entry_units">
22932 The hue shift is given in degrees; saturation and value scale factors are
22933 unitless and are between 0 and 1 inclusive
22937 <td class="entry_range">
22940 <td class="entry_hal_version">
22944 <td class="entry_tags">
22945 <ul class="entry_tags">
22946 <li><a href="#tag_RAW">RAW</a></li>
22951 <tr class="entries_header">
22952 <th class="th_details" colspan="6">Details</th>
22954 <tr class="entry_cont">
22955 <td class="entry_details" colspan="6">
22956 <p>hue_<wbr/>samples,<wbr/> saturation_<wbr/>samples,<wbr/> and value_<wbr/>samples are given in
22957 <a href="#static_android.sensor.profileHueSatMapDimensions">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map<wbr/>Dimensions</a>.<wbr/></p>
22958 <p>Each entry of this map contains three floats corresponding to the
22959 hue shift,<wbr/> saturation scale,<wbr/> and value scale,<wbr/> respectively; where the
22960 hue shift has the lowest index.<wbr/> The map entries are stored in the key
22961 in nested loop order,<wbr/> with the value divisions in the outer loop,<wbr/> the
22962 hue divisions in the middle loop,<wbr/> and the saturation divisions in the
22963 inner loop.<wbr/> All zero input saturation entries are required to have a
22964 value scale factor of 1.<wbr/>0.<wbr/></p>
22969 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22970 <!-- end of entry -->
22973 <tr class="entry" id="dynamic_android.sensor.profileToneCurve">
22974 <td class="entry_name
22976 android.<wbr/>sensor.<wbr/>profile<wbr/>Tone<wbr/>Curve
22978 <td class="entry_type">
22979 <span class="entry_type_name">float</span>
22980 <span class="entry_type_container">x</span>
22982 <span class="entry_type_array">
22985 <span class="entry_type_visibility"> [system]</span>
22990 <div class="entry_type_notes">Samples defining a spline for a tone-mapping curve</div>
22993 </td> <!-- entry_type -->
22995 <td class="entry_description">
22996 <p>A list of x,<wbr/>y samples defining a tone-mapping curve for gamma adjustment.<wbr/></p>
22999 <td class="entry_units">
23002 <td class="entry_range">
23003 <p>Each sample has an input range of <code>[0,<wbr/> 1]</code> and an output range of
23004 <code>[0,<wbr/> 1]</code>.<wbr/> The first sample is required to be <code>(0,<wbr/> 0)</code>,<wbr/> and the last
23005 sample is required to be <code>(1,<wbr/> 1)</code>.<wbr/></p>
23008 <td class="entry_hal_version">
23012 <td class="entry_tags">
23013 <ul class="entry_tags">
23014 <li><a href="#tag_RAW">RAW</a></li>
23019 <tr class="entries_header">
23020 <th class="th_details" colspan="6">Details</th>
23022 <tr class="entry_cont">
23023 <td class="entry_details" colspan="6">
23024 <p>This key contains a default tone curve that can be applied while
23025 processing the image as a starting point for user adjustments.<wbr/>
23026 The curve is specified as a list of value pairs in linear gamma.<wbr/>
23027 The curve is interpolated using a cubic spline.<wbr/></p>
23032 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23033 <!-- end of entry -->
23036 <tr class="entry" id="dynamic_android.sensor.greenSplit">
23037 <td class="entry_name
23039 android.<wbr/>sensor.<wbr/>green<wbr/>Split
23041 <td class="entry_type">
23042 <span class="entry_type_name">float</span>
23044 <span class="entry_type_visibility"> [public]</span>
23051 </td> <!-- entry_type -->
23053 <td class="entry_description">
23054 <p>The worst-case divergence between Bayer green channels.<wbr/></p>
23057 <td class="entry_units">
23060 <td class="entry_range">
23064 <td class="entry_hal_version">
23068 <td class="entry_tags">
23069 <ul class="entry_tags">
23070 <li><a href="#tag_RAW">RAW</a></li>
23075 <tr class="entries_header">
23076 <th class="th_details" colspan="6">Details</th>
23078 <tr class="entry_cont">
23079 <td class="entry_details" colspan="6">
23080 <p>This value is an estimate of the worst case split between the
23081 Bayer green channels in the red and blue rows in the sensor color
23082 filter array.<wbr/></p>
23083 <p>The green split is calculated as follows:</p>
23085 <li>A 5x5 pixel (or larger) window W within the active sensor array is
23086 chosen.<wbr/> The term 'pixel' here is taken to mean a group of 4 Bayer
23087 mosaic channels (R,<wbr/> Gr,<wbr/> Gb,<wbr/> B).<wbr/> The location and size of the window
23088 chosen is implementation defined,<wbr/> and should be chosen to provide a
23089 green split estimate that is both representative of the entire image
23090 for this camera sensor,<wbr/> and can be calculated quickly.<wbr/></li>
23091 <li>The arithmetic mean of the green channels from the red
23092 rows (mean_<wbr/>Gr) within W is computed.<wbr/></li>
23093 <li>The arithmetic mean of the green channels from the blue
23094 rows (mean_<wbr/>Gb) within W is computed.<wbr/></li>
23095 <li>The maximum ratio R of the two means is computed as follows:
23096 <code>R = max((mean_<wbr/>Gr + 1)/<wbr/>(mean_<wbr/>Gb + 1),<wbr/> (mean_<wbr/>Gb + 1)/<wbr/>(mean_<wbr/>Gr + 1))</code></li>
23098 <p>The ratio R is the green split divergence reported for this property,<wbr/>
23099 which represents how much the green channels differ in the mosaic
23100 pattern.<wbr/> This value is typically used to determine the treatment of
23101 the green mosaic channels when demosaicing.<wbr/></p>
23102 <p>The green split value can be roughly interpreted as follows:</p>
23104 <li>R < 1.<wbr/>03 is a negligible split (<3% divergence).<wbr/></li>
23105 <li>1.<wbr/>20 <= R >= 1.<wbr/>03 will require some software
23106 correction to avoid demosaic errors (3-20% divergence).<wbr/></li>
23107 <li>R > 1.<wbr/>20 will require strong software correction to produce
23108 a usuable image (>20% divergence).<wbr/></li>
23113 <tr class="entries_header">
23114 <th class="th_details" colspan="6">HAL Implementation Details</th>
23116 <tr class="entry_cont">
23117 <td class="entry_details" colspan="6">
23118 <p>The green split given may be a static value based on prior
23119 characterization of the camera sensor using the green split
23120 calculation method given here over a large,<wbr/> representative,<wbr/> sample
23121 set of images.<wbr/> Other methods of calculation that produce equivalent
23122 results,<wbr/> and can be interpreted in the same manner,<wbr/> may be used.<wbr/></p>
23126 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23127 <!-- end of entry -->
23130 <tr class="entry" id="dynamic_android.sensor.testPatternData">
23131 <td class="entry_name
23133 android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data
23135 <td class="entry_type">
23136 <span class="entry_type_name">int32</span>
23137 <span class="entry_type_container">x</span>
23139 <span class="entry_type_array">
23142 <span class="entry_type_visibility"> [public]</span>
23149 </td> <!-- entry_type -->
23151 <td class="entry_description">
23152 <p>A pixel <code>[R,<wbr/> G_<wbr/>even,<wbr/> G_<wbr/>odd,<wbr/> B]</code> that supplies the test pattern
23153 when <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a> is SOLID_<wbr/>COLOR.<wbr/></p>
23156 <td class="entry_units">
23159 <td class="entry_range">
23162 <td class="entry_hal_version">
23166 <td class="entry_tags">
23170 <tr class="entries_header">
23171 <th class="th_details" colspan="6">Details</th>
23173 <tr class="entry_cont">
23174 <td class="entry_details" colspan="6">
23175 <p>Each color channel is treated as an unsigned 32-bit integer.<wbr/>
23176 The camera device then uses the most significant X bits
23177 that correspond to how many bits are in its Bayer raw sensor
23179 <p>For example,<wbr/> a sensor with RAW10 Bayer output would use the
23180 10 most significant bits from each color channel.<wbr/></p>
23184 <tr class="entries_header">
23185 <th class="th_details" colspan="6">HAL Implementation Details</th>
23187 <tr class="entry_cont">
23188 <td class="entry_details" colspan="6">
23193 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23194 <!-- end of entry -->
23197 <tr class="entry" id="dynamic_android.sensor.testPatternMode">
23198 <td class="entry_name
23200 android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode
23202 <td class="entry_type">
23203 <span class="entry_type_name entry_type_name_enum">int32</span>
23205 <span class="entry_type_visibility"> [public]</span>
23211 <ul class="entry_type_enum">
23213 <span class="entry_type_enum_name">OFF (v3.2)</span>
23214 <span class="entry_type_enum_notes"><p>No test pattern mode is used,<wbr/> and the camera
23215 device returns captures from the image sensor.<wbr/></p>
23216 <p>This is the default if the key is not set.<wbr/></p></span>
23219 <span class="entry_type_enum_name">SOLID_COLOR (v3.2)</span>
23220 <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
23221 respective color channel provided in
23222 <a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a>.<wbr/></p>
23223 <p>For example:</p>
23224 <pre><code>android.<wbr/>testPatternData = [0,<wbr/> 0xFFFFFFFF,<wbr/> 0xFFFFFFFF,<wbr/> 0]
23226 <p>All green pixels are 100% green.<wbr/> All red/<wbr/>blue pixels are black.<wbr/></p>
23227 <pre><code>android.<wbr/>testPatternData = [0xFFFFFFFF,<wbr/> 0,<wbr/> 0xFFFFFFFF,<wbr/> 0]
23229 <p>All red pixels are 100% red.<wbr/> Only the odd green pixels
23230 are 100% green.<wbr/> All blue pixels are 100% black.<wbr/></p></span>
23233 <span class="entry_type_enum_name">COLOR_BARS (v3.2)</span>
23234 <span class="entry_type_enum_notes"><p>All pixel data is replaced with an 8-bar color pattern.<wbr/></p>
23235 <p>The vertical bars (left-to-right) are as follows:</p>
23237 <li>100% white</li>
23246 <p>In general the image would look like the following:</p>
23247 <pre><code>W Y C G M R B K
23252 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
23253 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
23254 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
23256 (B = Blue,<wbr/> K = Black)
23258 <p>Each bar should take up 1/<wbr/>8 of the sensor pixel array width.<wbr/>
23259 When this is not possible,<wbr/> the bar size should be rounded
23260 down to the nearest integer and the pattern can repeat
23261 on the right side.<wbr/></p>
23262 <p>Each bar's height must always take up the full sensor
23263 pixel array height.<wbr/></p>
23264 <p>Each pixel in this test pattern must be set to either
23265 0% intensity or 100% intensity.<wbr/></p></span>
23268 <span class="entry_type_enum_name">COLOR_BARS_FADE_TO_GRAY (v3.2)</span>
23269 <span class="entry_type_enum_notes"><p>The test pattern is similar to COLOR_<wbr/>BARS,<wbr/> except that
23270 each bar should start at its specified color at the top,<wbr/>
23271 and fade to gray at the bottom.<wbr/></p>
23272 <p>Furthermore each bar is further subdivided into a left and
23273 right half.<wbr/> The left half should have a smooth gradient,<wbr/>
23274 and the right half should have a quantized gradient.<wbr/></p>
23275 <p>In particular,<wbr/> the right half's should consist of blocks of the
23276 same color for 1/<wbr/>16th active sensor pixel array width.<wbr/></p>
23277 <p>The least significant bits in the quantized gradient should
23278 be copied from the most significant bits of the smooth gradient.<wbr/></p>
23279 <p>The height of each bar should always be a multiple of 128.<wbr/>
23280 When this is not the case,<wbr/> the pattern should repeat at the bottom
23281 of the image.<wbr/></p></span>
23284 <span class="entry_type_enum_name">PN9 (v3.2)</span>
23285 <span class="entry_type_enum_notes"><p>All pixel data is replaced by a pseudo-random sequence
23286 generated from a PN9 512-bit sequence (typically implemented
23287 in hardware with a linear feedback shift register).<wbr/></p>
23288 <p>The generator should be reset at the beginning of each frame,<wbr/>
23289 and thus each subsequent raw frame with this test pattern should
23290 be exactly the same as the last.<wbr/></p></span>
23293 <span class="entry_type_enum_name">CUSTOM1 (v3.2)</span>
23294 <span class="entry_type_enum_value">256</span>
23295 <span class="entry_type_enum_notes"><p>The first custom test pattern.<wbr/> All custom patterns that are
23296 available only on this camera device are at least this numeric
23298 <p>All of the custom test patterns will be static
23299 (that is the raw image must not vary from frame to frame).<wbr/></p></span>
23303 </td> <!-- entry_type -->
23305 <td class="entry_description">
23306 <p>When enabled,<wbr/> the sensor sends a test pattern instead of
23307 doing a real exposure from the camera.<wbr/></p>
23310 <td class="entry_units">
23313 <td class="entry_range">
23314 <p><a href="#static_android.sensor.availableTestPatternModes">android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes</a></p>
23317 <td class="entry_hal_version">
23321 <td class="entry_tags">
23325 <tr class="entries_header">
23326 <th class="th_details" colspan="6">Details</th>
23328 <tr class="entry_cont">
23329 <td class="entry_details" colspan="6">
23330 <p>When a test pattern is enabled,<wbr/> all manual sensor controls specified
23331 by android.<wbr/>sensor.<wbr/>* will be ignored.<wbr/> All other controls should
23332 work as normal.<wbr/></p>
23333 <p>For example,<wbr/> if manual flash is enabled,<wbr/> flash firing should still
23334 occur (and that the test pattern remain unmodified,<wbr/> since the flash
23335 would not actually affect it).<wbr/></p>
23336 <p>Defaults to OFF.<wbr/></p>
23340 <tr class="entries_header">
23341 <th class="th_details" colspan="6">HAL Implementation Details</th>
23343 <tr class="entry_cont">
23344 <td class="entry_details" colspan="6">
23345 <p>All test patterns are specified in the Bayer domain.<wbr/></p>
23346 <p>The HAL may choose to substitute test patterns from the sensor
23347 with test patterns from on-device memory.<wbr/> In that case,<wbr/> it should be
23348 indistinguishable to the ISP whether the data came from the
23349 sensor interconnect bus (such as CSI2) or memory.<wbr/></p>
23353 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23354 <!-- end of entry -->
23357 <tr class="entry" id="dynamic_android.sensor.rollingShutterSkew">
23358 <td class="entry_name
23360 android.<wbr/>sensor.<wbr/>rolling<wbr/>Shutter<wbr/>Skew
23362 <td class="entry_type">
23363 <span class="entry_type_name">int64</span>
23365 <span class="entry_type_visibility"> [public]</span>
23368 <span class="entry_type_hwlevel">[limited] </span>
23373 </td> <!-- entry_type -->
23375 <td class="entry_description">
23376 <p>Duration between the start of first row exposure
23377 and the start of last row exposure.<wbr/></p>
23380 <td class="entry_units">
23384 <td class="entry_range">
23385 <p>>= 0 and <
23386 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/></p>
23389 <td class="entry_hal_version">
23393 <td class="entry_tags">
23394 <ul class="entry_tags">
23395 <li><a href="#tag_V1">V1</a></li>
23400 <tr class="entries_header">
23401 <th class="th_details" colspan="6">Details</th>
23403 <tr class="entry_cont">
23404 <td class="entry_details" colspan="6">
23405 <p>This is the exposure time skew between the first and last
23406 row exposure start times.<wbr/> The first row and the last row are
23407 the first and last rows inside of the
23408 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
23409 <p>For typical camera sensors that use rolling shutters,<wbr/> this is also equivalent
23410 to the frame readout time.<wbr/></p>
23414 <tr class="entries_header">
23415 <th class="th_details" colspan="6">HAL Implementation Details</th>
23417 <tr class="entry_cont">
23418 <td class="entry_details" colspan="6">
23419 <p>The HAL must report <code>0</code> if the sensor is using global shutter,<wbr/> where all pixels begin
23420 exposure at the same time.<wbr/></p>
23424 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23425 <!-- end of entry -->
23428 <tr class="entry" id="dynamic_android.sensor.dynamicBlackLevel">
23429 <td class="entry_name
23431 android.<wbr/>sensor.<wbr/>dynamic<wbr/>Black<wbr/>Level
23433 <td class="entry_type">
23434 <span class="entry_type_name">float</span>
23435 <span class="entry_type_container">x</span>
23437 <span class="entry_type_array">
23440 <span class="entry_type_visibility"> [public]</span>
23445 <div class="entry_type_notes">2x2 raw count block</div>
23448 </td> <!-- entry_type -->
23450 <td class="entry_description">
23451 <p>A per-frame dynamic black level offset for each of the color filter
23452 arrangement (CFA) mosaic channels.<wbr/></p>
23455 <td class="entry_units">
23458 <td class="entry_range">
23459 <p>>= 0 for each.<wbr/></p>
23462 <td class="entry_hal_version">
23466 <td class="entry_tags">
23467 <ul class="entry_tags">
23468 <li><a href="#tag_RAW">RAW</a></li>
23473 <tr class="entries_header">
23474 <th class="th_details" colspan="6">Details</th>
23476 <tr class="entry_cont">
23477 <td class="entry_details" colspan="6">
23478 <p>Camera sensor black levels may vary dramatically for different
23479 capture settings (e.<wbr/>g.<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>).<wbr/> The fixed black
23480 level reported by <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> may be too
23481 inaccurate to represent the actual value on a per-frame basis.<wbr/> The
23482 camera device internal pipeline relies on reliable black level values
23483 to process the raw images appropriately.<wbr/> To get the best image
23484 quality,<wbr/> the camera device may choose to estimate the per frame black
23485 level values either based on optically shielded black regions
23486 (<a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a>) or its internal model.<wbr/></p>
23487 <p>This key reports the camera device estimated per-frame zero light
23488 value for each of the CFA mosaic channels in the camera sensor.<wbr/> The
23489 <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> may only represent a coarse
23490 approximation of the actual black level values.<wbr/> This value is the
23491 black level used in camera device internal image processing pipeline
23492 and generally more accurate than the fixed black level values.<wbr/>
23493 However,<wbr/> since they are estimated values by the camera device,<wbr/> they
23494 may not be as accurate as the black level values calculated from the
23495 optical black pixels reported by <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a>.<wbr/></p>
23496 <p>The values are given in the same order as channels listed for the CFA
23497 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
23498 nth value given corresponds to the black level offset for the nth
23499 color channel listed in the CFA.<wbr/></p>
23500 <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
23501 camera device advertises this key via <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureResultKeys">CameraCharacteristics#getAvailableCaptureResultKeys</a>.<wbr/></p>
23505 <tr class="entries_header">
23506 <th class="th_details" colspan="6">HAL Implementation Details</th>
23508 <tr class="entry_cont">
23509 <td class="entry_details" colspan="6">
23510 <p>The values are given in row-column scan order,<wbr/> with the first value
23511 corresponding to the element of the CFA in row=0,<wbr/> column=0.<wbr/></p>
23515 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23516 <!-- end of entry -->
23519 <tr class="entry" id="dynamic_android.sensor.dynamicWhiteLevel">
23520 <td class="entry_name
23522 android.<wbr/>sensor.<wbr/>dynamic<wbr/>White<wbr/>Level
23524 <td class="entry_type">
23525 <span class="entry_type_name">int32</span>
23527 <span class="entry_type_visibility"> [public]</span>
23534 </td> <!-- entry_type -->
23536 <td class="entry_description">
23537 <p>Maximum raw value output by sensor for this frame.<wbr/></p>
23540 <td class="entry_units">
23543 <td class="entry_range">
23547 <td class="entry_hal_version">
23551 <td class="entry_tags">
23552 <ul class="entry_tags">
23553 <li><a href="#tag_RAW">RAW</a></li>
23558 <tr class="entries_header">
23559 <th class="th_details" colspan="6">Details</th>
23561 <tr class="entry_cont">
23562 <td class="entry_details" colspan="6">
23563 <p>Since the <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> may change for different
23564 capture settings (e.<wbr/>g.,<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>),<wbr/> the white
23565 level will change accordingly.<wbr/> This key is similar to
23566 <a href="#static_android.sensor.info.whiteLevel">android.<wbr/>sensor.<wbr/>info.<wbr/>white<wbr/>Level</a>,<wbr/> but specifies the camera device
23567 estimated white level for each frame.<wbr/></p>
23568 <p>This key will be available if <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a> is
23569 available or the camera device advertises this key via
23570 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a>.<wbr/></p>
23574 <tr class="entries_header">
23575 <th class="th_details" colspan="6">HAL Implementation Details</th>
23577 <tr class="entry_cont">
23578 <td class="entry_details" colspan="6">
23579 <p>The full bit depth of the sensor must be available in the raw data,<wbr/>
23580 so the value for linear sensors should not be significantly lower
23581 than maximum raw value supported,<wbr/> i.<wbr/>e.<wbr/> 2^(sensor bits per pixel).<wbr/></p>
23585 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23586 <!-- end of entry -->
23590 <!-- end of kind -->
23593 <!-- end of section -->
23594 <tr><td colspan="7" id="section_shading" class="section">shading</td></tr>
23597 <tr><td colspan="7" class="kind">controls</td></tr>
23599 <thead class="entries_header">
23601 <th class="th_name">Property Name</th>
23602 <th class="th_type">Type</th>
23603 <th class="th_description">Description</th>
23604 <th class="th_units">Units</th>
23605 <th class="th_range">Range</th>
23606 <th class="th_hal_version">Initial HIDL HAL version</th>
23607 <th class="th_tags">Tags</th>
23622 <tr class="entry" id="controls_android.shading.mode">
23623 <td class="entry_name
23625 android.<wbr/>shading.<wbr/>mode
23627 <td class="entry_type">
23628 <span class="entry_type_name entry_type_name_enum">byte</span>
23630 <span class="entry_type_visibility"> [public]</span>
23633 <span class="entry_type_hwlevel">[full] </span>
23637 <ul class="entry_type_enum">
23639 <span class="entry_type_enum_name">OFF (v3.2)</span>
23640 <span class="entry_type_enum_notes"><p>No lens shading correction is applied.<wbr/></p></span>
23643 <span class="entry_type_enum_name">FAST (v3.2)</span>
23644 <span class="entry_type_enum_notes"><p>Apply lens shading corrections,<wbr/> without slowing
23645 frame rate relative to sensor raw output</p></span>
23648 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
23649 <span class="entry_type_enum_notes"><p>Apply high-quality lens shading correction,<wbr/> at the
23650 cost of possibly reduced frame rate.<wbr/></p></span>
23654 </td> <!-- entry_type -->
23656 <td class="entry_description">
23657 <p>Quality of lens shading correction applied
23658 to the image data.<wbr/></p>
23661 <td class="entry_units">
23664 <td class="entry_range">
23665 <p><a href="#static_android.shading.availableModes">android.<wbr/>shading.<wbr/>available<wbr/>Modes</a></p>
23668 <td class="entry_hal_version">
23672 <td class="entry_tags">
23676 <tr class="entries_header">
23677 <th class="th_details" colspan="6">Details</th>
23679 <tr class="entry_cont">
23680 <td class="entry_details" colspan="6">
23681 <p>When set to OFF mode,<wbr/> no lens shading correction will be applied by the
23682 camera device,<wbr/> and an identity lens shading map data will be provided
23683 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
23684 shading map with size of <code>[ 4,<wbr/> 3 ]</code>,<wbr/>
23685 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
23686 map shown below:</p>
23687 <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/>
23688 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/>
23689 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/>
23690 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/>
23691 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 ]
23694 <p>When set to other modes,<wbr/> lens shading correction will be applied by the camera
23695 device.<wbr/> Applications can request lens shading map data by setting
23696 <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
23697 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
23698 data will be the one applied by the camera device for this capture request.<wbr/></p>
23699 <p>The shading map data may depend on the auto-exposure (AE) and AWB statistics,<wbr/> therefore
23700 the reliability of the map data may be affected by the AE and AWB algorithms.<wbr/> When AE and
23701 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>
23702 OFF),<wbr/> to get best results,<wbr/> it is recommended that the applications wait for the AE and AWB
23703 to be converged before using the returned shading map data.<wbr/></p>
23708 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23709 <!-- end of entry -->
23712 <tr class="entry" id="controls_android.shading.strength">
23713 <td class="entry_name
23715 android.<wbr/>shading.<wbr/>strength
23717 <td class="entry_type">
23718 <span class="entry_type_name">byte</span>
23720 <span class="entry_type_visibility"> [system]</span>
23727 </td> <!-- entry_type -->
23729 <td class="entry_description">
23730 <p>Control the amount of shading correction
23731 applied to the images</p>
23734 <td class="entry_units">
23735 unitless: 1-10; 10 is full shading
23739 <td class="entry_range">
23742 <td class="entry_hal_version">
23746 <td class="entry_tags">
23747 <ul class="entry_tags">
23748 <li><a href="#tag_FUTURE">FUTURE</a></li>
23755 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23756 <!-- end of entry -->
23760 <!-- end of kind -->
23762 <tr><td colspan="7" class="kind">dynamic</td></tr>
23764 <thead class="entries_header">
23766 <th class="th_name">Property Name</th>
23767 <th class="th_type">Type</th>
23768 <th class="th_description">Description</th>
23769 <th class="th_units">Units</th>
23770 <th class="th_range">Range</th>
23771 <th class="th_hal_version">Initial HIDL HAL version</th>
23772 <th class="th_tags">Tags</th>
23787 <tr class="entry" id="dynamic_android.shading.mode">
23788 <td class="entry_name
23790 android.<wbr/>shading.<wbr/>mode
23792 <td class="entry_type">
23793 <span class="entry_type_name entry_type_name_enum">byte</span>
23795 <span class="entry_type_visibility"> [public]</span>
23798 <span class="entry_type_hwlevel">[full] </span>
23802 <ul class="entry_type_enum">
23804 <span class="entry_type_enum_name">OFF (v3.2)</span>
23805 <span class="entry_type_enum_notes"><p>No lens shading correction is applied.<wbr/></p></span>
23808 <span class="entry_type_enum_name">FAST (v3.2)</span>
23809 <span class="entry_type_enum_notes"><p>Apply lens shading corrections,<wbr/> without slowing
23810 frame rate relative to sensor raw output</p></span>
23813 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
23814 <span class="entry_type_enum_notes"><p>Apply high-quality lens shading correction,<wbr/> at the
23815 cost of possibly reduced frame rate.<wbr/></p></span>
23819 </td> <!-- entry_type -->
23821 <td class="entry_description">
23822 <p>Quality of lens shading correction applied
23823 to the image data.<wbr/></p>
23826 <td class="entry_units">
23829 <td class="entry_range">
23830 <p><a href="#static_android.shading.availableModes">android.<wbr/>shading.<wbr/>available<wbr/>Modes</a></p>
23833 <td class="entry_hal_version">
23837 <td class="entry_tags">
23841 <tr class="entries_header">
23842 <th class="th_details" colspan="6">Details</th>
23844 <tr class="entry_cont">
23845 <td class="entry_details" colspan="6">
23846 <p>When set to OFF mode,<wbr/> no lens shading correction will be applied by the
23847 camera device,<wbr/> and an identity lens shading map data will be provided
23848 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
23849 shading map with size of <code>[ 4,<wbr/> 3 ]</code>,<wbr/>
23850 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
23851 map shown below:</p>
23852 <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/>
23853 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/>
23854 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/>
23855 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/>
23856 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 ]
23859 <p>When set to other modes,<wbr/> lens shading correction will be applied by the camera
23860 device.<wbr/> Applications can request lens shading map data by setting
23861 <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
23862 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
23863 data will be the one applied by the camera device for this capture request.<wbr/></p>
23864 <p>The shading map data may depend on the auto-exposure (AE) and AWB statistics,<wbr/> therefore
23865 the reliability of the map data may be affected by the AE and AWB algorithms.<wbr/> When AE and
23866 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>
23867 OFF),<wbr/> to get best results,<wbr/> it is recommended that the applications wait for the AE and AWB
23868 to be converged before using the returned shading map data.<wbr/></p>
23873 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23874 <!-- end of entry -->
23878 <!-- end of kind -->
23880 <tr><td colspan="7" class="kind">static</td></tr>
23882 <thead class="entries_header">
23884 <th class="th_name">Property Name</th>
23885 <th class="th_type">Type</th>
23886 <th class="th_description">Description</th>
23887 <th class="th_units">Units</th>
23888 <th class="th_range">Range</th>
23889 <th class="th_hal_version">Initial HIDL HAL version</th>
23890 <th class="th_tags">Tags</th>
23905 <tr class="entry" id="static_android.shading.availableModes">
23906 <td class="entry_name
23908 android.<wbr/>shading.<wbr/>available<wbr/>Modes
23910 <td class="entry_type">
23911 <span class="entry_type_name">byte</span>
23912 <span class="entry_type_container">x</span>
23914 <span class="entry_type_array">
23917 <span class="entry_type_visibility"> [public as enumList]</span>
23920 <span class="entry_type_hwlevel">[legacy] </span>
23923 <div class="entry_type_notes">List of enums (android.<wbr/>shading.<wbr/>mode).<wbr/></div>
23926 </td> <!-- entry_type -->
23928 <td class="entry_description">
23929 <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>
23932 <td class="entry_units">
23935 <td class="entry_range">
23936 <p>Any value listed in <a href="#controls_android.shading.mode">android.<wbr/>shading.<wbr/>mode</a></p>
23939 <td class="entry_hal_version">
23943 <td class="entry_tags">
23947 <tr class="entries_header">
23948 <th class="th_details" colspan="6">Details</th>
23950 <tr class="entry_cont">
23951 <td class="entry_details" colspan="6">
23952 <p>This list contains lens shading modes that can be set for the camera device.<wbr/>
23953 Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always
23954 list OFF and FAST mode.<wbr/> This includes all FULL level devices.<wbr/>
23955 LEGACY devices will always only support FAST mode.<wbr/></p>
23959 <tr class="entries_header">
23960 <th class="th_details" colspan="6">HAL Implementation Details</th>
23962 <tr class="entry_cont">
23963 <td class="entry_details" colspan="6">
23964 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if lens shading correction control is
23965 available on the camera device,<wbr/> but the underlying implementation can be the same for
23966 both modes.<wbr/> That is,<wbr/> if the highest quality implementation on the camera device does not
23967 slow down capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
23971 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23972 <!-- end of entry -->
23976 <!-- end of kind -->
23979 <!-- end of section -->
23980 <tr><td colspan="7" id="section_statistics" class="section">statistics</td></tr>
23983 <tr><td colspan="7" class="kind">controls</td></tr>
23985 <thead class="entries_header">
23987 <th class="th_name">Property Name</th>
23988 <th class="th_type">Type</th>
23989 <th class="th_description">Description</th>
23990 <th class="th_units">Units</th>
23991 <th class="th_range">Range</th>
23992 <th class="th_hal_version">Initial HIDL HAL version</th>
23993 <th class="th_tags">Tags</th>
24008 <tr class="entry" id="controls_android.statistics.faceDetectMode">
24009 <td class="entry_name
24011 android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode
24013 <td class="entry_type">
24014 <span class="entry_type_name entry_type_name_enum">byte</span>
24016 <span class="entry_type_visibility"> [public]</span>
24019 <span class="entry_type_hwlevel">[legacy] </span>
24023 <ul class="entry_type_enum">
24025 <span class="entry_type_enum_name">OFF (v3.2)</span>
24026 <span class="entry_type_enum_notes"><p>Do not include face detection statistics in capture
24027 results.<wbr/></p></span>
24030 <span class="entry_type_enum_name">SIMPLE (v3.2)</span>
24031 <span class="entry_type_enum_optional">[optional]</span>
24032 <span class="entry_type_enum_notes"><p>Return face rectangle and confidence values only.<wbr/></p></span>
24035 <span class="entry_type_enum_name">FULL (v3.2)</span>
24036 <span class="entry_type_enum_optional">[optional]</span>
24037 <span class="entry_type_enum_notes"><p>Return all face
24038 metadata.<wbr/></p>
24039 <p>In this mode,<wbr/> face rectangles,<wbr/> scores,<wbr/> landmarks,<wbr/> and face IDs are all valid.<wbr/></p></span>
24043 </td> <!-- entry_type -->
24045 <td class="entry_description">
24046 <p>Operating mode for the face detector
24050 <td class="entry_units">
24053 <td class="entry_range">
24054 <p><a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a></p>
24057 <td class="entry_hal_version">
24061 <td class="entry_tags">
24062 <ul class="entry_tags">
24063 <li><a href="#tag_BC">BC</a></li>
24068 <tr class="entries_header">
24069 <th class="th_details" colspan="6">Details</th>
24071 <tr class="entry_cont">
24072 <td class="entry_details" colspan="6">
24073 <p>Whether face detection is enabled,<wbr/> and whether it
24074 should output just the basic fields or the full set of
24079 <tr class="entries_header">
24080 <th class="th_details" colspan="6">HAL Implementation Details</th>
24082 <tr class="entry_cont">
24083 <td class="entry_details" colspan="6">
24084 <p>SIMPLE mode must fill in <a href="#dynamic_android.statistics.faceRectangles">android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles</a> and
24085 <a href="#dynamic_android.statistics.faceScores">android.<wbr/>statistics.<wbr/>face<wbr/>Scores</a>.<wbr/>
24086 FULL mode must also fill in <a href="#dynamic_android.statistics.faceIds">android.<wbr/>statistics.<wbr/>face<wbr/>Ids</a>,<wbr/> and
24087 <a href="#dynamic_android.statistics.faceLandmarks">android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks</a>.<wbr/></p>
24091 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24092 <!-- end of entry -->
24095 <tr class="entry" id="controls_android.statistics.histogramMode">
24096 <td class="entry_name
24098 android.<wbr/>statistics.<wbr/>histogram<wbr/>Mode
24100 <td class="entry_type">
24101 <span class="entry_type_name entry_type_name_enum">byte</span>
24103 <span class="entry_type_visibility"> [system as boolean]</span>
24109 <ul class="entry_type_enum">
24111 <span class="entry_type_enum_name">OFF (v3.2)</span>
24114 <span class="entry_type_enum_name">ON (v3.2)</span>
24118 </td> <!-- entry_type -->
24120 <td class="entry_description">
24121 <p>Operating mode for histogram
24125 <td class="entry_units">
24128 <td class="entry_range">
24131 <td class="entry_hal_version">
24135 <td class="entry_tags">
24136 <ul class="entry_tags">
24137 <li><a href="#tag_FUTURE">FUTURE</a></li>
24144 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24145 <!-- end of entry -->
24148 <tr class="entry" id="controls_android.statistics.sharpnessMapMode">
24149 <td class="entry_name
24151 android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map<wbr/>Mode
24153 <td class="entry_type">
24154 <span class="entry_type_name entry_type_name_enum">byte</span>
24156 <span class="entry_type_visibility"> [system as boolean]</span>
24162 <ul class="entry_type_enum">
24164 <span class="entry_type_enum_name">OFF (v3.2)</span>
24167 <span class="entry_type_enum_name">ON (v3.2)</span>
24171 </td> <!-- entry_type -->
24173 <td class="entry_description">
24174 <p>Operating mode for sharpness map
24178 <td class="entry_units">
24181 <td class="entry_range">
24184 <td class="entry_hal_version">
24188 <td class="entry_tags">
24189 <ul class="entry_tags">
24190 <li><a href="#tag_FUTURE">FUTURE</a></li>
24197 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24198 <!-- end of entry -->
24201 <tr class="entry" id="controls_android.statistics.hotPixelMapMode">
24202 <td class="entry_name
24204 android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode
24206 <td class="entry_type">
24207 <span class="entry_type_name entry_type_name_enum">byte</span>
24209 <span class="entry_type_visibility"> [public as boolean]</span>
24215 <ul class="entry_type_enum">
24217 <span class="entry_type_enum_name">OFF (v3.2)</span>
24218 <span class="entry_type_enum_notes"><p>Hot pixel map production is disabled.<wbr/></p></span>
24221 <span class="entry_type_enum_name">ON (v3.2)</span>
24222 <span class="entry_type_enum_notes"><p>Hot pixel map production is enabled.<wbr/></p></span>
24226 </td> <!-- entry_type -->
24228 <td class="entry_description">
24229 <p>Operating mode for hot pixel map generation.<wbr/></p>
24232 <td class="entry_units">
24235 <td class="entry_range">
24236 <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>
24239 <td class="entry_hal_version">
24243 <td class="entry_tags">
24244 <ul class="entry_tags">
24245 <li><a href="#tag_V1">V1</a></li>
24246 <li><a href="#tag_RAW">RAW</a></li>
24251 <tr class="entries_header">
24252 <th class="th_details" colspan="6">Details</th>
24254 <tr class="entry_cont">
24255 <td class="entry_details" colspan="6">
24256 <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/>
24257 If set to <code>false</code>,<wbr/> no hot pixel map will be returned.<wbr/></p>
24262 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24263 <!-- end of entry -->
24266 <tr class="entry" id="controls_android.statistics.lensShadingMapMode">
24267 <td class="entry_name
24269 android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode
24271 <td class="entry_type">
24272 <span class="entry_type_name entry_type_name_enum">byte</span>
24274 <span class="entry_type_visibility"> [public]</span>
24277 <span class="entry_type_hwlevel">[full] </span>
24281 <ul class="entry_type_enum">
24283 <span class="entry_type_enum_name">OFF (v3.2)</span>
24284 <span class="entry_type_enum_notes"><p>Do not include a lens shading map in the capture result.<wbr/></p></span>
24287 <span class="entry_type_enum_name">ON (v3.2)</span>
24288 <span class="entry_type_enum_notes"><p>Include a lens shading map in the capture result.<wbr/></p></span>
24292 </td> <!-- entry_type -->
24294 <td class="entry_description">
24295 <p>Whether the camera device will output the lens
24296 shading map in output result metadata.<wbr/></p>
24299 <td class="entry_units">
24302 <td class="entry_range">
24303 <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>
24306 <td class="entry_hal_version">
24310 <td class="entry_tags">
24311 <ul class="entry_tags">
24312 <li><a href="#tag_RAW">RAW</a></li>
24317 <tr class="entries_header">
24318 <th class="th_details" colspan="6">Details</th>
24320 <tr class="entry_cont">
24321 <td class="entry_details" colspan="6">
24322 <p>When set to ON,<wbr/>
24323 <a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> will be provided in
24324 the output result metadata.<wbr/></p>
24325 <p>ON is always supported on devices with the RAW capability.<wbr/></p>
24330 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24331 <!-- end of entry -->
24334 <tr class="entry" id="controls_android.statistics.oisDataMode">
24335 <td class="entry_name
24337 android.<wbr/>statistics.<wbr/>ois<wbr/>Data<wbr/>Mode
24339 <td class="entry_type">
24340 <span class="entry_type_name entry_type_name_enum">byte</span>
24342 <span class="entry_type_visibility"> [public]</span>
24348 <ul class="entry_type_enum">
24350 <span class="entry_type_enum_name">OFF (v3.3)</span>
24351 <span class="entry_type_enum_notes"><p>Do not include OIS data in the capture result.<wbr/></p></span>
24354 <span class="entry_type_enum_name">ON (v3.3)</span>
24355 <span class="entry_type_enum_notes"><p>Include OIS data in the capture result.<wbr/></p></span>
24359 </td> <!-- entry_type -->
24361 <td class="entry_description">
24362 <p>A control for selecting whether OIS position information is included in output
24363 result metadata.<wbr/></p>
24366 <td class="entry_units">
24369 <td class="entry_range">
24370 <p><a href="#static_android.statistics.info.availableOisDataModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Ois<wbr/>Data<wbr/>Modes</a></p>
24373 <td class="entry_hal_version">
24377 <td class="entry_tags">
24383 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24384 <!-- end of entry -->
24388 <!-- end of kind -->
24390 <tr><td colspan="7" class="kind">static</td></tr>
24392 <thead class="entries_header">
24394 <th class="th_name">Property Name</th>
24395 <th class="th_type">Type</th>
24396 <th class="th_description">Description</th>
24397 <th class="th_units">Units</th>
24398 <th class="th_range">Range</th>
24399 <th class="th_hal_version">Initial HIDL HAL version</th>
24400 <th class="th_tags">Tags</th>
24417 <tr class="entry" id="static_android.statistics.info.availableFaceDetectModes">
24418 <td class="entry_name
24420 android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes
24422 <td class="entry_type">
24423 <span class="entry_type_name">byte</span>
24424 <span class="entry_type_container">x</span>
24426 <span class="entry_type_array">
24429 <span class="entry_type_visibility"> [public as enumList]</span>
24432 <span class="entry_type_hwlevel">[legacy] </span>
24435 <div class="entry_type_notes">List of enums from android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</div>
24438 </td> <!-- entry_type -->
24440 <td class="entry_description">
24441 <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
24442 supported by this camera device.<wbr/></p>
24445 <td class="entry_units">
24448 <td class="entry_range">
24449 <p>Any value listed in <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></p>
24452 <td class="entry_hal_version">
24456 <td class="entry_tags">
24460 <tr class="entries_header">
24461 <th class="th_details" colspan="6">Details</th>
24463 <tr class="entry_cont">
24464 <td class="entry_details" colspan="6">
24465 <p>OFF is always supported.<wbr/></p>
24470 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24471 <!-- end of entry -->
24474 <tr class="entry" id="static_android.statistics.info.histogramBucketCount">
24475 <td class="entry_name
24477 android.<wbr/>statistics.<wbr/>info.<wbr/>histogram<wbr/>Bucket<wbr/>Count
24479 <td class="entry_type">
24480 <span class="entry_type_name">int32</span>
24482 <span class="entry_type_visibility"> [system]</span>
24489 </td> <!-- entry_type -->
24491 <td class="entry_description">
24492 <p>Number of histogram buckets
24496 <td class="entry_units">
24499 <td class="entry_range">
24503 <td class="entry_hal_version">
24507 <td class="entry_tags">
24508 <ul class="entry_tags">
24509 <li><a href="#tag_FUTURE">FUTURE</a></li>
24516 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24517 <!-- end of entry -->
24520 <tr class="entry" id="static_android.statistics.info.maxFaceCount">
24521 <td class="entry_name
24523 android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Face<wbr/>Count
24525 <td class="entry_type">
24526 <span class="entry_type_name">int32</span>
24528 <span class="entry_type_visibility"> [public]</span>
24531 <span class="entry_type_hwlevel">[legacy] </span>
24536 </td> <!-- entry_type -->
24538 <td class="entry_description">
24539 <p>The maximum number of simultaneously detectable
24543 <td class="entry_units">
24546 <td class="entry_range">
24547 <p>0 for cameras without available face detection; otherwise:
24548 <code>>=4</code> for LIMITED or FULL hwlevel devices or
24549 <code>>0</code> for LEGACY devices.<wbr/></p>
24552 <td class="entry_hal_version">
24556 <td class="entry_tags">
24557 <ul class="entry_tags">
24558 <li><a href="#tag_BC">BC</a></li>
24565 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24566 <!-- end of entry -->
24569 <tr class="entry" id="static_android.statistics.info.maxHistogramCount">
24570 <td class="entry_name
24572 android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Histogram<wbr/>Count
24574 <td class="entry_type">
24575 <span class="entry_type_name">int32</span>
24577 <span class="entry_type_visibility"> [system]</span>
24584 </td> <!-- entry_type -->
24586 <td class="entry_description">
24587 <p>Maximum value possible for a histogram
24591 <td class="entry_units">
24594 <td class="entry_range">
24597 <td class="entry_hal_version">
24601 <td class="entry_tags">
24602 <ul class="entry_tags">
24603 <li><a href="#tag_FUTURE">FUTURE</a></li>
24610 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24611 <!-- end of entry -->
24614 <tr class="entry" id="static_android.statistics.info.maxSharpnessMapValue">
24615 <td class="entry_name
24617 android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Sharpness<wbr/>Map<wbr/>Value
24619 <td class="entry_type">
24620 <span class="entry_type_name">int32</span>
24622 <span class="entry_type_visibility"> [system]</span>
24629 </td> <!-- entry_type -->
24631 <td class="entry_description">
24632 <p>Maximum value possible for a sharpness map
24636 <td class="entry_units">
24639 <td class="entry_range">
24642 <td class="entry_hal_version">
24646 <td class="entry_tags">
24647 <ul class="entry_tags">
24648 <li><a href="#tag_FUTURE">FUTURE</a></li>
24655 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24656 <!-- end of entry -->
24659 <tr class="entry" id="static_android.statistics.info.sharpnessMapSize">
24660 <td class="entry_name
24662 android.<wbr/>statistics.<wbr/>info.<wbr/>sharpness<wbr/>Map<wbr/>Size
24664 <td class="entry_type">
24665 <span class="entry_type_name">int32</span>
24666 <span class="entry_type_container">x</span>
24668 <span class="entry_type_array">
24671 <span class="entry_type_visibility"> [system as size]</span>
24676 <div class="entry_type_notes">width x height</div>
24679 </td> <!-- entry_type -->
24681 <td class="entry_description">
24682 <p>Dimensions of the sharpness
24686 <td class="entry_units">
24689 <td class="entry_range">
24690 <p>Must be at least 32 x 32</p>
24693 <td class="entry_hal_version">
24697 <td class="entry_tags">
24698 <ul class="entry_tags">
24699 <li><a href="#tag_FUTURE">FUTURE</a></li>
24706 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24707 <!-- end of entry -->
24710 <tr class="entry" id="static_android.statistics.info.availableHotPixelMapModes">
24711 <td class="entry_name
24713 android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Map<wbr/>Modes
24715 <td class="entry_type">
24716 <span class="entry_type_name">byte</span>
24717 <span class="entry_type_container">x</span>
24719 <span class="entry_type_array">
24722 <span class="entry_type_visibility"> [public as boolean]</span>
24727 <div class="entry_type_notes">list of enums</div>
24730 </td> <!-- entry_type -->
24732 <td class="entry_description">
24733 <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
24734 supported by this camera device.<wbr/></p>
24737 <td class="entry_units">
24740 <td class="entry_range">
24741 <p>Any value listed in <a href="#controls_android.statistics.hotPixelMapMode">android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode</a></p>
24744 <td class="entry_hal_version">
24748 <td class="entry_tags">
24749 <ul class="entry_tags">
24750 <li><a href="#tag_V1">V1</a></li>
24751 <li><a href="#tag_RAW">RAW</a></li>
24756 <tr class="entries_header">
24757 <th class="th_details" colspan="6">Details</th>
24759 <tr class="entry_cont">
24760 <td class="entry_details" colspan="6">
24761 <p>If no hotpixel map output is available for this camera device,<wbr/> this will contain only
24762 <code>false</code>.<wbr/></p>
24763 <p>ON is always supported on devices with the RAW capability.<wbr/></p>
24768 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24769 <!-- end of entry -->
24772 <tr class="entry" id="static_android.statistics.info.availableLensShadingMapModes">
24773 <td class="entry_name
24775 android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Lens<wbr/>Shading<wbr/>Map<wbr/>Modes
24777 <td class="entry_type">
24778 <span class="entry_type_name">byte</span>
24779 <span class="entry_type_container">x</span>
24781 <span class="entry_type_array">
24784 <span class="entry_type_visibility"> [public as enumList]</span>
24789 <div class="entry_type_notes">list of enums</div>
24792 </td> <!-- entry_type -->
24794 <td class="entry_description">
24795 <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
24796 are supported by this camera device.<wbr/></p>
24799 <td class="entry_units">
24802 <td class="entry_range">
24803 <p>Any value listed in <a href="#controls_android.statistics.lensShadingMapMode">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode</a></p>
24806 <td class="entry_hal_version">
24810 <td class="entry_tags">
24814 <tr class="entries_header">
24815 <th class="th_details" colspan="6">Details</th>
24817 <tr class="entry_cont">
24818 <td class="entry_details" colspan="6">
24819 <p>If no lens shading map output is available for this camera device,<wbr/> this key will
24820 contain only OFF.<wbr/></p>
24821 <p>ON is always supported on devices with the RAW capability.<wbr/>
24822 LEGACY mode devices will always only support OFF.<wbr/></p>
24827 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24828 <!-- end of entry -->
24831 <tr class="entry" id="static_android.statistics.info.availableOisDataModes">
24832 <td class="entry_name
24834 android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Ois<wbr/>Data<wbr/>Modes
24836 <td class="entry_type">
24837 <span class="entry_type_name">byte</span>
24838 <span class="entry_type_container">x</span>
24840 <span class="entry_type_array">
24843 <span class="entry_type_visibility"> [public as enumList]</span>
24848 <div class="entry_type_notes">list of enums</div>
24851 </td> <!-- entry_type -->
24853 <td class="entry_description">
24854 <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
24855 are supported by this camera device.<wbr/></p>
24858 <td class="entry_units">
24861 <td class="entry_range">
24862 <p>Any value listed in <a href="#controls_android.statistics.oisDataMode">android.<wbr/>statistics.<wbr/>ois<wbr/>Data<wbr/>Mode</a></p>
24865 <td class="entry_hal_version">
24869 <td class="entry_tags">
24873 <tr class="entries_header">
24874 <th class="th_details" colspan="6">Details</th>
24876 <tr class="entry_cont">
24877 <td class="entry_details" colspan="6">
24878 <p>If no OIS data output is available for this camera device,<wbr/> this key will
24879 contain only OFF.<wbr/></p>
24884 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24885 <!-- end of entry -->
24892 <!-- end of kind -->
24894 <tr><td colspan="7" class="kind">dynamic</td></tr>
24896 <thead class="entries_header">
24898 <th class="th_name">Property Name</th>
24899 <th class="th_type">Type</th>
24900 <th class="th_description">Description</th>
24901 <th class="th_units">Units</th>
24902 <th class="th_range">Range</th>
24903 <th class="th_hal_version">Initial HIDL HAL version</th>
24904 <th class="th_tags">Tags</th>
24919 <tr class="entry" id="dynamic_android.statistics.faceDetectMode">
24920 <td class="entry_name
24922 android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode
24924 <td class="entry_type">
24925 <span class="entry_type_name entry_type_name_enum">byte</span>
24927 <span class="entry_type_visibility"> [public]</span>
24930 <span class="entry_type_hwlevel">[legacy] </span>
24934 <ul class="entry_type_enum">
24936 <span class="entry_type_enum_name">OFF (v3.2)</span>
24937 <span class="entry_type_enum_notes"><p>Do not include face detection statistics in capture
24938 results.<wbr/></p></span>
24941 <span class="entry_type_enum_name">SIMPLE (v3.2)</span>
24942 <span class="entry_type_enum_optional">[optional]</span>
24943 <span class="entry_type_enum_notes"><p>Return face rectangle and confidence values only.<wbr/></p></span>
24946 <span class="entry_type_enum_name">FULL (v3.2)</span>
24947 <span class="entry_type_enum_optional">[optional]</span>
24948 <span class="entry_type_enum_notes"><p>Return all face
24949 metadata.<wbr/></p>
24950 <p>In this mode,<wbr/> face rectangles,<wbr/> scores,<wbr/> landmarks,<wbr/> and face IDs are all valid.<wbr/></p></span>
24954 </td> <!-- entry_type -->
24956 <td class="entry_description">
24957 <p>Operating mode for the face detector
24961 <td class="entry_units">
24964 <td class="entry_range">
24965 <p><a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a></p>
24968 <td class="entry_hal_version">
24972 <td class="entry_tags">
24973 <ul class="entry_tags">
24974 <li><a href="#tag_BC">BC</a></li>
24979 <tr class="entries_header">
24980 <th class="th_details" colspan="6">Details</th>
24982 <tr class="entry_cont">
24983 <td class="entry_details" colspan="6">
24984 <p>Whether face detection is enabled,<wbr/> and whether it
24985 should output just the basic fields or the full set of
24990 <tr class="entries_header">
24991 <th class="th_details" colspan="6">HAL Implementation Details</th>
24993 <tr class="entry_cont">
24994 <td class="entry_details" colspan="6">
24995 <p>SIMPLE mode must fill in <a href="#dynamic_android.statistics.faceRectangles">android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles</a> and
24996 <a href="#dynamic_android.statistics.faceScores">android.<wbr/>statistics.<wbr/>face<wbr/>Scores</a>.<wbr/>
24997 FULL mode must also fill in <a href="#dynamic_android.statistics.faceIds">android.<wbr/>statistics.<wbr/>face<wbr/>Ids</a>,<wbr/> and
24998 <a href="#dynamic_android.statistics.faceLandmarks">android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks</a>.<wbr/></p>
25002 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25003 <!-- end of entry -->
25006 <tr class="entry" id="dynamic_android.statistics.faceIds">
25007 <td class="entry_name
25009 android.<wbr/>statistics.<wbr/>face<wbr/>Ids
25011 <td class="entry_type">
25012 <span class="entry_type_name">int32</span>
25013 <span class="entry_type_container">x</span>
25015 <span class="entry_type_array">
25018 <span class="entry_type_visibility"> [ndk_public]</span>
25021 <span class="entry_type_hwlevel">[legacy] </span>
25026 </td> <!-- entry_type -->
25028 <td class="entry_description">
25029 <p>List of unique IDs for detected faces.<wbr/></p>
25032 <td class="entry_units">
25035 <td class="entry_range">
25038 <td class="entry_hal_version">
25042 <td class="entry_tags">
25043 <ul class="entry_tags">
25044 <li><a href="#tag_BC">BC</a></li>
25049 <tr class="entries_header">
25050 <th class="th_details" colspan="6">Details</th>
25052 <tr class="entry_cont">
25053 <td class="entry_details" colspan="6">
25054 <p>Each detected face is given a unique ID that is valid for as long as the face is visible
25055 to the camera device.<wbr/> A face that leaves the field of view and later returns may be
25056 assigned a new ID.<wbr/></p>
25057 <p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> == FULL</p>
25062 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25063 <!-- end of entry -->
25066 <tr class="entry" id="dynamic_android.statistics.faceLandmarks">
25067 <td class="entry_name
25069 android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks
25071 <td class="entry_type">
25072 <span class="entry_type_name">int32</span>
25073 <span class="entry_type_container">x</span>
25075 <span class="entry_type_array">
25078 <span class="entry_type_visibility"> [ndk_public]</span>
25081 <span class="entry_type_hwlevel">[legacy] </span>
25084 <div class="entry_type_notes">(leftEyeX,<wbr/> leftEyeY,<wbr/> rightEyeX,<wbr/> rightEyeY,<wbr/> mouthX,<wbr/> mouthY)</div>
25087 </td> <!-- entry_type -->
25089 <td class="entry_description">
25090 <p>List of landmarks for detected
25094 <td class="entry_units">
25097 <td class="entry_range">
25100 <td class="entry_hal_version">
25104 <td class="entry_tags">
25105 <ul class="entry_tags">
25106 <li><a href="#tag_BC">BC</a></li>
25111 <tr class="entries_header">
25112 <th class="th_details" colspan="6">Details</th>
25114 <tr class="entry_cont">
25115 <td class="entry_details" colspan="6">
25116 <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
25117 <code>(0,<wbr/> 0)</code> being the top-left pixel of the active array.<wbr/></p>
25118 <p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> == FULL</p>
25123 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25124 <!-- end of entry -->
25127 <tr class="entry" id="dynamic_android.statistics.faceRectangles">
25128 <td class="entry_name
25130 android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles
25132 <td class="entry_type">
25133 <span class="entry_type_name">int32</span>
25134 <span class="entry_type_container">x</span>
25136 <span class="entry_type_array">
25139 <span class="entry_type_visibility"> [ndk_public as rectangle]</span>
25142 <span class="entry_type_hwlevel">[legacy] </span>
25145 <div class="entry_type_notes">(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax).<wbr/> (0,<wbr/>0) is top-left of active pixel area</div>
25148 </td> <!-- entry_type -->
25150 <td class="entry_description">
25151 <p>List of the bounding rectangles for detected
25155 <td class="entry_units">
25158 <td class="entry_range">
25161 <td class="entry_hal_version">
25165 <td class="entry_tags">
25166 <ul class="entry_tags">
25167 <li><a href="#tag_BC">BC</a></li>
25172 <tr class="entries_header">
25173 <th class="th_details" colspan="6">Details</th>
25175 <tr class="entry_cont">
25176 <td class="entry_details" colspan="6">
25177 <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
25178 <code>(0,<wbr/> 0)</code> being the top-left pixel of the active array.<wbr/></p>
25179 <p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> != OFF</p>
25184 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25185 <!-- end of entry -->
25188 <tr class="entry" id="dynamic_android.statistics.faceScores">
25189 <td class="entry_name
25191 android.<wbr/>statistics.<wbr/>face<wbr/>Scores
25193 <td class="entry_type">
25194 <span class="entry_type_name">byte</span>
25195 <span class="entry_type_container">x</span>
25197 <span class="entry_type_array">
25200 <span class="entry_type_visibility"> [ndk_public]</span>
25203 <span class="entry_type_hwlevel">[legacy] </span>
25208 </td> <!-- entry_type -->
25210 <td class="entry_description">
25211 <p>List of the face confidence scores for
25215 <td class="entry_units">
25218 <td class="entry_range">
25222 <td class="entry_hal_version">
25226 <td class="entry_tags">
25227 <ul class="entry_tags">
25228 <li><a href="#tag_BC">BC</a></li>
25233 <tr class="entries_header">
25234 <th class="th_details" colspan="6">Details</th>
25236 <tr class="entry_cont">
25237 <td class="entry_details" colspan="6">
25238 <p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> != OFF.<wbr/></p>
25242 <tr class="entries_header">
25243 <th class="th_details" colspan="6">HAL Implementation Details</th>
25245 <tr class="entry_cont">
25246 <td class="entry_details" colspan="6">
25247 <p>The value should be meaningful (for example,<wbr/> setting 100 at
25248 all times is illegal).<wbr/></p>
25252 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25253 <!-- end of entry -->
25256 <tr class="entry" id="dynamic_android.statistics.faces">
25257 <td class="entry_name
25259 android.<wbr/>statistics.<wbr/>faces
25261 <td class="entry_type">
25262 <span class="entry_type_name">int32</span>
25263 <span class="entry_type_container">x</span>
25265 <span class="entry_type_array">
25268 <span class="entry_type_visibility"> [java_public as face]</span>
25270 <span class="entry_type_synthetic">[synthetic] </span>
25272 <span class="entry_type_hwlevel">[legacy] </span>
25277 </td> <!-- entry_type -->
25279 <td class="entry_description">
25280 <p>List of the faces detected through camera face detection
25281 in this capture.<wbr/></p>
25284 <td class="entry_units">
25287 <td class="entry_range">
25290 <td class="entry_hal_version">
25294 <td class="entry_tags">
25298 <tr class="entries_header">
25299 <th class="th_details" colspan="6">Details</th>
25301 <tr class="entry_cont">
25302 <td class="entry_details" colspan="6">
25303 <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>
25308 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25309 <!-- end of entry -->
25312 <tr class="entry" id="dynamic_android.statistics.histogram">
25313 <td class="entry_name
25315 android.<wbr/>statistics.<wbr/>histogram
25317 <td class="entry_type">
25318 <span class="entry_type_name">int32</span>
25319 <span class="entry_type_container">x</span>
25321 <span class="entry_type_array">
25324 <span class="entry_type_visibility"> [system]</span>
25329 <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>
25332 </td> <!-- entry_type -->
25334 <td class="entry_description">
25335 <p>A 3-channel histogram based on the raw
25339 <td class="entry_units">
25342 <td class="entry_range">
25345 <td class="entry_hal_version">
25349 <td class="entry_tags">
25350 <ul class="entry_tags">
25351 <li><a href="#tag_FUTURE">FUTURE</a></li>
25356 <tr class="entries_header">
25357 <th class="th_details" colspan="6">Details</th>
25359 <tr class="entry_cont">
25360 <td class="entry_details" colspan="6">
25361 <p>The k'th bucket (0-based) covers the input range
25362 (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/>
25363 (k + 1) * w /<wbr/> N ).<wbr/> If only a monochrome sharpness map is
25364 supported,<wbr/> all channels should have the same data</p>
25369 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25370 <!-- end of entry -->
25373 <tr class="entry" id="dynamic_android.statistics.histogramMode">
25374 <td class="entry_name
25376 android.<wbr/>statistics.<wbr/>histogram<wbr/>Mode
25378 <td class="entry_type">
25379 <span class="entry_type_name entry_type_name_enum">byte</span>
25381 <span class="entry_type_visibility"> [system as boolean]</span>
25387 <ul class="entry_type_enum">
25389 <span class="entry_type_enum_name">OFF (v3.2)</span>
25392 <span class="entry_type_enum_name">ON (v3.2)</span>
25396 </td> <!-- entry_type -->
25398 <td class="entry_description">
25399 <p>Operating mode for histogram
25403 <td class="entry_units">
25406 <td class="entry_range">
25409 <td class="entry_hal_version">
25413 <td class="entry_tags">
25414 <ul class="entry_tags">
25415 <li><a href="#tag_FUTURE">FUTURE</a></li>
25422 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25423 <!-- end of entry -->
25426 <tr class="entry" id="dynamic_android.statistics.sharpnessMap">
25427 <td class="entry_name
25429 android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map
25431 <td class="entry_type">
25432 <span class="entry_type_name">int32</span>
25433 <span class="entry_type_container">x</span>
25435 <span class="entry_type_array">
25438 <span class="entry_type_visibility"> [system]</span>
25443 <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>
25446 </td> <!-- entry_type -->
25448 <td class="entry_description">
25449 <p>A 3-channel sharpness map,<wbr/> based on the raw
25453 <td class="entry_units">
25456 <td class="entry_range">
25459 <td class="entry_hal_version">
25463 <td class="entry_tags">
25464 <ul class="entry_tags">
25465 <li><a href="#tag_FUTURE">FUTURE</a></li>
25470 <tr class="entries_header">
25471 <th class="th_details" colspan="6">Details</th>
25473 <tr class="entry_cont">
25474 <td class="entry_details" colspan="6">
25475 <p>If only a monochrome sharpness map is supported,<wbr/>
25476 all channels should have the same data</p>
25481 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25482 <!-- end of entry -->
25485 <tr class="entry" id="dynamic_android.statistics.sharpnessMapMode">
25486 <td class="entry_name
25488 android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map<wbr/>Mode
25490 <td class="entry_type">
25491 <span class="entry_type_name entry_type_name_enum">byte</span>
25493 <span class="entry_type_visibility"> [system as boolean]</span>
25499 <ul class="entry_type_enum">
25501 <span class="entry_type_enum_name">OFF (v3.2)</span>
25504 <span class="entry_type_enum_name">ON (v3.2)</span>
25508 </td> <!-- entry_type -->
25510 <td class="entry_description">
25511 <p>Operating mode for sharpness map
25515 <td class="entry_units">
25518 <td class="entry_range">
25521 <td class="entry_hal_version">
25525 <td class="entry_tags">
25526 <ul class="entry_tags">
25527 <li><a href="#tag_FUTURE">FUTURE</a></li>
25534 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25535 <!-- end of entry -->
25538 <tr class="entry" id="dynamic_android.statistics.lensShadingCorrectionMap">
25539 <td class="entry_name
25541 android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Correction<wbr/>Map
25543 <td class="entry_type">
25544 <span class="entry_type_name">byte</span>
25546 <span class="entry_type_visibility"> [java_public as lensShadingMap]</span>
25549 <span class="entry_type_hwlevel">[full] </span>
25554 </td> <!-- entry_type -->
25556 <td class="entry_description">
25557 <p>The shading map is a low-resolution floating-point map
25558 that lists the coefficients used to correct for vignetting,<wbr/> for each
25559 Bayer color channel.<wbr/></p>
25562 <td class="entry_units">
25565 <td class="entry_range">
25566 <p>Each gain factor is >= 1</p>
25569 <td class="entry_hal_version">
25573 <td class="entry_tags">
25577 <tr class="entries_header">
25578 <th class="th_details" colspan="6">Details</th>
25580 <tr class="entry_cont">
25581 <td class="entry_details" colspan="6">
25582 <p>The map provided here is the same map that is used by the camera device to
25583 correct both color shading and vignetting for output non-RAW images.<wbr/></p>
25584 <p>When there is no lens shading correction applied to RAW
25585 output images (<a href="#static_android.sensor.info.lensShadingApplied">android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied</a> <code>==</code>
25586 false),<wbr/> this map is the complete lens shading correction
25587 map; when there is some lens shading correction applied to
25588 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
25589 correction map that needs to be applied to get shading
25590 corrected images that match the camera device's output for
25591 non-RAW formats.<wbr/></p>
25592 <p>For a complete shading correction map,<wbr/> the least shaded
25593 section of the image will have a gain factor of 1; all
25594 other sections will have gains above 1.<wbr/></p>
25595 <p>When <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> = TRANSFORM_<wbr/>MATRIX,<wbr/> the map
25596 will take into account the colorCorrection settings.<wbr/></p>
25597 <p>The shading map is for the entire active pixel array,<wbr/> and is not
25598 affected by the crop region specified in the request.<wbr/> Each shading map
25599 entry is the value of the shading compensation map over a specific
25600 pixel on the sensor.<wbr/> Specifically,<wbr/> with a (N x M) resolution shading
25601 map,<wbr/> and an active pixel array size (W x H),<wbr/> shading map entry
25602 (x,<wbr/>y) ϵ (0 ...<wbr/> N-1,<wbr/> 0 ...<wbr/> M-1) is the value of the shading map at
25603 pixel ( ((W-1)/<wbr/>(N-1)) * x,<wbr/> ((H-1)/<wbr/>(M-1)) * y) for the four color channels.<wbr/>
25604 The map is assumed to be bilinearly interpolated between the sample points.<wbr/></p>
25605 <p>The channel order is [R,<wbr/> Geven,<wbr/> Godd,<wbr/> B],<wbr/> where Geven is the green
25606 channel for the even rows of a Bayer pattern,<wbr/> and Godd is the odd rows.<wbr/>
25607 The shading map is stored in a fully interleaved format.<wbr/></p>
25608 <p>The shading map will generally have on the order of 30-40 rows and columns,<wbr/>
25609 and will be smaller than 64x64.<wbr/></p>
25610 <p>As an example,<wbr/> given a very small map defined as:</p>
25611 <pre><code>width,<wbr/>height = [ 4,<wbr/> 3 ]
25613 [ 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/>
25614 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/>
25615 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/>
25616 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/>
25617 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/>
25618 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 ]
25620 <p>The low-resolution scaling map images for each channel are
25621 (displayed using nearest-neighbor interpolation):</p>
25622 <p><img alt="Red lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/red_shading.png"/>
25623 <img alt="Green (even rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_e_shading.png"/>
25624 <img alt="Green (odd rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_o_shading.png"/>
25625 <img alt="Blue lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/blue_shading.png"/></p>
25626 <p>As a visualization only,<wbr/> inverting the full-color map to recover an
25627 image of a gray wall (using bicubic interpolation for visual quality) as captured by the sensor gives:</p>
25628 <p><img alt="Image of a uniform white wall (inverse shading map)" src="images/camera2/metadata/android.statistics.lensShadingMap/inv_shading.png"/></p>
25633 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25634 <!-- end of entry -->
25637 <tr class="entry" id="dynamic_android.statistics.lensShadingMap">
25638 <td class="entry_name
25640 android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map
25642 <td class="entry_type">
25643 <span class="entry_type_name">float</span>
25644 <span class="entry_type_container">x</span>
25646 <span class="entry_type_array">
25649 <span class="entry_type_visibility"> [ndk_public]</span>
25652 <span class="entry_type_hwlevel">[full] </span>
25655 <div class="entry_type_notes">2D array of float gain factors per channel to correct lens shading</div>
25658 </td> <!-- entry_type -->
25660 <td class="entry_description">
25661 <p>The shading map is a low-resolution floating-point map
25662 that lists the coefficients used to correct for vignetting and color shading,<wbr/>
25663 for each Bayer color channel of RAW image data.<wbr/></p>
25666 <td class="entry_units">
25669 <td class="entry_range">
25670 <p>Each gain factor is >= 1</p>
25673 <td class="entry_hal_version">
25677 <td class="entry_tags">
25681 <tr class="entries_header">
25682 <th class="th_details" colspan="6">Details</th>
25684 <tr class="entry_cont">
25685 <td class="entry_details" colspan="6">
25686 <p>The map provided here is the same map that is used by the camera device to
25687 correct both color shading and vignetting for output non-RAW images.<wbr/></p>
25688 <p>When there is no lens shading correction applied to RAW
25689 output images (<a href="#static_android.sensor.info.lensShadingApplied">android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied</a> <code>==</code>
25690 false),<wbr/> this map is the complete lens shading correction
25691 map; when there is some lens shading correction applied to
25692 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
25693 correction map that needs to be applied to get shading
25694 corrected images that match the camera device's output for
25695 non-RAW formats.<wbr/></p>
25696 <p>For a complete shading correction map,<wbr/> the least shaded
25697 section of the image will have a gain factor of 1; all
25698 other sections will have gains above 1.<wbr/></p>
25699 <p>When <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> = TRANSFORM_<wbr/>MATRIX,<wbr/> the map
25700 will take into account the colorCorrection settings.<wbr/></p>
25701 <p>The shading map is for the entire active pixel array,<wbr/> and is not
25702 affected by the crop region specified in the request.<wbr/> Each shading map
25703 entry is the value of the shading compensation map over a specific
25704 pixel on the sensor.<wbr/> Specifically,<wbr/> with a (N x M) resolution shading
25705 map,<wbr/> and an active pixel array size (W x H),<wbr/> shading map entry
25706 (x,<wbr/>y) ϵ (0 ...<wbr/> N-1,<wbr/> 0 ...<wbr/> M-1) is the value of the shading map at
25707 pixel ( ((W-1)/<wbr/>(N-1)) * x,<wbr/> ((H-1)/<wbr/>(M-1)) * y) for the four color channels.<wbr/>
25708 The map is assumed to be bilinearly interpolated between the sample points.<wbr/></p>
25709 <p>The channel order is [R,<wbr/> Geven,<wbr/> Godd,<wbr/> B],<wbr/> where Geven is the green
25710 channel for the even rows of a Bayer pattern,<wbr/> and Godd is the odd rows.<wbr/>
25711 The shading map is stored in a fully interleaved format,<wbr/> and its size
25712 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>
25713 <p>The shading map will generally have on the order of 30-40 rows and columns,<wbr/>
25714 and will be smaller than 64x64.<wbr/></p>
25715 <p>As an example,<wbr/> given a very small map defined as:</p>
25716 <pre><code><a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a> = [ 4,<wbr/> 3 ]
25717 <a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> =
25718 [ 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/>
25719 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/>
25720 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/>
25721 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/>
25722 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/>
25723 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 ]
25725 <p>The low-resolution scaling map images for each channel are
25726 (displayed using nearest-neighbor interpolation):</p>
25727 <p><img alt="Red lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/red_shading.png"/>
25728 <img alt="Green (even rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_e_shading.png"/>
25729 <img alt="Green (odd rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_o_shading.png"/>
25730 <img alt="Blue lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/blue_shading.png"/></p>
25731 <p>As a visualization only,<wbr/> inverting the full-color map to recover an
25732 image of a gray wall (using bicubic interpolation for visual quality)
25733 as captured by the sensor gives:</p>
25734 <p><img alt="Image of a uniform white wall (inverse shading map)" src="images/camera2/metadata/android.statistics.lensShadingMap/inv_shading.png"/></p>
25735 <p>Note that the RAW image data might be subject to lens shading
25736 correction not reported on this map.<wbr/> Query
25737 <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
25738 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>
25739 is TRUE,<wbr/> the RAW image data is subject to partial or full lens shading
25740 correction.<wbr/> In the case full lens shading correction is applied to RAW
25741 images,<wbr/> the gain factor map reported in this key will contain all 1.<wbr/>0 gains.<wbr/>
25742 In other words,<wbr/> the map reported in this key is the remaining lens shading
25743 that needs to be applied on the RAW image to get images without lens shading
25744 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
25749 <tr class="entries_header">
25750 <th class="th_details" colspan="6">HAL Implementation Details</th>
25752 <tr class="entry_cont">
25753 <td class="entry_details" colspan="6">
25754 <p>The lens shading map calculation may depend on exposure and white balance statistics.<wbr/>
25755 When AE and AWB are in AUTO modes
25756 (<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
25757 may have all the information it need to generate most accurate lens shading map.<wbr/> When
25758 AE or AWB are in manual mode
25759 (<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
25760 may be adversely impacted by manual exposure or white balance parameters.<wbr/> To avoid
25761 generating unreliable shading map data,<wbr/> the HAL may choose to lock the shading map with
25762 the latest known good map generated when the AE and AWB are in AUTO modes.<wbr/></p>
25766 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25767 <!-- end of entry -->
25770 <tr class="entry" id="dynamic_android.statistics.predictedColorGains">
25771 <td class="entry_name
25772 entry_name_deprecated
25774 android.<wbr/>statistics.<wbr/>predicted<wbr/>Color<wbr/>Gains
25776 <td class="entry_type">
25777 <span class="entry_type_name">float</span>
25778 <span class="entry_type_container">x</span>
25780 <span class="entry_type_array">
25783 <span class="entry_type_visibility"> [hidden]</span>
25787 <span class="entry_type_deprecated">[deprecated] </span>
25789 <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div>
25792 </td> <!-- entry_type -->
25794 <td class="entry_description">
25795 <p>The best-fit color channel gains calculated
25796 by the camera device's statistics units for the current output frame.<wbr/></p>
25799 <td class="entry_units">
25802 <td class="entry_range">
25803 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
25806 <td class="entry_hal_version">
25810 <td class="entry_tags">
25814 <tr class="entries_header">
25815 <th class="th_details" colspan="6">Details</th>
25817 <tr class="entry_cont">
25818 <td class="entry_details" colspan="6">
25819 <p>This may be different than the gains used for this frame,<wbr/>
25820 since statistics processing on data from a new frame
25821 typically completes after the transform has already been
25822 applied to that frame.<wbr/></p>
25823 <p>The 4 channel gains are defined in Bayer domain,<wbr/>
25824 see <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> for details.<wbr/></p>
25825 <p>This value should always be calculated by the auto-white balance (AWB) block,<wbr/>
25826 regardless of the android.<wbr/>control.<wbr/>* current values.<wbr/></p>
25831 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25832 <!-- end of entry -->
25835 <tr class="entry" id="dynamic_android.statistics.predictedColorTransform">
25836 <td class="entry_name
25837 entry_name_deprecated
25839 android.<wbr/>statistics.<wbr/>predicted<wbr/>Color<wbr/>Transform
25841 <td class="entry_type">
25842 <span class="entry_type_name">rational</span>
25843 <span class="entry_type_container">x</span>
25845 <span class="entry_type_array">
25848 <span class="entry_type_visibility"> [hidden]</span>
25852 <span class="entry_type_deprecated">[deprecated] </span>
25854 <div class="entry_type_notes">3x3 rational matrix in row-major order</div>
25857 </td> <!-- entry_type -->
25859 <td class="entry_description">
25860 <p>The best-fit color transform matrix estimate
25861 calculated by the camera device's statistics units for the current
25862 output frame.<wbr/></p>
25865 <td class="entry_units">
25868 <td class="entry_range">
25869 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
25872 <td class="entry_hal_version">
25876 <td class="entry_tags">
25880 <tr class="entries_header">
25881 <th class="th_details" colspan="6">Details</th>
25883 <tr class="entry_cont">
25884 <td class="entry_details" colspan="6">
25885 <p>The camera device will provide the estimate from its
25886 statistics unit on the white balance transforms to use
25887 for the next frame.<wbr/> These are the values the camera device believes
25888 are the best fit for the current output frame.<wbr/> This may
25889 be different than the transform used for this frame,<wbr/> since
25890 statistics processing on data from a new frame typically
25891 completes after the transform has already been applied to
25892 that frame.<wbr/></p>
25893 <p>These estimates must be provided for all frames,<wbr/> even if
25894 capture settings and color transforms are set by the application.<wbr/></p>
25895 <p>This value should always be calculated by the auto-white balance (AWB) block,<wbr/>
25896 regardless of the android.<wbr/>control.<wbr/>* current values.<wbr/></p>
25901 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25902 <!-- end of entry -->
25905 <tr class="entry" id="dynamic_android.statistics.sceneFlicker">
25906 <td class="entry_name
25908 android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker
25910 <td class="entry_type">
25911 <span class="entry_type_name entry_type_name_enum">byte</span>
25913 <span class="entry_type_visibility"> [public]</span>
25916 <span class="entry_type_hwlevel">[full] </span>
25920 <ul class="entry_type_enum">
25922 <span class="entry_type_enum_name">NONE (v3.2)</span>
25923 <span class="entry_type_enum_notes"><p>The camera device does not detect any flickering illumination
25924 in the current scene.<wbr/></p></span>
25927 <span class="entry_type_enum_name">50HZ (v3.2)</span>
25928 <span class="entry_type_enum_notes"><p>The camera device detects illumination flickering at 50Hz
25929 in the current scene.<wbr/></p></span>
25932 <span class="entry_type_enum_name">60HZ (v3.2)</span>
25933 <span class="entry_type_enum_notes"><p>The camera device detects illumination flickering at 60Hz
25934 in the current scene.<wbr/></p></span>
25938 </td> <!-- entry_type -->
25940 <td class="entry_description">
25941 <p>The camera device estimated scene illumination lighting
25942 frequency.<wbr/></p>
25945 <td class="entry_units">
25948 <td class="entry_range">
25951 <td class="entry_hal_version">
25955 <td class="entry_tags">
25959 <tr class="entries_header">
25960 <th class="th_details" colspan="6">Details</th>
25962 <tr class="entry_cont">
25963 <td class="entry_details" colspan="6">
25964 <p>Many light sources,<wbr/> such as most fluorescent lights,<wbr/> flicker at a rate
25965 that depends on the local utility power standards.<wbr/> This flicker must be
25966 accounted for by auto-exposure routines to avoid artifacts in captured images.<wbr/>
25967 The camera device uses this entry to tell the application what the scene
25968 illuminant frequency is.<wbr/></p>
25969 <p>When manual exposure control is enabled
25970 (<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> ==
25971 OFF</code>),<wbr/> the <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> doesn't perform
25972 antibanding,<wbr/> and the application can ensure it selects
25973 exposure times that do not cause banding issues by looking
25974 into this metadata field.<wbr/> See
25975 <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> for more details.<wbr/></p>
25976 <p>Reports NONE if there doesn't appear to be flickering illumination.<wbr/></p>
25981 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25982 <!-- end of entry -->
25985 <tr class="entry" id="dynamic_android.statistics.hotPixelMapMode">
25986 <td class="entry_name
25988 android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode
25990 <td class="entry_type">
25991 <span class="entry_type_name entry_type_name_enum">byte</span>
25993 <span class="entry_type_visibility"> [public as boolean]</span>
25999 <ul class="entry_type_enum">
26001 <span class="entry_type_enum_name">OFF (v3.2)</span>
26002 <span class="entry_type_enum_notes"><p>Hot pixel map production is disabled.<wbr/></p></span>
26005 <span class="entry_type_enum_name">ON (v3.2)</span>
26006 <span class="entry_type_enum_notes"><p>Hot pixel map production is enabled.<wbr/></p></span>
26010 </td> <!-- entry_type -->
26012 <td class="entry_description">
26013 <p>Operating mode for hot pixel map generation.<wbr/></p>
26016 <td class="entry_units">
26019 <td class="entry_range">
26020 <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>
26023 <td class="entry_hal_version">
26027 <td class="entry_tags">
26028 <ul class="entry_tags">
26029 <li><a href="#tag_V1">V1</a></li>
26030 <li><a href="#tag_RAW">RAW</a></li>
26035 <tr class="entries_header">
26036 <th class="th_details" colspan="6">Details</th>
26038 <tr class="entry_cont">
26039 <td class="entry_details" colspan="6">
26040 <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/>
26041 If set to <code>false</code>,<wbr/> no hot pixel map will be returned.<wbr/></p>
26046 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26047 <!-- end of entry -->
26050 <tr class="entry" id="dynamic_android.statistics.hotPixelMap">
26051 <td class="entry_name
26053 android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map
26055 <td class="entry_type">
26056 <span class="entry_type_name">int32</span>
26057 <span class="entry_type_container">x</span>
26059 <span class="entry_type_array">
26062 <span class="entry_type_visibility"> [public as point]</span>
26067 <div class="entry_type_notes">list of coordinates based on android.<wbr/>sensor.<wbr/>pixel<wbr/>Array<wbr/>Size</div>
26070 </td> <!-- entry_type -->
26072 <td class="entry_description">
26073 <p>List of <code>(x,<wbr/> y)</code> coordinates of hot/<wbr/>defective pixels on the sensor.<wbr/></p>
26076 <td class="entry_units">
26079 <td class="entry_range">
26080 <p>n <= number of pixels on the sensor.<wbr/>
26081 The <code>(x,<wbr/> y)</code> coordinates must be bounded by
26082 <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
26085 <td class="entry_hal_version">
26089 <td class="entry_tags">
26090 <ul class="entry_tags">
26091 <li><a href="#tag_V1">V1</a></li>
26092 <li><a href="#tag_RAW">RAW</a></li>
26097 <tr class="entries_header">
26098 <th class="th_details" colspan="6">Details</th>
26100 <tr class="entry_cont">
26101 <td class="entry_details" colspan="6">
26102 <p>A coordinate <code>(x,<wbr/> y)</code> must lie between <code>(0,<wbr/> 0)</code>,<wbr/> and
26103 <code>(width - 1,<wbr/> height - 1)</code> (inclusive),<wbr/> which are the top-left and
26104 bottom-right of the pixel array,<wbr/> respectively.<wbr/> The width and
26105 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/>
26106 This may include hot pixels that lie outside of the active array
26107 bounds given by <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
26111 <tr class="entries_header">
26112 <th class="th_details" colspan="6">HAL Implementation Details</th>
26114 <tr class="entry_cont">
26115 <td class="entry_details" colspan="6">
26116 <p>A hotpixel map contains the coordinates of pixels on the camera
26117 sensor that do report valid values (usually due to defects in
26118 the camera sensor).<wbr/> This includes pixels that are stuck at certain
26119 values,<wbr/> or have a response that does not accuractly encode the
26120 incoming light from the scene.<wbr/></p>
26121 <p>To avoid performance issues,<wbr/> there should be significantly fewer hot
26122 pixels than actual pixels on the camera sensor.<wbr/></p>
26126 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26127 <!-- end of entry -->
26130 <tr class="entry" id="dynamic_android.statistics.lensShadingMapMode">
26131 <td class="entry_name
26133 android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode
26135 <td class="entry_type">
26136 <span class="entry_type_name entry_type_name_enum">byte</span>
26138 <span class="entry_type_visibility"> [public]</span>
26141 <span class="entry_type_hwlevel">[full] </span>
26145 <ul class="entry_type_enum">
26147 <span class="entry_type_enum_name">OFF (v3.2)</span>
26148 <span class="entry_type_enum_notes"><p>Do not include a lens shading map in the capture result.<wbr/></p></span>
26151 <span class="entry_type_enum_name">ON (v3.2)</span>
26152 <span class="entry_type_enum_notes"><p>Include a lens shading map in the capture result.<wbr/></p></span>
26156 </td> <!-- entry_type -->
26158 <td class="entry_description">
26159 <p>Whether the camera device will output the lens
26160 shading map in output result metadata.<wbr/></p>
26163 <td class="entry_units">
26166 <td class="entry_range">
26167 <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>
26170 <td class="entry_hal_version">
26174 <td class="entry_tags">
26175 <ul class="entry_tags">
26176 <li><a href="#tag_RAW">RAW</a></li>
26181 <tr class="entries_header">
26182 <th class="th_details" colspan="6">Details</th>
26184 <tr class="entry_cont">
26185 <td class="entry_details" colspan="6">
26186 <p>When set to ON,<wbr/>
26187 <a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> will be provided in
26188 the output result metadata.<wbr/></p>
26189 <p>ON is always supported on devices with the RAW capability.<wbr/></p>
26194 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26195 <!-- end of entry -->
26198 <tr class="entry" id="dynamic_android.statistics.oisDataMode">
26199 <td class="entry_name
26201 android.<wbr/>statistics.<wbr/>ois<wbr/>Data<wbr/>Mode
26203 <td class="entry_type">
26204 <span class="entry_type_name entry_type_name_enum">byte</span>
26206 <span class="entry_type_visibility"> [public]</span>
26212 <ul class="entry_type_enum">
26214 <span class="entry_type_enum_name">OFF (v3.3)</span>
26215 <span class="entry_type_enum_notes"><p>Do not include OIS data in the capture result.<wbr/></p></span>
26218 <span class="entry_type_enum_name">ON (v3.3)</span>
26219 <span class="entry_type_enum_notes"><p>Include OIS data in the capture result.<wbr/></p></span>
26223 </td> <!-- entry_type -->
26225 <td class="entry_description">
26226 <p>A control for selecting whether OIS position information is included in output
26227 result metadata.<wbr/></p>
26230 <td class="entry_units">
26233 <td class="entry_range">
26234 <p><a href="#static_android.statistics.info.availableOisDataModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Ois<wbr/>Data<wbr/>Modes</a></p>
26237 <td class="entry_hal_version">
26241 <td class="entry_tags">
26247 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26248 <!-- end of entry -->
26251 <tr class="entry" id="dynamic_android.statistics.oisTimestamps">
26252 <td class="entry_name
26254 android.<wbr/>statistics.<wbr/>ois<wbr/>Timestamps
26256 <td class="entry_type">
26257 <span class="entry_type_name">int64</span>
26258 <span class="entry_type_container">x</span>
26260 <span class="entry_type_array">
26263 <span class="entry_type_visibility"> [ndk_public]</span>
26270 </td> <!-- entry_type -->
26272 <td class="entry_description">
26273 <p>An array of timestamps of OIS samples,<wbr/> in nanoseconds.<wbr/></p>
26276 <td class="entry_units">
26280 <td class="entry_range">
26283 <td class="entry_hal_version">
26287 <td class="entry_tags">
26291 <tr class="entries_header">
26292 <th class="th_details" colspan="6">Details</th>
26294 <tr class="entry_cont">
26295 <td class="entry_details" colspan="6">
26296 <p>The array contains the timestamps of OIS samples.<wbr/> The timestamps are in the same
26297 timebase as and comparable to <a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a>.<wbr/></p>
26302 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26303 <!-- end of entry -->
26306 <tr class="entry" id="dynamic_android.statistics.oisXShifts">
26307 <td class="entry_name
26309 android.<wbr/>statistics.<wbr/>ois<wbr/>XShifts
26311 <td class="entry_type">
26312 <span class="entry_type_name">float</span>
26313 <span class="entry_type_container">x</span>
26315 <span class="entry_type_array">
26318 <span class="entry_type_visibility"> [ndk_public]</span>
26325 </td> <!-- entry_type -->
26327 <td class="entry_description">
26328 <p>An array of shifts of OIS samples,<wbr/> in x direction.<wbr/></p>
26331 <td class="entry_units">
26332 Pixels in active array.<wbr/>
26335 <td class="entry_range">
26338 <td class="entry_hal_version">
26342 <td class="entry_tags">
26346 <tr class="entries_header">
26347 <th class="th_details" colspan="6">Details</th>
26349 <tr class="entry_cont">
26350 <td class="entry_details" colspan="6">
26351 <p>The array contains the amount of shifts in x direction,<wbr/> in pixels,<wbr/> based on OIS samples.<wbr/>
26352 A positive value is a shift from left to right in active array coordinate system.<wbr/> For
26353 example,<wbr/> if the optical center is (1000,<wbr/> 500) in active array coordinates,<wbr/> a shift of
26354 (3,<wbr/> 0) puts the new optical center at (1003,<wbr/> 500).<wbr/></p>
26355 <p>The number of shifts must match the number of timestamps in
26356 <a href="#dynamic_android.statistics.oisTimestamps">android.<wbr/>statistics.<wbr/>ois<wbr/>Timestamps</a>.<wbr/></p>
26361 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26362 <!-- end of entry -->
26365 <tr class="entry" id="dynamic_android.statistics.oisYShifts">
26366 <td class="entry_name
26368 android.<wbr/>statistics.<wbr/>ois<wbr/>YShifts
26370 <td class="entry_type">
26371 <span class="entry_type_name">float</span>
26372 <span class="entry_type_container">x</span>
26374 <span class="entry_type_array">
26377 <span class="entry_type_visibility"> [ndk_public]</span>
26384 </td> <!-- entry_type -->
26386 <td class="entry_description">
26387 <p>An array of shifts of OIS samples,<wbr/> in y direction.<wbr/></p>
26390 <td class="entry_units">
26391 Pixels in active array.<wbr/>
26394 <td class="entry_range">
26397 <td class="entry_hal_version">
26401 <td class="entry_tags">
26405 <tr class="entries_header">
26406 <th class="th_details" colspan="6">Details</th>
26408 <tr class="entry_cont">
26409 <td class="entry_details" colspan="6">
26410 <p>The array contains the amount of shifts in y direction,<wbr/> in pixels,<wbr/> based on OIS samples.<wbr/>
26411 A positive value is a shift from top to bottom in active array coordinate system.<wbr/> For
26412 example,<wbr/> if the optical center is (1000,<wbr/> 500) in active array coordinates,<wbr/> a shift of
26413 (0,<wbr/> 5) puts the new optical center at (1000,<wbr/> 505).<wbr/></p>
26414 <p>The number of shifts must match the number of timestamps in
26415 <a href="#dynamic_android.statistics.oisTimestamps">android.<wbr/>statistics.<wbr/>ois<wbr/>Timestamps</a>.<wbr/></p>
26420 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26421 <!-- end of entry -->
26424 <tr class="entry" id="dynamic_android.statistics.oisSamples">
26425 <td class="entry_name
26427 android.<wbr/>statistics.<wbr/>ois<wbr/>Samples
26429 <td class="entry_type">
26430 <span class="entry_type_name">float</span>
26431 <span class="entry_type_container">x</span>
26433 <span class="entry_type_array">
26436 <span class="entry_type_visibility"> [java_public as oisSample]</span>
26438 <span class="entry_type_synthetic">[synthetic] </span>
26444 </td> <!-- entry_type -->
26446 <td class="entry_description">
26447 <p>An array of OIS samples.<wbr/></p>
26450 <td class="entry_units">
26453 <td class="entry_range">
26456 <td class="entry_hal_version">
26460 <td class="entry_tags">
26464 <tr class="entries_header">
26465 <th class="th_details" colspan="6">Details</th>
26467 <tr class="entry_cont">
26468 <td class="entry_details" colspan="6">
26469 <p>Each OIS sample contains the timestamp and the amount of shifts in x and y direction,<wbr/>
26470 in pixels,<wbr/> of the OIS sample.<wbr/></p>
26471 <p>A positive value for a shift in x direction is a shift from left to right in active array
26472 coordinate system.<wbr/> For example,<wbr/> if the optical center is (1000,<wbr/> 500) in active array
26473 coordinates,<wbr/> a shift of (3,<wbr/> 0) puts the new optical center at (1003,<wbr/> 500).<wbr/></p>
26474 <p>A positive value for a shift in y direction is a shift from top to bottom in active array
26475 coordinate system.<wbr/> For example,<wbr/> if the optical center is (1000,<wbr/> 500) in active array
26476 coordinates,<wbr/> a shift of (0,<wbr/> 5) puts the new optical center at (1000,<wbr/> 505).<wbr/></p>
26481 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26482 <!-- end of entry -->
26486 <!-- end of kind -->
26489 <!-- end of section -->
26490 <tr><td colspan="7" id="section_tonemap" class="section">tonemap</td></tr>
26493 <tr><td colspan="7" class="kind">controls</td></tr>
26495 <thead class="entries_header">
26497 <th class="th_name">Property Name</th>
26498 <th class="th_type">Type</th>
26499 <th class="th_description">Description</th>
26500 <th class="th_units">Units</th>
26501 <th class="th_range">Range</th>
26502 <th class="th_hal_version">Initial HIDL HAL version</th>
26503 <th class="th_tags">Tags</th>
26518 <tr class="entry" id="controls_android.tonemap.curveBlue">
26519 <td class="entry_name
26521 android.<wbr/>tonemap.<wbr/>curve<wbr/>Blue
26523 <td class="entry_type">
26524 <span class="entry_type_name">float</span>
26525 <span class="entry_type_container">x</span>
26527 <span class="entry_type_array">
26530 <span class="entry_type_visibility"> [ndk_public]</span>
26533 <span class="entry_type_hwlevel">[full] </span>
26536 <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>
26539 </td> <!-- entry_type -->
26541 <td class="entry_description">
26542 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the blue
26543 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
26544 CONTRAST_<wbr/>CURVE.<wbr/></p>
26547 <td class="entry_units">
26550 <td class="entry_range">
26553 <td class="entry_hal_version">
26557 <td class="entry_tags">
26561 <tr class="entries_header">
26562 <th class="th_details" colspan="6">Details</th>
26564 <tr class="entry_cont">
26565 <td class="entry_details" colspan="6">
26566 <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
26571 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26572 <!-- end of entry -->
26575 <tr class="entry" id="controls_android.tonemap.curveGreen">
26576 <td class="entry_name
26578 android.<wbr/>tonemap.<wbr/>curve<wbr/>Green
26580 <td class="entry_type">
26581 <span class="entry_type_name">float</span>
26582 <span class="entry_type_container">x</span>
26584 <span class="entry_type_array">
26587 <span class="entry_type_visibility"> [ndk_public]</span>
26590 <span class="entry_type_hwlevel">[full] </span>
26593 <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>
26596 </td> <!-- entry_type -->
26598 <td class="entry_description">
26599 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the green
26600 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
26601 CONTRAST_<wbr/>CURVE.<wbr/></p>
26604 <td class="entry_units">
26607 <td class="entry_range">
26610 <td class="entry_hal_version">
26614 <td class="entry_tags">
26618 <tr class="entries_header">
26619 <th class="th_details" colspan="6">Details</th>
26621 <tr class="entry_cont">
26622 <td class="entry_details" colspan="6">
26623 <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
26628 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26629 <!-- end of entry -->
26632 <tr class="entry" id="controls_android.tonemap.curveRed">
26633 <td class="entry_name
26635 android.<wbr/>tonemap.<wbr/>curve<wbr/>Red
26637 <td class="entry_type">
26638 <span class="entry_type_name">float</span>
26639 <span class="entry_type_container">x</span>
26641 <span class="entry_type_array">
26644 <span class="entry_type_visibility"> [ndk_public]</span>
26647 <span class="entry_type_hwlevel">[full] </span>
26650 <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>
26653 </td> <!-- entry_type -->
26655 <td class="entry_description">
26656 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the red
26657 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
26658 CONTRAST_<wbr/>CURVE.<wbr/></p>
26661 <td class="entry_units">
26664 <td class="entry_range">
26665 <p>0-1 on both input and output coordinates,<wbr/> normalized
26666 as a floating-point value such that 0 == black and 1 == white.<wbr/></p>
26669 <td class="entry_hal_version">
26673 <td class="entry_tags">
26677 <tr class="entries_header">
26678 <th class="th_details" colspan="6">Details</th>
26680 <tr class="entry_cont">
26681 <td class="entry_details" colspan="6">
26682 <p>Each channel's curve is defined by an array of control points:</p>
26683 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> =
26684 [ P0in,<wbr/> P0out,<wbr/> P1in,<wbr/> P1out,<wbr/> P2in,<wbr/> P2out,<wbr/> P3in,<wbr/> P3out,<wbr/> ...,<wbr/> PNin,<wbr/> PNout ]
26685 2 <= N <= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
26686 <p>These are sorted in order of increasing <code>Pin</code>; it is
26687 required that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
26688 define a complete mapping.<wbr/> For input values between control points,<wbr/>
26689 the camera device must linearly interpolate between the control
26691 <p>Each curve can have an independent number of points,<wbr/> and the number
26692 of points can be less than max (that is,<wbr/> the request doesn't have to
26693 always provide a curve with number of points equivalent to
26694 <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
26695 <p>For devices with MONOCHROME capability,<wbr/> only red channel is used.<wbr/> Green and blue channels
26696 are ignored.<wbr/></p>
26697 <p>A few examples,<wbr/> and their corresponding graphical mappings; these
26698 only specify the red channel and the precision is limited to 4
26699 digits,<wbr/> for conciseness.<wbr/></p>
26700 <p>Linear mapping:</p>
26701 <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 ]
26703 <p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
26704 <p>Invert mapping:</p>
26705 <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 ]
26707 <p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
26708 <p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
26709 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
26710 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/>
26711 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/>
26712 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/>
26713 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 ]
26715 <p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
26716 <p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
26717 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
26718 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/>
26719 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/>
26720 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/>
26721 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 ]
26723 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
26727 <tr class="entries_header">
26728 <th class="th_details" colspan="6">HAL Implementation Details</th>
26730 <tr class="entry_cont">
26731 <td class="entry_details" colspan="6">
26732 <p>For good quality of mapping,<wbr/> at least 128 control points are
26733 preferred.<wbr/></p>
26734 <p>A typical use case of this would be a gamma-1/<wbr/>2.<wbr/>2 curve,<wbr/> with as many
26735 control points used as are available.<wbr/></p>
26739 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26740 <!-- end of entry -->
26743 <tr class="entry" id="controls_android.tonemap.curve">
26744 <td class="entry_name
26746 android.<wbr/>tonemap.<wbr/>curve
26748 <td class="entry_type">
26749 <span class="entry_type_name">float</span>
26751 <span class="entry_type_visibility"> [java_public as tonemapCurve]</span>
26753 <span class="entry_type_synthetic">[synthetic] </span>
26755 <span class="entry_type_hwlevel">[full] </span>
26760 </td> <!-- entry_type -->
26762 <td class="entry_description">
26763 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a>
26764 is CONTRAST_<wbr/>CURVE.<wbr/></p>
26767 <td class="entry_units">
26770 <td class="entry_range">
26773 <td class="entry_hal_version">
26777 <td class="entry_tags">
26781 <tr class="entries_header">
26782 <th class="th_details" colspan="6">Details</th>
26784 <tr class="entry_cont">
26785 <td class="entry_details" colspan="6">
26786 <p>The tonemapCurve consist of three curves for each of red,<wbr/> green,<wbr/> and blue
26787 channels respectively.<wbr/> The following example uses the red channel as an
26788 example.<wbr/> The same logic applies to green and blue channel.<wbr/>
26789 Each channel's curve is defined by an array of control points:</p>
26790 <pre><code>curveRed =
26791 [ 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) ]
26792 2 <= N <= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
26793 <p>These are sorted in order of increasing <code>Pin</code>; it is always
26794 guaranteed that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
26795 define a complete mapping.<wbr/> For input values between control points,<wbr/>
26796 the camera device must linearly interpolate between the control
26798 <p>Each curve can have an independent number of points,<wbr/> and the number
26799 of points can be less than max (that is,<wbr/> the request doesn't have to
26800 always provide a curve with number of points equivalent to
26801 <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
26802 <p>For devices with MONOCHROME capability,<wbr/> only red channel is used.<wbr/> Green and blue channels
26803 are ignored.<wbr/></p>
26804 <p>A few examples,<wbr/> and their corresponding graphical mappings; these
26805 only specify the red channel and the precision is limited to 4
26806 digits,<wbr/> for conciseness.<wbr/></p>
26807 <p>Linear mapping:</p>
26808 <pre><code>curveRed = [ (0,<wbr/> 0),<wbr/> (1.<wbr/>0,<wbr/> 1.<wbr/>0) ]
26810 <p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
26811 <p>Invert mapping:</p>
26812 <pre><code>curveRed = [ (0,<wbr/> 1.<wbr/>0),<wbr/> (1.<wbr/>0,<wbr/> 0) ]
26814 <p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
26815 <p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
26816 <pre><code>curveRed = [
26817 (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/>
26818 (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/>
26819 (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/>
26820 (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) ]
26822 <p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
26823 <p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
26824 <pre><code>curveRed = [
26825 (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/>
26826 (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/>
26827 (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/>
26828 (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) ]
26830 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
26834 <tr class="entries_header">
26835 <th class="th_details" colspan="6">HAL Implementation Details</th>
26837 <tr class="entry_cont">
26838 <td class="entry_details" colspan="6">
26839 <p>This entry is created by the framework from the curveRed,<wbr/> curveGreen and
26840 curveBlue entries.<wbr/></p>
26844 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26845 <!-- end of entry -->
26848 <tr class="entry" id="controls_android.tonemap.mode">
26849 <td class="entry_name
26851 android.<wbr/>tonemap.<wbr/>mode
26853 <td class="entry_type">
26854 <span class="entry_type_name entry_type_name_enum">byte</span>
26856 <span class="entry_type_visibility"> [public]</span>
26859 <span class="entry_type_hwlevel">[full] </span>
26863 <ul class="entry_type_enum">
26865 <span class="entry_type_enum_name">CONTRAST_CURVE (v3.2)</span>
26866 <span class="entry_type_enum_notes"><p>Use the tone mapping curve specified in
26867 the <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>* entries.<wbr/></p>
26868 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
26869 for applying the tonemapping curve specified by
26870 <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p>
26871 <p>Must not slow down frame rate relative to raw
26872 sensor output.<wbr/></p></span>
26875 <span class="entry_type_enum_name">FAST (v3.2)</span>
26876 <span class="entry_type_enum_notes"><p>Advanced gamma mapping and color enhancement may be applied,<wbr/> without
26877 reducing frame rate compared to raw sensor output.<wbr/></p></span>
26880 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
26881 <span class="entry_type_enum_notes"><p>High-quality gamma mapping and color enhancement will be applied,<wbr/> at
26882 the cost of possibly reduced frame rate compared to raw sensor output.<wbr/></p></span>
26885 <span class="entry_type_enum_name">GAMMA_VALUE (v3.2)</span>
26886 <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
26887 tonemapping.<wbr/></p>
26888 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
26889 for applying the tonemapping curve specified by <a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a>.<wbr/></p>
26890 <p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
26893 <span class="entry_type_enum_name">PRESET_CURVE (v3.2)</span>
26894 <span class="entry_type_enum_notes"><p>Use the preset tonemapping curve specified in
26895 <a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a> to peform tonemapping.<wbr/></p>
26896 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
26897 for applying the tonemapping curve specified by
26898 <a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a>.<wbr/></p>
26899 <p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
26903 </td> <!-- entry_type -->
26905 <td class="entry_description">
26906 <p>High-level global contrast/<wbr/>gamma/<wbr/>tonemapping control.<wbr/></p>
26909 <td class="entry_units">
26912 <td class="entry_range">
26913 <p><a href="#static_android.tonemap.availableToneMapModes">android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes</a></p>
26916 <td class="entry_hal_version">
26920 <td class="entry_tags">
26924 <tr class="entries_header">
26925 <th class="th_details" colspan="6">Details</th>
26927 <tr class="entry_cont">
26928 <td class="entry_details" colspan="6">
26929 <p>When switching to an application-defined contrast curve by setting
26930 <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> to CONTRAST_<wbr/>CURVE,<wbr/> the curve is defined
26931 per-channel with a set of <code>(in,<wbr/> out)</code> points that specify the
26932 mapping from input high-bit-depth pixel value to the output
26933 low-bit-depth value.<wbr/> Since the actual pixel ranges of both input
26934 and output may change depending on the camera pipeline,<wbr/> the values
26935 are specified by normalized floating-point numbers.<wbr/></p>
26936 <p>More-complex color mapping operations such as 3D color look-up
26937 tables,<wbr/> selective chroma enhancement,<wbr/> or other non-linear color
26938 transforms will be disabled when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
26939 CONTRAST_<wbr/>CURVE.<wbr/></p>
26940 <p>When using either FAST or HIGH_<wbr/>QUALITY,<wbr/> the camera device will
26941 emit its own tonemap curve in <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/>
26942 These values are always available,<wbr/> and as close as possible to the
26943 actually used nonlinear/<wbr/>nonglobal transforms.<wbr/></p>
26944 <p>If a request is sent with CONTRAST_<wbr/>CURVE with the camera device's
26945 provided curve in FAST or HIGH_<wbr/>QUALITY,<wbr/> the image's tonemap will be
26946 roughly the same.<wbr/></p>
26951 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26952 <!-- end of entry -->
26955 <tr class="entry" id="controls_android.tonemap.gamma">
26956 <td class="entry_name
26958 android.<wbr/>tonemap.<wbr/>gamma
26960 <td class="entry_type">
26961 <span class="entry_type_name">float</span>
26963 <span class="entry_type_visibility"> [public]</span>
26970 </td> <!-- entry_type -->
26972 <td class="entry_description">
26973 <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
26974 GAMMA_<wbr/>VALUE</p>
26977 <td class="entry_units">
26980 <td class="entry_range">
26983 <td class="entry_hal_version">
26987 <td class="entry_tags">
26991 <tr class="entries_header">
26992 <th class="th_details" colspan="6">Details</th>
26994 <tr class="entry_cont">
26995 <td class="entry_details" colspan="6">
26996 <p>The tonemap curve will be defined the following formula:
26997 * OUT = pow(IN,<wbr/> 1.<wbr/>0 /<wbr/> gamma)
26998 where IN and OUT is the input pixel value scaled to range [0.<wbr/>0,<wbr/> 1.<wbr/>0],<wbr/>
26999 pow is the power function and gamma is the gamma value specified by this
27001 <p>The same curve will be applied to all color channels.<wbr/> The camera device
27002 may clip the input gamma value to its supported range.<wbr/> The actual applied
27003 value will be returned in capture result.<wbr/></p>
27004 <p>The valid range of gamma value varies on different devices,<wbr/> but values
27005 within [1.<wbr/>0,<wbr/> 5.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
27010 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27011 <!-- end of entry -->
27014 <tr class="entry" id="controls_android.tonemap.presetCurve">
27015 <td class="entry_name
27017 android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve
27019 <td class="entry_type">
27020 <span class="entry_type_name entry_type_name_enum">byte</span>
27022 <span class="entry_type_visibility"> [public]</span>
27028 <ul class="entry_type_enum">
27030 <span class="entry_type_enum_name">SRGB (v3.2)</span>
27031 <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by sRGB</p></span>
27034 <span class="entry_type_enum_name">REC709 (v3.2)</span>
27035 <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by ITU-R BT.<wbr/>709</p></span>
27039 </td> <!-- entry_type -->
27041 <td class="entry_description">
27042 <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
27043 PRESET_<wbr/>CURVE</p>
27046 <td class="entry_units">
27049 <td class="entry_range">
27052 <td class="entry_hal_version">
27056 <td class="entry_tags">
27060 <tr class="entries_header">
27061 <th class="th_details" colspan="6">Details</th>
27063 <tr class="entry_cont">
27064 <td class="entry_details" colspan="6">
27065 <p>The tonemap curve will be defined by specified standard.<wbr/></p>
27066 <p>sRGB (approximated by 16 control points):</p>
27067 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
27068 <p>Rec.<wbr/> 709 (approximated by 16 control points):</p>
27069 <p><img alt="Rec. 709 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/rec709_tonemap.png"/></p>
27070 <p>Note that above figures show a 16 control points approximation of preset
27071 curves.<wbr/> Camera devices may apply a different approximation to the curve.<wbr/></p>
27076 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27077 <!-- end of entry -->
27081 <!-- end of kind -->
27083 <tr><td colspan="7" class="kind">static</td></tr>
27085 <thead class="entries_header">
27087 <th class="th_name">Property Name</th>
27088 <th class="th_type">Type</th>
27089 <th class="th_description">Description</th>
27090 <th class="th_units">Units</th>
27091 <th class="th_range">Range</th>
27092 <th class="th_hal_version">Initial HIDL HAL version</th>
27093 <th class="th_tags">Tags</th>
27108 <tr class="entry" id="static_android.tonemap.maxCurvePoints">
27109 <td class="entry_name
27111 android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points
27113 <td class="entry_type">
27114 <span class="entry_type_name">int32</span>
27116 <span class="entry_type_visibility"> [public]</span>
27119 <span class="entry_type_hwlevel">[full] </span>
27124 </td> <!-- entry_type -->
27126 <td class="entry_description">
27127 <p>Maximum number of supported points in the
27128 tonemap curve that can be used for <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p>
27131 <td class="entry_units">
27134 <td class="entry_range">
27137 <td class="entry_hal_version">
27141 <td class="entry_tags">
27145 <tr class="entries_header">
27146 <th class="th_details" colspan="6">Details</th>
27148 <tr class="entry_cont">
27149 <td class="entry_details" colspan="6">
27150 <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
27151 less than this maximum,<wbr/> the camera device will resample the curve to its internal
27152 representation,<wbr/> using linear interpolation.<wbr/></p>
27153 <p>The output curves in the result metadata may have a different number
27154 of points than the input curves,<wbr/> and will represent the actual
27155 hardware curves used as closely as possible when linearly interpolated.<wbr/></p>
27159 <tr class="entries_header">
27160 <th class="th_details" colspan="6">HAL Implementation Details</th>
27162 <tr class="entry_cont">
27163 <td class="entry_details" colspan="6">
27164 <p>This value must be at least 64.<wbr/> This should be at least 128.<wbr/></p>
27168 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27169 <!-- end of entry -->
27172 <tr class="entry" id="static_android.tonemap.availableToneMapModes">
27173 <td class="entry_name
27175 android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes
27177 <td class="entry_type">
27178 <span class="entry_type_name">byte</span>
27179 <span class="entry_type_container">x</span>
27181 <span class="entry_type_array">
27184 <span class="entry_type_visibility"> [public as enumList]</span>
27187 <span class="entry_type_hwlevel">[full] </span>
27190 <div class="entry_type_notes">list of enums</div>
27193 </td> <!-- entry_type -->
27195 <td class="entry_description">
27196 <p>List of tonemapping modes for <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> that are supported by this camera
27200 <td class="entry_units">
27203 <td class="entry_range">
27204 <p>Any value listed in <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a></p>
27207 <td class="entry_hal_version">
27211 <td class="entry_tags">
27215 <tr class="entries_header">
27216 <th class="th_details" colspan="6">Details</th>
27218 <tr class="entry_cont">
27219 <td class="entry_details" colspan="6">
27220 <p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always contain
27221 at least one of below mode combinations:</p>
27223 <li>CONTRAST_<wbr/>CURVE,<wbr/> FAST and HIGH_<wbr/>QUALITY</li>
27224 <li>GAMMA_<wbr/>VALUE,<wbr/> PRESET_<wbr/>CURVE,<wbr/> FAST and HIGH_<wbr/>QUALITY</li>
27226 <p>This includes all FULL level devices.<wbr/></p>
27230 <tr class="entries_header">
27231 <th class="th_details" colspan="6">HAL Implementation Details</th>
27233 <tr class="entry_cont">
27234 <td class="entry_details" colspan="6">
27235 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if automatic tonemap control is available
27236 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
27237 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
27238 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
27242 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27243 <!-- end of entry -->
27247 <!-- end of kind -->
27249 <tr><td colspan="7" class="kind">dynamic</td></tr>
27251 <thead class="entries_header">
27253 <th class="th_name">Property Name</th>
27254 <th class="th_type">Type</th>
27255 <th class="th_description">Description</th>
27256 <th class="th_units">Units</th>
27257 <th class="th_range">Range</th>
27258 <th class="th_hal_version">Initial HIDL HAL version</th>
27259 <th class="th_tags">Tags</th>
27274 <tr class="entry" id="dynamic_android.tonemap.curveBlue">
27275 <td class="entry_name
27277 android.<wbr/>tonemap.<wbr/>curve<wbr/>Blue
27279 <td class="entry_type">
27280 <span class="entry_type_name">float</span>
27281 <span class="entry_type_container">x</span>
27283 <span class="entry_type_array">
27286 <span class="entry_type_visibility"> [ndk_public]</span>
27289 <span class="entry_type_hwlevel">[full] </span>
27292 <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>
27295 </td> <!-- entry_type -->
27297 <td class="entry_description">
27298 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the blue
27299 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
27300 CONTRAST_<wbr/>CURVE.<wbr/></p>
27303 <td class="entry_units">
27306 <td class="entry_range">
27309 <td class="entry_hal_version">
27313 <td class="entry_tags">
27317 <tr class="entries_header">
27318 <th class="th_details" colspan="6">Details</th>
27320 <tr class="entry_cont">
27321 <td class="entry_details" colspan="6">
27322 <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
27327 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27328 <!-- end of entry -->
27331 <tr class="entry" id="dynamic_android.tonemap.curveGreen">
27332 <td class="entry_name
27334 android.<wbr/>tonemap.<wbr/>curve<wbr/>Green
27336 <td class="entry_type">
27337 <span class="entry_type_name">float</span>
27338 <span class="entry_type_container">x</span>
27340 <span class="entry_type_array">
27343 <span class="entry_type_visibility"> [ndk_public]</span>
27346 <span class="entry_type_hwlevel">[full] </span>
27349 <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>
27352 </td> <!-- entry_type -->
27354 <td class="entry_description">
27355 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the green
27356 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
27357 CONTRAST_<wbr/>CURVE.<wbr/></p>
27360 <td class="entry_units">
27363 <td class="entry_range">
27366 <td class="entry_hal_version">
27370 <td class="entry_tags">
27374 <tr class="entries_header">
27375 <th class="th_details" colspan="6">Details</th>
27377 <tr class="entry_cont">
27378 <td class="entry_details" colspan="6">
27379 <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
27384 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27385 <!-- end of entry -->
27388 <tr class="entry" id="dynamic_android.tonemap.curveRed">
27389 <td class="entry_name
27391 android.<wbr/>tonemap.<wbr/>curve<wbr/>Red
27393 <td class="entry_type">
27394 <span class="entry_type_name">float</span>
27395 <span class="entry_type_container">x</span>
27397 <span class="entry_type_array">
27400 <span class="entry_type_visibility"> [ndk_public]</span>
27403 <span class="entry_type_hwlevel">[full] </span>
27406 <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>
27409 </td> <!-- entry_type -->
27411 <td class="entry_description">
27412 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the red
27413 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
27414 CONTRAST_<wbr/>CURVE.<wbr/></p>
27417 <td class="entry_units">
27420 <td class="entry_range">
27421 <p>0-1 on both input and output coordinates,<wbr/> normalized
27422 as a floating-point value such that 0 == black and 1 == white.<wbr/></p>
27425 <td class="entry_hal_version">
27429 <td class="entry_tags">
27433 <tr class="entries_header">
27434 <th class="th_details" colspan="6">Details</th>
27436 <tr class="entry_cont">
27437 <td class="entry_details" colspan="6">
27438 <p>Each channel's curve is defined by an array of control points:</p>
27439 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> =
27440 [ P0in,<wbr/> P0out,<wbr/> P1in,<wbr/> P1out,<wbr/> P2in,<wbr/> P2out,<wbr/> P3in,<wbr/> P3out,<wbr/> ...,<wbr/> PNin,<wbr/> PNout ]
27441 2 <= N <= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
27442 <p>These are sorted in order of increasing <code>Pin</code>; it is
27443 required that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
27444 define a complete mapping.<wbr/> For input values between control points,<wbr/>
27445 the camera device must linearly interpolate between the control
27447 <p>Each curve can have an independent number of points,<wbr/> and the number
27448 of points can be less than max (that is,<wbr/> the request doesn't have to
27449 always provide a curve with number of points equivalent to
27450 <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
27451 <p>For devices with MONOCHROME capability,<wbr/> only red channel is used.<wbr/> Green and blue channels
27452 are ignored.<wbr/></p>
27453 <p>A few examples,<wbr/> and their corresponding graphical mappings; these
27454 only specify the red channel and the precision is limited to 4
27455 digits,<wbr/> for conciseness.<wbr/></p>
27456 <p>Linear mapping:</p>
27457 <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 ]
27459 <p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
27460 <p>Invert mapping:</p>
27461 <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 ]
27463 <p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
27464 <p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
27465 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
27466 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/>
27467 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/>
27468 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/>
27469 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 ]
27471 <p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
27472 <p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
27473 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
27474 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/>
27475 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/>
27476 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/>
27477 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 ]
27479 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
27483 <tr class="entries_header">
27484 <th class="th_details" colspan="6">HAL Implementation Details</th>
27486 <tr class="entry_cont">
27487 <td class="entry_details" colspan="6">
27488 <p>For good quality of mapping,<wbr/> at least 128 control points are
27489 preferred.<wbr/></p>
27490 <p>A typical use case of this would be a gamma-1/<wbr/>2.<wbr/>2 curve,<wbr/> with as many
27491 control points used as are available.<wbr/></p>
27495 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27496 <!-- end of entry -->
27499 <tr class="entry" id="dynamic_android.tonemap.curve">
27500 <td class="entry_name
27502 android.<wbr/>tonemap.<wbr/>curve
27504 <td class="entry_type">
27505 <span class="entry_type_name">float</span>
27507 <span class="entry_type_visibility"> [java_public as tonemapCurve]</span>
27509 <span class="entry_type_synthetic">[synthetic] </span>
27511 <span class="entry_type_hwlevel">[full] </span>
27516 </td> <!-- entry_type -->
27518 <td class="entry_description">
27519 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a>
27520 is CONTRAST_<wbr/>CURVE.<wbr/></p>
27523 <td class="entry_units">
27526 <td class="entry_range">
27529 <td class="entry_hal_version">
27533 <td class="entry_tags">
27537 <tr class="entries_header">
27538 <th class="th_details" colspan="6">Details</th>
27540 <tr class="entry_cont">
27541 <td class="entry_details" colspan="6">
27542 <p>The tonemapCurve consist of three curves for each of red,<wbr/> green,<wbr/> and blue
27543 channels respectively.<wbr/> The following example uses the red channel as an
27544 example.<wbr/> The same logic applies to green and blue channel.<wbr/>
27545 Each channel's curve is defined by an array of control points:</p>
27546 <pre><code>curveRed =
27547 [ 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) ]
27548 2 <= N <= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
27549 <p>These are sorted in order of increasing <code>Pin</code>; it is always
27550 guaranteed that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
27551 define a complete mapping.<wbr/> For input values between control points,<wbr/>
27552 the camera device must linearly interpolate between the control
27554 <p>Each curve can have an independent number of points,<wbr/> and the number
27555 of points can be less than max (that is,<wbr/> the request doesn't have to
27556 always provide a curve with number of points equivalent to
27557 <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
27558 <p>For devices with MONOCHROME capability,<wbr/> only red channel is used.<wbr/> Green and blue channels
27559 are ignored.<wbr/></p>
27560 <p>A few examples,<wbr/> and their corresponding graphical mappings; these
27561 only specify the red channel and the precision is limited to 4
27562 digits,<wbr/> for conciseness.<wbr/></p>
27563 <p>Linear mapping:</p>
27564 <pre><code>curveRed = [ (0,<wbr/> 0),<wbr/> (1.<wbr/>0,<wbr/> 1.<wbr/>0) ]
27566 <p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
27567 <p>Invert mapping:</p>
27568 <pre><code>curveRed = [ (0,<wbr/> 1.<wbr/>0),<wbr/> (1.<wbr/>0,<wbr/> 0) ]
27570 <p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
27571 <p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
27572 <pre><code>curveRed = [
27573 (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/>
27574 (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/>
27575 (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/>
27576 (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) ]
27578 <p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
27579 <p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
27580 <pre><code>curveRed = [
27581 (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/>
27582 (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/>
27583 (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/>
27584 (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) ]
27586 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
27590 <tr class="entries_header">
27591 <th class="th_details" colspan="6">HAL Implementation Details</th>
27593 <tr class="entry_cont">
27594 <td class="entry_details" colspan="6">
27595 <p>This entry is created by the framework from the curveRed,<wbr/> curveGreen and
27596 curveBlue entries.<wbr/></p>
27600 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27601 <!-- end of entry -->
27604 <tr class="entry" id="dynamic_android.tonemap.mode">
27605 <td class="entry_name
27607 android.<wbr/>tonemap.<wbr/>mode
27609 <td class="entry_type">
27610 <span class="entry_type_name entry_type_name_enum">byte</span>
27612 <span class="entry_type_visibility"> [public]</span>
27615 <span class="entry_type_hwlevel">[full] </span>
27619 <ul class="entry_type_enum">
27621 <span class="entry_type_enum_name">CONTRAST_CURVE (v3.2)</span>
27622 <span class="entry_type_enum_notes"><p>Use the tone mapping curve specified in
27623 the <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>* entries.<wbr/></p>
27624 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
27625 for applying the tonemapping curve specified by
27626 <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p>
27627 <p>Must not slow down frame rate relative to raw
27628 sensor output.<wbr/></p></span>
27631 <span class="entry_type_enum_name">FAST (v3.2)</span>
27632 <span class="entry_type_enum_notes"><p>Advanced gamma mapping and color enhancement may be applied,<wbr/> without
27633 reducing frame rate compared to raw sensor output.<wbr/></p></span>
27636 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
27637 <span class="entry_type_enum_notes"><p>High-quality gamma mapping and color enhancement will be applied,<wbr/> at
27638 the cost of possibly reduced frame rate compared to raw sensor output.<wbr/></p></span>
27641 <span class="entry_type_enum_name">GAMMA_VALUE (v3.2)</span>
27642 <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
27643 tonemapping.<wbr/></p>
27644 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
27645 for applying the tonemapping curve specified by <a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a>.<wbr/></p>
27646 <p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
27649 <span class="entry_type_enum_name">PRESET_CURVE (v3.2)</span>
27650 <span class="entry_type_enum_notes"><p>Use the preset tonemapping curve specified in
27651 <a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a> to peform tonemapping.<wbr/></p>
27652 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
27653 for applying the tonemapping curve specified by
27654 <a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a>.<wbr/></p>
27655 <p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
27659 </td> <!-- entry_type -->
27661 <td class="entry_description">
27662 <p>High-level global contrast/<wbr/>gamma/<wbr/>tonemapping control.<wbr/></p>
27665 <td class="entry_units">
27668 <td class="entry_range">
27669 <p><a href="#static_android.tonemap.availableToneMapModes">android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes</a></p>
27672 <td class="entry_hal_version">
27676 <td class="entry_tags">
27680 <tr class="entries_header">
27681 <th class="th_details" colspan="6">Details</th>
27683 <tr class="entry_cont">
27684 <td class="entry_details" colspan="6">
27685 <p>When switching to an application-defined contrast curve by setting
27686 <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> to CONTRAST_<wbr/>CURVE,<wbr/> the curve is defined
27687 per-channel with a set of <code>(in,<wbr/> out)</code> points that specify the
27688 mapping from input high-bit-depth pixel value to the output
27689 low-bit-depth value.<wbr/> Since the actual pixel ranges of both input
27690 and output may change depending on the camera pipeline,<wbr/> the values
27691 are specified by normalized floating-point numbers.<wbr/></p>
27692 <p>More-complex color mapping operations such as 3D color look-up
27693 tables,<wbr/> selective chroma enhancement,<wbr/> or other non-linear color
27694 transforms will be disabled when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
27695 CONTRAST_<wbr/>CURVE.<wbr/></p>
27696 <p>When using either FAST or HIGH_<wbr/>QUALITY,<wbr/> the camera device will
27697 emit its own tonemap curve in <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/>
27698 These values are always available,<wbr/> and as close as possible to the
27699 actually used nonlinear/<wbr/>nonglobal transforms.<wbr/></p>
27700 <p>If a request is sent with CONTRAST_<wbr/>CURVE with the camera device's
27701 provided curve in FAST or HIGH_<wbr/>QUALITY,<wbr/> the image's tonemap will be
27702 roughly the same.<wbr/></p>
27707 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27708 <!-- end of entry -->
27711 <tr class="entry" id="dynamic_android.tonemap.gamma">
27712 <td class="entry_name
27714 android.<wbr/>tonemap.<wbr/>gamma
27716 <td class="entry_type">
27717 <span class="entry_type_name">float</span>
27719 <span class="entry_type_visibility"> [public]</span>
27726 </td> <!-- entry_type -->
27728 <td class="entry_description">
27729 <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
27730 GAMMA_<wbr/>VALUE</p>
27733 <td class="entry_units">
27736 <td class="entry_range">
27739 <td class="entry_hal_version">
27743 <td class="entry_tags">
27747 <tr class="entries_header">
27748 <th class="th_details" colspan="6">Details</th>
27750 <tr class="entry_cont">
27751 <td class="entry_details" colspan="6">
27752 <p>The tonemap curve will be defined the following formula:
27753 * OUT = pow(IN,<wbr/> 1.<wbr/>0 /<wbr/> gamma)
27754 where IN and OUT is the input pixel value scaled to range [0.<wbr/>0,<wbr/> 1.<wbr/>0],<wbr/>
27755 pow is the power function and gamma is the gamma value specified by this
27757 <p>The same curve will be applied to all color channels.<wbr/> The camera device
27758 may clip the input gamma value to its supported range.<wbr/> The actual applied
27759 value will be returned in capture result.<wbr/></p>
27760 <p>The valid range of gamma value varies on different devices,<wbr/> but values
27761 within [1.<wbr/>0,<wbr/> 5.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
27766 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27767 <!-- end of entry -->
27770 <tr class="entry" id="dynamic_android.tonemap.presetCurve">
27771 <td class="entry_name
27773 android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve
27775 <td class="entry_type">
27776 <span class="entry_type_name entry_type_name_enum">byte</span>
27778 <span class="entry_type_visibility"> [public]</span>
27784 <ul class="entry_type_enum">
27786 <span class="entry_type_enum_name">SRGB (v3.2)</span>
27787 <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by sRGB</p></span>
27790 <span class="entry_type_enum_name">REC709 (v3.2)</span>
27791 <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by ITU-R BT.<wbr/>709</p></span>
27795 </td> <!-- entry_type -->
27797 <td class="entry_description">
27798 <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
27799 PRESET_<wbr/>CURVE</p>
27802 <td class="entry_units">
27805 <td class="entry_range">
27808 <td class="entry_hal_version">
27812 <td class="entry_tags">
27816 <tr class="entries_header">
27817 <th class="th_details" colspan="6">Details</th>
27819 <tr class="entry_cont">
27820 <td class="entry_details" colspan="6">
27821 <p>The tonemap curve will be defined by specified standard.<wbr/></p>
27822 <p>sRGB (approximated by 16 control points):</p>
27823 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
27824 <p>Rec.<wbr/> 709 (approximated by 16 control points):</p>
27825 <p><img alt="Rec. 709 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/rec709_tonemap.png"/></p>
27826 <p>Note that above figures show a 16 control points approximation of preset
27827 curves.<wbr/> Camera devices may apply a different approximation to the curve.<wbr/></p>
27832 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27833 <!-- end of entry -->
27837 <!-- end of kind -->
27840 <!-- end of section -->
27841 <tr><td colspan="7" id="section_led" class="section">led</td></tr>
27844 <tr><td colspan="7" class="kind">controls</td></tr>
27846 <thead class="entries_header">
27848 <th class="th_name">Property Name</th>
27849 <th class="th_type">Type</th>
27850 <th class="th_description">Description</th>
27851 <th class="th_units">Units</th>
27852 <th class="th_range">Range</th>
27853 <th class="th_hal_version">Initial HIDL HAL version</th>
27854 <th class="th_tags">Tags</th>
27869 <tr class="entry" id="controls_android.led.transmit">
27870 <td class="entry_name
27872 android.<wbr/>led.<wbr/>transmit
27874 <td class="entry_type">
27875 <span class="entry_type_name entry_type_name_enum">byte</span>
27877 <span class="entry_type_visibility"> [hidden as boolean]</span>
27883 <ul class="entry_type_enum">
27885 <span class="entry_type_enum_name">OFF (v3.2)</span>
27888 <span class="entry_type_enum_name">ON (v3.2)</span>
27892 </td> <!-- entry_type -->
27894 <td class="entry_description">
27895 <p>This LED is nominally used to indicate to the user
27896 that the camera is powered on and may be streaming images back to the
27897 Application Processor.<wbr/> In certain rare circumstances,<wbr/> the OS may
27898 disable this when video is processed locally and not transmitted to
27899 any untrusted applications.<wbr/></p>
27900 <p>In particular,<wbr/> the LED <em>must</em> always be on when the data could be
27901 transmitted off the device.<wbr/> The LED <em>should</em> always be on whenever
27902 data is stored locally on the device.<wbr/></p>
27903 <p>The LED <em>may</em> be off if a trusted application is using the data that
27904 doesn't violate the above rules.<wbr/></p>
27907 <td class="entry_units">
27910 <td class="entry_range">
27913 <td class="entry_hal_version">
27917 <td class="entry_tags">
27923 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27924 <!-- end of entry -->
27928 <!-- end of kind -->
27930 <tr><td colspan="7" class="kind">dynamic</td></tr>
27932 <thead class="entries_header">
27934 <th class="th_name">Property Name</th>
27935 <th class="th_type">Type</th>
27936 <th class="th_description">Description</th>
27937 <th class="th_units">Units</th>
27938 <th class="th_range">Range</th>
27939 <th class="th_hal_version">Initial HIDL HAL version</th>
27940 <th class="th_tags">Tags</th>
27955 <tr class="entry" id="dynamic_android.led.transmit">
27956 <td class="entry_name
27958 android.<wbr/>led.<wbr/>transmit
27960 <td class="entry_type">
27961 <span class="entry_type_name entry_type_name_enum">byte</span>
27963 <span class="entry_type_visibility"> [hidden as boolean]</span>
27969 <ul class="entry_type_enum">
27971 <span class="entry_type_enum_name">OFF (v3.2)</span>
27974 <span class="entry_type_enum_name">ON (v3.2)</span>
27978 </td> <!-- entry_type -->
27980 <td class="entry_description">
27981 <p>This LED is nominally used to indicate to the user
27982 that the camera is powered on and may be streaming images back to the
27983 Application Processor.<wbr/> In certain rare circumstances,<wbr/> the OS may
27984 disable this when video is processed locally and not transmitted to
27985 any untrusted applications.<wbr/></p>
27986 <p>In particular,<wbr/> the LED <em>must</em> always be on when the data could be
27987 transmitted off the device.<wbr/> The LED <em>should</em> always be on whenever
27988 data is stored locally on the device.<wbr/></p>
27989 <p>The LED <em>may</em> be off if a trusted application is using the data that
27990 doesn't violate the above rules.<wbr/></p>
27993 <td class="entry_units">
27996 <td class="entry_range">
27999 <td class="entry_hal_version">
28003 <td class="entry_tags">
28009 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28010 <!-- end of entry -->
28014 <!-- end of kind -->
28016 <tr><td colspan="7" class="kind">static</td></tr>
28018 <thead class="entries_header">
28020 <th class="th_name">Property Name</th>
28021 <th class="th_type">Type</th>
28022 <th class="th_description">Description</th>
28023 <th class="th_units">Units</th>
28024 <th class="th_range">Range</th>
28025 <th class="th_hal_version">Initial HIDL HAL version</th>
28026 <th class="th_tags">Tags</th>
28041 <tr class="entry" id="static_android.led.availableLeds">
28042 <td class="entry_name
28044 android.<wbr/>led.<wbr/>available<wbr/>Leds
28046 <td class="entry_type">
28047 <span class="entry_type_name entry_type_name_enum">byte</span>
28048 <span class="entry_type_container">x</span>
28050 <span class="entry_type_array">
28053 <span class="entry_type_visibility"> [hidden]</span>
28059 <ul class="entry_type_enum">
28061 <span class="entry_type_enum_name">TRANSMIT (v3.2)</span>
28062 <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>
28066 </td> <!-- entry_type -->
28068 <td class="entry_description">
28069 <p>A list of camera LEDs that are available on this system.<wbr/></p>
28072 <td class="entry_units">
28075 <td class="entry_range">
28078 <td class="entry_hal_version">
28082 <td class="entry_tags">
28088 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28089 <!-- end of entry -->
28093 <!-- end of kind -->
28096 <!-- end of section -->
28097 <tr><td colspan="7" id="section_info" class="section">info</td></tr>
28100 <tr><td colspan="7" class="kind">static</td></tr>
28102 <thead class="entries_header">
28104 <th class="th_name">Property Name</th>
28105 <th class="th_type">Type</th>
28106 <th class="th_description">Description</th>
28107 <th class="th_units">Units</th>
28108 <th class="th_range">Range</th>
28109 <th class="th_hal_version">Initial HIDL HAL version</th>
28110 <th class="th_tags">Tags</th>
28125 <tr class="entry" id="static_android.info.supportedHardwareLevel">
28126 <td class="entry_name
28128 android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level
28130 <td class="entry_type">
28131 <span class="entry_type_name entry_type_name_enum">byte</span>
28133 <span class="entry_type_visibility"> [public]</span>
28136 <span class="entry_type_hwlevel">[legacy] </span>
28140 <ul class="entry_type_enum">
28142 <span class="entry_type_enum_name">LIMITED (v3.2)</span>
28143 <span class="entry_type_enum_notes"><p>This camera device does not have enough capabilities to qualify as a <code>FULL</code> device or
28145 <p>Only the stream configurations listed in the <code>LEGACY</code> and <code>LIMITED</code> tables in the
28146 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">createCaptureSession</a> documentation are guaranteed to be supported.<wbr/></p>
28147 <p>All <code>LIMITED</code> devices support the <code>BACKWARDS_<wbr/>COMPATIBLE</code> capability,<wbr/> indicating basic
28148 support for color image capture.<wbr/> The only exception is that the device may
28149 alternatively support only the <code>DEPTH_<wbr/>OUTPUT</code> capability,<wbr/> if it can only output depth
28150 measurements and not color images.<wbr/></p>
28151 <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>
28152 to lock exposure metering (and calculate flash power,<wbr/> for cameras with flash) before
28153 capturing a high-quality still image.<wbr/></p>
28154 <p>A <code>LIMITED</code> device that only lists the <code>BACKWARDS_<wbr/>COMPATIBLE</code> capability is only
28155 required to support full-automatic operation and post-processing (<code>OFF</code> is not
28156 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
28157 <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>)</p>
28158 <p>Additional capabilities may optionally be supported by a <code>LIMITED</code>-level device,<wbr/> and
28159 can be checked for in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p></span>
28162 <span class="entry_type_enum_name">FULL (v3.2)</span>
28163 <span class="entry_type_enum_notes"><p>This camera device is capable of supporting advanced imaging applications.<wbr/></p>
28164 <p>The stream configurations listed in the <code>FULL</code>,<wbr/> <code>LEGACY</code> and <code>LIMITED</code> tables in the
28165 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">createCaptureSession</a> documentation are guaranteed to be supported.<wbr/></p>
28166 <p>A <code>FULL</code> device will support below capabilities:</p>
28168 <li><code>BURST_<wbr/>CAPTURE</code> capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
28169 <code>BURST_<wbr/>CAPTURE</code>)</li>
28170 <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>
28171 <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>
28172 <li>Manual post-processing control (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
28173 <code>MANUAL_<wbr/>POST_<wbr/>PROCESSING</code>)</li>
28174 <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>
28175 <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>
28178 Pre-API level 23,<wbr/> FULL devices also supported arbitrary cropping region
28179 (<a href="#static_android.scaler.croppingType">android.<wbr/>scaler.<wbr/>cropping<wbr/>Type</a> <code>== FREEFORM</code>); this requirement was relaxed in API level
28180 23,<wbr/> and <code>FULL</code> devices may only support <code>CENTERED</code> cropping.<wbr/></p></span>
28183 <span class="entry_type_enum_name">LEGACY (v3.2)</span>
28184 <span class="entry_type_enum_notes"><p>This camera device is running in backward compatibility mode.<wbr/></p>
28185 <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>
28186 <p>A <code>LEGACY</code> device does not support per-frame control,<wbr/> manual sensor control,<wbr/> manual
28187 post-processing,<wbr/> arbitrary cropping regions,<wbr/> and has relaxed performance constraints.<wbr/>
28188 No additional capabilities beyond <code>BACKWARD_<wbr/>COMPATIBLE</code> will ever be listed by a
28189 <code>LEGACY</code> device in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
28190 <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>
28191 devices.<wbr/> Instead,<wbr/> every request that includes a JPEG-format output target is treated
28192 as triggering a still capture,<wbr/> internally executing a precapture trigger.<wbr/> This may
28193 fire the flash for flash power metering during precapture,<wbr/> and then fire the flash
28194 for the final capture,<wbr/> if a flash is available on the device and the AE mode is set to
28195 enable the flash.<wbr/></p></span>
28198 <span class="entry_type_enum_name">3 (v3.2)</span>
28199 <span class="entry_type_enum_notes"><p>This camera device is capable of YUV reprocessing and RAW data capture,<wbr/> in addition to
28200 FULL-level capabilities.<wbr/></p>
28201 <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
28202 <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>
28203 <p>The following additional capabilities are guaranteed to be supported:</p>
28205 <li><code>YUV_<wbr/>REPROCESSING</code> capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
28206 <code>YUV_<wbr/>REPROCESSING</code>)</li>
28207 <li><code>RAW</code> capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
28208 <code>RAW</code>)</li>
28212 <span class="entry_type_enum_name">EXTERNAL (v3.3)</span>
28213 <span class="entry_type_enum_notes"><p>This camera device is backed by an external camera connected to this Android device.<wbr/></p>
28214 <p>The device has capability identical to a LIMITED level device,<wbr/> with the following
28217 <li>The device may not report lens/<wbr/>sensor related information such as<ul>
28218 <li><a href="#controls_android.lens.focalLength">android.<wbr/>lens.<wbr/>focal<wbr/>Length</a></li>
28219 <li><a href="#static_android.lens.info.hyperfocalDistance">android.<wbr/>lens.<wbr/>info.<wbr/>hyperfocal<wbr/>Distance</a></li>
28220 <li><a href="#static_android.sensor.info.physicalSize">android.<wbr/>sensor.<wbr/>info.<wbr/>physical<wbr/>Size</a></li>
28221 <li><a href="#static_android.sensor.info.whiteLevel">android.<wbr/>sensor.<wbr/>info.<wbr/>white<wbr/>Level</a></li>
28222 <li><a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a></li>
28223 <li><a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a></li>
28224 <li><a href="#dynamic_android.sensor.rollingShutterSkew">android.<wbr/>sensor.<wbr/>rolling<wbr/>Shutter<wbr/>Skew</a></li>
28227 <li>The device will report 0 for <a href="#static_android.sensor.orientation">android.<wbr/>sensor.<wbr/>orientation</a></li>
28228 <li>The device has less guarantee on stable framerate,<wbr/> as the framerate partly depends
28229 on the external camera being used.<wbr/></li>
28234 </td> <!-- entry_type -->
28236 <td class="entry_description">
28237 <p>Generally classifies the overall set of the camera device functionality.<wbr/></p>
28240 <td class="entry_units">
28243 <td class="entry_range">
28246 <td class="entry_hal_version">
28250 <td class="entry_tags">
28254 <tr class="entries_header">
28255 <th class="th_details" colspan="6">Details</th>
28257 <tr class="entry_cont">
28258 <td class="entry_details" colspan="6">
28259 <p>The supported hardware level is a high-level description of the camera device's
28260 capabilities,<wbr/> summarizing several capabilities into one field.<wbr/> Each level adds additional
28261 features to the previous one,<wbr/> and is always a strict superset of the previous level.<wbr/>
28262 The ordering is <code>LEGACY < LIMITED < FULL < LEVEL_<wbr/>3</code>.<wbr/></p>
28263 <p>Starting from <code>LEVEL_<wbr/>3</code>,<wbr/> the level enumerations are guaranteed to be in increasing
28264 numerical value as well.<wbr/> To check if a given device is at least at a given hardware level,<wbr/>
28265 the following code snippet can be used:</p>
28266 <pre><code>//<wbr/> Returns true if the device supports the required hardware level,<wbr/> or better.<wbr/>
28267 boolean isHardwareLevelSupported(CameraCharacteristics c,<wbr/> int requiredLevel) {
28268 int deviceLevel = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>INFO_<wbr/>SUPPORTED_<wbr/>HARDWARE_<wbr/>LEVEL);
28269 if (deviceLevel == Camera<wbr/>Characteristics.<wbr/>INFO_<wbr/>SUPPORTED_<wbr/>HARDWARE_<wbr/>LEVEL_<wbr/>LEGACY) {
28270 return requiredLevel == deviceLevel;
28272 //<wbr/> deviceLevel is not LEGACY,<wbr/> can use numerical sort
28273 return requiredLevel <= deviceLevel;
28276 <p>At a high level,<wbr/> the levels are:</p>
28278 <li><code>LEGACY</code> devices operate in a backwards-compatibility mode for older
28279 Android devices,<wbr/> and have very limited capabilities.<wbr/></li>
28280 <li><code>LIMITED</code> devices represent the
28281 baseline feature set,<wbr/> and may also include additional capabilities that are
28282 subsets of <code>FULL</code>.<wbr/></li>
28283 <li><code>FULL</code> devices additionally support per-frame manual control of sensor,<wbr/> flash,<wbr/> lens and
28284 post-processing settings,<wbr/> and image capture at a high rate.<wbr/></li>
28285 <li><code>LEVEL_<wbr/>3</code> devices additionally support YUV reprocessing and RAW image capture,<wbr/> along
28286 with additional output stream configurations.<wbr/></li>
28288 <p>See the individual level enums for full descriptions of the supported capabilities.<wbr/> The
28289 <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> entry describes the device's capabilities at a
28290 finer-grain level,<wbr/> if needed.<wbr/> In addition,<wbr/> many controls have their available settings or
28291 ranges defined in individual entries from <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html">CameraCharacteristics</a>.<wbr/></p>
28292 <p>Some features are not part of any particular hardware level or capability and must be
28293 queried separately.<wbr/> These include:</p>
28295 <li>Calibrated timestamps (<a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME)</li>
28296 <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>
28297 <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>
28298 <li>Optical or electrical image stabilization
28299 (<a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a>,<wbr/>
28300 <a href="#static_android.control.availableVideoStabilizationModes">android.<wbr/>control.<wbr/>available<wbr/>Video<wbr/>Stabilization<wbr/>Modes</a>)</li>
28305 <tr class="entries_header">
28306 <th class="th_details" colspan="6">HAL Implementation Details</th>
28308 <tr class="entry_cont">
28309 <td class="entry_details" colspan="6">
28310 <p>A camera HALv3 device can implement one of three possible operational modes; LIMITED,<wbr/>
28311 FULL,<wbr/> and LEVEL_<wbr/>3.<wbr/></p>
28312 <p>FULL support or better is expected from new higher-end devices.<wbr/> Limited
28313 mode has hardware requirements roughly in line with those for a camera HAL device v1
28314 implementation,<wbr/> and is expected from older or inexpensive devices.<wbr/> Each level is a strict
28315 superset of the previous level,<wbr/> and they share the same essential operational flow.<wbr/></p>
28316 <p>For full details refer to "S3.<wbr/> Operational Modes" in camera3.<wbr/>h</p>
28317 <p>Camera HAL3+ must not implement LEGACY mode.<wbr/> It is there for backwards compatibility in
28318 the <code>android.<wbr/>hardware.<wbr/>camera2</code> user-facing API only on legacy HALv1 devices,<wbr/> and is
28319 implemented by the camera framework code.<wbr/></p>
28320 <p>EXTERNAL level devices have lower peformance bar in CTS since the peformance might depend
28321 on the external camera being used and is not fully controlled by the device manufacturer.<wbr/>
28322 The ITS test suite is exempted for the same reason.<wbr/></p>
28326 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28327 <!-- end of entry -->
28330 <tr class="entry" id="static_android.info.version">
28331 <td class="entry_name
28333 android.<wbr/>info.<wbr/>version
28335 <td class="entry_type">
28336 <span class="entry_type_name">byte</span>
28338 <span class="entry_type_visibility"> [public as string]</span>
28345 </td> <!-- entry_type -->
28347 <td class="entry_description">
28348 <p>A short string for manufacturer version information about the camera device,<wbr/> such as
28349 ISP hardware,<wbr/> sensors,<wbr/> etc.<wbr/></p>
28352 <td class="entry_units">
28355 <td class="entry_range">
28358 <td class="entry_hal_version">
28362 <td class="entry_tags">
28366 <tr class="entries_header">
28367 <th class="th_details" colspan="6">Details</th>
28369 <tr class="entry_cont">
28370 <td class="entry_details" colspan="6">
28371 <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>
28372 in jpeg EXIF.<wbr/> This key may be absent if no version information is available on the
28377 <tr class="entries_header">
28378 <th class="th_details" colspan="6">HAL Implementation Details</th>
28380 <tr class="entry_cont">
28381 <td class="entry_details" colspan="6">
28382 <p>The string must consist of only alphanumeric characters,<wbr/> punctuation,<wbr/> and
28383 whitespace,<wbr/> i.<wbr/>e.<wbr/> it must match regular expression "[\p{Alnum}\p{Punct}\p{Space}]*".<wbr/>
28384 It must not exceed 256 characters.<wbr/></p>
28388 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28389 <!-- end of entry -->
28393 <!-- end of kind -->
28396 <!-- end of section -->
28397 <tr><td colspan="7" id="section_blackLevel" class="section">blackLevel</td></tr>
28400 <tr><td colspan="7" class="kind">controls</td></tr>
28402 <thead class="entries_header">
28404 <th class="th_name">Property Name</th>
28405 <th class="th_type">Type</th>
28406 <th class="th_description">Description</th>
28407 <th class="th_units">Units</th>
28408 <th class="th_range">Range</th>
28409 <th class="th_hal_version">Initial HIDL HAL version</th>
28410 <th class="th_tags">Tags</th>
28425 <tr class="entry" id="controls_android.blackLevel.lock">
28426 <td class="entry_name
28428 android.<wbr/>black<wbr/>Level.<wbr/>lock
28430 <td class="entry_type">
28431 <span class="entry_type_name entry_type_name_enum">byte</span>
28433 <span class="entry_type_visibility"> [public as boolean]</span>
28436 <span class="entry_type_hwlevel">[full] </span>
28440 <ul class="entry_type_enum">
28442 <span class="entry_type_enum_name">OFF (v3.2)</span>
28445 <span class="entry_type_enum_name">ON (v3.2)</span>
28449 </td> <!-- entry_type -->
28451 <td class="entry_description">
28452 <p>Whether black-level compensation is locked
28453 to its current values,<wbr/> or is free to vary.<wbr/></p>
28456 <td class="entry_units">
28459 <td class="entry_range">
28462 <td class="entry_hal_version">
28466 <td class="entry_tags">
28467 <ul class="entry_tags">
28468 <li><a href="#tag_HAL2">HAL2</a></li>
28473 <tr class="entries_header">
28474 <th class="th_details" colspan="6">Details</th>
28476 <tr class="entry_cont">
28477 <td class="entry_details" colspan="6">
28478 <p>When set to <code>true</code> (ON),<wbr/> the values used for black-level
28479 compensation will not change until the lock is set to
28480 <code>false</code> (OFF).<wbr/></p>
28481 <p>Since changes to certain capture parameters (such as
28482 exposure time) may require resetting of black level
28483 compensation,<wbr/> the camera device must report whether setting
28484 the black level lock was successful in the output result
28485 metadata.<wbr/></p>
28486 <p>For example,<wbr/> if a sequence of requests is as follows:</p>
28488 <li>Request 1: Exposure = 10ms,<wbr/> Black level lock = OFF</li>
28489 <li>Request 2: Exposure = 10ms,<wbr/> Black level lock = ON</li>
28490 <li>Request 3: Exposure = 10ms,<wbr/> Black level lock = ON</li>
28491 <li>Request 4: Exposure = 20ms,<wbr/> Black level lock = ON</li>
28492 <li>Request 5: Exposure = 20ms,<wbr/> Black level lock = ON</li>
28493 <li>Request 6: Exposure = 20ms,<wbr/> Black level lock = ON</li>
28495 <p>And the exposure change in Request 4 requires the camera
28496 device to reset the black level offsets,<wbr/> then the output
28497 result metadata is expected to be:</p>
28499 <li>Result 1: Exposure = 10ms,<wbr/> Black level lock = OFF</li>
28500 <li>Result 2: Exposure = 10ms,<wbr/> Black level lock = ON</li>
28501 <li>Result 3: Exposure = 10ms,<wbr/> Black level lock = ON</li>
28502 <li>Result 4: Exposure = 20ms,<wbr/> Black level lock = OFF</li>
28503 <li>Result 5: Exposure = 20ms,<wbr/> Black level lock = ON</li>
28504 <li>Result 6: Exposure = 20ms,<wbr/> Black level lock = ON</li>
28506 <p>This indicates to the application that on frame 4,<wbr/> black
28507 levels were reset due to exposure value changes,<wbr/> and pixel
28508 values may not be consistent across captures.<wbr/></p>
28509 <p>The camera device will maintain the lock to the extent
28510 possible,<wbr/> only overriding the lock to OFF when changes to
28511 other request parameters require a black level recalculation
28512 or reset.<wbr/></p>
28516 <tr class="entries_header">
28517 <th class="th_details" colspan="6">HAL Implementation Details</th>
28519 <tr class="entry_cont">
28520 <td class="entry_details" colspan="6">
28521 <p>If for some reason black level locking is no longer possible
28522 (for example,<wbr/> the analog gain has changed,<wbr/> which forces
28523 black level offsets to be recalculated),<wbr/> then the HAL must
28524 override this request (and it must report 'OFF' when this
28525 does happen) until the next capture for which locking is
28526 possible again.<wbr/></p>
28530 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28531 <!-- end of entry -->
28535 <!-- end of kind -->
28537 <tr><td colspan="7" class="kind">dynamic</td></tr>
28539 <thead class="entries_header">
28541 <th class="th_name">Property Name</th>
28542 <th class="th_type">Type</th>
28543 <th class="th_description">Description</th>
28544 <th class="th_units">Units</th>
28545 <th class="th_range">Range</th>
28546 <th class="th_hal_version">Initial HIDL HAL version</th>
28547 <th class="th_tags">Tags</th>
28562 <tr class="entry" id="dynamic_android.blackLevel.lock">
28563 <td class="entry_name
28565 android.<wbr/>black<wbr/>Level.<wbr/>lock
28567 <td class="entry_type">
28568 <span class="entry_type_name entry_type_name_enum">byte</span>
28570 <span class="entry_type_visibility"> [public as boolean]</span>
28573 <span class="entry_type_hwlevel">[full] </span>
28577 <ul class="entry_type_enum">
28579 <span class="entry_type_enum_name">OFF (v3.2)</span>
28582 <span class="entry_type_enum_name">ON (v3.2)</span>
28586 </td> <!-- entry_type -->
28588 <td class="entry_description">
28589 <p>Whether black-level compensation is locked
28590 to its current values,<wbr/> or is free to vary.<wbr/></p>
28593 <td class="entry_units">
28596 <td class="entry_range">
28599 <td class="entry_hal_version">
28603 <td class="entry_tags">
28604 <ul class="entry_tags">
28605 <li><a href="#tag_HAL2">HAL2</a></li>
28610 <tr class="entries_header">
28611 <th class="th_details" colspan="6">Details</th>
28613 <tr class="entry_cont">
28614 <td class="entry_details" colspan="6">
28615 <p>Whether the black level offset was locked for this frame.<wbr/> Should be
28616 ON if <a href="#controls_android.blackLevel.lock">android.<wbr/>black<wbr/>Level.<wbr/>lock</a> was ON in the capture request,<wbr/> unless
28617 a change in other capture settings forced the camera device to
28618 perform a black level reset.<wbr/></p>
28622 <tr class="entries_header">
28623 <th class="th_details" colspan="6">HAL Implementation Details</th>
28625 <tr class="entry_cont">
28626 <td class="entry_details" colspan="6">
28627 <p>If for some reason black level locking is no longer possible
28628 (for example,<wbr/> the analog gain has changed,<wbr/> which forces
28629 black level offsets to be recalculated),<wbr/> then the HAL must
28630 override this request (and it must report 'OFF' when this
28631 does happen) until the next capture for which locking is
28632 possible again.<wbr/></p>
28636 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28637 <!-- end of entry -->
28641 <!-- end of kind -->
28644 <!-- end of section -->
28645 <tr><td colspan="7" id="section_sync" class="section">sync</td></tr>
28648 <tr><td colspan="7" class="kind">dynamic</td></tr>
28650 <thead class="entries_header">
28652 <th class="th_name">Property Name</th>
28653 <th class="th_type">Type</th>
28654 <th class="th_description">Description</th>
28655 <th class="th_units">Units</th>
28656 <th class="th_range">Range</th>
28657 <th class="th_hal_version">Initial HIDL HAL version</th>
28658 <th class="th_tags">Tags</th>
28673 <tr class="entry" id="dynamic_android.sync.frameNumber">
28674 <td class="entry_name
28676 android.<wbr/>sync.<wbr/>frame<wbr/>Number
28678 <td class="entry_type">
28679 <span class="entry_type_name entry_type_name_enum">int64</span>
28681 <span class="entry_type_visibility"> [ndk_public]</span>
28684 <span class="entry_type_hwlevel">[legacy] </span>
28688 <ul class="entry_type_enum">
28690 <span class="entry_type_enum_name">CONVERGING (v3.2)</span>
28691 <span class="entry_type_enum_value">-1</span>
28692 <span class="entry_type_enum_notes"><p>The current result is not yet fully synchronized to any request.<wbr/></p>
28693 <p>Synchronization is in progress,<wbr/> and reading metadata from this
28694 result may include a mix of data that have taken effect since the
28695 last synchronization time.<wbr/></p>
28696 <p>In some future result,<wbr/> within <a href="#static_android.sync.maxLatency">android.<wbr/>sync.<wbr/>max<wbr/>Latency</a> frames,<wbr/>
28697 this value will update to the actual frame number frame number
28698 the result is guaranteed to be synchronized to (as long as the
28699 request settings remain constant).<wbr/></p></span>
28702 <span class="entry_type_enum_name">UNKNOWN (v3.2)</span>
28703 <span class="entry_type_enum_value">-2</span>
28704 <span class="entry_type_enum_notes"><p>The current result's synchronization status is unknown.<wbr/></p>
28705 <p>The result may have already converged,<wbr/> or it may be in
28706 progress.<wbr/> Reading from this result may include some mix
28707 of settings from past requests.<wbr/></p>
28708 <p>After a settings change,<wbr/> the new settings will eventually all
28709 take effect for the output buffers and results.<wbr/> However,<wbr/> this
28710 value will not change when that happens.<wbr/> Altering settings
28711 rapidly may provide outcomes using mixes of settings from recent
28712 requests.<wbr/></p>
28713 <p>This value is intended primarily for backwards compatibility with
28714 the older camera implementations (for android.<wbr/>hardware.<wbr/>Camera).<wbr/></p></span>
28718 </td> <!-- entry_type -->
28720 <td class="entry_description">
28721 <p>The frame number corresponding to the last request
28722 with which the output result (metadata + buffers) has been fully
28723 synchronized.<wbr/></p>
28726 <td class="entry_units">
28729 <td class="entry_range">
28730 <p>Either a non-negative value corresponding to a
28731 <code>frame_<wbr/>number</code>,<wbr/> or one of the two enums (CONVERGING /<wbr/> UNKNOWN).<wbr/></p>
28734 <td class="entry_hal_version">
28738 <td class="entry_tags">
28739 <ul class="entry_tags">
28740 <li><a href="#tag_V1">V1</a></li>
28745 <tr class="entries_header">
28746 <th class="th_details" colspan="6">Details</th>
28748 <tr class="entry_cont">
28749 <td class="entry_details" colspan="6">
28750 <p>When a request is submitted to the camera device,<wbr/> there is usually a
28751 delay of several frames before the controls get applied.<wbr/> A camera
28752 device may either choose to account for this delay by implementing a
28753 pipeline and carefully submit well-timed atomic control updates,<wbr/> or
28754 it may start streaming control changes that span over several frame
28755 boundaries.<wbr/></p>
28756 <p>In the latter case,<wbr/> whenever a request's settings change relative to
28757 the previous submitted request,<wbr/> the full set of changes may take
28758 multiple frame durations to fully take effect.<wbr/> Some settings may
28759 take effect sooner (in less frame durations) than others.<wbr/></p>
28760 <p>While a set of control changes are being propagated,<wbr/> this value
28761 will be CONVERGING.<wbr/></p>
28762 <p>Once it is fully known that a set of control changes have been
28763 finished propagating,<wbr/> and the resulting updated control settings
28764 have been read back by the camera device,<wbr/> this value will be set
28765 to a non-negative frame number (corresponding to the request to
28766 which the results have synchronized to).<wbr/></p>
28767 <p>Older camera device implementations may not have a way to detect
28768 when all camera controls have been applied,<wbr/> and will always set this
28769 value to UNKNOWN.<wbr/></p>
28770 <p>FULL capability devices will always have this value set to the
28771 frame number of the request corresponding to this result.<wbr/></p>
28772 <p><em>Further details</em>:</p>
28774 <li>Whenever a request differs from the last request,<wbr/> any future
28775 results not yet returned may have this value set to CONVERGING (this
28776 could include any in-progress captures not yet returned by the camera
28777 device,<wbr/> for more details see pipeline considerations below).<wbr/></li>
28778 <li>Submitting a series of multiple requests that differ from the
28779 previous request (e.<wbr/>g.<wbr/> r1,<wbr/> r2,<wbr/> r3 s.<wbr/>t.<wbr/> r1 != r2 != r3)
28780 moves the new synchronization frame to the last non-repeating
28781 request (using the smallest frame number from the contiguous list of
28782 repeating requests).<wbr/></li>
28783 <li>Submitting the same request repeatedly will not change this value
28784 to CONVERGING,<wbr/> if it was already a non-negative value.<wbr/></li>
28785 <li>When this value changes to non-negative,<wbr/> that means that all of the
28786 metadata controls from the request have been applied,<wbr/> all of the
28787 metadata controls from the camera device have been read to the
28788 updated values (into the result),<wbr/> and all of the graphics buffers
28789 corresponding to this result are also synchronized to the request.<wbr/></li>
28791 <p><em>Pipeline considerations</em>:</p>
28792 <p>Submitting a request with updated controls relative to the previously
28793 submitted requests may also invalidate the synchronization state
28794 of all the results corresponding to currently in-flight requests.<wbr/></p>
28795 <p>In other words,<wbr/> results for this current request and up to
28796 <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a> prior requests may have their
28797 <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> change to CONVERGING.<wbr/></p>
28801 <tr class="entries_header">
28802 <th class="th_details" colspan="6">HAL Implementation Details</th>
28804 <tr class="entry_cont">
28805 <td class="entry_details" colspan="6">
28806 <p>Using UNKNOWN here is illegal unless <a href="#static_android.sync.maxLatency">android.<wbr/>sync.<wbr/>max<wbr/>Latency</a>
28807 is also UNKNOWN.<wbr/></p>
28808 <p>FULL capability devices should simply set this value to the
28809 <code>frame_<wbr/>number</code> of the request this result corresponds to.<wbr/></p>
28813 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28814 <!-- end of entry -->
28818 <!-- end of kind -->
28820 <tr><td colspan="7" class="kind">static</td></tr>
28822 <thead class="entries_header">
28824 <th class="th_name">Property Name</th>
28825 <th class="th_type">Type</th>
28826 <th class="th_description">Description</th>
28827 <th class="th_units">Units</th>
28828 <th class="th_range">Range</th>
28829 <th class="th_hal_version">Initial HIDL HAL version</th>
28830 <th class="th_tags">Tags</th>
28845 <tr class="entry" id="static_android.sync.maxLatency">
28846 <td class="entry_name
28848 android.<wbr/>sync.<wbr/>max<wbr/>Latency
28850 <td class="entry_type">
28851 <span class="entry_type_name entry_type_name_enum">int32</span>
28853 <span class="entry_type_visibility"> [public]</span>
28856 <span class="entry_type_hwlevel">[legacy] </span>
28860 <ul class="entry_type_enum">
28862 <span class="entry_type_enum_name">PER_FRAME_CONTROL (v3.2)</span>
28863 <span class="entry_type_enum_value">0</span>
28864 <span class="entry_type_enum_notes"><p>Every frame has the requests immediately applied.<wbr/></p>
28865 <p>Changing controls over multiple requests one after another will
28866 produce results that have those controls applied atomically
28867 each frame.<wbr/></p>
28868 <p>All FULL capability devices will have this as their maxLatency.<wbr/></p></span>
28871 <span class="entry_type_enum_name">UNKNOWN (v3.2)</span>
28872 <span class="entry_type_enum_value">-1</span>
28873 <span class="entry_type_enum_notes"><p>Each new frame has some subset (potentially the entire set)
28874 of the past requests applied to the camera settings.<wbr/></p>
28875 <p>By submitting a series of identical requests,<wbr/> the camera device
28876 will eventually have the camera settings applied,<wbr/> but it is
28877 unknown when that exact point will be.<wbr/></p>
28878 <p>All LEGACY capability devices will have this as their maxLatency.<wbr/></p></span>
28882 </td> <!-- entry_type -->
28884 <td class="entry_description">
28885 <p>The maximum number of frames that can occur after a request
28886 (different than the previous) has been submitted,<wbr/> and before the
28887 result's state becomes synchronized.<wbr/></p>
28890 <td class="entry_units">
28894 <td class="entry_range">
28895 <p>A positive value,<wbr/> PER_<wbr/>FRAME_<wbr/>CONTROL,<wbr/> or UNKNOWN.<wbr/></p>
28898 <td class="entry_hal_version">
28902 <td class="entry_tags">
28903 <ul class="entry_tags">
28904 <li><a href="#tag_V1">V1</a></li>
28909 <tr class="entries_header">
28910 <th class="th_details" colspan="6">Details</th>
28912 <tr class="entry_cont">
28913 <td class="entry_details" colspan="6">
28914 <p>This defines the maximum distance (in number of metadata results),<wbr/>
28915 between the frame number of the request that has new controls to apply
28916 and the frame number of the result that has all the controls applied.<wbr/></p>
28917 <p>In other words this acts as an upper boundary for how many frames
28918 must occur before the camera device knows for a fact that the new
28919 submitted camera settings have been applied in outgoing frames.<wbr/></p>
28923 <tr class="entries_header">
28924 <th class="th_details" colspan="6">HAL Implementation Details</th>
28926 <tr class="entry_cont">
28927 <td class="entry_details" colspan="6">
28928 <p>For example if maxLatency was 2,<wbr/></p>
28929 <pre><code>initial request = X (repeating)
28935 where requestN has frameNumber N,<wbr/> and the first of the repeating
28936 initial request's has frameNumber F (and F < 1).<wbr/>
28938 initial result = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == F }
28939 result1 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == F }
28940 result2 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == CONVERGING }
28941 result3 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == CONVERGING }
28942 result4 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == 2 }
28944 where resultN has frameNumber N.<wbr/>
28946 <p>Since <code>result4</code> has a <code>frameNumber == 4</code> and
28947 <code><a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == 2</code>,<wbr/> the distance is clearly
28948 <code>4 - 2 = 2</code>.<wbr/></p>
28949 <p>Use <code>frame_<wbr/>count</code> from camera3_<wbr/>request_<wbr/>t instead of
28950 <a href="#controls_android.request.frameCount">android.<wbr/>request.<wbr/>frame<wbr/>Count</a> or
28951 <code><a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html#getFrameNumber">CaptureResult#getFrameNumber</a></code>.<wbr/></p>
28952 <p>LIMITED devices are strongly encouraged to use a non-negative
28953 value.<wbr/> If UNKNOWN is used here then app developers do not have a way
28954 to know when sensor settings have been applied.<wbr/></p>
28958 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28959 <!-- end of entry -->
28963 <!-- end of kind -->
28966 <!-- end of section -->
28967 <tr><td colspan="7" id="section_reprocess" class="section">reprocess</td></tr>
28970 <tr><td colspan="7" class="kind">controls</td></tr>
28972 <thead class="entries_header">
28974 <th class="th_name">Property Name</th>
28975 <th class="th_type">Type</th>
28976 <th class="th_description">Description</th>
28977 <th class="th_units">Units</th>
28978 <th class="th_range">Range</th>
28979 <th class="th_hal_version">Initial HIDL HAL version</th>
28980 <th class="th_tags">Tags</th>
28995 <tr class="entry" id="controls_android.reprocess.effectiveExposureFactor">
28996 <td class="entry_name
28998 android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor
29000 <td class="entry_type">
29001 <span class="entry_type_name">float</span>
29003 <span class="entry_type_visibility"> [java_public]</span>
29006 <span class="entry_type_hwlevel">[limited] </span>
29011 </td> <!-- entry_type -->
29013 <td class="entry_description">
29014 <p>The amount of exposure time increase factor applied to the original output
29015 frame by the application processing before sending for reprocessing.<wbr/></p>
29018 <td class="entry_units">
29019 Relative exposure time increase factor.<wbr/>
29022 <td class="entry_range">
29023 <p>>= 1.<wbr/>0</p>
29026 <td class="entry_hal_version">
29030 <td class="entry_tags">
29031 <ul class="entry_tags">
29032 <li><a href="#tag_REPROC">REPROC</a></li>
29037 <tr class="entries_header">
29038 <th class="th_details" colspan="6">Details</th>
29040 <tr class="entry_cont">
29041 <td class="entry_details" colspan="6">
29042 <p>This is optional,<wbr/> and will be supported if the camera device supports YUV_<wbr/>REPROCESSING
29043 capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains YUV_<wbr/>REPROCESSING).<wbr/></p>
29044 <p>For some YUV reprocessing use cases,<wbr/> the application may choose to filter the original
29045 output frames to effectively reduce the noise to the same level as a frame that was
29046 captured with longer exposure time.<wbr/> To be more specific,<wbr/> assuming the original captured
29047 images were captured with a sensitivity of S and an exposure time of T,<wbr/> the model in
29048 the camera device is that the amount of noise in the image would be approximately what
29049 would be expected if the original capture parameters had been a sensitivity of
29050 S/<wbr/>effectiveExposureFactor and an exposure time of T*effectiveExposureFactor,<wbr/> rather
29051 than S and T respectively.<wbr/> If the captured images were processed by the application
29052 before being sent for reprocessing,<wbr/> then the application may have used image processing
29053 algorithms and/<wbr/>or multi-frame image fusion to reduce the noise in the
29054 application-processed images (input images).<wbr/> By using the effectiveExposureFactor
29055 control,<wbr/> the application can communicate to the camera device the actual noise level
29056 improvement in the application-processed image.<wbr/> With this information,<wbr/> the camera
29057 device can select appropriate noise reduction and edge enhancement parameters to avoid
29058 excessive noise reduction (<a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a>) and insufficient edge
29059 enhancement (<a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a>) being applied to the reprocessed frames.<wbr/></p>
29060 <p>For example,<wbr/> for multi-frame image fusion use case,<wbr/> the application may fuse
29061 multiple output frames together to a final frame for reprocessing.<wbr/> When N image are
29062 fused into 1 image for reprocessing,<wbr/> the exposure time increase factor could be up to
29063 square root of N (based on a simple photon shot noise model).<wbr/> The camera device will
29064 adjust the reprocessing noise reduction and edge enhancement parameters accordingly to
29065 produce the best quality images.<wbr/></p>
29066 <p>This is relative factor,<wbr/> 1.<wbr/>0 indicates the application hasn't processed the input
29067 buffer in a way that affects its effective exposure time.<wbr/></p>
29068 <p>This control is only effective for YUV reprocessing capture request.<wbr/> For noise
29069 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/>
29070 Similarly,<wbr/> for edge enhancement reprocessing,<wbr/> it is only effective when
29071 <code><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a> != OFF</code>.<wbr/></p>
29076 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29077 <!-- end of entry -->
29081 <!-- end of kind -->
29083 <tr><td colspan="7" class="kind">dynamic</td></tr>
29085 <thead class="entries_header">
29087 <th class="th_name">Property Name</th>
29088 <th class="th_type">Type</th>
29089 <th class="th_description">Description</th>
29090 <th class="th_units">Units</th>
29091 <th class="th_range">Range</th>
29092 <th class="th_hal_version">Initial HIDL HAL version</th>
29093 <th class="th_tags">Tags</th>
29108 <tr class="entry" id="dynamic_android.reprocess.effectiveExposureFactor">
29109 <td class="entry_name
29111 android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor
29113 <td class="entry_type">
29114 <span class="entry_type_name">float</span>
29116 <span class="entry_type_visibility"> [java_public]</span>
29119 <span class="entry_type_hwlevel">[limited] </span>
29124 </td> <!-- entry_type -->
29126 <td class="entry_description">
29127 <p>The amount of exposure time increase factor applied to the original output
29128 frame by the application processing before sending for reprocessing.<wbr/></p>
29131 <td class="entry_units">
29132 Relative exposure time increase factor.<wbr/>
29135 <td class="entry_range">
29136 <p>>= 1.<wbr/>0</p>
29139 <td class="entry_hal_version">
29143 <td class="entry_tags">
29144 <ul class="entry_tags">
29145 <li><a href="#tag_REPROC">REPROC</a></li>
29150 <tr class="entries_header">
29151 <th class="th_details" colspan="6">Details</th>
29153 <tr class="entry_cont">
29154 <td class="entry_details" colspan="6">
29155 <p>This is optional,<wbr/> and will be supported if the camera device supports YUV_<wbr/>REPROCESSING
29156 capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains YUV_<wbr/>REPROCESSING).<wbr/></p>
29157 <p>For some YUV reprocessing use cases,<wbr/> the application may choose to filter the original
29158 output frames to effectively reduce the noise to the same level as a frame that was
29159 captured with longer exposure time.<wbr/> To be more specific,<wbr/> assuming the original captured
29160 images were captured with a sensitivity of S and an exposure time of T,<wbr/> the model in
29161 the camera device is that the amount of noise in the image would be approximately what
29162 would be expected if the original capture parameters had been a sensitivity of
29163 S/<wbr/>effectiveExposureFactor and an exposure time of T*effectiveExposureFactor,<wbr/> rather
29164 than S and T respectively.<wbr/> If the captured images were processed by the application
29165 before being sent for reprocessing,<wbr/> then the application may have used image processing
29166 algorithms and/<wbr/>or multi-frame image fusion to reduce the noise in the
29167 application-processed images (input images).<wbr/> By using the effectiveExposureFactor
29168 control,<wbr/> the application can communicate to the camera device the actual noise level
29169 improvement in the application-processed image.<wbr/> With this information,<wbr/> the camera
29170 device can select appropriate noise reduction and edge enhancement parameters to avoid
29171 excessive noise reduction (<a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a>) and insufficient edge
29172 enhancement (<a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a>) being applied to the reprocessed frames.<wbr/></p>
29173 <p>For example,<wbr/> for multi-frame image fusion use case,<wbr/> the application may fuse
29174 multiple output frames together to a final frame for reprocessing.<wbr/> When N image are
29175 fused into 1 image for reprocessing,<wbr/> the exposure time increase factor could be up to
29176 square root of N (based on a simple photon shot noise model).<wbr/> The camera device will
29177 adjust the reprocessing noise reduction and edge enhancement parameters accordingly to
29178 produce the best quality images.<wbr/></p>
29179 <p>This is relative factor,<wbr/> 1.<wbr/>0 indicates the application hasn't processed the input
29180 buffer in a way that affects its effective exposure time.<wbr/></p>
29181 <p>This control is only effective for YUV reprocessing capture request.<wbr/> For noise
29182 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/>
29183 Similarly,<wbr/> for edge enhancement reprocessing,<wbr/> it is only effective when
29184 <code><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a> != OFF</code>.<wbr/></p>
29189 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29190 <!-- end of entry -->
29194 <!-- end of kind -->
29196 <tr><td colspan="7" class="kind">static</td></tr>
29198 <thead class="entries_header">
29200 <th class="th_name">Property Name</th>
29201 <th class="th_type">Type</th>
29202 <th class="th_description">Description</th>
29203 <th class="th_units">Units</th>
29204 <th class="th_range">Range</th>
29205 <th class="th_hal_version">Initial HIDL HAL version</th>
29206 <th class="th_tags">Tags</th>
29221 <tr class="entry" id="static_android.reprocess.maxCaptureStall">
29222 <td class="entry_name
29224 android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall
29226 <td class="entry_type">
29227 <span class="entry_type_name">int32</span>
29229 <span class="entry_type_visibility"> [java_public]</span>
29232 <span class="entry_type_hwlevel">[limited] </span>
29237 </td> <!-- entry_type -->
29239 <td class="entry_description">
29240 <p>The maximal camera capture pipeline stall (in unit of frame count) introduced by a
29241 reprocess capture request.<wbr/></p>
29244 <td class="entry_units">
29245 Number of frames.<wbr/>
29248 <td class="entry_range">
29252 <td class="entry_hal_version">
29256 <td class="entry_tags">
29257 <ul class="entry_tags">
29258 <li><a href="#tag_REPROC">REPROC</a></li>
29263 <tr class="entries_header">
29264 <th class="th_details" colspan="6">Details</th>
29266 <tr class="entry_cont">
29267 <td class="entry_details" colspan="6">
29268 <p>The key describes the maximal interference that one reprocess (input) request
29269 can introduce to the camera simultaneous streaming of regular (output) capture
29270 requests,<wbr/> including repeating requests.<wbr/></p>
29271 <p>When a reprocessing capture request is submitted while a camera output repeating request
29272 (e.<wbr/>g.<wbr/> preview) is being served by the camera device,<wbr/> it may preempt the camera capture
29273 pipeline for at least one frame duration so that the camera device is unable to process
29274 the following capture request in time for the next sensor start of exposure boundary.<wbr/>
29275 When this happens,<wbr/> the application may observe a capture time gap (longer than one frame
29276 duration) between adjacent capture output frames,<wbr/> which usually exhibits as preview
29277 glitch if the repeating request output targets include a preview surface.<wbr/> This key gives
29278 the worst-case number of frame stall introduced by one reprocess request with any kind of
29279 formats/<wbr/>sizes combination.<wbr/></p>
29280 <p>If this key reports 0,<wbr/> it means a reprocess request doesn't introduce any glitch to the
29281 ongoing camera repeating request outputs,<wbr/> as if this reprocess request is never issued.<wbr/></p>
29282 <p>This key is supported if the camera device supports PRIVATE or YUV reprocessing (
29283 i.<wbr/>e.<wbr/> <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains PRIVATE_<wbr/>REPROCESSING or
29284 YUV_<wbr/>REPROCESSING).<wbr/></p>
29289 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29290 <!-- end of entry -->
29294 <!-- end of kind -->
29297 <!-- end of section -->
29298 <tr><td colspan="7" id="section_depth" class="section">depth</td></tr>
29301 <tr><td colspan="7" class="kind">static</td></tr>
29303 <thead class="entries_header">
29305 <th class="th_name">Property Name</th>
29306 <th class="th_type">Type</th>
29307 <th class="th_description">Description</th>
29308 <th class="th_units">Units</th>
29309 <th class="th_range">Range</th>
29310 <th class="th_hal_version">Initial HIDL HAL version</th>
29311 <th class="th_tags">Tags</th>
29326 <tr class="entry" id="static_android.depth.maxDepthSamples">
29327 <td class="entry_name
29329 android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples
29331 <td class="entry_type">
29332 <span class="entry_type_name">int32</span>
29334 <span class="entry_type_visibility"> [system]</span>
29337 <span class="entry_type_hwlevel">[limited] </span>
29342 </td> <!-- entry_type -->
29344 <td class="entry_description">
29345 <p>Maximum number of points that a depth point cloud may contain.<wbr/></p>
29348 <td class="entry_units">
29351 <td class="entry_range">
29354 <td class="entry_hal_version">
29358 <td class="entry_tags">
29359 <ul class="entry_tags">
29360 <li><a href="#tag_DEPTH">DEPTH</a></li>
29365 <tr class="entries_header">
29366 <th class="th_details" colspan="6">Details</th>
29368 <tr class="entry_cont">
29369 <td class="entry_details" colspan="6">
29370 <p>If a camera device supports outputting depth range data in the form of a depth point
29371 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
29372 number of points an output buffer may contain.<wbr/></p>
29373 <p>Any given buffer may contain between 0 and maxDepthSamples points,<wbr/> inclusive.<wbr/>
29374 If output in the depth point cloud format is not supported,<wbr/> this entry will
29375 not be defined.<wbr/></p>
29380 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29381 <!-- end of entry -->
29384 <tr class="entry" id="static_android.depth.availableDepthStreamConfigurations">
29385 <td class="entry_name
29387 android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stream<wbr/>Configurations
29389 <td class="entry_type">
29390 <span class="entry_type_name entry_type_name_enum">int32</span>
29391 <span class="entry_type_container">x</span>
29393 <span class="entry_type_array">
29396 <span class="entry_type_visibility"> [ndk_public as streamConfiguration]</span>
29399 <span class="entry_type_hwlevel">[limited] </span>
29403 <ul class="entry_type_enum">
29405 <span class="entry_type_enum_name">OUTPUT (v3.2)</span>
29408 <span class="entry_type_enum_name">INPUT (v3.2)</span>
29412 </td> <!-- entry_type -->
29414 <td class="entry_description">
29415 <p>The available depth dataspace stream
29416 configurations that this camera device supports
29417 (i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p>
29420 <td class="entry_units">
29423 <td class="entry_range">
29426 <td class="entry_hal_version">
29430 <td class="entry_tags">
29431 <ul class="entry_tags">
29432 <li><a href="#tag_DEPTH">DEPTH</a></li>
29437 <tr class="entries_header">
29438 <th class="th_details" colspan="6">Details</th>
29440 <tr class="entry_cont">
29441 <td class="entry_details" colspan="6">
29442 <p>These are output stream configurations for use with
29443 dataSpace HAL_<wbr/>DATASPACE_<wbr/>DEPTH.<wbr/> The configurations are
29444 listed as <code>(format,<wbr/> width,<wbr/> height,<wbr/> input?)</code> tuples.<wbr/></p>
29445 <p>Only devices that support depth output for at least
29446 the HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>Y16 dense depth map may include
29447 this entry.<wbr/></p>
29448 <p>A device that also supports the HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>BLOB
29449 sparse depth point cloud must report a single entry for
29450 the format in this list as <code>(HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>BLOB,<wbr/>
29451 <a href="#static_android.depth.maxDepthSamples">android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples</a>,<wbr/> 1,<wbr/> OUTPUT)</code> in addition to
29452 the entries for HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>Y16.<wbr/></p>
29457 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29458 <!-- end of entry -->
29461 <tr class="entry" id="static_android.depth.availableDepthMinFrameDurations">
29462 <td class="entry_name
29464 android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Min<wbr/>Frame<wbr/>Durations
29466 <td class="entry_type">
29467 <span class="entry_type_name">int64</span>
29468 <span class="entry_type_container">x</span>
29470 <span class="entry_type_array">
29473 <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
29476 <span class="entry_type_hwlevel">[limited] </span>
29481 </td> <!-- entry_type -->
29483 <td class="entry_description">
29484 <p>This lists the minimum frame duration for each
29485 format/<wbr/>size combination for depth output formats.<wbr/></p>
29488 <td class="entry_units">
29489 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
29492 <td class="entry_range">
29495 <td class="entry_hal_version">
29499 <td class="entry_tags">
29500 <ul class="entry_tags">
29501 <li><a href="#tag_DEPTH">DEPTH</a></li>
29506 <tr class="entries_header">
29507 <th class="th_details" colspan="6">Details</th>
29509 <tr class="entry_cont">
29510 <td class="entry_details" colspan="6">
29511 <p>This should correspond to the frame duration when only that
29512 stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode)
29513 set to either OFF or FAST.<wbr/></p>
29514 <p>When multiple streams are used in a request,<wbr/> the minimum frame
29515 duration will be max(individual stream min durations).<wbr/></p>
29516 <p>The minimum frame duration of a stream (of a particular format,<wbr/> size)
29517 is the same regardless of whether the stream is input or output.<wbr/></p>
29518 <p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> and
29519 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for more details about
29520 calculating the max frame rate.<wbr/></p>
29525 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29526 <!-- end of entry -->
29529 <tr class="entry" id="static_android.depth.availableDepthStallDurations">
29530 <td class="entry_name
29532 android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stall<wbr/>Durations
29534 <td class="entry_type">
29535 <span class="entry_type_name">int64</span>
29536 <span class="entry_type_container">x</span>
29538 <span class="entry_type_array">
29541 <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
29544 <span class="entry_type_hwlevel">[limited] </span>
29549 </td> <!-- entry_type -->
29551 <td class="entry_description">
29552 <p>This lists the maximum stall duration for each
29553 output format/<wbr/>size combination for depth streams.<wbr/></p>
29556 <td class="entry_units">
29557 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
29560 <td class="entry_range">
29563 <td class="entry_hal_version">
29567 <td class="entry_tags">
29568 <ul class="entry_tags">
29569 <li><a href="#tag_DEPTH">DEPTH</a></li>
29574 <tr class="entries_header">
29575 <th class="th_details" colspan="6">Details</th>
29577 <tr class="entry_cont">
29578 <td class="entry_details" colspan="6">
29579 <p>A stall duration is how much extra time would get added
29580 to the normal minimum frame duration for a repeating request
29581 that has streams with non-zero stall.<wbr/></p>
29582 <p>This functions similarly to
29583 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for depth
29585 <p>All depth output stream formats may have a nonzero stall
29586 duration.<wbr/></p>
29591 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29592 <!-- end of entry -->
29595 <tr class="entry" id="static_android.depth.depthIsExclusive">
29596 <td class="entry_name
29598 android.<wbr/>depth.<wbr/>depth<wbr/>Is<wbr/>Exclusive
29600 <td class="entry_type">
29601 <span class="entry_type_name entry_type_name_enum">byte</span>
29603 <span class="entry_type_visibility"> [public as boolean]</span>
29606 <span class="entry_type_hwlevel">[limited] </span>
29610 <ul class="entry_type_enum">
29612 <span class="entry_type_enum_name">FALSE (v3.2)</span>
29615 <span class="entry_type_enum_name">TRUE (v3.2)</span>
29619 </td> <!-- entry_type -->
29621 <td class="entry_description">
29622 <p>Indicates whether a capture request may target both a
29623 DEPTH16 /<wbr/> DEPTH_<wbr/>POINT_<wbr/>CLOUD output,<wbr/> and normal color outputs (such as
29624 YUV_<wbr/>420_<wbr/>888,<wbr/> JPEG,<wbr/> or RAW) simultaneously.<wbr/></p>
29627 <td class="entry_units">
29630 <td class="entry_range">
29633 <td class="entry_hal_version">
29637 <td class="entry_tags">
29641 <tr class="entries_header">
29642 <th class="th_details" colspan="6">Details</th>
29644 <tr class="entry_cont">
29645 <td class="entry_details" colspan="6">
29646 <p>If TRUE,<wbr/> including both depth and color outputs in a single
29647 capture request is not supported.<wbr/> An application must interleave color
29648 and depth requests.<wbr/> If FALSE,<wbr/> a single request can target both types
29649 of output.<wbr/></p>
29650 <p>Typically,<wbr/> this restriction exists on camera devices that
29651 need to emit a specific pattern or wavelength of light to
29652 measure depth values,<wbr/> which causes the color image to be
29653 corrupted during depth measurement.<wbr/></p>
29658 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29659 <!-- end of entry -->
29663 <!-- end of kind -->
29666 <!-- end of section -->
29667 <tr><td colspan="7" id="section_logicalMultiCamera" class="section">logicalMultiCamera</td></tr>
29670 <tr><td colspan="7" class="kind">static</td></tr>
29672 <thead class="entries_header">
29674 <th class="th_name">Property Name</th>
29675 <th class="th_type">Type</th>
29676 <th class="th_description">Description</th>
29677 <th class="th_units">Units</th>
29678 <th class="th_range">Range</th>
29679 <th class="th_hal_version">Initial HIDL HAL version</th>
29680 <th class="th_tags">Tags</th>
29695 <tr class="entry" id="static_android.logicalMultiCamera.physicalIds">
29696 <td class="entry_name
29698 android.<wbr/>logical<wbr/>Multi<wbr/>Camera.<wbr/>physical<wbr/>Ids
29700 <td class="entry_type">
29701 <span class="entry_type_name">byte</span>
29702 <span class="entry_type_container">x</span>
29704 <span class="entry_type_array">
29707 <span class="entry_type_visibility"> [hidden]</span>
29710 <span class="entry_type_hwlevel">[limited] </span>
29715 </td> <!-- entry_type -->
29717 <td class="entry_description">
29718 <p>String containing the ids of the underlying physical cameras.<wbr/></p>
29721 <td class="entry_units">
29722 UTF-8 null-terminated string
29725 <td class="entry_range">
29728 <td class="entry_hal_version">
29732 <td class="entry_tags">
29733 <ul class="entry_tags">
29734 <li><a href="#tag_LOGICALCAMERA">LOGICALCAMERA</a></li>
29739 <tr class="entries_header">
29740 <th class="th_details" colspan="6">Details</th>
29742 <tr class="entry_cont">
29743 <td class="entry_details" colspan="6">
29744 <p>For a logical camera,<wbr/> this is concatenation of all underlying physical camera ids.<wbr/>
29745 The null terminator for physical camera id must be preserved so that the whole string
29746 can be tokenized using '\0' to generate list of physical camera ids.<wbr/></p>
29747 <p>For example,<wbr/> if the physical camera ids of the logical camera are "2" and "3",<wbr/> the
29748 value of this tag will be ['2',<wbr/> '\0',<wbr/> '3',<wbr/> '\0'].<wbr/></p>
29749 <p>The number of physical camera ids must be no less than 2.<wbr/></p>
29754 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29755 <!-- end of entry -->
29758 <tr class="entry" id="static_android.logicalMultiCamera.sensorSyncType">
29759 <td class="entry_name
29761 android.<wbr/>logical<wbr/>Multi<wbr/>Camera.<wbr/>sensor<wbr/>Sync<wbr/>Type
29763 <td class="entry_type">
29764 <span class="entry_type_name entry_type_name_enum">byte</span>
29766 <span class="entry_type_visibility"> [public]</span>
29769 <span class="entry_type_hwlevel">[limited] </span>
29773 <ul class="entry_type_enum">
29775 <span class="entry_type_enum_name">APPROXIMATE (v3.3)</span>
29776 <span class="entry_type_enum_notes"><p>A software mechanism is used to synchronize between the physical cameras.<wbr/> As a result,<wbr/>
29777 the timestamp of an image from a physical stream is only an approximation of the
29778 image sensor start-of-exposure time.<wbr/></p></span>
29781 <span class="entry_type_enum_name">CALIBRATED (v3.3)</span>
29782 <span class="entry_type_enum_notes"><p>The camera device supports frame timestamp synchronization at the hardware level,<wbr/>
29783 and the timestamp of a physical stream image accurately reflects its
29784 start-of-exposure time.<wbr/></p></span>
29788 </td> <!-- entry_type -->
29790 <td class="entry_description">
29791 <p>The accuracy of frame timestamp synchronization between physical cameras</p>
29794 <td class="entry_units">
29797 <td class="entry_range">
29800 <td class="entry_hal_version">
29804 <td class="entry_tags">
29805 <ul class="entry_tags">
29806 <li><a href="#tag_LOGICALCAMERA">LOGICALCAMERA</a></li>
29811 <tr class="entries_header">
29812 <th class="th_details" colspan="6">Details</th>
29814 <tr class="entry_cont">
29815 <td class="entry_details" colspan="6">
29816 <p>The accuracy of the frame timestamp synchronization determines the physical cameras'
29817 ability to start exposure at the same time.<wbr/> If the sensorSyncType is CALIBRATED,<wbr/>
29818 the physical camera sensors usually run in master-slave mode so that their shutter
29819 time is synchronized.<wbr/> For APPROXIMATE sensorSyncType,<wbr/> the camera sensors usually run in
29820 master-master mode,<wbr/> and there could be offset between their start of exposure.<wbr/></p>
29821 <p>In both cases,<wbr/> all images generated for a particular capture request still carry the same
29822 timestamps,<wbr/> so that they can be used to look up the matching frame number and
29823 onCaptureStarted callback.<wbr/></p>
29828 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29829 <!-- end of entry -->
29833 <!-- end of kind -->
29836 <!-- end of section -->
29837 <tr><td colspan="7" id="section_distortionCorrection" class="section">distortionCorrection</td></tr>
29840 <tr><td colspan="7" class="kind">controls</td></tr>
29842 <thead class="entries_header">
29844 <th class="th_name">Property Name</th>
29845 <th class="th_type">Type</th>
29846 <th class="th_description">Description</th>
29847 <th class="th_units">Units</th>
29848 <th class="th_range">Range</th>
29849 <th class="th_hal_version">Initial HIDL HAL version</th>
29850 <th class="th_tags">Tags</th>
29865 <tr class="entry" id="controls_android.distortionCorrection.mode">
29866 <td class="entry_name
29868 android.<wbr/>distortion<wbr/>Correction.<wbr/>mode
29870 <td class="entry_type">
29871 <span class="entry_type_name entry_type_name_enum">byte</span>
29873 <span class="entry_type_visibility"> [public]</span>
29879 <ul class="entry_type_enum">
29881 <span class="entry_type_enum_name">OFF (v3.3)</span>
29882 <span class="entry_type_enum_notes"><p>No distortion correction is applied.<wbr/></p></span>
29885 <span class="entry_type_enum_name">FAST (v3.3)</span>
29886 <span class="entry_type_enum_notes"><p>Lens distortion correction is applied without reducing frame rate
29887 relative to sensor output.<wbr/> It may be the same as OFF if distortion correction would
29888 reduce frame rate relative to sensor.<wbr/></p></span>
29891 <span class="entry_type_enum_name">HIGH_QUALITY (v3.3)</span>
29892 <span class="entry_type_enum_notes"><p>High-quality distortion correction is applied,<wbr/> at the cost of
29893 possibly reduced frame rate relative to sensor output.<wbr/></p></span>
29897 </td> <!-- entry_type -->
29899 <td class="entry_description">
29900 <p>Mode of operation for the lens distortion correction block.<wbr/></p>
29903 <td class="entry_units">
29906 <td class="entry_range">
29907 <p><a href="#static_android.distortionCorrection.availableModes">android.<wbr/>distortion<wbr/>Correction.<wbr/>available<wbr/>Modes</a></p>
29910 <td class="entry_hal_version">
29914 <td class="entry_tags">
29918 <tr class="entries_header">
29919 <th class="th_details" colspan="6">Details</th>
29921 <tr class="entry_cont">
29922 <td class="entry_details" colspan="6">
29923 <p>The lens distortion correction block attempts to improve image quality by fixing
29924 radial,<wbr/> tangential,<wbr/> or other geometric aberrations in the camera device's optics.<wbr/> If
29925 available,<wbr/> the <a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a> field documents the lens's distortion parameters.<wbr/></p>
29926 <p>OFF means no distortion correction is done.<wbr/></p>
29927 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined distortion correction will be
29928 applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device will use the highest-quality
29929 correction algorithms,<wbr/> even if it slows down capture rate.<wbr/> FAST means the camera device
29930 will not slow down capture rate when applying correction.<wbr/> FAST may be the same as OFF if
29931 any correction at all would slow down capture rate.<wbr/> Every output stream will have a
29932 similar amount of enhancement applied.<wbr/></p>
29933 <p>The correction only applies to processed outputs such as YUV,<wbr/> JPEG,<wbr/> or DEPTH16; it is not
29934 applied to any RAW output.<wbr/> Metadata coordinates such as face rectangles or metering
29935 regions are also not affected by correction.<wbr/></p>
29936 <p>Applications enabling distortion correction need to pay extra attention when converting
29937 image coordinates between corrected output buffers and the sensor array.<wbr/> For example,<wbr/> if
29938 the app supports tap-to-focus and enables correction,<wbr/> it then has to apply the distortion
29939 model described in <a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a> to the image buffer tap coordinates to properly
29940 calculate the tap position on the sensor active array to be used with
29941 <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
29942 they need to be drawn on top of the corrected output buffers.<wbr/></p>
29947 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29948 <!-- end of entry -->
29952 <!-- end of kind -->
29954 <tr><td colspan="7" class="kind">static</td></tr>
29956 <thead class="entries_header">
29958 <th class="th_name">Property Name</th>
29959 <th class="th_type">Type</th>
29960 <th class="th_description">Description</th>
29961 <th class="th_units">Units</th>
29962 <th class="th_range">Range</th>
29963 <th class="th_hal_version">Initial HIDL HAL version</th>
29964 <th class="th_tags">Tags</th>
29979 <tr class="entry" id="static_android.distortionCorrection.availableModes">
29980 <td class="entry_name
29982 android.<wbr/>distortion<wbr/>Correction.<wbr/>available<wbr/>Modes
29984 <td class="entry_type">
29985 <span class="entry_type_name">byte</span>
29986 <span class="entry_type_container">x</span>
29988 <span class="entry_type_array">
29991 <span class="entry_type_visibility"> [public as enumList]</span>
29996 <div class="entry_type_notes">list of enums</div>
29999 </td> <!-- entry_type -->
30001 <td class="entry_description">
30002 <p>List of distortion correction modes for <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> that are
30003 supported by this camera device.<wbr/></p>
30006 <td class="entry_units">
30009 <td class="entry_range">
30010 <p>Any value listed in <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a></p>
30013 <td class="entry_hal_version">
30017 <td class="entry_tags">
30018 <ul class="entry_tags">
30019 <li><a href="#tag_V1">V1</a></li>
30020 <li><a href="#tag_REPROC">REPROC</a></li>
30025 <tr class="entries_header">
30026 <th class="th_details" colspan="6">Details</th>
30028 <tr class="entry_cont">
30029 <td class="entry_details" colspan="6">
30030 <p>No device is required to support this API; such devices will always list only 'OFF'.<wbr/>
30031 All devices that support this API will list both FAST and HIGH_<wbr/>QUALITY.<wbr/></p>
30035 <tr class="entries_header">
30036 <th class="th_details" colspan="6">HAL Implementation Details</th>
30038 <tr class="entry_cont">
30039 <td class="entry_details" colspan="6">
30040 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if distortion correction is available
30041 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
30042 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
30043 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
30047 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
30048 <!-- end of entry -->
30052 <!-- end of kind -->
30054 <tr><td colspan="7" class="kind">dynamic</td></tr>
30056 <thead class="entries_header">
30058 <th class="th_name">Property Name</th>
30059 <th class="th_type">Type</th>
30060 <th class="th_description">Description</th>
30061 <th class="th_units">Units</th>
30062 <th class="th_range">Range</th>
30063 <th class="th_hal_version">Initial HIDL HAL version</th>
30064 <th class="th_tags">Tags</th>
30079 <tr class="entry" id="dynamic_android.distortionCorrection.mode">
30080 <td class="entry_name
30082 android.<wbr/>distortion<wbr/>Correction.<wbr/>mode
30084 <td class="entry_type">
30085 <span class="entry_type_name entry_type_name_enum">byte</span>
30087 <span class="entry_type_visibility"> [public]</span>
30093 <ul class="entry_type_enum">
30095 <span class="entry_type_enum_name">OFF (v3.3)</span>
30096 <span class="entry_type_enum_notes"><p>No distortion correction is applied.<wbr/></p></span>
30099 <span class="entry_type_enum_name">FAST (v3.3)</span>
30100 <span class="entry_type_enum_notes"><p>Lens distortion correction is applied without reducing frame rate
30101 relative to sensor output.<wbr/> It may be the same as OFF if distortion correction would
30102 reduce frame rate relative to sensor.<wbr/></p></span>
30105 <span class="entry_type_enum_name">HIGH_QUALITY (v3.3)</span>
30106 <span class="entry_type_enum_notes"><p>High-quality distortion correction is applied,<wbr/> at the cost of
30107 possibly reduced frame rate relative to sensor output.<wbr/></p></span>
30111 </td> <!-- entry_type -->
30113 <td class="entry_description">
30114 <p>Mode of operation for the lens distortion correction block.<wbr/></p>
30117 <td class="entry_units">
30120 <td class="entry_range">
30121 <p><a href="#static_android.distortionCorrection.availableModes">android.<wbr/>distortion<wbr/>Correction.<wbr/>available<wbr/>Modes</a></p>
30124 <td class="entry_hal_version">
30128 <td class="entry_tags">
30132 <tr class="entries_header">
30133 <th class="th_details" colspan="6">Details</th>
30135 <tr class="entry_cont">
30136 <td class="entry_details" colspan="6">
30137 <p>The lens distortion correction block attempts to improve image quality by fixing
30138 radial,<wbr/> tangential,<wbr/> or other geometric aberrations in the camera device's optics.<wbr/> If
30139 available,<wbr/> the <a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a> field documents the lens's distortion parameters.<wbr/></p>
30140 <p>OFF means no distortion correction is done.<wbr/></p>
30141 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined distortion correction will be
30142 applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device will use the highest-quality
30143 correction algorithms,<wbr/> even if it slows down capture rate.<wbr/> FAST means the camera device
30144 will not slow down capture rate when applying correction.<wbr/> FAST may be the same as OFF if
30145 any correction at all would slow down capture rate.<wbr/> Every output stream will have a
30146 similar amount of enhancement applied.<wbr/></p>
30147 <p>The correction only applies to processed outputs such as YUV,<wbr/> JPEG,<wbr/> or DEPTH16; it is not
30148 applied to any RAW output.<wbr/> Metadata coordinates such as face rectangles or metering
30149 regions are also not affected by correction.<wbr/></p>
30150 <p>Applications enabling distortion correction need to pay extra attention when converting
30151 image coordinates between corrected output buffers and the sensor array.<wbr/> For example,<wbr/> if
30152 the app supports tap-to-focus and enables correction,<wbr/> it then has to apply the distortion
30153 model described in <a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a> to the image buffer tap coordinates to properly
30154 calculate the tap position on the sensor active array to be used with
30155 <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
30156 they need to be drawn on top of the corrected output buffers.<wbr/></p>
30161 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
30162 <!-- end of entry -->
30166 <!-- end of kind -->
30169 <!-- end of section -->
30170 <!-- </namespace> -->
30173 <div class="tags" id="tag_index">
30176 <li id="tag_BC">BC -
30177 Needed for backwards compatibility with old Java API
30179 <ul class="tags_entries">
30180 <li><a href="#controls_android.control.aeAntibandingMode">android.control.aeAntibandingMode</a> (controls)</li>
30181 <li><a href="#controls_android.control.aeExposureCompensation">android.control.aeExposureCompensation</a> (controls)</li>
30182 <li><a href="#controls_android.control.aeLock">android.control.aeLock</a> (controls)</li>
30183 <li><a href="#controls_android.control.aeMode">android.control.aeMode</a> (controls)</li>
30184 <li><a href="#controls_android.control.aeRegions">android.control.aeRegions</a> (controls)</li>
30185 <li><a href="#controls_android.control.aeTargetFpsRange">android.control.aeTargetFpsRange</a> (controls)</li>
30186 <li><a href="#controls_android.control.aePrecaptureTrigger">android.control.aePrecaptureTrigger</a> (controls)</li>
30187 <li><a href="#controls_android.control.afMode">android.control.afMode</a> (controls)</li>
30188 <li><a href="#controls_android.control.afRegions">android.control.afRegions</a> (controls)</li>
30189 <li><a href="#controls_android.control.afTrigger">android.control.afTrigger</a> (controls)</li>
30190 <li><a href="#controls_android.control.awbLock">android.control.awbLock</a> (controls)</li>
30191 <li><a href="#controls_android.control.awbMode">android.control.awbMode</a> (controls)</li>
30192 <li><a href="#controls_android.control.awbRegions">android.control.awbRegions</a> (controls)</li>
30193 <li><a href="#controls_android.control.captureIntent">android.control.captureIntent</a> (controls)</li>
30194 <li><a href="#controls_android.control.effectMode">android.control.effectMode</a> (controls)</li>
30195 <li><a href="#controls_android.control.mode">android.control.mode</a> (controls)</li>
30196 <li><a href="#controls_android.control.sceneMode">android.control.sceneMode</a> (controls)</li>
30197 <li><a href="#controls_android.control.videoStabilizationMode">android.control.videoStabilizationMode</a> (controls)</li>
30198 <li><a href="#static_android.control.aeAvailableAntibandingModes">android.control.aeAvailableAntibandingModes</a> (static)</li>
30199 <li><a href="#static_android.control.aeAvailableModes">android.control.aeAvailableModes</a> (static)</li>
30200 <li><a href="#static_android.control.aeAvailableTargetFpsRanges">android.control.aeAvailableTargetFpsRanges</a> (static)</li>
30201 <li><a href="#static_android.control.aeCompensationRange">android.control.aeCompensationRange</a> (static)</li>
30202 <li><a href="#static_android.control.aeCompensationStep">android.control.aeCompensationStep</a> (static)</li>
30203 <li><a href="#static_android.control.afAvailableModes">android.control.afAvailableModes</a> (static)</li>
30204 <li><a href="#static_android.control.availableEffects">android.control.availableEffects</a> (static)</li>
30205 <li><a href="#static_android.control.availableSceneModes">android.control.availableSceneModes</a> (static)</li>
30206 <li><a href="#static_android.control.availableVideoStabilizationModes">android.control.availableVideoStabilizationModes</a> (static)</li>
30207 <li><a href="#static_android.control.awbAvailableModes">android.control.awbAvailableModes</a> (static)</li>
30208 <li><a href="#static_android.control.maxRegions">android.control.maxRegions</a> (static)</li>
30209 <li><a href="#static_android.control.sceneModeOverrides">android.control.sceneModeOverrides</a> (static)</li>
30210 <li><a href="#static_android.control.aeLockAvailable">android.control.aeLockAvailable</a> (static)</li>
30211 <li><a href="#static_android.control.awbLockAvailable">android.control.awbLockAvailable</a> (static)</li>
30212 <li><a href="#controls_android.flash.mode">android.flash.mode</a> (controls)</li>
30213 <li><a href="#static_android.flash.info.available">android.flash.info.available</a> (static)</li>
30214 <li><a href="#controls_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a> (controls)</li>
30215 <li><a href="#controls_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a> (controls)</li>
30216 <li><a href="#controls_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a> (controls)</li>
30217 <li><a href="#controls_android.jpeg.orientation">android.jpeg.orientation</a> (controls)</li>
30218 <li><a href="#controls_android.jpeg.quality">android.jpeg.quality</a> (controls)</li>
30219 <li><a href="#controls_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a> (controls)</li>
30220 <li><a href="#controls_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a> (controls)</li>
30221 <li><a href="#static_android.jpeg.availableThumbnailSizes">android.jpeg.availableThumbnailSizes</a> (static)</li>
30222 <li><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a> (controls)</li>
30223 <li><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a> (static)</li>
30224 <li><a href="#dynamic_android.lens.focusRange">android.lens.focusRange</a> (dynamic)</li>
30225 <li><a href="#static_android.request.maxNumOutputStreams">android.request.maxNumOutputStreams</a> (static)</li>
30226 <li><a href="#controls_android.scaler.cropRegion">android.scaler.cropRegion</a> (controls)</li>
30227 <li><a href="#static_android.scaler.availableFormats">android.scaler.availableFormats</a> (static)</li>
30228 <li><a href="#static_android.scaler.availableJpegMinDurations">android.scaler.availableJpegMinDurations</a> (static)</li>
30229 <li><a href="#static_android.scaler.availableJpegSizes">android.scaler.availableJpegSizes</a> (static)</li>
30230 <li><a href="#static_android.scaler.availableMaxDigitalZoom">android.scaler.availableMaxDigitalZoom</a> (static)</li>
30231 <li><a href="#static_android.scaler.availableProcessedMinDurations">android.scaler.availableProcessedMinDurations</a> (static)</li>
30232 <li><a href="#static_android.scaler.availableProcessedSizes">android.scaler.availableProcessedSizes</a> (static)</li>
30233 <li><a href="#static_android.scaler.availableRawMinDurations">android.scaler.availableRawMinDurations</a> (static)</li>
30234 <li><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a> (static)</li>
30235 <li><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a> (static)</li>
30236 <li><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a> (static)</li>
30237 <li><a href="#static_android.sensor.orientation">android.sensor.orientation</a> (static)</li>
30238 <li><a href="#dynamic_android.sensor.timestamp">android.sensor.timestamp</a> (dynamic)</li>
30239 <li><a href="#controls_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a> (controls)</li>
30240 <li><a href="#static_android.statistics.info.maxFaceCount">android.statistics.info.maxFaceCount</a> (static)</li>
30241 <li><a href="#dynamic_android.statistics.faceIds">android.statistics.faceIds</a> (dynamic)</li>
30242 <li><a href="#dynamic_android.statistics.faceLandmarks">android.statistics.faceLandmarks</a> (dynamic)</li>
30243 <li><a href="#dynamic_android.statistics.faceRectangles">android.statistics.faceRectangles</a> (dynamic)</li>
30244 <li><a href="#dynamic_android.statistics.faceScores">android.statistics.faceScores</a> (dynamic)</li>
30245 <li><a href="#dynamic_android.lens.focalLength">android.lens.focalLength</a> (dynamic)</li>
30246 <li><a href="#dynamic_android.lens.focusDistance">android.lens.focusDistance</a> (dynamic)</li>
30248 </li> <!-- tag_BC -->
30249 <li id="tag_V1">V1 -
30250 New features for first camera 2 release (API1)
30252 <ul class="tags_entries">
30253 <li><a href="#static_android.colorCorrection.availableAberrationModes">android.colorCorrection.availableAberrationModes</a> (static)</li>
30254 <li><a href="#static_android.control.availableHighSpeedVideoConfigurations">android.control.availableHighSpeedVideoConfigurations</a> (static)</li>
30255 <li><a href="#controls_android.edge.mode">android.edge.mode</a> (controls)</li>
30256 <li><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a> (static)</li>
30257 <li><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a> (controls)</li>
30258 <li><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a> (static)</li>
30259 <li><a href="#controls_android.lens.aperture">android.lens.aperture</a> (controls)</li>
30260 <li><a href="#controls_android.lens.filterDensity">android.lens.filterDensity</a> (controls)</li>
30261 <li><a href="#controls_android.lens.focalLength">android.lens.focalLength</a> (controls)</li>
30262 <li><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a> (controls)</li>
30263 <li><a href="#controls_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a> (controls)</li>
30264 <li><a href="#static_android.lens.info.availableApertures">android.lens.info.availableApertures</a> (static)</li>
30265 <li><a href="#static_android.lens.info.availableFilterDensities">android.lens.info.availableFilterDensities</a> (static)</li>
30266 <li><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a> (static)</li>
30267 <li><a href="#static_android.lens.info.availableOpticalStabilization">android.lens.info.availableOpticalStabilization</a> (static)</li>
30268 <li><a href="#static_android.lens.info.minimumFocusDistance">android.lens.info.minimumFocusDistance</a> (static)</li>
30269 <li><a href="#static_android.lens.info.shadingMapSize">android.lens.info.shadingMapSize</a> (static)</li>
30270 <li><a href="#static_android.lens.info.focusDistanceCalibration">android.lens.info.focusDistanceCalibration</a> (static)</li>
30271 <li><a href="#dynamic_android.lens.state">android.lens.state</a> (dynamic)</li>
30272 <li><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a> (controls)</li>
30273 <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a> (static)</li>
30274 <li><a href="#controls_android.request.id">android.request.id</a> (controls)</li>
30275 <li><a href="#static_android.scaler.availableMinFrameDurations">android.scaler.availableMinFrameDurations</a> (static)</li>
30276 <li><a href="#static_android.scaler.availableStallDurations">android.scaler.availableStallDurations</a> (static)</li>
30277 <li><a href="#controls_android.sensor.exposureTime">android.sensor.exposureTime</a> (controls)</li>
30278 <li><a href="#controls_android.sensor.frameDuration">android.sensor.frameDuration</a> (controls)</li>
30279 <li><a href="#controls_android.sensor.sensitivity">android.sensor.sensitivity</a> (controls)</li>
30280 <li><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a> (static)</li>
30281 <li><a href="#static_android.sensor.info.exposureTimeRange">android.sensor.info.exposureTimeRange</a> (static)</li>
30282 <li><a href="#static_android.sensor.info.maxFrameDuration">android.sensor.info.maxFrameDuration</a> (static)</li>
30283 <li><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a> (static)</li>
30284 <li><a href="#static_android.sensor.info.timestampSource">android.sensor.info.timestampSource</a> (static)</li>
30285 <li><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a> (static)</li>
30286 <li><a href="#dynamic_android.sensor.rollingShutterSkew">android.sensor.rollingShutterSkew</a> (dynamic)</li>
30287 <li><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a> (controls)</li>
30288 <li><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a> (static)</li>
30289 <li><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a> (dynamic)</li>
30290 <li><a href="#dynamic_android.sync.frameNumber">android.sync.frameNumber</a> (dynamic)</li>
30291 <li><a href="#static_android.sync.maxLatency">android.sync.maxLatency</a> (static)</li>
30292 <li><a href="#static_android.distortionCorrection.availableModes">android.distortionCorrection.availableModes</a> (static)</li>
30293 <li><a href="#dynamic_android.edge.mode">android.edge.mode</a> (dynamic)</li>
30294 <li><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a> (dynamic)</li>
30295 <li><a href="#dynamic_android.lens.aperture">android.lens.aperture</a> (dynamic)</li>
30296 <li><a href="#dynamic_android.lens.filterDensity">android.lens.filterDensity</a> (dynamic)</li>
30297 <li><a href="#dynamic_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a> (dynamic)</li>
30298 <li><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a> (dynamic)</li>
30300 </li> <!-- tag_V1 -->
30301 <li id="tag_RAW">RAW -
30302 Needed for useful RAW image processing and DNG file support
30304 <ul class="tags_entries">
30305 <li><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a> (controls)</li>
30306 <li><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a> (static)</li>
30307 <li><a href="#static_android.sensor.info.activeArraySize">android.sensor.info.activeArraySize</a> (static)</li>
30308 <li><a href="#static_android.sensor.info.colorFilterArrangement">android.sensor.info.colorFilterArrangement</a> (static)</li>
30309 <li><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a> (static)</li>
30310 <li><a href="#static_android.sensor.info.whiteLevel">android.sensor.info.whiteLevel</a> (static)</li>
30311 <li><a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.sensor.info.preCorrectionActiveArraySize</a> (static)</li>
30312 <li><a href="#static_android.sensor.referenceIlluminant1">android.sensor.referenceIlluminant1</a> (static)</li>
30313 <li><a href="#static_android.sensor.referenceIlluminant2">android.sensor.referenceIlluminant2</a> (static)</li>
30314 <li><a href="#static_android.sensor.calibrationTransform1">android.sensor.calibrationTransform1</a> (static)</li>
30315 <li><a href="#static_android.sensor.calibrationTransform2">android.sensor.calibrationTransform2</a> (static)</li>
30316 <li><a href="#static_android.sensor.colorTransform1">android.sensor.colorTransform1</a> (static)</li>
30317 <li><a href="#static_android.sensor.colorTransform2">android.sensor.colorTransform2</a> (static)</li>
30318 <li><a href="#static_android.sensor.forwardMatrix1">android.sensor.forwardMatrix1</a> (static)</li>
30319 <li><a href="#static_android.sensor.forwardMatrix2">android.sensor.forwardMatrix2</a> (static)</li>
30320 <li><a href="#static_android.sensor.blackLevelPattern">android.sensor.blackLevelPattern</a> (static)</li>
30321 <li><a href="#static_android.sensor.profileHueSatMapDimensions">android.sensor.profileHueSatMapDimensions</a> (static)</li>
30322 <li><a href="#dynamic_android.sensor.neutralColorPoint">android.sensor.neutralColorPoint</a> (dynamic)</li>
30323 <li><a href="#dynamic_android.sensor.noiseProfile">android.sensor.noiseProfile</a> (dynamic)</li>
30324 <li><a href="#dynamic_android.sensor.profileHueSatMap">android.sensor.profileHueSatMap</a> (dynamic)</li>
30325 <li><a href="#dynamic_android.sensor.profileToneCurve">android.sensor.profileToneCurve</a> (dynamic)</li>
30326 <li><a href="#dynamic_android.sensor.greenSplit">android.sensor.greenSplit</a> (dynamic)</li>
30327 <li><a href="#dynamic_android.sensor.dynamicBlackLevel">android.sensor.dynamicBlackLevel</a> (dynamic)</li>
30328 <li><a href="#dynamic_android.sensor.dynamicWhiteLevel">android.sensor.dynamicWhiteLevel</a> (dynamic)</li>
30329 <li><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a> (controls)</li>
30330 <li><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a> (static)</li>
30331 <li><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a> (dynamic)</li>
30332 <li><a href="#controls_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a> (controls)</li>
30333 <li><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a> (dynamic)</li>
30335 </li> <!-- tag_RAW -->
30336 <li id="tag_HAL2">HAL2 -
30337 Entry is only used by camera device legacy HAL 2.x
30339 <ul class="tags_entries">
30340 <li><a href="#controls_android.request.inputStreams">android.request.inputStreams</a> (controls)</li>
30341 <li><a href="#controls_android.request.outputStreams">android.request.outputStreams</a> (controls)</li>
30342 <li><a href="#controls_android.request.type">android.request.type</a> (controls)</li>
30343 <li><a href="#static_android.request.maxNumReprocessStreams">android.request.maxNumReprocessStreams</a> (static)</li>
30344 <li><a href="#controls_android.blackLevel.lock">android.blackLevel.lock</a> (controls)</li>
30346 </li> <!-- tag_HAL2 -->
30347 <li id="tag_FULL">FULL -
30348 Entry is required for full hardware level devices, and optional for other hardware levels
30350 <ul class="tags_entries">
30351 <li><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a> (static)</li>
30353 </li> <!-- tag_FULL -->
30354 <li id="tag_DEPTH">DEPTH -
30355 Entry is required for the depth capability.
30357 <ul class="tags_entries">
30358 <li><a href="#static_android.lens.poseRotation">android.lens.poseRotation</a> (static)</li>
30359 <li><a href="#static_android.lens.poseTranslation">android.lens.poseTranslation</a> (static)</li>
30360 <li><a href="#static_android.lens.intrinsicCalibration">android.lens.intrinsicCalibration</a> (static)</li>
30361 <li><a href="#static_android.lens.radialDistortion">android.lens.radialDistortion</a> (static)</li>
30362 <li><a href="#static_android.lens.distortion">android.lens.distortion</a> (static)</li>
30363 <li><a href="#static_android.depth.maxDepthSamples">android.depth.maxDepthSamples</a> (static)</li>
30364 <li><a href="#static_android.depth.availableDepthStreamConfigurations">android.depth.availableDepthStreamConfigurations</a> (static)</li>
30365 <li><a href="#static_android.depth.availableDepthMinFrameDurations">android.depth.availableDepthMinFrameDurations</a> (static)</li>
30366 <li><a href="#static_android.depth.availableDepthStallDurations">android.depth.availableDepthStallDurations</a> (static)</li>
30368 </li> <!-- tag_DEPTH -->
30369 <li id="tag_REPROC">REPROC -
30370 Entry is required for the YUV or PRIVATE reprocessing capability.
30372 <ul class="tags_entries">
30373 <li><a href="#controls_android.edge.mode">android.edge.mode</a> (controls)</li>
30374 <li><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a> (static)</li>
30375 <li><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a> (controls)</li>
30376 <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a> (static)</li>
30377 <li><a href="#static_android.request.maxNumInputStreams">android.request.maxNumInputStreams</a> (static)</li>
30378 <li><a href="#static_android.scaler.availableInputOutputFormatsMap">android.scaler.availableInputOutputFormatsMap</a> (static)</li>
30379 <li><a href="#controls_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a> (controls)</li>
30380 <li><a href="#static_android.reprocess.maxCaptureStall">android.reprocess.maxCaptureStall</a> (static)</li>
30381 <li><a href="#static_android.distortionCorrection.availableModes">android.distortionCorrection.availableModes</a> (static)</li>
30382 <li><a href="#dynamic_android.edge.mode">android.edge.mode</a> (dynamic)</li>
30383 <li><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a> (dynamic)</li>
30385 </li> <!-- tag_REPROC -->
30386 <li id="tag_LOGICALCAMERA">LOGICALCAMERA -
30387 Entry is required for logical multi-camera capability.
30389 <ul class="tags_entries">
30390 <li><a href="#static_android.logicalMultiCamera.physicalIds">android.logicalMultiCamera.physicalIds</a> (static)</li>
30391 <li><a href="#static_android.logicalMultiCamera.sensorSyncType">android.logicalMultiCamera.sensorSyncType</a> (static)</li>
30393 </li> <!-- tag_LOGICALCAMERA -->
30394 <li id="tag_FUTURE">FUTURE -
30395 Entry is under-specified and is not required for now. This is for book-keeping purpose,
30396 do not implement or use it, it may be revised for future.
30398 <ul class="tags_entries">
30399 <li><a href="#controls_android.demosaic.mode">android.demosaic.mode</a> (controls)</li>
30400 <li><a href="#controls_android.edge.strength">android.edge.strength</a> (controls)</li>
30401 <li><a href="#controls_android.flash.firingPower">android.flash.firingPower</a> (controls)</li>
30402 <li><a href="#controls_android.flash.firingTime">android.flash.firingTime</a> (controls)</li>
30403 <li><a href="#static_android.flash.info.chargeDuration">android.flash.info.chargeDuration</a> (static)</li>
30404 <li><a href="#static_android.flash.colorTemperature">android.flash.colorTemperature</a> (static)</li>
30405 <li><a href="#static_android.flash.maxEnergy">android.flash.maxEnergy</a> (static)</li>
30406 <li><a href="#dynamic_android.jpeg.size">android.jpeg.size</a> (dynamic)</li>
30407 <li><a href="#controls_android.noiseReduction.strength">android.noiseReduction.strength</a> (controls)</li>
30408 <li><a href="#controls_android.request.metadataMode">android.request.metadataMode</a> (controls)</li>
30409 <li><a href="#static_android.sensor.baseGainFactor">android.sensor.baseGainFactor</a> (static)</li>
30410 <li><a href="#dynamic_android.sensor.temperature">android.sensor.temperature</a> (dynamic)</li>
30411 <li><a href="#controls_android.shading.strength">android.shading.strength</a> (controls)</li>
30412 <li><a href="#controls_android.statistics.histogramMode">android.statistics.histogramMode</a> (controls)</li>
30413 <li><a href="#controls_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a> (controls)</li>
30414 <li><a href="#static_android.statistics.info.histogramBucketCount">android.statistics.info.histogramBucketCount</a> (static)</li>
30415 <li><a href="#static_android.statistics.info.maxHistogramCount">android.statistics.info.maxHistogramCount</a> (static)</li>
30416 <li><a href="#static_android.statistics.info.maxSharpnessMapValue">android.statistics.info.maxSharpnessMapValue</a> (static)</li>
30417 <li><a href="#static_android.statistics.info.sharpnessMapSize">android.statistics.info.sharpnessMapSize</a> (static)</li>
30418 <li><a href="#dynamic_android.statistics.histogram">android.statistics.histogram</a> (dynamic)</li>
30419 <li><a href="#dynamic_android.statistics.sharpnessMap">android.statistics.sharpnessMap</a> (dynamic)</li>
30421 </li> <!-- tag_FUTURE -->
30425 [ <a href="#">top</a> ]