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>
17128 </td> <!-- entry_type -->
17130 <td class="entry_description">
17131 <p>List of capabilities that this camera device
17132 advertises as fully supporting.<wbr/></p>
17135 <td class="entry_units">
17138 <td class="entry_range">
17141 <td class="entry_hal_version">
17145 <td class="entry_tags">
17149 <tr class="entries_header">
17150 <th class="th_details" colspan="6">Details</th>
17152 <tr class="entry_cont">
17153 <td class="entry_details" colspan="6">
17154 <p>A capability is a contract that the camera device makes in order
17155 to be able to satisfy one or more use cases.<wbr/></p>
17156 <p>Listing a capability guarantees that the whole set of features
17157 required to support a common use will all be available.<wbr/></p>
17158 <p>Using a subset of the functionality provided by an unsupported
17159 capability may be possible on a specific camera device implementation;
17160 to do this query each of <a href="#static_android.request.availableRequestKeys">android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys</a>,<wbr/>
17161 <a href="#static_android.request.availableResultKeys">android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys</a>,<wbr/>
17162 <a href="#static_android.request.availableCharacteristicsKeys">android.<wbr/>request.<wbr/>available<wbr/>Characteristics<wbr/>Keys</a>.<wbr/></p>
17163 <p>The following capabilities are guaranteed to be available on
17164 <a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> <code>==</code> FULL devices:</p>
17166 <li>MANUAL_<wbr/>SENSOR</li>
17167 <li>MANUAL_<wbr/>POST_<wbr/>PROCESSING</li>
17169 <p>Other capabilities may be available on either FULL or LIMITED
17170 devices,<wbr/> but the application should query this key to be sure.<wbr/></p>
17174 <tr class="entries_header">
17175 <th class="th_details" colspan="6">HAL Implementation Details</th>
17177 <tr class="entry_cont">
17178 <td class="entry_details" colspan="6">
17179 <p>Additional constraint details per-capability will be available
17180 in the Compatibility Test Suite.<wbr/></p>
17181 <p>Minimum baseline requirements required for the
17182 BACKWARD_<wbr/>COMPATIBLE capability are not explicitly listed.<wbr/>
17183 Instead refer to "BC" tags and the camera CTS tests in the
17184 android.<wbr/>hardware.<wbr/>camera2.<wbr/>cts package.<wbr/></p>
17185 <p>Listed controls that can be either request or result (e.<wbr/>g.<wbr/>
17186 <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>) must be available both in the
17187 request and the result in order to be considered to be
17188 capability-compliant.<wbr/></p>
17189 <p>For example,<wbr/> if the HAL claims to support MANUAL control,<wbr/>
17190 then exposure time must be configurable via the request <em>and</em>
17191 the actual exposure applied must be available via
17192 the result.<wbr/></p>
17193 <p>If MANUAL_<wbr/>SENSOR is omitted,<wbr/> the HAL may choose to omit the
17194 <a href="#static_android.scaler.availableMinFrameDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Min<wbr/>Frame<wbr/>Durations</a> static property entirely.<wbr/></p>
17195 <p>For PRIVATE_<wbr/>REPROCESSING and YUV_<wbr/>REPROCESSING capabilities,<wbr/> see
17196 hardware/<wbr/>libhardware/<wbr/>include/<wbr/>hardware/<wbr/>camera3.<wbr/>h Section 10 for more information.<wbr/></p>
17197 <p>Devices that support the MANUAL_<wbr/>SENSOR capability must support the
17198 CAMERA3_<wbr/>TEMPLATE_<wbr/>MANUAL template defined in camera3.<wbr/>h.<wbr/></p>
17199 <p>Devices that support the PRIVATE_<wbr/>REPROCESSING capability or the
17200 YUV_<wbr/>REPROCESSING capability must support the
17201 CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template defined in camera3.<wbr/>h.<wbr/></p>
17202 <p>For DEPTH_<wbr/>OUTPUT,<wbr/> the depth-format keys
17203 <a href="#static_android.depth.availableDepthStreamConfigurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stream<wbr/>Configurations</a>,<wbr/>
17204 <a href="#static_android.depth.availableDepthMinFrameDurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Min<wbr/>Frame<wbr/>Durations</a>,<wbr/>
17205 <a href="#static_android.depth.availableDepthStallDurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stall<wbr/>Durations</a> must be available,<wbr/> in
17206 addition to the other keys explicitly mentioned in the DEPTH_<wbr/>OUTPUT
17207 enum notes.<wbr/> The entry <a href="#static_android.depth.maxDepthSamples">android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples</a> must be available
17208 if the DEPTH_<wbr/>POINT_<wbr/>CLOUD format is supported (HAL pixel format BLOB,<wbr/> dataspace
17210 <p>For a camera device with LOGICAL_<wbr/>MULTI_<wbr/>CAMERA capability,<wbr/> it should operate in the
17211 same way as a physical camera device based on its hardware level and capabilities.<wbr/>
17212 It's recommended that its feature set is superset of that of individual physical cameras.<wbr/></p>
17216 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17217 <!-- end of entry -->
17220 <tr class="entry" id="static_android.request.availableRequestKeys">
17221 <td class="entry_name
17223 android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys
17225 <td class="entry_type">
17226 <span class="entry_type_name">int32</span>
17227 <span class="entry_type_container">x</span>
17229 <span class="entry_type_array">
17232 <span class="entry_type_visibility"> [ndk_public]</span>
17235 <span class="entry_type_hwlevel">[legacy] </span>
17240 </td> <!-- entry_type -->
17242 <td class="entry_description">
17243 <p>A list of all keys that the camera device has available
17244 to use with <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureRequest.html">CaptureRequest</a>.<wbr/></p>
17247 <td class="entry_units">
17250 <td class="entry_range">
17253 <td class="entry_hal_version">
17257 <td class="entry_tags">
17261 <tr class="entries_header">
17262 <th class="th_details" colspan="6">Details</th>
17264 <tr class="entry_cont">
17265 <td class="entry_details" colspan="6">
17266 <p>Attempting to set a key into a CaptureRequest that is not
17267 listed here will result in an invalid request and will be rejected
17268 by the camera device.<wbr/></p>
17269 <p>This field can be used to query the feature set of a camera device
17270 at a more granular level than capabilities.<wbr/> This is especially
17271 important for optional keys that are not listed under any capability
17272 in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
17276 <tr class="entries_header">
17277 <th class="th_details" colspan="6">HAL Implementation Details</th>
17279 <tr class="entry_cont">
17280 <td class="entry_details" colspan="6">
17281 <p>Vendor tags can be listed here.<wbr/> Vendor tag metadata should also
17282 use the extensions C api (refer to camera3.<wbr/>h for more details).<wbr/></p>
17283 <p>Setting/<wbr/>getting vendor tags will be checked against the metadata
17284 vendor extensions API and not against this field.<wbr/></p>
17285 <p>The HAL must not consume any request tags that are not listed either
17286 here or in the vendor tag list.<wbr/></p>
17287 <p>The public camera2 API will always make the vendor tags visible
17289 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a>.<wbr/></p>
17293 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17294 <!-- end of entry -->
17297 <tr class="entry" id="static_android.request.availableResultKeys">
17298 <td class="entry_name
17300 android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys
17302 <td class="entry_type">
17303 <span class="entry_type_name">int32</span>
17304 <span class="entry_type_container">x</span>
17306 <span class="entry_type_array">
17309 <span class="entry_type_visibility"> [ndk_public]</span>
17312 <span class="entry_type_hwlevel">[legacy] </span>
17317 </td> <!-- entry_type -->
17319 <td class="entry_description">
17320 <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>
17323 <td class="entry_units">
17326 <td class="entry_range">
17329 <td class="entry_hal_version">
17333 <td class="entry_tags">
17337 <tr class="entries_header">
17338 <th class="th_details" colspan="6">Details</th>
17340 <tr class="entry_cont">
17341 <td class="entry_details" colspan="6">
17342 <p>Attempting to get a key from a CaptureResult that is not
17343 listed here will always return a <code>null</code> value.<wbr/> Getting a key from
17344 a CaptureResult that is listed here will generally never return a <code>null</code>
17346 <p>The following keys may return <code>null</code> unless they are enabled:</p>
17348 <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>
17350 <p>(Those sometimes-null keys will nevertheless be listed here
17351 if they are available.<wbr/>)</p>
17352 <p>This field can be used to query the feature set of a camera device
17353 at a more granular level than capabilities.<wbr/> This is especially
17354 important for optional keys that are not listed under any capability
17355 in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
17359 <tr class="entries_header">
17360 <th class="th_details" colspan="6">HAL Implementation Details</th>
17362 <tr class="entry_cont">
17363 <td class="entry_details" colspan="6">
17364 <p>Tags listed here must always have an entry in the result metadata,<wbr/>
17365 even if that size is 0 elements.<wbr/> Only array-type tags (e.<wbr/>g.<wbr/> lists,<wbr/>
17366 matrices,<wbr/> strings) are allowed to have 0 elements.<wbr/></p>
17367 <p>Vendor tags can be listed here.<wbr/> Vendor tag metadata should also
17368 use the extensions C api (refer to camera3.<wbr/>h for more details).<wbr/></p>
17369 <p>Setting/<wbr/>getting vendor tags will be checked against the metadata
17370 vendor extensions API and not against this field.<wbr/></p>
17371 <p>The HAL must not produce any result tags that are not listed either
17372 here or in the vendor tag list.<wbr/></p>
17373 <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>
17377 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17378 <!-- end of entry -->
17381 <tr class="entry" id="static_android.request.availableCharacteristicsKeys">
17382 <td class="entry_name
17384 android.<wbr/>request.<wbr/>available<wbr/>Characteristics<wbr/>Keys
17386 <td class="entry_type">
17387 <span class="entry_type_name">int32</span>
17388 <span class="entry_type_container">x</span>
17390 <span class="entry_type_array">
17393 <span class="entry_type_visibility"> [ndk_public]</span>
17396 <span class="entry_type_hwlevel">[legacy] </span>
17401 </td> <!-- entry_type -->
17403 <td class="entry_description">
17404 <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>
17407 <td class="entry_units">
17410 <td class="entry_range">
17413 <td class="entry_hal_version">
17417 <td class="entry_tags">
17421 <tr class="entries_header">
17422 <th class="th_details" colspan="6">Details</th>
17424 <tr class="entry_cont">
17425 <td class="entry_details" colspan="6">
17426 <p>This entry follows the same rules as
17427 <a href="#static_android.request.availableResultKeys">android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys</a> (except that it applies for
17428 CameraCharacteristics instead of CaptureResult).<wbr/> See above for more
17433 <tr class="entries_header">
17434 <th class="th_details" colspan="6">HAL Implementation Details</th>
17436 <tr class="entry_cont">
17437 <td class="entry_details" colspan="6">
17438 <p>Keys listed here must always have an entry in the static info metadata,<wbr/>
17439 even if that size is 0 elements.<wbr/> Only array-type tags (e.<wbr/>g.<wbr/> lists,<wbr/>
17440 matrices,<wbr/> strings) are allowed to have 0 elements.<wbr/></p>
17441 <p>Vendor tags can listed here.<wbr/> Vendor tag metadata should also use
17442 the extensions C api (refer to camera3.<wbr/>h for more details).<wbr/></p>
17443 <p>Setting/<wbr/>getting vendor tags will be checked against the metadata
17444 vendor extensions API and not against this field.<wbr/></p>
17445 <p>The HAL must not have any tags in its static info that are not listed
17446 either here or in the vendor tag list.<wbr/></p>
17447 <p>The public camera2 API will always make the vendor tags visible
17448 via <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getKeys">CameraCharacteristics#getKeys</a>.<wbr/></p>
17452 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17453 <!-- end of entry -->
17456 <tr class="entry" id="static_android.request.availableSessionKeys">
17457 <td class="entry_name
17459 android.<wbr/>request.<wbr/>available<wbr/>Session<wbr/>Keys
17461 <td class="entry_type">
17462 <span class="entry_type_name">int32</span>
17463 <span class="entry_type_container">x</span>
17465 <span class="entry_type_array">
17468 <span class="entry_type_visibility"> [ndk_public]</span>
17471 <span class="entry_type_hwlevel">[legacy] </span>
17476 </td> <!-- entry_type -->
17478 <td class="entry_description">
17479 <p>A subset of the available request keys that the camera device
17480 can pass as part of the capture session initialization.<wbr/></p>
17483 <td class="entry_units">
17486 <td class="entry_range">
17489 <td class="entry_hal_version">
17493 <td class="entry_tags">
17497 <tr class="entries_header">
17498 <th class="th_details" colspan="6">Details</th>
17500 <tr class="entry_cont">
17501 <td class="entry_details" colspan="6">
17502 <p>This is a subset of <a href="#static_android.request.availableRequestKeys">android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys</a> which
17503 contains a list of keys that are difficult to apply per-frame and
17504 can result in unexpected delays when modified during the capture session
17505 lifetime.<wbr/> Typical examples include parameters that require a
17506 time-consuming hardware re-configuration or internal camera pipeline
17507 change.<wbr/> For performance reasons we advise clients to pass their initial
17509 <a href="https://developer.android.com/reference/SessionConfiguration.html#setSessionParameters">SessionConfiguration#setSessionParameters</a>.<wbr/>
17510 Once the camera capture session is enabled it is also recommended to avoid
17511 changing them from their initial values set in
17512 <a href="https://developer.android.com/reference/SessionConfiguration.html#setSessionParameters">SessionConfiguration#setSessionParameters</a>.<wbr/>
17513 Control over session parameters can still be exerted in capture requests
17514 but clients should be aware and expect delays during their application.<wbr/>
17515 An example usage scenario could look like this:</p>
17517 <li>The camera client starts by quering the session parameter key list via
17518 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableSessionKeys">CameraCharacteristics#getAvailableSessionKeys</a>.<wbr/></li>
17519 <li>Before triggering the capture session create sequence,<wbr/> a capture request
17521 <a href="https://developer.android.com/reference/CameraDevice.html#createCaptureRequest">CameraDevice#createCaptureRequest</a>
17522 using an appropriate template matching the particular use case.<wbr/></li>
17523 <li>The client should go over the list of session parameters and check
17524 whether some of the keys listed matches with the parameters that
17525 they intend to modify as part of the first capture request.<wbr/></li>
17526 <li>If there is no such match,<wbr/> the capture request can be passed
17528 <a href="https://developer.android.com/reference/SessionConfiguration.html#setSessionParameters">SessionConfiguration#setSessionParameters</a>.<wbr/></li>
17529 <li>If matches do exist,<wbr/> the client should update the respective values
17530 and pass the request to
17531 <a href="https://developer.android.com/reference/SessionConfiguration.html#setSessionParameters">SessionConfiguration#setSessionParameters</a>.<wbr/></li>
17532 <li>After the capture session initialization completes the session parameter
17533 key list can continue to serve as reference when posting or updating
17534 further requests.<wbr/> As mentioned above further changes to session
17535 parameters should ideally be avoided,<wbr/> if updates are necessary
17536 however clients could expect a delay/<wbr/>glitch during the
17537 parameter switch.<wbr/></li>
17542 <tr class="entries_header">
17543 <th class="th_details" colspan="6">HAL Implementation Details</th>
17545 <tr class="entry_cont">
17546 <td class="entry_details" colspan="6">
17547 <p>Vendor tags can be listed here.<wbr/> Vendor tag metadata should also
17548 use the extensions C api (refer to
17549 android.<wbr/>hardware.<wbr/>camera.<wbr/>device.<wbr/>V3_<wbr/>4.<wbr/>Stream<wbr/>Configuration.<wbr/>session<wbr/>Params for more details).<wbr/></p>
17550 <p>Setting/<wbr/>getting vendor tags will be checked against the metadata
17551 vendor extensions API and not against this field.<wbr/></p>
17552 <p>The HAL must not consume any request tags in the session parameters that
17553 are not listed either here or in the vendor tag list.<wbr/></p>
17554 <p>The public camera2 API will always make the vendor tags visible
17556 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableSessionKeys">CameraCharacteristics#getAvailableSessionKeys</a>.<wbr/></p>
17560 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17561 <!-- end of entry -->
17564 <tr class="entry" id="static_android.request.availablePhysicalCameraRequestKeys">
17565 <td class="entry_name
17567 android.<wbr/>request.<wbr/>available<wbr/>Physical<wbr/>Camera<wbr/>Request<wbr/>Keys
17569 <td class="entry_type">
17570 <span class="entry_type_name">int32</span>
17571 <span class="entry_type_container">x</span>
17573 <span class="entry_type_array">
17576 <span class="entry_type_visibility"> [hidden]</span>
17579 <span class="entry_type_hwlevel">[limited] </span>
17584 </td> <!-- entry_type -->
17586 <td class="entry_description">
17587 <p>A subset of the available request keys that can be overriden for
17588 physical devices backing a logical multi-camera.<wbr/></p>
17591 <td class="entry_units">
17594 <td class="entry_range">
17597 <td class="entry_hal_version">
17601 <td class="entry_tags">
17605 <tr class="entries_header">
17606 <th class="th_details" colspan="6">Details</th>
17608 <tr class="entry_cont">
17609 <td class="entry_details" colspan="6">
17610 <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
17611 of keys that can be overriden using <a href="https://developer.android.com/reference/CaptureRequest/Builder.html#setPhysicalCameraKey">Builder#setPhysicalCameraKey</a>.<wbr/>
17612 The respective value of such request key can be obtained by calling
17613 <a href="https://developer.android.com/reference/CaptureRequest/Builder.html#getPhysicalCameraKey">Builder#getPhysicalCameraKey</a>.<wbr/> Capture requests that contain
17614 individual physical device requests must be built via
17615 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureRequest(int,">Set)</a>.<wbr/></p>
17619 <tr class="entries_header">
17620 <th class="th_details" colspan="6">HAL Implementation Details</th>
17622 <tr class="entry_cont">
17623 <td class="entry_details" colspan="6">
17624 <p>Vendor tags can be listed here.<wbr/> Vendor tag metadata should also
17625 use the extensions C api (refer to
17626 android.<wbr/>hardware.<wbr/>camera.<wbr/>device.<wbr/>V3_<wbr/>4.<wbr/>Capture<wbr/>Request.<wbr/>physical<wbr/>Camera<wbr/>Settings for more
17627 details).<wbr/></p>
17628 <p>Setting/<wbr/>getting vendor tags will be checked against the metadata
17629 vendor extensions API and not against this field.<wbr/></p>
17630 <p>The HAL must not consume any request tags in the session parameters that
17631 are not listed either here or in the vendor tag list.<wbr/></p>
17632 <p>There should be no overlap between this set of keys and the available session keys
17633 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableSessionKeys">CameraCharacteristics#getAvailableSessionKeys</a> along
17634 with any other controls that can have impact on the dual-camera sync.<wbr/></p>
17635 <p>The public camera2 API will always make the vendor tags visible
17637 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailablePhysicalCameraRequestKeys">CameraCharacteristics#getAvailablePhysicalCameraRequestKeys</a>.<wbr/></p>
17641 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17642 <!-- end of entry -->
17646 <!-- end of kind -->
17648 <tr><td colspan="7" class="kind">dynamic</td></tr>
17650 <thead class="entries_header">
17652 <th class="th_name">Property Name</th>
17653 <th class="th_type">Type</th>
17654 <th class="th_description">Description</th>
17655 <th class="th_units">Units</th>
17656 <th class="th_range">Range</th>
17657 <th class="th_hal_version">Initial HIDL HAL version</th>
17658 <th class="th_tags">Tags</th>
17673 <tr class="entry" id="dynamic_android.request.frameCount">
17674 <td class="entry_name
17675 entry_name_deprecated
17677 android.<wbr/>request.<wbr/>frame<wbr/>Count
17679 <td class="entry_type">
17680 <span class="entry_type_name">int32</span>
17682 <span class="entry_type_visibility"> [hidden]</span>
17686 <span class="entry_type_deprecated">[deprecated] </span>
17690 </td> <!-- entry_type -->
17692 <td class="entry_description">
17693 <p>A frame counter set by the framework.<wbr/> This value monotonically
17694 increases with every new result (that is,<wbr/> each new result has a unique
17695 frameCount value).<wbr/></p>
17698 <td class="entry_units">
17702 <td class="entry_range">
17703 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
17707 <td class="entry_hal_version">
17711 <td class="entry_tags">
17715 <tr class="entries_header">
17716 <th class="th_details" colspan="6">Details</th>
17718 <tr class="entry_cont">
17719 <td class="entry_details" colspan="6">
17720 <p>Reset on release()</p>
17725 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17726 <!-- end of entry -->
17729 <tr class="entry" id="dynamic_android.request.id">
17730 <td class="entry_name
17732 android.<wbr/>request.<wbr/>id
17734 <td class="entry_type">
17735 <span class="entry_type_name">int32</span>
17737 <span class="entry_type_visibility"> [hidden]</span>
17744 </td> <!-- entry_type -->
17746 <td class="entry_description">
17747 <p>An application-specified ID for the current
17748 request.<wbr/> Must be maintained unchanged in output
17752 <td class="entry_units">
17753 arbitrary integer assigned by application
17756 <td class="entry_range">
17760 <td class="entry_hal_version">
17764 <td class="entry_tags">
17765 <ul class="entry_tags">
17766 <li><a href="#tag_V1">V1</a></li>
17773 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17774 <!-- end of entry -->
17777 <tr class="entry" id="dynamic_android.request.metadataMode">
17778 <td class="entry_name
17780 android.<wbr/>request.<wbr/>metadata<wbr/>Mode
17782 <td class="entry_type">
17783 <span class="entry_type_name entry_type_name_enum">byte</span>
17785 <span class="entry_type_visibility"> [system]</span>
17791 <ul class="entry_type_enum">
17793 <span class="entry_type_enum_name">NONE (v3.2)</span>
17794 <span class="entry_type_enum_notes"><p>No metadata should be produced on output,<wbr/> except
17795 for application-bound buffer data.<wbr/> If no
17796 application-bound streams exist,<wbr/> no frame should be
17797 placed in the output frame queue.<wbr/> If such streams
17798 exist,<wbr/> a frame should be placed on the output queue
17799 with null metadata but with the necessary output buffer
17800 information.<wbr/> Timestamp information should still be
17801 included with any output stream buffers</p></span>
17804 <span class="entry_type_enum_name">FULL (v3.2)</span>
17805 <span class="entry_type_enum_notes"><p>All metadata should be produced.<wbr/> Statistics will
17806 only be produced if they are separately
17811 </td> <!-- entry_type -->
17813 <td class="entry_description">
17814 <p>How much metadata to produce on
17818 <td class="entry_units">
17821 <td class="entry_range">
17824 <td class="entry_hal_version">
17828 <td class="entry_tags">
17829 <ul class="entry_tags">
17830 <li><a href="#tag_FUTURE">FUTURE</a></li>
17837 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17838 <!-- end of entry -->
17841 <tr class="entry" id="dynamic_android.request.outputStreams">
17842 <td class="entry_name
17843 entry_name_deprecated
17845 android.<wbr/>request.<wbr/>output<wbr/>Streams
17847 <td class="entry_type">
17848 <span class="entry_type_name">int32</span>
17849 <span class="entry_type_container">x</span>
17851 <span class="entry_type_array">
17854 <span class="entry_type_visibility"> [system]</span>
17858 <span class="entry_type_deprecated">[deprecated] </span>
17862 </td> <!-- entry_type -->
17864 <td class="entry_description">
17865 <p>Lists which camera output streams image data
17866 from this capture must be sent to</p>
17869 <td class="entry_units">
17870 List of camera stream IDs
17873 <td class="entry_range">
17874 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
17875 <p>List must only include streams that have been
17879 <td class="entry_hal_version">
17883 <td class="entry_tags">
17884 <ul class="entry_tags">
17885 <li><a href="#tag_HAL2">HAL2</a></li>
17890 <tr class="entries_header">
17891 <th class="th_details" colspan="6">Details</th>
17893 <tr class="entry_cont">
17894 <td class="entry_details" colspan="6">
17895 <p>If no output streams are listed,<wbr/> then the image
17896 data should simply be discarded.<wbr/> The image data must
17897 still be captured for metadata and statistics production,<wbr/>
17898 and the lens and flash must operate as requested.<wbr/></p>
17903 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17904 <!-- end of entry -->
17907 <tr class="entry" id="dynamic_android.request.pipelineDepth">
17908 <td class="entry_name
17910 android.<wbr/>request.<wbr/>pipeline<wbr/>Depth
17912 <td class="entry_type">
17913 <span class="entry_type_name">byte</span>
17915 <span class="entry_type_visibility"> [public]</span>
17918 <span class="entry_type_hwlevel">[legacy] </span>
17923 </td> <!-- entry_type -->
17925 <td class="entry_description">
17926 <p>Specifies the number of pipeline stages the frame went
17927 through from when it was exposed to when the final completed result
17928 was available to the framework.<wbr/></p>
17931 <td class="entry_units">
17934 <td class="entry_range">
17935 <p><= <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a></p>
17938 <td class="entry_hal_version">
17942 <td class="entry_tags">
17946 <tr class="entries_header">
17947 <th class="th_details" colspan="6">Details</th>
17949 <tr class="entry_cont">
17950 <td class="entry_details" colspan="6">
17951 <p>Depending on what settings are used in the request,<wbr/> and
17952 what streams are configured,<wbr/> the data may undergo less processing,<wbr/>
17953 and some pipeline stages skipped.<wbr/></p>
17954 <p>See <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a> for more details.<wbr/></p>
17958 <tr class="entries_header">
17959 <th class="th_details" colspan="6">HAL Implementation Details</th>
17961 <tr class="entry_cont">
17962 <td class="entry_details" colspan="6">
17963 <p>This value must always represent the accurate count of how many
17964 pipeline stages were actually used.<wbr/></p>
17968 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17969 <!-- end of entry -->
17973 <!-- end of kind -->
17976 <!-- end of section -->
17977 <tr><td colspan="7" id="section_scaler" class="section">scaler</td></tr>
17980 <tr><td colspan="7" class="kind">controls</td></tr>
17982 <thead class="entries_header">
17984 <th class="th_name">Property Name</th>
17985 <th class="th_type">Type</th>
17986 <th class="th_description">Description</th>
17987 <th class="th_units">Units</th>
17988 <th class="th_range">Range</th>
17989 <th class="th_hal_version">Initial HIDL HAL version</th>
17990 <th class="th_tags">Tags</th>
18005 <tr class="entry" id="controls_android.scaler.cropRegion">
18006 <td class="entry_name
18008 android.<wbr/>scaler.<wbr/>crop<wbr/>Region
18010 <td class="entry_type">
18011 <span class="entry_type_name">int32</span>
18012 <span class="entry_type_container">x</span>
18014 <span class="entry_type_array">
18017 <span class="entry_type_visibility"> [public as rectangle]</span>
18020 <span class="entry_type_hwlevel">[legacy] </span>
18025 </td> <!-- entry_type -->
18027 <td class="entry_description">
18028 <p>The desired region of the sensor to read out for this capture.<wbr/></p>
18031 <td class="entry_units">
18032 Pixel coordinates relative to
18033 android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
18036 <td class="entry_range">
18039 <td class="entry_hal_version">
18043 <td class="entry_tags">
18044 <ul class="entry_tags">
18045 <li><a href="#tag_BC">BC</a></li>
18050 <tr class="entries_header">
18051 <th class="th_details" colspan="6">Details</th>
18053 <tr class="entry_cont">
18054 <td class="entry_details" colspan="6">
18055 <p>This control can be used to implement digital zoom.<wbr/></p>
18056 <p>The crop region coordinate system is based off
18057 <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
18058 top-left corner of the sensor active array.<wbr/></p>
18059 <p>Output streams use this rectangle to produce their output,<wbr/>
18060 cropping to a smaller region if necessary to maintain the
18061 stream's aspect ratio,<wbr/> then scaling the sensor input to
18062 match the output's configured resolution.<wbr/></p>
18063 <p>The crop region is applied after the RAW to other color
18064 space (e.<wbr/>g.<wbr/> YUV) conversion.<wbr/> Since raw streams
18065 (e.<wbr/>g.<wbr/> RAW16) don't have the conversion stage,<wbr/> they are not
18066 croppable.<wbr/> The crop region will be ignored by raw streams.<wbr/></p>
18067 <p>For non-raw streams,<wbr/> any additional per-stream cropping will
18068 be done to maximize the final pixel area of the stream.<wbr/></p>
18069 <p>For example,<wbr/> if the crop region is set to a 4:3 aspect
18070 ratio,<wbr/> then 4:3 streams will use the exact crop
18071 region.<wbr/> 16:9 streams will further crop vertically
18072 (letterbox).<wbr/></p>
18073 <p>Conversely,<wbr/> if the crop region is set to a 16:9,<wbr/> then 4:3
18074 outputs will crop horizontally (pillarbox),<wbr/> and 16:9
18075 streams will match exactly.<wbr/> These additional crops will
18076 be centered within the crop region.<wbr/></p>
18077 <p>The width and height of the crop region cannot
18078 be set to be smaller than
18079 <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
18080 <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>
18081 <p>The camera device may adjust the crop region to account
18082 for rounding and other hardware requirements; the final
18083 crop region used will be included in the output capture
18088 <tr class="entries_header">
18089 <th class="th_details" colspan="6">HAL Implementation Details</th>
18091 <tr class="entry_cont">
18092 <td class="entry_details" colspan="6">
18093 <p>The output streams must maintain square pixels at all
18094 times,<wbr/> no matter what the relative aspect ratios of the
18095 crop region and the stream are.<wbr/> Negative values for
18096 corner are allowed for raw output if full pixel array is
18097 larger than active pixel array.<wbr/> Width and height may be
18098 rounded to nearest larger supportable width,<wbr/> especially
18099 for raw output,<wbr/> where only a few fixed scales may be
18100 possible.<wbr/></p>
18101 <p>For a set of output streams configured,<wbr/> if the sensor output is cropped to a smaller
18102 size than active array size,<wbr/> the HAL need follow below cropping rules:</p>
18105 <p>The HAL need handle the cropRegion as if the sensor crop size is the effective active
18106 array size.<wbr/>More specifically,<wbr/> the HAL must transform the request cropRegion from
18107 <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>
18109 <li>Translate the requested cropRegion w.<wbr/>r.<wbr/>t.,<wbr/> the left top corner of the sensor
18110 cropped pixel area by (tx,<wbr/> ty),<wbr/>
18111 where <code>tx = sensorCrop.<wbr/>top * (sensorCrop.<wbr/>height /<wbr/> activeArraySize.<wbr/>height)</code>
18112 and <code>tx = sensorCrop.<wbr/>left * (sensorCrop.<wbr/>width /<wbr/> activeArraySize.<wbr/>width)</code>.<wbr/> The
18113 (sensorCrop.<wbr/>top,<wbr/> sensorCrop.<wbr/>left) is the coordinate based off the
18114 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></li>
18115 <li>Scale the width and height of requested cropRegion with scaling factor of
18116 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
18117 respectively.<wbr/>
18118 Once this new cropRegion is calculated,<wbr/> the HAL must use this region to crop the image
18119 with regard to the sensor crop size (effective active array size).<wbr/> The HAL still need
18120 follow the general cropping rule for this new cropRegion and effective active
18121 array size.<wbr/></li>
18125 <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/>
18126 The HAL need convert the new cropRegion generated above w.<wbr/>r.<wbr/>t.,<wbr/> full active array size.<wbr/>
18127 The reported cropRegion may be slightly different with the requested cropRegion since
18128 the HAL may adjust the crop region to account for rounding,<wbr/> conversion error,<wbr/> or other
18129 hardware limitations.<wbr/></p>
18132 <p>HAL2.<wbr/>x uses only (x,<wbr/> y,<wbr/> width)</p>
18136 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18137 <!-- end of entry -->
18141 <!-- end of kind -->
18143 <tr><td colspan="7" class="kind">static</td></tr>
18145 <thead class="entries_header">
18147 <th class="th_name">Property Name</th>
18148 <th class="th_type">Type</th>
18149 <th class="th_description">Description</th>
18150 <th class="th_units">Units</th>
18151 <th class="th_range">Range</th>
18152 <th class="th_hal_version">Initial HIDL HAL version</th>
18153 <th class="th_tags">Tags</th>
18168 <tr class="entry" id="static_android.scaler.availableFormats">
18169 <td class="entry_name
18170 entry_name_deprecated
18172 android.<wbr/>scaler.<wbr/>available<wbr/>Formats
18174 <td class="entry_type">
18175 <span class="entry_type_name entry_type_name_enum">int32</span>
18176 <span class="entry_type_container">x</span>
18178 <span class="entry_type_array">
18181 <span class="entry_type_visibility"> [hidden as imageFormat]</span>
18185 <span class="entry_type_deprecated">[deprecated] </span>
18188 <ul class="entry_type_enum">
18190 <span class="entry_type_enum_name">RAW16 (v3.2)</span>
18191 <span class="entry_type_enum_optional">[optional]</span>
18192 <span class="entry_type_enum_value">0x20</span>
18193 <span class="entry_type_enum_notes"><p>RAW16 is a standard,<wbr/> cross-platform format for raw image
18194 buffers with 16-bit pixels.<wbr/></p>
18195 <p>Buffers of this format are typically expected to have a
18196 Bayer Color Filter Array (CFA) layout,<wbr/> which is given in
18197 <a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a>.<wbr/> Sensors with
18198 CFAs that are not representable by a format in
18199 <a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a> should not
18200 use this format.<wbr/></p>
18201 <p>Buffers of this format will also follow the constraints given for
18202 RAW_<wbr/>OPAQUE buffers,<wbr/> but with relaxed performance constraints.<wbr/></p>
18203 <p>This format is intended to give users access to the full contents
18204 of the buffers coming directly from the image sensor prior to any
18205 cropping or scaling operations,<wbr/> and all coordinate systems for
18206 metadata used for this format are relative to the size of the
18207 active region of the image sensor before any geometric distortion
18208 correction has been applied (i.<wbr/>e.<wbr/>
18209 <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
18210 dimensions for this format are limited to the full dimensions of
18211 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
18212 <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
18213 only supported output size).<wbr/></p>
18214 <p>See <a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a> for
18215 the full set of performance guarantees.<wbr/></p></span>
18218 <span class="entry_type_enum_name">RAW_OPAQUE (v3.2)</span>
18219 <span class="entry_type_enum_optional">[optional]</span>
18220 <span class="entry_type_enum_value">0x24</span>
18221 <span class="entry_type_enum_notes"><p>RAW_<wbr/>OPAQUE (or
18222 <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_PRIVATE">RAW_<wbr/>PRIVATE</a>
18223 as referred in public API) is a format for raw image buffers
18224 coming from an image sensor.<wbr/></p>
18225 <p>The actual structure of buffers of this format is
18226 platform-specific,<wbr/> but must follow several constraints:</p>
18228 <li>No image post-processing operations may have been applied to
18229 buffers of this type.<wbr/> These buffers contain raw image data coming
18230 directly from the image sensor.<wbr/></li>
18231 <li>If a buffer of this format is passed to the camera device for
18232 reprocessing,<wbr/> the resulting images will be identical to the images
18233 produced if the buffer had come directly from the sensor and was
18234 processed with the same settings.<wbr/></li>
18236 <p>The intended use for this format is to allow access to the native
18237 raw format buffers coming directly from the camera sensor without
18238 any additional conversions or decrease in framerate.<wbr/></p>
18239 <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
18240 performance guarantees.<wbr/></p></span>
18243 <span class="entry_type_enum_name">YV12 (v3.2)</span>
18244 <span class="entry_type_enum_optional">[optional]</span>
18245 <span class="entry_type_enum_value">0x32315659</span>
18246 <span class="entry_type_enum_notes"><p>YCrCb 4:2:0 Planar</p></span>
18249 <span class="entry_type_enum_name">YCrCb_420_SP (v3.2)</span>
18250 <span class="entry_type_enum_optional">[optional]</span>
18251 <span class="entry_type_enum_value">0x11</span>
18252 <span class="entry_type_enum_notes"><p>NV21</p></span>
18255 <span class="entry_type_enum_name">IMPLEMENTATION_DEFINED (v3.2)</span>
18256 <span class="entry_type_enum_value">0x22</span>
18257 <span class="entry_type_enum_notes"><p>System internal format,<wbr/> not application-accessible</p></span>
18260 <span class="entry_type_enum_name">YCbCr_420_888 (v3.2)</span>
18261 <span class="entry_type_enum_value">0x23</span>
18262 <span class="entry_type_enum_notes"><p>Flexible YUV420 Format</p></span>
18265 <span class="entry_type_enum_name">BLOB (v3.2)</span>
18266 <span class="entry_type_enum_value">0x21</span>
18267 <span class="entry_type_enum_notes"><p>JPEG format</p></span>
18271 </td> <!-- entry_type -->
18273 <td class="entry_description">
18274 <p>The list of image formats that are supported by this
18275 camera device for output streams.<wbr/></p>
18278 <td class="entry_units">
18281 <td class="entry_range">
18282 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
18285 <td class="entry_hal_version">
18289 <td class="entry_tags">
18290 <ul class="entry_tags">
18291 <li><a href="#tag_BC">BC</a></li>
18296 <tr class="entries_header">
18297 <th class="th_details" colspan="6">Details</th>
18299 <tr class="entry_cont">
18300 <td class="entry_details" colspan="6">
18301 <p>All camera devices will support JPEG and YUV_<wbr/>420_<wbr/>888 formats.<wbr/></p>
18302 <p>When set to YUV_<wbr/>420_<wbr/>888,<wbr/> application can access the YUV420 data directly.<wbr/></p>
18306 <tr class="entries_header">
18307 <th class="th_details" colspan="6">HAL Implementation Details</th>
18309 <tr class="entry_cont">
18310 <td class="entry_details" colspan="6">
18311 <p>These format values are from HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>* in
18312 system/<wbr/>core/<wbr/>include/<wbr/>system/<wbr/>graphics.<wbr/>h.<wbr/></p>
18313 <p>When IMPLEMENTATION_<wbr/>DEFINED is used,<wbr/> the platform
18314 gralloc module will select a format based on the usage flags provided
18315 by the camera HAL device and the other endpoint of the stream.<wbr/> It is
18316 usually used by preview and recording streams,<wbr/> where the application doesn't
18317 need access the image data.<wbr/></p>
18318 <p>YCb<wbr/>Cr_<wbr/>420_<wbr/>888 format must be supported by the HAL.<wbr/> When an image stream
18319 needs CPU/<wbr/>application direct access,<wbr/> this format will be used.<wbr/></p>
18320 <p>The BLOB format must be supported by the HAL.<wbr/> This is used for the JPEG stream.<wbr/></p>
18321 <p>A RAW_<wbr/>OPAQUE buffer should contain only pixel data.<wbr/> It is strongly
18322 recommended that any information used by the camera device when
18323 processing images is fully expressed by the result metadata
18324 for that image buffer.<wbr/></p>
18328 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18329 <!-- end of entry -->
18332 <tr class="entry" id="static_android.scaler.availableJpegMinDurations">
18333 <td class="entry_name
18334 entry_name_deprecated
18336 android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Min<wbr/>Durations
18338 <td class="entry_type">
18339 <span class="entry_type_name">int64</span>
18340 <span class="entry_type_container">x</span>
18342 <span class="entry_type_array">
18345 <span class="entry_type_visibility"> [hidden]</span>
18349 <span class="entry_type_deprecated">[deprecated] </span>
18353 </td> <!-- entry_type -->
18355 <td class="entry_description">
18356 <p>The minimum frame duration that is supported
18357 for each resolution in <a href="#static_android.scaler.availableJpegSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes</a>.<wbr/></p>
18360 <td class="entry_units">
18364 <td class="entry_range">
18365 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
18366 <p>TODO: Remove property.<wbr/></p>
18369 <td class="entry_hal_version">
18373 <td class="entry_tags">
18374 <ul class="entry_tags">
18375 <li><a href="#tag_BC">BC</a></li>
18380 <tr class="entries_header">
18381 <th class="th_details" colspan="6">Details</th>
18383 <tr class="entry_cont">
18384 <td class="entry_details" colspan="6">
18385 <p>This corresponds to the minimum steady-state frame duration when only
18386 that JPEG stream is active and captured in a burst,<wbr/> with all
18387 processing (typically in android.<wbr/>*.<wbr/>mode) set to FAST.<wbr/></p>
18388 <p>When multiple streams are configured,<wbr/> the minimum
18389 frame duration will be >= max(individual stream min
18395 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18396 <!-- end of entry -->
18399 <tr class="entry" id="static_android.scaler.availableJpegSizes">
18400 <td class="entry_name
18401 entry_name_deprecated
18403 android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes
18405 <td class="entry_type">
18406 <span class="entry_type_name">int32</span>
18407 <span class="entry_type_container">x</span>
18409 <span class="entry_type_array">
18412 <span class="entry_type_visibility"> [hidden as size]</span>
18416 <span class="entry_type_deprecated">[deprecated] </span>
18420 </td> <!-- entry_type -->
18422 <td class="entry_description">
18423 <p>The JPEG resolutions that are supported by this camera device.<wbr/></p>
18426 <td class="entry_units">
18429 <td class="entry_range">
18430 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
18431 <p>TODO: Remove property.<wbr/></p>
18434 <td class="entry_hal_version">
18438 <td class="entry_tags">
18439 <ul class="entry_tags">
18440 <li><a href="#tag_BC">BC</a></li>
18445 <tr class="entries_header">
18446 <th class="th_details" colspan="6">Details</th>
18448 <tr class="entry_cont">
18449 <td class="entry_details" colspan="6">
18450 <p>The resolutions are listed as <code>(width,<wbr/> height)</code> pairs.<wbr/> All camera devices will support
18451 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>
18455 <tr class="entries_header">
18456 <th class="th_details" colspan="6">HAL Implementation Details</th>
18458 <tr class="entry_cont">
18459 <td class="entry_details" colspan="6">
18460 <p>The HAL must include sensor maximum resolution
18461 (defined by <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>),<wbr/>
18462 and should include half/<wbr/>quarter of sensor maximum resolution.<wbr/></p>
18466 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18467 <!-- end of entry -->
18470 <tr class="entry" id="static_android.scaler.availableMaxDigitalZoom">
18471 <td class="entry_name
18473 android.<wbr/>scaler.<wbr/>available<wbr/>Max<wbr/>Digital<wbr/>Zoom
18475 <td class="entry_type">
18476 <span class="entry_type_name">float</span>
18478 <span class="entry_type_visibility"> [public]</span>
18481 <span class="entry_type_hwlevel">[legacy] </span>
18486 </td> <!-- entry_type -->
18488 <td class="entry_description">
18489 <p>The maximum ratio between both active area width
18490 and crop region width,<wbr/> and active area height and
18491 crop region height,<wbr/> for <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></p>
18494 <td class="entry_units">
18498 <td class="entry_range">
18502 <td class="entry_hal_version">
18506 <td class="entry_tags">
18507 <ul class="entry_tags">
18508 <li><a href="#tag_BC">BC</a></li>
18513 <tr class="entries_header">
18514 <th class="th_details" colspan="6">Details</th>
18516 <tr class="entry_cont">
18517 <td class="entry_details" colspan="6">
18518 <p>This represents the maximum amount of zooming possible by
18519 the camera device,<wbr/> or equivalently,<wbr/> the minimum cropping
18520 window size.<wbr/></p>
18521 <p>Crop regions that have a width or height that is smaller
18522 than this ratio allows will be rounded up to the minimum
18523 allowed size by the camera device.<wbr/></p>
18528 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18529 <!-- end of entry -->
18532 <tr class="entry" id="static_android.scaler.availableProcessedMinDurations">
18533 <td class="entry_name
18534 entry_name_deprecated
18536 android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Min<wbr/>Durations
18538 <td class="entry_type">
18539 <span class="entry_type_name">int64</span>
18540 <span class="entry_type_container">x</span>
18542 <span class="entry_type_array">
18545 <span class="entry_type_visibility"> [hidden]</span>
18549 <span class="entry_type_deprecated">[deprecated] </span>
18553 </td> <!-- entry_type -->
18555 <td class="entry_description">
18556 <p>For each available processed output size (defined in
18557 <a href="#static_android.scaler.availableProcessedSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Sizes</a>),<wbr/> this property lists the
18558 minimum supportable frame duration for that size.<wbr/></p>
18561 <td class="entry_units">
18565 <td class="entry_range">
18566 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
18569 <td class="entry_hal_version">
18573 <td class="entry_tags">
18574 <ul class="entry_tags">
18575 <li><a href="#tag_BC">BC</a></li>
18580 <tr class="entries_header">
18581 <th class="th_details" colspan="6">Details</th>
18583 <tr class="entry_cont">
18584 <td class="entry_details" colspan="6">
18585 <p>This should correspond to the frame duration when only that processed
18586 stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode)
18587 set to FAST.<wbr/></p>
18588 <p>When multiple streams are configured,<wbr/> the minimum frame duration will
18589 be >= max(individual stream min durations).<wbr/></p>
18594 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18595 <!-- end of entry -->
18598 <tr class="entry" id="static_android.scaler.availableProcessedSizes">
18599 <td class="entry_name
18600 entry_name_deprecated
18602 android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Sizes
18604 <td class="entry_type">
18605 <span class="entry_type_name">int32</span>
18606 <span class="entry_type_container">x</span>
18608 <span class="entry_type_array">
18611 <span class="entry_type_visibility"> [hidden as size]</span>
18615 <span class="entry_type_deprecated">[deprecated] </span>
18619 </td> <!-- entry_type -->
18621 <td class="entry_description">
18622 <p>The resolutions available for use with
18623 processed output streams,<wbr/> such as YV12,<wbr/> NV12,<wbr/> and
18624 platform opaque YUV/<wbr/>RGB streams to the GPU or video
18625 encoders.<wbr/></p>
18628 <td class="entry_units">
18631 <td class="entry_range">
18632 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
18635 <td class="entry_hal_version">
18639 <td class="entry_tags">
18640 <ul class="entry_tags">
18641 <li><a href="#tag_BC">BC</a></li>
18646 <tr class="entries_header">
18647 <th class="th_details" colspan="6">Details</th>
18649 <tr class="entry_cont">
18650 <td class="entry_details" colspan="6">
18651 <p>The resolutions are listed as <code>(width,<wbr/> height)</code> pairs.<wbr/></p>
18652 <p>For a given use case,<wbr/> the actual maximum supported resolution
18653 may be lower than what is listed here,<wbr/> depending on the destination
18654 Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/>
18655 the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p)
18656 smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448)
18657 can provide.<wbr/></p>
18658 <p>Please reference the documentation for the image data destination to
18659 check if it limits the maximum size for image data.<wbr/></p>
18663 <tr class="entries_header">
18664 <th class="th_details" colspan="6">HAL Implementation Details</th>
18666 <tr class="entry_cont">
18667 <td class="entry_details" colspan="6">
18668 <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/>
18669 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>
18670 and each below resolution if it is smaller than or equal to the sensor
18671 maximum resolution (if they are not listed in JPEG sizes already):</p>
18673 <li>240p (320 x 240)</li>
18674 <li>480p (640 x 480)</li>
18675 <li>720p (1280 x 720)</li>
18676 <li>1080p (1920 x 1080)</li>
18678 <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/>
18679 the HAL only has to list up to the maximum video size supported by the devices.<wbr/></p>
18683 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18684 <!-- end of entry -->
18687 <tr class="entry" id="static_android.scaler.availableRawMinDurations">
18688 <td class="entry_name
18689 entry_name_deprecated
18691 android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Min<wbr/>Durations
18693 <td class="entry_type">
18694 <span class="entry_type_name">int64</span>
18695 <span class="entry_type_container">x</span>
18697 <span class="entry_type_array">
18700 <span class="entry_type_visibility"> [system]</span>
18704 <span class="entry_type_deprecated">[deprecated] </span>
18708 </td> <!-- entry_type -->
18710 <td class="entry_description">
18711 <p>For each available raw output size (defined in
18712 <a href="#static_android.scaler.availableRawSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Sizes</a>),<wbr/> this property lists the minimum
18713 supportable frame duration for that size.<wbr/></p>
18716 <td class="entry_units">
18720 <td class="entry_range">
18721 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
18724 <td class="entry_hal_version">
18728 <td class="entry_tags">
18729 <ul class="entry_tags">
18730 <li><a href="#tag_BC">BC</a></li>
18735 <tr class="entries_header">
18736 <th class="th_details" colspan="6">Details</th>
18738 <tr class="entry_cont">
18739 <td class="entry_details" colspan="6">
18740 <p>Should correspond to the frame duration when only the raw stream is
18742 <p>When multiple streams are configured,<wbr/> the minimum
18743 frame duration will be >= max(individual stream min
18749 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18750 <!-- end of entry -->
18753 <tr class="entry" id="static_android.scaler.availableRawSizes">
18754 <td class="entry_name
18755 entry_name_deprecated
18757 android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Sizes
18759 <td class="entry_type">
18760 <span class="entry_type_name">int32</span>
18761 <span class="entry_type_container">x</span>
18763 <span class="entry_type_array">
18766 <span class="entry_type_visibility"> [system as size]</span>
18770 <span class="entry_type_deprecated">[deprecated] </span>
18774 </td> <!-- entry_type -->
18776 <td class="entry_description">
18777 <p>The resolutions available for use with raw
18778 sensor output streams,<wbr/> listed as width,<wbr/>
18782 <td class="entry_units">
18785 <td class="entry_range">
18786 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
18789 <td class="entry_hal_version">
18793 <td class="entry_tags">
18799 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18800 <!-- end of entry -->
18803 <tr class="entry" id="static_android.scaler.availableInputOutputFormatsMap">
18804 <td class="entry_name
18806 android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map
18808 <td class="entry_type">
18809 <span class="entry_type_name">int32</span>
18811 <span class="entry_type_visibility"> [hidden as reprocessFormatsMap]</span>
18818 </td> <!-- entry_type -->
18820 <td class="entry_description">
18821 <p>The mapping of image formats that are supported by this
18822 camera device for input streams,<wbr/> to their corresponding output formats.<wbr/></p>
18825 <td class="entry_units">
18828 <td class="entry_range">
18831 <td class="entry_hal_version">
18835 <td class="entry_tags">
18836 <ul class="entry_tags">
18837 <li><a href="#tag_REPROC">REPROC</a></li>
18842 <tr class="entries_header">
18843 <th class="th_details" colspan="6">Details</th>
18845 <tr class="entry_cont">
18846 <td class="entry_details" colspan="6">
18847 <p>All camera devices with at least 1
18848 <a href="#static_android.request.maxNumInputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Input<wbr/>Streams</a> will have at least one
18849 available input format.<wbr/></p>
18850 <p>The camera device will support the following map of formats,<wbr/>
18851 if its dependent capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>) is supported:</p>
18855 <th align="left">Input Format</th>
18856 <th align="left">Output Format</th>
18857 <th align="left">Capability</th>
18862 <td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td>
18863 <td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
18864 <td align="left">PRIVATE_<wbr/>REPROCESSING</td>
18867 <td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td>
18868 <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>
18869 <td align="left">PRIVATE_<wbr/>REPROCESSING</td>
18872 <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>
18873 <td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
18874 <td align="left">YUV_<wbr/>REPROCESSING</td>
18877 <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>
18878 <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>
18879 <td align="left">YUV_<wbr/>REPROCESSING</td>
18883 <p>PRIVATE refers to a device-internal format that is not directly application-visible.<wbr/> A
18884 PRIVATE input surface can be acquired by <a href="https://developer.android.com/reference/android/media/ImageReader.html#newInstance">ImageReader#newInstance</a>
18885 with <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> as the format.<wbr/></p>
18886 <p>For a PRIVATE_<wbr/>REPROCESSING-capable camera device,<wbr/> using the PRIVATE format as either input
18887 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>
18888 <p>Attempting to configure an input stream with output streams not
18889 listed as available in this map is not valid.<wbr/></p>
18893 <tr class="entries_header">
18894 <th class="th_details" colspan="6">HAL Implementation Details</th>
18896 <tr class="entry_cont">
18897 <td class="entry_details" colspan="6">
18898 <p>For the formats,<wbr/> see <code>system/<wbr/>core/<wbr/>include/<wbr/>system/<wbr/>graphics.<wbr/>h</code> for a definition
18899 of the image format enumerations.<wbr/> The PRIVATE format refers to the
18900 HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>IMPLEMENTATION_<wbr/>DEFINED format.<wbr/> The HAL could determine
18901 the actual format by using the gralloc usage flags.<wbr/>
18902 For ZSL use case in particular,<wbr/> the HAL could choose appropriate format (partially
18903 processed YUV or RAW based format) by checking the format and GRALLOC_<wbr/>USAGE_<wbr/>HW_<wbr/>CAMERA_<wbr/>ZSL.<wbr/>
18904 See camera3.<wbr/>h for more details.<wbr/></p>
18905 <p>This value is encoded as a variable-size array-of-arrays.<wbr/>
18906 The inner array always contains <code>[format,<wbr/> length,<wbr/> ...<wbr/>]</code> where
18907 <code>...<wbr/></code> has <code>length</code> elements.<wbr/> An inner array is followed by another
18908 inner array if the total metadata entry size hasn't yet been exceeded.<wbr/></p>
18909 <p>A code sample to read/<wbr/>write this encoding (with a device that
18910 supports reprocessing IMPLEMENTATION_<wbr/>DEFINED to YUV_<wbr/>420_<wbr/>888,<wbr/> and JPEG,<wbr/>
18911 and reprocessing YUV_<wbr/>420_<wbr/>888 to YUV_<wbr/>420_<wbr/>888 and JPEG):</p>
18912 <pre><code>//<wbr/> reading
18913 int32_<wbr/>t* contents = &entry.<wbr/>i32[0];
18914 for (size_<wbr/>t i = 0; i < entry.<wbr/>count; ) {
18915 int32_<wbr/>t format = contents[i++];
18916 int32_<wbr/>t length = contents[i++];
18917 int32_<wbr/>t output_<wbr/>formats[length];
18918 memcpy(&output_<wbr/>formats[0],<wbr/> &contents[i],<wbr/>
18919 length * sizeof(int32_<wbr/>t));
18923 //<wbr/> writing (static example,<wbr/> PRIVATE_<wbr/>REPROCESSING + YUV_<wbr/>REPROCESSING)
18924 int32_<wbr/>t[] contents = {
18925 IMPLEMENTATION_<wbr/>DEFINED,<wbr/> 2,<wbr/> YUV_<wbr/>420_<wbr/>888,<wbr/> BLOB,<wbr/>
18926 YUV_<wbr/>420_<wbr/>888,<wbr/> 2,<wbr/> YUV_<wbr/>420_<wbr/>888,<wbr/> BLOB,<wbr/>
18928 update_<wbr/>camera_<wbr/>metadata_<wbr/>entry(metadata,<wbr/> index,<wbr/> &contents[0],<wbr/>
18929 sizeof(contents)/<wbr/>sizeof(contents[0]),<wbr/> &updated_<wbr/>entry);
18931 <p>If the HAL claims to support any of the capabilities listed in the
18932 above details,<wbr/> then it must also support all the input-output
18933 combinations listed for that capability.<wbr/> It can optionally support
18934 additional formats if it so chooses.<wbr/></p>
18938 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18939 <!-- end of entry -->
18942 <tr class="entry" id="static_android.scaler.availableStreamConfigurations">
18943 <td class="entry_name
18945 android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations
18947 <td class="entry_type">
18948 <span class="entry_type_name entry_type_name_enum">int32</span>
18949 <span class="entry_type_container">x</span>
18951 <span class="entry_type_array">
18954 <span class="entry_type_visibility"> [ndk_public as streamConfiguration]</span>
18957 <span class="entry_type_hwlevel">[legacy] </span>
18961 <ul class="entry_type_enum">
18963 <span class="entry_type_enum_name">OUTPUT (v3.2)</span>
18966 <span class="entry_type_enum_name">INPUT (v3.2)</span>
18970 </td> <!-- entry_type -->
18972 <td class="entry_description">
18973 <p>The available stream configurations that this
18974 camera device supports
18975 (i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p>
18978 <td class="entry_units">
18981 <td class="entry_range">
18984 <td class="entry_hal_version">
18988 <td class="entry_tags">
18992 <tr class="entries_header">
18993 <th class="th_details" colspan="6">Details</th>
18995 <tr class="entry_cont">
18996 <td class="entry_details" colspan="6">
18997 <p>The configurations are listed as <code>(format,<wbr/> width,<wbr/> height,<wbr/> input?)</code>
18999 <p>For a given use case,<wbr/> the actual maximum supported resolution
19000 may be lower than what is listed here,<wbr/> depending on the destination
19001 Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/>
19002 the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p)
19003 smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448)
19004 can provide.<wbr/></p>
19005 <p>Please reference the documentation for the image data destination to
19006 check if it limits the maximum size for image data.<wbr/></p>
19007 <p>Not all output formats may be supported in a configuration with
19008 an input stream of a particular format.<wbr/> For more details,<wbr/> see
19009 <a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a>.<wbr/></p>
19010 <p>The following table describes the minimum required output stream
19011 configurations based on the hardware level
19012 (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>):</p>
19016 <th align="center">Format</th>
19017 <th align="center">Size</th>
19018 <th align="center">Hardware Level</th>
19019 <th align="center">Notes</th>
19024 <td align="center">JPEG</td>
19025 <td align="center"><a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></td>
19026 <td align="center">Any</td>
19027 <td align="center"></td>
19030 <td align="center">JPEG</td>
19031 <td align="center">1920x1080 (1080p)</td>
19032 <td align="center">Any</td>
19033 <td align="center">if 1080p <= activeArraySize</td>
19036 <td align="center">JPEG</td>
19037 <td align="center">1280x720 (720)</td>
19038 <td align="center">Any</td>
19039 <td align="center">if 720p <= activeArraySize</td>
19042 <td align="center">JPEG</td>
19043 <td align="center">640x480 (480p)</td>
19044 <td align="center">Any</td>
19045 <td align="center">if 480p <= activeArraySize</td>
19048 <td align="center">JPEG</td>
19049 <td align="center">320x240 (240p)</td>
19050 <td align="center">Any</td>
19051 <td align="center">if 240p <= activeArraySize</td>
19054 <td align="center">YUV_<wbr/>420_<wbr/>888</td>
19055 <td align="center">all output sizes available for JPEG</td>
19056 <td align="center">FULL</td>
19057 <td align="center"></td>
19060 <td align="center">YUV_<wbr/>420_<wbr/>888</td>
19061 <td align="center">all output sizes available for JPEG,<wbr/> up to the maximum video size</td>
19062 <td align="center">LIMITED</td>
19063 <td align="center"></td>
19066 <td align="center">IMPLEMENTATION_<wbr/>DEFINED</td>
19067 <td align="center">same as YUV_<wbr/>420_<wbr/>888</td>
19068 <td align="center">Any</td>
19069 <td align="center"></td>
19073 <p>Refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> for additional
19074 mandatory stream configurations on a per-capability basis.<wbr/></p>
19078 <tr class="entries_header">
19079 <th class="th_details" colspan="6">HAL Implementation Details</th>
19081 <tr class="entry_cont">
19082 <td class="entry_details" colspan="6">
19083 <p>It is recommended (but not mandatory) to also include half/<wbr/>quarter
19084 of sensor maximum resolution for JPEG formats (regardless of hardware
19086 <p>(The following is a rewording of the above required table):</p>
19087 <p>For JPEG format,<wbr/> the sizes may be restricted by below conditions:</p>
19089 <li>The HAL may choose the aspect ratio of each Jpeg size to be one of well known ones
19090 (e.<wbr/>g.<wbr/> 4:3,<wbr/> 16:9,<wbr/> 3:2 etc.<wbr/>).<wbr/> If the sensor maximum resolution
19091 (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/>
19092 it does not have to be included in the supported JPEG sizes.<wbr/></li>
19093 <li>Some hardware JPEG encoders may have pixel boundary alignment requirements,<wbr/> such as
19094 the dimensions being a multiple of 16.<wbr/></li>
19096 <p>Therefore,<wbr/> the maximum JPEG size may be smaller than sensor maximum resolution.<wbr/>
19097 However,<wbr/> the largest JPEG size must be as close as possible to the sensor maximum
19098 resolution given above constraints.<wbr/> It is required that after aspect ratio adjustments,<wbr/>
19099 additional size reduction due to other issues must be less than 3% in area.<wbr/> For example,<wbr/>
19100 if the sensor maximum resolution is 3280x2464,<wbr/> if the maximum JPEG size has aspect
19101 ratio 4:3,<wbr/> the JPEG encoder alignment requirement is 16,<wbr/> the maximum JPEG size will be
19102 3264x2448.<wbr/></p>
19103 <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/>
19104 the HAL must include all YUV_<wbr/>420_<wbr/>888 sizes that have JPEG sizes listed
19105 here as output streams.<wbr/></p>
19106 <p>It must also include each below resolution if it is smaller than or
19107 equal to the sensor maximum resolution (for both YUV_<wbr/>420_<wbr/>888 and JPEG
19108 formats),<wbr/> as output streams:</p>
19110 <li>240p (320 x 240)</li>
19111 <li>480p (640 x 480)</li>
19112 <li>720p (1280 x 720)</li>
19113 <li>1080p (1920 x 1080)</li>
19115 <p>For LIMITED capability devices
19116 (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == LIMITED</code>),<wbr/>
19117 the HAL only has to list up to the maximum video size
19118 supported by the device.<wbr/></p>
19119 <p>Regardless of hardware level,<wbr/> every output resolution available for
19120 YUV_<wbr/>420_<wbr/>888 must also be available for IMPLEMENTATION_<wbr/>DEFINED.<wbr/></p>
19121 <p>This supercedes the following fields,<wbr/> which are now deprecated:</p>
19123 <li>availableFormats</li>
19124 <li>available[Processed,<wbr/>Raw,<wbr/>Jpeg]Sizes</li>
19129 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19130 <!-- end of entry -->
19133 <tr class="entry" id="static_android.scaler.availableMinFrameDurations">
19134 <td class="entry_name
19136 android.<wbr/>scaler.<wbr/>available<wbr/>Min<wbr/>Frame<wbr/>Durations
19138 <td class="entry_type">
19139 <span class="entry_type_name">int64</span>
19140 <span class="entry_type_container">x</span>
19142 <span class="entry_type_array">
19145 <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
19148 <span class="entry_type_hwlevel">[legacy] </span>
19153 </td> <!-- entry_type -->
19155 <td class="entry_description">
19156 <p>This lists the minimum frame duration for each
19157 format/<wbr/>size combination.<wbr/></p>
19160 <td class="entry_units">
19161 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
19164 <td class="entry_range">
19167 <td class="entry_hal_version">
19171 <td class="entry_tags">
19172 <ul class="entry_tags">
19173 <li><a href="#tag_V1">V1</a></li>
19178 <tr class="entries_header">
19179 <th class="th_details" colspan="6">Details</th>
19181 <tr class="entry_cont">
19182 <td class="entry_details" colspan="6">
19183 <p>This should correspond to the frame duration when only that
19184 stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode)
19185 set to either OFF or FAST.<wbr/></p>
19186 <p>When multiple streams are used in a request,<wbr/> the minimum frame
19187 duration will be max(individual stream min durations).<wbr/></p>
19188 <p>The minimum frame duration of a stream (of a particular format,<wbr/> size)
19189 is the same regardless of whether the stream is input or output.<wbr/></p>
19190 <p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> and
19191 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for more details about
19192 calculating the max frame rate.<wbr/></p>
19197 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19198 <!-- end of entry -->
19201 <tr class="entry" id="static_android.scaler.availableStallDurations">
19202 <td class="entry_name
19204 android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations
19206 <td class="entry_type">
19207 <span class="entry_type_name">int64</span>
19208 <span class="entry_type_container">x</span>
19210 <span class="entry_type_array">
19213 <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
19216 <span class="entry_type_hwlevel">[legacy] </span>
19221 </td> <!-- entry_type -->
19223 <td class="entry_description">
19224 <p>This lists the maximum stall duration for each
19225 output format/<wbr/>size combination.<wbr/></p>
19228 <td class="entry_units">
19229 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
19232 <td class="entry_range">
19235 <td class="entry_hal_version">
19239 <td class="entry_tags">
19240 <ul class="entry_tags">
19241 <li><a href="#tag_V1">V1</a></li>
19246 <tr class="entries_header">
19247 <th class="th_details" colspan="6">Details</th>
19249 <tr class="entry_cont">
19250 <td class="entry_details" colspan="6">
19251 <p>A stall duration is how much extra time would get added
19252 to the normal minimum frame duration for a repeating request
19253 that has streams with non-zero stall.<wbr/></p>
19254 <p>For example,<wbr/> consider JPEG captures which have the following
19255 characteristics:</p>
19257 <li>JPEG streams act like processed YUV streams in requests for which
19258 they are not included; in requests in which they are directly
19259 referenced,<wbr/> they act as JPEG streams.<wbr/> This is because supporting a
19260 JPEG stream requires the underlying YUV data to always be ready for
19261 use by a JPEG encoder,<wbr/> but the encoder will only be used (and impact
19262 frame duration) on requests that actually reference a JPEG stream.<wbr/></li>
19263 <li>The JPEG processor can run concurrently to the rest of the camera
19264 pipeline,<wbr/> but cannot process more than 1 capture at a time.<wbr/></li>
19266 <p>In other words,<wbr/> using a repeating YUV request would result
19267 in a steady frame rate (let's say it's 30 FPS).<wbr/> If a single
19268 JPEG request is submitted periodically,<wbr/> the frame rate will stay
19269 at 30 FPS (as long as we wait for the previous JPEG to return each
19270 time).<wbr/> If we try to submit a repeating YUV + JPEG request,<wbr/> then
19271 the frame rate will drop from 30 FPS.<wbr/></p>
19272 <p>In general,<wbr/> submitting a new request with a non-0 stall time
19273 stream will <em>not</em> cause a frame rate drop unless there are still
19274 outstanding buffers for that stream from previous requests.<wbr/></p>
19275 <p>Submitting a repeating request with streams (call this <code>S</code>)
19276 is the same as setting the minimum frame duration from
19277 the normal minimum frame duration corresponding to <code>S</code>,<wbr/> added with
19278 the maximum stall duration for <code>S</code>.<wbr/></p>
19279 <p>If interleaving requests with and without a stall duration,<wbr/>
19280 a request will stall by the maximum of the remaining times
19281 for each can-stall stream with outstanding buffers.<wbr/></p>
19282 <p>This means that a stalling request will not have an exposure start
19283 until the stall has completed.<wbr/></p>
19284 <p>This should correspond to the stall duration when only that stream is
19285 active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode) set to FAST
19286 or OFF.<wbr/> Setting any of the processing modes to HIGH_<wbr/>QUALITY
19287 effectively results in an indeterminate stall duration for all
19288 streams in a request (the regular stall calculation rules are
19289 ignored).<wbr/></p>
19290 <p>The following formats may always have a stall duration:</p>
19292 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></li>
19293 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_SENSOR">ImageFormat#RAW_<wbr/>SENSOR</a></li>
19295 <p>The following formats will never have a stall duration:</p>
19297 <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>
19298 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW10">ImageFormat#RAW10</a></li>
19299 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW12">ImageFormat#RAW12</a></li>
19301 <p>All other formats may or may not have an allowed stall duration on
19302 a per-capability basis; refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>
19303 for more details.<wbr/></p>
19304 <p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> for more information about
19305 calculating the max frame rate (absent stalls).<wbr/></p>
19309 <tr class="entries_header">
19310 <th class="th_details" colspan="6">HAL Implementation Details</th>
19312 <tr class="entry_cont">
19313 <td class="entry_details" colspan="6">
19314 <p>If possible,<wbr/> it is recommended that all non-JPEG formats
19315 (such as RAW16) should not have a stall duration.<wbr/> RAW10,<wbr/> RAW12,<wbr/> RAW_<wbr/>OPAQUE
19316 and IMPLEMENTATION_<wbr/>DEFINED must not have stall durations.<wbr/></p>
19320 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19321 <!-- end of entry -->
19324 <tr class="entry" id="static_android.scaler.streamConfigurationMap">
19325 <td class="entry_name
19327 android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map
19329 <td class="entry_type">
19330 <span class="entry_type_name">int32</span>
19332 <span class="entry_type_visibility"> [java_public as streamConfigurationMap]</span>
19334 <span class="entry_type_synthetic">[synthetic] </span>
19336 <span class="entry_type_hwlevel">[legacy] </span>
19341 </td> <!-- entry_type -->
19343 <td class="entry_description">
19344 <p>The available stream configurations that this
19345 camera device supports; also includes the minimum frame durations
19346 and the stall durations for each format/<wbr/>size combination.<wbr/></p>
19349 <td class="entry_units">
19352 <td class="entry_range">
19355 <td class="entry_hal_version">
19359 <td class="entry_tags">
19363 <tr class="entries_header">
19364 <th class="th_details" colspan="6">Details</th>
19366 <tr class="entry_cont">
19367 <td class="entry_details" colspan="6">
19368 <p>All camera devices will support sensor maximum resolution (defined by
19369 <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>
19370 <p>For a given use case,<wbr/> the actual maximum supported resolution
19371 may be lower than what is listed here,<wbr/> depending on the destination
19372 Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/>
19373 the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p)
19374 smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448)
19375 can provide.<wbr/></p>
19376 <p>Please reference the documentation for the image data destination to
19377 check if it limits the maximum size for image data.<wbr/></p>
19378 <p>The following table describes the minimum required output stream
19379 configurations based on the hardware level
19380 (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>):</p>
19384 <th align="center">Format</th>
19385 <th align="center">Size</th>
19386 <th align="center">Hardware Level</th>
19387 <th align="center">Notes</th>
19392 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
19393 <td align="center"><a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> (*1)</td>
19394 <td align="center">Any</td>
19395 <td align="center"></td>
19398 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
19399 <td align="center">1920x1080 (1080p)</td>
19400 <td align="center">Any</td>
19401 <td align="center">if 1080p <= activeArraySize</td>
19404 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
19405 <td align="center">1280x720 (720p)</td>
19406 <td align="center">Any</td>
19407 <td align="center">if 720p <= activeArraySize</td>
19410 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
19411 <td align="center">640x480 (480p)</td>
19412 <td align="center">Any</td>
19413 <td align="center">if 480p <= activeArraySize</td>
19416 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
19417 <td align="center">320x240 (240p)</td>
19418 <td align="center">Any</td>
19419 <td align="center">if 240p <= activeArraySize</td>
19422 <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>
19423 <td align="center">all output sizes available for JPEG</td>
19424 <td align="center">FULL</td>
19425 <td align="center"></td>
19428 <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>
19429 <td align="center">all output sizes available for JPEG,<wbr/> up to the maximum video size</td>
19430 <td align="center">LIMITED</td>
19431 <td align="center"></td>
19434 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td>
19435 <td align="center">same as YUV_<wbr/>420_<wbr/>888</td>
19436 <td align="center">Any</td>
19437 <td align="center"></td>
19441 <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
19442 stream configurations on a per-capability basis.<wbr/></p>
19443 <p>*1: For JPEG format,<wbr/> the sizes may be restricted by below conditions:</p>
19445 <li>The HAL may choose the aspect ratio of each Jpeg size to be one of well known ones
19446 (e.<wbr/>g.<wbr/> 4:3,<wbr/> 16:9,<wbr/> 3:2 etc.<wbr/>).<wbr/> If the sensor maximum resolution
19447 (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/>
19448 it does not have to be included in the supported JPEG sizes.<wbr/></li>
19449 <li>Some hardware JPEG encoders may have pixel boundary alignment requirements,<wbr/> such as
19450 the dimensions being a multiple of 16.<wbr/>
19451 Therefore,<wbr/> the maximum JPEG size may be smaller than sensor maximum resolution.<wbr/>
19452 However,<wbr/> the largest JPEG size will be as close as possible to the sensor maximum
19453 resolution given above constraints.<wbr/> It is required that after aspect ratio adjustments,<wbr/>
19454 additional size reduction due to other issues must be less than 3% in area.<wbr/> For example,<wbr/>
19455 if the sensor maximum resolution is 3280x2464,<wbr/> if the maximum JPEG size has aspect
19456 ratio 4:3,<wbr/> and the JPEG encoder alignment requirement is 16,<wbr/> the maximum JPEG size will be
19457 3264x2448.<wbr/></li>
19462 <tr class="entries_header">
19463 <th class="th_details" colspan="6">HAL Implementation Details</th>
19465 <tr class="entry_cont">
19466 <td class="entry_details" colspan="6">
19467 <p>Do not set this property directly
19468 (it is synthetic and will not be available at the HAL layer);
19469 set the <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> instead.<wbr/></p>
19470 <p>Not all output formats may be supported in a configuration with
19471 an input stream of a particular format.<wbr/> For more details,<wbr/> see
19472 <a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a>.<wbr/></p>
19473 <p>It is recommended (but not mandatory) to also include half/<wbr/>quarter
19474 of sensor maximum resolution for JPEG formats (regardless of hardware
19476 <p>(The following is a rewording of the above required table):</p>
19477 <p>The HAL must include sensor maximum resolution (defined by
19478 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>).<wbr/></p>
19479 <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/>
19480 the HAL must include all YUV_<wbr/>420_<wbr/>888 sizes that have JPEG sizes listed
19481 here as output streams.<wbr/></p>
19482 <p>It must also include each below resolution if it is smaller than or
19483 equal to the sensor maximum resolution (for both YUV_<wbr/>420_<wbr/>888 and JPEG
19484 formats),<wbr/> as output streams:</p>
19486 <li>240p (320 x 240)</li>
19487 <li>480p (640 x 480)</li>
19488 <li>720p (1280 x 720)</li>
19489 <li>1080p (1920 x 1080)</li>
19491 <p>For LIMITED capability devices
19492 (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == LIMITED</code>),<wbr/>
19493 the HAL only has to list up to the maximum video size
19494 supported by the device.<wbr/></p>
19495 <p>Regardless of hardware level,<wbr/> every output resolution available for
19496 YUV_<wbr/>420_<wbr/>888 must also be available for IMPLEMENTATION_<wbr/>DEFINED.<wbr/></p>
19497 <p>This supercedes the following fields,<wbr/> which are now deprecated:</p>
19499 <li>availableFormats</li>
19500 <li>available[Processed,<wbr/>Raw,<wbr/>Jpeg]Sizes</li>
19505 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19506 <!-- end of entry -->
19509 <tr class="entry" id="static_android.scaler.croppingType">
19510 <td class="entry_name
19512 android.<wbr/>scaler.<wbr/>cropping<wbr/>Type
19514 <td class="entry_type">
19515 <span class="entry_type_name entry_type_name_enum">byte</span>
19517 <span class="entry_type_visibility"> [public]</span>
19520 <span class="entry_type_hwlevel">[legacy] </span>
19524 <ul class="entry_type_enum">
19526 <span class="entry_type_enum_name">CENTER_ONLY (v3.2)</span>
19527 <span class="entry_type_enum_notes"><p>The camera device only supports centered crop regions.<wbr/></p></span>
19530 <span class="entry_type_enum_name">FREEFORM (v3.2)</span>
19531 <span class="entry_type_enum_notes"><p>The camera device supports arbitrarily chosen crop regions.<wbr/></p></span>
19535 </td> <!-- entry_type -->
19537 <td class="entry_description">
19538 <p>The crop type that this camera device supports.<wbr/></p>
19541 <td class="entry_units">
19544 <td class="entry_range">
19547 <td class="entry_hal_version">
19551 <td class="entry_tags">
19555 <tr class="entries_header">
19556 <th class="th_details" colspan="6">Details</th>
19558 <tr class="entry_cont">
19559 <td class="entry_details" colspan="6">
19560 <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
19561 device that only supports CENTER_<wbr/>ONLY cropping,<wbr/> the camera device will move the
19562 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>)
19563 and keep the crop region width and height unchanged.<wbr/> The camera device will return the
19564 final used crop region in metadata result <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></p>
19565 <p>Camera devices that support FREEFORM cropping will support any crop region that
19566 is inside of the active array.<wbr/> The camera device will apply the same crop region and
19567 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>
19568 <p>LEGACY capability devices will only support CENTER_<wbr/>ONLY cropping.<wbr/></p>
19573 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19574 <!-- end of entry -->
19578 <!-- end of kind -->
19580 <tr><td colspan="7" class="kind">dynamic</td></tr>
19582 <thead class="entries_header">
19584 <th class="th_name">Property Name</th>
19585 <th class="th_type">Type</th>
19586 <th class="th_description">Description</th>
19587 <th class="th_units">Units</th>
19588 <th class="th_range">Range</th>
19589 <th class="th_hal_version">Initial HIDL HAL version</th>
19590 <th class="th_tags">Tags</th>
19605 <tr class="entry" id="dynamic_android.scaler.cropRegion">
19606 <td class="entry_name
19608 android.<wbr/>scaler.<wbr/>crop<wbr/>Region
19610 <td class="entry_type">
19611 <span class="entry_type_name">int32</span>
19612 <span class="entry_type_container">x</span>
19614 <span class="entry_type_array">
19617 <span class="entry_type_visibility"> [public as rectangle]</span>
19620 <span class="entry_type_hwlevel">[legacy] </span>
19625 </td> <!-- entry_type -->
19627 <td class="entry_description">
19628 <p>The desired region of the sensor to read out for this capture.<wbr/></p>
19631 <td class="entry_units">
19632 Pixel coordinates relative to
19633 android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
19636 <td class="entry_range">
19639 <td class="entry_hal_version">
19643 <td class="entry_tags">
19644 <ul class="entry_tags">
19645 <li><a href="#tag_BC">BC</a></li>
19650 <tr class="entries_header">
19651 <th class="th_details" colspan="6">Details</th>
19653 <tr class="entry_cont">
19654 <td class="entry_details" colspan="6">
19655 <p>This control can be used to implement digital zoom.<wbr/></p>
19656 <p>The crop region coordinate system is based off
19657 <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
19658 top-left corner of the sensor active array.<wbr/></p>
19659 <p>Output streams use this rectangle to produce their output,<wbr/>
19660 cropping to a smaller region if necessary to maintain the
19661 stream's aspect ratio,<wbr/> then scaling the sensor input to
19662 match the output's configured resolution.<wbr/></p>
19663 <p>The crop region is applied after the RAW to other color
19664 space (e.<wbr/>g.<wbr/> YUV) conversion.<wbr/> Since raw streams
19665 (e.<wbr/>g.<wbr/> RAW16) don't have the conversion stage,<wbr/> they are not
19666 croppable.<wbr/> The crop region will be ignored by raw streams.<wbr/></p>
19667 <p>For non-raw streams,<wbr/> any additional per-stream cropping will
19668 be done to maximize the final pixel area of the stream.<wbr/></p>
19669 <p>For example,<wbr/> if the crop region is set to a 4:3 aspect
19670 ratio,<wbr/> then 4:3 streams will use the exact crop
19671 region.<wbr/> 16:9 streams will further crop vertically
19672 (letterbox).<wbr/></p>
19673 <p>Conversely,<wbr/> if the crop region is set to a 16:9,<wbr/> then 4:3
19674 outputs will crop horizontally (pillarbox),<wbr/> and 16:9
19675 streams will match exactly.<wbr/> These additional crops will
19676 be centered within the crop region.<wbr/></p>
19677 <p>The width and height of the crop region cannot
19678 be set to be smaller than
19679 <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
19680 <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>
19681 <p>The camera device may adjust the crop region to account
19682 for rounding and other hardware requirements; the final
19683 crop region used will be included in the output capture
19688 <tr class="entries_header">
19689 <th class="th_details" colspan="6">HAL Implementation Details</th>
19691 <tr class="entry_cont">
19692 <td class="entry_details" colspan="6">
19693 <p>The output streams must maintain square pixels at all
19694 times,<wbr/> no matter what the relative aspect ratios of the
19695 crop region and the stream are.<wbr/> Negative values for
19696 corner are allowed for raw output if full pixel array is
19697 larger than active pixel array.<wbr/> Width and height may be
19698 rounded to nearest larger supportable width,<wbr/> especially
19699 for raw output,<wbr/> where only a few fixed scales may be
19700 possible.<wbr/></p>
19701 <p>For a set of output streams configured,<wbr/> if the sensor output is cropped to a smaller
19702 size than active array size,<wbr/> the HAL need follow below cropping rules:</p>
19705 <p>The HAL need handle the cropRegion as if the sensor crop size is the effective active
19706 array size.<wbr/>More specifically,<wbr/> the HAL must transform the request cropRegion from
19707 <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>
19709 <li>Translate the requested cropRegion w.<wbr/>r.<wbr/>t.,<wbr/> the left top corner of the sensor
19710 cropped pixel area by (tx,<wbr/> ty),<wbr/>
19711 where <code>tx = sensorCrop.<wbr/>top * (sensorCrop.<wbr/>height /<wbr/> activeArraySize.<wbr/>height)</code>
19712 and <code>tx = sensorCrop.<wbr/>left * (sensorCrop.<wbr/>width /<wbr/> activeArraySize.<wbr/>width)</code>.<wbr/> The
19713 (sensorCrop.<wbr/>top,<wbr/> sensorCrop.<wbr/>left) is the coordinate based off the
19714 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></li>
19715 <li>Scale the width and height of requested cropRegion with scaling factor of
19716 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
19717 respectively.<wbr/>
19718 Once this new cropRegion is calculated,<wbr/> the HAL must use this region to crop the image
19719 with regard to the sensor crop size (effective active array size).<wbr/> The HAL still need
19720 follow the general cropping rule for this new cropRegion and effective active
19721 array size.<wbr/></li>
19725 <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/>
19726 The HAL need convert the new cropRegion generated above w.<wbr/>r.<wbr/>t.,<wbr/> full active array size.<wbr/>
19727 The reported cropRegion may be slightly different with the requested cropRegion since
19728 the HAL may adjust the crop region to account for rounding,<wbr/> conversion error,<wbr/> or other
19729 hardware limitations.<wbr/></p>
19732 <p>HAL2.<wbr/>x uses only (x,<wbr/> y,<wbr/> width)</p>
19736 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19737 <!-- end of entry -->
19741 <!-- end of kind -->
19744 <!-- end of section -->
19745 <tr><td colspan="7" id="section_sensor" class="section">sensor</td></tr>
19748 <tr><td colspan="7" class="kind">controls</td></tr>
19750 <thead class="entries_header">
19752 <th class="th_name">Property Name</th>
19753 <th class="th_type">Type</th>
19754 <th class="th_description">Description</th>
19755 <th class="th_units">Units</th>
19756 <th class="th_range">Range</th>
19757 <th class="th_hal_version">Initial HIDL HAL version</th>
19758 <th class="th_tags">Tags</th>
19773 <tr class="entry" id="controls_android.sensor.exposureTime">
19774 <td class="entry_name
19776 android.<wbr/>sensor.<wbr/>exposure<wbr/>Time
19778 <td class="entry_type">
19779 <span class="entry_type_name">int64</span>
19781 <span class="entry_type_visibility"> [public]</span>
19784 <span class="entry_type_hwlevel">[full] </span>
19789 </td> <!-- entry_type -->
19791 <td class="entry_description">
19792 <p>Duration each pixel is exposed to
19796 <td class="entry_units">
19800 <td class="entry_range">
19801 <p><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></p>
19804 <td class="entry_hal_version">
19808 <td class="entry_tags">
19809 <ul class="entry_tags">
19810 <li><a href="#tag_V1">V1</a></li>
19815 <tr class="entries_header">
19816 <th class="th_details" colspan="6">Details</th>
19818 <tr class="entry_cont">
19819 <td class="entry_details" colspan="6">
19820 <p>If the sensor can't expose this exact duration,<wbr/> it will shorten the
19821 duration exposed to the nearest possible value (rather than expose longer).<wbr/>
19822 The final exposure time used will be available in the output capture result.<wbr/></p>
19823 <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
19824 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
19829 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19830 <!-- end of entry -->
19833 <tr class="entry" id="controls_android.sensor.frameDuration">
19834 <td class="entry_name
19836 android.<wbr/>sensor.<wbr/>frame<wbr/>Duration
19838 <td class="entry_type">
19839 <span class="entry_type_name">int64</span>
19841 <span class="entry_type_visibility"> [public]</span>
19844 <span class="entry_type_hwlevel">[full] </span>
19849 </td> <!-- entry_type -->
19851 <td class="entry_description">
19852 <p>Duration from start of frame exposure to
19853 start of next frame exposure.<wbr/></p>
19856 <td class="entry_units">
19860 <td class="entry_range">
19861 <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/>
19862 The duration is capped to <code>max(duration,<wbr/> exposureTime + overhead)</code>.<wbr/></p>
19865 <td class="entry_hal_version">
19869 <td class="entry_tags">
19870 <ul class="entry_tags">
19871 <li><a href="#tag_V1">V1</a></li>
19876 <tr class="entries_header">
19877 <th class="th_details" colspan="6">Details</th>
19879 <tr class="entry_cont">
19880 <td class="entry_details" colspan="6">
19881 <p>The maximum frame rate that can be supported by a camera subsystem is
19882 a function of many factors:</p>
19884 <li>Requested resolutions of output image streams</li>
19885 <li>Availability of binning /<wbr/> skipping modes on the imager</li>
19886 <li>The bandwidth of the imager interface</li>
19887 <li>The bandwidth of the various ISP processing blocks</li>
19889 <p>Since these factors can vary greatly between different ISPs and
19890 sensors,<wbr/> the camera abstraction tries to represent the bandwidth
19891 restrictions with as simple a model as possible.<wbr/></p>
19892 <p>The model presented has the following characteristics:</p>
19894 <li>The image sensor is always configured to output the smallest
19895 resolution possible given the application's requested output stream
19896 sizes.<wbr/> The smallest resolution is defined as being at least as large
19897 as the largest requested output stream size; the camera pipeline must
19898 never digitally upsample sensor data when the crop region covers the
19899 whole sensor.<wbr/> In general,<wbr/> this means that if only small output stream
19900 resolutions are configured,<wbr/> the sensor can provide a higher frame
19902 <li>Since any request may use any or all the currently configured
19903 output streams,<wbr/> the sensor and ISP must be configured to support
19904 scaling a single capture to all the streams at the same time.<wbr/> This
19905 means the camera pipeline must be ready to produce the largest
19906 requested output size without any delay.<wbr/> Therefore,<wbr/> the overall
19907 frame rate of a given configured stream set is governed only by the
19908 largest requested stream resolution.<wbr/></li>
19909 <li>Using more than one output stream in a request does not affect the
19910 frame duration.<wbr/></li>
19911 <li>Certain format-streams may need to do additional background processing
19912 before data is consumed/<wbr/>produced by that stream.<wbr/> These processors
19913 can run concurrently to the rest of the camera pipeline,<wbr/> but
19914 cannot process more than 1 capture at a time.<wbr/></li>
19916 <p>The necessary information for the application,<wbr/> given the model above,<wbr/> is provided via
19917 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/>
19918 These are used to determine the maximum frame rate /<wbr/> minimum frame duration that is
19919 possible for a given stream configuration.<wbr/></p>
19920 <p>Specifically,<wbr/> the application can use the following rules to
19921 determine the minimum frame duration it can request from the camera
19924 <li>Let the set of currently configured input/<wbr/>output streams be called <code>S</code>.<wbr/></li>
19925 <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>
19926 (with its respective size/<wbr/>format).<wbr/> Let this set of frame durations be called <code>F</code>.<wbr/></li>
19927 <li>For any given request <code>R</code>,<wbr/> the minimum frame duration allowed for <code>R</code> is the maximum
19928 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>
19930 <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>
19931 using its respective size/<wbr/>format),<wbr/> then the frame duration in <code>F</code> determines the steady
19932 state frame rate that the application will get if it uses <code>R</code> as a repeating request.<wbr/> Let
19933 this special kind of request be called <code>Rsimple</code>.<wbr/></p>
19934 <p>A repeating request <code>Rsimple</code> can be <em>occasionally</em> interleaved by a single capture of a
19935 new request <code>Rstall</code> (which has at least one in-use stream with a non-0 stall time) and if
19936 <code>Rstall</code> has the same minimum frame duration this will not cause a frame rate loss if all
19937 buffers from the previous <code>Rstall</code> have already been delivered.<wbr/></p>
19938 <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>
19939 <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
19940 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
19944 <tr class="entries_header">
19945 <th class="th_details" colspan="6">HAL Implementation Details</th>
19947 <tr class="entry_cont">
19948 <td class="entry_details" colspan="6">
19949 <p>For more details about stalling,<wbr/> see
19950 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>.<wbr/></p>
19954 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19955 <!-- end of entry -->
19958 <tr class="entry" id="controls_android.sensor.sensitivity">
19959 <td class="entry_name
19961 android.<wbr/>sensor.<wbr/>sensitivity
19963 <td class="entry_type">
19964 <span class="entry_type_name">int32</span>
19966 <span class="entry_type_visibility"> [public]</span>
19969 <span class="entry_type_hwlevel">[full] </span>
19974 </td> <!-- entry_type -->
19976 <td class="entry_description">
19977 <p>The amount of gain applied to sensor data
19978 before processing.<wbr/></p>
19981 <td class="entry_units">
19982 ISO arithmetic units
19985 <td class="entry_range">
19986 <p><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></p>
19989 <td class="entry_hal_version">
19993 <td class="entry_tags">
19994 <ul class="entry_tags">
19995 <li><a href="#tag_V1">V1</a></li>
20000 <tr class="entries_header">
20001 <th class="th_details" colspan="6">Details</th>
20003 <tr class="entry_cont">
20004 <td class="entry_details" colspan="6">
20005 <p>The sensitivity is the standard ISO sensitivity value,<wbr/>
20006 as defined in ISO 12232:2006.<wbr/></p>
20007 <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
20008 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
20009 is guaranteed to use only analog amplification for applying the gain.<wbr/></p>
20010 <p>If the camera device cannot apply the exact sensitivity
20011 requested,<wbr/> it will reduce the gain to the nearest supported
20012 value.<wbr/> The final sensitivity used will be available in the
20013 output capture result.<wbr/></p>
20014 <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
20015 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
20019 <tr class="entries_header">
20020 <th class="th_details" colspan="6">HAL Implementation Details</th>
20022 <tr class="entry_cont">
20023 <td class="entry_details" colspan="6">
20024 <p>ISO 12232:2006 REI method is acceptable.<wbr/></p>
20028 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20029 <!-- end of entry -->
20032 <tr class="entry" id="controls_android.sensor.testPatternData">
20033 <td class="entry_name
20035 android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data
20037 <td class="entry_type">
20038 <span class="entry_type_name">int32</span>
20039 <span class="entry_type_container">x</span>
20041 <span class="entry_type_array">
20044 <span class="entry_type_visibility"> [public]</span>
20051 </td> <!-- entry_type -->
20053 <td class="entry_description">
20054 <p>A pixel <code>[R,<wbr/> G_<wbr/>even,<wbr/> G_<wbr/>odd,<wbr/> B]</code> that supplies the test pattern
20055 when <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a> is SOLID_<wbr/>COLOR.<wbr/></p>
20058 <td class="entry_units">
20061 <td class="entry_range">
20064 <td class="entry_hal_version">
20068 <td class="entry_tags">
20072 <tr class="entries_header">
20073 <th class="th_details" colspan="6">Details</th>
20075 <tr class="entry_cont">
20076 <td class="entry_details" colspan="6">
20077 <p>Each color channel is treated as an unsigned 32-bit integer.<wbr/>
20078 The camera device then uses the most significant X bits
20079 that correspond to how many bits are in its Bayer raw sensor
20081 <p>For example,<wbr/> a sensor with RAW10 Bayer output would use the
20082 10 most significant bits from each color channel.<wbr/></p>
20086 <tr class="entries_header">
20087 <th class="th_details" colspan="6">HAL Implementation Details</th>
20089 <tr class="entry_cont">
20090 <td class="entry_details" colspan="6">
20095 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20096 <!-- end of entry -->
20099 <tr class="entry" id="controls_android.sensor.testPatternMode">
20100 <td class="entry_name
20102 android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode
20104 <td class="entry_type">
20105 <span class="entry_type_name entry_type_name_enum">int32</span>
20107 <span class="entry_type_visibility"> [public]</span>
20113 <ul class="entry_type_enum">
20115 <span class="entry_type_enum_name">OFF (v3.2)</span>
20116 <span class="entry_type_enum_notes"><p>No test pattern mode is used,<wbr/> and the camera
20117 device returns captures from the image sensor.<wbr/></p>
20118 <p>This is the default if the key is not set.<wbr/></p></span>
20121 <span class="entry_type_enum_name">SOLID_COLOR (v3.2)</span>
20122 <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
20123 respective color channel provided in
20124 <a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a>.<wbr/></p>
20125 <p>For example:</p>
20126 <pre><code>android.<wbr/>testPatternData = [0,<wbr/> 0xFFFFFFFF,<wbr/> 0xFFFFFFFF,<wbr/> 0]
20128 <p>All green pixels are 100% green.<wbr/> All red/<wbr/>blue pixels are black.<wbr/></p>
20129 <pre><code>android.<wbr/>testPatternData = [0xFFFFFFFF,<wbr/> 0,<wbr/> 0xFFFFFFFF,<wbr/> 0]
20131 <p>All red pixels are 100% red.<wbr/> Only the odd green pixels
20132 are 100% green.<wbr/> All blue pixels are 100% black.<wbr/></p></span>
20135 <span class="entry_type_enum_name">COLOR_BARS (v3.2)</span>
20136 <span class="entry_type_enum_notes"><p>All pixel data is replaced with an 8-bar color pattern.<wbr/></p>
20137 <p>The vertical bars (left-to-right) are as follows:</p>
20139 <li>100% white</li>
20148 <p>In general the image would look like the following:</p>
20149 <pre><code>W Y C G M R B K
20154 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
20155 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
20156 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
20158 (B = Blue,<wbr/> K = Black)
20160 <p>Each bar should take up 1/<wbr/>8 of the sensor pixel array width.<wbr/>
20161 When this is not possible,<wbr/> the bar size should be rounded
20162 down to the nearest integer and the pattern can repeat
20163 on the right side.<wbr/></p>
20164 <p>Each bar's height must always take up the full sensor
20165 pixel array height.<wbr/></p>
20166 <p>Each pixel in this test pattern must be set to either
20167 0% intensity or 100% intensity.<wbr/></p></span>
20170 <span class="entry_type_enum_name">COLOR_BARS_FADE_TO_GRAY (v3.2)</span>
20171 <span class="entry_type_enum_notes"><p>The test pattern is similar to COLOR_<wbr/>BARS,<wbr/> except that
20172 each bar should start at its specified color at the top,<wbr/>
20173 and fade to gray at the bottom.<wbr/></p>
20174 <p>Furthermore each bar is further subdivided into a left and
20175 right half.<wbr/> The left half should have a smooth gradient,<wbr/>
20176 and the right half should have a quantized gradient.<wbr/></p>
20177 <p>In particular,<wbr/> the right half's should consist of blocks of the
20178 same color for 1/<wbr/>16th active sensor pixel array width.<wbr/></p>
20179 <p>The least significant bits in the quantized gradient should
20180 be copied from the most significant bits of the smooth gradient.<wbr/></p>
20181 <p>The height of each bar should always be a multiple of 128.<wbr/>
20182 When this is not the case,<wbr/> the pattern should repeat at the bottom
20183 of the image.<wbr/></p></span>
20186 <span class="entry_type_enum_name">PN9 (v3.2)</span>
20187 <span class="entry_type_enum_notes"><p>All pixel data is replaced by a pseudo-random sequence
20188 generated from a PN9 512-bit sequence (typically implemented
20189 in hardware with a linear feedback shift register).<wbr/></p>
20190 <p>The generator should be reset at the beginning of each frame,<wbr/>
20191 and thus each subsequent raw frame with this test pattern should
20192 be exactly the same as the last.<wbr/></p></span>
20195 <span class="entry_type_enum_name">CUSTOM1 (v3.2)</span>
20196 <span class="entry_type_enum_value">256</span>
20197 <span class="entry_type_enum_notes"><p>The first custom test pattern.<wbr/> All custom patterns that are
20198 available only on this camera device are at least this numeric
20200 <p>All of the custom test patterns will be static
20201 (that is the raw image must not vary from frame to frame).<wbr/></p></span>
20205 </td> <!-- entry_type -->
20207 <td class="entry_description">
20208 <p>When enabled,<wbr/> the sensor sends a test pattern instead of
20209 doing a real exposure from the camera.<wbr/></p>
20212 <td class="entry_units">
20215 <td class="entry_range">
20216 <p><a href="#static_android.sensor.availableTestPatternModes">android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes</a></p>
20219 <td class="entry_hal_version">
20223 <td class="entry_tags">
20227 <tr class="entries_header">
20228 <th class="th_details" colspan="6">Details</th>
20230 <tr class="entry_cont">
20231 <td class="entry_details" colspan="6">
20232 <p>When a test pattern is enabled,<wbr/> all manual sensor controls specified
20233 by android.<wbr/>sensor.<wbr/>* will be ignored.<wbr/> All other controls should
20234 work as normal.<wbr/></p>
20235 <p>For example,<wbr/> if manual flash is enabled,<wbr/> flash firing should still
20236 occur (and that the test pattern remain unmodified,<wbr/> since the flash
20237 would not actually affect it).<wbr/></p>
20238 <p>Defaults to OFF.<wbr/></p>
20242 <tr class="entries_header">
20243 <th class="th_details" colspan="6">HAL Implementation Details</th>
20245 <tr class="entry_cont">
20246 <td class="entry_details" colspan="6">
20247 <p>All test patterns are specified in the Bayer domain.<wbr/></p>
20248 <p>The HAL may choose to substitute test patterns from the sensor
20249 with test patterns from on-device memory.<wbr/> In that case,<wbr/> it should be
20250 indistinguishable to the ISP whether the data came from the
20251 sensor interconnect bus (such as CSI2) or memory.<wbr/></p>
20255 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20256 <!-- end of entry -->
20260 <!-- end of kind -->
20262 <tr><td colspan="7" class="kind">static</td></tr>
20264 <thead class="entries_header">
20266 <th class="th_name">Property Name</th>
20267 <th class="th_type">Type</th>
20268 <th class="th_description">Description</th>
20269 <th class="th_units">Units</th>
20270 <th class="th_range">Range</th>
20271 <th class="th_hal_version">Initial HIDL HAL version</th>
20272 <th class="th_tags">Tags</th>
20289 <tr class="entry" id="static_android.sensor.info.activeArraySize">
20290 <td class="entry_name
20292 android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
20294 <td class="entry_type">
20295 <span class="entry_type_name">int32</span>
20296 <span class="entry_type_container">x</span>
20298 <span class="entry_type_array">
20301 <span class="entry_type_visibility"> [public as rectangle]</span>
20304 <span class="entry_type_hwlevel">[legacy] </span>
20307 <div class="entry_type_notes">Four ints defining the active pixel rectangle</div>
20310 </td> <!-- entry_type -->
20312 <td class="entry_description">
20313 <p>The area of the image sensor which corresponds to active pixels after any geometric
20314 distortion correction has been applied.<wbr/></p>
20317 <td class="entry_units">
20318 Pixel coordinates on the image sensor
20321 <td class="entry_range">
20324 <td class="entry_hal_version">
20328 <td class="entry_tags">
20329 <ul class="entry_tags">
20330 <li><a href="#tag_RAW">RAW</a></li>
20335 <tr class="entries_header">
20336 <th class="th_details" colspan="6">Details</th>
20338 <tr class="entry_cont">
20339 <td class="entry_details" colspan="6">
20340 <p>This is the rectangle representing the size of the active region of the sensor (i.<wbr/>e.<wbr/>
20341 the region that actually receives light from the scene) after any geometric correction
20342 has been applied,<wbr/> and should be treated as the maximum size in pixels of any of the
20343 image output formats aside from the raw formats.<wbr/></p>
20344 <p>This rectangle is defined relative to the full pixel array; (0,<wbr/>0) is the top-left of
20345 the full pixel array,<wbr/> and the size of the full pixel array is given by
20346 <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
20347 <p>The coordinate system for most other keys that list pixel coordinates,<wbr/> including
20348 <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
20349 this field,<wbr/> with <code>(0,<wbr/> 0)</code> being the top-left of this rectangle.<wbr/></p>
20350 <p>The active array may be smaller than the full pixel array,<wbr/> since the full array may
20351 include black calibration pixels or other inactive regions,<wbr/> and geometric correction
20352 resulting in scaling or cropping may have been applied.<wbr/></p>
20356 <tr class="entries_header">
20357 <th class="th_details" colspan="6">HAL Implementation Details</th>
20359 <tr class="entry_cont">
20360 <td class="entry_details" colspan="6">
20361 <p>This array contains <code>(xmin,<wbr/> ymin,<wbr/> width,<wbr/> height)</code>.<wbr/> The <code>(xmin,<wbr/> ymin)</code> must be
20362 >= <code>(0,<wbr/>0)</code>.<wbr/>
20363 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>
20367 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20368 <!-- end of entry -->
20371 <tr class="entry" id="static_android.sensor.info.sensitivityRange">
20372 <td class="entry_name
20374 android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range
20376 <td class="entry_type">
20377 <span class="entry_type_name">int32</span>
20378 <span class="entry_type_container">x</span>
20380 <span class="entry_type_array">
20383 <span class="entry_type_visibility"> [public as rangeInt]</span>
20386 <span class="entry_type_hwlevel">[full] </span>
20389 <div class="entry_type_notes">Range of supported sensitivities</div>
20392 </td> <!-- entry_type -->
20394 <td class="entry_description">
20395 <p>Range of sensitivities for <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> supported by this
20396 camera device.<wbr/></p>
20399 <td class="entry_units">
20402 <td class="entry_range">
20403 <p>Min <= 100,<wbr/> Max >= 800</p>
20406 <td class="entry_hal_version">
20410 <td class="entry_tags">
20411 <ul class="entry_tags">
20412 <li><a href="#tag_BC">BC</a></li>
20413 <li><a href="#tag_V1">V1</a></li>
20418 <tr class="entries_header">
20419 <th class="th_details" colspan="6">Details</th>
20421 <tr class="entry_cont">
20422 <td class="entry_details" colspan="6">
20423 <p>The values are the standard ISO sensitivity values,<wbr/>
20424 as defined in ISO 12232:2006.<wbr/></p>
20429 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20430 <!-- end of entry -->
20433 <tr class="entry" id="static_android.sensor.info.colorFilterArrangement">
20434 <td class="entry_name
20436 android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement
20438 <td class="entry_type">
20439 <span class="entry_type_name entry_type_name_enum">byte</span>
20441 <span class="entry_type_visibility"> [public]</span>
20444 <span class="entry_type_hwlevel">[full] </span>
20448 <ul class="entry_type_enum">
20450 <span class="entry_type_enum_name">RGGB (v3.2)</span>
20453 <span class="entry_type_enum_name">GRBG (v3.2)</span>
20456 <span class="entry_type_enum_name">GBRG (v3.2)</span>
20459 <span class="entry_type_enum_name">BGGR (v3.2)</span>
20462 <span class="entry_type_enum_name">RGB (v3.2)</span>
20463 <span class="entry_type_enum_notes"><p>Sensor is not Bayer; output has 3 16-bit
20464 values for each pixel,<wbr/> instead of just 1 16-bit value
20465 per pixel.<wbr/></p></span>
20469 </td> <!-- entry_type -->
20471 <td class="entry_description">
20472 <p>The arrangement of color filters on sensor;
20473 represents the colors in the top-left 2x2 section of
20474 the sensor,<wbr/> in reading order.<wbr/></p>
20477 <td class="entry_units">
20480 <td class="entry_range">
20483 <td class="entry_hal_version">
20487 <td class="entry_tags">
20488 <ul class="entry_tags">
20489 <li><a href="#tag_RAW">RAW</a></li>
20496 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20497 <!-- end of entry -->
20500 <tr class="entry" id="static_android.sensor.info.exposureTimeRange">
20501 <td class="entry_name
20503 android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range
20505 <td class="entry_type">
20506 <span class="entry_type_name">int64</span>
20507 <span class="entry_type_container">x</span>
20509 <span class="entry_type_array">
20512 <span class="entry_type_visibility"> [public as rangeLong]</span>
20515 <span class="entry_type_hwlevel">[full] </span>
20518 <div class="entry_type_notes">nanoseconds</div>
20521 </td> <!-- entry_type -->
20523 <td class="entry_description">
20524 <p>The range of image exposure times for <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> supported
20525 by this camera device.<wbr/></p>
20528 <td class="entry_units">
20532 <td class="entry_range">
20533 <p>The minimum exposure time will be less than 100 us.<wbr/> For FULL
20534 capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/>
20535 the maximum exposure time will be greater than 100ms.<wbr/></p>
20538 <td class="entry_hal_version">
20542 <td class="entry_tags">
20543 <ul class="entry_tags">
20544 <li><a href="#tag_V1">V1</a></li>
20550 <tr class="entries_header">
20551 <th class="th_details" colspan="6">HAL Implementation Details</th>
20553 <tr class="entry_cont">
20554 <td class="entry_details" colspan="6">
20555 <p>For FULL capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/>
20556 The maximum of the range SHOULD be at least 1 second (1e9),<wbr/> MUST be at least
20561 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20562 <!-- end of entry -->
20565 <tr class="entry" id="static_android.sensor.info.maxFrameDuration">
20566 <td class="entry_name
20568 android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration
20570 <td class="entry_type">
20571 <span class="entry_type_name">int64</span>
20573 <span class="entry_type_visibility"> [public]</span>
20576 <span class="entry_type_hwlevel">[full] </span>
20581 </td> <!-- entry_type -->
20583 <td class="entry_description">
20584 <p>The maximum possible frame duration (minimum frame rate) for
20585 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> that is supported this camera device.<wbr/></p>
20588 <td class="entry_units">
20592 <td class="entry_range">
20593 <p>For FULL capability devices
20594 (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/> at least 100ms.<wbr/></p>
20597 <td class="entry_hal_version">
20601 <td class="entry_tags">
20602 <ul class="entry_tags">
20603 <li><a href="#tag_V1">V1</a></li>
20608 <tr class="entries_header">
20609 <th class="th_details" colspan="6">Details</th>
20611 <tr class="entry_cont">
20612 <td class="entry_details" colspan="6">
20613 <p>Attempting to use frame durations beyond the maximum will result in the frame
20614 duration being clipped to the maximum.<wbr/> See that control for a full definition of frame
20615 durations.<wbr/></p>
20616 <p>Refer to <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>
20617 for the minimum frame duration values.<wbr/></p>
20621 <tr class="entries_header">
20622 <th class="th_details" colspan="6">HAL Implementation Details</th>
20624 <tr class="entry_cont">
20625 <td class="entry_details" colspan="6">
20626 <p>For FULL capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/>
20627 The maximum of the range SHOULD be at least
20628 1 second (1e9),<wbr/> MUST be at least 100ms (100e6).<wbr/></p>
20629 <p><a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a> must be greater or
20630 equal to the <a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a> max
20631 value (since exposure time overrides frame duration).<wbr/></p>
20632 <p>Available minimum frame durations for JPEG must be no greater
20633 than that of the YUV_<wbr/>420_<wbr/>888/<wbr/>IMPLEMENTATION_<wbr/>DEFINED
20634 minimum frame durations (for that respective size).<wbr/></p>
20635 <p>Since JPEG processing is considered offline and can take longer than
20636 a single uncompressed capture,<wbr/> refer to
20637 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>
20638 for details about encoding this scenario.<wbr/></p>
20642 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20643 <!-- end of entry -->
20646 <tr class="entry" id="static_android.sensor.info.physicalSize">
20647 <td class="entry_name
20649 android.<wbr/>sensor.<wbr/>info.<wbr/>physical<wbr/>Size
20651 <td class="entry_type">
20652 <span class="entry_type_name">float</span>
20653 <span class="entry_type_container">x</span>
20655 <span class="entry_type_array">
20658 <span class="entry_type_visibility"> [public as sizeF]</span>
20661 <span class="entry_type_hwlevel">[legacy] </span>
20664 <div class="entry_type_notes">width x height</div>
20667 </td> <!-- entry_type -->
20669 <td class="entry_description">
20670 <p>The physical dimensions of the full pixel
20674 <td class="entry_units">
20678 <td class="entry_range">
20681 <td class="entry_hal_version">
20685 <td class="entry_tags">
20686 <ul class="entry_tags">
20687 <li><a href="#tag_V1">V1</a></li>
20688 <li><a href="#tag_BC">BC</a></li>
20693 <tr class="entries_header">
20694 <th class="th_details" colspan="6">Details</th>
20696 <tr class="entry_cont">
20697 <td class="entry_details" colspan="6">
20698 <p>This is the physical size of the sensor pixel
20699 array defined by <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
20703 <tr class="entries_header">
20704 <th class="th_details" colspan="6">HAL Implementation Details</th>
20706 <tr class="entry_cont">
20707 <td class="entry_details" colspan="6">
20708 <p>Needed for FOV calculation for old API</p>
20712 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20713 <!-- end of entry -->
20716 <tr class="entry" id="static_android.sensor.info.pixelArraySize">
20717 <td class="entry_name
20719 android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size
20721 <td class="entry_type">
20722 <span class="entry_type_name">int32</span>
20723 <span class="entry_type_container">x</span>
20725 <span class="entry_type_array">
20728 <span class="entry_type_visibility"> [public as size]</span>
20731 <span class="entry_type_hwlevel">[legacy] </span>
20736 </td> <!-- entry_type -->
20738 <td class="entry_description">
20739 <p>Dimensions of the full pixel array,<wbr/> possibly
20740 including black calibration pixels.<wbr/></p>
20743 <td class="entry_units">
20747 <td class="entry_range">
20750 <td class="entry_hal_version">
20754 <td class="entry_tags">
20755 <ul class="entry_tags">
20756 <li><a href="#tag_RAW">RAW</a></li>
20757 <li><a href="#tag_BC">BC</a></li>
20762 <tr class="entries_header">
20763 <th class="th_details" colspan="6">Details</th>
20765 <tr class="entry_cont">
20766 <td class="entry_details" colspan="6">
20767 <p>The pixel count of the full pixel array of the image sensor,<wbr/> which covers
20768 <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
20769 the raw buffers produced by this sensor.<wbr/></p>
20770 <p>If a camera device supports raw sensor formats,<wbr/> either this or
20771 <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
20772 output formats listed in <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html">StreamConfigurationMap</a>
20773 (this depends on whether or not the image sensor returns buffers containing pixels that
20774 are not part of the active array region for blacklevel calibration or other purposes).<wbr/></p>
20775 <p>Some parts of the full pixel array may not receive light from the scene,<wbr/>
20776 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
20777 defines the rectangle of active pixels that will be included in processed image
20783 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20784 <!-- end of entry -->
20787 <tr class="entry" id="static_android.sensor.info.whiteLevel">
20788 <td class="entry_name
20790 android.<wbr/>sensor.<wbr/>info.<wbr/>white<wbr/>Level
20792 <td class="entry_type">
20793 <span class="entry_type_name">int32</span>
20795 <span class="entry_type_visibility"> [public]</span>
20802 </td> <!-- entry_type -->
20804 <td class="entry_description">
20805 <p>Maximum raw value output by sensor.<wbr/></p>
20808 <td class="entry_units">
20811 <td class="entry_range">
20812 <p>> 255 (8-bit output)</p>
20815 <td class="entry_hal_version">
20819 <td class="entry_tags">
20820 <ul class="entry_tags">
20821 <li><a href="#tag_RAW">RAW</a></li>
20826 <tr class="entries_header">
20827 <th class="th_details" colspan="6">Details</th>
20829 <tr class="entry_cont">
20830 <td class="entry_details" colspan="6">
20831 <p>This specifies the fully-saturated encoding level for the raw
20832 sample values from the sensor.<wbr/> This is typically caused by the
20833 sensor becoming highly non-linear or clipping.<wbr/> The minimum for
20834 each channel is specified by the offset in the
20835 <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> key.<wbr/></p>
20836 <p>The white level is typically determined either by sensor bit depth
20837 (8-14 bits is expected),<wbr/> or by the point where the sensor response
20838 becomes too non-linear to be useful.<wbr/> The default value for this is
20839 maximum representable value for a 16-bit raw sample (2^16 - 1).<wbr/></p>
20840 <p>The white level values of captured images may vary for different
20841 capture settings (e.<wbr/>g.,<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>).<wbr/> This key
20842 represents a coarse approximation for such case.<wbr/> It is recommended
20843 to use <a href="#dynamic_android.sensor.dynamicWhiteLevel">android.<wbr/>sensor.<wbr/>dynamic<wbr/>White<wbr/>Level</a> for captures when supported
20844 by the camera device,<wbr/> which provides more accurate white level values.<wbr/></p>
20848 <tr class="entries_header">
20849 <th class="th_details" colspan="6">HAL Implementation Details</th>
20851 <tr class="entry_cont">
20852 <td class="entry_details" colspan="6">
20853 <p>The full bit depth of the sensor must be available in the raw data,<wbr/>
20854 so the value for linear sensors should not be significantly lower
20855 than maximum raw value supported,<wbr/> i.<wbr/>e.<wbr/> 2^(sensor bits per pixel).<wbr/></p>
20859 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20860 <!-- end of entry -->
20863 <tr class="entry" id="static_android.sensor.info.timestampSource">
20864 <td class="entry_name
20866 android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source
20868 <td class="entry_type">
20869 <span class="entry_type_name entry_type_name_enum">byte</span>
20871 <span class="entry_type_visibility"> [public]</span>
20874 <span class="entry_type_hwlevel">[legacy] </span>
20878 <ul class="entry_type_enum">
20880 <span class="entry_type_enum_name">UNKNOWN (v3.2)</span>
20881 <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/>
20882 but can not be compared to timestamps from other subsystems
20883 (e.<wbr/>g.<wbr/> accelerometer,<wbr/> gyro etc.<wbr/>),<wbr/> or other instances of the same or different
20884 camera devices in the same system.<wbr/> Timestamps between streams and results for
20885 a single camera instance are comparable,<wbr/> and the timestamps for all buffers
20886 and the result metadata generated by a single capture are identical.<wbr/></p></span>
20889 <span class="entry_type_enum_name">REALTIME (v3.2)</span>
20890 <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
20891 <a href="https://developer.android.com/reference/android/os/SystemClock.html#elapsedRealtimeNanos">SystemClock#elapsedRealtimeNanos</a>,<wbr/>
20892 and they can be compared to other timestamps using that base.<wbr/></p></span>
20896 </td> <!-- entry_type -->
20898 <td class="entry_description">
20899 <p>The time base source for sensor capture start timestamps.<wbr/></p>
20902 <td class="entry_units">
20905 <td class="entry_range">
20908 <td class="entry_hal_version">
20912 <td class="entry_tags">
20913 <ul class="entry_tags">
20914 <li><a href="#tag_V1">V1</a></li>
20919 <tr class="entries_header">
20920 <th class="th_details" colspan="6">Details</th>
20922 <tr class="entry_cont">
20923 <td class="entry_details" colspan="6">
20924 <p>The timestamps provided for captures are always in nanoseconds and monotonic,<wbr/> but
20925 may not based on a time source that can be compared to other system time sources.<wbr/></p>
20926 <p>This characteristic defines the source for the timestamps,<wbr/> and therefore whether they
20927 can be compared against other system time sources/<wbr/>timestamps.<wbr/></p>
20931 <tr class="entries_header">
20932 <th class="th_details" colspan="6">HAL Implementation Details</th>
20934 <tr class="entry_cont">
20935 <td class="entry_details" colspan="6">
20936 <p>For camera devices implement UNKNOWN,<wbr/> the camera framework expects that the timestamp
20937 source to be SYSTEM_<wbr/>TIME_<wbr/>MONOTONIC.<wbr/> For camera devices implement REALTIME,<wbr/> the camera
20938 framework expects that the timestamp source to be SYSTEM_<wbr/>TIME_<wbr/>BOOTTIME.<wbr/> See
20939 system/<wbr/>core/<wbr/>include/<wbr/>utils/<wbr/>Timers.<wbr/>h for the definition of SYSTEM_<wbr/>TIME_<wbr/>MONOTONIC and
20940 SYSTEM_<wbr/>TIME_<wbr/>BOOTTIME.<wbr/> Note that HAL must follow above expectation; otherwise video
20941 recording might suffer unexpected behavior.<wbr/></p>
20942 <p>Also,<wbr/> camera devices which implement REALTIME must pass the ITS sensor fusion test which
20943 tests the alignment between camera timestamps and gyro sensor timestamps.<wbr/></p>
20947 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20948 <!-- end of entry -->
20951 <tr class="entry" id="static_android.sensor.info.lensShadingApplied">
20952 <td class="entry_name
20954 android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied
20956 <td class="entry_type">
20957 <span class="entry_type_name entry_type_name_enum">byte</span>
20959 <span class="entry_type_visibility"> [public as boolean]</span>
20965 <ul class="entry_type_enum">
20967 <span class="entry_type_enum_name">FALSE (v3.2)</span>
20970 <span class="entry_type_enum_name">TRUE (v3.2)</span>
20974 </td> <!-- entry_type -->
20976 <td class="entry_description">
20977 <p>Whether the RAW images output from this camera device are subject to
20978 lens shading correction.<wbr/></p>
20981 <td class="entry_units">
20984 <td class="entry_range">
20987 <td class="entry_hal_version">
20991 <td class="entry_tags">
20995 <tr class="entries_header">
20996 <th class="th_details" colspan="6">Details</th>
20998 <tr class="entry_cont">
20999 <td class="entry_details" colspan="6">
21000 <p>If TRUE,<wbr/> all images produced by the camera device in the RAW image formats will
21001 have lens shading correction already applied to it.<wbr/> If FALSE,<wbr/> the images will
21002 not be adjusted for lens shading correction.<wbr/>
21003 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>
21004 <p>This key will be <code>null</code> for all devices do not report this information.<wbr/>
21005 Devices with RAW capability will always report this information in this key.<wbr/></p>
21010 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21011 <!-- end of entry -->
21014 <tr class="entry" id="static_android.sensor.info.preCorrectionActiveArraySize">
21015 <td class="entry_name
21017 android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size
21019 <td class="entry_type">
21020 <span class="entry_type_name">int32</span>
21021 <span class="entry_type_container">x</span>
21023 <span class="entry_type_array">
21026 <span class="entry_type_visibility"> [public as rectangle]</span>
21029 <span class="entry_type_hwlevel">[legacy] </span>
21032 <div class="entry_type_notes">Four ints defining the active pixel rectangle</div>
21035 </td> <!-- entry_type -->
21037 <td class="entry_description">
21038 <p>The area of the image sensor which corresponds to active pixels prior to the
21039 application of any geometric distortion correction.<wbr/></p>
21042 <td class="entry_units">
21043 Pixel coordinates on the image sensor
21046 <td class="entry_range">
21049 <td class="entry_hal_version">
21053 <td class="entry_tags">
21054 <ul class="entry_tags">
21055 <li><a href="#tag_RAW">RAW</a></li>
21060 <tr class="entries_header">
21061 <th class="th_details" colspan="6">Details</th>
21063 <tr class="entry_cont">
21064 <td class="entry_details" colspan="6">
21065 <p>This is the rectangle representing the size of the active region of the sensor (i.<wbr/>e.<wbr/>
21066 the region that actually receives light from the scene) before any geometric correction
21067 has been applied,<wbr/> and should be treated as the active region rectangle for any of the
21068 raw formats.<wbr/> All metadata associated with raw processing (e.<wbr/>g.<wbr/> the lens shading
21069 correction map,<wbr/> and radial distortion fields) treats the top,<wbr/> left of this rectangle as
21070 the origin,<wbr/> (0,<wbr/>0).<wbr/></p>
21071 <p>The size of this region determines the maximum field of view and the maximum number of
21072 pixels that an image from this sensor can contain,<wbr/> prior to the application of
21073 geometric distortion correction.<wbr/> The effective maximum pixel dimensions of a
21074 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>
21075 field,<wbr/> and the effective maximum field of view for a post-distortion-corrected image
21076 can be calculated by applying the geometric distortion correction fields to this
21077 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>
21078 <p>E.<wbr/>g.<wbr/> to calculate position of a pixel,<wbr/> (x,<wbr/>y),<wbr/> in a processed YUV output image with the
21079 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/>
21080 (x',<wbr/> y'),<wbr/> in the raw pixel array with dimensions give in
21081 <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>:</p>
21083 <li>Choose a pixel (x',<wbr/> y') within the active array region of the raw buffer given in
21084 <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
21085 to be outside of the FOV,<wbr/> and will not be shown in the processed output image.<wbr/></li>
21086 <li>Apply geometric distortion correction to get the post-distortion pixel coordinate,<wbr/>
21087 (x_<wbr/>i,<wbr/> y_<wbr/>i).<wbr/> When applying geometric correction metadata,<wbr/> note that metadata for raw
21088 buffers is defined relative to the top,<wbr/> left of the
21089 <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>
21090 <li>If the resulting corrected pixel coordinate is within the region given in
21091 <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
21092 processed output image buffer is <code>(x_<wbr/>i - activeArray.<wbr/>left,<wbr/> y_<wbr/>i - activeArray.<wbr/>top)</code>,<wbr/>
21093 when the top,<wbr/> left coordinate of that buffer is treated as (0,<wbr/> 0).<wbr/></li>
21095 <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>
21096 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/>
21097 <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
21098 correction doesn't change the pixel coordinate,<wbr/> the resulting pixel selected in
21099 pixel coordinates would be x,<wbr/>y = (25,<wbr/> 25) relative to the top,<wbr/>left of the raw buffer
21100 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)
21101 relative to the top,<wbr/>left of post-processed YUV output buffer with dimensions given in
21102 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
21103 <p>The currently supported fields that correct for geometric distortion are:</p>
21105 <li><a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a>.<wbr/></li>
21107 <p>If all of the geometric distortion fields are no-ops,<wbr/> this rectangle will be the same
21108 as the post-distortion-corrected rectangle given in
21109 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
21110 <p>This rectangle is defined relative to the full pixel array; (0,<wbr/>0) is the top-left of
21111 the full pixel array,<wbr/> and the size of the full pixel array is given by
21112 <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
21113 <p>The pre-correction active array may be smaller than the full pixel array,<wbr/> since the
21114 full array may include black calibration pixels or other inactive regions.<wbr/></p>
21118 <tr class="entries_header">
21119 <th class="th_details" colspan="6">HAL Implementation Details</th>
21121 <tr class="entry_cont">
21122 <td class="entry_details" colspan="6">
21123 <p>This array contains <code>(xmin,<wbr/> ymin,<wbr/> width,<wbr/> height)</code>.<wbr/> The <code>(xmin,<wbr/> ymin)</code> must be
21124 >= <code>(0,<wbr/>0)</code>.<wbr/>
21125 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>
21126 <p>If omitted by the HAL implementation,<wbr/> the camera framework will assume that this is
21127 the same as the post-correction active array region given in
21128 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
21132 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21133 <!-- end of entry -->
21139 <tr class="entry" id="static_android.sensor.referenceIlluminant1">
21140 <td class="entry_name
21142 android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1
21144 <td class="entry_type">
21145 <span class="entry_type_name entry_type_name_enum">byte</span>
21147 <span class="entry_type_visibility"> [public]</span>
21153 <ul class="entry_type_enum">
21155 <span class="entry_type_enum_name">DAYLIGHT (v3.2)</span>
21156 <span class="entry_type_enum_value">1</span>
21159 <span class="entry_type_enum_name">FLUORESCENT (v3.2)</span>
21160 <span class="entry_type_enum_value">2</span>
21163 <span class="entry_type_enum_name">TUNGSTEN (v3.2)</span>
21164 <span class="entry_type_enum_value">3</span>
21165 <span class="entry_type_enum_notes"><p>Incandescent light</p></span>
21168 <span class="entry_type_enum_name">FLASH (v3.2)</span>
21169 <span class="entry_type_enum_value">4</span>
21172 <span class="entry_type_enum_name">FINE_WEATHER (v3.2)</span>
21173 <span class="entry_type_enum_value">9</span>
21176 <span class="entry_type_enum_name">CLOUDY_WEATHER (v3.2)</span>
21177 <span class="entry_type_enum_value">10</span>
21180 <span class="entry_type_enum_name">SHADE (v3.2)</span>
21181 <span class="entry_type_enum_value">11</span>
21184 <span class="entry_type_enum_name">DAYLIGHT_FLUORESCENT (v3.2)</span>
21185 <span class="entry_type_enum_value">12</span>
21186 <span class="entry_type_enum_notes"><p>D 5700 - 7100K</p></span>
21189 <span class="entry_type_enum_name">DAY_WHITE_FLUORESCENT (v3.2)</span>
21190 <span class="entry_type_enum_value">13</span>
21191 <span class="entry_type_enum_notes"><p>N 4600 - 5400K</p></span>
21194 <span class="entry_type_enum_name">COOL_WHITE_FLUORESCENT (v3.2)</span>
21195 <span class="entry_type_enum_value">14</span>
21196 <span class="entry_type_enum_notes"><p>W 3900 - 4500K</p></span>
21199 <span class="entry_type_enum_name">WHITE_FLUORESCENT (v3.2)</span>
21200 <span class="entry_type_enum_value">15</span>
21201 <span class="entry_type_enum_notes"><p>WW 3200 - 3700K</p></span>
21204 <span class="entry_type_enum_name">STANDARD_A (v3.2)</span>
21205 <span class="entry_type_enum_value">17</span>
21208 <span class="entry_type_enum_name">STANDARD_B (v3.2)</span>
21209 <span class="entry_type_enum_value">18</span>
21212 <span class="entry_type_enum_name">STANDARD_C (v3.2)</span>
21213 <span class="entry_type_enum_value">19</span>
21216 <span class="entry_type_enum_name">D55 (v3.2)</span>
21217 <span class="entry_type_enum_value">20</span>
21220 <span class="entry_type_enum_name">D65 (v3.2)</span>
21221 <span class="entry_type_enum_value">21</span>
21224 <span class="entry_type_enum_name">D75 (v3.2)</span>
21225 <span class="entry_type_enum_value">22</span>
21228 <span class="entry_type_enum_name">D50 (v3.2)</span>
21229 <span class="entry_type_enum_value">23</span>
21232 <span class="entry_type_enum_name">ISO_STUDIO_TUNGSTEN (v3.2)</span>
21233 <span class="entry_type_enum_value">24</span>
21237 </td> <!-- entry_type -->
21239 <td class="entry_description">
21240 <p>The standard reference illuminant used as the scene light source when
21241 calculating the <a href="#static_android.sensor.colorTransform1">android.<wbr/>sensor.<wbr/>color<wbr/>Transform1</a>,<wbr/>
21242 <a href="#static_android.sensor.calibrationTransform1">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1</a>,<wbr/> and
21243 <a href="#static_android.sensor.forwardMatrix1">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1</a> matrices.<wbr/></p>
21246 <td class="entry_units">
21249 <td class="entry_range">
21252 <td class="entry_hal_version">
21256 <td class="entry_tags">
21257 <ul class="entry_tags">
21258 <li><a href="#tag_RAW">RAW</a></li>
21263 <tr class="entries_header">
21264 <th class="th_details" colspan="6">Details</th>
21266 <tr class="entry_cont">
21267 <td class="entry_details" colspan="6">
21268 <p>The values in this key correspond to the values defined for the
21269 EXIF LightSource tag.<wbr/> These illuminants are standard light sources
21270 that are often used calibrating camera devices.<wbr/></p>
21271 <p>If this key is present,<wbr/> then <a href="#static_android.sensor.colorTransform1">android.<wbr/>sensor.<wbr/>color<wbr/>Transform1</a>,<wbr/>
21272 <a href="#static_android.sensor.calibrationTransform1">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1</a>,<wbr/> and
21273 <a href="#static_android.sensor.forwardMatrix1">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1</a> will also be present.<wbr/></p>
21274 <p>Some devices may choose to provide a second set of calibration
21275 information for improved quality,<wbr/> including
21276 <a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> and its corresponding matrices.<wbr/></p>
21280 <tr class="entries_header">
21281 <th class="th_details" colspan="6">HAL Implementation Details</th>
21283 <tr class="entry_cont">
21284 <td class="entry_details" colspan="6">
21285 <p>The first reference illuminant (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>)
21286 and corresponding matrices must be present to support the RAW capability
21287 and DNG output.<wbr/></p>
21288 <p>When producing raw images with a color profile that has only been
21289 calibrated against a single light source,<wbr/> it is valid to omit
21290 <a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> along with the
21291 <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/>
21292 and <a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> matrices.<wbr/></p>
21293 <p>If only <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> is included,<wbr/> it should be
21294 chosen so that it is representative of typical scene lighting.<wbr/> In
21295 general,<wbr/> D50 or DAYLIGHT will be chosen for this case.<wbr/></p>
21296 <p>If both <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> and
21297 <a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> are included,<wbr/> they should be
21298 chosen to represent the typical range of scene lighting conditions.<wbr/>
21299 In general,<wbr/> low color temperature illuminant such as Standard-A will
21300 be chosen for the first reference illuminant and a higher color
21301 temperature illuminant such as D65 will be chosen for the second
21302 reference illuminant.<wbr/></p>
21306 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21307 <!-- end of entry -->
21310 <tr class="entry" id="static_android.sensor.referenceIlluminant2">
21311 <td class="entry_name
21313 android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2
21315 <td class="entry_type">
21316 <span class="entry_type_name">byte</span>
21318 <span class="entry_type_visibility"> [public]</span>
21325 </td> <!-- entry_type -->
21327 <td class="entry_description">
21328 <p>The standard reference illuminant used as the scene light source when
21329 calculating the <a href="#static_android.sensor.colorTransform2">android.<wbr/>sensor.<wbr/>color<wbr/>Transform2</a>,<wbr/>
21330 <a href="#static_android.sensor.calibrationTransform2">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2</a>,<wbr/> and
21331 <a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> matrices.<wbr/></p>
21334 <td class="entry_units">
21337 <td class="entry_range">
21338 <p>Any value listed in <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a></p>
21341 <td class="entry_hal_version">
21345 <td class="entry_tags">
21346 <ul class="entry_tags">
21347 <li><a href="#tag_RAW">RAW</a></li>
21352 <tr class="entries_header">
21353 <th class="th_details" colspan="6">Details</th>
21355 <tr class="entry_cont">
21356 <td class="entry_details" colspan="6">
21357 <p>See <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> for more details.<wbr/></p>
21358 <p>If this key is present,<wbr/> then <a href="#static_android.sensor.colorTransform2">android.<wbr/>sensor.<wbr/>color<wbr/>Transform2</a>,<wbr/>
21359 <a href="#static_android.sensor.calibrationTransform2">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2</a>,<wbr/> and
21360 <a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> will also be present.<wbr/></p>
21365 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21366 <!-- end of entry -->
21369 <tr class="entry" id="static_android.sensor.calibrationTransform1">
21370 <td class="entry_name
21372 android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1
21374 <td class="entry_type">
21375 <span class="entry_type_name">rational</span>
21376 <span class="entry_type_container">x</span>
21378 <span class="entry_type_array">
21381 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
21386 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
21389 </td> <!-- entry_type -->
21391 <td class="entry_description">
21392 <p>A per-device calibration transform matrix that maps from the
21393 reference sensor colorspace to the actual device sensor colorspace.<wbr/></p>
21396 <td class="entry_units">
21399 <td class="entry_range">
21402 <td class="entry_hal_version">
21406 <td class="entry_tags">
21407 <ul class="entry_tags">
21408 <li><a href="#tag_RAW">RAW</a></li>
21413 <tr class="entries_header">
21414 <th class="th_details" colspan="6">Details</th>
21416 <tr class="entry_cont">
21417 <td class="entry_details" colspan="6">
21418 <p>This matrix is used to correct for per-device variations in the
21419 sensor colorspace,<wbr/> and is used for processing raw buffer data.<wbr/></p>
21420 <p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
21421 contains a per-device calibration transform that maps colors
21422 from reference sensor color space (i.<wbr/>e.<wbr/> the "golden module"
21423 colorspace) into this camera device's native sensor color
21424 space under the first reference illuminant
21425 (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>).<wbr/></p>
21430 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21431 <!-- end of entry -->
21434 <tr class="entry" id="static_android.sensor.calibrationTransform2">
21435 <td class="entry_name
21437 android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2
21439 <td class="entry_type">
21440 <span class="entry_type_name">rational</span>
21441 <span class="entry_type_container">x</span>
21443 <span class="entry_type_array">
21446 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
21451 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
21454 </td> <!-- entry_type -->
21456 <td class="entry_description">
21457 <p>A per-device calibration transform matrix that maps from the
21458 reference sensor colorspace to the actual device sensor colorspace
21459 (this is the colorspace of the raw buffer data).<wbr/></p>
21462 <td class="entry_units">
21465 <td class="entry_range">
21468 <td class="entry_hal_version">
21472 <td class="entry_tags">
21473 <ul class="entry_tags">
21474 <li><a href="#tag_RAW">RAW</a></li>
21479 <tr class="entries_header">
21480 <th class="th_details" colspan="6">Details</th>
21482 <tr class="entry_cont">
21483 <td class="entry_details" colspan="6">
21484 <p>This matrix is used to correct for per-device variations in the
21485 sensor colorspace,<wbr/> and is used for processing raw buffer data.<wbr/></p>
21486 <p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
21487 contains a per-device calibration transform that maps colors
21488 from reference sensor color space (i.<wbr/>e.<wbr/> the "golden module"
21489 colorspace) into this camera device's native sensor color
21490 space under the second reference illuminant
21491 (<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>).<wbr/></p>
21492 <p>This matrix will only be present if the second reference
21493 illuminant is present.<wbr/></p>
21498 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21499 <!-- end of entry -->
21502 <tr class="entry" id="static_android.sensor.colorTransform1">
21503 <td class="entry_name
21505 android.<wbr/>sensor.<wbr/>color<wbr/>Transform1
21507 <td class="entry_type">
21508 <span class="entry_type_name">rational</span>
21509 <span class="entry_type_container">x</span>
21511 <span class="entry_type_array">
21514 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
21519 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
21522 </td> <!-- entry_type -->
21524 <td class="entry_description">
21525 <p>A matrix that transforms color values from CIE XYZ color space to
21526 reference sensor color space.<wbr/></p>
21529 <td class="entry_units">
21532 <td class="entry_range">
21535 <td class="entry_hal_version">
21539 <td class="entry_tags">
21540 <ul class="entry_tags">
21541 <li><a href="#tag_RAW">RAW</a></li>
21546 <tr class="entries_header">
21547 <th class="th_details" colspan="6">Details</th>
21549 <tr class="entry_cont">
21550 <td class="entry_details" colspan="6">
21551 <p>This matrix is used to convert from the standard CIE XYZ color
21552 space to the reference sensor colorspace,<wbr/> and is used when processing
21553 raw buffer data.<wbr/></p>
21554 <p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
21555 contains a color transform matrix that maps colors from the CIE
21556 XYZ color space to the reference sensor color space (i.<wbr/>e.<wbr/> the
21557 "golden module" colorspace) under the first reference illuminant
21558 (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>).<wbr/></p>
21559 <p>The white points chosen in both the reference sensor color space
21560 and the CIE XYZ colorspace when calculating this transform will
21561 match the standard white point for the first reference illuminant
21562 (i.<wbr/>e.<wbr/> no chromatic adaptation will be applied by this transform).<wbr/></p>
21567 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21568 <!-- end of entry -->
21571 <tr class="entry" id="static_android.sensor.colorTransform2">
21572 <td class="entry_name
21574 android.<wbr/>sensor.<wbr/>color<wbr/>Transform2
21576 <td class="entry_type">
21577 <span class="entry_type_name">rational</span>
21578 <span class="entry_type_container">x</span>
21580 <span class="entry_type_array">
21583 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
21588 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
21591 </td> <!-- entry_type -->
21593 <td class="entry_description">
21594 <p>A matrix that transforms color values from CIE XYZ color space to
21595 reference sensor color space.<wbr/></p>
21598 <td class="entry_units">
21601 <td class="entry_range">
21604 <td class="entry_hal_version">
21608 <td class="entry_tags">
21609 <ul class="entry_tags">
21610 <li><a href="#tag_RAW">RAW</a></li>
21615 <tr class="entries_header">
21616 <th class="th_details" colspan="6">Details</th>
21618 <tr class="entry_cont">
21619 <td class="entry_details" colspan="6">
21620 <p>This matrix is used to convert from the standard CIE XYZ color
21621 space to the reference sensor colorspace,<wbr/> and is used when processing
21622 raw buffer data.<wbr/></p>
21623 <p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
21624 contains a color transform matrix that maps colors from the CIE
21625 XYZ color space to the reference sensor color space (i.<wbr/>e.<wbr/> the
21626 "golden module" colorspace) under the second reference illuminant
21627 (<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>).<wbr/></p>
21628 <p>The white points chosen in both the reference sensor color space
21629 and the CIE XYZ colorspace when calculating this transform will
21630 match the standard white point for the second reference illuminant
21631 (i.<wbr/>e.<wbr/> no chromatic adaptation will be applied by this transform).<wbr/></p>
21632 <p>This matrix will only be present if the second reference
21633 illuminant is present.<wbr/></p>
21638 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21639 <!-- end of entry -->
21642 <tr class="entry" id="static_android.sensor.forwardMatrix1">
21643 <td class="entry_name
21645 android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1
21647 <td class="entry_type">
21648 <span class="entry_type_name">rational</span>
21649 <span class="entry_type_container">x</span>
21651 <span class="entry_type_array">
21654 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
21659 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
21662 </td> <!-- entry_type -->
21664 <td class="entry_description">
21665 <p>A matrix that transforms white balanced camera colors from the reference
21666 sensor colorspace to the CIE XYZ colorspace with a D50 whitepoint.<wbr/></p>
21669 <td class="entry_units">
21672 <td class="entry_range">
21675 <td class="entry_hal_version">
21679 <td class="entry_tags">
21680 <ul class="entry_tags">
21681 <li><a href="#tag_RAW">RAW</a></li>
21686 <tr class="entries_header">
21687 <th class="th_details" colspan="6">Details</th>
21689 <tr class="entry_cont">
21690 <td class="entry_details" colspan="6">
21691 <p>This matrix is used to convert to the standard CIE XYZ colorspace,<wbr/> and
21692 is used when processing raw buffer data.<wbr/></p>
21693 <p>This matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and contains
21694 a color transform matrix that maps white balanced colors from the
21695 reference sensor color space to the CIE XYZ color space with a D50 white
21697 <p>Under the first reference illuminant (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>)
21698 this matrix is chosen so that the standard white point for this reference
21699 illuminant in the reference sensor colorspace is mapped to D50 in the
21700 CIE XYZ colorspace.<wbr/></p>
21705 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21706 <!-- end of entry -->
21709 <tr class="entry" id="static_android.sensor.forwardMatrix2">
21710 <td class="entry_name
21712 android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2
21714 <td class="entry_type">
21715 <span class="entry_type_name">rational</span>
21716 <span class="entry_type_container">x</span>
21718 <span class="entry_type_array">
21721 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
21726 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
21729 </td> <!-- entry_type -->
21731 <td class="entry_description">
21732 <p>A matrix that transforms white balanced camera colors from the reference
21733 sensor colorspace to the CIE XYZ colorspace with a D50 whitepoint.<wbr/></p>
21736 <td class="entry_units">
21739 <td class="entry_range">
21742 <td class="entry_hal_version">
21746 <td class="entry_tags">
21747 <ul class="entry_tags">
21748 <li><a href="#tag_RAW">RAW</a></li>
21753 <tr class="entries_header">
21754 <th class="th_details" colspan="6">Details</th>
21756 <tr class="entry_cont">
21757 <td class="entry_details" colspan="6">
21758 <p>This matrix is used to convert to the standard CIE XYZ colorspace,<wbr/> and
21759 is used when processing raw buffer data.<wbr/></p>
21760 <p>This matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and contains
21761 a color transform matrix that maps white balanced colors from the
21762 reference sensor color space to the CIE XYZ color space with a D50 white
21764 <p>Under the second reference illuminant (<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>)
21765 this matrix is chosen so that the standard white point for this reference
21766 illuminant in the reference sensor colorspace is mapped to D50 in the
21767 CIE XYZ colorspace.<wbr/></p>
21768 <p>This matrix will only be present if the second reference
21769 illuminant is present.<wbr/></p>
21774 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21775 <!-- end of entry -->
21778 <tr class="entry" id="static_android.sensor.baseGainFactor">
21779 <td class="entry_name
21781 android.<wbr/>sensor.<wbr/>base<wbr/>Gain<wbr/>Factor
21783 <td class="entry_type">
21784 <span class="entry_type_name">rational</span>
21786 <span class="entry_type_visibility"> [system]</span>
21793 </td> <!-- entry_type -->
21795 <td class="entry_description">
21796 <p>Gain factor from electrons to raw units when
21800 <td class="entry_units">
21803 <td class="entry_range">
21806 <td class="entry_hal_version">
21810 <td class="entry_tags">
21811 <ul class="entry_tags">
21812 <li><a href="#tag_FUTURE">FUTURE</a></li>
21819 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21820 <!-- end of entry -->
21823 <tr class="entry" id="static_android.sensor.blackLevelPattern">
21824 <td class="entry_name
21826 android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern
21828 <td class="entry_type">
21829 <span class="entry_type_name">int32</span>
21830 <span class="entry_type_container">x</span>
21832 <span class="entry_type_array">
21835 <span class="entry_type_visibility"> [public as blackLevelPattern]</span>
21840 <div class="entry_type_notes">2x2 raw count block</div>
21843 </td> <!-- entry_type -->
21845 <td class="entry_description">
21846 <p>A fixed black level offset for each of the color filter arrangement
21847 (CFA) mosaic channels.<wbr/></p>
21850 <td class="entry_units">
21853 <td class="entry_range">
21854 <p>>= 0 for each.<wbr/></p>
21857 <td class="entry_hal_version">
21861 <td class="entry_tags">
21862 <ul class="entry_tags">
21863 <li><a href="#tag_RAW">RAW</a></li>
21868 <tr class="entries_header">
21869 <th class="th_details" colspan="6">Details</th>
21871 <tr class="entry_cont">
21872 <td class="entry_details" colspan="6">
21873 <p>This key specifies the zero light value for each of the CFA mosaic
21874 channels in the camera sensor.<wbr/> The maximal value output by the
21875 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>
21876 <p>The values are given in the same order as channels listed for the CFA
21877 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
21878 nth value given corresponds to the black level offset for the nth
21879 color channel listed in the CFA.<wbr/></p>
21880 <p>The black level values of captured images may vary for different
21881 capture settings (e.<wbr/>g.,<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>).<wbr/> This key
21882 represents a coarse approximation for such case.<wbr/> It is recommended to
21883 use <a href="#dynamic_android.sensor.dynamicBlackLevel">android.<wbr/>sensor.<wbr/>dynamic<wbr/>Black<wbr/>Level</a> or use pixels from
21884 <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a> directly for captures when
21885 supported by the camera device,<wbr/> which provides more accurate black
21886 level values.<wbr/> For raw capture in particular,<wbr/> it is recommended to use
21887 pixels from <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a> to calculate black
21888 level values for each frame.<wbr/></p>
21892 <tr class="entries_header">
21893 <th class="th_details" colspan="6">HAL Implementation Details</th>
21895 <tr class="entry_cont">
21896 <td class="entry_details" colspan="6">
21897 <p>The values are given in row-column scan order,<wbr/> with the first value
21898 corresponding to the element of the CFA in row=0,<wbr/> column=0.<wbr/></p>
21902 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21903 <!-- end of entry -->
21906 <tr class="entry" id="static_android.sensor.maxAnalogSensitivity">
21907 <td class="entry_name
21909 android.<wbr/>sensor.<wbr/>max<wbr/>Analog<wbr/>Sensitivity
21911 <td class="entry_type">
21912 <span class="entry_type_name">int32</span>
21914 <span class="entry_type_visibility"> [public]</span>
21917 <span class="entry_type_hwlevel">[full] </span>
21922 </td> <!-- entry_type -->
21924 <td class="entry_description">
21925 <p>Maximum sensitivity that is implemented
21926 purely through analog gain.<wbr/></p>
21929 <td class="entry_units">
21932 <td class="entry_range">
21935 <td class="entry_hal_version">
21939 <td class="entry_tags">
21940 <ul class="entry_tags">
21941 <li><a href="#tag_V1">V1</a></li>
21942 <li><a href="#tag_FULL">FULL</a></li>
21947 <tr class="entries_header">
21948 <th class="th_details" colspan="6">Details</th>
21950 <tr class="entry_cont">
21951 <td class="entry_details" colspan="6">
21952 <p>For <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> values less than or
21953 equal to this,<wbr/> all applied gain must be analog.<wbr/> For
21954 values above this,<wbr/> the gain applied can be a mix of analog and
21960 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21961 <!-- end of entry -->
21964 <tr class="entry" id="static_android.sensor.orientation">
21965 <td class="entry_name
21967 android.<wbr/>sensor.<wbr/>orientation
21969 <td class="entry_type">
21970 <span class="entry_type_name">int32</span>
21972 <span class="entry_type_visibility"> [public]</span>
21975 <span class="entry_type_hwlevel">[legacy] </span>
21980 </td> <!-- entry_type -->
21982 <td class="entry_description">
21983 <p>Clockwise angle through which the output image needs to be rotated to be
21984 upright on the device screen in its native orientation.<wbr/></p>
21987 <td class="entry_units">
21988 Degrees of clockwise rotation; always a multiple of
21992 <td class="entry_range">
21993 <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p>
21996 <td class="entry_hal_version">
22000 <td class="entry_tags">
22001 <ul class="entry_tags">
22002 <li><a href="#tag_BC">BC</a></li>
22007 <tr class="entries_header">
22008 <th class="th_details" colspan="6">Details</th>
22010 <tr class="entry_cont">
22011 <td class="entry_details" colspan="6">
22012 <p>Also defines the direction of rolling shutter readout,<wbr/> which is from top to bottom in
22013 the sensor's coordinate system.<wbr/></p>
22018 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22019 <!-- end of entry -->
22022 <tr class="entry" id="static_android.sensor.profileHueSatMapDimensions">
22023 <td class="entry_name
22025 android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map<wbr/>Dimensions
22027 <td class="entry_type">
22028 <span class="entry_type_name">int32</span>
22029 <span class="entry_type_container">x</span>
22031 <span class="entry_type_array">
22034 <span class="entry_type_visibility"> [system]</span>
22039 <div class="entry_type_notes">Number of samples for hue,<wbr/> saturation,<wbr/> and value</div>
22042 </td> <!-- entry_type -->
22044 <td class="entry_description">
22045 <p>The number of input samples for each dimension of
22046 <a href="#dynamic_android.sensor.profileHueSatMap">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map</a>.<wbr/></p>
22049 <td class="entry_units">
22052 <td class="entry_range">
22053 <p>Hue >= 1,<wbr/>
22054 Saturation >= 2,<wbr/>
22058 <td class="entry_hal_version">
22062 <td class="entry_tags">
22063 <ul class="entry_tags">
22064 <li><a href="#tag_RAW">RAW</a></li>
22069 <tr class="entries_header">
22070 <th class="th_details" colspan="6">Details</th>
22072 <tr class="entry_cont">
22073 <td class="entry_details" colspan="6">
22074 <p>The number of input samples for the hue,<wbr/> saturation,<wbr/> and value
22075 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
22076 dimensions given is hue,<wbr/> saturation,<wbr/> value; where hue is the 0th
22082 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22083 <!-- end of entry -->
22086 <tr class="entry" id="static_android.sensor.availableTestPatternModes">
22087 <td class="entry_name
22089 android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes
22091 <td class="entry_type">
22092 <span class="entry_type_name">int32</span>
22093 <span class="entry_type_container">x</span>
22095 <span class="entry_type_array">
22098 <span class="entry_type_visibility"> [public]</span>
22103 <div class="entry_type_notes">list of enums</div>
22106 </td> <!-- entry_type -->
22108 <td class="entry_description">
22109 <p>List of sensor test pattern modes for <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a>
22110 supported by this camera device.<wbr/></p>
22113 <td class="entry_units">
22116 <td class="entry_range">
22117 <p>Any value listed in <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a></p>
22120 <td class="entry_hal_version">
22124 <td class="entry_tags">
22128 <tr class="entries_header">
22129 <th class="th_details" colspan="6">Details</th>
22131 <tr class="entry_cont">
22132 <td class="entry_details" colspan="6">
22133 <p>Defaults to OFF,<wbr/> and always includes OFF if defined.<wbr/></p>
22137 <tr class="entries_header">
22138 <th class="th_details" colspan="6">HAL Implementation Details</th>
22140 <tr class="entry_cont">
22141 <td class="entry_details" colspan="6">
22142 <p>All custom modes must be >= CUSTOM1.<wbr/></p>
22146 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22147 <!-- end of entry -->
22150 <tr class="entry" id="static_android.sensor.opticalBlackRegions">
22151 <td class="entry_name
22153 android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions
22155 <td class="entry_type">
22156 <span class="entry_type_name">int32</span>
22157 <span class="entry_type_container">x</span>
22159 <span class="entry_type_array">
22162 <span class="entry_type_visibility"> [public as rectangle]</span>
22169 </td> <!-- entry_type -->
22171 <td class="entry_description">
22172 <p>List of disjoint rectangles indicating the sensor
22173 optically shielded black pixel regions.<wbr/></p>
22176 <td class="entry_units">
22179 <td class="entry_range">
22182 <td class="entry_hal_version">
22186 <td class="entry_tags">
22190 <tr class="entries_header">
22191 <th class="th_details" colspan="6">Details</th>
22193 <tr class="entry_cont">
22194 <td class="entry_details" colspan="6">
22195 <p>In most camera sensors,<wbr/> the active array is surrounded by some
22196 optically shielded pixel areas.<wbr/> By blocking light,<wbr/> these pixels
22197 provides a reliable black reference for black level compensation
22198 in active array region.<wbr/></p>
22199 <p>This key provides a list of disjoint rectangles specifying the
22200 regions of optically shielded (with metal shield) black pixel
22201 regions if the camera device is capable of reading out these black
22202 pixels in the output raw images.<wbr/> In comparison to the fixed black
22203 level values reported by <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a>,<wbr/> this key
22204 may provide a more accurate way for the application to calculate
22205 black level of each captured raw images.<wbr/></p>
22206 <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
22207 <a href="#dynamic_android.sensor.dynamicWhiteLevel">android.<wbr/>sensor.<wbr/>dynamic<wbr/>White<wbr/>Level</a> will also be reported.<wbr/></p>
22211 <tr class="entries_header">
22212 <th class="th_details" colspan="6">HAL Implementation Details</th>
22214 <tr class="entry_cont">
22215 <td class="entry_details" colspan="6">
22216 <p>This array contains (xmin,<wbr/> ymin,<wbr/> width,<wbr/> height).<wbr/> The (xmin,<wbr/> ymin)
22217 must be >= (0,<wbr/>0) and <=
22218 <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
22219 <= <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/> Each region must be
22220 outside the region reported by
22221 <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>
22222 <p>The HAL must report minimal number of disjoint regions for the
22223 optically shielded back pixel regions.<wbr/> For example,<wbr/> if a region can
22224 be covered by one rectangle,<wbr/> the HAL must not split this region into
22225 multiple rectangles.<wbr/></p>
22229 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22230 <!-- end of entry -->
22233 <tr class="entry" id="static_android.sensor.opaqueRawSize">
22234 <td class="entry_name
22236 android.<wbr/>sensor.<wbr/>opaque<wbr/>Raw<wbr/>Size
22238 <td class="entry_type">
22239 <span class="entry_type_name">int32</span>
22240 <span class="entry_type_container">x</span>
22242 <span class="entry_type_array">
22245 <span class="entry_type_visibility"> [system]</span>
22252 </td> <!-- entry_type -->
22254 <td class="entry_description">
22255 <p>Size in bytes for all the listed opaque RAW buffer sizes</p>
22258 <td class="entry_units">
22261 <td class="entry_range">
22262 <p>Must be large enough to fit the opaque RAW of corresponding size produced by
22266 <td class="entry_hal_version">
22270 <td class="entry_tags">
22274 <tr class="entries_header">
22275 <th class="th_details" colspan="6">Details</th>
22277 <tr class="entry_cont">
22278 <td class="entry_details" colspan="6">
22279 <p>This configurations are listed as <code>(width,<wbr/> height,<wbr/> size_<wbr/>in_<wbr/>bytes)</code> tuples.<wbr/>
22280 This is used for sizing the gralloc buffers for opaque RAW buffers.<wbr/>
22281 All RAW_<wbr/>OPAQUE output stream configuration listed in
22282 <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> will have a corresponding tuple in
22283 this key.<wbr/></p>
22287 <tr class="entries_header">
22288 <th class="th_details" colspan="6">HAL Implementation Details</th>
22290 <tr class="entry_cont">
22291 <td class="entry_details" colspan="6">
22292 <p>This key is added in legacy HAL3.<wbr/>4.<wbr/></p>
22293 <p>For legacy HAL3.<wbr/>4 or above: devices advertising RAW_<wbr/>OPAQUE format output must list this
22294 key.<wbr/> For legacy HAL3.<wbr/>3 or earlier devices: if RAW_<wbr/>OPAQUE ouput is advertised,<wbr/> camera
22295 framework will derive this key by assuming each pixel takes two bytes and no padding bytes
22296 between rows.<wbr/></p>
22300 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22301 <!-- end of entry -->
22305 <!-- end of kind -->
22307 <tr><td colspan="7" class="kind">dynamic</td></tr>
22309 <thead class="entries_header">
22311 <th class="th_name">Property Name</th>
22312 <th class="th_type">Type</th>
22313 <th class="th_description">Description</th>
22314 <th class="th_units">Units</th>
22315 <th class="th_range">Range</th>
22316 <th class="th_hal_version">Initial HIDL HAL version</th>
22317 <th class="th_tags">Tags</th>
22332 <tr class="entry" id="dynamic_android.sensor.exposureTime">
22333 <td class="entry_name
22335 android.<wbr/>sensor.<wbr/>exposure<wbr/>Time
22337 <td class="entry_type">
22338 <span class="entry_type_name">int64</span>
22340 <span class="entry_type_visibility"> [public]</span>
22343 <span class="entry_type_hwlevel">[full] </span>
22348 </td> <!-- entry_type -->
22350 <td class="entry_description">
22351 <p>Duration each pixel is exposed to
22355 <td class="entry_units">
22359 <td class="entry_range">
22360 <p><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></p>
22363 <td class="entry_hal_version">
22367 <td class="entry_tags">
22368 <ul class="entry_tags">
22369 <li><a href="#tag_V1">V1</a></li>
22374 <tr class="entries_header">
22375 <th class="th_details" colspan="6">Details</th>
22377 <tr class="entry_cont">
22378 <td class="entry_details" colspan="6">
22379 <p>If the sensor can't expose this exact duration,<wbr/> it will shorten the
22380 duration exposed to the nearest possible value (rather than expose longer).<wbr/>
22381 The final exposure time used will be available in the output capture result.<wbr/></p>
22382 <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
22383 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
22388 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22389 <!-- end of entry -->
22392 <tr class="entry" id="dynamic_android.sensor.frameDuration">
22393 <td class="entry_name
22395 android.<wbr/>sensor.<wbr/>frame<wbr/>Duration
22397 <td class="entry_type">
22398 <span class="entry_type_name">int64</span>
22400 <span class="entry_type_visibility"> [public]</span>
22403 <span class="entry_type_hwlevel">[full] </span>
22408 </td> <!-- entry_type -->
22410 <td class="entry_description">
22411 <p>Duration from start of frame exposure to
22412 start of next frame exposure.<wbr/></p>
22415 <td class="entry_units">
22419 <td class="entry_range">
22420 <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/>
22421 The duration is capped to <code>max(duration,<wbr/> exposureTime + overhead)</code>.<wbr/></p>
22424 <td class="entry_hal_version">
22428 <td class="entry_tags">
22429 <ul class="entry_tags">
22430 <li><a href="#tag_V1">V1</a></li>
22435 <tr class="entries_header">
22436 <th class="th_details" colspan="6">Details</th>
22438 <tr class="entry_cont">
22439 <td class="entry_details" colspan="6">
22440 <p>The maximum frame rate that can be supported by a camera subsystem is
22441 a function of many factors:</p>
22443 <li>Requested resolutions of output image streams</li>
22444 <li>Availability of binning /<wbr/> skipping modes on the imager</li>
22445 <li>The bandwidth of the imager interface</li>
22446 <li>The bandwidth of the various ISP processing blocks</li>
22448 <p>Since these factors can vary greatly between different ISPs and
22449 sensors,<wbr/> the camera abstraction tries to represent the bandwidth
22450 restrictions with as simple a model as possible.<wbr/></p>
22451 <p>The model presented has the following characteristics:</p>
22453 <li>The image sensor is always configured to output the smallest
22454 resolution possible given the application's requested output stream
22455 sizes.<wbr/> The smallest resolution is defined as being at least as large
22456 as the largest requested output stream size; the camera pipeline must
22457 never digitally upsample sensor data when the crop region covers the
22458 whole sensor.<wbr/> In general,<wbr/> this means that if only small output stream
22459 resolutions are configured,<wbr/> the sensor can provide a higher frame
22461 <li>Since any request may use any or all the currently configured
22462 output streams,<wbr/> the sensor and ISP must be configured to support
22463 scaling a single capture to all the streams at the same time.<wbr/> This
22464 means the camera pipeline must be ready to produce the largest
22465 requested output size without any delay.<wbr/> Therefore,<wbr/> the overall
22466 frame rate of a given configured stream set is governed only by the
22467 largest requested stream resolution.<wbr/></li>
22468 <li>Using more than one output stream in a request does not affect the
22469 frame duration.<wbr/></li>
22470 <li>Certain format-streams may need to do additional background processing
22471 before data is consumed/<wbr/>produced by that stream.<wbr/> These processors
22472 can run concurrently to the rest of the camera pipeline,<wbr/> but
22473 cannot process more than 1 capture at a time.<wbr/></li>
22475 <p>The necessary information for the application,<wbr/> given the model above,<wbr/> is provided via
22476 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/>
22477 These are used to determine the maximum frame rate /<wbr/> minimum frame duration that is
22478 possible for a given stream configuration.<wbr/></p>
22479 <p>Specifically,<wbr/> the application can use the following rules to
22480 determine the minimum frame duration it can request from the camera
22483 <li>Let the set of currently configured input/<wbr/>output streams be called <code>S</code>.<wbr/></li>
22484 <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>
22485 (with its respective size/<wbr/>format).<wbr/> Let this set of frame durations be called <code>F</code>.<wbr/></li>
22486 <li>For any given request <code>R</code>,<wbr/> the minimum frame duration allowed for <code>R</code> is the maximum
22487 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>
22489 <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>
22490 using its respective size/<wbr/>format),<wbr/> then the frame duration in <code>F</code> determines the steady
22491 state frame rate that the application will get if it uses <code>R</code> as a repeating request.<wbr/> Let
22492 this special kind of request be called <code>Rsimple</code>.<wbr/></p>
22493 <p>A repeating request <code>Rsimple</code> can be <em>occasionally</em> interleaved by a single capture of a
22494 new request <code>Rstall</code> (which has at least one in-use stream with a non-0 stall time) and if
22495 <code>Rstall</code> has the same minimum frame duration this will not cause a frame rate loss if all
22496 buffers from the previous <code>Rstall</code> have already been delivered.<wbr/></p>
22497 <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>
22498 <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
22499 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
22503 <tr class="entries_header">
22504 <th class="th_details" colspan="6">HAL Implementation Details</th>
22506 <tr class="entry_cont">
22507 <td class="entry_details" colspan="6">
22508 <p>For more details about stalling,<wbr/> see
22509 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>.<wbr/></p>
22513 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22514 <!-- end of entry -->
22517 <tr class="entry" id="dynamic_android.sensor.sensitivity">
22518 <td class="entry_name
22520 android.<wbr/>sensor.<wbr/>sensitivity
22522 <td class="entry_type">
22523 <span class="entry_type_name">int32</span>
22525 <span class="entry_type_visibility"> [public]</span>
22528 <span class="entry_type_hwlevel">[full] </span>
22533 </td> <!-- entry_type -->
22535 <td class="entry_description">
22536 <p>The amount of gain applied to sensor data
22537 before processing.<wbr/></p>
22540 <td class="entry_units">
22541 ISO arithmetic units
22544 <td class="entry_range">
22545 <p><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></p>
22548 <td class="entry_hal_version">
22552 <td class="entry_tags">
22553 <ul class="entry_tags">
22554 <li><a href="#tag_V1">V1</a></li>
22559 <tr class="entries_header">
22560 <th class="th_details" colspan="6">Details</th>
22562 <tr class="entry_cont">
22563 <td class="entry_details" colspan="6">
22564 <p>The sensitivity is the standard ISO sensitivity value,<wbr/>
22565 as defined in ISO 12232:2006.<wbr/></p>
22566 <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
22567 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
22568 is guaranteed to use only analog amplification for applying the gain.<wbr/></p>
22569 <p>If the camera device cannot apply the exact sensitivity
22570 requested,<wbr/> it will reduce the gain to the nearest supported
22571 value.<wbr/> The final sensitivity used will be available in the
22572 output capture result.<wbr/></p>
22573 <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
22574 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
22578 <tr class="entries_header">
22579 <th class="th_details" colspan="6">HAL Implementation Details</th>
22581 <tr class="entry_cont">
22582 <td class="entry_details" colspan="6">
22583 <p>ISO 12232:2006 REI method is acceptable.<wbr/></p>
22587 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22588 <!-- end of entry -->
22591 <tr class="entry" id="dynamic_android.sensor.timestamp">
22592 <td class="entry_name
22594 android.<wbr/>sensor.<wbr/>timestamp
22596 <td class="entry_type">
22597 <span class="entry_type_name">int64</span>
22599 <span class="entry_type_visibility"> [public]</span>
22602 <span class="entry_type_hwlevel">[legacy] </span>
22607 </td> <!-- entry_type -->
22609 <td class="entry_description">
22610 <p>Time at start of exposure of first
22611 row of the image sensor active array,<wbr/> in nanoseconds.<wbr/></p>
22614 <td class="entry_units">
22618 <td class="entry_range">
22622 <td class="entry_hal_version">
22626 <td class="entry_tags">
22627 <ul class="entry_tags">
22628 <li><a href="#tag_BC">BC</a></li>
22633 <tr class="entries_header">
22634 <th class="th_details" colspan="6">Details</th>
22636 <tr class="entry_cont">
22637 <td class="entry_details" colspan="6">
22638 <p>The timestamps are also included in all image
22639 buffers produced for the same capture,<wbr/> and will be identical
22640 on all the outputs.<wbr/></p>
22641 <p>When <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> UNKNOWN,<wbr/>
22642 the timestamps measure time since an unspecified starting point,<wbr/>
22643 and are monotonically increasing.<wbr/> They can be compared with the
22644 timestamps for other captures from the same camera device,<wbr/> but are
22645 not guaranteed to be comparable to any other time source.<wbr/></p>
22646 <p>When <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME,<wbr/> the
22647 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
22648 be compared to other timestamps from other subsystems that
22649 are using that base.<wbr/></p>
22650 <p>For reprocessing,<wbr/> the timestamp will match the start of exposure of
22651 the input image,<wbr/> i.<wbr/>e.<wbr/> <a href="https://developer.android.com/reference/CaptureResult.html#SENSOR_TIMESTAMP">the
22652 timestamp</a> in the TotalCaptureResult that was used to create the
22653 reprocess capture request.<wbr/></p>
22657 <tr class="entries_header">
22658 <th class="th_details" colspan="6">HAL Implementation Details</th>
22660 <tr class="entry_cont">
22661 <td class="entry_details" colspan="6">
22662 <p>All timestamps must be in reference to the kernel's
22663 CLOCK_<wbr/>BOOTTIME monotonic clock,<wbr/> which properly accounts for
22664 time spent asleep.<wbr/> This allows for synchronization with
22665 sensors that continue to operate while the system is
22666 otherwise asleep.<wbr/></p>
22667 <p>If <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME,<wbr/>
22668 The timestamp must be synchronized with the timestamps from other
22669 sensor subsystems that are using the same timebase.<wbr/></p>
22670 <p>For reprocessing,<wbr/> the input image's start of exposure can be looked up
22671 with <a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a> from the metadata included in the
22672 capture request.<wbr/></p>
22676 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22677 <!-- end of entry -->
22680 <tr class="entry" id="dynamic_android.sensor.temperature">
22681 <td class="entry_name
22683 android.<wbr/>sensor.<wbr/>temperature
22685 <td class="entry_type">
22686 <span class="entry_type_name">float</span>
22688 <span class="entry_type_visibility"> [system]</span>
22695 </td> <!-- entry_type -->
22697 <td class="entry_description">
22698 <p>The temperature of the sensor,<wbr/> sampled at the time
22699 exposure began for this frame.<wbr/></p>
22700 <p>The thermal diode being queried should be inside the sensor PCB,<wbr/> or
22701 somewhere close to it.<wbr/></p>
22704 <td class="entry_units">
22708 <td class="entry_range">
22709 <p>Optional.<wbr/> This value is missing if no temperature is available.<wbr/></p>
22712 <td class="entry_hal_version">
22716 <td class="entry_tags">
22717 <ul class="entry_tags">
22718 <li><a href="#tag_FUTURE">FUTURE</a></li>
22725 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22726 <!-- end of entry -->
22729 <tr class="entry" id="dynamic_android.sensor.neutralColorPoint">
22730 <td class="entry_name
22732 android.<wbr/>sensor.<wbr/>neutral<wbr/>Color<wbr/>Point
22734 <td class="entry_type">
22735 <span class="entry_type_name">rational</span>
22736 <span class="entry_type_container">x</span>
22738 <span class="entry_type_array">
22741 <span class="entry_type_visibility"> [public]</span>
22748 </td> <!-- entry_type -->
22750 <td class="entry_description">
22751 <p>The estimated camera neutral color in the native sensor colorspace at
22752 the time of capture.<wbr/></p>
22755 <td class="entry_units">
22758 <td class="entry_range">
22761 <td class="entry_hal_version">
22765 <td class="entry_tags">
22766 <ul class="entry_tags">
22767 <li><a href="#tag_RAW">RAW</a></li>
22772 <tr class="entries_header">
22773 <th class="th_details" colspan="6">Details</th>
22775 <tr class="entry_cont">
22776 <td class="entry_details" colspan="6">
22777 <p>This value gives the neutral color point encoded as an RGB value in the
22778 native sensor color space.<wbr/> The neutral color point indicates the
22779 currently estimated white point of the scene illumination.<wbr/> It can be
22780 used to interpolate between the provided color transforms when
22781 processing raw sensor data.<wbr/></p>
22782 <p>The order of the values is R,<wbr/> G,<wbr/> B; where R is in the lowest index.<wbr/></p>
22787 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22788 <!-- end of entry -->
22791 <tr class="entry" id="dynamic_android.sensor.noiseProfile">
22792 <td class="entry_name
22794 android.<wbr/>sensor.<wbr/>noise<wbr/>Profile
22796 <td class="entry_type">
22797 <span class="entry_type_name">double</span>
22798 <span class="entry_type_container">x</span>
22800 <span class="entry_type_array">
22803 <span class="entry_type_visibility"> [public as pairDoubleDouble]</span>
22808 <div class="entry_type_notes">Pairs of noise model coefficients</div>
22811 </td> <!-- entry_type -->
22813 <td class="entry_description">
22814 <p>Noise model coefficients for each CFA mosaic channel.<wbr/></p>
22817 <td class="entry_units">
22820 <td class="entry_range">
22823 <td class="entry_hal_version">
22827 <td class="entry_tags">
22828 <ul class="entry_tags">
22829 <li><a href="#tag_RAW">RAW</a></li>
22834 <tr class="entries_header">
22835 <th class="th_details" colspan="6">Details</th>
22837 <tr class="entry_cont">
22838 <td class="entry_details" colspan="6">
22839 <p>This key contains two noise model coefficients for each CFA channel
22840 corresponding to the sensor amplification (S) and sensor readout
22841 noise (O).<wbr/> These are given as pairs of coefficients for each channel
22842 in the same order as channels listed for the CFA layout key
22843 (see <a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a>).<wbr/> This is
22844 represented as an array of Pair<Double,<wbr/> Double>,<wbr/> where
22845 the first member of the Pair at index n is the S coefficient and the
22846 second member is the O coefficient for the nth color channel in the CFA.<wbr/></p>
22847 <p>These coefficients are used in a two parameter noise model to describe
22848 the amount of noise present in the image for each CFA channel.<wbr/> The
22849 noise model used here is:</p>
22850 <p>N(x) = sqrt(Sx + O)</p>
22851 <p>Where x represents the recorded signal of a CFA channel normalized to
22852 the range [0,<wbr/> 1],<wbr/> and S and O are the noise model coeffiecients for
22853 that channel.<wbr/></p>
22854 <p>A more detailed description of the noise model can be found in the
22855 Adobe DNG specification for the NoiseProfile tag.<wbr/></p>
22859 <tr class="entries_header">
22860 <th class="th_details" colspan="6">HAL Implementation Details</th>
22862 <tr class="entry_cont">
22863 <td class="entry_details" colspan="6">
22864 <p>For a CFA layout of RGGB,<wbr/> the list of coefficients would be given as
22865 an array of doubles S0,<wbr/>O0,<wbr/>S1,<wbr/>O1,...,<wbr/> where S0 and O0 are the coefficients
22866 for the red channel,<wbr/> S1 and O1 are the coefficients for the first green
22867 channel,<wbr/> etc.<wbr/></p>
22871 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22872 <!-- end of entry -->
22875 <tr class="entry" id="dynamic_android.sensor.profileHueSatMap">
22876 <td class="entry_name
22878 android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map
22880 <td class="entry_type">
22881 <span class="entry_type_name">float</span>
22882 <span class="entry_type_container">x</span>
22884 <span class="entry_type_array">
22885 hue_samples x saturation_samples x value_samples x 3
22887 <span class="entry_type_visibility"> [system]</span>
22892 <div class="entry_type_notes">Mapping for hue,<wbr/> saturation,<wbr/> and value</div>
22895 </td> <!-- entry_type -->
22897 <td class="entry_description">
22898 <p>A mapping containing a hue shift,<wbr/> saturation scale,<wbr/> and value scale
22899 for each pixel.<wbr/></p>
22902 <td class="entry_units">
22904 The hue shift is given in degrees; saturation and value scale factors are
22905 unitless and are between 0 and 1 inclusive
22909 <td class="entry_range">
22912 <td class="entry_hal_version">
22916 <td class="entry_tags">
22917 <ul class="entry_tags">
22918 <li><a href="#tag_RAW">RAW</a></li>
22923 <tr class="entries_header">
22924 <th class="th_details" colspan="6">Details</th>
22926 <tr class="entry_cont">
22927 <td class="entry_details" colspan="6">
22928 <p>hue_<wbr/>samples,<wbr/> saturation_<wbr/>samples,<wbr/> and value_<wbr/>samples are given in
22929 <a href="#static_android.sensor.profileHueSatMapDimensions">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map<wbr/>Dimensions</a>.<wbr/></p>
22930 <p>Each entry of this map contains three floats corresponding to the
22931 hue shift,<wbr/> saturation scale,<wbr/> and value scale,<wbr/> respectively; where the
22932 hue shift has the lowest index.<wbr/> The map entries are stored in the key
22933 in nested loop order,<wbr/> with the value divisions in the outer loop,<wbr/> the
22934 hue divisions in the middle loop,<wbr/> and the saturation divisions in the
22935 inner loop.<wbr/> All zero input saturation entries are required to have a
22936 value scale factor of 1.<wbr/>0.<wbr/></p>
22941 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22942 <!-- end of entry -->
22945 <tr class="entry" id="dynamic_android.sensor.profileToneCurve">
22946 <td class="entry_name
22948 android.<wbr/>sensor.<wbr/>profile<wbr/>Tone<wbr/>Curve
22950 <td class="entry_type">
22951 <span class="entry_type_name">float</span>
22952 <span class="entry_type_container">x</span>
22954 <span class="entry_type_array">
22957 <span class="entry_type_visibility"> [system]</span>
22962 <div class="entry_type_notes">Samples defining a spline for a tone-mapping curve</div>
22965 </td> <!-- entry_type -->
22967 <td class="entry_description">
22968 <p>A list of x,<wbr/>y samples defining a tone-mapping curve for gamma adjustment.<wbr/></p>
22971 <td class="entry_units">
22974 <td class="entry_range">
22975 <p>Each sample has an input range of <code>[0,<wbr/> 1]</code> and an output range of
22976 <code>[0,<wbr/> 1]</code>.<wbr/> The first sample is required to be <code>(0,<wbr/> 0)</code>,<wbr/> and the last
22977 sample is required to be <code>(1,<wbr/> 1)</code>.<wbr/></p>
22980 <td class="entry_hal_version">
22984 <td class="entry_tags">
22985 <ul class="entry_tags">
22986 <li><a href="#tag_RAW">RAW</a></li>
22991 <tr class="entries_header">
22992 <th class="th_details" colspan="6">Details</th>
22994 <tr class="entry_cont">
22995 <td class="entry_details" colspan="6">
22996 <p>This key contains a default tone curve that can be applied while
22997 processing the image as a starting point for user adjustments.<wbr/>
22998 The curve is specified as a list of value pairs in linear gamma.<wbr/>
22999 The curve is interpolated using a cubic spline.<wbr/></p>
23004 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23005 <!-- end of entry -->
23008 <tr class="entry" id="dynamic_android.sensor.greenSplit">
23009 <td class="entry_name
23011 android.<wbr/>sensor.<wbr/>green<wbr/>Split
23013 <td class="entry_type">
23014 <span class="entry_type_name">float</span>
23016 <span class="entry_type_visibility"> [public]</span>
23023 </td> <!-- entry_type -->
23025 <td class="entry_description">
23026 <p>The worst-case divergence between Bayer green channels.<wbr/></p>
23029 <td class="entry_units">
23032 <td class="entry_range">
23036 <td class="entry_hal_version">
23040 <td class="entry_tags">
23041 <ul class="entry_tags">
23042 <li><a href="#tag_RAW">RAW</a></li>
23047 <tr class="entries_header">
23048 <th class="th_details" colspan="6">Details</th>
23050 <tr class="entry_cont">
23051 <td class="entry_details" colspan="6">
23052 <p>This value is an estimate of the worst case split between the
23053 Bayer green channels in the red and blue rows in the sensor color
23054 filter array.<wbr/></p>
23055 <p>The green split is calculated as follows:</p>
23057 <li>A 5x5 pixel (or larger) window W within the active sensor array is
23058 chosen.<wbr/> The term 'pixel' here is taken to mean a group of 4 Bayer
23059 mosaic channels (R,<wbr/> Gr,<wbr/> Gb,<wbr/> B).<wbr/> The location and size of the window
23060 chosen is implementation defined,<wbr/> and should be chosen to provide a
23061 green split estimate that is both representative of the entire image
23062 for this camera sensor,<wbr/> and can be calculated quickly.<wbr/></li>
23063 <li>The arithmetic mean of the green channels from the red
23064 rows (mean_<wbr/>Gr) within W is computed.<wbr/></li>
23065 <li>The arithmetic mean of the green channels from the blue
23066 rows (mean_<wbr/>Gb) within W is computed.<wbr/></li>
23067 <li>The maximum ratio R of the two means is computed as follows:
23068 <code>R = max((mean_<wbr/>Gr + 1)/<wbr/>(mean_<wbr/>Gb + 1),<wbr/> (mean_<wbr/>Gb + 1)/<wbr/>(mean_<wbr/>Gr + 1))</code></li>
23070 <p>The ratio R is the green split divergence reported for this property,<wbr/>
23071 which represents how much the green channels differ in the mosaic
23072 pattern.<wbr/> This value is typically used to determine the treatment of
23073 the green mosaic channels when demosaicing.<wbr/></p>
23074 <p>The green split value can be roughly interpreted as follows:</p>
23076 <li>R < 1.<wbr/>03 is a negligible split (<3% divergence).<wbr/></li>
23077 <li>1.<wbr/>20 <= R >= 1.<wbr/>03 will require some software
23078 correction to avoid demosaic errors (3-20% divergence).<wbr/></li>
23079 <li>R > 1.<wbr/>20 will require strong software correction to produce
23080 a usuable image (>20% divergence).<wbr/></li>
23085 <tr class="entries_header">
23086 <th class="th_details" colspan="6">HAL Implementation Details</th>
23088 <tr class="entry_cont">
23089 <td class="entry_details" colspan="6">
23090 <p>The green split given may be a static value based on prior
23091 characterization of the camera sensor using the green split
23092 calculation method given here over a large,<wbr/> representative,<wbr/> sample
23093 set of images.<wbr/> Other methods of calculation that produce equivalent
23094 results,<wbr/> and can be interpreted in the same manner,<wbr/> may be used.<wbr/></p>
23098 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23099 <!-- end of entry -->
23102 <tr class="entry" id="dynamic_android.sensor.testPatternData">
23103 <td class="entry_name
23105 android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data
23107 <td class="entry_type">
23108 <span class="entry_type_name">int32</span>
23109 <span class="entry_type_container">x</span>
23111 <span class="entry_type_array">
23114 <span class="entry_type_visibility"> [public]</span>
23121 </td> <!-- entry_type -->
23123 <td class="entry_description">
23124 <p>A pixel <code>[R,<wbr/> G_<wbr/>even,<wbr/> G_<wbr/>odd,<wbr/> B]</code> that supplies the test pattern
23125 when <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a> is SOLID_<wbr/>COLOR.<wbr/></p>
23128 <td class="entry_units">
23131 <td class="entry_range">
23134 <td class="entry_hal_version">
23138 <td class="entry_tags">
23142 <tr class="entries_header">
23143 <th class="th_details" colspan="6">Details</th>
23145 <tr class="entry_cont">
23146 <td class="entry_details" colspan="6">
23147 <p>Each color channel is treated as an unsigned 32-bit integer.<wbr/>
23148 The camera device then uses the most significant X bits
23149 that correspond to how many bits are in its Bayer raw sensor
23151 <p>For example,<wbr/> a sensor with RAW10 Bayer output would use the
23152 10 most significant bits from each color channel.<wbr/></p>
23156 <tr class="entries_header">
23157 <th class="th_details" colspan="6">HAL Implementation Details</th>
23159 <tr class="entry_cont">
23160 <td class="entry_details" colspan="6">
23165 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23166 <!-- end of entry -->
23169 <tr class="entry" id="dynamic_android.sensor.testPatternMode">
23170 <td class="entry_name
23172 android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode
23174 <td class="entry_type">
23175 <span class="entry_type_name entry_type_name_enum">int32</span>
23177 <span class="entry_type_visibility"> [public]</span>
23183 <ul class="entry_type_enum">
23185 <span class="entry_type_enum_name">OFF (v3.2)</span>
23186 <span class="entry_type_enum_notes"><p>No test pattern mode is used,<wbr/> and the camera
23187 device returns captures from the image sensor.<wbr/></p>
23188 <p>This is the default if the key is not set.<wbr/></p></span>
23191 <span class="entry_type_enum_name">SOLID_COLOR (v3.2)</span>
23192 <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
23193 respective color channel provided in
23194 <a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a>.<wbr/></p>
23195 <p>For example:</p>
23196 <pre><code>android.<wbr/>testPatternData = [0,<wbr/> 0xFFFFFFFF,<wbr/> 0xFFFFFFFF,<wbr/> 0]
23198 <p>All green pixels are 100% green.<wbr/> All red/<wbr/>blue pixels are black.<wbr/></p>
23199 <pre><code>android.<wbr/>testPatternData = [0xFFFFFFFF,<wbr/> 0,<wbr/> 0xFFFFFFFF,<wbr/> 0]
23201 <p>All red pixels are 100% red.<wbr/> Only the odd green pixels
23202 are 100% green.<wbr/> All blue pixels are 100% black.<wbr/></p></span>
23205 <span class="entry_type_enum_name">COLOR_BARS (v3.2)</span>
23206 <span class="entry_type_enum_notes"><p>All pixel data is replaced with an 8-bar color pattern.<wbr/></p>
23207 <p>The vertical bars (left-to-right) are as follows:</p>
23209 <li>100% white</li>
23218 <p>In general the image would look like the following:</p>
23219 <pre><code>W Y C G M R B K
23224 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
23225 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
23226 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
23228 (B = Blue,<wbr/> K = Black)
23230 <p>Each bar should take up 1/<wbr/>8 of the sensor pixel array width.<wbr/>
23231 When this is not possible,<wbr/> the bar size should be rounded
23232 down to the nearest integer and the pattern can repeat
23233 on the right side.<wbr/></p>
23234 <p>Each bar's height must always take up the full sensor
23235 pixel array height.<wbr/></p>
23236 <p>Each pixel in this test pattern must be set to either
23237 0% intensity or 100% intensity.<wbr/></p></span>
23240 <span class="entry_type_enum_name">COLOR_BARS_FADE_TO_GRAY (v3.2)</span>
23241 <span class="entry_type_enum_notes"><p>The test pattern is similar to COLOR_<wbr/>BARS,<wbr/> except that
23242 each bar should start at its specified color at the top,<wbr/>
23243 and fade to gray at the bottom.<wbr/></p>
23244 <p>Furthermore each bar is further subdivided into a left and
23245 right half.<wbr/> The left half should have a smooth gradient,<wbr/>
23246 and the right half should have a quantized gradient.<wbr/></p>
23247 <p>In particular,<wbr/> the right half's should consist of blocks of the
23248 same color for 1/<wbr/>16th active sensor pixel array width.<wbr/></p>
23249 <p>The least significant bits in the quantized gradient should
23250 be copied from the most significant bits of the smooth gradient.<wbr/></p>
23251 <p>The height of each bar should always be a multiple of 128.<wbr/>
23252 When this is not the case,<wbr/> the pattern should repeat at the bottom
23253 of the image.<wbr/></p></span>
23256 <span class="entry_type_enum_name">PN9 (v3.2)</span>
23257 <span class="entry_type_enum_notes"><p>All pixel data is replaced by a pseudo-random sequence
23258 generated from a PN9 512-bit sequence (typically implemented
23259 in hardware with a linear feedback shift register).<wbr/></p>
23260 <p>The generator should be reset at the beginning of each frame,<wbr/>
23261 and thus each subsequent raw frame with this test pattern should
23262 be exactly the same as the last.<wbr/></p></span>
23265 <span class="entry_type_enum_name">CUSTOM1 (v3.2)</span>
23266 <span class="entry_type_enum_value">256</span>
23267 <span class="entry_type_enum_notes"><p>The first custom test pattern.<wbr/> All custom patterns that are
23268 available only on this camera device are at least this numeric
23270 <p>All of the custom test patterns will be static
23271 (that is the raw image must not vary from frame to frame).<wbr/></p></span>
23275 </td> <!-- entry_type -->
23277 <td class="entry_description">
23278 <p>When enabled,<wbr/> the sensor sends a test pattern instead of
23279 doing a real exposure from the camera.<wbr/></p>
23282 <td class="entry_units">
23285 <td class="entry_range">
23286 <p><a href="#static_android.sensor.availableTestPatternModes">android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes</a></p>
23289 <td class="entry_hal_version">
23293 <td class="entry_tags">
23297 <tr class="entries_header">
23298 <th class="th_details" colspan="6">Details</th>
23300 <tr class="entry_cont">
23301 <td class="entry_details" colspan="6">
23302 <p>When a test pattern is enabled,<wbr/> all manual sensor controls specified
23303 by android.<wbr/>sensor.<wbr/>* will be ignored.<wbr/> All other controls should
23304 work as normal.<wbr/></p>
23305 <p>For example,<wbr/> if manual flash is enabled,<wbr/> flash firing should still
23306 occur (and that the test pattern remain unmodified,<wbr/> since the flash
23307 would not actually affect it).<wbr/></p>
23308 <p>Defaults to OFF.<wbr/></p>
23312 <tr class="entries_header">
23313 <th class="th_details" colspan="6">HAL Implementation Details</th>
23315 <tr class="entry_cont">
23316 <td class="entry_details" colspan="6">
23317 <p>All test patterns are specified in the Bayer domain.<wbr/></p>
23318 <p>The HAL may choose to substitute test patterns from the sensor
23319 with test patterns from on-device memory.<wbr/> In that case,<wbr/> it should be
23320 indistinguishable to the ISP whether the data came from the
23321 sensor interconnect bus (such as CSI2) or memory.<wbr/></p>
23325 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23326 <!-- end of entry -->
23329 <tr class="entry" id="dynamic_android.sensor.rollingShutterSkew">
23330 <td class="entry_name
23332 android.<wbr/>sensor.<wbr/>rolling<wbr/>Shutter<wbr/>Skew
23334 <td class="entry_type">
23335 <span class="entry_type_name">int64</span>
23337 <span class="entry_type_visibility"> [public]</span>
23340 <span class="entry_type_hwlevel">[limited] </span>
23345 </td> <!-- entry_type -->
23347 <td class="entry_description">
23348 <p>Duration between the start of first row exposure
23349 and the start of last row exposure.<wbr/></p>
23352 <td class="entry_units">
23356 <td class="entry_range">
23357 <p>>= 0 and <
23358 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/></p>
23361 <td class="entry_hal_version">
23365 <td class="entry_tags">
23366 <ul class="entry_tags">
23367 <li><a href="#tag_V1">V1</a></li>
23372 <tr class="entries_header">
23373 <th class="th_details" colspan="6">Details</th>
23375 <tr class="entry_cont">
23376 <td class="entry_details" colspan="6">
23377 <p>This is the exposure time skew between the first and last
23378 row exposure start times.<wbr/> The first row and the last row are
23379 the first and last rows inside of the
23380 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
23381 <p>For typical camera sensors that use rolling shutters,<wbr/> this is also equivalent
23382 to the frame readout time.<wbr/></p>
23386 <tr class="entries_header">
23387 <th class="th_details" colspan="6">HAL Implementation Details</th>
23389 <tr class="entry_cont">
23390 <td class="entry_details" colspan="6">
23391 <p>The HAL must report <code>0</code> if the sensor is using global shutter,<wbr/> where all pixels begin
23392 exposure at the same time.<wbr/></p>
23396 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23397 <!-- end of entry -->
23400 <tr class="entry" id="dynamic_android.sensor.dynamicBlackLevel">
23401 <td class="entry_name
23403 android.<wbr/>sensor.<wbr/>dynamic<wbr/>Black<wbr/>Level
23405 <td class="entry_type">
23406 <span class="entry_type_name">float</span>
23407 <span class="entry_type_container">x</span>
23409 <span class="entry_type_array">
23412 <span class="entry_type_visibility"> [public]</span>
23417 <div class="entry_type_notes">2x2 raw count block</div>
23420 </td> <!-- entry_type -->
23422 <td class="entry_description">
23423 <p>A per-frame dynamic black level offset for each of the color filter
23424 arrangement (CFA) mosaic channels.<wbr/></p>
23427 <td class="entry_units">
23430 <td class="entry_range">
23431 <p>>= 0 for each.<wbr/></p>
23434 <td class="entry_hal_version">
23438 <td class="entry_tags">
23439 <ul class="entry_tags">
23440 <li><a href="#tag_RAW">RAW</a></li>
23445 <tr class="entries_header">
23446 <th class="th_details" colspan="6">Details</th>
23448 <tr class="entry_cont">
23449 <td class="entry_details" colspan="6">
23450 <p>Camera sensor black levels may vary dramatically for different
23451 capture settings (e.<wbr/>g.<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>).<wbr/> The fixed black
23452 level reported by <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> may be too
23453 inaccurate to represent the actual value on a per-frame basis.<wbr/> The
23454 camera device internal pipeline relies on reliable black level values
23455 to process the raw images appropriately.<wbr/> To get the best image
23456 quality,<wbr/> the camera device may choose to estimate the per frame black
23457 level values either based on optically shielded black regions
23458 (<a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a>) or its internal model.<wbr/></p>
23459 <p>This key reports the camera device estimated per-frame zero light
23460 value for each of the CFA mosaic channels in the camera sensor.<wbr/> The
23461 <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> may only represent a coarse
23462 approximation of the actual black level values.<wbr/> This value is the
23463 black level used in camera device internal image processing pipeline
23464 and generally more accurate than the fixed black level values.<wbr/>
23465 However,<wbr/> since they are estimated values by the camera device,<wbr/> they
23466 may not be as accurate as the black level values calculated from the
23467 optical black pixels reported by <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a>.<wbr/></p>
23468 <p>The values are given in the same order as channels listed for the CFA
23469 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
23470 nth value given corresponds to the black level offset for the nth
23471 color channel listed in the CFA.<wbr/></p>
23472 <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
23473 camera device advertises this key via <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureResultKeys">CameraCharacteristics#getAvailableCaptureResultKeys</a>.<wbr/></p>
23477 <tr class="entries_header">
23478 <th class="th_details" colspan="6">HAL Implementation Details</th>
23480 <tr class="entry_cont">
23481 <td class="entry_details" colspan="6">
23482 <p>The values are given in row-column scan order,<wbr/> with the first value
23483 corresponding to the element of the CFA in row=0,<wbr/> column=0.<wbr/></p>
23487 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23488 <!-- end of entry -->
23491 <tr class="entry" id="dynamic_android.sensor.dynamicWhiteLevel">
23492 <td class="entry_name
23494 android.<wbr/>sensor.<wbr/>dynamic<wbr/>White<wbr/>Level
23496 <td class="entry_type">
23497 <span class="entry_type_name">int32</span>
23499 <span class="entry_type_visibility"> [public]</span>
23506 </td> <!-- entry_type -->
23508 <td class="entry_description">
23509 <p>Maximum raw value output by sensor for this frame.<wbr/></p>
23512 <td class="entry_units">
23515 <td class="entry_range">
23519 <td class="entry_hal_version">
23523 <td class="entry_tags">
23524 <ul class="entry_tags">
23525 <li><a href="#tag_RAW">RAW</a></li>
23530 <tr class="entries_header">
23531 <th class="th_details" colspan="6">Details</th>
23533 <tr class="entry_cont">
23534 <td class="entry_details" colspan="6">
23535 <p>Since the <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> may change for different
23536 capture settings (e.<wbr/>g.,<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>),<wbr/> the white
23537 level will change accordingly.<wbr/> This key is similar to
23538 <a href="#static_android.sensor.info.whiteLevel">android.<wbr/>sensor.<wbr/>info.<wbr/>white<wbr/>Level</a>,<wbr/> but specifies the camera device
23539 estimated white level for each frame.<wbr/></p>
23540 <p>This key will be available if <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a> is
23541 available or the camera device advertises this key via
23542 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a>.<wbr/></p>
23546 <tr class="entries_header">
23547 <th class="th_details" colspan="6">HAL Implementation Details</th>
23549 <tr class="entry_cont">
23550 <td class="entry_details" colspan="6">
23551 <p>The full bit depth of the sensor must be available in the raw data,<wbr/>
23552 so the value for linear sensors should not be significantly lower
23553 than maximum raw value supported,<wbr/> i.<wbr/>e.<wbr/> 2^(sensor bits per pixel).<wbr/></p>
23557 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23558 <!-- end of entry -->
23562 <!-- end of kind -->
23565 <!-- end of section -->
23566 <tr><td colspan="7" id="section_shading" class="section">shading</td></tr>
23569 <tr><td colspan="7" class="kind">controls</td></tr>
23571 <thead class="entries_header">
23573 <th class="th_name">Property Name</th>
23574 <th class="th_type">Type</th>
23575 <th class="th_description">Description</th>
23576 <th class="th_units">Units</th>
23577 <th class="th_range">Range</th>
23578 <th class="th_hal_version">Initial HIDL HAL version</th>
23579 <th class="th_tags">Tags</th>
23594 <tr class="entry" id="controls_android.shading.mode">
23595 <td class="entry_name
23597 android.<wbr/>shading.<wbr/>mode
23599 <td class="entry_type">
23600 <span class="entry_type_name entry_type_name_enum">byte</span>
23602 <span class="entry_type_visibility"> [public]</span>
23605 <span class="entry_type_hwlevel">[full] </span>
23609 <ul class="entry_type_enum">
23611 <span class="entry_type_enum_name">OFF (v3.2)</span>
23612 <span class="entry_type_enum_notes"><p>No lens shading correction is applied.<wbr/></p></span>
23615 <span class="entry_type_enum_name">FAST (v3.2)</span>
23616 <span class="entry_type_enum_notes"><p>Apply lens shading corrections,<wbr/> without slowing
23617 frame rate relative to sensor raw output</p></span>
23620 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
23621 <span class="entry_type_enum_notes"><p>Apply high-quality lens shading correction,<wbr/> at the
23622 cost of possibly reduced frame rate.<wbr/></p></span>
23626 </td> <!-- entry_type -->
23628 <td class="entry_description">
23629 <p>Quality of lens shading correction applied
23630 to the image data.<wbr/></p>
23633 <td class="entry_units">
23636 <td class="entry_range">
23637 <p><a href="#static_android.shading.availableModes">android.<wbr/>shading.<wbr/>available<wbr/>Modes</a></p>
23640 <td class="entry_hal_version">
23644 <td class="entry_tags">
23648 <tr class="entries_header">
23649 <th class="th_details" colspan="6">Details</th>
23651 <tr class="entry_cont">
23652 <td class="entry_details" colspan="6">
23653 <p>When set to OFF mode,<wbr/> no lens shading correction will be applied by the
23654 camera device,<wbr/> and an identity lens shading map data will be provided
23655 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
23656 shading map with size of <code>[ 4,<wbr/> 3 ]</code>,<wbr/>
23657 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
23658 map shown below:</p>
23659 <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/>
23660 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/>
23661 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/>
23662 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/>
23663 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/>
23664 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 ]
23666 <p>When set to other modes,<wbr/> lens shading correction will be applied by the camera
23667 device.<wbr/> Applications can request lens shading map data by setting
23668 <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
23669 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
23670 data will be the one applied by the camera device for this capture request.<wbr/></p>
23671 <p>The shading map data may depend on the auto-exposure (AE) and AWB statistics,<wbr/> therefore
23672 the reliability of the map data may be affected by the AE and AWB algorithms.<wbr/> When AE and
23673 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>
23674 OFF),<wbr/> to get best results,<wbr/> it is recommended that the applications wait for the AE and AWB
23675 to be converged before using the returned shading map data.<wbr/></p>
23680 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23681 <!-- end of entry -->
23684 <tr class="entry" id="controls_android.shading.strength">
23685 <td class="entry_name
23687 android.<wbr/>shading.<wbr/>strength
23689 <td class="entry_type">
23690 <span class="entry_type_name">byte</span>
23692 <span class="entry_type_visibility"> [system]</span>
23699 </td> <!-- entry_type -->
23701 <td class="entry_description">
23702 <p>Control the amount of shading correction
23703 applied to the images</p>
23706 <td class="entry_units">
23707 unitless: 1-10; 10 is full shading
23711 <td class="entry_range">
23714 <td class="entry_hal_version">
23718 <td class="entry_tags">
23719 <ul class="entry_tags">
23720 <li><a href="#tag_FUTURE">FUTURE</a></li>
23727 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23728 <!-- end of entry -->
23732 <!-- end of kind -->
23734 <tr><td colspan="7" class="kind">dynamic</td></tr>
23736 <thead class="entries_header">
23738 <th class="th_name">Property Name</th>
23739 <th class="th_type">Type</th>
23740 <th class="th_description">Description</th>
23741 <th class="th_units">Units</th>
23742 <th class="th_range">Range</th>
23743 <th class="th_hal_version">Initial HIDL HAL version</th>
23744 <th class="th_tags">Tags</th>
23759 <tr class="entry" id="dynamic_android.shading.mode">
23760 <td class="entry_name
23762 android.<wbr/>shading.<wbr/>mode
23764 <td class="entry_type">
23765 <span class="entry_type_name entry_type_name_enum">byte</span>
23767 <span class="entry_type_visibility"> [public]</span>
23770 <span class="entry_type_hwlevel">[full] </span>
23774 <ul class="entry_type_enum">
23776 <span class="entry_type_enum_name">OFF (v3.2)</span>
23777 <span class="entry_type_enum_notes"><p>No lens shading correction is applied.<wbr/></p></span>
23780 <span class="entry_type_enum_name">FAST (v3.2)</span>
23781 <span class="entry_type_enum_notes"><p>Apply lens shading corrections,<wbr/> without slowing
23782 frame rate relative to sensor raw output</p></span>
23785 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
23786 <span class="entry_type_enum_notes"><p>Apply high-quality lens shading correction,<wbr/> at the
23787 cost of possibly reduced frame rate.<wbr/></p></span>
23791 </td> <!-- entry_type -->
23793 <td class="entry_description">
23794 <p>Quality of lens shading correction applied
23795 to the image data.<wbr/></p>
23798 <td class="entry_units">
23801 <td class="entry_range">
23802 <p><a href="#static_android.shading.availableModes">android.<wbr/>shading.<wbr/>available<wbr/>Modes</a></p>
23805 <td class="entry_hal_version">
23809 <td class="entry_tags">
23813 <tr class="entries_header">
23814 <th class="th_details" colspan="6">Details</th>
23816 <tr class="entry_cont">
23817 <td class="entry_details" colspan="6">
23818 <p>When set to OFF mode,<wbr/> no lens shading correction will be applied by the
23819 camera device,<wbr/> and an identity lens shading map data will be provided
23820 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
23821 shading map with size of <code>[ 4,<wbr/> 3 ]</code>,<wbr/>
23822 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
23823 map shown below:</p>
23824 <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/>
23825 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/>
23826 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/>
23827 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/>
23828 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/>
23829 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 ]
23831 <p>When set to other modes,<wbr/> lens shading correction will be applied by the camera
23832 device.<wbr/> Applications can request lens shading map data by setting
23833 <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
23834 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
23835 data will be the one applied by the camera device for this capture request.<wbr/></p>
23836 <p>The shading map data may depend on the auto-exposure (AE) and AWB statistics,<wbr/> therefore
23837 the reliability of the map data may be affected by the AE and AWB algorithms.<wbr/> When AE and
23838 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>
23839 OFF),<wbr/> to get best results,<wbr/> it is recommended that the applications wait for the AE and AWB
23840 to be converged before using the returned shading map data.<wbr/></p>
23845 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23846 <!-- end of entry -->
23850 <!-- end of kind -->
23852 <tr><td colspan="7" class="kind">static</td></tr>
23854 <thead class="entries_header">
23856 <th class="th_name">Property Name</th>
23857 <th class="th_type">Type</th>
23858 <th class="th_description">Description</th>
23859 <th class="th_units">Units</th>
23860 <th class="th_range">Range</th>
23861 <th class="th_hal_version">Initial HIDL HAL version</th>
23862 <th class="th_tags">Tags</th>
23877 <tr class="entry" id="static_android.shading.availableModes">
23878 <td class="entry_name
23880 android.<wbr/>shading.<wbr/>available<wbr/>Modes
23882 <td class="entry_type">
23883 <span class="entry_type_name">byte</span>
23884 <span class="entry_type_container">x</span>
23886 <span class="entry_type_array">
23889 <span class="entry_type_visibility"> [public as enumList]</span>
23892 <span class="entry_type_hwlevel">[legacy] </span>
23895 <div class="entry_type_notes">List of enums (android.<wbr/>shading.<wbr/>mode).<wbr/></div>
23898 </td> <!-- entry_type -->
23900 <td class="entry_description">
23901 <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>
23904 <td class="entry_units">
23907 <td class="entry_range">
23908 <p>Any value listed in <a href="#controls_android.shading.mode">android.<wbr/>shading.<wbr/>mode</a></p>
23911 <td class="entry_hal_version">
23915 <td class="entry_tags">
23919 <tr class="entries_header">
23920 <th class="th_details" colspan="6">Details</th>
23922 <tr class="entry_cont">
23923 <td class="entry_details" colspan="6">
23924 <p>This list contains lens shading modes that can be set for the camera device.<wbr/>
23925 Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always
23926 list OFF and FAST mode.<wbr/> This includes all FULL level devices.<wbr/>
23927 LEGACY devices will always only support FAST mode.<wbr/></p>
23931 <tr class="entries_header">
23932 <th class="th_details" colspan="6">HAL Implementation Details</th>
23934 <tr class="entry_cont">
23935 <td class="entry_details" colspan="6">
23936 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if lens shading correction control is
23937 available on the camera device,<wbr/> but the underlying implementation can be the same for
23938 both modes.<wbr/> That is,<wbr/> if the highest quality implementation on the camera device does not
23939 slow down capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
23943 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23944 <!-- end of entry -->
23948 <!-- end of kind -->
23951 <!-- end of section -->
23952 <tr><td colspan="7" id="section_statistics" class="section">statistics</td></tr>
23955 <tr><td colspan="7" class="kind">controls</td></tr>
23957 <thead class="entries_header">
23959 <th class="th_name">Property Name</th>
23960 <th class="th_type">Type</th>
23961 <th class="th_description">Description</th>
23962 <th class="th_units">Units</th>
23963 <th class="th_range">Range</th>
23964 <th class="th_hal_version">Initial HIDL HAL version</th>
23965 <th class="th_tags">Tags</th>
23980 <tr class="entry" id="controls_android.statistics.faceDetectMode">
23981 <td class="entry_name
23983 android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode
23985 <td class="entry_type">
23986 <span class="entry_type_name entry_type_name_enum">byte</span>
23988 <span class="entry_type_visibility"> [public]</span>
23991 <span class="entry_type_hwlevel">[legacy] </span>
23995 <ul class="entry_type_enum">
23997 <span class="entry_type_enum_name">OFF (v3.2)</span>
23998 <span class="entry_type_enum_notes"><p>Do not include face detection statistics in capture
23999 results.<wbr/></p></span>
24002 <span class="entry_type_enum_name">SIMPLE (v3.2)</span>
24003 <span class="entry_type_enum_optional">[optional]</span>
24004 <span class="entry_type_enum_notes"><p>Return face rectangle and confidence values only.<wbr/></p></span>
24007 <span class="entry_type_enum_name">FULL (v3.2)</span>
24008 <span class="entry_type_enum_optional">[optional]</span>
24009 <span class="entry_type_enum_notes"><p>Return all face
24010 metadata.<wbr/></p>
24011 <p>In this mode,<wbr/> face rectangles,<wbr/> scores,<wbr/> landmarks,<wbr/> and face IDs are all valid.<wbr/></p></span>
24015 </td> <!-- entry_type -->
24017 <td class="entry_description">
24018 <p>Operating mode for the face detector
24022 <td class="entry_units">
24025 <td class="entry_range">
24026 <p><a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a></p>
24029 <td class="entry_hal_version">
24033 <td class="entry_tags">
24034 <ul class="entry_tags">
24035 <li><a href="#tag_BC">BC</a></li>
24040 <tr class="entries_header">
24041 <th class="th_details" colspan="6">Details</th>
24043 <tr class="entry_cont">
24044 <td class="entry_details" colspan="6">
24045 <p>Whether face detection is enabled,<wbr/> and whether it
24046 should output just the basic fields or the full set of
24051 <tr class="entries_header">
24052 <th class="th_details" colspan="6">HAL Implementation Details</th>
24054 <tr class="entry_cont">
24055 <td class="entry_details" colspan="6">
24056 <p>SIMPLE mode must fill in <a href="#dynamic_android.statistics.faceRectangles">android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles</a> and
24057 <a href="#dynamic_android.statistics.faceScores">android.<wbr/>statistics.<wbr/>face<wbr/>Scores</a>.<wbr/>
24058 FULL mode must also fill in <a href="#dynamic_android.statistics.faceIds">android.<wbr/>statistics.<wbr/>face<wbr/>Ids</a>,<wbr/> and
24059 <a href="#dynamic_android.statistics.faceLandmarks">android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks</a>.<wbr/></p>
24063 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24064 <!-- end of entry -->
24067 <tr class="entry" id="controls_android.statistics.histogramMode">
24068 <td class="entry_name
24070 android.<wbr/>statistics.<wbr/>histogram<wbr/>Mode
24072 <td class="entry_type">
24073 <span class="entry_type_name entry_type_name_enum">byte</span>
24075 <span class="entry_type_visibility"> [system as boolean]</span>
24081 <ul class="entry_type_enum">
24083 <span class="entry_type_enum_name">OFF (v3.2)</span>
24086 <span class="entry_type_enum_name">ON (v3.2)</span>
24090 </td> <!-- entry_type -->
24092 <td class="entry_description">
24093 <p>Operating mode for histogram
24097 <td class="entry_units">
24100 <td class="entry_range">
24103 <td class="entry_hal_version">
24107 <td class="entry_tags">
24108 <ul class="entry_tags">
24109 <li><a href="#tag_FUTURE">FUTURE</a></li>
24116 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24117 <!-- end of entry -->
24120 <tr class="entry" id="controls_android.statistics.sharpnessMapMode">
24121 <td class="entry_name
24123 android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map<wbr/>Mode
24125 <td class="entry_type">
24126 <span class="entry_type_name entry_type_name_enum">byte</span>
24128 <span class="entry_type_visibility"> [system as boolean]</span>
24134 <ul class="entry_type_enum">
24136 <span class="entry_type_enum_name">OFF (v3.2)</span>
24139 <span class="entry_type_enum_name">ON (v3.2)</span>
24143 </td> <!-- entry_type -->
24145 <td class="entry_description">
24146 <p>Operating mode for sharpness map
24150 <td class="entry_units">
24153 <td class="entry_range">
24156 <td class="entry_hal_version">
24160 <td class="entry_tags">
24161 <ul class="entry_tags">
24162 <li><a href="#tag_FUTURE">FUTURE</a></li>
24169 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24170 <!-- end of entry -->
24173 <tr class="entry" id="controls_android.statistics.hotPixelMapMode">
24174 <td class="entry_name
24176 android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode
24178 <td class="entry_type">
24179 <span class="entry_type_name entry_type_name_enum">byte</span>
24181 <span class="entry_type_visibility"> [public as boolean]</span>
24187 <ul class="entry_type_enum">
24189 <span class="entry_type_enum_name">OFF (v3.2)</span>
24190 <span class="entry_type_enum_notes"><p>Hot pixel map production is disabled.<wbr/></p></span>
24193 <span class="entry_type_enum_name">ON (v3.2)</span>
24194 <span class="entry_type_enum_notes"><p>Hot pixel map production is enabled.<wbr/></p></span>
24198 </td> <!-- entry_type -->
24200 <td class="entry_description">
24201 <p>Operating mode for hot pixel map generation.<wbr/></p>
24204 <td class="entry_units">
24207 <td class="entry_range">
24208 <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>
24211 <td class="entry_hal_version">
24215 <td class="entry_tags">
24216 <ul class="entry_tags">
24217 <li><a href="#tag_V1">V1</a></li>
24218 <li><a href="#tag_RAW">RAW</a></li>
24223 <tr class="entries_header">
24224 <th class="th_details" colspan="6">Details</th>
24226 <tr class="entry_cont">
24227 <td class="entry_details" colspan="6">
24228 <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/>
24229 If set to <code>false</code>,<wbr/> no hot pixel map will be returned.<wbr/></p>
24234 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24235 <!-- end of entry -->
24238 <tr class="entry" id="controls_android.statistics.lensShadingMapMode">
24239 <td class="entry_name
24241 android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode
24243 <td class="entry_type">
24244 <span class="entry_type_name entry_type_name_enum">byte</span>
24246 <span class="entry_type_visibility"> [public]</span>
24249 <span class="entry_type_hwlevel">[full] </span>
24253 <ul class="entry_type_enum">
24255 <span class="entry_type_enum_name">OFF (v3.2)</span>
24256 <span class="entry_type_enum_notes"><p>Do not include a lens shading map in the capture result.<wbr/></p></span>
24259 <span class="entry_type_enum_name">ON (v3.2)</span>
24260 <span class="entry_type_enum_notes"><p>Include a lens shading map in the capture result.<wbr/></p></span>
24264 </td> <!-- entry_type -->
24266 <td class="entry_description">
24267 <p>Whether the camera device will output the lens
24268 shading map in output result metadata.<wbr/></p>
24271 <td class="entry_units">
24274 <td class="entry_range">
24275 <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>
24278 <td class="entry_hal_version">
24282 <td class="entry_tags">
24283 <ul class="entry_tags">
24284 <li><a href="#tag_RAW">RAW</a></li>
24289 <tr class="entries_header">
24290 <th class="th_details" colspan="6">Details</th>
24292 <tr class="entry_cont">
24293 <td class="entry_details" colspan="6">
24294 <p>When set to ON,<wbr/>
24295 <a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> will be provided in
24296 the output result metadata.<wbr/></p>
24297 <p>ON is always supported on devices with the RAW capability.<wbr/></p>
24302 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24303 <!-- end of entry -->
24306 <tr class="entry" id="controls_android.statistics.oisDataMode">
24307 <td class="entry_name
24309 android.<wbr/>statistics.<wbr/>ois<wbr/>Data<wbr/>Mode
24311 <td class="entry_type">
24312 <span class="entry_type_name entry_type_name_enum">byte</span>
24314 <span class="entry_type_visibility"> [public]</span>
24320 <ul class="entry_type_enum">
24322 <span class="entry_type_enum_name">OFF (v3.3)</span>
24323 <span class="entry_type_enum_notes"><p>Do not include OIS data in the capture result.<wbr/></p></span>
24326 <span class="entry_type_enum_name">ON (v3.3)</span>
24327 <span class="entry_type_enum_notes"><p>Include OIS data in the capture result.<wbr/></p></span>
24331 </td> <!-- entry_type -->
24333 <td class="entry_description">
24334 <p>A control for selecting whether OIS position information is included in output
24335 result metadata.<wbr/></p>
24338 <td class="entry_units">
24341 <td class="entry_range">
24342 <p><a href="#static_android.statistics.info.availableOisDataModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Ois<wbr/>Data<wbr/>Modes</a></p>
24345 <td class="entry_hal_version">
24349 <td class="entry_tags">
24355 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24356 <!-- end of entry -->
24360 <!-- end of kind -->
24362 <tr><td colspan="7" class="kind">static</td></tr>
24364 <thead class="entries_header">
24366 <th class="th_name">Property Name</th>
24367 <th class="th_type">Type</th>
24368 <th class="th_description">Description</th>
24369 <th class="th_units">Units</th>
24370 <th class="th_range">Range</th>
24371 <th class="th_hal_version">Initial HIDL HAL version</th>
24372 <th class="th_tags">Tags</th>
24389 <tr class="entry" id="static_android.statistics.info.availableFaceDetectModes">
24390 <td class="entry_name
24392 android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes
24394 <td class="entry_type">
24395 <span class="entry_type_name">byte</span>
24396 <span class="entry_type_container">x</span>
24398 <span class="entry_type_array">
24401 <span class="entry_type_visibility"> [public as enumList]</span>
24404 <span class="entry_type_hwlevel">[legacy] </span>
24407 <div class="entry_type_notes">List of enums from android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</div>
24410 </td> <!-- entry_type -->
24412 <td class="entry_description">
24413 <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
24414 supported by this camera device.<wbr/></p>
24417 <td class="entry_units">
24420 <td class="entry_range">
24421 <p>Any value listed in <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></p>
24424 <td class="entry_hal_version">
24428 <td class="entry_tags">
24432 <tr class="entries_header">
24433 <th class="th_details" colspan="6">Details</th>
24435 <tr class="entry_cont">
24436 <td class="entry_details" colspan="6">
24437 <p>OFF is always supported.<wbr/></p>
24442 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24443 <!-- end of entry -->
24446 <tr class="entry" id="static_android.statistics.info.histogramBucketCount">
24447 <td class="entry_name
24449 android.<wbr/>statistics.<wbr/>info.<wbr/>histogram<wbr/>Bucket<wbr/>Count
24451 <td class="entry_type">
24452 <span class="entry_type_name">int32</span>
24454 <span class="entry_type_visibility"> [system]</span>
24461 </td> <!-- entry_type -->
24463 <td class="entry_description">
24464 <p>Number of histogram buckets
24468 <td class="entry_units">
24471 <td class="entry_range">
24475 <td class="entry_hal_version">
24479 <td class="entry_tags">
24480 <ul class="entry_tags">
24481 <li><a href="#tag_FUTURE">FUTURE</a></li>
24488 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24489 <!-- end of entry -->
24492 <tr class="entry" id="static_android.statistics.info.maxFaceCount">
24493 <td class="entry_name
24495 android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Face<wbr/>Count
24497 <td class="entry_type">
24498 <span class="entry_type_name">int32</span>
24500 <span class="entry_type_visibility"> [public]</span>
24503 <span class="entry_type_hwlevel">[legacy] </span>
24508 </td> <!-- entry_type -->
24510 <td class="entry_description">
24511 <p>The maximum number of simultaneously detectable
24515 <td class="entry_units">
24518 <td class="entry_range">
24519 <p>0 for cameras without available face detection; otherwise:
24520 <code>>=4</code> for LIMITED or FULL hwlevel devices or
24521 <code>>0</code> for LEGACY devices.<wbr/></p>
24524 <td class="entry_hal_version">
24528 <td class="entry_tags">
24529 <ul class="entry_tags">
24530 <li><a href="#tag_BC">BC</a></li>
24537 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24538 <!-- end of entry -->
24541 <tr class="entry" id="static_android.statistics.info.maxHistogramCount">
24542 <td class="entry_name
24544 android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Histogram<wbr/>Count
24546 <td class="entry_type">
24547 <span class="entry_type_name">int32</span>
24549 <span class="entry_type_visibility"> [system]</span>
24556 </td> <!-- entry_type -->
24558 <td class="entry_description">
24559 <p>Maximum value possible for a histogram
24563 <td class="entry_units">
24566 <td class="entry_range">
24569 <td class="entry_hal_version">
24573 <td class="entry_tags">
24574 <ul class="entry_tags">
24575 <li><a href="#tag_FUTURE">FUTURE</a></li>
24582 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24583 <!-- end of entry -->
24586 <tr class="entry" id="static_android.statistics.info.maxSharpnessMapValue">
24587 <td class="entry_name
24589 android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Sharpness<wbr/>Map<wbr/>Value
24591 <td class="entry_type">
24592 <span class="entry_type_name">int32</span>
24594 <span class="entry_type_visibility"> [system]</span>
24601 </td> <!-- entry_type -->
24603 <td class="entry_description">
24604 <p>Maximum value possible for a sharpness map
24608 <td class="entry_units">
24611 <td class="entry_range">
24614 <td class="entry_hal_version">
24618 <td class="entry_tags">
24619 <ul class="entry_tags">
24620 <li><a href="#tag_FUTURE">FUTURE</a></li>
24627 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24628 <!-- end of entry -->
24631 <tr class="entry" id="static_android.statistics.info.sharpnessMapSize">
24632 <td class="entry_name
24634 android.<wbr/>statistics.<wbr/>info.<wbr/>sharpness<wbr/>Map<wbr/>Size
24636 <td class="entry_type">
24637 <span class="entry_type_name">int32</span>
24638 <span class="entry_type_container">x</span>
24640 <span class="entry_type_array">
24643 <span class="entry_type_visibility"> [system as size]</span>
24648 <div class="entry_type_notes">width x height</div>
24651 </td> <!-- entry_type -->
24653 <td class="entry_description">
24654 <p>Dimensions of the sharpness
24658 <td class="entry_units">
24661 <td class="entry_range">
24662 <p>Must be at least 32 x 32</p>
24665 <td class="entry_hal_version">
24669 <td class="entry_tags">
24670 <ul class="entry_tags">
24671 <li><a href="#tag_FUTURE">FUTURE</a></li>
24678 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24679 <!-- end of entry -->
24682 <tr class="entry" id="static_android.statistics.info.availableHotPixelMapModes">
24683 <td class="entry_name
24685 android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Map<wbr/>Modes
24687 <td class="entry_type">
24688 <span class="entry_type_name">byte</span>
24689 <span class="entry_type_container">x</span>
24691 <span class="entry_type_array">
24694 <span class="entry_type_visibility"> [public as boolean]</span>
24699 <div class="entry_type_notes">list of enums</div>
24702 </td> <!-- entry_type -->
24704 <td class="entry_description">
24705 <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
24706 supported by this camera device.<wbr/></p>
24709 <td class="entry_units">
24712 <td class="entry_range">
24713 <p>Any value listed in <a href="#controls_android.statistics.hotPixelMapMode">android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode</a></p>
24716 <td class="entry_hal_version">
24720 <td class="entry_tags">
24721 <ul class="entry_tags">
24722 <li><a href="#tag_V1">V1</a></li>
24723 <li><a href="#tag_RAW">RAW</a></li>
24728 <tr class="entries_header">
24729 <th class="th_details" colspan="6">Details</th>
24731 <tr class="entry_cont">
24732 <td class="entry_details" colspan="6">
24733 <p>If no hotpixel map output is available for this camera device,<wbr/> this will contain only
24734 <code>false</code>.<wbr/></p>
24735 <p>ON is always supported on devices with the RAW capability.<wbr/></p>
24740 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24741 <!-- end of entry -->
24744 <tr class="entry" id="static_android.statistics.info.availableLensShadingMapModes">
24745 <td class="entry_name
24747 android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Lens<wbr/>Shading<wbr/>Map<wbr/>Modes
24749 <td class="entry_type">
24750 <span class="entry_type_name">byte</span>
24751 <span class="entry_type_container">x</span>
24753 <span class="entry_type_array">
24756 <span class="entry_type_visibility"> [public as enumList]</span>
24761 <div class="entry_type_notes">list of enums</div>
24764 </td> <!-- entry_type -->
24766 <td class="entry_description">
24767 <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
24768 are supported by this camera device.<wbr/></p>
24771 <td class="entry_units">
24774 <td class="entry_range">
24775 <p>Any value listed in <a href="#controls_android.statistics.lensShadingMapMode">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode</a></p>
24778 <td class="entry_hal_version">
24782 <td class="entry_tags">
24786 <tr class="entries_header">
24787 <th class="th_details" colspan="6">Details</th>
24789 <tr class="entry_cont">
24790 <td class="entry_details" colspan="6">
24791 <p>If no lens shading map output is available for this camera device,<wbr/> this key will
24792 contain only OFF.<wbr/></p>
24793 <p>ON is always supported on devices with the RAW capability.<wbr/>
24794 LEGACY mode devices will always only support OFF.<wbr/></p>
24799 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24800 <!-- end of entry -->
24803 <tr class="entry" id="static_android.statistics.info.availableOisDataModes">
24804 <td class="entry_name
24806 android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Ois<wbr/>Data<wbr/>Modes
24808 <td class="entry_type">
24809 <span class="entry_type_name">byte</span>
24810 <span class="entry_type_container">x</span>
24812 <span class="entry_type_array">
24815 <span class="entry_type_visibility"> [public as enumList]</span>
24820 <div class="entry_type_notes">list of enums</div>
24823 </td> <!-- entry_type -->
24825 <td class="entry_description">
24826 <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
24827 are supported by this camera device.<wbr/></p>
24830 <td class="entry_units">
24833 <td class="entry_range">
24834 <p>Any value listed in <a href="#controls_android.statistics.oisDataMode">android.<wbr/>statistics.<wbr/>ois<wbr/>Data<wbr/>Mode</a></p>
24837 <td class="entry_hal_version">
24841 <td class="entry_tags">
24845 <tr class="entries_header">
24846 <th class="th_details" colspan="6">Details</th>
24848 <tr class="entry_cont">
24849 <td class="entry_details" colspan="6">
24850 <p>If no OIS data output is available for this camera device,<wbr/> this key will
24851 contain only OFF.<wbr/></p>
24856 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24857 <!-- end of entry -->
24864 <!-- end of kind -->
24866 <tr><td colspan="7" class="kind">dynamic</td></tr>
24868 <thead class="entries_header">
24870 <th class="th_name">Property Name</th>
24871 <th class="th_type">Type</th>
24872 <th class="th_description">Description</th>
24873 <th class="th_units">Units</th>
24874 <th class="th_range">Range</th>
24875 <th class="th_hal_version">Initial HIDL HAL version</th>
24876 <th class="th_tags">Tags</th>
24891 <tr class="entry" id="dynamic_android.statistics.faceDetectMode">
24892 <td class="entry_name
24894 android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode
24896 <td class="entry_type">
24897 <span class="entry_type_name entry_type_name_enum">byte</span>
24899 <span class="entry_type_visibility"> [public]</span>
24902 <span class="entry_type_hwlevel">[legacy] </span>
24906 <ul class="entry_type_enum">
24908 <span class="entry_type_enum_name">OFF (v3.2)</span>
24909 <span class="entry_type_enum_notes"><p>Do not include face detection statistics in capture
24910 results.<wbr/></p></span>
24913 <span class="entry_type_enum_name">SIMPLE (v3.2)</span>
24914 <span class="entry_type_enum_optional">[optional]</span>
24915 <span class="entry_type_enum_notes"><p>Return face rectangle and confidence values only.<wbr/></p></span>
24918 <span class="entry_type_enum_name">FULL (v3.2)</span>
24919 <span class="entry_type_enum_optional">[optional]</span>
24920 <span class="entry_type_enum_notes"><p>Return all face
24921 metadata.<wbr/></p>
24922 <p>In this mode,<wbr/> face rectangles,<wbr/> scores,<wbr/> landmarks,<wbr/> and face IDs are all valid.<wbr/></p></span>
24926 </td> <!-- entry_type -->
24928 <td class="entry_description">
24929 <p>Operating mode for the face detector
24933 <td class="entry_units">
24936 <td class="entry_range">
24937 <p><a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a></p>
24940 <td class="entry_hal_version">
24944 <td class="entry_tags">
24945 <ul class="entry_tags">
24946 <li><a href="#tag_BC">BC</a></li>
24951 <tr class="entries_header">
24952 <th class="th_details" colspan="6">Details</th>
24954 <tr class="entry_cont">
24955 <td class="entry_details" colspan="6">
24956 <p>Whether face detection is enabled,<wbr/> and whether it
24957 should output just the basic fields or the full set of
24962 <tr class="entries_header">
24963 <th class="th_details" colspan="6">HAL Implementation Details</th>
24965 <tr class="entry_cont">
24966 <td class="entry_details" colspan="6">
24967 <p>SIMPLE mode must fill in <a href="#dynamic_android.statistics.faceRectangles">android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles</a> and
24968 <a href="#dynamic_android.statistics.faceScores">android.<wbr/>statistics.<wbr/>face<wbr/>Scores</a>.<wbr/>
24969 FULL mode must also fill in <a href="#dynamic_android.statistics.faceIds">android.<wbr/>statistics.<wbr/>face<wbr/>Ids</a>,<wbr/> and
24970 <a href="#dynamic_android.statistics.faceLandmarks">android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks</a>.<wbr/></p>
24974 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24975 <!-- end of entry -->
24978 <tr class="entry" id="dynamic_android.statistics.faceIds">
24979 <td class="entry_name
24981 android.<wbr/>statistics.<wbr/>face<wbr/>Ids
24983 <td class="entry_type">
24984 <span class="entry_type_name">int32</span>
24985 <span class="entry_type_container">x</span>
24987 <span class="entry_type_array">
24990 <span class="entry_type_visibility"> [ndk_public]</span>
24993 <span class="entry_type_hwlevel">[legacy] </span>
24998 </td> <!-- entry_type -->
25000 <td class="entry_description">
25001 <p>List of unique IDs for detected faces.<wbr/></p>
25004 <td class="entry_units">
25007 <td class="entry_range">
25010 <td class="entry_hal_version">
25014 <td class="entry_tags">
25015 <ul class="entry_tags">
25016 <li><a href="#tag_BC">BC</a></li>
25021 <tr class="entries_header">
25022 <th class="th_details" colspan="6">Details</th>
25024 <tr class="entry_cont">
25025 <td class="entry_details" colspan="6">
25026 <p>Each detected face is given a unique ID that is valid for as long as the face is visible
25027 to the camera device.<wbr/> A face that leaves the field of view and later returns may be
25028 assigned a new ID.<wbr/></p>
25029 <p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> == FULL</p>
25034 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25035 <!-- end of entry -->
25038 <tr class="entry" id="dynamic_android.statistics.faceLandmarks">
25039 <td class="entry_name
25041 android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks
25043 <td class="entry_type">
25044 <span class="entry_type_name">int32</span>
25045 <span class="entry_type_container">x</span>
25047 <span class="entry_type_array">
25050 <span class="entry_type_visibility"> [ndk_public]</span>
25053 <span class="entry_type_hwlevel">[legacy] </span>
25056 <div class="entry_type_notes">(leftEyeX,<wbr/> leftEyeY,<wbr/> rightEyeX,<wbr/> rightEyeY,<wbr/> mouthX,<wbr/> mouthY)</div>
25059 </td> <!-- entry_type -->
25061 <td class="entry_description">
25062 <p>List of landmarks for detected
25066 <td class="entry_units">
25069 <td class="entry_range">
25072 <td class="entry_hal_version">
25076 <td class="entry_tags">
25077 <ul class="entry_tags">
25078 <li><a href="#tag_BC">BC</a></li>
25083 <tr class="entries_header">
25084 <th class="th_details" colspan="6">Details</th>
25086 <tr class="entry_cont">
25087 <td class="entry_details" colspan="6">
25088 <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
25089 <code>(0,<wbr/> 0)</code> being the top-left pixel of the active array.<wbr/></p>
25090 <p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> == FULL</p>
25095 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25096 <!-- end of entry -->
25099 <tr class="entry" id="dynamic_android.statistics.faceRectangles">
25100 <td class="entry_name
25102 android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles
25104 <td class="entry_type">
25105 <span class="entry_type_name">int32</span>
25106 <span class="entry_type_container">x</span>
25108 <span class="entry_type_array">
25111 <span class="entry_type_visibility"> [ndk_public as rectangle]</span>
25114 <span class="entry_type_hwlevel">[legacy] </span>
25117 <div class="entry_type_notes">(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax).<wbr/> (0,<wbr/>0) is top-left of active pixel area</div>
25120 </td> <!-- entry_type -->
25122 <td class="entry_description">
25123 <p>List of the bounding rectangles for detected
25127 <td class="entry_units">
25130 <td class="entry_range">
25133 <td class="entry_hal_version">
25137 <td class="entry_tags">
25138 <ul class="entry_tags">
25139 <li><a href="#tag_BC">BC</a></li>
25144 <tr class="entries_header">
25145 <th class="th_details" colspan="6">Details</th>
25147 <tr class="entry_cont">
25148 <td class="entry_details" colspan="6">
25149 <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
25150 <code>(0,<wbr/> 0)</code> being the top-left pixel of the active array.<wbr/></p>
25151 <p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> != OFF</p>
25156 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25157 <!-- end of entry -->
25160 <tr class="entry" id="dynamic_android.statistics.faceScores">
25161 <td class="entry_name
25163 android.<wbr/>statistics.<wbr/>face<wbr/>Scores
25165 <td class="entry_type">
25166 <span class="entry_type_name">byte</span>
25167 <span class="entry_type_container">x</span>
25169 <span class="entry_type_array">
25172 <span class="entry_type_visibility"> [ndk_public]</span>
25175 <span class="entry_type_hwlevel">[legacy] </span>
25180 </td> <!-- entry_type -->
25182 <td class="entry_description">
25183 <p>List of the face confidence scores for
25187 <td class="entry_units">
25190 <td class="entry_range">
25194 <td class="entry_hal_version">
25198 <td class="entry_tags">
25199 <ul class="entry_tags">
25200 <li><a href="#tag_BC">BC</a></li>
25205 <tr class="entries_header">
25206 <th class="th_details" colspan="6">Details</th>
25208 <tr class="entry_cont">
25209 <td class="entry_details" colspan="6">
25210 <p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> != OFF.<wbr/></p>
25214 <tr class="entries_header">
25215 <th class="th_details" colspan="6">HAL Implementation Details</th>
25217 <tr class="entry_cont">
25218 <td class="entry_details" colspan="6">
25219 <p>The value should be meaningful (for example,<wbr/> setting 100 at
25220 all times is illegal).<wbr/></p>
25224 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25225 <!-- end of entry -->
25228 <tr class="entry" id="dynamic_android.statistics.faces">
25229 <td class="entry_name
25231 android.<wbr/>statistics.<wbr/>faces
25233 <td class="entry_type">
25234 <span class="entry_type_name">int32</span>
25235 <span class="entry_type_container">x</span>
25237 <span class="entry_type_array">
25240 <span class="entry_type_visibility"> [java_public as face]</span>
25242 <span class="entry_type_synthetic">[synthetic] </span>
25244 <span class="entry_type_hwlevel">[legacy] </span>
25249 </td> <!-- entry_type -->
25251 <td class="entry_description">
25252 <p>List of the faces detected through camera face detection
25253 in this capture.<wbr/></p>
25256 <td class="entry_units">
25259 <td class="entry_range">
25262 <td class="entry_hal_version">
25266 <td class="entry_tags">
25270 <tr class="entries_header">
25271 <th class="th_details" colspan="6">Details</th>
25273 <tr class="entry_cont">
25274 <td class="entry_details" colspan="6">
25275 <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>
25280 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25281 <!-- end of entry -->
25284 <tr class="entry" id="dynamic_android.statistics.histogram">
25285 <td class="entry_name
25287 android.<wbr/>statistics.<wbr/>histogram
25289 <td class="entry_type">
25290 <span class="entry_type_name">int32</span>
25291 <span class="entry_type_container">x</span>
25293 <span class="entry_type_array">
25296 <span class="entry_type_visibility"> [system]</span>
25301 <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>
25304 </td> <!-- entry_type -->
25306 <td class="entry_description">
25307 <p>A 3-channel histogram based on the raw
25311 <td class="entry_units">
25314 <td class="entry_range">
25317 <td class="entry_hal_version">
25321 <td class="entry_tags">
25322 <ul class="entry_tags">
25323 <li><a href="#tag_FUTURE">FUTURE</a></li>
25328 <tr class="entries_header">
25329 <th class="th_details" colspan="6">Details</th>
25331 <tr class="entry_cont">
25332 <td class="entry_details" colspan="6">
25333 <p>The k'th bucket (0-based) covers the input range
25334 (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/>
25335 (k + 1) * w /<wbr/> N ).<wbr/> If only a monochrome sharpness map is
25336 supported,<wbr/> all channels should have the same data</p>
25341 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25342 <!-- end of entry -->
25345 <tr class="entry" id="dynamic_android.statistics.histogramMode">
25346 <td class="entry_name
25348 android.<wbr/>statistics.<wbr/>histogram<wbr/>Mode
25350 <td class="entry_type">
25351 <span class="entry_type_name entry_type_name_enum">byte</span>
25353 <span class="entry_type_visibility"> [system as boolean]</span>
25359 <ul class="entry_type_enum">
25361 <span class="entry_type_enum_name">OFF (v3.2)</span>
25364 <span class="entry_type_enum_name">ON (v3.2)</span>
25368 </td> <!-- entry_type -->
25370 <td class="entry_description">
25371 <p>Operating mode for histogram
25375 <td class="entry_units">
25378 <td class="entry_range">
25381 <td class="entry_hal_version">
25385 <td class="entry_tags">
25386 <ul class="entry_tags">
25387 <li><a href="#tag_FUTURE">FUTURE</a></li>
25394 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25395 <!-- end of entry -->
25398 <tr class="entry" id="dynamic_android.statistics.sharpnessMap">
25399 <td class="entry_name
25401 android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map
25403 <td class="entry_type">
25404 <span class="entry_type_name">int32</span>
25405 <span class="entry_type_container">x</span>
25407 <span class="entry_type_array">
25410 <span class="entry_type_visibility"> [system]</span>
25415 <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>
25418 </td> <!-- entry_type -->
25420 <td class="entry_description">
25421 <p>A 3-channel sharpness map,<wbr/> based on the raw
25425 <td class="entry_units">
25428 <td class="entry_range">
25431 <td class="entry_hal_version">
25435 <td class="entry_tags">
25436 <ul class="entry_tags">
25437 <li><a href="#tag_FUTURE">FUTURE</a></li>
25442 <tr class="entries_header">
25443 <th class="th_details" colspan="6">Details</th>
25445 <tr class="entry_cont">
25446 <td class="entry_details" colspan="6">
25447 <p>If only a monochrome sharpness map is supported,<wbr/>
25448 all channels should have the same data</p>
25453 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25454 <!-- end of entry -->
25457 <tr class="entry" id="dynamic_android.statistics.sharpnessMapMode">
25458 <td class="entry_name
25460 android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map<wbr/>Mode
25462 <td class="entry_type">
25463 <span class="entry_type_name entry_type_name_enum">byte</span>
25465 <span class="entry_type_visibility"> [system as boolean]</span>
25471 <ul class="entry_type_enum">
25473 <span class="entry_type_enum_name">OFF (v3.2)</span>
25476 <span class="entry_type_enum_name">ON (v3.2)</span>
25480 </td> <!-- entry_type -->
25482 <td class="entry_description">
25483 <p>Operating mode for sharpness map
25487 <td class="entry_units">
25490 <td class="entry_range">
25493 <td class="entry_hal_version">
25497 <td class="entry_tags">
25498 <ul class="entry_tags">
25499 <li><a href="#tag_FUTURE">FUTURE</a></li>
25506 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25507 <!-- end of entry -->
25510 <tr class="entry" id="dynamic_android.statistics.lensShadingCorrectionMap">
25511 <td class="entry_name
25513 android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Correction<wbr/>Map
25515 <td class="entry_type">
25516 <span class="entry_type_name">byte</span>
25518 <span class="entry_type_visibility"> [java_public as lensShadingMap]</span>
25521 <span class="entry_type_hwlevel">[full] </span>
25526 </td> <!-- entry_type -->
25528 <td class="entry_description">
25529 <p>The shading map is a low-resolution floating-point map
25530 that lists the coefficients used to correct for vignetting,<wbr/> for each
25531 Bayer color channel.<wbr/></p>
25534 <td class="entry_units">
25537 <td class="entry_range">
25538 <p>Each gain factor is >= 1</p>
25541 <td class="entry_hal_version">
25545 <td class="entry_tags">
25549 <tr class="entries_header">
25550 <th class="th_details" colspan="6">Details</th>
25552 <tr class="entry_cont">
25553 <td class="entry_details" colspan="6">
25554 <p>The map provided here is the same map that is used by the camera device to
25555 correct both color shading and vignetting for output non-RAW images.<wbr/></p>
25556 <p>When there is no lens shading correction applied to RAW
25557 output images (<a href="#static_android.sensor.info.lensShadingApplied">android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied</a> <code>==</code>
25558 false),<wbr/> this map is the complete lens shading correction
25559 map; when there is some lens shading correction applied to
25560 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
25561 correction map that needs to be applied to get shading
25562 corrected images that match the camera device's output for
25563 non-RAW formats.<wbr/></p>
25564 <p>For a complete shading correction map,<wbr/> the least shaded
25565 section of the image will have a gain factor of 1; all
25566 other sections will have gains above 1.<wbr/></p>
25567 <p>When <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> = TRANSFORM_<wbr/>MATRIX,<wbr/> the map
25568 will take into account the colorCorrection settings.<wbr/></p>
25569 <p>The shading map is for the entire active pixel array,<wbr/> and is not
25570 affected by the crop region specified in the request.<wbr/> Each shading map
25571 entry is the value of the shading compensation map over a specific
25572 pixel on the sensor.<wbr/> Specifically,<wbr/> with a (N x M) resolution shading
25573 map,<wbr/> and an active pixel array size (W x H),<wbr/> shading map entry
25574 (x,<wbr/>y) ϵ (0 ...<wbr/> N-1,<wbr/> 0 ...<wbr/> M-1) is the value of the shading map at
25575 pixel ( ((W-1)/<wbr/>(N-1)) * x,<wbr/> ((H-1)/<wbr/>(M-1)) * y) for the four color channels.<wbr/>
25576 The map is assumed to be bilinearly interpolated between the sample points.<wbr/></p>
25577 <p>The channel order is [R,<wbr/> Geven,<wbr/> Godd,<wbr/> B],<wbr/> where Geven is the green
25578 channel for the even rows of a Bayer pattern,<wbr/> and Godd is the odd rows.<wbr/>
25579 The shading map is stored in a fully interleaved format.<wbr/></p>
25580 <p>The shading map will generally have on the order of 30-40 rows and columns,<wbr/>
25581 and will be smaller than 64x64.<wbr/></p>
25582 <p>As an example,<wbr/> given a very small map defined as:</p>
25583 <pre><code>width,<wbr/>height = [ 4,<wbr/> 3 ]
25585 [ 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/>
25586 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/>
25587 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/>
25588 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/>
25589 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/>
25590 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 ]
25592 <p>The low-resolution scaling map images for each channel are
25593 (displayed using nearest-neighbor interpolation):</p>
25594 <p><img alt="Red lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/red_shading.png"/>
25595 <img alt="Green (even rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_e_shading.png"/>
25596 <img alt="Green (odd rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_o_shading.png"/>
25597 <img alt="Blue lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/blue_shading.png"/></p>
25598 <p>As a visualization only,<wbr/> inverting the full-color map to recover an
25599 image of a gray wall (using bicubic interpolation for visual quality) as captured by the sensor gives:</p>
25600 <p><img alt="Image of a uniform white wall (inverse shading map)" src="images/camera2/metadata/android.statistics.lensShadingMap/inv_shading.png"/></p>
25605 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25606 <!-- end of entry -->
25609 <tr class="entry" id="dynamic_android.statistics.lensShadingMap">
25610 <td class="entry_name
25612 android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map
25614 <td class="entry_type">
25615 <span class="entry_type_name">float</span>
25616 <span class="entry_type_container">x</span>
25618 <span class="entry_type_array">
25621 <span class="entry_type_visibility"> [ndk_public]</span>
25624 <span class="entry_type_hwlevel">[full] </span>
25627 <div class="entry_type_notes">2D array of float gain factors per channel to correct lens shading</div>
25630 </td> <!-- entry_type -->
25632 <td class="entry_description">
25633 <p>The shading map is a low-resolution floating-point map
25634 that lists the coefficients used to correct for vignetting and color shading,<wbr/>
25635 for each Bayer color channel of RAW image data.<wbr/></p>
25638 <td class="entry_units">
25641 <td class="entry_range">
25642 <p>Each gain factor is >= 1</p>
25645 <td class="entry_hal_version">
25649 <td class="entry_tags">
25653 <tr class="entries_header">
25654 <th class="th_details" colspan="6">Details</th>
25656 <tr class="entry_cont">
25657 <td class="entry_details" colspan="6">
25658 <p>The map provided here is the same map that is used by the camera device to
25659 correct both color shading and vignetting for output non-RAW images.<wbr/></p>
25660 <p>When there is no lens shading correction applied to RAW
25661 output images (<a href="#static_android.sensor.info.lensShadingApplied">android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied</a> <code>==</code>
25662 false),<wbr/> this map is the complete lens shading correction
25663 map; when there is some lens shading correction applied to
25664 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
25665 correction map that needs to be applied to get shading
25666 corrected images that match the camera device's output for
25667 non-RAW formats.<wbr/></p>
25668 <p>For a complete shading correction map,<wbr/> the least shaded
25669 section of the image will have a gain factor of 1; all
25670 other sections will have gains above 1.<wbr/></p>
25671 <p>When <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> = TRANSFORM_<wbr/>MATRIX,<wbr/> the map
25672 will take into account the colorCorrection settings.<wbr/></p>
25673 <p>The shading map is for the entire active pixel array,<wbr/> and is not
25674 affected by the crop region specified in the request.<wbr/> Each shading map
25675 entry is the value of the shading compensation map over a specific
25676 pixel on the sensor.<wbr/> Specifically,<wbr/> with a (N x M) resolution shading
25677 map,<wbr/> and an active pixel array size (W x H),<wbr/> shading map entry
25678 (x,<wbr/>y) ϵ (0 ...<wbr/> N-1,<wbr/> 0 ...<wbr/> M-1) is the value of the shading map at
25679 pixel ( ((W-1)/<wbr/>(N-1)) * x,<wbr/> ((H-1)/<wbr/>(M-1)) * y) for the four color channels.<wbr/>
25680 The map is assumed to be bilinearly interpolated between the sample points.<wbr/></p>
25681 <p>The channel order is [R,<wbr/> Geven,<wbr/> Godd,<wbr/> B],<wbr/> where Geven is the green
25682 channel for the even rows of a Bayer pattern,<wbr/> and Godd is the odd rows.<wbr/>
25683 The shading map is stored in a fully interleaved format,<wbr/> and its size
25684 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>
25685 <p>The shading map will generally have on the order of 30-40 rows and columns,<wbr/>
25686 and will be smaller than 64x64.<wbr/></p>
25687 <p>As an example,<wbr/> given a very small map defined as:</p>
25688 <pre><code><a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a> = [ 4,<wbr/> 3 ]
25689 <a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> =
25690 [ 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/>
25691 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/>
25692 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/>
25693 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/>
25694 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/>
25695 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 ]
25697 <p>The low-resolution scaling map images for each channel are
25698 (displayed using nearest-neighbor interpolation):</p>
25699 <p><img alt="Red lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/red_shading.png"/>
25700 <img alt="Green (even rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_e_shading.png"/>
25701 <img alt="Green (odd rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_o_shading.png"/>
25702 <img alt="Blue lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/blue_shading.png"/></p>
25703 <p>As a visualization only,<wbr/> inverting the full-color map to recover an
25704 image of a gray wall (using bicubic interpolation for visual quality)
25705 as captured by the sensor gives:</p>
25706 <p><img alt="Image of a uniform white wall (inverse shading map)" src="images/camera2/metadata/android.statistics.lensShadingMap/inv_shading.png"/></p>
25707 <p>Note that the RAW image data might be subject to lens shading
25708 correction not reported on this map.<wbr/> Query
25709 <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
25710 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>
25711 is TRUE,<wbr/> the RAW image data is subject to partial or full lens shading
25712 correction.<wbr/> In the case full lens shading correction is applied to RAW
25713 images,<wbr/> the gain factor map reported in this key will contain all 1.<wbr/>0 gains.<wbr/>
25714 In other words,<wbr/> the map reported in this key is the remaining lens shading
25715 that needs to be applied on the RAW image to get images without lens shading
25716 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
25721 <tr class="entries_header">
25722 <th class="th_details" colspan="6">HAL Implementation Details</th>
25724 <tr class="entry_cont">
25725 <td class="entry_details" colspan="6">
25726 <p>The lens shading map calculation may depend on exposure and white balance statistics.<wbr/>
25727 When AE and AWB are in AUTO modes
25728 (<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
25729 may have all the information it need to generate most accurate lens shading map.<wbr/> When
25730 AE or AWB are in manual mode
25731 (<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
25732 may be adversely impacted by manual exposure or white balance parameters.<wbr/> To avoid
25733 generating unreliable shading map data,<wbr/> the HAL may choose to lock the shading map with
25734 the latest known good map generated when the AE and AWB are in AUTO modes.<wbr/></p>
25738 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25739 <!-- end of entry -->
25742 <tr class="entry" id="dynamic_android.statistics.predictedColorGains">
25743 <td class="entry_name
25744 entry_name_deprecated
25746 android.<wbr/>statistics.<wbr/>predicted<wbr/>Color<wbr/>Gains
25748 <td class="entry_type">
25749 <span class="entry_type_name">float</span>
25750 <span class="entry_type_container">x</span>
25752 <span class="entry_type_array">
25755 <span class="entry_type_visibility"> [hidden]</span>
25759 <span class="entry_type_deprecated">[deprecated] </span>
25761 <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div>
25764 </td> <!-- entry_type -->
25766 <td class="entry_description">
25767 <p>The best-fit color channel gains calculated
25768 by the camera device's statistics units for the current output frame.<wbr/></p>
25771 <td class="entry_units">
25774 <td class="entry_range">
25775 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
25778 <td class="entry_hal_version">
25782 <td class="entry_tags">
25786 <tr class="entries_header">
25787 <th class="th_details" colspan="6">Details</th>
25789 <tr class="entry_cont">
25790 <td class="entry_details" colspan="6">
25791 <p>This may be different than the gains used for this frame,<wbr/>
25792 since statistics processing on data from a new frame
25793 typically completes after the transform has already been
25794 applied to that frame.<wbr/></p>
25795 <p>The 4 channel gains are defined in Bayer domain,<wbr/>
25796 see <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> for details.<wbr/></p>
25797 <p>This value should always be calculated by the auto-white balance (AWB) block,<wbr/>
25798 regardless of the android.<wbr/>control.<wbr/>* current values.<wbr/></p>
25803 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25804 <!-- end of entry -->
25807 <tr class="entry" id="dynamic_android.statistics.predictedColorTransform">
25808 <td class="entry_name
25809 entry_name_deprecated
25811 android.<wbr/>statistics.<wbr/>predicted<wbr/>Color<wbr/>Transform
25813 <td class="entry_type">
25814 <span class="entry_type_name">rational</span>
25815 <span class="entry_type_container">x</span>
25817 <span class="entry_type_array">
25820 <span class="entry_type_visibility"> [hidden]</span>
25824 <span class="entry_type_deprecated">[deprecated] </span>
25826 <div class="entry_type_notes">3x3 rational matrix in row-major order</div>
25829 </td> <!-- entry_type -->
25831 <td class="entry_description">
25832 <p>The best-fit color transform matrix estimate
25833 calculated by the camera device's statistics units for the current
25834 output frame.<wbr/></p>
25837 <td class="entry_units">
25840 <td class="entry_range">
25841 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
25844 <td class="entry_hal_version">
25848 <td class="entry_tags">
25852 <tr class="entries_header">
25853 <th class="th_details" colspan="6">Details</th>
25855 <tr class="entry_cont">
25856 <td class="entry_details" colspan="6">
25857 <p>The camera device will provide the estimate from its
25858 statistics unit on the white balance transforms to use
25859 for the next frame.<wbr/> These are the values the camera device believes
25860 are the best fit for the current output frame.<wbr/> This may
25861 be different than the transform used for this frame,<wbr/> since
25862 statistics processing on data from a new frame typically
25863 completes after the transform has already been applied to
25864 that frame.<wbr/></p>
25865 <p>These estimates must be provided for all frames,<wbr/> even if
25866 capture settings and color transforms are set by the application.<wbr/></p>
25867 <p>This value should always be calculated by the auto-white balance (AWB) block,<wbr/>
25868 regardless of the android.<wbr/>control.<wbr/>* current values.<wbr/></p>
25873 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25874 <!-- end of entry -->
25877 <tr class="entry" id="dynamic_android.statistics.sceneFlicker">
25878 <td class="entry_name
25880 android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker
25882 <td class="entry_type">
25883 <span class="entry_type_name entry_type_name_enum">byte</span>
25885 <span class="entry_type_visibility"> [public]</span>
25888 <span class="entry_type_hwlevel">[full] </span>
25892 <ul class="entry_type_enum">
25894 <span class="entry_type_enum_name">NONE (v3.2)</span>
25895 <span class="entry_type_enum_notes"><p>The camera device does not detect any flickering illumination
25896 in the current scene.<wbr/></p></span>
25899 <span class="entry_type_enum_name">50HZ (v3.2)</span>
25900 <span class="entry_type_enum_notes"><p>The camera device detects illumination flickering at 50Hz
25901 in the current scene.<wbr/></p></span>
25904 <span class="entry_type_enum_name">60HZ (v3.2)</span>
25905 <span class="entry_type_enum_notes"><p>The camera device detects illumination flickering at 60Hz
25906 in the current scene.<wbr/></p></span>
25910 </td> <!-- entry_type -->
25912 <td class="entry_description">
25913 <p>The camera device estimated scene illumination lighting
25914 frequency.<wbr/></p>
25917 <td class="entry_units">
25920 <td class="entry_range">
25923 <td class="entry_hal_version">
25927 <td class="entry_tags">
25931 <tr class="entries_header">
25932 <th class="th_details" colspan="6">Details</th>
25934 <tr class="entry_cont">
25935 <td class="entry_details" colspan="6">
25936 <p>Many light sources,<wbr/> such as most fluorescent lights,<wbr/> flicker at a rate
25937 that depends on the local utility power standards.<wbr/> This flicker must be
25938 accounted for by auto-exposure routines to avoid artifacts in captured images.<wbr/>
25939 The camera device uses this entry to tell the application what the scene
25940 illuminant frequency is.<wbr/></p>
25941 <p>When manual exposure control is enabled
25942 (<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> ==
25943 OFF</code>),<wbr/> the <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> doesn't perform
25944 antibanding,<wbr/> and the application can ensure it selects
25945 exposure times that do not cause banding issues by looking
25946 into this metadata field.<wbr/> See
25947 <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> for more details.<wbr/></p>
25948 <p>Reports NONE if there doesn't appear to be flickering illumination.<wbr/></p>
25953 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25954 <!-- end of entry -->
25957 <tr class="entry" id="dynamic_android.statistics.hotPixelMapMode">
25958 <td class="entry_name
25960 android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode
25962 <td class="entry_type">
25963 <span class="entry_type_name entry_type_name_enum">byte</span>
25965 <span class="entry_type_visibility"> [public as boolean]</span>
25971 <ul class="entry_type_enum">
25973 <span class="entry_type_enum_name">OFF (v3.2)</span>
25974 <span class="entry_type_enum_notes"><p>Hot pixel map production is disabled.<wbr/></p></span>
25977 <span class="entry_type_enum_name">ON (v3.2)</span>
25978 <span class="entry_type_enum_notes"><p>Hot pixel map production is enabled.<wbr/></p></span>
25982 </td> <!-- entry_type -->
25984 <td class="entry_description">
25985 <p>Operating mode for hot pixel map generation.<wbr/></p>
25988 <td class="entry_units">
25991 <td class="entry_range">
25992 <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>
25995 <td class="entry_hal_version">
25999 <td class="entry_tags">
26000 <ul class="entry_tags">
26001 <li><a href="#tag_V1">V1</a></li>
26002 <li><a href="#tag_RAW">RAW</a></li>
26007 <tr class="entries_header">
26008 <th class="th_details" colspan="6">Details</th>
26010 <tr class="entry_cont">
26011 <td class="entry_details" colspan="6">
26012 <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/>
26013 If set to <code>false</code>,<wbr/> no hot pixel map will be returned.<wbr/></p>
26018 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26019 <!-- end of entry -->
26022 <tr class="entry" id="dynamic_android.statistics.hotPixelMap">
26023 <td class="entry_name
26025 android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map
26027 <td class="entry_type">
26028 <span class="entry_type_name">int32</span>
26029 <span class="entry_type_container">x</span>
26031 <span class="entry_type_array">
26034 <span class="entry_type_visibility"> [public as point]</span>
26039 <div class="entry_type_notes">list of coordinates based on android.<wbr/>sensor.<wbr/>pixel<wbr/>Array<wbr/>Size</div>
26042 </td> <!-- entry_type -->
26044 <td class="entry_description">
26045 <p>List of <code>(x,<wbr/> y)</code> coordinates of hot/<wbr/>defective pixels on the sensor.<wbr/></p>
26048 <td class="entry_units">
26051 <td class="entry_range">
26052 <p>n <= number of pixels on the sensor.<wbr/>
26053 The <code>(x,<wbr/> y)</code> coordinates must be bounded by
26054 <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
26057 <td class="entry_hal_version">
26061 <td class="entry_tags">
26062 <ul class="entry_tags">
26063 <li><a href="#tag_V1">V1</a></li>
26064 <li><a href="#tag_RAW">RAW</a></li>
26069 <tr class="entries_header">
26070 <th class="th_details" colspan="6">Details</th>
26072 <tr class="entry_cont">
26073 <td class="entry_details" colspan="6">
26074 <p>A coordinate <code>(x,<wbr/> y)</code> must lie between <code>(0,<wbr/> 0)</code>,<wbr/> and
26075 <code>(width - 1,<wbr/> height - 1)</code> (inclusive),<wbr/> which are the top-left and
26076 bottom-right of the pixel array,<wbr/> respectively.<wbr/> The width and
26077 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/>
26078 This may include hot pixels that lie outside of the active array
26079 bounds given by <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
26083 <tr class="entries_header">
26084 <th class="th_details" colspan="6">HAL Implementation Details</th>
26086 <tr class="entry_cont">
26087 <td class="entry_details" colspan="6">
26088 <p>A hotpixel map contains the coordinates of pixels on the camera
26089 sensor that do report valid values (usually due to defects in
26090 the camera sensor).<wbr/> This includes pixels that are stuck at certain
26091 values,<wbr/> or have a response that does not accuractly encode the
26092 incoming light from the scene.<wbr/></p>
26093 <p>To avoid performance issues,<wbr/> there should be significantly fewer hot
26094 pixels than actual pixels on the camera sensor.<wbr/></p>
26098 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26099 <!-- end of entry -->
26102 <tr class="entry" id="dynamic_android.statistics.lensShadingMapMode">
26103 <td class="entry_name
26105 android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode
26107 <td class="entry_type">
26108 <span class="entry_type_name entry_type_name_enum">byte</span>
26110 <span class="entry_type_visibility"> [public]</span>
26113 <span class="entry_type_hwlevel">[full] </span>
26117 <ul class="entry_type_enum">
26119 <span class="entry_type_enum_name">OFF (v3.2)</span>
26120 <span class="entry_type_enum_notes"><p>Do not include a lens shading map in the capture result.<wbr/></p></span>
26123 <span class="entry_type_enum_name">ON (v3.2)</span>
26124 <span class="entry_type_enum_notes"><p>Include a lens shading map in the capture result.<wbr/></p></span>
26128 </td> <!-- entry_type -->
26130 <td class="entry_description">
26131 <p>Whether the camera device will output the lens
26132 shading map in output result metadata.<wbr/></p>
26135 <td class="entry_units">
26138 <td class="entry_range">
26139 <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>
26142 <td class="entry_hal_version">
26146 <td class="entry_tags">
26147 <ul class="entry_tags">
26148 <li><a href="#tag_RAW">RAW</a></li>
26153 <tr class="entries_header">
26154 <th class="th_details" colspan="6">Details</th>
26156 <tr class="entry_cont">
26157 <td class="entry_details" colspan="6">
26158 <p>When set to ON,<wbr/>
26159 <a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> will be provided in
26160 the output result metadata.<wbr/></p>
26161 <p>ON is always supported on devices with the RAW capability.<wbr/></p>
26166 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26167 <!-- end of entry -->
26170 <tr class="entry" id="dynamic_android.statistics.oisDataMode">
26171 <td class="entry_name
26173 android.<wbr/>statistics.<wbr/>ois<wbr/>Data<wbr/>Mode
26175 <td class="entry_type">
26176 <span class="entry_type_name entry_type_name_enum">byte</span>
26178 <span class="entry_type_visibility"> [public]</span>
26184 <ul class="entry_type_enum">
26186 <span class="entry_type_enum_name">OFF (v3.3)</span>
26187 <span class="entry_type_enum_notes"><p>Do not include OIS data in the capture result.<wbr/></p></span>
26190 <span class="entry_type_enum_name">ON (v3.3)</span>
26191 <span class="entry_type_enum_notes"><p>Include OIS data in the capture result.<wbr/></p></span>
26195 </td> <!-- entry_type -->
26197 <td class="entry_description">
26198 <p>A control for selecting whether OIS position information is included in output
26199 result metadata.<wbr/></p>
26202 <td class="entry_units">
26205 <td class="entry_range">
26206 <p><a href="#static_android.statistics.info.availableOisDataModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Ois<wbr/>Data<wbr/>Modes</a></p>
26209 <td class="entry_hal_version">
26213 <td class="entry_tags">
26219 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26220 <!-- end of entry -->
26223 <tr class="entry" id="dynamic_android.statistics.oisTimestamps">
26224 <td class="entry_name
26226 android.<wbr/>statistics.<wbr/>ois<wbr/>Timestamps
26228 <td class="entry_type">
26229 <span class="entry_type_name">int64</span>
26230 <span class="entry_type_container">x</span>
26232 <span class="entry_type_array">
26235 <span class="entry_type_visibility"> [ndk_public]</span>
26242 </td> <!-- entry_type -->
26244 <td class="entry_description">
26245 <p>An array of timestamps of OIS samples,<wbr/> in nanoseconds.<wbr/></p>
26248 <td class="entry_units">
26252 <td class="entry_range">
26255 <td class="entry_hal_version">
26259 <td class="entry_tags">
26263 <tr class="entries_header">
26264 <th class="th_details" colspan="6">Details</th>
26266 <tr class="entry_cont">
26267 <td class="entry_details" colspan="6">
26268 <p>The array contains the timestamps of OIS samples.<wbr/> The timestamps are in the same
26269 timebase as and comparable to <a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a>.<wbr/></p>
26274 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26275 <!-- end of entry -->
26278 <tr class="entry" id="dynamic_android.statistics.oisXShifts">
26279 <td class="entry_name
26281 android.<wbr/>statistics.<wbr/>ois<wbr/>XShifts
26283 <td class="entry_type">
26284 <span class="entry_type_name">float</span>
26285 <span class="entry_type_container">x</span>
26287 <span class="entry_type_array">
26290 <span class="entry_type_visibility"> [ndk_public]</span>
26297 </td> <!-- entry_type -->
26299 <td class="entry_description">
26300 <p>An array of shifts of OIS samples,<wbr/> in x direction.<wbr/></p>
26303 <td class="entry_units">
26304 Pixels in active array.<wbr/>
26307 <td class="entry_range">
26310 <td class="entry_hal_version">
26314 <td class="entry_tags">
26318 <tr class="entries_header">
26319 <th class="th_details" colspan="6">Details</th>
26321 <tr class="entry_cont">
26322 <td class="entry_details" colspan="6">
26323 <p>The array contains the amount of shifts in x direction,<wbr/> in pixels,<wbr/> based on OIS samples.<wbr/>
26324 A positive value is a shift from left to right in active array coordinate system.<wbr/> For
26325 example,<wbr/> if the optical center is (1000,<wbr/> 500) in active array coordinates,<wbr/> a shift of
26326 (3,<wbr/> 0) puts the new optical center at (1003,<wbr/> 500).<wbr/></p>
26327 <p>The number of shifts must match the number of timestamps in
26328 <a href="#dynamic_android.statistics.oisTimestamps">android.<wbr/>statistics.<wbr/>ois<wbr/>Timestamps</a>.<wbr/></p>
26333 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26334 <!-- end of entry -->
26337 <tr class="entry" id="dynamic_android.statistics.oisYShifts">
26338 <td class="entry_name
26340 android.<wbr/>statistics.<wbr/>ois<wbr/>YShifts
26342 <td class="entry_type">
26343 <span class="entry_type_name">float</span>
26344 <span class="entry_type_container">x</span>
26346 <span class="entry_type_array">
26349 <span class="entry_type_visibility"> [ndk_public]</span>
26356 </td> <!-- entry_type -->
26358 <td class="entry_description">
26359 <p>An array of shifts of OIS samples,<wbr/> in y direction.<wbr/></p>
26362 <td class="entry_units">
26363 Pixels in active array.<wbr/>
26366 <td class="entry_range">
26369 <td class="entry_hal_version">
26373 <td class="entry_tags">
26377 <tr class="entries_header">
26378 <th class="th_details" colspan="6">Details</th>
26380 <tr class="entry_cont">
26381 <td class="entry_details" colspan="6">
26382 <p>The array contains the amount of shifts in y direction,<wbr/> in pixels,<wbr/> based on OIS samples.<wbr/>
26383 A positive value is a shift from top to bottom in active array coordinate system.<wbr/> For
26384 example,<wbr/> if the optical center is (1000,<wbr/> 500) in active array coordinates,<wbr/> a shift of
26385 (0,<wbr/> 5) puts the new optical center at (1000,<wbr/> 505).<wbr/></p>
26386 <p>The number of shifts must match the number of timestamps in
26387 <a href="#dynamic_android.statistics.oisTimestamps">android.<wbr/>statistics.<wbr/>ois<wbr/>Timestamps</a>.<wbr/></p>
26392 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26393 <!-- end of entry -->
26396 <tr class="entry" id="dynamic_android.statistics.oisSamples">
26397 <td class="entry_name
26399 android.<wbr/>statistics.<wbr/>ois<wbr/>Samples
26401 <td class="entry_type">
26402 <span class="entry_type_name">float</span>
26403 <span class="entry_type_container">x</span>
26405 <span class="entry_type_array">
26408 <span class="entry_type_visibility"> [java_public as oisSample]</span>
26410 <span class="entry_type_synthetic">[synthetic] </span>
26416 </td> <!-- entry_type -->
26418 <td class="entry_description">
26419 <p>An array of OIS samples.<wbr/></p>
26422 <td class="entry_units">
26425 <td class="entry_range">
26428 <td class="entry_hal_version">
26432 <td class="entry_tags">
26436 <tr class="entries_header">
26437 <th class="th_details" colspan="6">Details</th>
26439 <tr class="entry_cont">
26440 <td class="entry_details" colspan="6">
26441 <p>Each OIS sample contains the timestamp and the amount of shifts in x and y direction,<wbr/>
26442 in pixels,<wbr/> of the OIS sample.<wbr/></p>
26443 <p>A positive value for a shift in x direction is a shift from left to right in active array
26444 coordinate system.<wbr/> For example,<wbr/> if the optical center is (1000,<wbr/> 500) in active array
26445 coordinates,<wbr/> a shift of (3,<wbr/> 0) puts the new optical center at (1003,<wbr/> 500).<wbr/></p>
26446 <p>A positive value for a shift in y direction is a shift from top to bottom in active array
26447 coordinate system.<wbr/> For example,<wbr/> if the optical center is (1000,<wbr/> 500) in active array
26448 coordinates,<wbr/> a shift of (0,<wbr/> 5) puts the new optical center at (1000,<wbr/> 505).<wbr/></p>
26453 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26454 <!-- end of entry -->
26458 <!-- end of kind -->
26461 <!-- end of section -->
26462 <tr><td colspan="7" id="section_tonemap" class="section">tonemap</td></tr>
26465 <tr><td colspan="7" class="kind">controls</td></tr>
26467 <thead class="entries_header">
26469 <th class="th_name">Property Name</th>
26470 <th class="th_type">Type</th>
26471 <th class="th_description">Description</th>
26472 <th class="th_units">Units</th>
26473 <th class="th_range">Range</th>
26474 <th class="th_hal_version">Initial HIDL HAL version</th>
26475 <th class="th_tags">Tags</th>
26490 <tr class="entry" id="controls_android.tonemap.curveBlue">
26491 <td class="entry_name
26493 android.<wbr/>tonemap.<wbr/>curve<wbr/>Blue
26495 <td class="entry_type">
26496 <span class="entry_type_name">float</span>
26497 <span class="entry_type_container">x</span>
26499 <span class="entry_type_array">
26502 <span class="entry_type_visibility"> [ndk_public]</span>
26505 <span class="entry_type_hwlevel">[full] </span>
26508 <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>
26511 </td> <!-- entry_type -->
26513 <td class="entry_description">
26514 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the blue
26515 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
26516 CONTRAST_<wbr/>CURVE.<wbr/></p>
26519 <td class="entry_units">
26522 <td class="entry_range">
26525 <td class="entry_hal_version">
26529 <td class="entry_tags">
26533 <tr class="entries_header">
26534 <th class="th_details" colspan="6">Details</th>
26536 <tr class="entry_cont">
26537 <td class="entry_details" colspan="6">
26538 <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
26543 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26544 <!-- end of entry -->
26547 <tr class="entry" id="controls_android.tonemap.curveGreen">
26548 <td class="entry_name
26550 android.<wbr/>tonemap.<wbr/>curve<wbr/>Green
26552 <td class="entry_type">
26553 <span class="entry_type_name">float</span>
26554 <span class="entry_type_container">x</span>
26556 <span class="entry_type_array">
26559 <span class="entry_type_visibility"> [ndk_public]</span>
26562 <span class="entry_type_hwlevel">[full] </span>
26565 <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>
26568 </td> <!-- entry_type -->
26570 <td class="entry_description">
26571 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the green
26572 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
26573 CONTRAST_<wbr/>CURVE.<wbr/></p>
26576 <td class="entry_units">
26579 <td class="entry_range">
26582 <td class="entry_hal_version">
26586 <td class="entry_tags">
26590 <tr class="entries_header">
26591 <th class="th_details" colspan="6">Details</th>
26593 <tr class="entry_cont">
26594 <td class="entry_details" colspan="6">
26595 <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
26600 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26601 <!-- end of entry -->
26604 <tr class="entry" id="controls_android.tonemap.curveRed">
26605 <td class="entry_name
26607 android.<wbr/>tonemap.<wbr/>curve<wbr/>Red
26609 <td class="entry_type">
26610 <span class="entry_type_name">float</span>
26611 <span class="entry_type_container">x</span>
26613 <span class="entry_type_array">
26616 <span class="entry_type_visibility"> [ndk_public]</span>
26619 <span class="entry_type_hwlevel">[full] </span>
26622 <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>
26625 </td> <!-- entry_type -->
26627 <td class="entry_description">
26628 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the red
26629 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
26630 CONTRAST_<wbr/>CURVE.<wbr/></p>
26633 <td class="entry_units">
26636 <td class="entry_range">
26637 <p>0-1 on both input and output coordinates,<wbr/> normalized
26638 as a floating-point value such that 0 == black and 1 == white.<wbr/></p>
26641 <td class="entry_hal_version">
26645 <td class="entry_tags">
26649 <tr class="entries_header">
26650 <th class="th_details" colspan="6">Details</th>
26652 <tr class="entry_cont">
26653 <td class="entry_details" colspan="6">
26654 <p>Each channel's curve is defined by an array of control points:</p>
26655 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> =
26656 [ P0in,<wbr/> P0out,<wbr/> P1in,<wbr/> P1out,<wbr/> P2in,<wbr/> P2out,<wbr/> P3in,<wbr/> P3out,<wbr/> ...,<wbr/> PNin,<wbr/> PNout ]
26657 2 <= N <= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
26658 <p>These are sorted in order of increasing <code>Pin</code>; it is
26659 required that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
26660 define a complete mapping.<wbr/> For input values between control points,<wbr/>
26661 the camera device must linearly interpolate between the control
26663 <p>Each curve can have an independent number of points,<wbr/> and the number
26664 of points can be less than max (that is,<wbr/> the request doesn't have to
26665 always provide a curve with number of points equivalent to
26666 <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
26667 <p>A few examples,<wbr/> and their corresponding graphical mappings; these
26668 only specify the red channel and the precision is limited to 4
26669 digits,<wbr/> for conciseness.<wbr/></p>
26670 <p>Linear mapping:</p>
26671 <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 ]
26673 <p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
26674 <p>Invert mapping:</p>
26675 <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 ]
26677 <p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
26678 <p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
26679 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
26680 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/>
26681 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/>
26682 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/>
26683 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 ]
26685 <p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
26686 <p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
26687 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
26688 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/>
26689 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/>
26690 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/>
26691 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 ]
26693 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
26697 <tr class="entries_header">
26698 <th class="th_details" colspan="6">HAL Implementation Details</th>
26700 <tr class="entry_cont">
26701 <td class="entry_details" colspan="6">
26702 <p>For good quality of mapping,<wbr/> at least 128 control points are
26703 preferred.<wbr/></p>
26704 <p>A typical use case of this would be a gamma-1/<wbr/>2.<wbr/>2 curve,<wbr/> with as many
26705 control points used as are available.<wbr/></p>
26709 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26710 <!-- end of entry -->
26713 <tr class="entry" id="controls_android.tonemap.curve">
26714 <td class="entry_name
26716 android.<wbr/>tonemap.<wbr/>curve
26718 <td class="entry_type">
26719 <span class="entry_type_name">float</span>
26721 <span class="entry_type_visibility"> [java_public as tonemapCurve]</span>
26723 <span class="entry_type_synthetic">[synthetic] </span>
26725 <span class="entry_type_hwlevel">[full] </span>
26730 </td> <!-- entry_type -->
26732 <td class="entry_description">
26733 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a>
26734 is CONTRAST_<wbr/>CURVE.<wbr/></p>
26737 <td class="entry_units">
26740 <td class="entry_range">
26743 <td class="entry_hal_version">
26747 <td class="entry_tags">
26751 <tr class="entries_header">
26752 <th class="th_details" colspan="6">Details</th>
26754 <tr class="entry_cont">
26755 <td class="entry_details" colspan="6">
26756 <p>The tonemapCurve consist of three curves for each of red,<wbr/> green,<wbr/> and blue
26757 channels respectively.<wbr/> The following example uses the red channel as an
26758 example.<wbr/> The same logic applies to green and blue channel.<wbr/>
26759 Each channel's curve is defined by an array of control points:</p>
26760 <pre><code>curveRed =
26761 [ 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) ]
26762 2 <= N <= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
26763 <p>These are sorted in order of increasing <code>Pin</code>; it is always
26764 guaranteed that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
26765 define a complete mapping.<wbr/> For input values between control points,<wbr/>
26766 the camera device must linearly interpolate between the control
26768 <p>Each curve can have an independent number of points,<wbr/> and the number
26769 of points can be less than max (that is,<wbr/> the request doesn't have to
26770 always provide a curve with number of points equivalent to
26771 <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
26772 <p>A few examples,<wbr/> and their corresponding graphical mappings; these
26773 only specify the red channel and the precision is limited to 4
26774 digits,<wbr/> for conciseness.<wbr/></p>
26775 <p>Linear mapping:</p>
26776 <pre><code>curveRed = [ (0,<wbr/> 0),<wbr/> (1.<wbr/>0,<wbr/> 1.<wbr/>0) ]
26778 <p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
26779 <p>Invert mapping:</p>
26780 <pre><code>curveRed = [ (0,<wbr/> 1.<wbr/>0),<wbr/> (1.<wbr/>0,<wbr/> 0) ]
26782 <p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
26783 <p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
26784 <pre><code>curveRed = [
26785 (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/>
26786 (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/>
26787 (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/>
26788 (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) ]
26790 <p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
26791 <p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
26792 <pre><code>curveRed = [
26793 (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/>
26794 (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/>
26795 (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/>
26796 (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) ]
26798 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
26802 <tr class="entries_header">
26803 <th class="th_details" colspan="6">HAL Implementation Details</th>
26805 <tr class="entry_cont">
26806 <td class="entry_details" colspan="6">
26807 <p>This entry is created by the framework from the curveRed,<wbr/> curveGreen and
26808 curveBlue entries.<wbr/></p>
26812 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26813 <!-- end of entry -->
26816 <tr class="entry" id="controls_android.tonemap.mode">
26817 <td class="entry_name
26819 android.<wbr/>tonemap.<wbr/>mode
26821 <td class="entry_type">
26822 <span class="entry_type_name entry_type_name_enum">byte</span>
26824 <span class="entry_type_visibility"> [public]</span>
26827 <span class="entry_type_hwlevel">[full] </span>
26831 <ul class="entry_type_enum">
26833 <span class="entry_type_enum_name">CONTRAST_CURVE (v3.2)</span>
26834 <span class="entry_type_enum_notes"><p>Use the tone mapping curve specified in
26835 the <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>* entries.<wbr/></p>
26836 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
26837 for applying the tonemapping curve specified by
26838 <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p>
26839 <p>Must not slow down frame rate relative to raw
26840 sensor output.<wbr/></p></span>
26843 <span class="entry_type_enum_name">FAST (v3.2)</span>
26844 <span class="entry_type_enum_notes"><p>Advanced gamma mapping and color enhancement may be applied,<wbr/> without
26845 reducing frame rate compared to raw sensor output.<wbr/></p></span>
26848 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
26849 <span class="entry_type_enum_notes"><p>High-quality gamma mapping and color enhancement will be applied,<wbr/> at
26850 the cost of possibly reduced frame rate compared to raw sensor output.<wbr/></p></span>
26853 <span class="entry_type_enum_name">GAMMA_VALUE (v3.2)</span>
26854 <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
26855 tonemapping.<wbr/></p>
26856 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
26857 for applying the tonemapping curve specified by <a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a>.<wbr/></p>
26858 <p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
26861 <span class="entry_type_enum_name">PRESET_CURVE (v3.2)</span>
26862 <span class="entry_type_enum_notes"><p>Use the preset tonemapping curve specified in
26863 <a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a> to peform tonemapping.<wbr/></p>
26864 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
26865 for applying the tonemapping curve specified by
26866 <a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a>.<wbr/></p>
26867 <p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
26871 </td> <!-- entry_type -->
26873 <td class="entry_description">
26874 <p>High-level global contrast/<wbr/>gamma/<wbr/>tonemapping control.<wbr/></p>
26877 <td class="entry_units">
26880 <td class="entry_range">
26881 <p><a href="#static_android.tonemap.availableToneMapModes">android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes</a></p>
26884 <td class="entry_hal_version">
26888 <td class="entry_tags">
26892 <tr class="entries_header">
26893 <th class="th_details" colspan="6">Details</th>
26895 <tr class="entry_cont">
26896 <td class="entry_details" colspan="6">
26897 <p>When switching to an application-defined contrast curve by setting
26898 <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> to CONTRAST_<wbr/>CURVE,<wbr/> the curve is defined
26899 per-channel with a set of <code>(in,<wbr/> out)</code> points that specify the
26900 mapping from input high-bit-depth pixel value to the output
26901 low-bit-depth value.<wbr/> Since the actual pixel ranges of both input
26902 and output may change depending on the camera pipeline,<wbr/> the values
26903 are specified by normalized floating-point numbers.<wbr/></p>
26904 <p>More-complex color mapping operations such as 3D color look-up
26905 tables,<wbr/> selective chroma enhancement,<wbr/> or other non-linear color
26906 transforms will be disabled when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
26907 CONTRAST_<wbr/>CURVE.<wbr/></p>
26908 <p>When using either FAST or HIGH_<wbr/>QUALITY,<wbr/> the camera device will
26909 emit its own tonemap curve in <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/>
26910 These values are always available,<wbr/> and as close as possible to the
26911 actually used nonlinear/<wbr/>nonglobal transforms.<wbr/></p>
26912 <p>If a request is sent with CONTRAST_<wbr/>CURVE with the camera device's
26913 provided curve in FAST or HIGH_<wbr/>QUALITY,<wbr/> the image's tonemap will be
26914 roughly the same.<wbr/></p>
26919 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26920 <!-- end of entry -->
26923 <tr class="entry" id="controls_android.tonemap.gamma">
26924 <td class="entry_name
26926 android.<wbr/>tonemap.<wbr/>gamma
26928 <td class="entry_type">
26929 <span class="entry_type_name">float</span>
26931 <span class="entry_type_visibility"> [public]</span>
26938 </td> <!-- entry_type -->
26940 <td class="entry_description">
26941 <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
26942 GAMMA_<wbr/>VALUE</p>
26945 <td class="entry_units">
26948 <td class="entry_range">
26951 <td class="entry_hal_version">
26955 <td class="entry_tags">
26959 <tr class="entries_header">
26960 <th class="th_details" colspan="6">Details</th>
26962 <tr class="entry_cont">
26963 <td class="entry_details" colspan="6">
26964 <p>The tonemap curve will be defined the following formula:
26965 * OUT = pow(IN,<wbr/> 1.<wbr/>0 /<wbr/> gamma)
26966 where IN and OUT is the input pixel value scaled to range [0.<wbr/>0,<wbr/> 1.<wbr/>0],<wbr/>
26967 pow is the power function and gamma is the gamma value specified by this
26969 <p>The same curve will be applied to all color channels.<wbr/> The camera device
26970 may clip the input gamma value to its supported range.<wbr/> The actual applied
26971 value will be returned in capture result.<wbr/></p>
26972 <p>The valid range of gamma value varies on different devices,<wbr/> but values
26973 within [1.<wbr/>0,<wbr/> 5.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
26978 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26979 <!-- end of entry -->
26982 <tr class="entry" id="controls_android.tonemap.presetCurve">
26983 <td class="entry_name
26985 android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve
26987 <td class="entry_type">
26988 <span class="entry_type_name entry_type_name_enum">byte</span>
26990 <span class="entry_type_visibility"> [public]</span>
26996 <ul class="entry_type_enum">
26998 <span class="entry_type_enum_name">SRGB (v3.2)</span>
26999 <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by sRGB</p></span>
27002 <span class="entry_type_enum_name">REC709 (v3.2)</span>
27003 <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by ITU-R BT.<wbr/>709</p></span>
27007 </td> <!-- entry_type -->
27009 <td class="entry_description">
27010 <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
27011 PRESET_<wbr/>CURVE</p>
27014 <td class="entry_units">
27017 <td class="entry_range">
27020 <td class="entry_hal_version">
27024 <td class="entry_tags">
27028 <tr class="entries_header">
27029 <th class="th_details" colspan="6">Details</th>
27031 <tr class="entry_cont">
27032 <td class="entry_details" colspan="6">
27033 <p>The tonemap curve will be defined by specified standard.<wbr/></p>
27034 <p>sRGB (approximated by 16 control points):</p>
27035 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
27036 <p>Rec.<wbr/> 709 (approximated by 16 control points):</p>
27037 <p><img alt="Rec. 709 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/rec709_tonemap.png"/></p>
27038 <p>Note that above figures show a 16 control points approximation of preset
27039 curves.<wbr/> Camera devices may apply a different approximation to the curve.<wbr/></p>
27044 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27045 <!-- end of entry -->
27049 <!-- end of kind -->
27051 <tr><td colspan="7" class="kind">static</td></tr>
27053 <thead class="entries_header">
27055 <th class="th_name">Property Name</th>
27056 <th class="th_type">Type</th>
27057 <th class="th_description">Description</th>
27058 <th class="th_units">Units</th>
27059 <th class="th_range">Range</th>
27060 <th class="th_hal_version">Initial HIDL HAL version</th>
27061 <th class="th_tags">Tags</th>
27076 <tr class="entry" id="static_android.tonemap.maxCurvePoints">
27077 <td class="entry_name
27079 android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points
27081 <td class="entry_type">
27082 <span class="entry_type_name">int32</span>
27084 <span class="entry_type_visibility"> [public]</span>
27087 <span class="entry_type_hwlevel">[full] </span>
27092 </td> <!-- entry_type -->
27094 <td class="entry_description">
27095 <p>Maximum number of supported points in the
27096 tonemap curve that can be used for <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p>
27099 <td class="entry_units">
27102 <td class="entry_range">
27105 <td class="entry_hal_version">
27109 <td class="entry_tags">
27113 <tr class="entries_header">
27114 <th class="th_details" colspan="6">Details</th>
27116 <tr class="entry_cont">
27117 <td class="entry_details" colspan="6">
27118 <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
27119 less than this maximum,<wbr/> the camera device will resample the curve to its internal
27120 representation,<wbr/> using linear interpolation.<wbr/></p>
27121 <p>The output curves in the result metadata may have a different number
27122 of points than the input curves,<wbr/> and will represent the actual
27123 hardware curves used as closely as possible when linearly interpolated.<wbr/></p>
27127 <tr class="entries_header">
27128 <th class="th_details" colspan="6">HAL Implementation Details</th>
27130 <tr class="entry_cont">
27131 <td class="entry_details" colspan="6">
27132 <p>This value must be at least 64.<wbr/> This should be at least 128.<wbr/></p>
27136 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27137 <!-- end of entry -->
27140 <tr class="entry" id="static_android.tonemap.availableToneMapModes">
27141 <td class="entry_name
27143 android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes
27145 <td class="entry_type">
27146 <span class="entry_type_name">byte</span>
27147 <span class="entry_type_container">x</span>
27149 <span class="entry_type_array">
27152 <span class="entry_type_visibility"> [public as enumList]</span>
27155 <span class="entry_type_hwlevel">[full] </span>
27158 <div class="entry_type_notes">list of enums</div>
27161 </td> <!-- entry_type -->
27163 <td class="entry_description">
27164 <p>List of tonemapping modes for <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> that are supported by this camera
27168 <td class="entry_units">
27171 <td class="entry_range">
27172 <p>Any value listed in <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a></p>
27175 <td class="entry_hal_version">
27179 <td class="entry_tags">
27183 <tr class="entries_header">
27184 <th class="th_details" colspan="6">Details</th>
27186 <tr class="entry_cont">
27187 <td class="entry_details" colspan="6">
27188 <p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always contain
27189 at least one of below mode combinations:</p>
27191 <li>CONTRAST_<wbr/>CURVE,<wbr/> FAST and HIGH_<wbr/>QUALITY</li>
27192 <li>GAMMA_<wbr/>VALUE,<wbr/> PRESET_<wbr/>CURVE,<wbr/> FAST and HIGH_<wbr/>QUALITY</li>
27194 <p>This includes all FULL level devices.<wbr/></p>
27198 <tr class="entries_header">
27199 <th class="th_details" colspan="6">HAL Implementation Details</th>
27201 <tr class="entry_cont">
27202 <td class="entry_details" colspan="6">
27203 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if automatic tonemap control is available
27204 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
27205 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
27206 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
27210 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27211 <!-- end of entry -->
27215 <!-- end of kind -->
27217 <tr><td colspan="7" class="kind">dynamic</td></tr>
27219 <thead class="entries_header">
27221 <th class="th_name">Property Name</th>
27222 <th class="th_type">Type</th>
27223 <th class="th_description">Description</th>
27224 <th class="th_units">Units</th>
27225 <th class="th_range">Range</th>
27226 <th class="th_hal_version">Initial HIDL HAL version</th>
27227 <th class="th_tags">Tags</th>
27242 <tr class="entry" id="dynamic_android.tonemap.curveBlue">
27243 <td class="entry_name
27245 android.<wbr/>tonemap.<wbr/>curve<wbr/>Blue
27247 <td class="entry_type">
27248 <span class="entry_type_name">float</span>
27249 <span class="entry_type_container">x</span>
27251 <span class="entry_type_array">
27254 <span class="entry_type_visibility"> [ndk_public]</span>
27257 <span class="entry_type_hwlevel">[full] </span>
27260 <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>
27263 </td> <!-- entry_type -->
27265 <td class="entry_description">
27266 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the blue
27267 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
27268 CONTRAST_<wbr/>CURVE.<wbr/></p>
27271 <td class="entry_units">
27274 <td class="entry_range">
27277 <td class="entry_hal_version">
27281 <td class="entry_tags">
27285 <tr class="entries_header">
27286 <th class="th_details" colspan="6">Details</th>
27288 <tr class="entry_cont">
27289 <td class="entry_details" colspan="6">
27290 <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
27295 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27296 <!-- end of entry -->
27299 <tr class="entry" id="dynamic_android.tonemap.curveGreen">
27300 <td class="entry_name
27302 android.<wbr/>tonemap.<wbr/>curve<wbr/>Green
27304 <td class="entry_type">
27305 <span class="entry_type_name">float</span>
27306 <span class="entry_type_container">x</span>
27308 <span class="entry_type_array">
27311 <span class="entry_type_visibility"> [ndk_public]</span>
27314 <span class="entry_type_hwlevel">[full] </span>
27317 <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>
27320 </td> <!-- entry_type -->
27322 <td class="entry_description">
27323 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the green
27324 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
27325 CONTRAST_<wbr/>CURVE.<wbr/></p>
27328 <td class="entry_units">
27331 <td class="entry_range">
27334 <td class="entry_hal_version">
27338 <td class="entry_tags">
27342 <tr class="entries_header">
27343 <th class="th_details" colspan="6">Details</th>
27345 <tr class="entry_cont">
27346 <td class="entry_details" colspan="6">
27347 <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
27352 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27353 <!-- end of entry -->
27356 <tr class="entry" id="dynamic_android.tonemap.curveRed">
27357 <td class="entry_name
27359 android.<wbr/>tonemap.<wbr/>curve<wbr/>Red
27361 <td class="entry_type">
27362 <span class="entry_type_name">float</span>
27363 <span class="entry_type_container">x</span>
27365 <span class="entry_type_array">
27368 <span class="entry_type_visibility"> [ndk_public]</span>
27371 <span class="entry_type_hwlevel">[full] </span>
27374 <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>
27377 </td> <!-- entry_type -->
27379 <td class="entry_description">
27380 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the red
27381 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
27382 CONTRAST_<wbr/>CURVE.<wbr/></p>
27385 <td class="entry_units">
27388 <td class="entry_range">
27389 <p>0-1 on both input and output coordinates,<wbr/> normalized
27390 as a floating-point value such that 0 == black and 1 == white.<wbr/></p>
27393 <td class="entry_hal_version">
27397 <td class="entry_tags">
27401 <tr class="entries_header">
27402 <th class="th_details" colspan="6">Details</th>
27404 <tr class="entry_cont">
27405 <td class="entry_details" colspan="6">
27406 <p>Each channel's curve is defined by an array of control points:</p>
27407 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> =
27408 [ P0in,<wbr/> P0out,<wbr/> P1in,<wbr/> P1out,<wbr/> P2in,<wbr/> P2out,<wbr/> P3in,<wbr/> P3out,<wbr/> ...,<wbr/> PNin,<wbr/> PNout ]
27409 2 <= N <= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
27410 <p>These are sorted in order of increasing <code>Pin</code>; it is
27411 required that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
27412 define a complete mapping.<wbr/> For input values between control points,<wbr/>
27413 the camera device must linearly interpolate between the control
27415 <p>Each curve can have an independent number of points,<wbr/> and the number
27416 of points can be less than max (that is,<wbr/> the request doesn't have to
27417 always provide a curve with number of points equivalent to
27418 <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
27419 <p>A few examples,<wbr/> and their corresponding graphical mappings; these
27420 only specify the red channel and the precision is limited to 4
27421 digits,<wbr/> for conciseness.<wbr/></p>
27422 <p>Linear mapping:</p>
27423 <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 ]
27425 <p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
27426 <p>Invert mapping:</p>
27427 <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 ]
27429 <p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
27430 <p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
27431 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
27432 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/>
27433 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/>
27434 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/>
27435 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 ]
27437 <p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
27438 <p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
27439 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
27440 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/>
27441 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/>
27442 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/>
27443 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 ]
27445 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
27449 <tr class="entries_header">
27450 <th class="th_details" colspan="6">HAL Implementation Details</th>
27452 <tr class="entry_cont">
27453 <td class="entry_details" colspan="6">
27454 <p>For good quality of mapping,<wbr/> at least 128 control points are
27455 preferred.<wbr/></p>
27456 <p>A typical use case of this would be a gamma-1/<wbr/>2.<wbr/>2 curve,<wbr/> with as many
27457 control points used as are available.<wbr/></p>
27461 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27462 <!-- end of entry -->
27465 <tr class="entry" id="dynamic_android.tonemap.curve">
27466 <td class="entry_name
27468 android.<wbr/>tonemap.<wbr/>curve
27470 <td class="entry_type">
27471 <span class="entry_type_name">float</span>
27473 <span class="entry_type_visibility"> [java_public as tonemapCurve]</span>
27475 <span class="entry_type_synthetic">[synthetic] </span>
27477 <span class="entry_type_hwlevel">[full] </span>
27482 </td> <!-- entry_type -->
27484 <td class="entry_description">
27485 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a>
27486 is CONTRAST_<wbr/>CURVE.<wbr/></p>
27489 <td class="entry_units">
27492 <td class="entry_range">
27495 <td class="entry_hal_version">
27499 <td class="entry_tags">
27503 <tr class="entries_header">
27504 <th class="th_details" colspan="6">Details</th>
27506 <tr class="entry_cont">
27507 <td class="entry_details" colspan="6">
27508 <p>The tonemapCurve consist of three curves for each of red,<wbr/> green,<wbr/> and blue
27509 channels respectively.<wbr/> The following example uses the red channel as an
27510 example.<wbr/> The same logic applies to green and blue channel.<wbr/>
27511 Each channel's curve is defined by an array of control points:</p>
27512 <pre><code>curveRed =
27513 [ 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) ]
27514 2 <= N <= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
27515 <p>These are sorted in order of increasing <code>Pin</code>; it is always
27516 guaranteed that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
27517 define a complete mapping.<wbr/> For input values between control points,<wbr/>
27518 the camera device must linearly interpolate between the control
27520 <p>Each curve can have an independent number of points,<wbr/> and the number
27521 of points can be less than max (that is,<wbr/> the request doesn't have to
27522 always provide a curve with number of points equivalent to
27523 <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
27524 <p>A few examples,<wbr/> and their corresponding graphical mappings; these
27525 only specify the red channel and the precision is limited to 4
27526 digits,<wbr/> for conciseness.<wbr/></p>
27527 <p>Linear mapping:</p>
27528 <pre><code>curveRed = [ (0,<wbr/> 0),<wbr/> (1.<wbr/>0,<wbr/> 1.<wbr/>0) ]
27530 <p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
27531 <p>Invert mapping:</p>
27532 <pre><code>curveRed = [ (0,<wbr/> 1.<wbr/>0),<wbr/> (1.<wbr/>0,<wbr/> 0) ]
27534 <p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
27535 <p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
27536 <pre><code>curveRed = [
27537 (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/>
27538 (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/>
27539 (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/>
27540 (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) ]
27542 <p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
27543 <p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
27544 <pre><code>curveRed = [
27545 (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/>
27546 (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/>
27547 (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/>
27548 (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) ]
27550 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
27554 <tr class="entries_header">
27555 <th class="th_details" colspan="6">HAL Implementation Details</th>
27557 <tr class="entry_cont">
27558 <td class="entry_details" colspan="6">
27559 <p>This entry is created by the framework from the curveRed,<wbr/> curveGreen and
27560 curveBlue entries.<wbr/></p>
27564 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27565 <!-- end of entry -->
27568 <tr class="entry" id="dynamic_android.tonemap.mode">
27569 <td class="entry_name
27571 android.<wbr/>tonemap.<wbr/>mode
27573 <td class="entry_type">
27574 <span class="entry_type_name entry_type_name_enum">byte</span>
27576 <span class="entry_type_visibility"> [public]</span>
27579 <span class="entry_type_hwlevel">[full] </span>
27583 <ul class="entry_type_enum">
27585 <span class="entry_type_enum_name">CONTRAST_CURVE (v3.2)</span>
27586 <span class="entry_type_enum_notes"><p>Use the tone mapping curve specified in
27587 the <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>* entries.<wbr/></p>
27588 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
27589 for applying the tonemapping curve specified by
27590 <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p>
27591 <p>Must not slow down frame rate relative to raw
27592 sensor output.<wbr/></p></span>
27595 <span class="entry_type_enum_name">FAST (v3.2)</span>
27596 <span class="entry_type_enum_notes"><p>Advanced gamma mapping and color enhancement may be applied,<wbr/> without
27597 reducing frame rate compared to raw sensor output.<wbr/></p></span>
27600 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
27601 <span class="entry_type_enum_notes"><p>High-quality gamma mapping and color enhancement will be applied,<wbr/> at
27602 the cost of possibly reduced frame rate compared to raw sensor output.<wbr/></p></span>
27605 <span class="entry_type_enum_name">GAMMA_VALUE (v3.2)</span>
27606 <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
27607 tonemapping.<wbr/></p>
27608 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
27609 for applying the tonemapping curve specified by <a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a>.<wbr/></p>
27610 <p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
27613 <span class="entry_type_enum_name">PRESET_CURVE (v3.2)</span>
27614 <span class="entry_type_enum_notes"><p>Use the preset tonemapping curve specified in
27615 <a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a> to peform tonemapping.<wbr/></p>
27616 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
27617 for applying the tonemapping curve specified by
27618 <a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a>.<wbr/></p>
27619 <p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
27623 </td> <!-- entry_type -->
27625 <td class="entry_description">
27626 <p>High-level global contrast/<wbr/>gamma/<wbr/>tonemapping control.<wbr/></p>
27629 <td class="entry_units">
27632 <td class="entry_range">
27633 <p><a href="#static_android.tonemap.availableToneMapModes">android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes</a></p>
27636 <td class="entry_hal_version">
27640 <td class="entry_tags">
27644 <tr class="entries_header">
27645 <th class="th_details" colspan="6">Details</th>
27647 <tr class="entry_cont">
27648 <td class="entry_details" colspan="6">
27649 <p>When switching to an application-defined contrast curve by setting
27650 <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> to CONTRAST_<wbr/>CURVE,<wbr/> the curve is defined
27651 per-channel with a set of <code>(in,<wbr/> out)</code> points that specify the
27652 mapping from input high-bit-depth pixel value to the output
27653 low-bit-depth value.<wbr/> Since the actual pixel ranges of both input
27654 and output may change depending on the camera pipeline,<wbr/> the values
27655 are specified by normalized floating-point numbers.<wbr/></p>
27656 <p>More-complex color mapping operations such as 3D color look-up
27657 tables,<wbr/> selective chroma enhancement,<wbr/> or other non-linear color
27658 transforms will be disabled when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
27659 CONTRAST_<wbr/>CURVE.<wbr/></p>
27660 <p>When using either FAST or HIGH_<wbr/>QUALITY,<wbr/> the camera device will
27661 emit its own tonemap curve in <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/>
27662 These values are always available,<wbr/> and as close as possible to the
27663 actually used nonlinear/<wbr/>nonglobal transforms.<wbr/></p>
27664 <p>If a request is sent with CONTRAST_<wbr/>CURVE with the camera device's
27665 provided curve in FAST or HIGH_<wbr/>QUALITY,<wbr/> the image's tonemap will be
27666 roughly the same.<wbr/></p>
27671 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27672 <!-- end of entry -->
27675 <tr class="entry" id="dynamic_android.tonemap.gamma">
27676 <td class="entry_name
27678 android.<wbr/>tonemap.<wbr/>gamma
27680 <td class="entry_type">
27681 <span class="entry_type_name">float</span>
27683 <span class="entry_type_visibility"> [public]</span>
27690 </td> <!-- entry_type -->
27692 <td class="entry_description">
27693 <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
27694 GAMMA_<wbr/>VALUE</p>
27697 <td class="entry_units">
27700 <td class="entry_range">
27703 <td class="entry_hal_version">
27707 <td class="entry_tags">
27711 <tr class="entries_header">
27712 <th class="th_details" colspan="6">Details</th>
27714 <tr class="entry_cont">
27715 <td class="entry_details" colspan="6">
27716 <p>The tonemap curve will be defined the following formula:
27717 * OUT = pow(IN,<wbr/> 1.<wbr/>0 /<wbr/> gamma)
27718 where IN and OUT is the input pixel value scaled to range [0.<wbr/>0,<wbr/> 1.<wbr/>0],<wbr/>
27719 pow is the power function and gamma is the gamma value specified by this
27721 <p>The same curve will be applied to all color channels.<wbr/> The camera device
27722 may clip the input gamma value to its supported range.<wbr/> The actual applied
27723 value will be returned in capture result.<wbr/></p>
27724 <p>The valid range of gamma value varies on different devices,<wbr/> but values
27725 within [1.<wbr/>0,<wbr/> 5.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
27730 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27731 <!-- end of entry -->
27734 <tr class="entry" id="dynamic_android.tonemap.presetCurve">
27735 <td class="entry_name
27737 android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve
27739 <td class="entry_type">
27740 <span class="entry_type_name entry_type_name_enum">byte</span>
27742 <span class="entry_type_visibility"> [public]</span>
27748 <ul class="entry_type_enum">
27750 <span class="entry_type_enum_name">SRGB (v3.2)</span>
27751 <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by sRGB</p></span>
27754 <span class="entry_type_enum_name">REC709 (v3.2)</span>
27755 <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by ITU-R BT.<wbr/>709</p></span>
27759 </td> <!-- entry_type -->
27761 <td class="entry_description">
27762 <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
27763 PRESET_<wbr/>CURVE</p>
27766 <td class="entry_units">
27769 <td class="entry_range">
27772 <td class="entry_hal_version">
27776 <td class="entry_tags">
27780 <tr class="entries_header">
27781 <th class="th_details" colspan="6">Details</th>
27783 <tr class="entry_cont">
27784 <td class="entry_details" colspan="6">
27785 <p>The tonemap curve will be defined by specified standard.<wbr/></p>
27786 <p>sRGB (approximated by 16 control points):</p>
27787 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
27788 <p>Rec.<wbr/> 709 (approximated by 16 control points):</p>
27789 <p><img alt="Rec. 709 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/rec709_tonemap.png"/></p>
27790 <p>Note that above figures show a 16 control points approximation of preset
27791 curves.<wbr/> Camera devices may apply a different approximation to the curve.<wbr/></p>
27796 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27797 <!-- end of entry -->
27801 <!-- end of kind -->
27804 <!-- end of section -->
27805 <tr><td colspan="7" id="section_led" class="section">led</td></tr>
27808 <tr><td colspan="7" class="kind">controls</td></tr>
27810 <thead class="entries_header">
27812 <th class="th_name">Property Name</th>
27813 <th class="th_type">Type</th>
27814 <th class="th_description">Description</th>
27815 <th class="th_units">Units</th>
27816 <th class="th_range">Range</th>
27817 <th class="th_hal_version">Initial HIDL HAL version</th>
27818 <th class="th_tags">Tags</th>
27833 <tr class="entry" id="controls_android.led.transmit">
27834 <td class="entry_name
27836 android.<wbr/>led.<wbr/>transmit
27838 <td class="entry_type">
27839 <span class="entry_type_name entry_type_name_enum">byte</span>
27841 <span class="entry_type_visibility"> [hidden as boolean]</span>
27847 <ul class="entry_type_enum">
27849 <span class="entry_type_enum_name">OFF (v3.2)</span>
27852 <span class="entry_type_enum_name">ON (v3.2)</span>
27856 </td> <!-- entry_type -->
27858 <td class="entry_description">
27859 <p>This LED is nominally used to indicate to the user
27860 that the camera is powered on and may be streaming images back to the
27861 Application Processor.<wbr/> In certain rare circumstances,<wbr/> the OS may
27862 disable this when video is processed locally and not transmitted to
27863 any untrusted applications.<wbr/></p>
27864 <p>In particular,<wbr/> the LED <em>must</em> always be on when the data could be
27865 transmitted off the device.<wbr/> The LED <em>should</em> always be on whenever
27866 data is stored locally on the device.<wbr/></p>
27867 <p>The LED <em>may</em> be off if a trusted application is using the data that
27868 doesn't violate the above rules.<wbr/></p>
27871 <td class="entry_units">
27874 <td class="entry_range">
27877 <td class="entry_hal_version">
27881 <td class="entry_tags">
27887 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27888 <!-- end of entry -->
27892 <!-- end of kind -->
27894 <tr><td colspan="7" class="kind">dynamic</td></tr>
27896 <thead class="entries_header">
27898 <th class="th_name">Property Name</th>
27899 <th class="th_type">Type</th>
27900 <th class="th_description">Description</th>
27901 <th class="th_units">Units</th>
27902 <th class="th_range">Range</th>
27903 <th class="th_hal_version">Initial HIDL HAL version</th>
27904 <th class="th_tags">Tags</th>
27919 <tr class="entry" id="dynamic_android.led.transmit">
27920 <td class="entry_name
27922 android.<wbr/>led.<wbr/>transmit
27924 <td class="entry_type">
27925 <span class="entry_type_name entry_type_name_enum">byte</span>
27927 <span class="entry_type_visibility"> [hidden as boolean]</span>
27933 <ul class="entry_type_enum">
27935 <span class="entry_type_enum_name">OFF (v3.2)</span>
27938 <span class="entry_type_enum_name">ON (v3.2)</span>
27942 </td> <!-- entry_type -->
27944 <td class="entry_description">
27945 <p>This LED is nominally used to indicate to the user
27946 that the camera is powered on and may be streaming images back to the
27947 Application Processor.<wbr/> In certain rare circumstances,<wbr/> the OS may
27948 disable this when video is processed locally and not transmitted to
27949 any untrusted applications.<wbr/></p>
27950 <p>In particular,<wbr/> the LED <em>must</em> always be on when the data could be
27951 transmitted off the device.<wbr/> The LED <em>should</em> always be on whenever
27952 data is stored locally on the device.<wbr/></p>
27953 <p>The LED <em>may</em> be off if a trusted application is using the data that
27954 doesn't violate the above rules.<wbr/></p>
27957 <td class="entry_units">
27960 <td class="entry_range">
27963 <td class="entry_hal_version">
27967 <td class="entry_tags">
27973 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27974 <!-- end of entry -->
27978 <!-- end of kind -->
27980 <tr><td colspan="7" class="kind">static</td></tr>
27982 <thead class="entries_header">
27984 <th class="th_name">Property Name</th>
27985 <th class="th_type">Type</th>
27986 <th class="th_description">Description</th>
27987 <th class="th_units">Units</th>
27988 <th class="th_range">Range</th>
27989 <th class="th_hal_version">Initial HIDL HAL version</th>
27990 <th class="th_tags">Tags</th>
28005 <tr class="entry" id="static_android.led.availableLeds">
28006 <td class="entry_name
28008 android.<wbr/>led.<wbr/>available<wbr/>Leds
28010 <td class="entry_type">
28011 <span class="entry_type_name entry_type_name_enum">byte</span>
28012 <span class="entry_type_container">x</span>
28014 <span class="entry_type_array">
28017 <span class="entry_type_visibility"> [hidden]</span>
28023 <ul class="entry_type_enum">
28025 <span class="entry_type_enum_name">TRANSMIT (v3.2)</span>
28026 <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>
28030 </td> <!-- entry_type -->
28032 <td class="entry_description">
28033 <p>A list of camera LEDs that are available on this system.<wbr/></p>
28036 <td class="entry_units">
28039 <td class="entry_range">
28042 <td class="entry_hal_version">
28046 <td class="entry_tags">
28052 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28053 <!-- end of entry -->
28057 <!-- end of kind -->
28060 <!-- end of section -->
28061 <tr><td colspan="7" id="section_info" class="section">info</td></tr>
28064 <tr><td colspan="7" class="kind">static</td></tr>
28066 <thead class="entries_header">
28068 <th class="th_name">Property Name</th>
28069 <th class="th_type">Type</th>
28070 <th class="th_description">Description</th>
28071 <th class="th_units">Units</th>
28072 <th class="th_range">Range</th>
28073 <th class="th_hal_version">Initial HIDL HAL version</th>
28074 <th class="th_tags">Tags</th>
28089 <tr class="entry" id="static_android.info.supportedHardwareLevel">
28090 <td class="entry_name
28092 android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level
28094 <td class="entry_type">
28095 <span class="entry_type_name entry_type_name_enum">byte</span>
28097 <span class="entry_type_visibility"> [public]</span>
28100 <span class="entry_type_hwlevel">[legacy] </span>
28104 <ul class="entry_type_enum">
28106 <span class="entry_type_enum_name">LIMITED (v3.2)</span>
28107 <span class="entry_type_enum_notes"><p>This camera device does not have enough capabilities to qualify as a <code>FULL</code> device or
28109 <p>Only the stream configurations listed in the <code>LEGACY</code> and <code>LIMITED</code> tables in the
28110 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">createCaptureSession</a> documentation are guaranteed to be supported.<wbr/></p>
28111 <p>All <code>LIMITED</code> devices support the <code>BACKWARDS_<wbr/>COMPATIBLE</code> capability,<wbr/> indicating basic
28112 support for color image capture.<wbr/> The only exception is that the device may
28113 alternatively support only the <code>DEPTH_<wbr/>OUTPUT</code> capability,<wbr/> if it can only output depth
28114 measurements and not color images.<wbr/></p>
28115 <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>
28116 to lock exposure metering (and calculate flash power,<wbr/> for cameras with flash) before
28117 capturing a high-quality still image.<wbr/></p>
28118 <p>A <code>LIMITED</code> device that only lists the <code>BACKWARDS_<wbr/>COMPATIBLE</code> capability is only
28119 required to support full-automatic operation and post-processing (<code>OFF</code> is not
28120 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
28121 <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>)</p>
28122 <p>Additional capabilities may optionally be supported by a <code>LIMITED</code>-level device,<wbr/> and
28123 can be checked for in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p></span>
28126 <span class="entry_type_enum_name">FULL (v3.2)</span>
28127 <span class="entry_type_enum_notes"><p>This camera device is capable of supporting advanced imaging applications.<wbr/></p>
28128 <p>The stream configurations listed in the <code>FULL</code>,<wbr/> <code>LEGACY</code> and <code>LIMITED</code> tables in the
28129 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">createCaptureSession</a> documentation are guaranteed to be supported.<wbr/></p>
28130 <p>A <code>FULL</code> device will support below capabilities:</p>
28132 <li><code>BURST_<wbr/>CAPTURE</code> capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
28133 <code>BURST_<wbr/>CAPTURE</code>)</li>
28134 <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>
28135 <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>
28136 <li>Manual post-processing control (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
28137 <code>MANUAL_<wbr/>POST_<wbr/>PROCESSING</code>)</li>
28138 <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>
28139 <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>
28142 Pre-API level 23,<wbr/> FULL devices also supported arbitrary cropping region
28143 (<a href="#static_android.scaler.croppingType">android.<wbr/>scaler.<wbr/>cropping<wbr/>Type</a> <code>== FREEFORM</code>); this requirement was relaxed in API level
28144 23,<wbr/> and <code>FULL</code> devices may only support <code>CENTERED</code> cropping.<wbr/></p></span>
28147 <span class="entry_type_enum_name">LEGACY (v3.2)</span>
28148 <span class="entry_type_enum_notes"><p>This camera device is running in backward compatibility mode.<wbr/></p>
28149 <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>
28150 <p>A <code>LEGACY</code> device does not support per-frame control,<wbr/> manual sensor control,<wbr/> manual
28151 post-processing,<wbr/> arbitrary cropping regions,<wbr/> and has relaxed performance constraints.<wbr/>
28152 No additional capabilities beyond <code>BACKWARD_<wbr/>COMPATIBLE</code> will ever be listed by a
28153 <code>LEGACY</code> device in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
28154 <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>
28155 devices.<wbr/> Instead,<wbr/> every request that includes a JPEG-format output target is treated
28156 as triggering a still capture,<wbr/> internally executing a precapture trigger.<wbr/> This may
28157 fire the flash for flash power metering during precapture,<wbr/> and then fire the flash
28158 for the final capture,<wbr/> if a flash is available on the device and the AE mode is set to
28159 enable the flash.<wbr/></p></span>
28162 <span class="entry_type_enum_name">3 (v3.2)</span>
28163 <span class="entry_type_enum_notes"><p>This camera device is capable of YUV reprocessing and RAW data capture,<wbr/> in addition to
28164 FULL-level capabilities.<wbr/></p>
28165 <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
28166 <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>
28167 <p>The following additional capabilities are guaranteed to be supported:</p>
28169 <li><code>YUV_<wbr/>REPROCESSING</code> capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
28170 <code>YUV_<wbr/>REPROCESSING</code>)</li>
28171 <li><code>RAW</code> capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
28172 <code>RAW</code>)</li>
28176 <span class="entry_type_enum_name">EXTERNAL (v3.3)</span>
28177 <span class="entry_type_enum_notes"><p>This camera device is backed by an external camera connected to this Android device.<wbr/></p>
28178 <p>The device has capability identical to a LIMITED level device,<wbr/> with the following
28181 <li>The device may not report lens/<wbr/>sensor related information such as<ul>
28182 <li><a href="#controls_android.lens.focalLength">android.<wbr/>lens.<wbr/>focal<wbr/>Length</a></li>
28183 <li><a href="#static_android.lens.info.hyperfocalDistance">android.<wbr/>lens.<wbr/>info.<wbr/>hyperfocal<wbr/>Distance</a></li>
28184 <li><a href="#static_android.sensor.info.physicalSize">android.<wbr/>sensor.<wbr/>info.<wbr/>physical<wbr/>Size</a></li>
28185 <li><a href="#static_android.sensor.info.whiteLevel">android.<wbr/>sensor.<wbr/>info.<wbr/>white<wbr/>Level</a></li>
28186 <li><a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a></li>
28187 <li><a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a></li>
28188 <li><a href="#dynamic_android.sensor.rollingShutterSkew">android.<wbr/>sensor.<wbr/>rolling<wbr/>Shutter<wbr/>Skew</a></li>
28191 <li>The device will report 0 for <a href="#static_android.sensor.orientation">android.<wbr/>sensor.<wbr/>orientation</a></li>
28192 <li>The device has less guarantee on stable framerate,<wbr/> as the framerate partly depends
28193 on the external camera being used.<wbr/></li>
28198 </td> <!-- entry_type -->
28200 <td class="entry_description">
28201 <p>Generally classifies the overall set of the camera device functionality.<wbr/></p>
28204 <td class="entry_units">
28207 <td class="entry_range">
28210 <td class="entry_hal_version">
28214 <td class="entry_tags">
28218 <tr class="entries_header">
28219 <th class="th_details" colspan="6">Details</th>
28221 <tr class="entry_cont">
28222 <td class="entry_details" colspan="6">
28223 <p>The supported hardware level is a high-level description of the camera device's
28224 capabilities,<wbr/> summarizing several capabilities into one field.<wbr/> Each level adds additional
28225 features to the previous one,<wbr/> and is always a strict superset of the previous level.<wbr/>
28226 The ordering is <code>LEGACY < LIMITED < FULL < LEVEL_<wbr/>3</code>.<wbr/></p>
28227 <p>Starting from <code>LEVEL_<wbr/>3</code>,<wbr/> the level enumerations are guaranteed to be in increasing
28228 numerical value as well.<wbr/> To check if a given device is at least at a given hardware level,<wbr/>
28229 the following code snippet can be used:</p>
28230 <pre><code>//<wbr/> Returns true if the device supports the required hardware level,<wbr/> or better.<wbr/>
28231 boolean isHardwareLevelSupported(CameraCharacteristics c,<wbr/> int requiredLevel) {
28232 int deviceLevel = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>INFO_<wbr/>SUPPORTED_<wbr/>HARDWARE_<wbr/>LEVEL);
28233 if (deviceLevel == Camera<wbr/>Characteristics.<wbr/>INFO_<wbr/>SUPPORTED_<wbr/>HARDWARE_<wbr/>LEVEL_<wbr/>LEGACY) {
28234 return requiredLevel == deviceLevel;
28236 //<wbr/> deviceLevel is not LEGACY,<wbr/> can use numerical sort
28237 return requiredLevel <= deviceLevel;
28240 <p>At a high level,<wbr/> the levels are:</p>
28242 <li><code>LEGACY</code> devices operate in a backwards-compatibility mode for older
28243 Android devices,<wbr/> and have very limited capabilities.<wbr/></li>
28244 <li><code>LIMITED</code> devices represent the
28245 baseline feature set,<wbr/> and may also include additional capabilities that are
28246 subsets of <code>FULL</code>.<wbr/></li>
28247 <li><code>FULL</code> devices additionally support per-frame manual control of sensor,<wbr/> flash,<wbr/> lens and
28248 post-processing settings,<wbr/> and image capture at a high rate.<wbr/></li>
28249 <li><code>LEVEL_<wbr/>3</code> devices additionally support YUV reprocessing and RAW image capture,<wbr/> along
28250 with additional output stream configurations.<wbr/></li>
28252 <p>See the individual level enums for full descriptions of the supported capabilities.<wbr/> The
28253 <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> entry describes the device's capabilities at a
28254 finer-grain level,<wbr/> if needed.<wbr/> In addition,<wbr/> many controls have their available settings or
28255 ranges defined in individual entries from <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html">CameraCharacteristics</a>.<wbr/></p>
28256 <p>Some features are not part of any particular hardware level or capability and must be
28257 queried separately.<wbr/> These include:</p>
28259 <li>Calibrated timestamps (<a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME)</li>
28260 <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>
28261 <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>
28262 <li>Optical or electrical image stabilization
28263 (<a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a>,<wbr/>
28264 <a href="#static_android.control.availableVideoStabilizationModes">android.<wbr/>control.<wbr/>available<wbr/>Video<wbr/>Stabilization<wbr/>Modes</a>)</li>
28269 <tr class="entries_header">
28270 <th class="th_details" colspan="6">HAL Implementation Details</th>
28272 <tr class="entry_cont">
28273 <td class="entry_details" colspan="6">
28274 <p>A camera HALv3 device can implement one of three possible operational modes; LIMITED,<wbr/>
28275 FULL,<wbr/> and LEVEL_<wbr/>3.<wbr/></p>
28276 <p>FULL support or better is expected from new higher-end devices.<wbr/> Limited
28277 mode has hardware requirements roughly in line with those for a camera HAL device v1
28278 implementation,<wbr/> and is expected from older or inexpensive devices.<wbr/> Each level is a strict
28279 superset of the previous level,<wbr/> and they share the same essential operational flow.<wbr/></p>
28280 <p>For full details refer to "S3.<wbr/> Operational Modes" in camera3.<wbr/>h</p>
28281 <p>Camera HAL3+ must not implement LEGACY mode.<wbr/> It is there for backwards compatibility in
28282 the <code>android.<wbr/>hardware.<wbr/>camera2</code> user-facing API only on legacy HALv1 devices,<wbr/> and is
28283 implemented by the camera framework code.<wbr/></p>
28284 <p>EXTERNAL level devices have lower peformance bar in CTS since the peformance might depend
28285 on the external camera being used and is not fully controlled by the device manufacturer.<wbr/>
28286 The ITS test suite is exempted for the same reason.<wbr/></p>
28290 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28291 <!-- end of entry -->
28294 <tr class="entry" id="static_android.info.version">
28295 <td class="entry_name
28297 android.<wbr/>info.<wbr/>version
28299 <td class="entry_type">
28300 <span class="entry_type_name">byte</span>
28302 <span class="entry_type_visibility"> [public as string]</span>
28309 </td> <!-- entry_type -->
28311 <td class="entry_description">
28312 <p>A short string for manufacturer version information about the camera device,<wbr/> such as
28313 ISP hardware,<wbr/> sensors,<wbr/> etc.<wbr/></p>
28316 <td class="entry_units">
28319 <td class="entry_range">
28322 <td class="entry_hal_version">
28326 <td class="entry_tags">
28330 <tr class="entries_header">
28331 <th class="th_details" colspan="6">Details</th>
28333 <tr class="entry_cont">
28334 <td class="entry_details" colspan="6">
28335 <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>
28336 in jpeg EXIF.<wbr/> This key may be absent if no version information is available on the
28341 <tr class="entries_header">
28342 <th class="th_details" colspan="6">HAL Implementation Details</th>
28344 <tr class="entry_cont">
28345 <td class="entry_details" colspan="6">
28346 <p>The string must consist of only alphanumeric characters,<wbr/> punctuation,<wbr/> and
28347 whitespace,<wbr/> i.<wbr/>e.<wbr/> it must match regular expression "[\p{Alnum}\p{Punct}\p{Space}]*".<wbr/>
28348 It must not exceed 256 characters.<wbr/></p>
28352 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28353 <!-- end of entry -->
28357 <!-- end of kind -->
28360 <!-- end of section -->
28361 <tr><td colspan="7" id="section_blackLevel" class="section">blackLevel</td></tr>
28364 <tr><td colspan="7" class="kind">controls</td></tr>
28366 <thead class="entries_header">
28368 <th class="th_name">Property Name</th>
28369 <th class="th_type">Type</th>
28370 <th class="th_description">Description</th>
28371 <th class="th_units">Units</th>
28372 <th class="th_range">Range</th>
28373 <th class="th_hal_version">Initial HIDL HAL version</th>
28374 <th class="th_tags">Tags</th>
28389 <tr class="entry" id="controls_android.blackLevel.lock">
28390 <td class="entry_name
28392 android.<wbr/>black<wbr/>Level.<wbr/>lock
28394 <td class="entry_type">
28395 <span class="entry_type_name entry_type_name_enum">byte</span>
28397 <span class="entry_type_visibility"> [public as boolean]</span>
28400 <span class="entry_type_hwlevel">[full] </span>
28404 <ul class="entry_type_enum">
28406 <span class="entry_type_enum_name">OFF (v3.2)</span>
28409 <span class="entry_type_enum_name">ON (v3.2)</span>
28413 </td> <!-- entry_type -->
28415 <td class="entry_description">
28416 <p>Whether black-level compensation is locked
28417 to its current values,<wbr/> or is free to vary.<wbr/></p>
28420 <td class="entry_units">
28423 <td class="entry_range">
28426 <td class="entry_hal_version">
28430 <td class="entry_tags">
28431 <ul class="entry_tags">
28432 <li><a href="#tag_HAL2">HAL2</a></li>
28437 <tr class="entries_header">
28438 <th class="th_details" colspan="6">Details</th>
28440 <tr class="entry_cont">
28441 <td class="entry_details" colspan="6">
28442 <p>When set to <code>true</code> (ON),<wbr/> the values used for black-level
28443 compensation will not change until the lock is set to
28444 <code>false</code> (OFF).<wbr/></p>
28445 <p>Since changes to certain capture parameters (such as
28446 exposure time) may require resetting of black level
28447 compensation,<wbr/> the camera device must report whether setting
28448 the black level lock was successful in the output result
28449 metadata.<wbr/></p>
28450 <p>For example,<wbr/> if a sequence of requests is as follows:</p>
28452 <li>Request 1: Exposure = 10ms,<wbr/> Black level lock = OFF</li>
28453 <li>Request 2: Exposure = 10ms,<wbr/> Black level lock = ON</li>
28454 <li>Request 3: Exposure = 10ms,<wbr/> Black level lock = ON</li>
28455 <li>Request 4: Exposure = 20ms,<wbr/> Black level lock = ON</li>
28456 <li>Request 5: Exposure = 20ms,<wbr/> Black level lock = ON</li>
28457 <li>Request 6: Exposure = 20ms,<wbr/> Black level lock = ON</li>
28459 <p>And the exposure change in Request 4 requires the camera
28460 device to reset the black level offsets,<wbr/> then the output
28461 result metadata is expected to be:</p>
28463 <li>Result 1: Exposure = 10ms,<wbr/> Black level lock = OFF</li>
28464 <li>Result 2: Exposure = 10ms,<wbr/> Black level lock = ON</li>
28465 <li>Result 3: Exposure = 10ms,<wbr/> Black level lock = ON</li>
28466 <li>Result 4: Exposure = 20ms,<wbr/> Black level lock = OFF</li>
28467 <li>Result 5: Exposure = 20ms,<wbr/> Black level lock = ON</li>
28468 <li>Result 6: Exposure = 20ms,<wbr/> Black level lock = ON</li>
28470 <p>This indicates to the application that on frame 4,<wbr/> black
28471 levels were reset due to exposure value changes,<wbr/> and pixel
28472 values may not be consistent across captures.<wbr/></p>
28473 <p>The camera device will maintain the lock to the extent
28474 possible,<wbr/> only overriding the lock to OFF when changes to
28475 other request parameters require a black level recalculation
28476 or reset.<wbr/></p>
28480 <tr class="entries_header">
28481 <th class="th_details" colspan="6">HAL Implementation Details</th>
28483 <tr class="entry_cont">
28484 <td class="entry_details" colspan="6">
28485 <p>If for some reason black level locking is no longer possible
28486 (for example,<wbr/> the analog gain has changed,<wbr/> which forces
28487 black level offsets to be recalculated),<wbr/> then the HAL must
28488 override this request (and it must report 'OFF' when this
28489 does happen) until the next capture for which locking is
28490 possible again.<wbr/></p>
28494 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28495 <!-- end of entry -->
28499 <!-- end of kind -->
28501 <tr><td colspan="7" class="kind">dynamic</td></tr>
28503 <thead class="entries_header">
28505 <th class="th_name">Property Name</th>
28506 <th class="th_type">Type</th>
28507 <th class="th_description">Description</th>
28508 <th class="th_units">Units</th>
28509 <th class="th_range">Range</th>
28510 <th class="th_hal_version">Initial HIDL HAL version</th>
28511 <th class="th_tags">Tags</th>
28526 <tr class="entry" id="dynamic_android.blackLevel.lock">
28527 <td class="entry_name
28529 android.<wbr/>black<wbr/>Level.<wbr/>lock
28531 <td class="entry_type">
28532 <span class="entry_type_name entry_type_name_enum">byte</span>
28534 <span class="entry_type_visibility"> [public as boolean]</span>
28537 <span class="entry_type_hwlevel">[full] </span>
28541 <ul class="entry_type_enum">
28543 <span class="entry_type_enum_name">OFF (v3.2)</span>
28546 <span class="entry_type_enum_name">ON (v3.2)</span>
28550 </td> <!-- entry_type -->
28552 <td class="entry_description">
28553 <p>Whether black-level compensation is locked
28554 to its current values,<wbr/> or is free to vary.<wbr/></p>
28557 <td class="entry_units">
28560 <td class="entry_range">
28563 <td class="entry_hal_version">
28567 <td class="entry_tags">
28568 <ul class="entry_tags">
28569 <li><a href="#tag_HAL2">HAL2</a></li>
28574 <tr class="entries_header">
28575 <th class="th_details" colspan="6">Details</th>
28577 <tr class="entry_cont">
28578 <td class="entry_details" colspan="6">
28579 <p>Whether the black level offset was locked for this frame.<wbr/> Should be
28580 ON if <a href="#controls_android.blackLevel.lock">android.<wbr/>black<wbr/>Level.<wbr/>lock</a> was ON in the capture request,<wbr/> unless
28581 a change in other capture settings forced the camera device to
28582 perform a black level reset.<wbr/></p>
28586 <tr class="entries_header">
28587 <th class="th_details" colspan="6">HAL Implementation Details</th>
28589 <tr class="entry_cont">
28590 <td class="entry_details" colspan="6">
28591 <p>If for some reason black level locking is no longer possible
28592 (for example,<wbr/> the analog gain has changed,<wbr/> which forces
28593 black level offsets to be recalculated),<wbr/> then the HAL must
28594 override this request (and it must report 'OFF' when this
28595 does happen) until the next capture for which locking is
28596 possible again.<wbr/></p>
28600 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28601 <!-- end of entry -->
28605 <!-- end of kind -->
28608 <!-- end of section -->
28609 <tr><td colspan="7" id="section_sync" class="section">sync</td></tr>
28612 <tr><td colspan="7" class="kind">dynamic</td></tr>
28614 <thead class="entries_header">
28616 <th class="th_name">Property Name</th>
28617 <th class="th_type">Type</th>
28618 <th class="th_description">Description</th>
28619 <th class="th_units">Units</th>
28620 <th class="th_range">Range</th>
28621 <th class="th_hal_version">Initial HIDL HAL version</th>
28622 <th class="th_tags">Tags</th>
28637 <tr class="entry" id="dynamic_android.sync.frameNumber">
28638 <td class="entry_name
28640 android.<wbr/>sync.<wbr/>frame<wbr/>Number
28642 <td class="entry_type">
28643 <span class="entry_type_name entry_type_name_enum">int64</span>
28645 <span class="entry_type_visibility"> [ndk_public]</span>
28648 <span class="entry_type_hwlevel">[legacy] </span>
28652 <ul class="entry_type_enum">
28654 <span class="entry_type_enum_name">CONVERGING (v3.2)</span>
28655 <span class="entry_type_enum_value">-1</span>
28656 <span class="entry_type_enum_notes"><p>The current result is not yet fully synchronized to any request.<wbr/></p>
28657 <p>Synchronization is in progress,<wbr/> and reading metadata from this
28658 result may include a mix of data that have taken effect since the
28659 last synchronization time.<wbr/></p>
28660 <p>In some future result,<wbr/> within <a href="#static_android.sync.maxLatency">android.<wbr/>sync.<wbr/>max<wbr/>Latency</a> frames,<wbr/>
28661 this value will update to the actual frame number frame number
28662 the result is guaranteed to be synchronized to (as long as the
28663 request settings remain constant).<wbr/></p></span>
28666 <span class="entry_type_enum_name">UNKNOWN (v3.2)</span>
28667 <span class="entry_type_enum_value">-2</span>
28668 <span class="entry_type_enum_notes"><p>The current result's synchronization status is unknown.<wbr/></p>
28669 <p>The result may have already converged,<wbr/> or it may be in
28670 progress.<wbr/> Reading from this result may include some mix
28671 of settings from past requests.<wbr/></p>
28672 <p>After a settings change,<wbr/> the new settings will eventually all
28673 take effect for the output buffers and results.<wbr/> However,<wbr/> this
28674 value will not change when that happens.<wbr/> Altering settings
28675 rapidly may provide outcomes using mixes of settings from recent
28676 requests.<wbr/></p>
28677 <p>This value is intended primarily for backwards compatibility with
28678 the older camera implementations (for android.<wbr/>hardware.<wbr/>Camera).<wbr/></p></span>
28682 </td> <!-- entry_type -->
28684 <td class="entry_description">
28685 <p>The frame number corresponding to the last request
28686 with which the output result (metadata + buffers) has been fully
28687 synchronized.<wbr/></p>
28690 <td class="entry_units">
28693 <td class="entry_range">
28694 <p>Either a non-negative value corresponding to a
28695 <code>frame_<wbr/>number</code>,<wbr/> or one of the two enums (CONVERGING /<wbr/> UNKNOWN).<wbr/></p>
28698 <td class="entry_hal_version">
28702 <td class="entry_tags">
28703 <ul class="entry_tags">
28704 <li><a href="#tag_V1">V1</a></li>
28709 <tr class="entries_header">
28710 <th class="th_details" colspan="6">Details</th>
28712 <tr class="entry_cont">
28713 <td class="entry_details" colspan="6">
28714 <p>When a request is submitted to the camera device,<wbr/> there is usually a
28715 delay of several frames before the controls get applied.<wbr/> A camera
28716 device may either choose to account for this delay by implementing a
28717 pipeline and carefully submit well-timed atomic control updates,<wbr/> or
28718 it may start streaming control changes that span over several frame
28719 boundaries.<wbr/></p>
28720 <p>In the latter case,<wbr/> whenever a request's settings change relative to
28721 the previous submitted request,<wbr/> the full set of changes may take
28722 multiple frame durations to fully take effect.<wbr/> Some settings may
28723 take effect sooner (in less frame durations) than others.<wbr/></p>
28724 <p>While a set of control changes are being propagated,<wbr/> this value
28725 will be CONVERGING.<wbr/></p>
28726 <p>Once it is fully known that a set of control changes have been
28727 finished propagating,<wbr/> and the resulting updated control settings
28728 have been read back by the camera device,<wbr/> this value will be set
28729 to a non-negative frame number (corresponding to the request to
28730 which the results have synchronized to).<wbr/></p>
28731 <p>Older camera device implementations may not have a way to detect
28732 when all camera controls have been applied,<wbr/> and will always set this
28733 value to UNKNOWN.<wbr/></p>
28734 <p>FULL capability devices will always have this value set to the
28735 frame number of the request corresponding to this result.<wbr/></p>
28736 <p><em>Further details</em>:</p>
28738 <li>Whenever a request differs from the last request,<wbr/> any future
28739 results not yet returned may have this value set to CONVERGING (this
28740 could include any in-progress captures not yet returned by the camera
28741 device,<wbr/> for more details see pipeline considerations below).<wbr/></li>
28742 <li>Submitting a series of multiple requests that differ from the
28743 previous request (e.<wbr/>g.<wbr/> r1,<wbr/> r2,<wbr/> r3 s.<wbr/>t.<wbr/> r1 != r2 != r3)
28744 moves the new synchronization frame to the last non-repeating
28745 request (using the smallest frame number from the contiguous list of
28746 repeating requests).<wbr/></li>
28747 <li>Submitting the same request repeatedly will not change this value
28748 to CONVERGING,<wbr/> if it was already a non-negative value.<wbr/></li>
28749 <li>When this value changes to non-negative,<wbr/> that means that all of the
28750 metadata controls from the request have been applied,<wbr/> all of the
28751 metadata controls from the camera device have been read to the
28752 updated values (into the result),<wbr/> and all of the graphics buffers
28753 corresponding to this result are also synchronized to the request.<wbr/></li>
28755 <p><em>Pipeline considerations</em>:</p>
28756 <p>Submitting a request with updated controls relative to the previously
28757 submitted requests may also invalidate the synchronization state
28758 of all the results corresponding to currently in-flight requests.<wbr/></p>
28759 <p>In other words,<wbr/> results for this current request and up to
28760 <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a> prior requests may have their
28761 <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> change to CONVERGING.<wbr/></p>
28765 <tr class="entries_header">
28766 <th class="th_details" colspan="6">HAL Implementation Details</th>
28768 <tr class="entry_cont">
28769 <td class="entry_details" colspan="6">
28770 <p>Using UNKNOWN here is illegal unless <a href="#static_android.sync.maxLatency">android.<wbr/>sync.<wbr/>max<wbr/>Latency</a>
28771 is also UNKNOWN.<wbr/></p>
28772 <p>FULL capability devices should simply set this value to the
28773 <code>frame_<wbr/>number</code> of the request this result corresponds to.<wbr/></p>
28777 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28778 <!-- end of entry -->
28782 <!-- end of kind -->
28784 <tr><td colspan="7" class="kind">static</td></tr>
28786 <thead class="entries_header">
28788 <th class="th_name">Property Name</th>
28789 <th class="th_type">Type</th>
28790 <th class="th_description">Description</th>
28791 <th class="th_units">Units</th>
28792 <th class="th_range">Range</th>
28793 <th class="th_hal_version">Initial HIDL HAL version</th>
28794 <th class="th_tags">Tags</th>
28809 <tr class="entry" id="static_android.sync.maxLatency">
28810 <td class="entry_name
28812 android.<wbr/>sync.<wbr/>max<wbr/>Latency
28814 <td class="entry_type">
28815 <span class="entry_type_name entry_type_name_enum">int32</span>
28817 <span class="entry_type_visibility"> [public]</span>
28820 <span class="entry_type_hwlevel">[legacy] </span>
28824 <ul class="entry_type_enum">
28826 <span class="entry_type_enum_name">PER_FRAME_CONTROL (v3.2)</span>
28827 <span class="entry_type_enum_value">0</span>
28828 <span class="entry_type_enum_notes"><p>Every frame has the requests immediately applied.<wbr/></p>
28829 <p>Changing controls over multiple requests one after another will
28830 produce results that have those controls applied atomically
28831 each frame.<wbr/></p>
28832 <p>All FULL capability devices will have this as their maxLatency.<wbr/></p></span>
28835 <span class="entry_type_enum_name">UNKNOWN (v3.2)</span>
28836 <span class="entry_type_enum_value">-1</span>
28837 <span class="entry_type_enum_notes"><p>Each new frame has some subset (potentially the entire set)
28838 of the past requests applied to the camera settings.<wbr/></p>
28839 <p>By submitting a series of identical requests,<wbr/> the camera device
28840 will eventually have the camera settings applied,<wbr/> but it is
28841 unknown when that exact point will be.<wbr/></p>
28842 <p>All LEGACY capability devices will have this as their maxLatency.<wbr/></p></span>
28846 </td> <!-- entry_type -->
28848 <td class="entry_description">
28849 <p>The maximum number of frames that can occur after a request
28850 (different than the previous) has been submitted,<wbr/> and before the
28851 result's state becomes synchronized.<wbr/></p>
28854 <td class="entry_units">
28858 <td class="entry_range">
28859 <p>A positive value,<wbr/> PER_<wbr/>FRAME_<wbr/>CONTROL,<wbr/> or UNKNOWN.<wbr/></p>
28862 <td class="entry_hal_version">
28866 <td class="entry_tags">
28867 <ul class="entry_tags">
28868 <li><a href="#tag_V1">V1</a></li>
28873 <tr class="entries_header">
28874 <th class="th_details" colspan="6">Details</th>
28876 <tr class="entry_cont">
28877 <td class="entry_details" colspan="6">
28878 <p>This defines the maximum distance (in number of metadata results),<wbr/>
28879 between the frame number of the request that has new controls to apply
28880 and the frame number of the result that has all the controls applied.<wbr/></p>
28881 <p>In other words this acts as an upper boundary for how many frames
28882 must occur before the camera device knows for a fact that the new
28883 submitted camera settings have been applied in outgoing frames.<wbr/></p>
28887 <tr class="entries_header">
28888 <th class="th_details" colspan="6">HAL Implementation Details</th>
28890 <tr class="entry_cont">
28891 <td class="entry_details" colspan="6">
28892 <p>For example if maxLatency was 2,<wbr/></p>
28893 <pre><code>initial request = X (repeating)
28899 where requestN has frameNumber N,<wbr/> and the first of the repeating
28900 initial request's has frameNumber F (and F < 1).<wbr/>
28902 initial result = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == F }
28903 result1 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == F }
28904 result2 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == CONVERGING }
28905 result3 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == CONVERGING }
28906 result4 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == 2 }
28908 where resultN has frameNumber N.<wbr/>
28910 <p>Since <code>result4</code> has a <code>frameNumber == 4</code> and
28911 <code><a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == 2</code>,<wbr/> the distance is clearly
28912 <code>4 - 2 = 2</code>.<wbr/></p>
28913 <p>Use <code>frame_<wbr/>count</code> from camera3_<wbr/>request_<wbr/>t instead of
28914 <a href="#controls_android.request.frameCount">android.<wbr/>request.<wbr/>frame<wbr/>Count</a> or
28915 <code><a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html#getFrameNumber">CaptureResult#getFrameNumber</a></code>.<wbr/></p>
28916 <p>LIMITED devices are strongly encouraged to use a non-negative
28917 value.<wbr/> If UNKNOWN is used here then app developers do not have a way
28918 to know when sensor settings have been applied.<wbr/></p>
28922 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28923 <!-- end of entry -->
28927 <!-- end of kind -->
28930 <!-- end of section -->
28931 <tr><td colspan="7" id="section_reprocess" class="section">reprocess</td></tr>
28934 <tr><td colspan="7" class="kind">controls</td></tr>
28936 <thead class="entries_header">
28938 <th class="th_name">Property Name</th>
28939 <th class="th_type">Type</th>
28940 <th class="th_description">Description</th>
28941 <th class="th_units">Units</th>
28942 <th class="th_range">Range</th>
28943 <th class="th_hal_version">Initial HIDL HAL version</th>
28944 <th class="th_tags">Tags</th>
28959 <tr class="entry" id="controls_android.reprocess.effectiveExposureFactor">
28960 <td class="entry_name
28962 android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor
28964 <td class="entry_type">
28965 <span class="entry_type_name">float</span>
28967 <span class="entry_type_visibility"> [java_public]</span>
28970 <span class="entry_type_hwlevel">[limited] </span>
28975 </td> <!-- entry_type -->
28977 <td class="entry_description">
28978 <p>The amount of exposure time increase factor applied to the original output
28979 frame by the application processing before sending for reprocessing.<wbr/></p>
28982 <td class="entry_units">
28983 Relative exposure time increase factor.<wbr/>
28986 <td class="entry_range">
28987 <p>>= 1.<wbr/>0</p>
28990 <td class="entry_hal_version">
28994 <td class="entry_tags">
28995 <ul class="entry_tags">
28996 <li><a href="#tag_REPROC">REPROC</a></li>
29001 <tr class="entries_header">
29002 <th class="th_details" colspan="6">Details</th>
29004 <tr class="entry_cont">
29005 <td class="entry_details" colspan="6">
29006 <p>This is optional,<wbr/> and will be supported if the camera device supports YUV_<wbr/>REPROCESSING
29007 capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains YUV_<wbr/>REPROCESSING).<wbr/></p>
29008 <p>For some YUV reprocessing use cases,<wbr/> the application may choose to filter the original
29009 output frames to effectively reduce the noise to the same level as a frame that was
29010 captured with longer exposure time.<wbr/> To be more specific,<wbr/> assuming the original captured
29011 images were captured with a sensitivity of S and an exposure time of T,<wbr/> the model in
29012 the camera device is that the amount of noise in the image would be approximately what
29013 would be expected if the original capture parameters had been a sensitivity of
29014 S/<wbr/>effectiveExposureFactor and an exposure time of T*effectiveExposureFactor,<wbr/> rather
29015 than S and T respectively.<wbr/> If the captured images were processed by the application
29016 before being sent for reprocessing,<wbr/> then the application may have used image processing
29017 algorithms and/<wbr/>or multi-frame image fusion to reduce the noise in the
29018 application-processed images (input images).<wbr/> By using the effectiveExposureFactor
29019 control,<wbr/> the application can communicate to the camera device the actual noise level
29020 improvement in the application-processed image.<wbr/> With this information,<wbr/> the camera
29021 device can select appropriate noise reduction and edge enhancement parameters to avoid
29022 excessive noise reduction (<a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a>) and insufficient edge
29023 enhancement (<a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a>) being applied to the reprocessed frames.<wbr/></p>
29024 <p>For example,<wbr/> for multi-frame image fusion use case,<wbr/> the application may fuse
29025 multiple output frames together to a final frame for reprocessing.<wbr/> When N image are
29026 fused into 1 image for reprocessing,<wbr/> the exposure time increase factor could be up to
29027 square root of N (based on a simple photon shot noise model).<wbr/> The camera device will
29028 adjust the reprocessing noise reduction and edge enhancement parameters accordingly to
29029 produce the best quality images.<wbr/></p>
29030 <p>This is relative factor,<wbr/> 1.<wbr/>0 indicates the application hasn't processed the input
29031 buffer in a way that affects its effective exposure time.<wbr/></p>
29032 <p>This control is only effective for YUV reprocessing capture request.<wbr/> For noise
29033 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/>
29034 Similarly,<wbr/> for edge enhancement reprocessing,<wbr/> it is only effective when
29035 <code><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a> != OFF</code>.<wbr/></p>
29040 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29041 <!-- end of entry -->
29045 <!-- end of kind -->
29047 <tr><td colspan="7" class="kind">dynamic</td></tr>
29049 <thead class="entries_header">
29051 <th class="th_name">Property Name</th>
29052 <th class="th_type">Type</th>
29053 <th class="th_description">Description</th>
29054 <th class="th_units">Units</th>
29055 <th class="th_range">Range</th>
29056 <th class="th_hal_version">Initial HIDL HAL version</th>
29057 <th class="th_tags">Tags</th>
29072 <tr class="entry" id="dynamic_android.reprocess.effectiveExposureFactor">
29073 <td class="entry_name
29075 android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor
29077 <td class="entry_type">
29078 <span class="entry_type_name">float</span>
29080 <span class="entry_type_visibility"> [java_public]</span>
29083 <span class="entry_type_hwlevel">[limited] </span>
29088 </td> <!-- entry_type -->
29090 <td class="entry_description">
29091 <p>The amount of exposure time increase factor applied to the original output
29092 frame by the application processing before sending for reprocessing.<wbr/></p>
29095 <td class="entry_units">
29096 Relative exposure time increase factor.<wbr/>
29099 <td class="entry_range">
29100 <p>>= 1.<wbr/>0</p>
29103 <td class="entry_hal_version">
29107 <td class="entry_tags">
29108 <ul class="entry_tags">
29109 <li><a href="#tag_REPROC">REPROC</a></li>
29114 <tr class="entries_header">
29115 <th class="th_details" colspan="6">Details</th>
29117 <tr class="entry_cont">
29118 <td class="entry_details" colspan="6">
29119 <p>This is optional,<wbr/> and will be supported if the camera device supports YUV_<wbr/>REPROCESSING
29120 capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains YUV_<wbr/>REPROCESSING).<wbr/></p>
29121 <p>For some YUV reprocessing use cases,<wbr/> the application may choose to filter the original
29122 output frames to effectively reduce the noise to the same level as a frame that was
29123 captured with longer exposure time.<wbr/> To be more specific,<wbr/> assuming the original captured
29124 images were captured with a sensitivity of S and an exposure time of T,<wbr/> the model in
29125 the camera device is that the amount of noise in the image would be approximately what
29126 would be expected if the original capture parameters had been a sensitivity of
29127 S/<wbr/>effectiveExposureFactor and an exposure time of T*effectiveExposureFactor,<wbr/> rather
29128 than S and T respectively.<wbr/> If the captured images were processed by the application
29129 before being sent for reprocessing,<wbr/> then the application may have used image processing
29130 algorithms and/<wbr/>or multi-frame image fusion to reduce the noise in the
29131 application-processed images (input images).<wbr/> By using the effectiveExposureFactor
29132 control,<wbr/> the application can communicate to the camera device the actual noise level
29133 improvement in the application-processed image.<wbr/> With this information,<wbr/> the camera
29134 device can select appropriate noise reduction and edge enhancement parameters to avoid
29135 excessive noise reduction (<a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a>) and insufficient edge
29136 enhancement (<a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a>) being applied to the reprocessed frames.<wbr/></p>
29137 <p>For example,<wbr/> for multi-frame image fusion use case,<wbr/> the application may fuse
29138 multiple output frames together to a final frame for reprocessing.<wbr/> When N image are
29139 fused into 1 image for reprocessing,<wbr/> the exposure time increase factor could be up to
29140 square root of N (based on a simple photon shot noise model).<wbr/> The camera device will
29141 adjust the reprocessing noise reduction and edge enhancement parameters accordingly to
29142 produce the best quality images.<wbr/></p>
29143 <p>This is relative factor,<wbr/> 1.<wbr/>0 indicates the application hasn't processed the input
29144 buffer in a way that affects its effective exposure time.<wbr/></p>
29145 <p>This control is only effective for YUV reprocessing capture request.<wbr/> For noise
29146 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/>
29147 Similarly,<wbr/> for edge enhancement reprocessing,<wbr/> it is only effective when
29148 <code><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a> != OFF</code>.<wbr/></p>
29153 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29154 <!-- end of entry -->
29158 <!-- end of kind -->
29160 <tr><td colspan="7" class="kind">static</td></tr>
29162 <thead class="entries_header">
29164 <th class="th_name">Property Name</th>
29165 <th class="th_type">Type</th>
29166 <th class="th_description">Description</th>
29167 <th class="th_units">Units</th>
29168 <th class="th_range">Range</th>
29169 <th class="th_hal_version">Initial HIDL HAL version</th>
29170 <th class="th_tags">Tags</th>
29185 <tr class="entry" id="static_android.reprocess.maxCaptureStall">
29186 <td class="entry_name
29188 android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall
29190 <td class="entry_type">
29191 <span class="entry_type_name">int32</span>
29193 <span class="entry_type_visibility"> [java_public]</span>
29196 <span class="entry_type_hwlevel">[limited] </span>
29201 </td> <!-- entry_type -->
29203 <td class="entry_description">
29204 <p>The maximal camera capture pipeline stall (in unit of frame count) introduced by a
29205 reprocess capture request.<wbr/></p>
29208 <td class="entry_units">
29209 Number of frames.<wbr/>
29212 <td class="entry_range">
29216 <td class="entry_hal_version">
29220 <td class="entry_tags">
29221 <ul class="entry_tags">
29222 <li><a href="#tag_REPROC">REPROC</a></li>
29227 <tr class="entries_header">
29228 <th class="th_details" colspan="6">Details</th>
29230 <tr class="entry_cont">
29231 <td class="entry_details" colspan="6">
29232 <p>The key describes the maximal interference that one reprocess (input) request
29233 can introduce to the camera simultaneous streaming of regular (output) capture
29234 requests,<wbr/> including repeating requests.<wbr/></p>
29235 <p>When a reprocessing capture request is submitted while a camera output repeating request
29236 (e.<wbr/>g.<wbr/> preview) is being served by the camera device,<wbr/> it may preempt the camera capture
29237 pipeline for at least one frame duration so that the camera device is unable to process
29238 the following capture request in time for the next sensor start of exposure boundary.<wbr/>
29239 When this happens,<wbr/> the application may observe a capture time gap (longer than one frame
29240 duration) between adjacent capture output frames,<wbr/> which usually exhibits as preview
29241 glitch if the repeating request output targets include a preview surface.<wbr/> This key gives
29242 the worst-case number of frame stall introduced by one reprocess request with any kind of
29243 formats/<wbr/>sizes combination.<wbr/></p>
29244 <p>If this key reports 0,<wbr/> it means a reprocess request doesn't introduce any glitch to the
29245 ongoing camera repeating request outputs,<wbr/> as if this reprocess request is never issued.<wbr/></p>
29246 <p>This key is supported if the camera device supports PRIVATE or YUV reprocessing (
29247 i.<wbr/>e.<wbr/> <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains PRIVATE_<wbr/>REPROCESSING or
29248 YUV_<wbr/>REPROCESSING).<wbr/></p>
29253 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29254 <!-- end of entry -->
29258 <!-- end of kind -->
29261 <!-- end of section -->
29262 <tr><td colspan="7" id="section_depth" class="section">depth</td></tr>
29265 <tr><td colspan="7" class="kind">static</td></tr>
29267 <thead class="entries_header">
29269 <th class="th_name">Property Name</th>
29270 <th class="th_type">Type</th>
29271 <th class="th_description">Description</th>
29272 <th class="th_units">Units</th>
29273 <th class="th_range">Range</th>
29274 <th class="th_hal_version">Initial HIDL HAL version</th>
29275 <th class="th_tags">Tags</th>
29290 <tr class="entry" id="static_android.depth.maxDepthSamples">
29291 <td class="entry_name
29293 android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples
29295 <td class="entry_type">
29296 <span class="entry_type_name">int32</span>
29298 <span class="entry_type_visibility"> [system]</span>
29301 <span class="entry_type_hwlevel">[limited] </span>
29306 </td> <!-- entry_type -->
29308 <td class="entry_description">
29309 <p>Maximum number of points that a depth point cloud may contain.<wbr/></p>
29312 <td class="entry_units">
29315 <td class="entry_range">
29318 <td class="entry_hal_version">
29322 <td class="entry_tags">
29323 <ul class="entry_tags">
29324 <li><a href="#tag_DEPTH">DEPTH</a></li>
29329 <tr class="entries_header">
29330 <th class="th_details" colspan="6">Details</th>
29332 <tr class="entry_cont">
29333 <td class="entry_details" colspan="6">
29334 <p>If a camera device supports outputting depth range data in the form of a depth point
29335 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
29336 number of points an output buffer may contain.<wbr/></p>
29337 <p>Any given buffer may contain between 0 and maxDepthSamples points,<wbr/> inclusive.<wbr/>
29338 If output in the depth point cloud format is not supported,<wbr/> this entry will
29339 not be defined.<wbr/></p>
29344 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29345 <!-- end of entry -->
29348 <tr class="entry" id="static_android.depth.availableDepthStreamConfigurations">
29349 <td class="entry_name
29351 android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stream<wbr/>Configurations
29353 <td class="entry_type">
29354 <span class="entry_type_name entry_type_name_enum">int32</span>
29355 <span class="entry_type_container">x</span>
29357 <span class="entry_type_array">
29360 <span class="entry_type_visibility"> [ndk_public as streamConfiguration]</span>
29363 <span class="entry_type_hwlevel">[limited] </span>
29367 <ul class="entry_type_enum">
29369 <span class="entry_type_enum_name">OUTPUT (v3.2)</span>
29372 <span class="entry_type_enum_name">INPUT (v3.2)</span>
29376 </td> <!-- entry_type -->
29378 <td class="entry_description">
29379 <p>The available depth dataspace stream
29380 configurations that this camera device supports
29381 (i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p>
29384 <td class="entry_units">
29387 <td class="entry_range">
29390 <td class="entry_hal_version">
29394 <td class="entry_tags">
29395 <ul class="entry_tags">
29396 <li><a href="#tag_DEPTH">DEPTH</a></li>
29401 <tr class="entries_header">
29402 <th class="th_details" colspan="6">Details</th>
29404 <tr class="entry_cont">
29405 <td class="entry_details" colspan="6">
29406 <p>These are output stream configurations for use with
29407 dataSpace HAL_<wbr/>DATASPACE_<wbr/>DEPTH.<wbr/> The configurations are
29408 listed as <code>(format,<wbr/> width,<wbr/> height,<wbr/> input?)</code> tuples.<wbr/></p>
29409 <p>Only devices that support depth output for at least
29410 the HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>Y16 dense depth map may include
29411 this entry.<wbr/></p>
29412 <p>A device that also supports the HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>BLOB
29413 sparse depth point cloud must report a single entry for
29414 the format in this list as <code>(HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>BLOB,<wbr/>
29415 <a href="#static_android.depth.maxDepthSamples">android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples</a>,<wbr/> 1,<wbr/> OUTPUT)</code> in addition to
29416 the entries for HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>Y16.<wbr/></p>
29421 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29422 <!-- end of entry -->
29425 <tr class="entry" id="static_android.depth.availableDepthMinFrameDurations">
29426 <td class="entry_name
29428 android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Min<wbr/>Frame<wbr/>Durations
29430 <td class="entry_type">
29431 <span class="entry_type_name">int64</span>
29432 <span class="entry_type_container">x</span>
29434 <span class="entry_type_array">
29437 <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
29440 <span class="entry_type_hwlevel">[limited] </span>
29445 </td> <!-- entry_type -->
29447 <td class="entry_description">
29448 <p>This lists the minimum frame duration for each
29449 format/<wbr/>size combination for depth output formats.<wbr/></p>
29452 <td class="entry_units">
29453 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
29456 <td class="entry_range">
29459 <td class="entry_hal_version">
29463 <td class="entry_tags">
29464 <ul class="entry_tags">
29465 <li><a href="#tag_DEPTH">DEPTH</a></li>
29470 <tr class="entries_header">
29471 <th class="th_details" colspan="6">Details</th>
29473 <tr class="entry_cont">
29474 <td class="entry_details" colspan="6">
29475 <p>This should correspond to the frame duration when only that
29476 stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode)
29477 set to either OFF or FAST.<wbr/></p>
29478 <p>When multiple streams are used in a request,<wbr/> the minimum frame
29479 duration will be max(individual stream min durations).<wbr/></p>
29480 <p>The minimum frame duration of a stream (of a particular format,<wbr/> size)
29481 is the same regardless of whether the stream is input or output.<wbr/></p>
29482 <p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> and
29483 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for more details about
29484 calculating the max frame rate.<wbr/></p>
29489 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29490 <!-- end of entry -->
29493 <tr class="entry" id="static_android.depth.availableDepthStallDurations">
29494 <td class="entry_name
29496 android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stall<wbr/>Durations
29498 <td class="entry_type">
29499 <span class="entry_type_name">int64</span>
29500 <span class="entry_type_container">x</span>
29502 <span class="entry_type_array">
29505 <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
29508 <span class="entry_type_hwlevel">[limited] </span>
29513 </td> <!-- entry_type -->
29515 <td class="entry_description">
29516 <p>This lists the maximum stall duration for each
29517 output format/<wbr/>size combination for depth streams.<wbr/></p>
29520 <td class="entry_units">
29521 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
29524 <td class="entry_range">
29527 <td class="entry_hal_version">
29531 <td class="entry_tags">
29532 <ul class="entry_tags">
29533 <li><a href="#tag_DEPTH">DEPTH</a></li>
29538 <tr class="entries_header">
29539 <th class="th_details" colspan="6">Details</th>
29541 <tr class="entry_cont">
29542 <td class="entry_details" colspan="6">
29543 <p>A stall duration is how much extra time would get added
29544 to the normal minimum frame duration for a repeating request
29545 that has streams with non-zero stall.<wbr/></p>
29546 <p>This functions similarly to
29547 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for depth
29549 <p>All depth output stream formats may have a nonzero stall
29550 duration.<wbr/></p>
29555 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29556 <!-- end of entry -->
29559 <tr class="entry" id="static_android.depth.depthIsExclusive">
29560 <td class="entry_name
29562 android.<wbr/>depth.<wbr/>depth<wbr/>Is<wbr/>Exclusive
29564 <td class="entry_type">
29565 <span class="entry_type_name entry_type_name_enum">byte</span>
29567 <span class="entry_type_visibility"> [public as boolean]</span>
29570 <span class="entry_type_hwlevel">[limited] </span>
29574 <ul class="entry_type_enum">
29576 <span class="entry_type_enum_name">FALSE (v3.2)</span>
29579 <span class="entry_type_enum_name">TRUE (v3.2)</span>
29583 </td> <!-- entry_type -->
29585 <td class="entry_description">
29586 <p>Indicates whether a capture request may target both a
29587 DEPTH16 /<wbr/> DEPTH_<wbr/>POINT_<wbr/>CLOUD output,<wbr/> and normal color outputs (such as
29588 YUV_<wbr/>420_<wbr/>888,<wbr/> JPEG,<wbr/> or RAW) simultaneously.<wbr/></p>
29591 <td class="entry_units">
29594 <td class="entry_range">
29597 <td class="entry_hal_version">
29601 <td class="entry_tags">
29605 <tr class="entries_header">
29606 <th class="th_details" colspan="6">Details</th>
29608 <tr class="entry_cont">
29609 <td class="entry_details" colspan="6">
29610 <p>If TRUE,<wbr/> including both depth and color outputs in a single
29611 capture request is not supported.<wbr/> An application must interleave color
29612 and depth requests.<wbr/> If FALSE,<wbr/> a single request can target both types
29613 of output.<wbr/></p>
29614 <p>Typically,<wbr/> this restriction exists on camera devices that
29615 need to emit a specific pattern or wavelength of light to
29616 measure depth values,<wbr/> which causes the color image to be
29617 corrupted during depth measurement.<wbr/></p>
29622 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29623 <!-- end of entry -->
29627 <!-- end of kind -->
29630 <!-- end of section -->
29631 <tr><td colspan="7" id="section_logicalMultiCamera" class="section">logicalMultiCamera</td></tr>
29634 <tr><td colspan="7" class="kind">static</td></tr>
29636 <thead class="entries_header">
29638 <th class="th_name">Property Name</th>
29639 <th class="th_type">Type</th>
29640 <th class="th_description">Description</th>
29641 <th class="th_units">Units</th>
29642 <th class="th_range">Range</th>
29643 <th class="th_hal_version">Initial HIDL HAL version</th>
29644 <th class="th_tags">Tags</th>
29659 <tr class="entry" id="static_android.logicalMultiCamera.physicalIds">
29660 <td class="entry_name
29662 android.<wbr/>logical<wbr/>Multi<wbr/>Camera.<wbr/>physical<wbr/>Ids
29664 <td class="entry_type">
29665 <span class="entry_type_name">byte</span>
29666 <span class="entry_type_container">x</span>
29668 <span class="entry_type_array">
29671 <span class="entry_type_visibility"> [hidden]</span>
29674 <span class="entry_type_hwlevel">[limited] </span>
29679 </td> <!-- entry_type -->
29681 <td class="entry_description">
29682 <p>String containing the ids of the underlying physical cameras.<wbr/></p>
29685 <td class="entry_units">
29686 UTF-8 null-terminated string
29689 <td class="entry_range">
29692 <td class="entry_hal_version">
29696 <td class="entry_tags">
29697 <ul class="entry_tags">
29698 <li><a href="#tag_LOGICALCAMERA">LOGICALCAMERA</a></li>
29703 <tr class="entries_header">
29704 <th class="th_details" colspan="6">Details</th>
29706 <tr class="entry_cont">
29707 <td class="entry_details" colspan="6">
29708 <p>For a logical camera,<wbr/> this is concatenation of all underlying physical camera ids.<wbr/>
29709 The null terminator for physical camera id must be preserved so that the whole string
29710 can be tokenized using '\0' to generate list of physical camera ids.<wbr/></p>
29711 <p>For example,<wbr/> if the physical camera ids of the logical camera are "2" and "3",<wbr/> the
29712 value of this tag will be ['2',<wbr/> '\0',<wbr/> '3',<wbr/> '\0'].<wbr/></p>
29713 <p>The number of physical camera ids must be no less than 2.<wbr/></p>
29718 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29719 <!-- end of entry -->
29722 <tr class="entry" id="static_android.logicalMultiCamera.sensorSyncType">
29723 <td class="entry_name
29725 android.<wbr/>logical<wbr/>Multi<wbr/>Camera.<wbr/>sensor<wbr/>Sync<wbr/>Type
29727 <td class="entry_type">
29728 <span class="entry_type_name entry_type_name_enum">byte</span>
29730 <span class="entry_type_visibility"> [public]</span>
29733 <span class="entry_type_hwlevel">[limited] </span>
29737 <ul class="entry_type_enum">
29739 <span class="entry_type_enum_name">APPROXIMATE (v3.3)</span>
29740 <span class="entry_type_enum_notes"><p>A software mechanism is used to synchronize between the physical cameras.<wbr/> As a result,<wbr/>
29741 the timestamp of an image from a physical stream is only an approximation of the
29742 image sensor start-of-exposure time.<wbr/></p></span>
29745 <span class="entry_type_enum_name">CALIBRATED (v3.3)</span>
29746 <span class="entry_type_enum_notes"><p>The camera device supports frame timestamp synchronization at the hardware level,<wbr/>
29747 and the timestamp of a physical stream image accurately reflects its
29748 start-of-exposure time.<wbr/></p></span>
29752 </td> <!-- entry_type -->
29754 <td class="entry_description">
29755 <p>The accuracy of frame timestamp synchronization between physical cameras</p>
29758 <td class="entry_units">
29761 <td class="entry_range">
29764 <td class="entry_hal_version">
29768 <td class="entry_tags">
29769 <ul class="entry_tags">
29770 <li><a href="#tag_LOGICALCAMERA">LOGICALCAMERA</a></li>
29775 <tr class="entries_header">
29776 <th class="th_details" colspan="6">Details</th>
29778 <tr class="entry_cont">
29779 <td class="entry_details" colspan="6">
29780 <p>The accuracy of the frame timestamp synchronization determines the physical cameras'
29781 ability to start exposure at the same time.<wbr/> If the sensorSyncType is CALIBRATED,<wbr/>
29782 the physical camera sensors usually run in master-slave mode so that their shutter
29783 time is synchronized.<wbr/> For APPROXIMATE sensorSyncType,<wbr/> the camera sensors usually run in
29784 master-master mode,<wbr/> and there could be offset between their start of exposure.<wbr/></p>
29785 <p>In both cases,<wbr/> all images generated for a particular capture request still carry the same
29786 timestamps,<wbr/> so that they can be used to look up the matching frame number and
29787 onCaptureStarted callback.<wbr/></p>
29792 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29793 <!-- end of entry -->
29797 <!-- end of kind -->
29800 <!-- end of section -->
29801 <tr><td colspan="7" id="section_distortionCorrection" class="section">distortionCorrection</td></tr>
29804 <tr><td colspan="7" class="kind">controls</td></tr>
29806 <thead class="entries_header">
29808 <th class="th_name">Property Name</th>
29809 <th class="th_type">Type</th>
29810 <th class="th_description">Description</th>
29811 <th class="th_units">Units</th>
29812 <th class="th_range">Range</th>
29813 <th class="th_hal_version">Initial HIDL HAL version</th>
29814 <th class="th_tags">Tags</th>
29829 <tr class="entry" id="controls_android.distortionCorrection.mode">
29830 <td class="entry_name
29832 android.<wbr/>distortion<wbr/>Correction.<wbr/>mode
29834 <td class="entry_type">
29835 <span class="entry_type_name entry_type_name_enum">byte</span>
29837 <span class="entry_type_visibility"> [public]</span>
29843 <ul class="entry_type_enum">
29845 <span class="entry_type_enum_name">OFF (v3.3)</span>
29846 <span class="entry_type_enum_notes"><p>No distortion correction is applied.<wbr/></p></span>
29849 <span class="entry_type_enum_name">FAST (v3.3)</span>
29850 <span class="entry_type_enum_notes"><p>Lens distortion correction is applied without reducing frame rate
29851 relative to sensor output.<wbr/> It may be the same as OFF if distortion correction would
29852 reduce frame rate relative to sensor.<wbr/></p></span>
29855 <span class="entry_type_enum_name">HIGH_QUALITY (v3.3)</span>
29856 <span class="entry_type_enum_notes"><p>High-quality distortion correction is applied,<wbr/> at the cost of
29857 possibly reduced frame rate relative to sensor output.<wbr/></p></span>
29861 </td> <!-- entry_type -->
29863 <td class="entry_description">
29864 <p>Mode of operation for the lens distortion correction block.<wbr/></p>
29867 <td class="entry_units">
29870 <td class="entry_range">
29871 <p><a href="#static_android.distortionCorrection.availableModes">android.<wbr/>distortion<wbr/>Correction.<wbr/>available<wbr/>Modes</a></p>
29874 <td class="entry_hal_version">
29878 <td class="entry_tags">
29882 <tr class="entries_header">
29883 <th class="th_details" colspan="6">Details</th>
29885 <tr class="entry_cont">
29886 <td class="entry_details" colspan="6">
29887 <p>The lens distortion correction block attempts to improve image quality by fixing
29888 radial,<wbr/> tangential,<wbr/> or other geometric aberrations in the camera device's optics.<wbr/> If
29889 available,<wbr/> the <a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a> field documents the lens's distortion parameters.<wbr/></p>
29890 <p>OFF means no distortion correction is done.<wbr/></p>
29891 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined distortion correction will be
29892 applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device will use the highest-quality
29893 correction algorithms,<wbr/> even if it slows down capture rate.<wbr/> FAST means the camera device
29894 will not slow down capture rate when applying correction.<wbr/> FAST may be the same as OFF if
29895 any correction at all would slow down capture rate.<wbr/> Every output stream will have a
29896 similar amount of enhancement applied.<wbr/></p>
29897 <p>The correction only applies to processed outputs such as YUV,<wbr/> JPEG,<wbr/> or DEPTH16; it is not
29898 applied to any RAW output.<wbr/> Metadata coordinates such as face rectangles or metering
29899 regions are also not affected by correction.<wbr/></p>
29900 <p>Applications enabling distortion correction need to pay extra attention when converting
29901 image coordinates between corrected output buffers and the sensor array.<wbr/> For example,<wbr/> if
29902 the app supports tap-to-focus and enables correction,<wbr/> it then has to apply the distortion
29903 model described in <a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a> to the image buffer tap coordinates to properly
29904 calculate the tap position on the sensor active array to be used with
29905 <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
29906 they need to be drawn on top of the corrected output buffers.<wbr/></p>
29911 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29912 <!-- end of entry -->
29916 <!-- end of kind -->
29918 <tr><td colspan="7" class="kind">static</td></tr>
29920 <thead class="entries_header">
29922 <th class="th_name">Property Name</th>
29923 <th class="th_type">Type</th>
29924 <th class="th_description">Description</th>
29925 <th class="th_units">Units</th>
29926 <th class="th_range">Range</th>
29927 <th class="th_hal_version">Initial HIDL HAL version</th>
29928 <th class="th_tags">Tags</th>
29943 <tr class="entry" id="static_android.distortionCorrection.availableModes">
29944 <td class="entry_name
29946 android.<wbr/>distortion<wbr/>Correction.<wbr/>available<wbr/>Modes
29948 <td class="entry_type">
29949 <span class="entry_type_name">byte</span>
29950 <span class="entry_type_container">x</span>
29952 <span class="entry_type_array">
29955 <span class="entry_type_visibility"> [public as enumList]</span>
29960 <div class="entry_type_notes">list of enums</div>
29963 </td> <!-- entry_type -->
29965 <td class="entry_description">
29966 <p>List of distortion correction modes for <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> that are
29967 supported by this camera device.<wbr/></p>
29970 <td class="entry_units">
29973 <td class="entry_range">
29974 <p>Any value listed in <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a></p>
29977 <td class="entry_hal_version">
29981 <td class="entry_tags">
29982 <ul class="entry_tags">
29983 <li><a href="#tag_V1">V1</a></li>
29984 <li><a href="#tag_REPROC">REPROC</a></li>
29989 <tr class="entries_header">
29990 <th class="th_details" colspan="6">Details</th>
29992 <tr class="entry_cont">
29993 <td class="entry_details" colspan="6">
29994 <p>No device is required to support this API; such devices will always list only 'OFF'.<wbr/>
29995 All devices that support this API will list both FAST and HIGH_<wbr/>QUALITY.<wbr/></p>
29999 <tr class="entries_header">
30000 <th class="th_details" colspan="6">HAL Implementation Details</th>
30002 <tr class="entry_cont">
30003 <td class="entry_details" colspan="6">
30004 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if distortion correction is available
30005 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
30006 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
30007 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
30011 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
30012 <!-- end of entry -->
30016 <!-- end of kind -->
30018 <tr><td colspan="7" class="kind">dynamic</td></tr>
30020 <thead class="entries_header">
30022 <th class="th_name">Property Name</th>
30023 <th class="th_type">Type</th>
30024 <th class="th_description">Description</th>
30025 <th class="th_units">Units</th>
30026 <th class="th_range">Range</th>
30027 <th class="th_hal_version">Initial HIDL HAL version</th>
30028 <th class="th_tags">Tags</th>
30043 <tr class="entry" id="dynamic_android.distortionCorrection.mode">
30044 <td class="entry_name
30046 android.<wbr/>distortion<wbr/>Correction.<wbr/>mode
30048 <td class="entry_type">
30049 <span class="entry_type_name entry_type_name_enum">byte</span>
30051 <span class="entry_type_visibility"> [public]</span>
30057 <ul class="entry_type_enum">
30059 <span class="entry_type_enum_name">OFF (v3.3)</span>
30060 <span class="entry_type_enum_notes"><p>No distortion correction is applied.<wbr/></p></span>
30063 <span class="entry_type_enum_name">FAST (v3.3)</span>
30064 <span class="entry_type_enum_notes"><p>Lens distortion correction is applied without reducing frame rate
30065 relative to sensor output.<wbr/> It may be the same as OFF if distortion correction would
30066 reduce frame rate relative to sensor.<wbr/></p></span>
30069 <span class="entry_type_enum_name">HIGH_QUALITY (v3.3)</span>
30070 <span class="entry_type_enum_notes"><p>High-quality distortion correction is applied,<wbr/> at the cost of
30071 possibly reduced frame rate relative to sensor output.<wbr/></p></span>
30075 </td> <!-- entry_type -->
30077 <td class="entry_description">
30078 <p>Mode of operation for the lens distortion correction block.<wbr/></p>
30081 <td class="entry_units">
30084 <td class="entry_range">
30085 <p><a href="#static_android.distortionCorrection.availableModes">android.<wbr/>distortion<wbr/>Correction.<wbr/>available<wbr/>Modes</a></p>
30088 <td class="entry_hal_version">
30092 <td class="entry_tags">
30096 <tr class="entries_header">
30097 <th class="th_details" colspan="6">Details</th>
30099 <tr class="entry_cont">
30100 <td class="entry_details" colspan="6">
30101 <p>The lens distortion correction block attempts to improve image quality by fixing
30102 radial,<wbr/> tangential,<wbr/> or other geometric aberrations in the camera device's optics.<wbr/> If
30103 available,<wbr/> the <a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a> field documents the lens's distortion parameters.<wbr/></p>
30104 <p>OFF means no distortion correction is done.<wbr/></p>
30105 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined distortion correction will be
30106 applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device will use the highest-quality
30107 correction algorithms,<wbr/> even if it slows down capture rate.<wbr/> FAST means the camera device
30108 will not slow down capture rate when applying correction.<wbr/> FAST may be the same as OFF if
30109 any correction at all would slow down capture rate.<wbr/> Every output stream will have a
30110 similar amount of enhancement applied.<wbr/></p>
30111 <p>The correction only applies to processed outputs such as YUV,<wbr/> JPEG,<wbr/> or DEPTH16; it is not
30112 applied to any RAW output.<wbr/> Metadata coordinates such as face rectangles or metering
30113 regions are also not affected by correction.<wbr/></p>
30114 <p>Applications enabling distortion correction need to pay extra attention when converting
30115 image coordinates between corrected output buffers and the sensor array.<wbr/> For example,<wbr/> if
30116 the app supports tap-to-focus and enables correction,<wbr/> it then has to apply the distortion
30117 model described in <a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a> to the image buffer tap coordinates to properly
30118 calculate the tap position on the sensor active array to be used with
30119 <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
30120 they need to be drawn on top of the corrected output buffers.<wbr/></p>
30125 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
30126 <!-- end of entry -->
30130 <!-- end of kind -->
30133 <!-- end of section -->
30134 <!-- </namespace> -->
30137 <div class="tags" id="tag_index">
30140 <li id="tag_BC">BC -
30141 Needed for backwards compatibility with old Java API
30143 <ul class="tags_entries">
30144 <li><a href="#controls_android.control.aeAntibandingMode">android.control.aeAntibandingMode</a> (controls)</li>
30145 <li><a href="#controls_android.control.aeExposureCompensation">android.control.aeExposureCompensation</a> (controls)</li>
30146 <li><a href="#controls_android.control.aeLock">android.control.aeLock</a> (controls)</li>
30147 <li><a href="#controls_android.control.aeMode">android.control.aeMode</a> (controls)</li>
30148 <li><a href="#controls_android.control.aeRegions">android.control.aeRegions</a> (controls)</li>
30149 <li><a href="#controls_android.control.aeTargetFpsRange">android.control.aeTargetFpsRange</a> (controls)</li>
30150 <li><a href="#controls_android.control.aePrecaptureTrigger">android.control.aePrecaptureTrigger</a> (controls)</li>
30151 <li><a href="#controls_android.control.afMode">android.control.afMode</a> (controls)</li>
30152 <li><a href="#controls_android.control.afRegions">android.control.afRegions</a> (controls)</li>
30153 <li><a href="#controls_android.control.afTrigger">android.control.afTrigger</a> (controls)</li>
30154 <li><a href="#controls_android.control.awbLock">android.control.awbLock</a> (controls)</li>
30155 <li><a href="#controls_android.control.awbMode">android.control.awbMode</a> (controls)</li>
30156 <li><a href="#controls_android.control.awbRegions">android.control.awbRegions</a> (controls)</li>
30157 <li><a href="#controls_android.control.captureIntent">android.control.captureIntent</a> (controls)</li>
30158 <li><a href="#controls_android.control.effectMode">android.control.effectMode</a> (controls)</li>
30159 <li><a href="#controls_android.control.mode">android.control.mode</a> (controls)</li>
30160 <li><a href="#controls_android.control.sceneMode">android.control.sceneMode</a> (controls)</li>
30161 <li><a href="#controls_android.control.videoStabilizationMode">android.control.videoStabilizationMode</a> (controls)</li>
30162 <li><a href="#static_android.control.aeAvailableAntibandingModes">android.control.aeAvailableAntibandingModes</a> (static)</li>
30163 <li><a href="#static_android.control.aeAvailableModes">android.control.aeAvailableModes</a> (static)</li>
30164 <li><a href="#static_android.control.aeAvailableTargetFpsRanges">android.control.aeAvailableTargetFpsRanges</a> (static)</li>
30165 <li><a href="#static_android.control.aeCompensationRange">android.control.aeCompensationRange</a> (static)</li>
30166 <li><a href="#static_android.control.aeCompensationStep">android.control.aeCompensationStep</a> (static)</li>
30167 <li><a href="#static_android.control.afAvailableModes">android.control.afAvailableModes</a> (static)</li>
30168 <li><a href="#static_android.control.availableEffects">android.control.availableEffects</a> (static)</li>
30169 <li><a href="#static_android.control.availableSceneModes">android.control.availableSceneModes</a> (static)</li>
30170 <li><a href="#static_android.control.availableVideoStabilizationModes">android.control.availableVideoStabilizationModes</a> (static)</li>
30171 <li><a href="#static_android.control.awbAvailableModes">android.control.awbAvailableModes</a> (static)</li>
30172 <li><a href="#static_android.control.maxRegions">android.control.maxRegions</a> (static)</li>
30173 <li><a href="#static_android.control.sceneModeOverrides">android.control.sceneModeOverrides</a> (static)</li>
30174 <li><a href="#static_android.control.aeLockAvailable">android.control.aeLockAvailable</a> (static)</li>
30175 <li><a href="#static_android.control.awbLockAvailable">android.control.awbLockAvailable</a> (static)</li>
30176 <li><a href="#controls_android.flash.mode">android.flash.mode</a> (controls)</li>
30177 <li><a href="#static_android.flash.info.available">android.flash.info.available</a> (static)</li>
30178 <li><a href="#controls_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a> (controls)</li>
30179 <li><a href="#controls_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a> (controls)</li>
30180 <li><a href="#controls_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a> (controls)</li>
30181 <li><a href="#controls_android.jpeg.orientation">android.jpeg.orientation</a> (controls)</li>
30182 <li><a href="#controls_android.jpeg.quality">android.jpeg.quality</a> (controls)</li>
30183 <li><a href="#controls_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a> (controls)</li>
30184 <li><a href="#controls_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a> (controls)</li>
30185 <li><a href="#static_android.jpeg.availableThumbnailSizes">android.jpeg.availableThumbnailSizes</a> (static)</li>
30186 <li><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a> (controls)</li>
30187 <li><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a> (static)</li>
30188 <li><a href="#dynamic_android.lens.focusRange">android.lens.focusRange</a> (dynamic)</li>
30189 <li><a href="#static_android.request.maxNumOutputStreams">android.request.maxNumOutputStreams</a> (static)</li>
30190 <li><a href="#controls_android.scaler.cropRegion">android.scaler.cropRegion</a> (controls)</li>
30191 <li><a href="#static_android.scaler.availableFormats">android.scaler.availableFormats</a> (static)</li>
30192 <li><a href="#static_android.scaler.availableJpegMinDurations">android.scaler.availableJpegMinDurations</a> (static)</li>
30193 <li><a href="#static_android.scaler.availableJpegSizes">android.scaler.availableJpegSizes</a> (static)</li>
30194 <li><a href="#static_android.scaler.availableMaxDigitalZoom">android.scaler.availableMaxDigitalZoom</a> (static)</li>
30195 <li><a href="#static_android.scaler.availableProcessedMinDurations">android.scaler.availableProcessedMinDurations</a> (static)</li>
30196 <li><a href="#static_android.scaler.availableProcessedSizes">android.scaler.availableProcessedSizes</a> (static)</li>
30197 <li><a href="#static_android.scaler.availableRawMinDurations">android.scaler.availableRawMinDurations</a> (static)</li>
30198 <li><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a> (static)</li>
30199 <li><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a> (static)</li>
30200 <li><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a> (static)</li>
30201 <li><a href="#static_android.sensor.orientation">android.sensor.orientation</a> (static)</li>
30202 <li><a href="#dynamic_android.sensor.timestamp">android.sensor.timestamp</a> (dynamic)</li>
30203 <li><a href="#controls_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a> (controls)</li>
30204 <li><a href="#static_android.statistics.info.maxFaceCount">android.statistics.info.maxFaceCount</a> (static)</li>
30205 <li><a href="#dynamic_android.statistics.faceIds">android.statistics.faceIds</a> (dynamic)</li>
30206 <li><a href="#dynamic_android.statistics.faceLandmarks">android.statistics.faceLandmarks</a> (dynamic)</li>
30207 <li><a href="#dynamic_android.statistics.faceRectangles">android.statistics.faceRectangles</a> (dynamic)</li>
30208 <li><a href="#dynamic_android.statistics.faceScores">android.statistics.faceScores</a> (dynamic)</li>
30209 <li><a href="#dynamic_android.lens.focalLength">android.lens.focalLength</a> (dynamic)</li>
30210 <li><a href="#dynamic_android.lens.focusDistance">android.lens.focusDistance</a> (dynamic)</li>
30212 </li> <!-- tag_BC -->
30213 <li id="tag_V1">V1 -
30214 New features for first camera 2 release (API1)
30216 <ul class="tags_entries">
30217 <li><a href="#static_android.colorCorrection.availableAberrationModes">android.colorCorrection.availableAberrationModes</a> (static)</li>
30218 <li><a href="#static_android.control.availableHighSpeedVideoConfigurations">android.control.availableHighSpeedVideoConfigurations</a> (static)</li>
30219 <li><a href="#controls_android.edge.mode">android.edge.mode</a> (controls)</li>
30220 <li><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a> (static)</li>
30221 <li><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a> (controls)</li>
30222 <li><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a> (static)</li>
30223 <li><a href="#controls_android.lens.aperture">android.lens.aperture</a> (controls)</li>
30224 <li><a href="#controls_android.lens.filterDensity">android.lens.filterDensity</a> (controls)</li>
30225 <li><a href="#controls_android.lens.focalLength">android.lens.focalLength</a> (controls)</li>
30226 <li><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a> (controls)</li>
30227 <li><a href="#controls_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a> (controls)</li>
30228 <li><a href="#static_android.lens.info.availableApertures">android.lens.info.availableApertures</a> (static)</li>
30229 <li><a href="#static_android.lens.info.availableFilterDensities">android.lens.info.availableFilterDensities</a> (static)</li>
30230 <li><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a> (static)</li>
30231 <li><a href="#static_android.lens.info.availableOpticalStabilization">android.lens.info.availableOpticalStabilization</a> (static)</li>
30232 <li><a href="#static_android.lens.info.minimumFocusDistance">android.lens.info.minimumFocusDistance</a> (static)</li>
30233 <li><a href="#static_android.lens.info.shadingMapSize">android.lens.info.shadingMapSize</a> (static)</li>
30234 <li><a href="#static_android.lens.info.focusDistanceCalibration">android.lens.info.focusDistanceCalibration</a> (static)</li>
30235 <li><a href="#dynamic_android.lens.state">android.lens.state</a> (dynamic)</li>
30236 <li><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a> (controls)</li>
30237 <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a> (static)</li>
30238 <li><a href="#controls_android.request.id">android.request.id</a> (controls)</li>
30239 <li><a href="#static_android.scaler.availableMinFrameDurations">android.scaler.availableMinFrameDurations</a> (static)</li>
30240 <li><a href="#static_android.scaler.availableStallDurations">android.scaler.availableStallDurations</a> (static)</li>
30241 <li><a href="#controls_android.sensor.exposureTime">android.sensor.exposureTime</a> (controls)</li>
30242 <li><a href="#controls_android.sensor.frameDuration">android.sensor.frameDuration</a> (controls)</li>
30243 <li><a href="#controls_android.sensor.sensitivity">android.sensor.sensitivity</a> (controls)</li>
30244 <li><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a> (static)</li>
30245 <li><a href="#static_android.sensor.info.exposureTimeRange">android.sensor.info.exposureTimeRange</a> (static)</li>
30246 <li><a href="#static_android.sensor.info.maxFrameDuration">android.sensor.info.maxFrameDuration</a> (static)</li>
30247 <li><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a> (static)</li>
30248 <li><a href="#static_android.sensor.info.timestampSource">android.sensor.info.timestampSource</a> (static)</li>
30249 <li><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a> (static)</li>
30250 <li><a href="#dynamic_android.sensor.rollingShutterSkew">android.sensor.rollingShutterSkew</a> (dynamic)</li>
30251 <li><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a> (controls)</li>
30252 <li><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a> (static)</li>
30253 <li><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a> (dynamic)</li>
30254 <li><a href="#dynamic_android.sync.frameNumber">android.sync.frameNumber</a> (dynamic)</li>
30255 <li><a href="#static_android.sync.maxLatency">android.sync.maxLatency</a> (static)</li>
30256 <li><a href="#static_android.distortionCorrection.availableModes">android.distortionCorrection.availableModes</a> (static)</li>
30257 <li><a href="#dynamic_android.edge.mode">android.edge.mode</a> (dynamic)</li>
30258 <li><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a> (dynamic)</li>
30259 <li><a href="#dynamic_android.lens.aperture">android.lens.aperture</a> (dynamic)</li>
30260 <li><a href="#dynamic_android.lens.filterDensity">android.lens.filterDensity</a> (dynamic)</li>
30261 <li><a href="#dynamic_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a> (dynamic)</li>
30262 <li><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a> (dynamic)</li>
30264 </li> <!-- tag_V1 -->
30265 <li id="tag_RAW">RAW -
30266 Needed for useful RAW image processing and DNG file support
30268 <ul class="tags_entries">
30269 <li><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a> (controls)</li>
30270 <li><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a> (static)</li>
30271 <li><a href="#static_android.sensor.info.activeArraySize">android.sensor.info.activeArraySize</a> (static)</li>
30272 <li><a href="#static_android.sensor.info.colorFilterArrangement">android.sensor.info.colorFilterArrangement</a> (static)</li>
30273 <li><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a> (static)</li>
30274 <li><a href="#static_android.sensor.info.whiteLevel">android.sensor.info.whiteLevel</a> (static)</li>
30275 <li><a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.sensor.info.preCorrectionActiveArraySize</a> (static)</li>
30276 <li><a href="#static_android.sensor.referenceIlluminant1">android.sensor.referenceIlluminant1</a> (static)</li>
30277 <li><a href="#static_android.sensor.referenceIlluminant2">android.sensor.referenceIlluminant2</a> (static)</li>
30278 <li><a href="#static_android.sensor.calibrationTransform1">android.sensor.calibrationTransform1</a> (static)</li>
30279 <li><a href="#static_android.sensor.calibrationTransform2">android.sensor.calibrationTransform2</a> (static)</li>
30280 <li><a href="#static_android.sensor.colorTransform1">android.sensor.colorTransform1</a> (static)</li>
30281 <li><a href="#static_android.sensor.colorTransform2">android.sensor.colorTransform2</a> (static)</li>
30282 <li><a href="#static_android.sensor.forwardMatrix1">android.sensor.forwardMatrix1</a> (static)</li>
30283 <li><a href="#static_android.sensor.forwardMatrix2">android.sensor.forwardMatrix2</a> (static)</li>
30284 <li><a href="#static_android.sensor.blackLevelPattern">android.sensor.blackLevelPattern</a> (static)</li>
30285 <li><a href="#static_android.sensor.profileHueSatMapDimensions">android.sensor.profileHueSatMapDimensions</a> (static)</li>
30286 <li><a href="#dynamic_android.sensor.neutralColorPoint">android.sensor.neutralColorPoint</a> (dynamic)</li>
30287 <li><a href="#dynamic_android.sensor.noiseProfile">android.sensor.noiseProfile</a> (dynamic)</li>
30288 <li><a href="#dynamic_android.sensor.profileHueSatMap">android.sensor.profileHueSatMap</a> (dynamic)</li>
30289 <li><a href="#dynamic_android.sensor.profileToneCurve">android.sensor.profileToneCurve</a> (dynamic)</li>
30290 <li><a href="#dynamic_android.sensor.greenSplit">android.sensor.greenSplit</a> (dynamic)</li>
30291 <li><a href="#dynamic_android.sensor.dynamicBlackLevel">android.sensor.dynamicBlackLevel</a> (dynamic)</li>
30292 <li><a href="#dynamic_android.sensor.dynamicWhiteLevel">android.sensor.dynamicWhiteLevel</a> (dynamic)</li>
30293 <li><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a> (controls)</li>
30294 <li><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a> (static)</li>
30295 <li><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a> (dynamic)</li>
30296 <li><a href="#controls_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a> (controls)</li>
30297 <li><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a> (dynamic)</li>
30299 </li> <!-- tag_RAW -->
30300 <li id="tag_HAL2">HAL2 -
30301 Entry is only used by camera device legacy HAL 2.x
30303 <ul class="tags_entries">
30304 <li><a href="#controls_android.request.inputStreams">android.request.inputStreams</a> (controls)</li>
30305 <li><a href="#controls_android.request.outputStreams">android.request.outputStreams</a> (controls)</li>
30306 <li><a href="#controls_android.request.type">android.request.type</a> (controls)</li>
30307 <li><a href="#static_android.request.maxNumReprocessStreams">android.request.maxNumReprocessStreams</a> (static)</li>
30308 <li><a href="#controls_android.blackLevel.lock">android.blackLevel.lock</a> (controls)</li>
30310 </li> <!-- tag_HAL2 -->
30311 <li id="tag_FULL">FULL -
30312 Entry is required for full hardware level devices, and optional for other hardware levels
30314 <ul class="tags_entries">
30315 <li><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a> (static)</li>
30317 </li> <!-- tag_FULL -->
30318 <li id="tag_DEPTH">DEPTH -
30319 Entry is required for the depth capability.
30321 <ul class="tags_entries">
30322 <li><a href="#static_android.lens.poseRotation">android.lens.poseRotation</a> (static)</li>
30323 <li><a href="#static_android.lens.poseTranslation">android.lens.poseTranslation</a> (static)</li>
30324 <li><a href="#static_android.lens.intrinsicCalibration">android.lens.intrinsicCalibration</a> (static)</li>
30325 <li><a href="#static_android.lens.radialDistortion">android.lens.radialDistortion</a> (static)</li>
30326 <li><a href="#static_android.lens.distortion">android.lens.distortion</a> (static)</li>
30327 <li><a href="#static_android.depth.maxDepthSamples">android.depth.maxDepthSamples</a> (static)</li>
30328 <li><a href="#static_android.depth.availableDepthStreamConfigurations">android.depth.availableDepthStreamConfigurations</a> (static)</li>
30329 <li><a href="#static_android.depth.availableDepthMinFrameDurations">android.depth.availableDepthMinFrameDurations</a> (static)</li>
30330 <li><a href="#static_android.depth.availableDepthStallDurations">android.depth.availableDepthStallDurations</a> (static)</li>
30332 </li> <!-- tag_DEPTH -->
30333 <li id="tag_REPROC">REPROC -
30334 Entry is required for the YUV or PRIVATE reprocessing capability.
30336 <ul class="tags_entries">
30337 <li><a href="#controls_android.edge.mode">android.edge.mode</a> (controls)</li>
30338 <li><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a> (static)</li>
30339 <li><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a> (controls)</li>
30340 <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a> (static)</li>
30341 <li><a href="#static_android.request.maxNumInputStreams">android.request.maxNumInputStreams</a> (static)</li>
30342 <li><a href="#static_android.scaler.availableInputOutputFormatsMap">android.scaler.availableInputOutputFormatsMap</a> (static)</li>
30343 <li><a href="#controls_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a> (controls)</li>
30344 <li><a href="#static_android.reprocess.maxCaptureStall">android.reprocess.maxCaptureStall</a> (static)</li>
30345 <li><a href="#static_android.distortionCorrection.availableModes">android.distortionCorrection.availableModes</a> (static)</li>
30346 <li><a href="#dynamic_android.edge.mode">android.edge.mode</a> (dynamic)</li>
30347 <li><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a> (dynamic)</li>
30349 </li> <!-- tag_REPROC -->
30350 <li id="tag_LOGICALCAMERA">LOGICALCAMERA -
30351 Entry is required for logical multi-camera capability.
30353 <ul class="tags_entries">
30354 <li><a href="#static_android.logicalMultiCamera.physicalIds">android.logicalMultiCamera.physicalIds</a> (static)</li>
30355 <li><a href="#static_android.logicalMultiCamera.sensorSyncType">android.logicalMultiCamera.sensorSyncType</a> (static)</li>
30357 </li> <!-- tag_LOGICALCAMERA -->
30358 <li id="tag_FUTURE">FUTURE -
30359 Entry is under-specified and is not required for now. This is for book-keeping purpose,
30360 do not implement or use it, it may be revised for future.
30362 <ul class="tags_entries">
30363 <li><a href="#controls_android.demosaic.mode">android.demosaic.mode</a> (controls)</li>
30364 <li><a href="#controls_android.edge.strength">android.edge.strength</a> (controls)</li>
30365 <li><a href="#controls_android.flash.firingPower">android.flash.firingPower</a> (controls)</li>
30366 <li><a href="#controls_android.flash.firingTime">android.flash.firingTime</a> (controls)</li>
30367 <li><a href="#static_android.flash.info.chargeDuration">android.flash.info.chargeDuration</a> (static)</li>
30368 <li><a href="#static_android.flash.colorTemperature">android.flash.colorTemperature</a> (static)</li>
30369 <li><a href="#static_android.flash.maxEnergy">android.flash.maxEnergy</a> (static)</li>
30370 <li><a href="#dynamic_android.jpeg.size">android.jpeg.size</a> (dynamic)</li>
30371 <li><a href="#controls_android.noiseReduction.strength">android.noiseReduction.strength</a> (controls)</li>
30372 <li><a href="#controls_android.request.metadataMode">android.request.metadataMode</a> (controls)</li>
30373 <li><a href="#static_android.sensor.baseGainFactor">android.sensor.baseGainFactor</a> (static)</li>
30374 <li><a href="#dynamic_android.sensor.temperature">android.sensor.temperature</a> (dynamic)</li>
30375 <li><a href="#controls_android.shading.strength">android.shading.strength</a> (controls)</li>
30376 <li><a href="#controls_android.statistics.histogramMode">android.statistics.histogramMode</a> (controls)</li>
30377 <li><a href="#controls_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a> (controls)</li>
30378 <li><a href="#static_android.statistics.info.histogramBucketCount">android.statistics.info.histogramBucketCount</a> (static)</li>
30379 <li><a href="#static_android.statistics.info.maxHistogramCount">android.statistics.info.maxHistogramCount</a> (static)</li>
30380 <li><a href="#static_android.statistics.info.maxSharpnessMapValue">android.statistics.info.maxSharpnessMapValue</a> (static)</li>
30381 <li><a href="#static_android.statistics.info.sharpnessMapSize">android.statistics.info.sharpnessMapSize</a> (static)</li>
30382 <li><a href="#dynamic_android.statistics.histogram">android.statistics.histogram</a> (dynamic)</li>
30383 <li><a href="#dynamic_android.statistics.sharpnessMap">android.statistics.sharpnessMap</a> (dynamic)</li>
30385 </li> <!-- tag_FUTURE -->
30389 [ <a href="#">top</a> ]