3 <!-- Copyright (C) 2012 The Android Open Source Project
5 Licensed under the Apache License, Version 2.0 (the "License");
6 you may not use this file except in compliance with the License.
7 You may obtain a copy of the License at
9 http://www.apache.org/licenses/LICENSE-2.0
11 Unless required by applicable law or agreed to in writing, software
12 distributed under the License is distributed on an "AS IS" BASIS,
13 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 See the License for the specific language governing permissions and
15 limitations under the License.
18 <!-- automatically generated from html.mako. do NOT edit directly -->
19 <meta charset="utf-8" />
20 <title>Android Camera HAL3.4 Properties</title>
21 <style type="text/css">
22 body { background-color: #f7f7f7; font-family: Roboto, sans-serif;}
23 h1 { color: #333333; }
24 h2 { color: #333333; }
25 a:link { color: #258aaf; text-decoration: none}
26 a:hover { color: #459aaf; text-decoration: underline }
27 a:visited { color: #154a5f; text-decoration: none}
28 .section { color: #eeeeee; font-size: 1.5em; font-weight: bold; background-color: #888888; padding: 0.5em 0em 0.5em 0.5em; border-width: thick thin thin thin; border-color: #111111 #777777 #777777 #777777}
29 .kind { color: #eeeeee; font-size: 1.2em; font-weight: bold; padding-left: 1.5em; background-color: #aaaaaa }
30 .entry { background-color: #f0f0f0 }
31 .entry_cont { background-color: #f0f0f0 }
32 .entries_header { background-color: #dddddd; text-align: center}
35 .toc_section_header { font-size:1.3em; }
36 .toc_kind_header { font-size:1.2em; }
37 .toc_deprecated { text-decoration:line-through; }
39 /* table column sizes */
40 table { border-collapse:collapse; table-layout: fixed; width: 100%; word-wrap: break-word }
41 td,th { border: 1px solid; border-color: #aaaaaa; padding-left: 0.5em; padding-right: 0.5em }
42 .th_name { width: 20% }
43 .th_units { width: 10% }
44 .th_tags { width: 5% }
45 .th_details { width: 25% }
46 .th_type { width: 17% }
47 .th_description { width: 20% }
48 .th_range { width: 8% }
49 .th_hal_version { width: 5% }
50 td { font-size: 0.9em; }
52 /* hide the first thead, we need it there only to enforce column sizes */
53 .thead_dummy { visibility: hidden; }
56 .entry_name { color: #333333; padding-left:1.0em; font-size:1.1em; font-family: monospace; vertical-align:top; }
57 .entry_name_deprecated { text-decoration:line-through; }
59 /* Entry type flair */
60 .entry_type_name { font-size:1.1em; color: #669900; font-weight: bold;}
61 .entry_type_name_enum:after { color: #669900; font-weight: bold; content:" (enum)" }
62 .entry_type_visibility { font-weight: bolder; padding-left:1em}
63 .entry_type_synthetic { font-weight: bolder; color: #996600; }
64 .entry_type_hwlevel { font-weight: bolder; color: #000066; }
65 .entry_type_deprecated { font-weight: bolder; color: #4D4D4D; }
66 .entry_type_enum_name { font-family: monospace; font-weight: bolder; }
67 .entry_type_enum_notes:before { content:" - " }
68 .entry_type_enum_notes>p:first-child { display:inline; }
69 .entry_type_enum_value:before { content:" = " }
70 .entry_type_enum_value { font-family: monospace; }
71 .entry ul { margin: 0 0 0 0; list-style-position: inside; padding-left: 0.5em; }
72 .entry ul li { padding: 0 0 0 0; margin: 0 0 0 0;}
73 .entry_range_deprecated { font-weight: bolder; }
75 /* Entry tags flair */
76 .entry_tags ul { list-style-type: none; }
78 /* Entry details (full docs) flair */
79 .entry_details_header { font-weight: bold; background-color: #dddddd;
80 text-align: center; font-size: 1.1em; margin-left: 0em; margin-right: 0em; }
82 /* Entry spacer flair */
83 .entry_spacer { background-color: transparent; border-style: none; height: 0.5em; }
85 /* TODO: generate abbr element for each tag link? */
86 /* TODO for each x.y.z try to link it to the entry */
94 supposedly there is a bug in chrome that it lays out tables before
95 it knows its being printed, so the page-break-* styles are ignored
97 tr { page-break-after: always; page-break-inside: avoid; }
106 <h1>Android Camera HAL3.2 Properties</h1>
109 <h2>Table of Contents</h2>
111 <li><a href="#tag_index" class="toc_section_header">Tags</a></li>
113 <span class="toc_section_header"><a href="#section_colorCorrection">colorCorrection</a></span>
114 <ul class="toc_section">
116 <span class="toc_kind_header">controls</span>
117 <ul class="toc_section">
119 ><a href="#controls_android.colorCorrection.mode">android.colorCorrection.mode</a></li>
121 ><a href="#controls_android.colorCorrection.transform">android.colorCorrection.transform</a></li>
123 ><a href="#controls_android.colorCorrection.gains">android.colorCorrection.gains</a></li>
125 ><a href="#controls_android.colorCorrection.aberrationMode">android.colorCorrection.aberrationMode</a></li>
129 <span class="toc_kind_header">dynamic</span>
130 <ul class="toc_section">
132 ><a href="#dynamic_android.colorCorrection.mode">android.colorCorrection.mode</a></li>
134 ><a href="#dynamic_android.colorCorrection.transform">android.colorCorrection.transform</a></li>
136 ><a href="#dynamic_android.colorCorrection.gains">android.colorCorrection.gains</a></li>
138 ><a href="#dynamic_android.colorCorrection.aberrationMode">android.colorCorrection.aberrationMode</a></li>
142 <span class="toc_kind_header">static</span>
143 <ul class="toc_section">
145 ><a href="#static_android.colorCorrection.availableAberrationModes">android.colorCorrection.availableAberrationModes</a></li>
148 </ul> <!-- toc_section -->
151 <span class="toc_section_header"><a href="#section_control">control</a></span>
152 <ul class="toc_section">
154 <span class="toc_kind_header">controls</span>
155 <ul class="toc_section">
157 ><a href="#controls_android.control.aeAntibandingMode">android.control.aeAntibandingMode</a></li>
159 ><a href="#controls_android.control.aeExposureCompensation">android.control.aeExposureCompensation</a></li>
161 ><a href="#controls_android.control.aeLock">android.control.aeLock</a></li>
163 ><a href="#controls_android.control.aeMode">android.control.aeMode</a></li>
165 ><a href="#controls_android.control.aeRegions">android.control.aeRegions</a></li>
167 ><a href="#controls_android.control.aeTargetFpsRange">android.control.aeTargetFpsRange</a></li>
169 ><a href="#controls_android.control.aePrecaptureTrigger">android.control.aePrecaptureTrigger</a></li>
171 ><a href="#controls_android.control.afMode">android.control.afMode</a></li>
173 ><a href="#controls_android.control.afRegions">android.control.afRegions</a></li>
175 ><a href="#controls_android.control.afTrigger">android.control.afTrigger</a></li>
177 ><a href="#controls_android.control.awbLock">android.control.awbLock</a></li>
179 ><a href="#controls_android.control.awbMode">android.control.awbMode</a></li>
181 ><a href="#controls_android.control.awbRegions">android.control.awbRegions</a></li>
183 ><a href="#controls_android.control.captureIntent">android.control.captureIntent</a></li>
185 ><a href="#controls_android.control.effectMode">android.control.effectMode</a></li>
187 ><a href="#controls_android.control.mode">android.control.mode</a></li>
189 ><a href="#controls_android.control.sceneMode">android.control.sceneMode</a></li>
191 ><a href="#controls_android.control.videoStabilizationMode">android.control.videoStabilizationMode</a></li>
193 ><a href="#controls_android.control.postRawSensitivityBoost">android.control.postRawSensitivityBoost</a></li>
195 ><a href="#controls_android.control.enableZsl">android.control.enableZsl</a></li>
199 <span class="toc_kind_header">static</span>
200 <ul class="toc_section">
202 ><a href="#static_android.control.aeAvailableAntibandingModes">android.control.aeAvailableAntibandingModes</a></li>
204 ><a href="#static_android.control.aeAvailableModes">android.control.aeAvailableModes</a></li>
206 ><a href="#static_android.control.aeAvailableTargetFpsRanges">android.control.aeAvailableTargetFpsRanges</a></li>
208 ><a href="#static_android.control.aeCompensationRange">android.control.aeCompensationRange</a></li>
210 ><a href="#static_android.control.aeCompensationStep">android.control.aeCompensationStep</a></li>
212 ><a href="#static_android.control.afAvailableModes">android.control.afAvailableModes</a></li>
214 ><a href="#static_android.control.availableEffects">android.control.availableEffects</a></li>
216 ><a href="#static_android.control.availableSceneModes">android.control.availableSceneModes</a></li>
218 ><a href="#static_android.control.availableVideoStabilizationModes">android.control.availableVideoStabilizationModes</a></li>
220 ><a href="#static_android.control.awbAvailableModes">android.control.awbAvailableModes</a></li>
222 ><a href="#static_android.control.maxRegions">android.control.maxRegions</a></li>
224 ><a href="#static_android.control.maxRegionsAe">android.control.maxRegionsAe</a></li>
226 ><a href="#static_android.control.maxRegionsAwb">android.control.maxRegionsAwb</a></li>
228 ><a href="#static_android.control.maxRegionsAf">android.control.maxRegionsAf</a></li>
230 ><a href="#static_android.control.sceneModeOverrides">android.control.sceneModeOverrides</a></li>
232 ><a href="#static_android.control.availableHighSpeedVideoConfigurations">android.control.availableHighSpeedVideoConfigurations</a></li>
234 ><a href="#static_android.control.aeLockAvailable">android.control.aeLockAvailable</a></li>
236 ><a href="#static_android.control.awbLockAvailable">android.control.awbLockAvailable</a></li>
238 ><a href="#static_android.control.availableModes">android.control.availableModes</a></li>
240 ><a href="#static_android.control.postRawSensitivityBoostRange">android.control.postRawSensitivityBoostRange</a></li>
244 <span class="toc_kind_header">dynamic</span>
245 <ul class="toc_section">
247 class="toc_deprecated"
248 ><a href="#dynamic_android.control.aePrecaptureId">android.control.aePrecaptureId</a></li>
250 ><a href="#dynamic_android.control.aeAntibandingMode">android.control.aeAntibandingMode</a></li>
252 ><a href="#dynamic_android.control.aeExposureCompensation">android.control.aeExposureCompensation</a></li>
254 ><a href="#dynamic_android.control.aeLock">android.control.aeLock</a></li>
256 ><a href="#dynamic_android.control.aeMode">android.control.aeMode</a></li>
258 ><a href="#dynamic_android.control.aeRegions">android.control.aeRegions</a></li>
260 ><a href="#dynamic_android.control.aeTargetFpsRange">android.control.aeTargetFpsRange</a></li>
262 ><a href="#dynamic_android.control.aePrecaptureTrigger">android.control.aePrecaptureTrigger</a></li>
264 ><a href="#dynamic_android.control.aeState">android.control.aeState</a></li>
266 ><a href="#dynamic_android.control.afMode">android.control.afMode</a></li>
268 ><a href="#dynamic_android.control.afRegions">android.control.afRegions</a></li>
270 ><a href="#dynamic_android.control.afTrigger">android.control.afTrigger</a></li>
272 ><a href="#dynamic_android.control.afState">android.control.afState</a></li>
274 class="toc_deprecated"
275 ><a href="#dynamic_android.control.afTriggerId">android.control.afTriggerId</a></li>
277 ><a href="#dynamic_android.control.awbLock">android.control.awbLock</a></li>
279 ><a href="#dynamic_android.control.awbMode">android.control.awbMode</a></li>
281 ><a href="#dynamic_android.control.awbRegions">android.control.awbRegions</a></li>
283 ><a href="#dynamic_android.control.captureIntent">android.control.captureIntent</a></li>
285 ><a href="#dynamic_android.control.awbState">android.control.awbState</a></li>
287 ><a href="#dynamic_android.control.effectMode">android.control.effectMode</a></li>
289 ><a href="#dynamic_android.control.mode">android.control.mode</a></li>
291 ><a href="#dynamic_android.control.sceneMode">android.control.sceneMode</a></li>
293 ><a href="#dynamic_android.control.videoStabilizationMode">android.control.videoStabilizationMode</a></li>
295 ><a href="#dynamic_android.control.postRawSensitivityBoost">android.control.postRawSensitivityBoost</a></li>
297 ><a href="#dynamic_android.control.enableZsl">android.control.enableZsl</a></li>
299 ><a href="#dynamic_android.control.afSceneChange">android.control.afSceneChange</a></li>
302 </ul> <!-- toc_section -->
305 <span class="toc_section_header"><a href="#section_demosaic">demosaic</a></span>
306 <ul class="toc_section">
308 <span class="toc_kind_header">controls</span>
309 <ul class="toc_section">
311 ><a href="#controls_android.demosaic.mode">android.demosaic.mode</a></li>
314 </ul> <!-- toc_section -->
317 <span class="toc_section_header"><a href="#section_edge">edge</a></span>
318 <ul class="toc_section">
320 <span class="toc_kind_header">controls</span>
321 <ul class="toc_section">
323 ><a href="#controls_android.edge.mode">android.edge.mode</a></li>
325 ><a href="#controls_android.edge.strength">android.edge.strength</a></li>
329 <span class="toc_kind_header">static</span>
330 <ul class="toc_section">
332 ><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a></li>
336 <span class="toc_kind_header">dynamic</span>
337 <ul class="toc_section">
339 ><a href="#dynamic_android.edge.mode">android.edge.mode</a></li>
342 </ul> <!-- toc_section -->
345 <span class="toc_section_header"><a href="#section_flash">flash</a></span>
346 <ul class="toc_section">
348 <span class="toc_kind_header">controls</span>
349 <ul class="toc_section">
351 ><a href="#controls_android.flash.firingPower">android.flash.firingPower</a></li>
353 ><a href="#controls_android.flash.firingTime">android.flash.firingTime</a></li>
355 ><a href="#controls_android.flash.mode">android.flash.mode</a></li>
359 <span class="toc_kind_header">static</span>
360 <ul class="toc_section">
363 ><a href="#static_android.flash.info.available">android.flash.info.available</a></li>
365 ><a href="#static_android.flash.info.chargeDuration">android.flash.info.chargeDuration</a></li>
368 ><a href="#static_android.flash.colorTemperature">android.flash.colorTemperature</a></li>
370 ><a href="#static_android.flash.maxEnergy">android.flash.maxEnergy</a></li>
374 <span class="toc_kind_header">dynamic</span>
375 <ul class="toc_section">
377 ><a href="#dynamic_android.flash.firingPower">android.flash.firingPower</a></li>
379 ><a href="#dynamic_android.flash.firingTime">android.flash.firingTime</a></li>
381 ><a href="#dynamic_android.flash.mode">android.flash.mode</a></li>
383 ><a href="#dynamic_android.flash.state">android.flash.state</a></li>
386 </ul> <!-- toc_section -->
389 <span class="toc_section_header"><a href="#section_hotPixel">hotPixel</a></span>
390 <ul class="toc_section">
392 <span class="toc_kind_header">controls</span>
393 <ul class="toc_section">
395 ><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a></li>
399 <span class="toc_kind_header">static</span>
400 <ul class="toc_section">
402 ><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a></li>
406 <span class="toc_kind_header">dynamic</span>
407 <ul class="toc_section">
409 ><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a></li>
412 </ul> <!-- toc_section -->
415 <span class="toc_section_header"><a href="#section_jpeg">jpeg</a></span>
416 <ul class="toc_section">
418 <span class="toc_kind_header">controls</span>
419 <ul class="toc_section">
421 ><a href="#controls_android.jpeg.gpsLocation">android.jpeg.gpsLocation</a></li>
423 ><a href="#controls_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a></li>
425 ><a href="#controls_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a></li>
427 ><a href="#controls_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a></li>
429 ><a href="#controls_android.jpeg.orientation">android.jpeg.orientation</a></li>
431 ><a href="#controls_android.jpeg.quality">android.jpeg.quality</a></li>
433 ><a href="#controls_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a></li>
435 ><a href="#controls_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a></li>
439 <span class="toc_kind_header">static</span>
440 <ul class="toc_section">
442 ><a href="#static_android.jpeg.availableThumbnailSizes">android.jpeg.availableThumbnailSizes</a></li>
444 ><a href="#static_android.jpeg.maxSize">android.jpeg.maxSize</a></li>
448 <span class="toc_kind_header">dynamic</span>
449 <ul class="toc_section">
451 ><a href="#dynamic_android.jpeg.gpsLocation">android.jpeg.gpsLocation</a></li>
453 ><a href="#dynamic_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a></li>
455 ><a href="#dynamic_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a></li>
457 ><a href="#dynamic_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a></li>
459 ><a href="#dynamic_android.jpeg.orientation">android.jpeg.orientation</a></li>
461 ><a href="#dynamic_android.jpeg.quality">android.jpeg.quality</a></li>
463 ><a href="#dynamic_android.jpeg.size">android.jpeg.size</a></li>
465 ><a href="#dynamic_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a></li>
467 ><a href="#dynamic_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a></li>
470 </ul> <!-- toc_section -->
473 <span class="toc_section_header"><a href="#section_lens">lens</a></span>
474 <ul class="toc_section">
476 <span class="toc_kind_header">controls</span>
477 <ul class="toc_section">
479 ><a href="#controls_android.lens.aperture">android.lens.aperture</a></li>
481 ><a href="#controls_android.lens.filterDensity">android.lens.filterDensity</a></li>
483 ><a href="#controls_android.lens.focalLength">android.lens.focalLength</a></li>
485 ><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a></li>
487 ><a href="#controls_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a></li>
491 <span class="toc_kind_header">static</span>
492 <ul class="toc_section">
495 ><a href="#static_android.lens.info.availableApertures">android.lens.info.availableApertures</a></li>
497 ><a href="#static_android.lens.info.availableFilterDensities">android.lens.info.availableFilterDensities</a></li>
499 ><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a></li>
501 ><a href="#static_android.lens.info.availableOpticalStabilization">android.lens.info.availableOpticalStabilization</a></li>
503 ><a href="#static_android.lens.info.hyperfocalDistance">android.lens.info.hyperfocalDistance</a></li>
505 ><a href="#static_android.lens.info.minimumFocusDistance">android.lens.info.minimumFocusDistance</a></li>
507 ><a href="#static_android.lens.info.shadingMapSize">android.lens.info.shadingMapSize</a></li>
509 ><a href="#static_android.lens.info.focusDistanceCalibration">android.lens.info.focusDistanceCalibration</a></li>
512 ><a href="#static_android.lens.facing">android.lens.facing</a></li>
514 ><a href="#static_android.lens.poseRotation">android.lens.poseRotation</a></li>
516 ><a href="#static_android.lens.poseTranslation">android.lens.poseTranslation</a></li>
518 ><a href="#static_android.lens.intrinsicCalibration">android.lens.intrinsicCalibration</a></li>
520 ><a href="#static_android.lens.radialDistortion">android.lens.radialDistortion</a></li>
524 <span class="toc_kind_header">dynamic</span>
525 <ul class="toc_section">
527 ><a href="#dynamic_android.lens.aperture">android.lens.aperture</a></li>
529 ><a href="#dynamic_android.lens.filterDensity">android.lens.filterDensity</a></li>
531 ><a href="#dynamic_android.lens.focalLength">android.lens.focalLength</a></li>
533 ><a href="#dynamic_android.lens.focusDistance">android.lens.focusDistance</a></li>
535 ><a href="#dynamic_android.lens.focusRange">android.lens.focusRange</a></li>
537 ><a href="#dynamic_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a></li>
539 ><a href="#dynamic_android.lens.state">android.lens.state</a></li>
541 ><a href="#dynamic_android.lens.poseRotation">android.lens.poseRotation</a></li>
543 ><a href="#dynamic_android.lens.poseTranslation">android.lens.poseTranslation</a></li>
545 ><a href="#dynamic_android.lens.intrinsicCalibration">android.lens.intrinsicCalibration</a></li>
547 ><a href="#dynamic_android.lens.radialDistortion">android.lens.radialDistortion</a></li>
550 </ul> <!-- toc_section -->
553 <span class="toc_section_header"><a href="#section_noiseReduction">noiseReduction</a></span>
554 <ul class="toc_section">
556 <span class="toc_kind_header">controls</span>
557 <ul class="toc_section">
559 ><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a></li>
561 ><a href="#controls_android.noiseReduction.strength">android.noiseReduction.strength</a></li>
565 <span class="toc_kind_header">static</span>
566 <ul class="toc_section">
568 ><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a></li>
572 <span class="toc_kind_header">dynamic</span>
573 <ul class="toc_section">
575 ><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a></li>
578 </ul> <!-- toc_section -->
581 <span class="toc_section_header"><a href="#section_quirks">quirks</a></span>
582 <ul class="toc_section">
584 <span class="toc_kind_header">static</span>
585 <ul class="toc_section">
587 class="toc_deprecated"
588 ><a href="#static_android.quirks.meteringCropRegion">android.quirks.meteringCropRegion</a></li>
590 class="toc_deprecated"
591 ><a href="#static_android.quirks.triggerAfWithAuto">android.quirks.triggerAfWithAuto</a></li>
593 class="toc_deprecated"
594 ><a href="#static_android.quirks.useZslFormat">android.quirks.useZslFormat</a></li>
596 class="toc_deprecated"
597 ><a href="#static_android.quirks.usePartialResult">android.quirks.usePartialResult</a></li>
601 <span class="toc_kind_header">dynamic</span>
602 <ul class="toc_section">
604 class="toc_deprecated"
605 ><a href="#dynamic_android.quirks.partialResult">android.quirks.partialResult</a></li>
608 </ul> <!-- toc_section -->
611 <span class="toc_section_header"><a href="#section_request">request</a></span>
612 <ul class="toc_section">
614 <span class="toc_kind_header">controls</span>
615 <ul class="toc_section">
617 class="toc_deprecated"
618 ><a href="#controls_android.request.frameCount">android.request.frameCount</a></li>
620 ><a href="#controls_android.request.id">android.request.id</a></li>
622 class="toc_deprecated"
623 ><a href="#controls_android.request.inputStreams">android.request.inputStreams</a></li>
625 ><a href="#controls_android.request.metadataMode">android.request.metadataMode</a></li>
627 class="toc_deprecated"
628 ><a href="#controls_android.request.outputStreams">android.request.outputStreams</a></li>
630 class="toc_deprecated"
631 ><a href="#controls_android.request.type">android.request.type</a></li>
635 <span class="toc_kind_header">static</span>
636 <ul class="toc_section">
638 ><a href="#static_android.request.maxNumOutputStreams">android.request.maxNumOutputStreams</a></li>
640 ><a href="#static_android.request.maxNumOutputRaw">android.request.maxNumOutputRaw</a></li>
642 ><a href="#static_android.request.maxNumOutputProc">android.request.maxNumOutputProc</a></li>
644 ><a href="#static_android.request.maxNumOutputProcStalling">android.request.maxNumOutputProcStalling</a></li>
646 class="toc_deprecated"
647 ><a href="#static_android.request.maxNumReprocessStreams">android.request.maxNumReprocessStreams</a></li>
649 ><a href="#static_android.request.maxNumInputStreams">android.request.maxNumInputStreams</a></li>
651 ><a href="#static_android.request.pipelineMaxDepth">android.request.pipelineMaxDepth</a></li>
653 ><a href="#static_android.request.partialResultCount">android.request.partialResultCount</a></li>
655 ><a href="#static_android.request.availableCapabilities">android.request.availableCapabilities</a></li>
657 ><a href="#static_android.request.availableRequestKeys">android.request.availableRequestKeys</a></li>
659 ><a href="#static_android.request.availableResultKeys">android.request.availableResultKeys</a></li>
661 ><a href="#static_android.request.availableCharacteristicsKeys">android.request.availableCharacteristicsKeys</a></li>
665 <span class="toc_kind_header">dynamic</span>
666 <ul class="toc_section">
668 class="toc_deprecated"
669 ><a href="#dynamic_android.request.frameCount">android.request.frameCount</a></li>
671 ><a href="#dynamic_android.request.id">android.request.id</a></li>
673 ><a href="#dynamic_android.request.metadataMode">android.request.metadataMode</a></li>
675 class="toc_deprecated"
676 ><a href="#dynamic_android.request.outputStreams">android.request.outputStreams</a></li>
678 ><a href="#dynamic_android.request.pipelineDepth">android.request.pipelineDepth</a></li>
681 </ul> <!-- toc_section -->
684 <span class="toc_section_header"><a href="#section_scaler">scaler</a></span>
685 <ul class="toc_section">
687 <span class="toc_kind_header">controls</span>
688 <ul class="toc_section">
690 ><a href="#controls_android.scaler.cropRegion">android.scaler.cropRegion</a></li>
694 <span class="toc_kind_header">static</span>
695 <ul class="toc_section">
697 class="toc_deprecated"
698 ><a href="#static_android.scaler.availableFormats">android.scaler.availableFormats</a></li>
700 class="toc_deprecated"
701 ><a href="#static_android.scaler.availableJpegMinDurations">android.scaler.availableJpegMinDurations</a></li>
703 class="toc_deprecated"
704 ><a href="#static_android.scaler.availableJpegSizes">android.scaler.availableJpegSizes</a></li>
706 ><a href="#static_android.scaler.availableMaxDigitalZoom">android.scaler.availableMaxDigitalZoom</a></li>
708 class="toc_deprecated"
709 ><a href="#static_android.scaler.availableProcessedMinDurations">android.scaler.availableProcessedMinDurations</a></li>
711 class="toc_deprecated"
712 ><a href="#static_android.scaler.availableProcessedSizes">android.scaler.availableProcessedSizes</a></li>
714 class="toc_deprecated"
715 ><a href="#static_android.scaler.availableRawMinDurations">android.scaler.availableRawMinDurations</a></li>
717 class="toc_deprecated"
718 ><a href="#static_android.scaler.availableRawSizes">android.scaler.availableRawSizes</a></li>
720 ><a href="#static_android.scaler.availableInputOutputFormatsMap">android.scaler.availableInputOutputFormatsMap</a></li>
722 ><a href="#static_android.scaler.availableStreamConfigurations">android.scaler.availableStreamConfigurations</a></li>
724 ><a href="#static_android.scaler.availableMinFrameDurations">android.scaler.availableMinFrameDurations</a></li>
726 ><a href="#static_android.scaler.availableStallDurations">android.scaler.availableStallDurations</a></li>
728 ><a href="#static_android.scaler.streamConfigurationMap">android.scaler.streamConfigurationMap</a></li>
730 ><a href="#static_android.scaler.croppingType">android.scaler.croppingType</a></li>
734 <span class="toc_kind_header">dynamic</span>
735 <ul class="toc_section">
737 ><a href="#dynamic_android.scaler.cropRegion">android.scaler.cropRegion</a></li>
740 </ul> <!-- toc_section -->
743 <span class="toc_section_header"><a href="#section_sensor">sensor</a></span>
744 <ul class="toc_section">
746 <span class="toc_kind_header">controls</span>
747 <ul class="toc_section">
749 ><a href="#controls_android.sensor.exposureTime">android.sensor.exposureTime</a></li>
751 ><a href="#controls_android.sensor.frameDuration">android.sensor.frameDuration</a></li>
753 ><a href="#controls_android.sensor.sensitivity">android.sensor.sensitivity</a></li>
755 ><a href="#controls_android.sensor.testPatternData">android.sensor.testPatternData</a></li>
757 ><a href="#controls_android.sensor.testPatternMode">android.sensor.testPatternMode</a></li>
761 <span class="toc_kind_header">static</span>
762 <ul class="toc_section">
765 ><a href="#static_android.sensor.info.activeArraySize">android.sensor.info.activeArraySize</a></li>
767 ><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a></li>
769 ><a href="#static_android.sensor.info.colorFilterArrangement">android.sensor.info.colorFilterArrangement</a></li>
771 ><a href="#static_android.sensor.info.exposureTimeRange">android.sensor.info.exposureTimeRange</a></li>
773 ><a href="#static_android.sensor.info.maxFrameDuration">android.sensor.info.maxFrameDuration</a></li>
775 ><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a></li>
777 ><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a></li>
779 ><a href="#static_android.sensor.info.whiteLevel">android.sensor.info.whiteLevel</a></li>
781 ><a href="#static_android.sensor.info.timestampSource">android.sensor.info.timestampSource</a></li>
783 ><a href="#static_android.sensor.info.lensShadingApplied">android.sensor.info.lensShadingApplied</a></li>
785 ><a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.sensor.info.preCorrectionActiveArraySize</a></li>
788 ><a href="#static_android.sensor.referenceIlluminant1">android.sensor.referenceIlluminant1</a></li>
790 ><a href="#static_android.sensor.referenceIlluminant2">android.sensor.referenceIlluminant2</a></li>
792 ><a href="#static_android.sensor.calibrationTransform1">android.sensor.calibrationTransform1</a></li>
794 ><a href="#static_android.sensor.calibrationTransform2">android.sensor.calibrationTransform2</a></li>
796 ><a href="#static_android.sensor.colorTransform1">android.sensor.colorTransform1</a></li>
798 ><a href="#static_android.sensor.colorTransform2">android.sensor.colorTransform2</a></li>
800 ><a href="#static_android.sensor.forwardMatrix1">android.sensor.forwardMatrix1</a></li>
802 ><a href="#static_android.sensor.forwardMatrix2">android.sensor.forwardMatrix2</a></li>
804 ><a href="#static_android.sensor.baseGainFactor">android.sensor.baseGainFactor</a></li>
806 ><a href="#static_android.sensor.blackLevelPattern">android.sensor.blackLevelPattern</a></li>
808 ><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a></li>
810 ><a href="#static_android.sensor.orientation">android.sensor.orientation</a></li>
812 ><a href="#static_android.sensor.profileHueSatMapDimensions">android.sensor.profileHueSatMapDimensions</a></li>
814 ><a href="#static_android.sensor.availableTestPatternModes">android.sensor.availableTestPatternModes</a></li>
816 ><a href="#static_android.sensor.opticalBlackRegions">android.sensor.opticalBlackRegions</a></li>
818 ><a href="#static_android.sensor.opaqueRawSize">android.sensor.opaqueRawSize</a></li>
822 <span class="toc_kind_header">dynamic</span>
823 <ul class="toc_section">
825 ><a href="#dynamic_android.sensor.exposureTime">android.sensor.exposureTime</a></li>
827 ><a href="#dynamic_android.sensor.frameDuration">android.sensor.frameDuration</a></li>
829 ><a href="#dynamic_android.sensor.sensitivity">android.sensor.sensitivity</a></li>
831 ><a href="#dynamic_android.sensor.timestamp">android.sensor.timestamp</a></li>
833 ><a href="#dynamic_android.sensor.temperature">android.sensor.temperature</a></li>
835 ><a href="#dynamic_android.sensor.neutralColorPoint">android.sensor.neutralColorPoint</a></li>
837 ><a href="#dynamic_android.sensor.noiseProfile">android.sensor.noiseProfile</a></li>
839 ><a href="#dynamic_android.sensor.profileHueSatMap">android.sensor.profileHueSatMap</a></li>
841 ><a href="#dynamic_android.sensor.profileToneCurve">android.sensor.profileToneCurve</a></li>
843 ><a href="#dynamic_android.sensor.greenSplit">android.sensor.greenSplit</a></li>
845 ><a href="#dynamic_android.sensor.testPatternData">android.sensor.testPatternData</a></li>
847 ><a href="#dynamic_android.sensor.testPatternMode">android.sensor.testPatternMode</a></li>
849 ><a href="#dynamic_android.sensor.rollingShutterSkew">android.sensor.rollingShutterSkew</a></li>
851 ><a href="#dynamic_android.sensor.dynamicBlackLevel">android.sensor.dynamicBlackLevel</a></li>
853 ><a href="#dynamic_android.sensor.dynamicWhiteLevel">android.sensor.dynamicWhiteLevel</a></li>
856 </ul> <!-- toc_section -->
859 <span class="toc_section_header"><a href="#section_shading">shading</a></span>
860 <ul class="toc_section">
862 <span class="toc_kind_header">controls</span>
863 <ul class="toc_section">
865 ><a href="#controls_android.shading.mode">android.shading.mode</a></li>
867 ><a href="#controls_android.shading.strength">android.shading.strength</a></li>
871 <span class="toc_kind_header">dynamic</span>
872 <ul class="toc_section">
874 ><a href="#dynamic_android.shading.mode">android.shading.mode</a></li>
878 <span class="toc_kind_header">static</span>
879 <ul class="toc_section">
881 ><a href="#static_android.shading.availableModes">android.shading.availableModes</a></li>
884 </ul> <!-- toc_section -->
887 <span class="toc_section_header"><a href="#section_statistics">statistics</a></span>
888 <ul class="toc_section">
890 <span class="toc_kind_header">controls</span>
891 <ul class="toc_section">
893 ><a href="#controls_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a></li>
895 ><a href="#controls_android.statistics.histogramMode">android.statistics.histogramMode</a></li>
897 ><a href="#controls_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a></li>
899 ><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a></li>
901 ><a href="#controls_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a></li>
905 <span class="toc_kind_header">static</span>
906 <ul class="toc_section">
909 ><a href="#static_android.statistics.info.availableFaceDetectModes">android.statistics.info.availableFaceDetectModes</a></li>
911 ><a href="#static_android.statistics.info.histogramBucketCount">android.statistics.info.histogramBucketCount</a></li>
913 ><a href="#static_android.statistics.info.maxFaceCount">android.statistics.info.maxFaceCount</a></li>
915 ><a href="#static_android.statistics.info.maxHistogramCount">android.statistics.info.maxHistogramCount</a></li>
917 ><a href="#static_android.statistics.info.maxSharpnessMapValue">android.statistics.info.maxSharpnessMapValue</a></li>
919 ><a href="#static_android.statistics.info.sharpnessMapSize">android.statistics.info.sharpnessMapSize</a></li>
921 ><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a></li>
923 ><a href="#static_android.statistics.info.availableLensShadingMapModes">android.statistics.info.availableLensShadingMapModes</a></li>
928 <span class="toc_kind_header">dynamic</span>
929 <ul class="toc_section">
931 ><a href="#dynamic_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a></li>
933 ><a href="#dynamic_android.statistics.faceIds">android.statistics.faceIds</a></li>
935 ><a href="#dynamic_android.statistics.faceLandmarks">android.statistics.faceLandmarks</a></li>
937 ><a href="#dynamic_android.statistics.faceRectangles">android.statistics.faceRectangles</a></li>
939 ><a href="#dynamic_android.statistics.faceScores">android.statistics.faceScores</a></li>
941 ><a href="#dynamic_android.statistics.faces">android.statistics.faces</a></li>
943 ><a href="#dynamic_android.statistics.histogram">android.statistics.histogram</a></li>
945 ><a href="#dynamic_android.statistics.histogramMode">android.statistics.histogramMode</a></li>
947 ><a href="#dynamic_android.statistics.sharpnessMap">android.statistics.sharpnessMap</a></li>
949 ><a href="#dynamic_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a></li>
951 ><a href="#dynamic_android.statistics.lensShadingCorrectionMap">android.statistics.lensShadingCorrectionMap</a></li>
953 ><a href="#dynamic_android.statistics.lensShadingMap">android.statistics.lensShadingMap</a></li>
955 class="toc_deprecated"
956 ><a href="#dynamic_android.statistics.predictedColorGains">android.statistics.predictedColorGains</a></li>
958 class="toc_deprecated"
959 ><a href="#dynamic_android.statistics.predictedColorTransform">android.statistics.predictedColorTransform</a></li>
961 ><a href="#dynamic_android.statistics.sceneFlicker">android.statistics.sceneFlicker</a></li>
963 ><a href="#dynamic_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a></li>
965 ><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a></li>
967 ><a href="#dynamic_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a></li>
970 </ul> <!-- toc_section -->
973 <span class="toc_section_header"><a href="#section_tonemap">tonemap</a></span>
974 <ul class="toc_section">
976 <span class="toc_kind_header">controls</span>
977 <ul class="toc_section">
979 ><a href="#controls_android.tonemap.curveBlue">android.tonemap.curveBlue</a></li>
981 ><a href="#controls_android.tonemap.curveGreen">android.tonemap.curveGreen</a></li>
983 ><a href="#controls_android.tonemap.curveRed">android.tonemap.curveRed</a></li>
985 ><a href="#controls_android.tonemap.curve">android.tonemap.curve</a></li>
987 ><a href="#controls_android.tonemap.mode">android.tonemap.mode</a></li>
989 ><a href="#controls_android.tonemap.gamma">android.tonemap.gamma</a></li>
991 ><a href="#controls_android.tonemap.presetCurve">android.tonemap.presetCurve</a></li>
995 <span class="toc_kind_header">static</span>
996 <ul class="toc_section">
998 ><a href="#static_android.tonemap.maxCurvePoints">android.tonemap.maxCurvePoints</a></li>
1000 ><a href="#static_android.tonemap.availableToneMapModes">android.tonemap.availableToneMapModes</a></li>
1004 <span class="toc_kind_header">dynamic</span>
1005 <ul class="toc_section">
1007 ><a href="#dynamic_android.tonemap.curveBlue">android.tonemap.curveBlue</a></li>
1009 ><a href="#dynamic_android.tonemap.curveGreen">android.tonemap.curveGreen</a></li>
1011 ><a href="#dynamic_android.tonemap.curveRed">android.tonemap.curveRed</a></li>
1013 ><a href="#dynamic_android.tonemap.curve">android.tonemap.curve</a></li>
1015 ><a href="#dynamic_android.tonemap.mode">android.tonemap.mode</a></li>
1017 ><a href="#dynamic_android.tonemap.gamma">android.tonemap.gamma</a></li>
1019 ><a href="#dynamic_android.tonemap.presetCurve">android.tonemap.presetCurve</a></li>
1022 </ul> <!-- toc_section -->
1025 <span class="toc_section_header"><a href="#section_led">led</a></span>
1026 <ul class="toc_section">
1028 <span class="toc_kind_header">controls</span>
1029 <ul class="toc_section">
1031 ><a href="#controls_android.led.transmit">android.led.transmit</a></li>
1035 <span class="toc_kind_header">dynamic</span>
1036 <ul class="toc_section">
1038 ><a href="#dynamic_android.led.transmit">android.led.transmit</a></li>
1042 <span class="toc_kind_header">static</span>
1043 <ul class="toc_section">
1045 ><a href="#static_android.led.availableLeds">android.led.availableLeds</a></li>
1048 </ul> <!-- toc_section -->
1051 <span class="toc_section_header"><a href="#section_info">info</a></span>
1052 <ul class="toc_section">
1054 <span class="toc_kind_header">static</span>
1055 <ul class="toc_section">
1057 ><a href="#static_android.info.supportedHardwareLevel">android.info.supportedHardwareLevel</a></li>
1060 </ul> <!-- toc_section -->
1063 <span class="toc_section_header"><a href="#section_blackLevel">blackLevel</a></span>
1064 <ul class="toc_section">
1066 <span class="toc_kind_header">controls</span>
1067 <ul class="toc_section">
1069 ><a href="#controls_android.blackLevel.lock">android.blackLevel.lock</a></li>
1073 <span class="toc_kind_header">dynamic</span>
1074 <ul class="toc_section">
1076 ><a href="#dynamic_android.blackLevel.lock">android.blackLevel.lock</a></li>
1079 </ul> <!-- toc_section -->
1082 <span class="toc_section_header"><a href="#section_sync">sync</a></span>
1083 <ul class="toc_section">
1085 <span class="toc_kind_header">dynamic</span>
1086 <ul class="toc_section">
1088 ><a href="#dynamic_android.sync.frameNumber">android.sync.frameNumber</a></li>
1092 <span class="toc_kind_header">static</span>
1093 <ul class="toc_section">
1095 ><a href="#static_android.sync.maxLatency">android.sync.maxLatency</a></li>
1098 </ul> <!-- toc_section -->
1101 <span class="toc_section_header"><a href="#section_reprocess">reprocess</a></span>
1102 <ul class="toc_section">
1104 <span class="toc_kind_header">controls</span>
1105 <ul class="toc_section">
1107 ><a href="#controls_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a></li>
1111 <span class="toc_kind_header">dynamic</span>
1112 <ul class="toc_section">
1114 ><a href="#dynamic_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a></li>
1118 <span class="toc_kind_header">static</span>
1119 <ul class="toc_section">
1121 ><a href="#static_android.reprocess.maxCaptureStall">android.reprocess.maxCaptureStall</a></li>
1124 </ul> <!-- toc_section -->
1127 <span class="toc_section_header"><a href="#section_depth">depth</a></span>
1128 <ul class="toc_section">
1130 <span class="toc_kind_header">static</span>
1131 <ul class="toc_section">
1133 ><a href="#static_android.depth.maxDepthSamples">android.depth.maxDepthSamples</a></li>
1135 ><a href="#static_android.depth.availableDepthStreamConfigurations">android.depth.availableDepthStreamConfigurations</a></li>
1137 ><a href="#static_android.depth.availableDepthMinFrameDurations">android.depth.availableDepthMinFrameDurations</a></li>
1139 ><a href="#static_android.depth.availableDepthStallDurations">android.depth.availableDepthStallDurations</a></li>
1141 ><a href="#static_android.depth.depthIsExclusive">android.depth.depthIsExclusive</a></li>
1144 </ul> <!-- toc_section -->
1150 <table class="properties">
1152 <thead class="thead_dummy">
1154 <th class="th_name">Property Name</th>
1155 <th class="th_type">Type</th>
1156 <th class="th_description">Description</th>
1157 <th class="th_units">Units</th>
1158 <th class="th_range">Range</th>
1159 <th class="th_hal_version">HIDL HAL version</th>
1160 <th class="th_tags">Tags</th>
1162 </thead> <!-- so that the first occurrence of thead is not
1163 above the first occurrence of tr -->
1164 <!-- <namespace name="android"> -->
1165 <tr><td colspan="7" id="section_colorCorrection" class="section">colorCorrection</td></tr>
1168 <tr><td colspan="7" class="kind">controls</td></tr>
1170 <thead class="entries_header">
1172 <th class="th_name">Property Name</th>
1173 <th class="th_type">Type</th>
1174 <th class="th_description">Description</th>
1175 <th class="th_units">Units</th>
1176 <th class="th_range">Range</th>
1177 <th class="th_hal_version">Initial HIDL HAL version</th>
1178 <th class="th_tags">Tags</th>
1193 <tr class="entry" id="controls_android.colorCorrection.mode">
1194 <td class="entry_name
1196 android.<wbr/>color<wbr/>Correction.<wbr/>mode
1198 <td class="entry_type">
1199 <span class="entry_type_name entry_type_name_enum">byte</span>
1201 <span class="entry_type_visibility"> [public]</span>
1204 <span class="entry_type_hwlevel">[full] </span>
1208 <ul class="entry_type_enum">
1210 <span class="entry_type_enum_name">TRANSFORM_MATRIX</span>
1211 <span class="entry_type_enum_notes"><p>Use the <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> matrix
1212 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> to do color conversion.<wbr/></p>
1213 <p>All advanced white balance adjustments (not specified
1214 by our white balance pipeline) must be disabled.<wbr/></p>
1215 <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
1216 TRANSFORM_<wbr/>MATRIX is ignored.<wbr/> The camera device will override
1217 this value to either FAST or HIGH_<wbr/>QUALITY.<wbr/></p></span>
1220 <span class="entry_type_enum_name">FAST</span>
1221 <span class="entry_type_enum_notes"><p>Color correction processing must not slow down
1222 capture rate relative to sensor raw output.<wbr/></p>
1223 <p>Advanced white balance adjustments above and beyond
1224 the specified white balance pipeline may be applied.<wbr/></p>
1225 <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
1226 the camera device uses the last frame's AWB values
1227 (or defaults if AWB has never been run).<wbr/></p></span>
1230 <span class="entry_type_enum_name">HIGH_QUALITY</span>
1231 <span class="entry_type_enum_notes"><p>Color correction processing operates at improved
1232 quality but the capture rate might be reduced (relative to sensor
1233 raw output rate)</p>
1234 <p>Advanced white balance adjustments above and beyond
1235 the specified white balance pipeline may be applied.<wbr/></p>
1236 <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
1237 the camera device uses the last frame's AWB values
1238 (or defaults if AWB has never been run).<wbr/></p></span>
1242 </td> <!-- entry_type -->
1244 <td class="entry_description">
1245 <p>The mode control selects how the image data is converted from the
1246 sensor's native color into linear sRGB color.<wbr/></p>
1249 <td class="entry_units">
1252 <td class="entry_range">
1255 <td class="entry_hal_version">
1259 <td class="entry_tags">
1263 <tr class="entries_header">
1264 <th class="th_details" colspan="6">Details</th>
1266 <tr class="entry_cont">
1267 <td class="entry_details" colspan="6">
1268 <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
1269 control is overridden by the AWB routine.<wbr/> When AWB is disabled,<wbr/> the
1270 application controls how the color mapping is performed.<wbr/></p>
1271 <p>We define the expected processing pipeline below.<wbr/> For consistency
1272 across devices,<wbr/> this is always the case with TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1273 <p>When either FULL or HIGH_<wbr/>QUALITY is used,<wbr/> the camera device may
1274 do additional processing but <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
1275 <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> will still be provided by the
1276 camera device (in the results) and be roughly correct.<wbr/></p>
1277 <p>Switching to TRANSFORM_<wbr/>MATRIX and using the data provided from
1278 FAST or HIGH_<wbr/>QUALITY will yield a picture with the same white point
1279 as what was produced by the camera device in the earlier frame.<wbr/></p>
1280 <p>The expected processing pipeline is as follows:</p>
1281 <p><img alt="White balance processing pipeline" src="images/camera2/metadata/android.colorCorrection.mode/processing_pipeline.png"/></p>
1282 <p>The white balance is encoded by two values,<wbr/> a 4-channel white-balance
1283 gain vector (applied in the Bayer domain),<wbr/> and a 3x3 color transform
1284 matrix (applied after demosaic).<wbr/></p>
1285 <p>The 4-channel white-balance gains are defined as:</p>
1286 <pre><code><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> = [ R G_<wbr/>even G_<wbr/>odd B ]
1288 <p>where <code>G_<wbr/>even</code> is the gain for green pixels on even rows of the
1289 output,<wbr/> and <code>G_<wbr/>odd</code> is the gain for green pixels on the odd rows.<wbr/>
1290 These may be identical for a given camera device implementation; if
1291 the camera device does not support a separate gain for even/<wbr/>odd green
1292 channels,<wbr/> it will use the <code>G_<wbr/>even</code> value,<wbr/> and write <code>G_<wbr/>odd</code> equal to
1293 <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
1294 <p>The matrices for color transforms are defined as a 9-entry vector:</p>
1295 <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 ]
1297 <p>which define a transform from input sensor colors,<wbr/> <code>P_<wbr/>in = [ r g b ]</code>,<wbr/>
1298 to output linear sRGB,<wbr/> <code>P_<wbr/>out = [ r' g' b' ]</code>,<wbr/></p>
1299 <p>with colors as follows:</p>
1300 <pre><code>r' = I0r + I1g + I2b
1301 g' = I3r + I4g + I5b
1302 b' = I6r + I7g + I8b
1304 <p>Both the input and output value ranges must match.<wbr/> Overflow/<wbr/>underflow
1305 values are clipped to fit within the range.<wbr/></p>
1309 <tr class="entries_header">
1310 <th class="th_details" colspan="6">HAL Implementation Details</th>
1312 <tr class="entry_cont">
1313 <td class="entry_details" colspan="6">
1314 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if color correction control is available
1315 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
1316 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
1317 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY should generate the same output.<wbr/></p>
1321 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
1322 <!-- end of entry -->
1325 <tr class="entry" id="controls_android.colorCorrection.transform">
1326 <td class="entry_name
1328 android.<wbr/>color<wbr/>Correction.<wbr/>transform
1330 <td class="entry_type">
1331 <span class="entry_type_name">rational</span>
1332 <span class="entry_type_container">x</span>
1334 <span class="entry_type_array">
1337 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
1340 <span class="entry_type_hwlevel">[full] </span>
1343 <div class="entry_type_notes">3x3 rational matrix in row-major order</div>
1346 </td> <!-- entry_type -->
1348 <td class="entry_description">
1349 <p>A color transform matrix to use to transform
1350 from sensor RGB color space to output linear sRGB color space.<wbr/></p>
1353 <td class="entry_units">
1354 Unitless scale factors
1357 <td class="entry_range">
1360 <td class="entry_hal_version">
1364 <td class="entry_tags">
1368 <tr class="entries_header">
1369 <th class="th_details" colspan="6">Details</th>
1371 <tr class="entry_cont">
1372 <td class="entry_details" colspan="6">
1373 <p>This matrix is either set by the camera device when the request
1374 <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not TRANSFORM_<wbr/>MATRIX,<wbr/> or
1375 directly by the application in the request when the
1376 <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1377 <p>In the latter case,<wbr/> the camera device may round the matrix to account
1378 for precision issues; the final rounded matrix should be reported back
1379 in this matrix result metadata.<wbr/> The transform should keep the magnitude
1380 of the output color values within <code>[0,<wbr/> 1.<wbr/>0]</code> (assuming input color
1381 values is within the normalized range <code>[0,<wbr/> 1.<wbr/>0]</code>),<wbr/> or clipping may occur.<wbr/></p>
1382 <p>The valid range of each matrix element varies on different devices,<wbr/> but
1383 values within [-1.<wbr/>5,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
1388 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
1389 <!-- end of entry -->
1392 <tr class="entry" id="controls_android.colorCorrection.gains">
1393 <td class="entry_name
1395 android.<wbr/>color<wbr/>Correction.<wbr/>gains
1397 <td class="entry_type">
1398 <span class="entry_type_name">float</span>
1399 <span class="entry_type_container">x</span>
1401 <span class="entry_type_array">
1404 <span class="entry_type_visibility"> [public as rggbChannelVector]</span>
1407 <span class="entry_type_hwlevel">[full] </span>
1410 <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div>
1413 </td> <!-- entry_type -->
1415 <td class="entry_description">
1416 <p>Gains applying to Bayer raw color channels for
1417 white-balance.<wbr/></p>
1420 <td class="entry_units">
1421 Unitless gain factors
1424 <td class="entry_range">
1427 <td class="entry_hal_version">
1431 <td class="entry_tags">
1435 <tr class="entries_header">
1436 <th class="th_details" colspan="6">Details</th>
1438 <tr class="entry_cont">
1439 <td class="entry_details" colspan="6">
1440 <p>These per-channel gains are either set by the camera device
1441 when the request <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not
1442 TRANSFORM_<wbr/>MATRIX,<wbr/> or directly by the application in the
1443 request when the <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is
1444 TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1445 <p>The gains in the result metadata are the gains actually
1446 applied by the camera device to the current frame.<wbr/></p>
1447 <p>The valid range of gains varies on different devices,<wbr/> but gains
1448 between [1.<wbr/>0,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/> Even if a given
1449 device allows gains below 1.<wbr/>0,<wbr/> this is usually not recommended because
1450 this can create color artifacts.<wbr/></p>
1454 <tr class="entries_header">
1455 <th class="th_details" colspan="6">HAL Implementation Details</th>
1457 <tr class="entry_cont">
1458 <td class="entry_details" colspan="6">
1459 <p>The 4-channel white-balance gains are defined in
1460 the order of <code>[R G_<wbr/>even G_<wbr/>odd B]</code>,<wbr/> where <code>G_<wbr/>even</code> is the gain
1461 for green pixels on even rows of the output,<wbr/> and <code>G_<wbr/>odd</code>
1462 is the gain for green pixels on the odd rows.<wbr/></p>
1463 <p>If a HAL does not support a separate gain for even/<wbr/>odd green
1464 channels,<wbr/> it must use the <code>G_<wbr/>even</code> value,<wbr/> and write
1465 <code>G_<wbr/>odd</code> equal to <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
1469 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
1470 <!-- end of entry -->
1473 <tr class="entry" id="controls_android.colorCorrection.aberrationMode">
1474 <td class="entry_name
1476 android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode
1478 <td class="entry_type">
1479 <span class="entry_type_name entry_type_name_enum">byte</span>
1481 <span class="entry_type_visibility"> [public]</span>
1484 <span class="entry_type_hwlevel">[legacy] </span>
1488 <ul class="entry_type_enum">
1490 <span class="entry_type_enum_name">OFF</span>
1491 <span class="entry_type_enum_notes"><p>No aberration correction is applied.<wbr/></p></span>
1494 <span class="entry_type_enum_name">FAST</span>
1495 <span class="entry_type_enum_notes"><p>Aberration correction will not slow down capture rate
1496 relative to sensor raw output.<wbr/></p></span>
1499 <span class="entry_type_enum_name">HIGH_QUALITY</span>
1500 <span class="entry_type_enum_notes"><p>Aberration correction operates at improved quality but the capture rate might be
1501 reduced (relative to sensor raw output rate)</p></span>
1505 </td> <!-- entry_type -->
1507 <td class="entry_description">
1508 <p>Mode of operation for the chromatic aberration correction algorithm.<wbr/></p>
1511 <td class="entry_units">
1514 <td class="entry_range">
1515 <p><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></p>
1518 <td class="entry_hal_version">
1522 <td class="entry_tags">
1526 <tr class="entries_header">
1527 <th class="th_details" colspan="6">Details</th>
1529 <tr class="entry_cont">
1530 <td class="entry_details" colspan="6">
1531 <p>Chromatic (color) aberration is caused by the fact that different wavelengths of light
1532 can not focus on the same point after exiting from the lens.<wbr/> This metadata defines
1533 the high level control of chromatic aberration correction algorithm,<wbr/> which aims to
1534 minimize the chromatic artifacts that may occur along the object boundaries in an
1536 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean that camera device determined aberration
1537 correction will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device will
1538 use the highest-quality aberration correction algorithms,<wbr/> even if it slows down
1539 capture rate.<wbr/> FAST means the camera device will not slow down capture rate when
1540 applying aberration correction.<wbr/></p>
1541 <p>LEGACY devices will always be in FAST mode.<wbr/></p>
1546 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
1547 <!-- end of entry -->
1551 <!-- end of kind -->
1553 <tr><td colspan="7" class="kind">dynamic</td></tr>
1555 <thead class="entries_header">
1557 <th class="th_name">Property Name</th>
1558 <th class="th_type">Type</th>
1559 <th class="th_description">Description</th>
1560 <th class="th_units">Units</th>
1561 <th class="th_range">Range</th>
1562 <th class="th_hal_version">Initial HIDL HAL version</th>
1563 <th class="th_tags">Tags</th>
1578 <tr class="entry" id="dynamic_android.colorCorrection.mode">
1579 <td class="entry_name
1581 android.<wbr/>color<wbr/>Correction.<wbr/>mode
1583 <td class="entry_type">
1584 <span class="entry_type_name entry_type_name_enum">byte</span>
1586 <span class="entry_type_visibility"> [public]</span>
1589 <span class="entry_type_hwlevel">[full] </span>
1593 <ul class="entry_type_enum">
1595 <span class="entry_type_enum_name">TRANSFORM_MATRIX</span>
1596 <span class="entry_type_enum_notes"><p>Use the <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> matrix
1597 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> to do color conversion.<wbr/></p>
1598 <p>All advanced white balance adjustments (not specified
1599 by our white balance pipeline) must be disabled.<wbr/></p>
1600 <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
1601 TRANSFORM_<wbr/>MATRIX is ignored.<wbr/> The camera device will override
1602 this value to either FAST or HIGH_<wbr/>QUALITY.<wbr/></p></span>
1605 <span class="entry_type_enum_name">FAST</span>
1606 <span class="entry_type_enum_notes"><p>Color correction processing must not slow down
1607 capture rate relative to sensor raw output.<wbr/></p>
1608 <p>Advanced white balance adjustments above and beyond
1609 the specified white balance pipeline may be applied.<wbr/></p>
1610 <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
1611 the camera device uses the last frame's AWB values
1612 (or defaults if AWB has never been run).<wbr/></p></span>
1615 <span class="entry_type_enum_name">HIGH_QUALITY</span>
1616 <span class="entry_type_enum_notes"><p>Color correction processing operates at improved
1617 quality but the capture rate might be reduced (relative to sensor
1618 raw output rate)</p>
1619 <p>Advanced white balance adjustments above and beyond
1620 the specified white balance pipeline may be applied.<wbr/></p>
1621 <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
1622 the camera device uses the last frame's AWB values
1623 (or defaults if AWB has never been run).<wbr/></p></span>
1627 </td> <!-- entry_type -->
1629 <td class="entry_description">
1630 <p>The mode control selects how the image data is converted from the
1631 sensor's native color into linear sRGB color.<wbr/></p>
1634 <td class="entry_units">
1637 <td class="entry_range">
1640 <td class="entry_hal_version">
1644 <td class="entry_tags">
1648 <tr class="entries_header">
1649 <th class="th_details" colspan="6">Details</th>
1651 <tr class="entry_cont">
1652 <td class="entry_details" colspan="6">
1653 <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
1654 control is overridden by the AWB routine.<wbr/> When AWB is disabled,<wbr/> the
1655 application controls how the color mapping is performed.<wbr/></p>
1656 <p>We define the expected processing pipeline below.<wbr/> For consistency
1657 across devices,<wbr/> this is always the case with TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1658 <p>When either FULL or HIGH_<wbr/>QUALITY is used,<wbr/> the camera device may
1659 do additional processing but <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
1660 <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> will still be provided by the
1661 camera device (in the results) and be roughly correct.<wbr/></p>
1662 <p>Switching to TRANSFORM_<wbr/>MATRIX and using the data provided from
1663 FAST or HIGH_<wbr/>QUALITY will yield a picture with the same white point
1664 as what was produced by the camera device in the earlier frame.<wbr/></p>
1665 <p>The expected processing pipeline is as follows:</p>
1666 <p><img alt="White balance processing pipeline" src="images/camera2/metadata/android.colorCorrection.mode/processing_pipeline.png"/></p>
1667 <p>The white balance is encoded by two values,<wbr/> a 4-channel white-balance
1668 gain vector (applied in the Bayer domain),<wbr/> and a 3x3 color transform
1669 matrix (applied after demosaic).<wbr/></p>
1670 <p>The 4-channel white-balance gains are defined as:</p>
1671 <pre><code><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> = [ R G_<wbr/>even G_<wbr/>odd B ]
1673 <p>where <code>G_<wbr/>even</code> is the gain for green pixels on even rows of the
1674 output,<wbr/> and <code>G_<wbr/>odd</code> is the gain for green pixels on the odd rows.<wbr/>
1675 These may be identical for a given camera device implementation; if
1676 the camera device does not support a separate gain for even/<wbr/>odd green
1677 channels,<wbr/> it will use the <code>G_<wbr/>even</code> value,<wbr/> and write <code>G_<wbr/>odd</code> equal to
1678 <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
1679 <p>The matrices for color transforms are defined as a 9-entry vector:</p>
1680 <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 ]
1682 <p>which define a transform from input sensor colors,<wbr/> <code>P_<wbr/>in = [ r g b ]</code>,<wbr/>
1683 to output linear sRGB,<wbr/> <code>P_<wbr/>out = [ r' g' b' ]</code>,<wbr/></p>
1684 <p>with colors as follows:</p>
1685 <pre><code>r' = I0r + I1g + I2b
1686 g' = I3r + I4g + I5b
1687 b' = I6r + I7g + I8b
1689 <p>Both the input and output value ranges must match.<wbr/> Overflow/<wbr/>underflow
1690 values are clipped to fit within the range.<wbr/></p>
1694 <tr class="entries_header">
1695 <th class="th_details" colspan="6">HAL Implementation Details</th>
1697 <tr class="entry_cont">
1698 <td class="entry_details" colspan="6">
1699 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if color correction control is available
1700 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
1701 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
1702 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY should generate the same output.<wbr/></p>
1706 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
1707 <!-- end of entry -->
1710 <tr class="entry" id="dynamic_android.colorCorrection.transform">
1711 <td class="entry_name
1713 android.<wbr/>color<wbr/>Correction.<wbr/>transform
1715 <td class="entry_type">
1716 <span class="entry_type_name">rational</span>
1717 <span class="entry_type_container">x</span>
1719 <span class="entry_type_array">
1722 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
1725 <span class="entry_type_hwlevel">[full] </span>
1728 <div class="entry_type_notes">3x3 rational matrix in row-major order</div>
1731 </td> <!-- entry_type -->
1733 <td class="entry_description">
1734 <p>A color transform matrix to use to transform
1735 from sensor RGB color space to output linear sRGB color space.<wbr/></p>
1738 <td class="entry_units">
1739 Unitless scale factors
1742 <td class="entry_range">
1745 <td class="entry_hal_version">
1749 <td class="entry_tags">
1753 <tr class="entries_header">
1754 <th class="th_details" colspan="6">Details</th>
1756 <tr class="entry_cont">
1757 <td class="entry_details" colspan="6">
1758 <p>This matrix is either set by the camera device when the request
1759 <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not TRANSFORM_<wbr/>MATRIX,<wbr/> or
1760 directly by the application in the request when the
1761 <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1762 <p>In the latter case,<wbr/> the camera device may round the matrix to account
1763 for precision issues; the final rounded matrix should be reported back
1764 in this matrix result metadata.<wbr/> The transform should keep the magnitude
1765 of the output color values within <code>[0,<wbr/> 1.<wbr/>0]</code> (assuming input color
1766 values is within the normalized range <code>[0,<wbr/> 1.<wbr/>0]</code>),<wbr/> or clipping may occur.<wbr/></p>
1767 <p>The valid range of each matrix element varies on different devices,<wbr/> but
1768 values within [-1.<wbr/>5,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
1773 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
1774 <!-- end of entry -->
1777 <tr class="entry" id="dynamic_android.colorCorrection.gains">
1778 <td class="entry_name
1780 android.<wbr/>color<wbr/>Correction.<wbr/>gains
1782 <td class="entry_type">
1783 <span class="entry_type_name">float</span>
1784 <span class="entry_type_container">x</span>
1786 <span class="entry_type_array">
1789 <span class="entry_type_visibility"> [public as rggbChannelVector]</span>
1792 <span class="entry_type_hwlevel">[full] </span>
1795 <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div>
1798 </td> <!-- entry_type -->
1800 <td class="entry_description">
1801 <p>Gains applying to Bayer raw color channels for
1802 white-balance.<wbr/></p>
1805 <td class="entry_units">
1806 Unitless gain factors
1809 <td class="entry_range">
1812 <td class="entry_hal_version">
1816 <td class="entry_tags">
1820 <tr class="entries_header">
1821 <th class="th_details" colspan="6">Details</th>
1823 <tr class="entry_cont">
1824 <td class="entry_details" colspan="6">
1825 <p>These per-channel gains are either set by the camera device
1826 when the request <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not
1827 TRANSFORM_<wbr/>MATRIX,<wbr/> or directly by the application in the
1828 request when the <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is
1829 TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1830 <p>The gains in the result metadata are the gains actually
1831 applied by the camera device to the current frame.<wbr/></p>
1832 <p>The valid range of gains varies on different devices,<wbr/> but gains
1833 between [1.<wbr/>0,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/> Even if a given
1834 device allows gains below 1.<wbr/>0,<wbr/> this is usually not recommended because
1835 this can create color artifacts.<wbr/></p>
1839 <tr class="entries_header">
1840 <th class="th_details" colspan="6">HAL Implementation Details</th>
1842 <tr class="entry_cont">
1843 <td class="entry_details" colspan="6">
1844 <p>The 4-channel white-balance gains are defined in
1845 the order of <code>[R G_<wbr/>even G_<wbr/>odd B]</code>,<wbr/> where <code>G_<wbr/>even</code> is the gain
1846 for green pixels on even rows of the output,<wbr/> and <code>G_<wbr/>odd</code>
1847 is the gain for green pixels on the odd rows.<wbr/></p>
1848 <p>If a HAL does not support a separate gain for even/<wbr/>odd green
1849 channels,<wbr/> it must use the <code>G_<wbr/>even</code> value,<wbr/> and write
1850 <code>G_<wbr/>odd</code> equal to <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
1854 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
1855 <!-- end of entry -->
1858 <tr class="entry" id="dynamic_android.colorCorrection.aberrationMode">
1859 <td class="entry_name
1861 android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode
1863 <td class="entry_type">
1864 <span class="entry_type_name entry_type_name_enum">byte</span>
1866 <span class="entry_type_visibility"> [public]</span>
1869 <span class="entry_type_hwlevel">[legacy] </span>
1873 <ul class="entry_type_enum">
1875 <span class="entry_type_enum_name">OFF</span>
1876 <span class="entry_type_enum_notes"><p>No aberration correction is applied.<wbr/></p></span>
1879 <span class="entry_type_enum_name">FAST</span>
1880 <span class="entry_type_enum_notes"><p>Aberration correction will not slow down capture rate
1881 relative to sensor raw output.<wbr/></p></span>
1884 <span class="entry_type_enum_name">HIGH_QUALITY</span>
1885 <span class="entry_type_enum_notes"><p>Aberration correction operates at improved quality but the capture rate might be
1886 reduced (relative to sensor raw output rate)</p></span>
1890 </td> <!-- entry_type -->
1892 <td class="entry_description">
1893 <p>Mode of operation for the chromatic aberration correction algorithm.<wbr/></p>
1896 <td class="entry_units">
1899 <td class="entry_range">
1900 <p><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></p>
1903 <td class="entry_hal_version">
1907 <td class="entry_tags">
1911 <tr class="entries_header">
1912 <th class="th_details" colspan="6">Details</th>
1914 <tr class="entry_cont">
1915 <td class="entry_details" colspan="6">
1916 <p>Chromatic (color) aberration is caused by the fact that different wavelengths of light
1917 can not focus on the same point after exiting from the lens.<wbr/> This metadata defines
1918 the high level control of chromatic aberration correction algorithm,<wbr/> which aims to
1919 minimize the chromatic artifacts that may occur along the object boundaries in an
1921 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean that camera device determined aberration
1922 correction will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device will
1923 use the highest-quality aberration correction algorithms,<wbr/> even if it slows down
1924 capture rate.<wbr/> FAST means the camera device will not slow down capture rate when
1925 applying aberration correction.<wbr/></p>
1926 <p>LEGACY devices will always be in FAST mode.<wbr/></p>
1931 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
1932 <!-- end of entry -->
1936 <!-- end of kind -->
1938 <tr><td colspan="7" class="kind">static</td></tr>
1940 <thead class="entries_header">
1942 <th class="th_name">Property Name</th>
1943 <th class="th_type">Type</th>
1944 <th class="th_description">Description</th>
1945 <th class="th_units">Units</th>
1946 <th class="th_range">Range</th>
1947 <th class="th_hal_version">Initial HIDL HAL version</th>
1948 <th class="th_tags">Tags</th>
1963 <tr class="entry" id="static_android.colorCorrection.availableAberrationModes">
1964 <td class="entry_name
1966 android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes
1968 <td class="entry_type">
1969 <span class="entry_type_name">byte</span>
1970 <span class="entry_type_container">x</span>
1972 <span class="entry_type_array">
1975 <span class="entry_type_visibility"> [public as enumList]</span>
1978 <span class="entry_type_hwlevel">[legacy] </span>
1981 <div class="entry_type_notes">list of enums</div>
1984 </td> <!-- entry_type -->
1986 <td class="entry_description">
1987 <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
1988 supported by this camera device.<wbr/></p>
1991 <td class="entry_units">
1994 <td class="entry_range">
1995 <p>Any value listed in <a href="#controls_android.colorCorrection.aberrationMode">android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode</a></p>
1998 <td class="entry_hal_version">
2002 <td class="entry_tags">
2003 <ul class="entry_tags">
2004 <li><a href="#tag_V1">V1</a></li>
2009 <tr class="entries_header">
2010 <th class="th_details" colspan="6">Details</th>
2012 <tr class="entry_cont">
2013 <td class="entry_details" colspan="6">
2014 <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
2015 aberration correction modes are available for a device,<wbr/> this list will solely include
2016 OFF mode.<wbr/> All camera devices will support either OFF or FAST mode.<wbr/></p>
2017 <p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always list
2018 OFF mode.<wbr/> This includes all FULL level devices.<wbr/></p>
2019 <p>LEGACY devices will always only support FAST mode.<wbr/></p>
2023 <tr class="entries_header">
2024 <th class="th_details" colspan="6">HAL Implementation Details</th>
2026 <tr class="entry_cont">
2027 <td class="entry_details" colspan="6">
2028 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if chromatic aberration control is available
2029 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
2030 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
2031 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
2035 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2036 <!-- end of entry -->
2040 <!-- end of kind -->
2043 <!-- end of section -->
2044 <tr><td colspan="7" id="section_control" class="section">control</td></tr>
2047 <tr><td colspan="7" class="kind">controls</td></tr>
2049 <thead class="entries_header">
2051 <th class="th_name">Property Name</th>
2052 <th class="th_type">Type</th>
2053 <th class="th_description">Description</th>
2054 <th class="th_units">Units</th>
2055 <th class="th_range">Range</th>
2056 <th class="th_hal_version">Initial HIDL HAL version</th>
2057 <th class="th_tags">Tags</th>
2072 <tr class="entry" id="controls_android.control.aeAntibandingMode">
2073 <td class="entry_name
2075 android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode
2077 <td class="entry_type">
2078 <span class="entry_type_name entry_type_name_enum">byte</span>
2080 <span class="entry_type_visibility"> [public]</span>
2083 <span class="entry_type_hwlevel">[legacy] </span>
2087 <ul class="entry_type_enum">
2089 <span class="entry_type_enum_name">OFF</span>
2090 <span class="entry_type_enum_notes"><p>The camera device will not adjust exposure duration to
2091 avoid banding problems.<wbr/></p></span>
2094 <span class="entry_type_enum_name">50HZ</span>
2095 <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
2096 avoid banding problems with 50Hz illumination sources.<wbr/></p></span>
2099 <span class="entry_type_enum_name">60HZ</span>
2100 <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
2101 avoid banding problems with 60Hz illumination
2102 sources.<wbr/></p></span>
2105 <span class="entry_type_enum_name">AUTO</span>
2106 <span class="entry_type_enum_notes"><p>The camera device will automatically adapt its
2107 antibanding routine to the current illumination
2108 condition.<wbr/> This is the default mode if AUTO is
2109 available on given camera device.<wbr/></p></span>
2113 </td> <!-- entry_type -->
2115 <td class="entry_description">
2116 <p>The desired setting for the camera device's auto-exposure
2117 algorithm's antibanding compensation.<wbr/></p>
2120 <td class="entry_units">
2123 <td class="entry_range">
2124 <p><a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a></p>
2127 <td class="entry_hal_version">
2131 <td class="entry_tags">
2132 <ul class="entry_tags">
2133 <li><a href="#tag_BC">BC</a></li>
2138 <tr class="entries_header">
2139 <th class="th_details" colspan="6">Details</th>
2141 <tr class="entry_cont">
2142 <td class="entry_details" colspan="6">
2143 <p>Some kinds of lighting fixtures,<wbr/> such as some fluorescent
2144 lights,<wbr/> flicker at the rate of the power supply frequency
2145 (60Hz or 50Hz,<wbr/> depending on country).<wbr/> While this is
2146 typically not noticeable to a person,<wbr/> it can be visible to
2147 a camera device.<wbr/> If a camera sets its exposure time to the
2148 wrong value,<wbr/> the flicker may become visible in the
2149 viewfinder as flicker or in a final captured image,<wbr/> as a
2150 set of variable-brightness bands across the image.<wbr/></p>
2151 <p>Therefore,<wbr/> the auto-exposure routines of camera devices
2152 include antibanding routines that ensure that the chosen
2153 exposure value will not cause such banding.<wbr/> The choice of
2154 exposure time depends on the rate of flicker,<wbr/> which the
2155 camera device can detect automatically,<wbr/> or the expected
2156 rate can be selected by the application using this
2158 <p>A given camera device may not support all of the possible
2159 options for the antibanding mode.<wbr/> The
2160 <a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a> key contains
2161 the available modes for a given camera device.<wbr/></p>
2162 <p>AUTO mode is the default if it is available on given
2163 camera device.<wbr/> When AUTO mode is not available,<wbr/> the
2164 default will be either 50HZ or 60HZ,<wbr/> and both 50HZ
2165 and 60HZ will be available.<wbr/></p>
2166 <p>If manual exposure control is enabled (by setting
2167 <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/>
2168 then this setting has no effect,<wbr/> and the application must
2169 ensure it selects exposure times that do not cause banding
2170 issues.<wbr/> The <a href="#dynamic_android.statistics.sceneFlicker">android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker</a> key can assist
2171 the application in this.<wbr/></p>
2175 <tr class="entries_header">
2176 <th class="th_details" colspan="6">HAL Implementation Details</th>
2178 <tr class="entry_cont">
2179 <td class="entry_details" colspan="6">
2180 <p>For all capture request templates,<wbr/> this field must be set
2181 to AUTO if AUTO mode is available.<wbr/> If AUTO is not available,<wbr/>
2182 the default must be either 50HZ or 60HZ,<wbr/> and both 50HZ and
2183 60HZ must be available.<wbr/></p>
2184 <p>If manual exposure control is enabled (by setting
2185 <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/>
2186 then the exposure values provided by the application must not be
2187 adjusted for antibanding.<wbr/></p>
2191 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2192 <!-- end of entry -->
2195 <tr class="entry" id="controls_android.control.aeExposureCompensation">
2196 <td class="entry_name
2198 android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation
2200 <td class="entry_type">
2201 <span class="entry_type_name">int32</span>
2203 <span class="entry_type_visibility"> [public]</span>
2206 <span class="entry_type_hwlevel">[legacy] </span>
2211 </td> <!-- entry_type -->
2213 <td class="entry_description">
2214 <p>Adjustment to auto-exposure (AE) target image
2215 brightness.<wbr/></p>
2218 <td class="entry_units">
2222 <td class="entry_range">
2223 <p><a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a></p>
2226 <td class="entry_hal_version">
2230 <td class="entry_tags">
2231 <ul class="entry_tags">
2232 <li><a href="#tag_BC">BC</a></li>
2237 <tr class="entries_header">
2238 <th class="th_details" colspan="6">Details</th>
2240 <tr class="entry_cont">
2241 <td class="entry_details" colspan="6">
2242 <p>The adjustment is measured as a count of steps,<wbr/> with the
2243 step size defined by <a href="#static_android.control.aeCompensationStep">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step</a> and the
2244 allowed range by <a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a>.<wbr/></p>
2245 <p>For example,<wbr/> if the exposure value (EV) step is 0.<wbr/>333,<wbr/> '6'
2246 will mean an exposure compensation of +2 EV; -3 will mean an
2247 exposure compensation of -1 EV.<wbr/> One EV represents a doubling
2248 of image brightness.<wbr/> Note that this control will only be
2249 effective if <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>!=</code> OFF.<wbr/> This control
2250 will take effect even when <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> <code>== true</code>.<wbr/></p>
2251 <p>In the event of exposure compensation value being changed,<wbr/> camera device
2252 may take several frames to reach the newly requested exposure target.<wbr/>
2253 During that time,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> field will be in the SEARCHING
2254 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
2255 change from SEARCHING to either CONVERGED,<wbr/> LOCKED (if AE lock is enabled),<wbr/> or
2256 FLASH_<wbr/>REQUIRED (if the scene is too dark for still capture).<wbr/></p>
2261 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2262 <!-- end of entry -->
2265 <tr class="entry" id="controls_android.control.aeLock">
2266 <td class="entry_name
2268 android.<wbr/>control.<wbr/>ae<wbr/>Lock
2270 <td class="entry_type">
2271 <span class="entry_type_name entry_type_name_enum">byte</span>
2273 <span class="entry_type_visibility"> [public as boolean]</span>
2276 <span class="entry_type_hwlevel">[legacy] </span>
2280 <ul class="entry_type_enum">
2282 <span class="entry_type_enum_name">OFF</span>
2283 <span class="entry_type_enum_notes"><p>Auto-exposure lock is disabled; the AE algorithm
2284 is free to update its parameters.<wbr/></p></span>
2287 <span class="entry_type_enum_name">ON</span>
2288 <span class="entry_type_enum_notes"><p>Auto-exposure lock is enabled; the AE algorithm
2289 must not update the exposure and sensitivity parameters
2290 while the lock is active.<wbr/></p>
2291 <p><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a> setting changes
2292 will still take effect while auto-exposure is locked.<wbr/></p>
2293 <p>Some rare LEGACY devices may not support
2294 this,<wbr/> in which case the value will always be overridden to OFF.<wbr/></p></span>
2298 </td> <!-- entry_type -->
2300 <td class="entry_description">
2301 <p>Whether auto-exposure (AE) is currently locked to its latest
2302 calculated values.<wbr/></p>
2305 <td class="entry_units">
2308 <td class="entry_range">
2311 <td class="entry_hal_version">
2315 <td class="entry_tags">
2316 <ul class="entry_tags">
2317 <li><a href="#tag_BC">BC</a></li>
2322 <tr class="entries_header">
2323 <th class="th_details" colspan="6">Details</th>
2325 <tr class="entry_cont">
2326 <td class="entry_details" colspan="6">
2327 <p>When set to <code>true</code> (ON),<wbr/> the AE algorithm is locked to its latest parameters,<wbr/>
2328 and will not change exposure settings until the lock is set to <code>false</code> (OFF).<wbr/></p>
2329 <p>Note that even when AE is locked,<wbr/> the flash may be fired if
2330 the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is ON_<wbr/>AUTO_<wbr/>FLASH /<wbr/>
2331 ON_<wbr/>ALWAYS_<wbr/>FLASH /<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE.<wbr/></p>
2332 <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
2333 is ON,<wbr/> the camera device will still adjust its exposure value.<wbr/></p>
2334 <p>If AE precapture is triggered (see <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>)
2335 when AE is already locked,<wbr/> the camera device will not change the exposure time
2336 (<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>)
2337 parameters.<wbr/> The flash may be fired if the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>
2338 is ON_<wbr/>AUTO_<wbr/>FLASH/<wbr/>ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE and the scene is too dark.<wbr/> If the
2339 <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/>
2340 Similarly,<wbr/> AE precapture trigger CANCEL has no effect when AE is already locked.<wbr/></p>
2341 <p>When an AE precapture sequence is triggered,<wbr/> AE unlock will not be able to unlock
2342 the AE if AE is locked by the camera device internally during precapture metering
2343 sequence In other words,<wbr/> submitting requests with AE unlock has no effect for an
2344 ongoing precapture metering sequence.<wbr/> Otherwise,<wbr/> the precapture metering sequence
2345 will never succeed in a sequence of preview requests where AE lock is always set
2346 to <code>false</code>.<wbr/></p>
2347 <p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that
2348 get locked do not necessarily correspond to the settings that were present in the
2349 latest capture result received from the camera device,<wbr/> since additional captures
2350 and AE updates may have occurred even before the result was sent out.<wbr/> If an
2351 application is switching between automatic and manual control and wishes to eliminate
2352 any flicker during the switch,<wbr/> the following procedure is recommended:</p>
2354 <li>Starting in auto-AE mode:</li>
2356 <li>Wait for the first result to be output that has the AE locked</li>
2357 <li>Copy exposure settings from that result into a request,<wbr/> set the request to manual AE</li>
2358 <li>Submit the capture request,<wbr/> proceed to run manual AE as desired.<wbr/></li>
2360 <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>
2365 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2366 <!-- end of entry -->
2369 <tr class="entry" id="controls_android.control.aeMode">
2370 <td class="entry_name
2372 android.<wbr/>control.<wbr/>ae<wbr/>Mode
2374 <td class="entry_type">
2375 <span class="entry_type_name entry_type_name_enum">byte</span>
2377 <span class="entry_type_visibility"> [public]</span>
2380 <span class="entry_type_hwlevel">[legacy] </span>
2384 <ul class="entry_type_enum">
2386 <span class="entry_type_enum_name">OFF</span>
2387 <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is disabled.<wbr/></p>
2388 <p>The application-selected <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
2389 <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> and
2390 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are used by the camera
2391 device,<wbr/> along with android.<wbr/>flash.<wbr/>* fields,<wbr/> if there's
2392 a flash unit for this camera device.<wbr/></p>
2393 <p>Note that auto-white balance (AWB) and auto-focus (AF)
2394 behavior is device dependent when AE is in OFF mode.<wbr/>
2395 To have consistent behavior across different devices,<wbr/>
2396 it is recommended to either set AWB and AF to OFF mode
2397 or lock AWB and AF before setting AE to OFF.<wbr/>
2398 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/>
2399 <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>
2400 for more details.<wbr/></p>
2401 <p>LEGACY devices do not support the OFF mode and will
2402 override attempts to use this value to ON.<wbr/></p></span>
2405 <span class="entry_type_enum_name">ON</span>
2406 <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is active,<wbr/>
2407 with no flash control.<wbr/></p>
2408 <p>The application's values for
2409 <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
2410 <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
2411 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are ignored.<wbr/> The
2412 application has control over the various
2413 android.<wbr/>flash.<wbr/>* fields.<wbr/></p></span>
2416 <span class="entry_type_enum_name">ON_AUTO_FLASH</span>
2417 <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
2418 the camera's flash unit,<wbr/> firing it in low-light
2419 conditions.<wbr/></p>
2420 <p>The flash may be fired during a precapture sequence
2421 (triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and
2422 may be fired for captures for which the
2423 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to
2424 STILL_<wbr/>CAPTURE</p></span>
2427 <span class="entry_type_enum_name">ON_ALWAYS_FLASH</span>
2428 <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
2429 the camera's flash unit,<wbr/> always firing it for still
2431 <p>The flash may be fired during a precapture sequence
2432 (triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and
2433 will always be fired for captures for which the
2434 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to
2435 STILL_<wbr/>CAPTURE</p></span>
2438 <span class="entry_type_enum_name">ON_AUTO_FLASH_REDEYE</span>
2439 <span class="entry_type_enum_notes"><p>Like ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> but with automatic red eye
2440 reduction.<wbr/></p>
2441 <p>If deemed necessary by the camera device,<wbr/> a red eye
2442 reduction flash will fire during the precapture
2443 sequence.<wbr/></p></span>
2447 </td> <!-- entry_type -->
2449 <td class="entry_description">
2450 <p>The desired mode for the camera device's
2451 auto-exposure routine.<wbr/></p>
2454 <td class="entry_units">
2457 <td class="entry_range">
2458 <p><a href="#static_android.control.aeAvailableModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes</a></p>
2461 <td class="entry_hal_version">
2465 <td class="entry_tags">
2466 <ul class="entry_tags">
2467 <li><a href="#tag_BC">BC</a></li>
2472 <tr class="entries_header">
2473 <th class="th_details" colspan="6">Details</th>
2475 <tr class="entry_cont">
2476 <td class="entry_details" colspan="6">
2477 <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is
2479 <p>When set to any of the ON modes,<wbr/> the camera device's
2480 auto-exposure routine is enabled,<wbr/> overriding the
2481 application's selected exposure time,<wbr/> sensor sensitivity,<wbr/>
2482 and frame duration (<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
2483 <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
2484 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>).<wbr/> If one of the FLASH modes
2485 is selected,<wbr/> the camera device's flash unit controls are
2486 also overridden.<wbr/></p>
2487 <p>The FLASH modes are only available if the camera device
2488 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>
2489 <p>If flash TORCH mode is desired,<wbr/> this field must be set to
2490 ON or OFF,<wbr/> and <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> set to TORCH.<wbr/></p>
2491 <p>When set to any of the ON modes,<wbr/> the values chosen by the
2492 camera device auto-exposure routine for the overridden
2493 fields for a given capture will be available in its
2494 CaptureResult.<wbr/></p>
2499 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2500 <!-- end of entry -->
2503 <tr class="entry" id="controls_android.control.aeRegions">
2504 <td class="entry_name
2506 android.<wbr/>control.<wbr/>ae<wbr/>Regions
2508 <td class="entry_type">
2509 <span class="entry_type_name">int32</span>
2510 <span class="entry_type_container">x</span>
2512 <span class="entry_type_array">
2515 <span class="entry_type_visibility"> [public as meteringRectangle]</span>
2522 </td> <!-- entry_type -->
2524 <td class="entry_description">
2525 <p>List of metering areas to use for auto-exposure adjustment.<wbr/></p>
2528 <td class="entry_units">
2529 Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
2532 <td class="entry_range">
2533 <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
2534 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
2537 <td class="entry_hal_version">
2541 <td class="entry_tags">
2542 <ul class="entry_tags">
2543 <li><a href="#tag_BC">BC</a></li>
2548 <tr class="entries_header">
2549 <th class="th_details" colspan="6">Details</th>
2551 <tr class="entry_cont">
2552 <td class="entry_details" colspan="6">
2553 <p>Not available if <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a> is 0.<wbr/>
2554 Otherwise will always be present.<wbr/></p>
2555 <p>The maximum number of regions supported by the device is determined by the value
2556 of <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a>.<wbr/></p>
2557 <p>The coordinate system is based on the active pixel array,<wbr/>
2558 with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
2559 (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
2560 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
2561 bottom-right pixel in the active pixel array.<wbr/></p>
2562 <p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight
2563 for every pixel in the area.<wbr/> This means that a large metering area
2564 with the same weight as a smaller area will have more effect in
2565 the metering result.<wbr/> Metering areas can partially overlap and the
2566 camera device will add the weights in the overlap region.<wbr/></p>
2567 <p>The weights are relative to weights of other exposure metering regions,<wbr/> so if only one
2568 region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0
2569 weight is ignored.<wbr/></p>
2570 <p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
2571 camera device.<wbr/></p>
2572 <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
2573 capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
2574 region and output only the intersection rectangle as the metering region in the result
2575 metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and
2576 not reported in the result metadata.<wbr/></p>
2580 <tr class="entries_header">
2581 <th class="th_details" colspan="6">HAL Implementation Details</th>
2583 <tr class="entry_cont">
2584 <td class="entry_details" colspan="6">
2585 <p>The HAL level representation of MeteringRectangle[] is a
2586 int[5 * area_<wbr/>count].<wbr/>
2587 Every five elements represent a metering region of
2588 (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
2589 The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
2590 exclusive on xmax and ymax.<wbr/></p>
2594 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2595 <!-- end of entry -->
2598 <tr class="entry" id="controls_android.control.aeTargetFpsRange">
2599 <td class="entry_name
2601 android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range
2603 <td class="entry_type">
2604 <span class="entry_type_name">int32</span>
2605 <span class="entry_type_container">x</span>
2607 <span class="entry_type_array">
2610 <span class="entry_type_visibility"> [public as rangeInt]</span>
2613 <span class="entry_type_hwlevel">[legacy] </span>
2618 </td> <!-- entry_type -->
2620 <td class="entry_description">
2621 <p>Range over which the auto-exposure routine can
2622 adjust the capture frame rate to maintain good
2626 <td class="entry_units">
2627 Frames per second (FPS)
2630 <td class="entry_range">
2631 <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>
2634 <td class="entry_hal_version">
2638 <td class="entry_tags">
2639 <ul class="entry_tags">
2640 <li><a href="#tag_BC">BC</a></li>
2645 <tr class="entries_header">
2646 <th class="th_details" colspan="6">Details</th>
2648 <tr class="entry_cont">
2649 <td class="entry_details" colspan="6">
2650 <p>Only constrains auto-exposure (AE) algorithm,<wbr/> not
2651 manual control of <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> and
2652 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>.<wbr/></p>
2657 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2658 <!-- end of entry -->
2661 <tr class="entry" id="controls_android.control.aePrecaptureTrigger">
2662 <td class="entry_name
2664 android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger
2666 <td class="entry_type">
2667 <span class="entry_type_name entry_type_name_enum">byte</span>
2669 <span class="entry_type_visibility"> [public]</span>
2672 <span class="entry_type_hwlevel">[limited] </span>
2676 <ul class="entry_type_enum">
2678 <span class="entry_type_enum_name">IDLE</span>
2679 <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
2682 <span class="entry_type_enum_name">START</span>
2683 <span class="entry_type_enum_notes"><p>The precapture metering sequence will be started
2684 by the camera device.<wbr/></p>
2685 <p>The exact effect of the precapture trigger depends on
2686 the current AE mode and state.<wbr/></p></span>
2689 <span class="entry_type_enum_name">CANCEL</span>
2690 <span class="entry_type_enum_notes"><p>The camera device will cancel any currently active or completed
2691 precapture metering sequence,<wbr/> the auto-exposure routine will return to its
2692 initial state.<wbr/></p></span>
2696 </td> <!-- entry_type -->
2698 <td class="entry_description">
2699 <p>Whether the camera device will trigger a precapture
2700 metering sequence when it processes this request.<wbr/></p>
2703 <td class="entry_units">
2706 <td class="entry_range">
2709 <td class="entry_hal_version">
2713 <td class="entry_tags">
2714 <ul class="entry_tags">
2715 <li><a href="#tag_BC">BC</a></li>
2720 <tr class="entries_header">
2721 <th class="th_details" colspan="6">Details</th>
2723 <tr class="entry_cont">
2724 <td class="entry_details" colspan="6">
2725 <p>This entry is normally set to IDLE,<wbr/> or is not
2726 included at all in the request settings.<wbr/> When included and
2727 set to START,<wbr/> the camera device will trigger the auto-exposure (AE)
2728 precapture metering sequence.<wbr/></p>
2729 <p>When set to CANCEL,<wbr/> the camera device will cancel any active
2730 precapture metering trigger,<wbr/> and return to its initial AE state.<wbr/>
2731 If a precapture metering sequence is already completed,<wbr/> and the camera
2732 device has implicitly locked the AE for subsequent still capture,<wbr/> the
2733 CANCEL trigger will unlock the AE and return to its initial AE state.<wbr/></p>
2734 <p>The precapture sequence should be triggered before starting a
2735 high-quality still capture for final metering decisions to
2736 be made,<wbr/> and for firing pre-capture flash pulses to estimate
2737 scene brightness and required final capture flash power,<wbr/> when
2738 the flash is enabled.<wbr/></p>
2739 <p>Normally,<wbr/> this entry should be set to START for only a
2740 single request,<wbr/> and the application should wait until the
2741 sequence completes before starting a new one.<wbr/></p>
2742 <p>When a precapture metering sequence is finished,<wbr/> the camera device
2743 may lock the auto-exposure routine internally to be able to accurately expose the
2744 subsequent still capture image (<code><a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE</code>).<wbr/>
2745 For this case,<wbr/> the AE may not resume normal scan if no subsequent still capture is
2746 submitted.<wbr/> To ensure that the AE routine restarts normal scan,<wbr/> the application should
2747 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
2748 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
2749 still capture request after the precapture sequence completes.<wbr/> Alternatively,<wbr/> for
2750 API level 23 or newer devices,<wbr/> the CANCEL can be used to unlock the camera device
2751 internally locked AE if the application doesn't submit a still capture request after
2752 the AE precapture trigger.<wbr/> Note that,<wbr/> the CANCEL was added in API level 23,<wbr/> and must not
2753 be used in devices that have earlier API levels.<wbr/></p>
2754 <p>The exact effect of auto-exposure (AE) precapture trigger
2755 depends on the current AE mode and state; see
2756 <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> for AE precapture state transition
2758 <p>On LEGACY-level devices,<wbr/> the precapture trigger is not supported;
2759 capturing a high-resolution JPEG image will automatically trigger a
2760 precapture sequence before the high-resolution capture,<wbr/> including
2761 potentially firing a pre-capture flash.<wbr/></p>
2762 <p>Using the precapture trigger and the auto-focus trigger <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>
2763 simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between
2764 the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a
2765 focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous
2766 trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and
2767 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
2769 <p>If both the precapture and the auto-focus trigger are activated on the same request,<wbr/> then
2770 the camera device will complete them in the optimal order for that device.<wbr/></p>
2774 <tr class="entries_header">
2775 <th class="th_details" colspan="6">HAL Implementation Details</th>
2777 <tr class="entry_cont">
2778 <td class="entry_details" colspan="6">
2779 <p>The HAL must support triggering the AE precapture trigger while an AF trigger is active
2780 (and vice versa),<wbr/> or at the same time as the AF trigger.<wbr/> It is acceptable for the HAL to
2781 treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the
2782 AE trigger.<wbr/> Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/>
2783 to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p>
2787 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2788 <!-- end of entry -->
2791 <tr class="entry" id="controls_android.control.afMode">
2792 <td class="entry_name
2794 android.<wbr/>control.<wbr/>af<wbr/>Mode
2796 <td class="entry_type">
2797 <span class="entry_type_name entry_type_name_enum">byte</span>
2799 <span class="entry_type_visibility"> [public]</span>
2802 <span class="entry_type_hwlevel">[legacy] </span>
2806 <ul class="entry_type_enum">
2808 <span class="entry_type_enum_name">OFF</span>
2809 <span class="entry_type_enum_notes"><p>The auto-focus routine does not control the lens;
2810 <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> is controlled by the
2811 application.<wbr/></p></span>
2814 <span class="entry_type_enum_name">AUTO</span>
2815 <span class="entry_type_enum_notes"><p>Basic automatic focus mode.<wbr/></p>
2816 <p>In this mode,<wbr/> the lens does not move unless
2817 the autofocus trigger action is called.<wbr/> When that trigger
2818 is activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
2819 the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/></p>
2820 <p>Always supported if lens is not fixed focus.<wbr/></p>
2821 <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
2822 is fixed-focus.<wbr/></p>
2823 <p>Triggering AF_<wbr/>CANCEL resets the lens position to default,<wbr/>
2824 and sets the AF state to INACTIVE.<wbr/></p></span>
2827 <span class="entry_type_enum_name">MACRO</span>
2828 <span class="entry_type_enum_notes"><p>Close-up focusing mode.<wbr/></p>
2829 <p>In this mode,<wbr/> the lens does not move unless the
2830 autofocus trigger action is called.<wbr/> When that trigger is
2831 activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
2832 the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/> This
2833 mode is optimized for focusing on objects very close to
2834 the camera.<wbr/></p>
2835 <p>When that trigger is activated,<wbr/> AF will transition to
2836 ACTIVE_<wbr/>SCAN,<wbr/> then to the outcome of the scan (FOCUSED or
2837 NOT_<wbr/>FOCUSED).<wbr/> Triggering cancel AF resets the lens
2838 position to default,<wbr/> and sets the AF state to
2839 INACTIVE.<wbr/></p></span>
2842 <span class="entry_type_enum_name">CONTINUOUS_VIDEO</span>
2843 <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
2844 position continually to attempt to provide a
2845 constantly-in-focus image stream.<wbr/></p>
2846 <p>The focusing behavior should be suitable for good quality
2847 video recording; typically this means slower focus
2848 movement and no overshoots.<wbr/> When the AF trigger is not
2849 involved,<wbr/> the AF algorithm should start in INACTIVE state,<wbr/>
2850 and then transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED
2851 states as appropriate.<wbr/> When the AF trigger is activated,<wbr/>
2852 the algorithm should immediately transition into
2853 AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the
2854 lens position until a cancel AF trigger is received.<wbr/></p>
2855 <p>Once cancel is received,<wbr/> the algorithm should transition
2856 back to INACTIVE and resume passive scan.<wbr/> Note that this
2857 behavior is not identical to CONTINUOUS_<wbr/>PICTURE,<wbr/> since an
2858 ongoing PASSIVE_<wbr/>SCAN must immediately be
2859 canceled.<wbr/></p></span>
2862 <span class="entry_type_enum_name">CONTINUOUS_PICTURE</span>
2863 <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
2864 position continually to attempt to provide a
2865 constantly-in-focus image stream.<wbr/></p>
2866 <p>The focusing behavior should be suitable for still image
2867 capture; typically this means focusing as fast as
2868 possible.<wbr/> When the AF trigger is not involved,<wbr/> the AF
2869 algorithm should start in INACTIVE state,<wbr/> and then
2870 transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED states as
2871 appropriate as it attempts to maintain focus.<wbr/> When the AF
2872 trigger is activated,<wbr/> the algorithm should finish its
2873 PASSIVE_<wbr/>SCAN if active,<wbr/> and then transition into
2874 AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the
2875 lens position until a cancel AF trigger is received.<wbr/></p>
2876 <p>When the AF cancel trigger is activated,<wbr/> the algorithm
2877 should transition back to INACTIVE and then act as if it
2878 has just been started.<wbr/></p></span>
2881 <span class="entry_type_enum_name">EDOF</span>
2882 <span class="entry_type_enum_notes"><p>Extended depth of field (digital focus) mode.<wbr/></p>
2883 <p>The camera device will produce images with an extended
2884 depth of field automatically; no special focusing
2885 operations need to be done before taking a picture.<wbr/></p>
2886 <p>AF triggers are ignored,<wbr/> and the AF state will always be
2887 INACTIVE.<wbr/></p></span>
2891 </td> <!-- entry_type -->
2893 <td class="entry_description">
2894 <p>Whether auto-focus (AF) is currently enabled,<wbr/> and what
2895 mode it is set to.<wbr/></p>
2898 <td class="entry_units">
2901 <td class="entry_range">
2902 <p><a href="#static_android.control.afAvailableModes">android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes</a></p>
2905 <td class="entry_hal_version">
2909 <td class="entry_tags">
2910 <ul class="entry_tags">
2911 <li><a href="#tag_BC">BC</a></li>
2916 <tr class="entries_header">
2917 <th class="th_details" colspan="6">Details</th>
2919 <tr class="entry_cont">
2920 <td class="entry_details" colspan="6">
2921 <p>Only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> = AUTO and the lens is not fixed focus
2922 (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
2923 when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> the behavior of AF is device
2924 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
2925 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>
2926 <p>If the lens is controlled by the camera device auto-focus algorithm,<wbr/>
2927 the camera device will report the current AF status in <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>
2928 in result metadata.<wbr/></p>
2932 <tr class="entries_header">
2933 <th class="th_details" colspan="6">HAL Implementation Details</th>
2935 <tr class="entry_cont">
2936 <td class="entry_details" colspan="6">
2937 <p>When afMode is AUTO or MACRO,<wbr/> the lens must not move until an AF trigger is sent in a
2938 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
2939 up with either FOCUSED_<wbr/>LOCKED or NOT_<wbr/>FOCUSED_<wbr/>LOCKED state (see
2940 <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
2941 locked and will not move.<wbr/> If camera movement (e.<wbr/>g.<wbr/> tilting camera) causes the lens to move
2942 after the lens is locked,<wbr/> the HAL must compensate this movement appropriately such that
2943 the same focal plane remains in focus.<wbr/></p>
2944 <p>When afMode is one of the continuous auto focus modes,<wbr/> the HAL is free to start a AF
2945 scan whenever it's not locked.<wbr/> When the lens is locked after an AF trigger
2946 (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
2947 same lock behavior as above.<wbr/></p>
2948 <p>When afMode is OFF,<wbr/> the application controls focus manually.<wbr/> The accuracy of the
2949 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/>
2950 However,<wbr/> the lens must not move regardless of the camera movement for any focus distance
2951 manual control.<wbr/></p>
2952 <p>To put this in concrete terms,<wbr/> if the camera has lens elements which may move based on
2953 camera orientation or motion (e.<wbr/>g.<wbr/> due to gravity),<wbr/> then the HAL must drive the lens to
2954 remain in a fixed position invariant to the camera's orientation or motion,<wbr/> for example,<wbr/>
2955 by using accelerometer measurements in the lens control logic.<wbr/> This is a typical issue
2956 that will arise on camera modules with open-loop VCMs.<wbr/></p>
2960 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2961 <!-- end of entry -->
2964 <tr class="entry" id="controls_android.control.afRegions">
2965 <td class="entry_name
2967 android.<wbr/>control.<wbr/>af<wbr/>Regions
2969 <td class="entry_type">
2970 <span class="entry_type_name">int32</span>
2971 <span class="entry_type_container">x</span>
2973 <span class="entry_type_array">
2976 <span class="entry_type_visibility"> [public as meteringRectangle]</span>
2983 </td> <!-- entry_type -->
2985 <td class="entry_description">
2986 <p>List of metering areas to use for auto-focus.<wbr/></p>
2989 <td class="entry_units">
2990 Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
2993 <td class="entry_range">
2994 <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
2995 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
2998 <td class="entry_hal_version">
3002 <td class="entry_tags">
3003 <ul class="entry_tags">
3004 <li><a href="#tag_BC">BC</a></li>
3009 <tr class="entries_header">
3010 <th class="th_details" colspan="6">Details</th>
3012 <tr class="entry_cont">
3013 <td class="entry_details" colspan="6">
3014 <p>Not available if <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a> is 0.<wbr/>
3015 Otherwise will always be present.<wbr/></p>
3016 <p>The maximum number of focus areas supported by the device is determined by the value
3017 of <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a>.<wbr/></p>
3018 <p>The coordinate system is based on the active pixel array,<wbr/>
3019 with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
3020 (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
3021 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
3022 bottom-right pixel in the active pixel array.<wbr/></p>
3023 <p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight
3024 for every pixel in the area.<wbr/> This means that a large metering area
3025 with the same weight as a smaller area will have more effect in
3026 the metering result.<wbr/> Metering areas can partially overlap and the
3027 camera device will add the weights in the overlap region.<wbr/></p>
3028 <p>The weights are relative to weights of other metering regions,<wbr/> so if only one region
3029 is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0 weight is
3031 <p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
3032 camera device.<wbr/></p>
3033 <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
3034 capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
3035 region and output only the intersection rectangle as the metering region in the result
3036 metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and
3037 not reported in the result metadata.<wbr/></p>
3041 <tr class="entries_header">
3042 <th class="th_details" colspan="6">HAL Implementation Details</th>
3044 <tr class="entry_cont">
3045 <td class="entry_details" colspan="6">
3046 <p>The HAL level representation of MeteringRectangle[] is a
3047 int[5 * area_<wbr/>count].<wbr/>
3048 Every five elements represent a metering region of
3049 (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
3050 The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
3051 exclusive on xmax and ymax.<wbr/></p>
3055 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3056 <!-- end of entry -->
3059 <tr class="entry" id="controls_android.control.afTrigger">
3060 <td class="entry_name
3062 android.<wbr/>control.<wbr/>af<wbr/>Trigger
3064 <td class="entry_type">
3065 <span class="entry_type_name entry_type_name_enum">byte</span>
3067 <span class="entry_type_visibility"> [public]</span>
3070 <span class="entry_type_hwlevel">[legacy] </span>
3074 <ul class="entry_type_enum">
3076 <span class="entry_type_enum_name">IDLE</span>
3077 <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
3080 <span class="entry_type_enum_name">START</span>
3081 <span class="entry_type_enum_notes"><p>Autofocus will trigger now.<wbr/></p></span>
3084 <span class="entry_type_enum_name">CANCEL</span>
3085 <span class="entry_type_enum_notes"><p>Autofocus will return to its initial
3086 state,<wbr/> and cancel any currently active trigger.<wbr/></p></span>
3090 </td> <!-- entry_type -->
3092 <td class="entry_description">
3093 <p>Whether the camera device will trigger autofocus for this request.<wbr/></p>
3096 <td class="entry_units">
3099 <td class="entry_range">
3102 <td class="entry_hal_version">
3106 <td class="entry_tags">
3107 <ul class="entry_tags">
3108 <li><a href="#tag_BC">BC</a></li>
3113 <tr class="entries_header">
3114 <th class="th_details" colspan="6">Details</th>
3116 <tr class="entry_cont">
3117 <td class="entry_details" colspan="6">
3118 <p>This entry is normally set to IDLE,<wbr/> or is not
3119 included at all in the request settings.<wbr/></p>
3120 <p>When included and set to START,<wbr/> the camera device will trigger the
3121 autofocus algorithm.<wbr/> If autofocus is disabled,<wbr/> this trigger has no effect.<wbr/></p>
3122 <p>When set to CANCEL,<wbr/> the camera device will cancel any active trigger,<wbr/>
3123 and return to its initial AF state.<wbr/></p>
3124 <p>Generally,<wbr/> applications should set this entry to START or CANCEL for only a
3125 single capture,<wbr/> and then return it to IDLE (or not set at all).<wbr/> Specifying
3126 START for multiple captures in a row means restarting the AF operation over
3127 and over again.<wbr/></p>
3128 <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>
3129 <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>
3130 simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between
3131 the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a
3132 focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous
3133 trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and
3134 changes to <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>,<wbr/> for example.<wbr/></p>
3138 <tr class="entries_header">
3139 <th class="th_details" colspan="6">HAL Implementation Details</th>
3141 <tr class="entry_cont">
3142 <td class="entry_details" colspan="6">
3143 <p>The HAL must support triggering the AF trigger while an AE precapture trigger is active
3144 (and vice versa),<wbr/> or at the same time as the AE trigger.<wbr/> It is acceptable for the HAL to
3145 treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the
3146 AE trigger.<wbr/> Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/>
3147 to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p>
3151 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3152 <!-- end of entry -->
3155 <tr class="entry" id="controls_android.control.awbLock">
3156 <td class="entry_name
3158 android.<wbr/>control.<wbr/>awb<wbr/>Lock
3160 <td class="entry_type">
3161 <span class="entry_type_name entry_type_name_enum">byte</span>
3163 <span class="entry_type_visibility"> [public as boolean]</span>
3166 <span class="entry_type_hwlevel">[legacy] </span>
3170 <ul class="entry_type_enum">
3172 <span class="entry_type_enum_name">OFF</span>
3173 <span class="entry_type_enum_notes"><p>Auto-white balance lock is disabled; the AWB
3174 algorithm is free to update its parameters if in AUTO
3175 mode.<wbr/></p></span>
3178 <span class="entry_type_enum_name">ON</span>
3179 <span class="entry_type_enum_notes"><p>Auto-white balance lock is enabled; the AWB
3180 algorithm will not update its parameters while the lock
3181 is active.<wbr/></p></span>
3185 </td> <!-- entry_type -->
3187 <td class="entry_description">
3188 <p>Whether auto-white balance (AWB) is currently locked to its
3189 latest calculated values.<wbr/></p>
3192 <td class="entry_units">
3195 <td class="entry_range">
3198 <td class="entry_hal_version">
3202 <td class="entry_tags">
3203 <ul class="entry_tags">
3204 <li><a href="#tag_BC">BC</a></li>
3209 <tr class="entries_header">
3210 <th class="th_details" colspan="6">Details</th>
3212 <tr class="entry_cont">
3213 <td class="entry_details" colspan="6">
3214 <p>When set to <code>true</code> (ON),<wbr/> the AWB algorithm is locked to its latest parameters,<wbr/>
3215 and will not change color balance settings until the lock is set to <code>false</code> (OFF).<wbr/></p>
3216 <p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that
3217 get locked do not necessarily correspond to the settings that were present in the
3218 latest capture result received from the camera device,<wbr/> since additional captures
3219 and AWB updates may have occurred even before the result was sent out.<wbr/> If an
3220 application is switching between automatic and manual control and wishes to eliminate
3221 any flicker during the switch,<wbr/> the following procedure is recommended:</p>
3223 <li>Starting in auto-AWB mode:</li>
3225 <li>Wait for the first result to be output that has the AWB locked</li>
3226 <li>Copy AWB settings from that result into a request,<wbr/> set the request to manual AWB</li>
3227 <li>Submit the capture request,<wbr/> proceed to run manual AWB as desired.<wbr/></li>
3229 <p>Note that AWB lock is only meaningful when
3230 <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is in the AUTO mode; in other modes,<wbr/>
3231 AWB is already fixed to a specific setting.<wbr/></p>
3232 <p>Some LEGACY devices may not support ON; the value is then overridden to OFF.<wbr/></p>
3237 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3238 <!-- end of entry -->
3241 <tr class="entry" id="controls_android.control.awbMode">
3242 <td class="entry_name
3244 android.<wbr/>control.<wbr/>awb<wbr/>Mode
3246 <td class="entry_type">
3247 <span class="entry_type_name entry_type_name_enum">byte</span>
3249 <span class="entry_type_visibility"> [public]</span>
3252 <span class="entry_type_hwlevel">[legacy] </span>
3256 <ul class="entry_type_enum">
3258 <span class="entry_type_enum_name">OFF</span>
3259 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled.<wbr/></p>
3260 <p>The application-selected color transform matrix
3261 (<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>) and gains
3262 (<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a>) are used by the camera
3263 device for manual white balance control.<wbr/></p></span>
3266 <span class="entry_type_enum_name">AUTO</span>
3267 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is active.<wbr/></p>
3268 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3269 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3270 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3271 values used by the camera device for the transform and gains
3272 will be available in the capture result for this request.<wbr/></p></span>
3275 <span class="entry_type_enum_name">INCANDESCENT</span>
3276 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3277 the camera device uses incandescent light as the assumed scene
3278 illumination for white balance.<wbr/></p>
3279 <p>While the exact white balance transforms are up to the
3280 camera device,<wbr/> they will approximately match the CIE
3281 standard illuminant A.<wbr/></p>
3282 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3283 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3284 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3285 values used by the camera device for the transform and gains
3286 will be available in the capture result for this request.<wbr/></p></span>
3289 <span class="entry_type_enum_name">FLUORESCENT</span>
3290 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3291 the camera device uses fluorescent light as the assumed scene
3292 illumination for white balance.<wbr/></p>
3293 <p>While the exact white balance transforms are up to the
3294 camera device,<wbr/> they will approximately match the CIE
3295 standard illuminant F2.<wbr/></p>
3296 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3297 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3298 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3299 values used by the camera device for the transform and gains
3300 will be available in the capture result for this request.<wbr/></p></span>
3303 <span class="entry_type_enum_name">WARM_FLUORESCENT</span>
3304 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3305 the camera device uses warm fluorescent light as the assumed scene
3306 illumination for white balance.<wbr/></p>
3307 <p>While the exact white balance transforms are up to the
3308 camera device,<wbr/> they will approximately match the CIE
3309 standard illuminant F4.<wbr/></p>
3310 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3311 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3312 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3313 values used by the camera device for the transform and gains
3314 will be available in the capture result for this request.<wbr/></p></span>
3317 <span class="entry_type_enum_name">DAYLIGHT</span>
3318 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3319 the camera device uses daylight light as the assumed scene
3320 illumination for white balance.<wbr/></p>
3321 <p>While the exact white balance transforms are up to the
3322 camera device,<wbr/> they will approximately match the CIE
3323 standard illuminant D65.<wbr/></p>
3324 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3325 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3326 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3327 values used by the camera device for the transform and gains
3328 will be available in the capture result for this request.<wbr/></p></span>
3331 <span class="entry_type_enum_name">CLOUDY_DAYLIGHT</span>
3332 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3333 the camera device uses cloudy daylight light as the assumed scene
3334 illumination for white balance.<wbr/></p>
3335 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3336 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3337 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3338 values used by the camera device for the transform and gains
3339 will be available in the capture result for this request.<wbr/></p></span>
3342 <span class="entry_type_enum_name">TWILIGHT</span>
3343 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3344 the camera device uses twilight light as the assumed scene
3345 illumination for white balance.<wbr/></p>
3346 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3347 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3348 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3349 values used by the camera device for the transform and gains
3350 will be available in the capture result for this request.<wbr/></p></span>
3353 <span class="entry_type_enum_name">SHADE</span>
3354 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3355 the camera device uses shade light as the assumed scene
3356 illumination for white balance.<wbr/></p>
3357 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3358 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3359 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3360 values used by the camera device for the transform and gains
3361 will be available in the capture result for this request.<wbr/></p></span>
3365 </td> <!-- entry_type -->
3367 <td class="entry_description">
3368 <p>Whether auto-white balance (AWB) is currently setting the color
3369 transform fields,<wbr/> and what its illumination target
3373 <td class="entry_units">
3376 <td class="entry_range">
3377 <p><a href="#static_android.control.awbAvailableModes">android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes</a></p>
3380 <td class="entry_hal_version">
3384 <td class="entry_tags">
3385 <ul class="entry_tags">
3386 <li><a href="#tag_BC">BC</a></li>
3391 <tr class="entries_header">
3392 <th class="th_details" colspan="6">Details</th>
3394 <tr class="entry_cont">
3395 <td class="entry_details" colspan="6">
3396 <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is AUTO.<wbr/></p>
3397 <p>When set to the ON mode,<wbr/> the camera device's auto-white balance
3398 routine is enabled,<wbr/> overriding the application's selected
3399 <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
3400 <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>
3401 is OFF,<wbr/> the behavior of AWB is device dependent.<wbr/> It is recommened to
3402 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
3403 setting AE mode to OFF.<wbr/></p>
3404 <p>When set to the OFF mode,<wbr/> the camera device's auto-white balance
3405 routine is disabled.<wbr/> The application manually controls the white
3406 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>
3407 and <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/></p>
3408 <p>When set to any other modes,<wbr/> the camera device's auto-white
3409 balance routine is disabled.<wbr/> The camera device uses each
3410 particular illumination target for white balance
3411 adjustment.<wbr/> The application's values for
3412 <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>,<wbr/>
3413 <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
3414 <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> are ignored.<wbr/></p>
3419 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3420 <!-- end of entry -->
3423 <tr class="entry" id="controls_android.control.awbRegions">
3424 <td class="entry_name
3426 android.<wbr/>control.<wbr/>awb<wbr/>Regions
3428 <td class="entry_type">
3429 <span class="entry_type_name">int32</span>
3430 <span class="entry_type_container">x</span>
3432 <span class="entry_type_array">
3435 <span class="entry_type_visibility"> [public as meteringRectangle]</span>
3442 </td> <!-- entry_type -->
3444 <td class="entry_description">
3445 <p>List of metering areas to use for auto-white-balance illuminant
3446 estimation.<wbr/></p>
3449 <td class="entry_units">
3450 Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
3453 <td class="entry_range">
3454 <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
3455 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
3458 <td class="entry_hal_version">
3462 <td class="entry_tags">
3463 <ul class="entry_tags">
3464 <li><a href="#tag_BC">BC</a></li>
3469 <tr class="entries_header">
3470 <th class="th_details" colspan="6">Details</th>
3472 <tr class="entry_cont">
3473 <td class="entry_details" colspan="6">
3474 <p>Not available if <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a> is 0.<wbr/>
3475 Otherwise will always be present.<wbr/></p>
3476 <p>The maximum number of regions supported by the device is determined by the value
3477 of <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a>.<wbr/></p>
3478 <p>The coordinate system is based on the active pixel array,<wbr/>
3479 with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
3480 (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
3481 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
3482 bottom-right pixel in the active pixel array.<wbr/></p>
3483 <p>The weight must range from 0 to 1000,<wbr/> and represents a weight
3484 for every pixel in the area.<wbr/> This means that a large metering area
3485 with the same weight as a smaller area will have more effect in
3486 the metering result.<wbr/> Metering areas can partially overlap and the
3487 camera device will add the weights in the overlap region.<wbr/></p>
3488 <p>The weights are relative to weights of other white balance metering regions,<wbr/> so if
3489 only one region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with
3490 0 weight is ignored.<wbr/></p>
3491 <p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
3492 camera device.<wbr/></p>
3493 <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
3494 capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
3495 region and output only the intersection rectangle as the metering region in the result
3496 metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and
3497 not reported in the result metadata.<wbr/></p>
3501 <tr class="entries_header">
3502 <th class="th_details" colspan="6">HAL Implementation Details</th>
3504 <tr class="entry_cont">
3505 <td class="entry_details" colspan="6">
3506 <p>The HAL level representation of MeteringRectangle[] is a
3507 int[5 * area_<wbr/>count].<wbr/>
3508 Every five elements represent a metering region of
3509 (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
3510 The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
3511 exclusive on xmax and ymax.<wbr/></p>
3515 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3516 <!-- end of entry -->
3519 <tr class="entry" id="controls_android.control.captureIntent">
3520 <td class="entry_name
3522 android.<wbr/>control.<wbr/>capture<wbr/>Intent
3524 <td class="entry_type">
3525 <span class="entry_type_name entry_type_name_enum">byte</span>
3527 <span class="entry_type_visibility"> [public]</span>
3530 <span class="entry_type_hwlevel">[legacy] </span>
3534 <ul class="entry_type_enum">
3536 <span class="entry_type_enum_name">CUSTOM</span>
3537 <span class="entry_type_enum_notes"><p>The goal of this request doesn't fall into the other
3538 categories.<wbr/> The camera device will default to preview-like
3539 behavior.<wbr/></p></span>
3542 <span class="entry_type_enum_name">PREVIEW</span>
3543 <span class="entry_type_enum_notes"><p>This request is for a preview-like use case.<wbr/></p>
3544 <p>The precapture trigger may be used to start off a metering
3545 w/<wbr/>flash sequence.<wbr/></p></span>
3548 <span class="entry_type_enum_name">STILL_CAPTURE</span>
3549 <span class="entry_type_enum_notes"><p>This request is for a still capture-type
3551 <p>If the flash unit is under automatic control,<wbr/> it may fire as needed.<wbr/></p></span>
3554 <span class="entry_type_enum_name">VIDEO_RECORD</span>
3555 <span class="entry_type_enum_notes"><p>This request is for a video recording
3556 use case.<wbr/></p></span>
3559 <span class="entry_type_enum_name">VIDEO_SNAPSHOT</span>
3560 <span class="entry_type_enum_notes"><p>This request is for a video snapshot (still
3561 image while recording video) use case.<wbr/></p>
3562 <p>The camera device should take the highest-quality image
3563 possible (given the other settings) without disrupting the
3564 frame rate of video recording.<wbr/> </p></span>
3567 <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span>
3568 <span class="entry_type_enum_notes"><p>This request is for a ZSL usecase; the
3569 application will stream full-resolution images and
3570 reprocess one or several later for a final
3571 capture.<wbr/></p></span>
3574 <span class="entry_type_enum_name">MANUAL</span>
3575 <span class="entry_type_enum_notes"><p>This request is for manual capture use case where
3576 the applications want to directly control the capture parameters.<wbr/></p>
3577 <p>For example,<wbr/> the application may wish to manually control
3578 <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>
3582 </td> <!-- entry_type -->
3584 <td class="entry_description">
3585 <p>Information to the camera device 3A (auto-exposure,<wbr/>
3586 auto-focus,<wbr/> auto-white balance) routines about the purpose
3587 of this capture,<wbr/> to help the camera device to decide optimal 3A
3591 <td class="entry_units">
3594 <td class="entry_range">
3597 <td class="entry_hal_version">
3601 <td class="entry_tags">
3602 <ul class="entry_tags">
3603 <li><a href="#tag_BC">BC</a></li>
3608 <tr class="entries_header">
3609 <th class="th_details" colspan="6">Details</th>
3611 <tr class="entry_cont">
3612 <td class="entry_details" colspan="6">
3613 <p>This control (except for MANUAL) is only effective if
3614 <code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF</code> and any 3A routine is active.<wbr/></p>
3615 <p>ZERO_<wbr/>SHUTTER_<wbr/>LAG will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>
3616 contains PRIVATE_<wbr/>REPROCESSING or YUV_<wbr/>REPROCESSING.<wbr/> MANUAL will be supported if
3617 <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains MANUAL_<wbr/>SENSOR.<wbr/> Other intent values are
3618 always supported.<wbr/></p>
3623 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3624 <!-- end of entry -->
3627 <tr class="entry" id="controls_android.control.effectMode">
3628 <td class="entry_name
3630 android.<wbr/>control.<wbr/>effect<wbr/>Mode
3632 <td class="entry_type">
3633 <span class="entry_type_name entry_type_name_enum">byte</span>
3635 <span class="entry_type_visibility"> [public]</span>
3638 <span class="entry_type_hwlevel">[legacy] </span>
3642 <ul class="entry_type_enum">
3644 <span class="entry_type_enum_name">OFF</span>
3645 <span class="entry_type_enum_notes"><p>No color effect will be applied.<wbr/></p></span>
3648 <span class="entry_type_enum_name">MONO</span>
3649 <span class="entry_type_enum_optional">[optional]</span>
3650 <span class="entry_type_enum_notes"><p>A "monocolor" effect where the image is mapped into
3651 a single color.<wbr/></p>
3652 <p>This will typically be grayscale.<wbr/></p></span>
3655 <span class="entry_type_enum_name">NEGATIVE</span>
3656 <span class="entry_type_enum_optional">[optional]</span>
3657 <span class="entry_type_enum_notes"><p>A "photo-negative" effect where the image's colors
3658 are inverted.<wbr/></p></span>
3661 <span class="entry_type_enum_name">SOLARIZE</span>
3662 <span class="entry_type_enum_optional">[optional]</span>
3663 <span class="entry_type_enum_notes"><p>A "solarisation" effect (Sabattier effect) where the
3664 image is wholly or partially reversed in
3665 tone.<wbr/></p></span>
3668 <span class="entry_type_enum_name">SEPIA</span>
3669 <span class="entry_type_enum_optional">[optional]</span>
3670 <span class="entry_type_enum_notes"><p>A "sepia" effect where the image is mapped into warm
3671 gray,<wbr/> red,<wbr/> and brown tones.<wbr/></p></span>
3674 <span class="entry_type_enum_name">POSTERIZE</span>
3675 <span class="entry_type_enum_optional">[optional]</span>
3676 <span class="entry_type_enum_notes"><p>A "posterization" effect where the image uses
3677 discrete regions of tone rather than a continuous
3678 gradient of tones.<wbr/></p></span>
3681 <span class="entry_type_enum_name">WHITEBOARD</span>
3682 <span class="entry_type_enum_optional">[optional]</span>
3683 <span class="entry_type_enum_notes"><p>A "whiteboard" effect where the image is typically displayed
3684 as regions of white,<wbr/> with black or grey details.<wbr/></p></span>
3687 <span class="entry_type_enum_name">BLACKBOARD</span>
3688 <span class="entry_type_enum_optional">[optional]</span>
3689 <span class="entry_type_enum_notes"><p>A "blackboard" effect where the image is typically displayed
3690 as regions of black,<wbr/> with white or grey details.<wbr/></p></span>
3693 <span class="entry_type_enum_name">AQUA</span>
3694 <span class="entry_type_enum_optional">[optional]</span>
3695 <span class="entry_type_enum_notes"><p>An "aqua" effect where a blue hue is added to the image.<wbr/></p></span>
3699 </td> <!-- entry_type -->
3701 <td class="entry_description">
3702 <p>A special color effect to apply.<wbr/></p>
3705 <td class="entry_units">
3708 <td class="entry_range">
3709 <p><a href="#static_android.control.availableEffects">android.<wbr/>control.<wbr/>available<wbr/>Effects</a></p>
3712 <td class="entry_hal_version">
3716 <td class="entry_tags">
3717 <ul class="entry_tags">
3718 <li><a href="#tag_BC">BC</a></li>
3723 <tr class="entries_header">
3724 <th class="th_details" colspan="6">Details</th>
3726 <tr class="entry_cont">
3727 <td class="entry_details" colspan="6">
3728 <p>When this mode is set,<wbr/> a color effect will be applied
3729 to images produced by the camera device.<wbr/> The interpretation
3730 and implementation of these color effects is left to the
3731 implementor of the camera device,<wbr/> and should not be
3732 depended on to be consistent (or present) across all
3738 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3739 <!-- end of entry -->
3742 <tr class="entry" id="controls_android.control.mode">
3743 <td class="entry_name
3745 android.<wbr/>control.<wbr/>mode
3747 <td class="entry_type">
3748 <span class="entry_type_name entry_type_name_enum">byte</span>
3750 <span class="entry_type_visibility"> [public]</span>
3753 <span class="entry_type_hwlevel">[legacy] </span>
3757 <ul class="entry_type_enum">
3759 <span class="entry_type_enum_name">OFF</span>
3760 <span class="entry_type_enum_notes"><p>Full application control of pipeline.<wbr/></p>
3761 <p>All control by the device's metering and focusing (3A)
3762 routines is disabled,<wbr/> and no other settings in
3763 android.<wbr/>control.<wbr/>* have any effect,<wbr/> except that
3764 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> may be used by the camera
3765 device to select post-processing values for processing
3766 blocks that do not allow for manual control,<wbr/> or are not
3767 exposed by the camera API.<wbr/></p>
3768 <p>However,<wbr/> the camera device's 3A routines may continue to
3769 collect statistics and update their internal state so that
3770 when control is switched to AUTO mode,<wbr/> good control values
3771 can be immediately applied.<wbr/></p></span>
3774 <span class="entry_type_enum_name">AUTO</span>
3775 <span class="entry_type_enum_notes"><p>Use settings for each individual 3A routine.<wbr/></p>
3776 <p>Manual control of capture parameters is disabled.<wbr/> All
3777 controls in android.<wbr/>control.<wbr/>* besides sceneMode take
3778 effect.<wbr/></p></span>
3781 <span class="entry_type_enum_name">USE_SCENE_MODE</span>
3782 <span class="entry_type_enum_optional">[optional]</span>
3783 <span class="entry_type_enum_notes"><p>Use a specific scene mode.<wbr/></p>
3784 <p>Enabling this disables control.<wbr/>aeMode,<wbr/> control.<wbr/>awbMode and
3785 control.<wbr/>afMode controls; the camera device will ignore
3786 those settings while USE_<wbr/>SCENE_<wbr/>MODE is active (except for
3787 FACE_<wbr/>PRIORITY scene mode).<wbr/> Other control entries are still active.<wbr/>
3788 This setting can only be used if scene mode is supported (i.<wbr/>e.<wbr/>
3789 <a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a>
3790 contain some modes other than DISABLED).<wbr/></p></span>
3793 <span class="entry_type_enum_name">OFF_KEEP_STATE</span>
3794 <span class="entry_type_enum_optional">[optional]</span>
3795 <span class="entry_type_enum_notes"><p>Same as OFF mode,<wbr/> except that this capture will not be
3796 used by camera device background auto-exposure,<wbr/> auto-white balance and
3797 auto-focus algorithms (3A) to update their statistics.<wbr/></p>
3798 <p>Specifically,<wbr/> the 3A routines are locked to the last
3799 values set from a request with AUTO,<wbr/> OFF,<wbr/> or
3800 USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> and any statistics or state updates
3801 collected from manual captures with OFF_<wbr/>KEEP_<wbr/>STATE will be
3802 discarded by the camera device.<wbr/></p></span>
3806 </td> <!-- entry_type -->
3808 <td class="entry_description">
3809 <p>Overall mode of 3A (auto-exposure,<wbr/> auto-white-balance,<wbr/> auto-focus) control
3813 <td class="entry_units">
3816 <td class="entry_range">
3817 <p><a href="#static_android.control.availableModes">android.<wbr/>control.<wbr/>available<wbr/>Modes</a></p>
3820 <td class="entry_hal_version">
3824 <td class="entry_tags">
3825 <ul class="entry_tags">
3826 <li><a href="#tag_BC">BC</a></li>
3831 <tr class="entries_header">
3832 <th class="th_details" colspan="6">Details</th>
3834 <tr class="entry_cont">
3835 <td class="entry_details" colspan="6">
3836 <p>This is a top-level 3A control switch.<wbr/> When set to OFF,<wbr/> all 3A control
3837 by the camera device is disabled.<wbr/> The application must set the fields for
3838 capture parameters itself.<wbr/></p>
3839 <p>When set to AUTO,<wbr/> the individual algorithm controls in
3840 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>
3841 <p>When set to USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> the individual controls in
3842 android.<wbr/>control.<wbr/>* are mostly disabled,<wbr/> and the camera device
3843 implements one of the scene mode settings (such as ACTION,<wbr/>
3844 SUNSET,<wbr/> or PARTY) as it wishes.<wbr/> The camera device scene mode
3845 3A settings are provided by <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">capture results</a>.<wbr/></p>
3846 <p>When set to OFF_<wbr/>KEEP_<wbr/>STATE,<wbr/> it is similar to OFF mode,<wbr/> the only difference
3847 is that this frame will not be used by camera device background 3A statistics
3848 update,<wbr/> as if this frame is never captured.<wbr/> This mode can be used in the scenario
3849 where the application doesn't want a 3A manual control capture to affect
3850 the subsequent auto 3A capture results.<wbr/></p>
3855 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3856 <!-- end of entry -->
3859 <tr class="entry" id="controls_android.control.sceneMode">
3860 <td class="entry_name
3862 android.<wbr/>control.<wbr/>scene<wbr/>Mode
3864 <td class="entry_type">
3865 <span class="entry_type_name entry_type_name_enum">byte</span>
3867 <span class="entry_type_visibility"> [public]</span>
3870 <span class="entry_type_hwlevel">[legacy] </span>
3874 <ul class="entry_type_enum">
3876 <span class="entry_type_enum_name">DISABLED</span>
3877 <span class="entry_type_enum_value">0</span>
3878 <span class="entry_type_enum_notes"><p>Indicates that no scene modes are set for a given capture request.<wbr/></p></span>
3881 <span class="entry_type_enum_name">FACE_PRIORITY</span>
3882 <span class="entry_type_enum_notes"><p>If face detection support exists,<wbr/> use face
3883 detection data for auto-focus,<wbr/> auto-white balance,<wbr/> and
3884 auto-exposure routines.<wbr/></p>
3885 <p>If face detection statistics are disabled
3886 (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/>
3887 this should still operate correctly (but will not return
3888 face detection statistics to the framework).<wbr/></p>
3889 <p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
3890 <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>
3891 remain active when FACE_<wbr/>PRIORITY is set.<wbr/></p></span>
3894 <span class="entry_type_enum_name">ACTION</span>
3895 <span class="entry_type_enum_optional">[optional]</span>
3896 <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving objects.<wbr/></p>
3897 <p>Similar to SPORTS.<wbr/></p></span>
3900 <span class="entry_type_enum_name">PORTRAIT</span>
3901 <span class="entry_type_enum_optional">[optional]</span>
3902 <span class="entry_type_enum_notes"><p>Optimized for still photos of people.<wbr/></p></span>
3905 <span class="entry_type_enum_name">LANDSCAPE</span>
3906 <span class="entry_type_enum_optional">[optional]</span>
3907 <span class="entry_type_enum_notes"><p>Optimized for photos of distant macroscopic objects.<wbr/></p></span>
3910 <span class="entry_type_enum_name">NIGHT</span>
3911 <span class="entry_type_enum_optional">[optional]</span>
3912 <span class="entry_type_enum_notes"><p>Optimized for low-light settings.<wbr/></p></span>
3915 <span class="entry_type_enum_name">NIGHT_PORTRAIT</span>
3916 <span class="entry_type_enum_optional">[optional]</span>
3917 <span class="entry_type_enum_notes"><p>Optimized for still photos of people in low-light
3918 settings.<wbr/></p></span>
3921 <span class="entry_type_enum_name">THEATRE</span>
3922 <span class="entry_type_enum_optional">[optional]</span>
3923 <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings where flash must
3924 remain off.<wbr/></p></span>
3927 <span class="entry_type_enum_name">BEACH</span>
3928 <span class="entry_type_enum_optional">[optional]</span>
3929 <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor beach settings.<wbr/></p></span>
3932 <span class="entry_type_enum_name">SNOW</span>
3933 <span class="entry_type_enum_optional">[optional]</span>
3934 <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor settings containing snow.<wbr/></p></span>
3937 <span class="entry_type_enum_name">SUNSET</span>
3938 <span class="entry_type_enum_optional">[optional]</span>
3939 <span class="entry_type_enum_notes"><p>Optimized for scenes of the setting sun.<wbr/></p></span>
3942 <span class="entry_type_enum_name">STEADYPHOTO</span>
3943 <span class="entry_type_enum_optional">[optional]</span>
3944 <span class="entry_type_enum_notes"><p>Optimized to avoid blurry photos due to small amounts of
3945 device motion (for example: due to hand shake).<wbr/></p></span>
3948 <span class="entry_type_enum_name">FIREWORKS</span>
3949 <span class="entry_type_enum_optional">[optional]</span>
3950 <span class="entry_type_enum_notes"><p>Optimized for nighttime photos of fireworks.<wbr/></p></span>
3953 <span class="entry_type_enum_name">SPORTS</span>
3954 <span class="entry_type_enum_optional">[optional]</span>
3955 <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving people.<wbr/></p>
3956 <p>Similar to ACTION.<wbr/></p></span>
3959 <span class="entry_type_enum_name">PARTY</span>
3960 <span class="entry_type_enum_optional">[optional]</span>
3961 <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings with multiple moving
3962 people.<wbr/></p></span>
3965 <span class="entry_type_enum_name">CANDLELIGHT</span>
3966 <span class="entry_type_enum_optional">[optional]</span>
3967 <span class="entry_type_enum_notes"><p>Optimized for dim settings where the main light source
3968 is a flame.<wbr/></p></span>
3971 <span class="entry_type_enum_name">BARCODE</span>
3972 <span class="entry_type_enum_optional">[optional]</span>
3973 <span class="entry_type_enum_notes"><p>Optimized for accurately capturing a photo of barcode
3974 for use by camera applications that wish to read the
3975 barcode value.<wbr/></p></span>
3978 <span class="entry_type_enum_name">HIGH_SPEED_VIDEO</span>
3979 <span class="entry_type_enum_deprecated">[deprecated]</span>
3980 <span class="entry_type_enum_optional">[optional]</span>
3981 <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>
3982 and <a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a>
3983 for high speed video recording.<wbr/></p>
3984 <p>Optimized for high speed video recording (frame rate >=60fps) use case.<wbr/></p>
3985 <p>The supported high speed video sizes and fps ranges are specified in
3986 <a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/> To get desired
3987 output frame rates,<wbr/> the application is only allowed to select video size
3988 and fps range combinations listed in this static metadata.<wbr/> The fps range
3989 can be control via <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a>.<wbr/></p>
3990 <p>In this mode,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to
3991 ON,<wbr/> ON,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode
3992 controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture
3993 and post-processing parameters is possible.<wbr/> All other controls operate the
3994 same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other
3995 android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p>
3997 <li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li>
3998 <li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li>
3999 <li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li>
4000 <li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li>
4001 <li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li>
4002 <li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li>
4003 <li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li>
4004 <li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li>
4005 <li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li>
4006 <li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li>
4008 <p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p>
4010 <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>
4011 <li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li>
4012 <li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li>
4013 <li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></li>
4015 <p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may
4016 be lower than what camera can output,<wbr/> depending on the destination Surfaces for
4017 the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/>
4018 the application need check if the video encoder is capable of supporting the
4019 high frame rate for a given video size,<wbr/> or it will end up with lower recording
4020 frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the preview frame
4021 rate will be bounded by the screen refresh rate.<wbr/></p>
4022 <p>The camera device will only support up to 2 output high speed streams
4023 (processed non-stalling format defined in <a href="#static_android.request.maxNumOutputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams</a>)
4024 in this mode.<wbr/> This control will be effective only if all of below conditions are true:</p>
4026 <li>The application created no more than maxNumHighSpeedStreams processed non-stalling
4027 format output streams,<wbr/> where maxNumHighSpeedStreams is calculated as
4028 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>
4029 <li>The stream sizes are selected from the sizes reported by
4030 <a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/></li>
4031 <li>No processed non-stalling or raw streams are configured.<wbr/></li>
4033 <p>When above conditions are NOT satistied,<wbr/> the controls of this mode and
4034 <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/>
4035 the camera device will fall back to <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> <code>==</code> AUTO,<wbr/>
4036 and the returned capture result metadata will give the fps range choosen
4037 by the camera device.<wbr/></p>
4038 <p>Switching into or out of this mode may trigger some camera ISP/<wbr/>sensor
4039 reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that
4040 the application avoids unnecessary scene mode switch as much as possible.<wbr/></p></span>
4043 <span class="entry_type_enum_name">HDR</span>
4044 <span class="entry_type_enum_optional">[optional]</span>
4045 <span class="entry_type_enum_notes"><p>Turn on a device-specific high dynamic range (HDR) mode.<wbr/></p>
4046 <p>In this scene mode,<wbr/> the camera device captures images
4047 that keep a larger range of scene illumination levels
4048 visible in the final image.<wbr/> For example,<wbr/> when taking a
4049 picture of a object in front of a bright window,<wbr/> both
4050 the object and the scene through the window may be
4051 visible when using HDR mode,<wbr/> while in normal AUTO mode,<wbr/>
4052 one or the other may be poorly exposed.<wbr/> As a tradeoff,<wbr/>
4053 HDR mode generally takes much longer to capture a single
4054 image,<wbr/> has no user control,<wbr/> and may have other artifacts
4055 depending on the HDR method used.<wbr/></p>
4056 <p>Therefore,<wbr/> HDR captures operate at a much slower rate
4057 than regular captures.<wbr/></p>
4058 <p>In this mode,<wbr/> on LIMITED or FULL devices,<wbr/> when a request
4059 is made with a <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> of
4060 STILL_<wbr/>CAPTURE,<wbr/> the camera device will capture an image
4061 using a high dynamic range capture technique.<wbr/> On LEGACY
4062 devices,<wbr/> captures that target a JPEG-format output will
4063 be captured with HDR,<wbr/> and the capture intent is not
4065 <p>The HDR capture may involve the device capturing a burst
4066 of images internally and combining them into one,<wbr/> or it
4067 may involve the device using specialized high dynamic
4068 range capture hardware.<wbr/> In all cases,<wbr/> a single image is
4069 produced in response to a capture request submitted
4070 while in HDR mode.<wbr/></p>
4071 <p>Since substantial post-processing is generally needed to
4072 produce an HDR image,<wbr/> only YUV,<wbr/> PRIVATE,<wbr/> and JPEG
4073 outputs are supported for LIMITED/<wbr/>FULL device HDR
4074 captures,<wbr/> and only JPEG outputs are supported for LEGACY
4075 HDR captures.<wbr/> Using a RAW output for HDR capture is not
4076 supported.<wbr/></p>
4077 <p>Some devices may also support always-on HDR,<wbr/> which
4078 applies HDR processing at full frame rate.<wbr/> For these
4079 devices,<wbr/> intents other than STILL_<wbr/>CAPTURE will also
4080 produce an HDR output with no frame rate impact compared
4081 to normal operation,<wbr/> though the quality may be lower
4082 than for STILL_<wbr/>CAPTURE intents.<wbr/></p>
4083 <p>If SCENE_<wbr/>MODE_<wbr/>HDR is used with unsupported output types
4084 or capture intents,<wbr/> the images captured will be as if
4085 the SCENE_<wbr/>MODE was not enabled at all.<wbr/></p></span>
4088 <span class="entry_type_enum_name">FACE_PRIORITY_LOW_LIGHT</span>
4089 <span class="entry_type_enum_optional">[optional]</span>
4090 <span class="entry_type_enum_hidden">[hidden]</span>
4091 <span class="entry_type_enum_notes"><p>Same as FACE_<wbr/>PRIORITY scene mode,<wbr/> except that the camera
4092 device will choose higher sensitivity values (<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>)
4093 under low light conditions.<wbr/></p>
4094 <p>The camera device may be tuned to expose the images in a reduced
4095 sensitivity range to produce the best quality images.<wbr/> For example,<wbr/>
4096 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/>
4097 the camera device auto-exposure routine tuning process may limit the actual
4098 exposure sensitivity range to [100,<wbr/> 1200] to ensure that the noise level isn't
4099 exessive in order to preserve the image quality.<wbr/> Under this situation,<wbr/> the image under
4100 low light may be under-exposed when the sensor max exposure time (bounded by the
4101 <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
4102 ON_<wbr/>* modes) and effective max sensitivity are reached.<wbr/> This scene mode allows the
4103 camera device auto-exposure routine to increase the sensitivity up to the max
4104 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
4105 dark and the max exposure time is reached.<wbr/> The captured images may be noisier
4106 compared with the images captured in normal FACE_<wbr/>PRIORITY mode; therefore,<wbr/> it is
4107 recommended that the application only use this scene mode when it is capable of
4108 reducing the noise level of the captured images.<wbr/></p>
4109 <p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
4110 <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>
4111 remain active when FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT is set.<wbr/></p></span>
4114 <span class="entry_type_enum_name">DEVICE_CUSTOM_START</span>
4115 <span class="entry_type_enum_optional">[optional]</span>
4116 <span class="entry_type_enum_hidden">[hidden]</span>
4117 <span class="entry_type_enum_value">100</span>
4118 <span class="entry_type_enum_notes"><p>Scene mode values within the range of
4119 <code>[DEVICE_<wbr/>CUSTOM_<wbr/>START,<wbr/> DEVICE_<wbr/>CUSTOM_<wbr/>END]</code> are reserved for device specific
4120 customized scene modes.<wbr/></p></span>
4123 <span class="entry_type_enum_name">DEVICE_CUSTOM_END</span>
4124 <span class="entry_type_enum_optional">[optional]</span>
4125 <span class="entry_type_enum_hidden">[hidden]</span>
4126 <span class="entry_type_enum_value">127</span>
4127 <span class="entry_type_enum_notes"><p>Scene mode values within the range of
4128 <code>[DEVICE_<wbr/>CUSTOM_<wbr/>START,<wbr/> DEVICE_<wbr/>CUSTOM_<wbr/>END]</code> are reserved for device specific
4129 customized scene modes.<wbr/></p></span>
4133 </td> <!-- entry_type -->
4135 <td class="entry_description">
4136 <p>Control for which scene mode is currently active.<wbr/></p>
4139 <td class="entry_units">
4142 <td class="entry_range">
4143 <p><a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a></p>
4146 <td class="entry_hal_version">
4150 <td class="entry_tags">
4151 <ul class="entry_tags">
4152 <li><a href="#tag_BC">BC</a></li>
4157 <tr class="entries_header">
4158 <th class="th_details" colspan="6">Details</th>
4160 <tr class="entry_cont">
4161 <td class="entry_details" colspan="6">
4162 <p>Scene modes are custom camera modes optimized for a certain set of conditions and
4163 capture settings.<wbr/></p>
4164 <p>This is the mode that that is active when
4165 <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
4166 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>
4167 while in use.<wbr/></p>
4168 <p>The interpretation and implementation of these scene modes is left
4169 to the implementor of the camera device.<wbr/> Their behavior will not be
4170 consistent across all devices,<wbr/> and any given device may only implement
4171 a subset of these modes.<wbr/></p>
4175 <tr class="entries_header">
4176 <th class="th_details" colspan="6">HAL Implementation Details</th>
4178 <tr class="entry_cont">
4179 <td class="entry_details" colspan="6">
4180 <p>HAL implementations that include scene modes are expected to provide
4181 the per-scene settings to use for <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
4182 <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
4183 <a href="#static_android.control.sceneModeOverrides">android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides</a>.<wbr/></p>
4184 <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
4185 HAL must list supported video size and fps range in
4186 <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/>
4187 if the HAL has two different sensor configurations for normal streaming mode and high
4188 speed streaming,<wbr/> when this scene mode is set/<wbr/>reset in a sequence of capture requests,<wbr/> the
4189 HAL may have to switch between different sensor modes.<wbr/> This mode is deprecated in legacy
4190 HAL3.<wbr/>3,<wbr/> to support high speed video recording,<wbr/> please implement
4191 <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
4192 capbility defined in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
4196 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4197 <!-- end of entry -->
4200 <tr class="entry" id="controls_android.control.videoStabilizationMode">
4201 <td class="entry_name
4203 android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode
4205 <td class="entry_type">
4206 <span class="entry_type_name entry_type_name_enum">byte</span>
4208 <span class="entry_type_visibility"> [public]</span>
4211 <span class="entry_type_hwlevel">[legacy] </span>
4215 <ul class="entry_type_enum">
4217 <span class="entry_type_enum_name">OFF</span>
4218 <span class="entry_type_enum_notes"><p>Video stabilization is disabled.<wbr/></p></span>
4221 <span class="entry_type_enum_name">ON</span>
4222 <span class="entry_type_enum_notes"><p>Video stabilization is enabled.<wbr/></p></span>
4226 </td> <!-- entry_type -->
4228 <td class="entry_description">
4229 <p>Whether video stabilization is
4233 <td class="entry_units">
4236 <td class="entry_range">
4239 <td class="entry_hal_version">
4243 <td class="entry_tags">
4244 <ul class="entry_tags">
4245 <li><a href="#tag_BC">BC</a></li>
4250 <tr class="entries_header">
4251 <th class="th_details" colspan="6">Details</th>
4253 <tr class="entry_cont">
4254 <td class="entry_details" colspan="6">
4255 <p>Video stabilization automatically warps images from
4256 the camera in order to stabilize motion between consecutive frames.<wbr/></p>
4257 <p>If enabled,<wbr/> video stabilization can modify the
4258 <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> to keep the video stream stabilized.<wbr/></p>
4259 <p>Switching between different video stabilization modes may take several
4260 frames to initialize,<wbr/> the camera device will report the current mode
4261 in capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/>
4262 the video stabilization modes in the first several capture results may
4263 still be "OFF",<wbr/> and it will become "ON" when the initialization is
4265 <p>In addition,<wbr/> not all recording sizes or frame rates may be supported for
4266 stabilization by a device that reports stabilization support.<wbr/> It is guaranteed
4267 that an output targeting a MediaRecorder or MediaCodec will be stabilized if
4268 the recording resolution is less than or equal to 1920 x 1080 (width less than
4269 or equal to 1920,<wbr/> height less than or equal to 1080),<wbr/> and the recording
4270 frame rate is less than or equal to 30fps.<wbr/> At other sizes,<wbr/> the CaptureResult
4271 <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a> field will return
4272 OFF if the recording output is not stabilized,<wbr/> or if there are no output
4273 Surface types that can be stabilized.<wbr/></p>
4274 <p>If a camera device supports both this mode and OIS
4275 (<a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may
4276 produce undesirable interaction,<wbr/> so it is recommended not to enable
4277 both at the same time.<wbr/></p>
4282 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4283 <!-- end of entry -->
4286 <tr class="entry" id="controls_android.control.postRawSensitivityBoost">
4287 <td class="entry_name
4289 android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost
4291 <td class="entry_type">
4292 <span class="entry_type_name">int32</span>
4294 <span class="entry_type_visibility"> [public]</span>
4301 </td> <!-- entry_type -->
4303 <td class="entry_description">
4304 <p>The amount of additional sensitivity boost applied to output images
4305 after RAW sensor data is captured.<wbr/></p>
4308 <td class="entry_units">
4309 ISO arithmetic units,<wbr/> the same as android.<wbr/>sensor.<wbr/>sensitivity
4312 <td class="entry_range">
4313 <p><a href="#static_android.control.postRawSensitivityBoostRange">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost<wbr/>Range</a></p>
4316 <td class="entry_hal_version">
4320 <td class="entry_tags">
4324 <tr class="entries_header">
4325 <th class="th_details" colspan="6">Details</th>
4327 <tr class="entry_cont">
4328 <td class="entry_details" colspan="6">
4329 <p>Some camera devices support additional digital sensitivity boosting in the
4330 camera processing pipeline after sensor RAW image is captured.<wbr/>
4331 Such a boost will be applied to YUV/<wbr/>JPEG format output images but will not
4332 have effect on RAW output formats like RAW_<wbr/>SENSOR,<wbr/> RAW10,<wbr/> RAW12 or RAW_<wbr/>OPAQUE.<wbr/></p>
4333 <p>This key will be <code>null</code> for devices that do not support any RAW format
4334 outputs.<wbr/> For devices that do support RAW format outputs,<wbr/> this key will always
4335 present,<wbr/> and if a device does not support post RAW sensitivity boost,<wbr/> it will
4336 list <code>100</code> in this key.<wbr/></p>
4337 <p>If the camera device cannot apply the exact boost requested,<wbr/> it will reduce the
4338 boost to the nearest supported value.<wbr/>
4339 The final boost value used will be available in the output capture result.<wbr/></p>
4340 <p>For devices that support post RAW sensitivity boost,<wbr/> the YUV/<wbr/>JPEG output images
4341 of such device will have the total sensitivity of
4342 <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>
4343 The sensitivity of RAW format images will always be <code><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></code></p>
4344 <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
4345 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
4350 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4351 <!-- end of entry -->
4354 <tr class="entry" id="controls_android.control.enableZsl">
4355 <td class="entry_name
4357 android.<wbr/>control.<wbr/>enable<wbr/>Zsl
4359 <td class="entry_type">
4360 <span class="entry_type_name entry_type_name_enum">byte</span>
4362 <span class="entry_type_visibility"> [public as boolean]</span>
4368 <ul class="entry_type_enum">
4370 <span class="entry_type_enum_name">FALSE</span>
4371 <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
4372 after previous requests.<wbr/></p></span>
4375 <span class="entry_type_enum_name">TRUE</span>
4376 <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
4377 captured before previous requests.<wbr/></p></span>
4381 </td> <!-- entry_type -->
4383 <td class="entry_description">
4384 <p>Allow camera device to enable zero-shutter-lag mode for requests with
4385 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE.<wbr/></p>
4388 <td class="entry_units">
4391 <td class="entry_range">
4394 <td class="entry_hal_version">
4398 <td class="entry_tags">
4402 <tr class="entries_header">
4403 <th class="th_details" colspan="6">Details</th>
4405 <tr class="entry_cont">
4406 <td class="entry_details" colspan="6">
4407 <p>If enableZsl is <code>true</code>,<wbr/> the camera device may enable zero-shutter-lag mode for requests with
4408 STILL_<wbr/>CAPTURE capture intent.<wbr/> The camera device may use images captured in the past to
4409 produce output images for a zero-shutter-lag request.<wbr/> The result metadata including the
4410 <a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a> reflects the source frames used to produce output images.<wbr/>
4411 Therefore,<wbr/> the contents of the output images and the result metadata may be out of order
4412 compared to previous regular requests.<wbr/> enableZsl does not affect requests with other
4413 capture intents.<wbr/></p>
4414 <p>For example,<wbr/> when requests are submitted in the following order:
4415 Request A: enableZsl is ON,<wbr/> <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> is PREVIEW
4416 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>
4417 <p>The output images for request B may have contents captured before the output images for
4418 request A,<wbr/> and the result metadata for request B may be older than the result metadata for
4419 request A.<wbr/></p>
4420 <p>Note that when enableZsl is <code>true</code>,<wbr/> it is not guaranteed to get output images captured in
4421 the past for requests with STILL_<wbr/>CAPTURE capture intent.<wbr/></p>
4422 <p>For applications targeting SDK versions O and newer,<wbr/> the value of enableZsl in
4423 TEMPLATE_<wbr/>STILL_<wbr/>CAPTURE template may be <code>true</code>.<wbr/> The value in other templates is always
4424 <code>false</code> if present.<wbr/></p>
4425 <p>For applications targeting SDK versions older than O,<wbr/> the value of enableZsl in all
4426 capture templates is always <code>false</code> if present.<wbr/></p>
4427 <p>For application-operated ZSL,<wbr/> use CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p>
4431 <tr class="entries_header">
4432 <th class="th_details" colspan="6">HAL Implementation Details</th>
4434 <tr class="entry_cont">
4435 <td class="entry_details" colspan="6">
4436 <p>It is valid for HAL to produce regular output images for requests with STILL_<wbr/>CAPTURE
4437 capture intent.<wbr/></p>
4441 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4442 <!-- end of entry -->
4446 <!-- end of kind -->
4448 <tr><td colspan="7" class="kind">static</td></tr>
4450 <thead class="entries_header">
4452 <th class="th_name">Property Name</th>
4453 <th class="th_type">Type</th>
4454 <th class="th_description">Description</th>
4455 <th class="th_units">Units</th>
4456 <th class="th_range">Range</th>
4457 <th class="th_hal_version">Initial HIDL HAL version</th>
4458 <th class="th_tags">Tags</th>
4473 <tr class="entry" id="static_android.control.aeAvailableAntibandingModes">
4474 <td class="entry_name
4476 android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes
4478 <td class="entry_type">
4479 <span class="entry_type_name">byte</span>
4480 <span class="entry_type_container">x</span>
4482 <span class="entry_type_array">
4485 <span class="entry_type_visibility"> [public as enumList]</span>
4488 <span class="entry_type_hwlevel">[legacy] </span>
4491 <div class="entry_type_notes">list of enums</div>
4494 </td> <!-- entry_type -->
4496 <td class="entry_description">
4497 <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
4498 supported by this camera device.<wbr/></p>
4501 <td class="entry_units">
4504 <td class="entry_range">
4505 <p>Any value listed in <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a></p>
4508 <td class="entry_hal_version">
4512 <td class="entry_tags">
4513 <ul class="entry_tags">
4514 <li><a href="#tag_BC">BC</a></li>
4519 <tr class="entries_header">
4520 <th class="th_details" colspan="6">Details</th>
4522 <tr class="entry_cont">
4523 <td class="entry_details" colspan="6">
4524 <p>Not all of the auto-exposure anti-banding modes may be
4525 supported by a given camera device.<wbr/> This field lists the
4526 valid anti-banding modes that the application may request
4527 for this camera device with the
4528 <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> control.<wbr/></p>
4533 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4534 <!-- end of entry -->
4537 <tr class="entry" id="static_android.control.aeAvailableModes">
4538 <td class="entry_name
4540 android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes
4542 <td class="entry_type">
4543 <span class="entry_type_name">byte</span>
4544 <span class="entry_type_container">x</span>
4546 <span class="entry_type_array">
4549 <span class="entry_type_visibility"> [public as enumList]</span>
4552 <span class="entry_type_hwlevel">[legacy] </span>
4555 <div class="entry_type_notes">list of enums</div>
4558 </td> <!-- entry_type -->
4560 <td class="entry_description">
4561 <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
4565 <td class="entry_units">
4568 <td class="entry_range">
4569 <p>Any value listed in <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a></p>
4572 <td class="entry_hal_version">
4576 <td class="entry_tags">
4577 <ul class="entry_tags">
4578 <li><a href="#tag_BC">BC</a></li>
4583 <tr class="entries_header">
4584 <th class="th_details" colspan="6">Details</th>
4586 <tr class="entry_cont">
4587 <td class="entry_details" colspan="6">
4588 <p>Not all the auto-exposure modes may be supported by a
4589 given camera device,<wbr/> especially if no flash unit is
4590 available.<wbr/> This entry lists the valid modes for
4591 <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> for this camera device.<wbr/></p>
4592 <p>All camera devices support ON,<wbr/> and all camera devices with flash
4593 units support ON_<wbr/>AUTO_<wbr/>FLASH and ON_<wbr/>ALWAYS_<wbr/>FLASH.<wbr/></p>
4594 <p>FULL mode camera devices always support OFF mode,<wbr/>
4595 which enables application control of camera exposure time,<wbr/>
4596 sensitivity,<wbr/> and frame duration.<wbr/></p>
4597 <p>LEGACY mode camera devices never support OFF mode.<wbr/>
4598 LIMITED mode devices support OFF if they support the MANUAL_<wbr/>SENSOR
4599 capability.<wbr/></p>
4604 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4605 <!-- end of entry -->
4608 <tr class="entry" id="static_android.control.aeAvailableTargetFpsRanges">
4609 <td class="entry_name
4611 android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Target<wbr/>Fps<wbr/>Ranges
4613 <td class="entry_type">
4614 <span class="entry_type_name">int32</span>
4615 <span class="entry_type_container">x</span>
4617 <span class="entry_type_array">
4620 <span class="entry_type_visibility"> [public as rangeInt]</span>
4623 <span class="entry_type_hwlevel">[legacy] </span>
4626 <div class="entry_type_notes">list of pairs of frame rates</div>
4629 </td> <!-- entry_type -->
4631 <td class="entry_description">
4632 <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
4633 this camera device.<wbr/></p>
4636 <td class="entry_units">
4637 Frames per second (FPS)
4640 <td class="entry_range">
4643 <td class="entry_hal_version">
4647 <td class="entry_tags">
4648 <ul class="entry_tags">
4649 <li><a href="#tag_BC">BC</a></li>
4654 <tr class="entries_header">
4655 <th class="th_details" colspan="6">Details</th>
4657 <tr class="entry_cont">
4658 <td class="entry_details" colspan="6">
4659 <p>For devices at the LEGACY level or above:</p>
4662 <p>For constant-framerate recording,<wbr/> for each normal
4663 <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a>,<wbr/> that is,<wbr/> a
4664 <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a> that has
4665 <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#quality">quality</a> in
4666 the range [<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#QUALITY_LOW">QUALITY_<wbr/>LOW</a>,<wbr/>
4667 <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#QUALITY_2160P">QUALITY_<wbr/>2160P</a>],<wbr/> if the profile is
4668 supported by the device and has
4669 <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#videoFrameRate">videoFrameRate</a> <code>x</code>,<wbr/> this list will
4670 always include (<code>x</code>,<wbr/><code>x</code>).<wbr/></p>
4673 <p>Also,<wbr/> a camera device must either not support any
4674 <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a>,<wbr/>
4675 or support at least one
4676 normal <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a> that has
4677 <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#videoFrameRate">videoFrameRate</a> <code>x</code> >= 24.<wbr/></p>
4680 <p>For devices at the LIMITED level or above:</p>
4682 <li>For YUV_<wbr/>420_<wbr/>888 burst capture use case,<wbr/> this list will always include (<code>min</code>,<wbr/> <code>max</code>)
4683 and (<code>max</code>,<wbr/> <code>max</code>) where <code>min</code> <= 15 and <code>max</code> = the maximum output frame rate of the
4684 maximum YUV_<wbr/>420_<wbr/>888 output size.<wbr/></li>
4690 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4691 <!-- end of entry -->
4694 <tr class="entry" id="static_android.control.aeCompensationRange">
4695 <td class="entry_name
4697 android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range
4699 <td class="entry_type">
4700 <span class="entry_type_name">int32</span>
4701 <span class="entry_type_container">x</span>
4703 <span class="entry_type_array">
4706 <span class="entry_type_visibility"> [public as rangeInt]</span>
4709 <span class="entry_type_hwlevel">[legacy] </span>
4714 </td> <!-- entry_type -->
4716 <td class="entry_description">
4717 <p>Maximum and minimum exposure compensation values for
4718 <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/>
4719 that are supported by this camera device.<wbr/></p>
4722 <td class="entry_units">
4725 <td class="entry_range">
4726 <p>Range [0,<wbr/>0] indicates that exposure compensation is not supported.<wbr/></p>
4727 <p>For LIMITED and FULL devices,<wbr/> range must follow below requirements if exposure
4728 compensation is supported (<code>range != [0,<wbr/> 0]</code>):</p>
4729 <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>
4730 <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>
4731 <p>LEGACY devices may support a smaller range than this.<wbr/></p>
4734 <td class="entry_hal_version">
4738 <td class="entry_tags">
4739 <ul class="entry_tags">
4740 <li><a href="#tag_BC">BC</a></li>
4747 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4748 <!-- end of entry -->
4751 <tr class="entry" id="static_android.control.aeCompensationStep">
4752 <td class="entry_name
4754 android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step
4756 <td class="entry_type">
4757 <span class="entry_type_name">rational</span>
4759 <span class="entry_type_visibility"> [public]</span>
4762 <span class="entry_type_hwlevel">[legacy] </span>
4767 </td> <!-- entry_type -->
4769 <td class="entry_description">
4770 <p>Smallest step by which the exposure compensation
4771 can be changed.<wbr/></p>
4774 <td class="entry_units">
4778 <td class="entry_range">
4781 <td class="entry_hal_version">
4785 <td class="entry_tags">
4786 <ul class="entry_tags">
4787 <li><a href="#tag_BC">BC</a></li>
4792 <tr class="entries_header">
4793 <th class="th_details" colspan="6">Details</th>
4795 <tr class="entry_cont">
4796 <td class="entry_details" colspan="6">
4797 <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
4798 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
4799 that the target EV offset for the auto-exposure routine is -1 EV.<wbr/></p>
4800 <p>One unit of EV compensation changes the brightness of the captured image by a factor
4801 of two.<wbr/> +1 EV doubles the image brightness,<wbr/> while -1 EV halves the image brightness.<wbr/></p>
4805 <tr class="entries_header">
4806 <th class="th_details" colspan="6">HAL Implementation Details</th>
4808 <tr class="entry_cont">
4809 <td class="entry_details" colspan="6">
4810 <p>This must be less than or equal to 1/<wbr/>2.<wbr/></p>
4814 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4815 <!-- end of entry -->
4818 <tr class="entry" id="static_android.control.afAvailableModes">
4819 <td class="entry_name
4821 android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes
4823 <td class="entry_type">
4824 <span class="entry_type_name">byte</span>
4825 <span class="entry_type_container">x</span>
4827 <span class="entry_type_array">
4830 <span class="entry_type_visibility"> [public as enumList]</span>
4833 <span class="entry_type_hwlevel">[legacy] </span>
4836 <div class="entry_type_notes">List of enums</div>
4839 </td> <!-- entry_type -->
4841 <td class="entry_description">
4842 <p>List of auto-focus (AF) modes for <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> that are
4843 supported by this camera device.<wbr/></p>
4846 <td class="entry_units">
4849 <td class="entry_range">
4850 <p>Any value listed in <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a></p>
4853 <td class="entry_hal_version">
4857 <td class="entry_tags">
4858 <ul class="entry_tags">
4859 <li><a href="#tag_BC">BC</a></li>
4864 <tr class="entries_header">
4865 <th class="th_details" colspan="6">Details</th>
4867 <tr class="entry_cont">
4868 <td class="entry_details" colspan="6">
4869 <p>Not all the auto-focus modes may be supported by a
4870 given camera device.<wbr/> This entry lists the valid modes for
4871 <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> for this camera device.<wbr/></p>
4872 <p>All LIMITED and FULL mode camera devices will support OFF mode,<wbr/> and all
4873 camera devices with adjustable focuser units
4874 (<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>
4875 <p>LEGACY devices will support OFF mode only if they support
4876 focusing to infinity (by also setting <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> to
4877 <code>0.<wbr/>0f</code>).<wbr/></p>
4882 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4883 <!-- end of entry -->
4886 <tr class="entry" id="static_android.control.availableEffects">
4887 <td class="entry_name
4889 android.<wbr/>control.<wbr/>available<wbr/>Effects
4891 <td class="entry_type">
4892 <span class="entry_type_name">byte</span>
4893 <span class="entry_type_container">x</span>
4895 <span class="entry_type_array">
4898 <span class="entry_type_visibility"> [public as enumList]</span>
4901 <span class="entry_type_hwlevel">[legacy] </span>
4904 <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>effect<wbr/>Mode).<wbr/></div>
4907 </td> <!-- entry_type -->
4909 <td class="entry_description">
4910 <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
4914 <td class="entry_units">
4917 <td class="entry_range">
4918 <p>Any value listed in <a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></p>
4921 <td class="entry_hal_version">
4925 <td class="entry_tags">
4926 <ul class="entry_tags">
4927 <li><a href="#tag_BC">BC</a></li>
4932 <tr class="entries_header">
4933 <th class="th_details" colspan="6">Details</th>
4935 <tr class="entry_cont">
4936 <td class="entry_details" colspan="6">
4937 <p>This list contains the color effect modes that can be applied to
4938 images produced by the camera device.<wbr/>
4939 Implementations are not expected to be consistent across all devices.<wbr/>
4940 If no color effect modes are available for a device,<wbr/> this will only list
4942 <p>A color effect will only be applied if
4943 <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF.<wbr/> OFF is always included in this list.<wbr/></p>
4944 <p>This control has no effect on the operation of other control routines such
4945 as auto-exposure,<wbr/> white balance,<wbr/> or focus.<wbr/></p>
4950 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4951 <!-- end of entry -->
4954 <tr class="entry" id="static_android.control.availableSceneModes">
4955 <td class="entry_name
4957 android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes
4959 <td class="entry_type">
4960 <span class="entry_type_name">byte</span>
4961 <span class="entry_type_container">x</span>
4963 <span class="entry_type_array">
4966 <span class="entry_type_visibility"> [public as enumList]</span>
4969 <span class="entry_type_hwlevel">[legacy] </span>
4972 <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>scene<wbr/>Mode).<wbr/></div>
4975 </td> <!-- entry_type -->
4977 <td class="entry_description">
4978 <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
4982 <td class="entry_units">
4985 <td class="entry_range">
4986 <p>Any value listed in <a href="#controls_android.control.sceneMode">android.<wbr/>control.<wbr/>scene<wbr/>Mode</a></p>
4989 <td class="entry_hal_version">
4993 <td class="entry_tags">
4994 <ul class="entry_tags">
4995 <li><a href="#tag_BC">BC</a></li>
5000 <tr class="entries_header">
5001 <th class="th_details" colspan="6">Details</th>
5003 <tr class="entry_cont">
5004 <td class="entry_details" colspan="6">
5005 <p>This list contains scene modes that can be set for the camera device.<wbr/>
5006 Only scene modes that have been fully implemented for the
5007 camera device may be included here.<wbr/> Implementations are not expected
5008 to be consistent across all devices.<wbr/></p>
5009 <p>If no scene modes are supported by the camera device,<wbr/> this
5010 will be set to DISABLED.<wbr/> Otherwise DISABLED will not be listed.<wbr/></p>
5011 <p>FACE_<wbr/>PRIORITY is always listed if face detection is
5012 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> >
5013 0</code>).<wbr/></p>
5018 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5019 <!-- end of entry -->
5022 <tr class="entry" id="static_android.control.availableVideoStabilizationModes">
5023 <td class="entry_name
5025 android.<wbr/>control.<wbr/>available<wbr/>Video<wbr/>Stabilization<wbr/>Modes
5027 <td class="entry_type">
5028 <span class="entry_type_name">byte</span>
5029 <span class="entry_type_container">x</span>
5031 <span class="entry_type_array">
5034 <span class="entry_type_visibility"> [public as enumList]</span>
5037 <span class="entry_type_hwlevel">[legacy] </span>
5040 <div class="entry_type_notes">List of enums.<wbr/></div>
5043 </td> <!-- entry_type -->
5045 <td class="entry_description">
5046 <p>List of video stabilization modes for <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>
5047 that are supported by this camera device.<wbr/></p>
5050 <td class="entry_units">
5053 <td class="entry_range">
5054 <p>Any value listed in <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a></p>
5057 <td class="entry_hal_version">
5061 <td class="entry_tags">
5062 <ul class="entry_tags">
5063 <li><a href="#tag_BC">BC</a></li>
5068 <tr class="entries_header">
5069 <th class="th_details" colspan="6">Details</th>
5071 <tr class="entry_cont">
5072 <td class="entry_details" colspan="6">
5073 <p>OFF will always be listed.<wbr/></p>
5078 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5079 <!-- end of entry -->
5082 <tr class="entry" id="static_android.control.awbAvailableModes">
5083 <td class="entry_name
5085 android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes
5087 <td class="entry_type">
5088 <span class="entry_type_name">byte</span>
5089 <span class="entry_type_container">x</span>
5091 <span class="entry_type_array">
5094 <span class="entry_type_visibility"> [public as enumList]</span>
5097 <span class="entry_type_hwlevel">[legacy] </span>
5100 <div class="entry_type_notes">List of enums</div>
5103 </td> <!-- entry_type -->
5105 <td class="entry_description">
5106 <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
5107 camera device.<wbr/></p>
5110 <td class="entry_units">
5113 <td class="entry_range">
5114 <p>Any value listed in <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a></p>
5117 <td class="entry_hal_version">
5121 <td class="entry_tags">
5122 <ul class="entry_tags">
5123 <li><a href="#tag_BC">BC</a></li>
5128 <tr class="entries_header">
5129 <th class="th_details" colspan="6">Details</th>
5131 <tr class="entry_cont">
5132 <td class="entry_details" colspan="6">
5133 <p>Not all the auto-white-balance modes may be supported by a
5134 given camera device.<wbr/> This entry lists the valid modes for
5135 <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> for this camera device.<wbr/></p>
5136 <p>All camera devices will support ON mode.<wbr/></p>
5137 <p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always support OFF
5138 mode,<wbr/> which enables application control of white balance,<wbr/> by using
5139 <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
5140 mode camera devices.<wbr/></p>
5145 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5146 <!-- end of entry -->
5149 <tr class="entry" id="static_android.control.maxRegions">
5150 <td class="entry_name
5152 android.<wbr/>control.<wbr/>max<wbr/>Regions
5154 <td class="entry_type">
5155 <span class="entry_type_name">int32</span>
5156 <span class="entry_type_container">x</span>
5158 <span class="entry_type_array">
5161 <span class="entry_type_visibility"> [ndk_public]</span>
5164 <span class="entry_type_hwlevel">[legacy] </span>
5169 </td> <!-- entry_type -->
5171 <td class="entry_description">
5172 <p>List of the maximum number of regions that can be used for metering in
5173 auto-exposure (AE),<wbr/> auto-white balance (AWB),<wbr/> and auto-focus (AF);
5174 this corresponds to the the maximum number of elements in
5175 <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/>
5176 and <a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a>.<wbr/></p>
5179 <td class="entry_units">
5182 <td class="entry_range">
5183 <p>Value must be >= 0 for each element.<wbr/> For full-capability devices
5184 this value must be >= 1 for AE and AF.<wbr/> The order of the elements is:
5185 <code>(AE,<wbr/> AWB,<wbr/> AF)</code>.<wbr/></p>
5188 <td class="entry_hal_version">
5192 <td class="entry_tags">
5193 <ul class="entry_tags">
5194 <li><a href="#tag_BC">BC</a></li>
5201 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5202 <!-- end of entry -->
5205 <tr class="entry" id="static_android.control.maxRegionsAe">
5206 <td class="entry_name
5208 android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae
5210 <td class="entry_type">
5211 <span class="entry_type_name">int32</span>
5213 <span class="entry_type_visibility"> [java_public]</span>
5215 <span class="entry_type_synthetic">[synthetic] </span>
5217 <span class="entry_type_hwlevel">[legacy] </span>
5222 </td> <!-- entry_type -->
5224 <td class="entry_description">
5225 <p>The maximum number of metering regions that can be used by the auto-exposure (AE)
5229 <td class="entry_units">
5232 <td class="entry_range">
5233 <p>Value will be >= 0.<wbr/> For FULL-capability devices,<wbr/> this
5234 value will be >= 1.<wbr/></p>
5237 <td class="entry_hal_version">
5241 <td class="entry_tags">
5245 <tr class="entries_header">
5246 <th class="th_details" colspan="6">Details</th>
5248 <tr class="entry_cont">
5249 <td class="entry_details" colspan="6">
5250 <p>This corresponds to the the maximum allowed number of elements in
5251 <a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a>.<wbr/></p>
5255 <tr class="entries_header">
5256 <th class="th_details" colspan="6">HAL Implementation Details</th>
5258 <tr class="entry_cont">
5259 <td class="entry_details" colspan="6">
5260 <p>This entry is private to the framework.<wbr/> Fill in
5261 maxRegions to have this entry be automatically populated.<wbr/></p>
5265 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5266 <!-- end of entry -->
5269 <tr class="entry" id="static_android.control.maxRegionsAwb">
5270 <td class="entry_name
5272 android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb
5274 <td class="entry_type">
5275 <span class="entry_type_name">int32</span>
5277 <span class="entry_type_visibility"> [java_public]</span>
5279 <span class="entry_type_synthetic">[synthetic] </span>
5281 <span class="entry_type_hwlevel">[legacy] </span>
5286 </td> <!-- entry_type -->
5288 <td class="entry_description">
5289 <p>The maximum number of metering regions that can be used by the auto-white balance (AWB)
5293 <td class="entry_units">
5296 <td class="entry_range">
5297 <p>Value will be >= 0.<wbr/></p>
5300 <td class="entry_hal_version">
5304 <td class="entry_tags">
5308 <tr class="entries_header">
5309 <th class="th_details" colspan="6">Details</th>
5311 <tr class="entry_cont">
5312 <td class="entry_details" colspan="6">
5313 <p>This corresponds to the the maximum allowed number of elements in
5314 <a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a>.<wbr/></p>
5318 <tr class="entries_header">
5319 <th class="th_details" colspan="6">HAL Implementation Details</th>
5321 <tr class="entry_cont">
5322 <td class="entry_details" colspan="6">
5323 <p>This entry is private to the framework.<wbr/> Fill in
5324 maxRegions to have this entry be automatically populated.<wbr/></p>
5328 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5329 <!-- end of entry -->
5332 <tr class="entry" id="static_android.control.maxRegionsAf">
5333 <td class="entry_name
5335 android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af
5337 <td class="entry_type">
5338 <span class="entry_type_name">int32</span>
5340 <span class="entry_type_visibility"> [java_public]</span>
5342 <span class="entry_type_synthetic">[synthetic] </span>
5344 <span class="entry_type_hwlevel">[legacy] </span>
5349 </td> <!-- entry_type -->
5351 <td class="entry_description">
5352 <p>The maximum number of metering regions that can be used by the auto-focus (AF) routine.<wbr/></p>
5355 <td class="entry_units">
5358 <td class="entry_range">
5359 <p>Value will be >= 0.<wbr/> For FULL-capability devices,<wbr/> this
5360 value will be >= 1.<wbr/></p>
5363 <td class="entry_hal_version">
5367 <td class="entry_tags">
5371 <tr class="entries_header">
5372 <th class="th_details" colspan="6">Details</th>
5374 <tr class="entry_cont">
5375 <td class="entry_details" colspan="6">
5376 <p>This corresponds to the the maximum allowed number of elements in
5377 <a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a>.<wbr/></p>
5381 <tr class="entries_header">
5382 <th class="th_details" colspan="6">HAL Implementation Details</th>
5384 <tr class="entry_cont">
5385 <td class="entry_details" colspan="6">
5386 <p>This entry is private to the framework.<wbr/> Fill in
5387 maxRegions to have this entry be automatically populated.<wbr/></p>
5391 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5392 <!-- end of entry -->
5395 <tr class="entry" id="static_android.control.sceneModeOverrides">
5396 <td class="entry_name
5398 android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides
5400 <td class="entry_type">
5401 <span class="entry_type_name">byte</span>
5402 <span class="entry_type_container">x</span>
5404 <span class="entry_type_array">
5405 3 x length(availableSceneModes)
5407 <span class="entry_type_visibility"> [system]</span>
5410 <span class="entry_type_hwlevel">[limited] </span>
5415 </td> <!-- entry_type -->
5417 <td class="entry_description">
5418 <p>Ordered list of auto-exposure,<wbr/> auto-white balance,<wbr/> and auto-focus
5419 settings to use with each available scene mode.<wbr/></p>
5422 <td class="entry_units">
5425 <td class="entry_range">
5426 <p>For each available scene mode,<wbr/> the list must contain three
5427 entries containing the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
5428 <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
5429 by the camera device.<wbr/> The entry order is <code>(aeMode,<wbr/> awbMode,<wbr/> afMode)</code>
5430 where aeMode has the lowest index position.<wbr/></p>
5433 <td class="entry_hal_version">
5437 <td class="entry_tags">
5438 <ul class="entry_tags">
5439 <li><a href="#tag_BC">BC</a></li>
5444 <tr class="entries_header">
5445 <th class="th_details" colspan="6">Details</th>
5447 <tr class="entry_cont">
5448 <td class="entry_details" colspan="6">
5449 <p>When a scene mode is enabled,<wbr/> the camera device is expected
5450 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/>
5451 and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> with its preferred settings for
5452 that scene mode.<wbr/></p>
5453 <p>The order of this list matches that of availableSceneModes,<wbr/>
5454 with 3 entries for each mode.<wbr/> The overrides listed
5455 for FACE_<wbr/>PRIORITY and FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT (if supported) are ignored,<wbr/>
5456 since for that mode the application-set <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
5457 <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
5458 used instead,<wbr/> matching the behavior when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>
5459 is set to AUTO.<wbr/> It is recommended that the FACE_<wbr/>PRIORITY and
5460 FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT (if supported) overrides should be set to 0.<wbr/></p>
5461 <p>For example,<wbr/> if availableSceneModes contains
5462 <code>(FACE_<wbr/>PRIORITY,<wbr/> ACTION,<wbr/> NIGHT)</code>,<wbr/> then the camera framework
5463 expects sceneModeOverrides to have 9 entries formatted like:
5464 <code>(0,<wbr/> 0,<wbr/> 0,<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> AUTO,<wbr/> CONTINUOUS_<wbr/>PICTURE,<wbr/>
5465 ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> INCANDESCENT,<wbr/> AUTO)</code>.<wbr/></p>
5469 <tr class="entries_header">
5470 <th class="th_details" colspan="6">HAL Implementation Details</th>
5472 <tr class="entry_cont">
5473 <td class="entry_details" colspan="6">
5474 <p>To maintain backward compatibility,<wbr/> this list will be made available
5475 in the static metadata of the camera service.<wbr/> The camera service will
5476 use these values to set <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
5477 <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
5478 mode other than FACE_<wbr/>PRIORITY and FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT (if supported).<wbr/></p>
5482 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5483 <!-- end of entry -->
5486 <tr class="entry" id="static_android.control.availableHighSpeedVideoConfigurations">
5487 <td class="entry_name
5489 android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations
5491 <td class="entry_type">
5492 <span class="entry_type_name">int32</span>
5493 <span class="entry_type_container">x</span>
5495 <span class="entry_type_array">
5498 <span class="entry_type_visibility"> [hidden as highSpeedVideoConfiguration]</span>
5501 <span class="entry_type_hwlevel">[limited] </span>
5506 </td> <!-- entry_type -->
5508 <td class="entry_description">
5509 <p>List of available high speed video size,<wbr/> fps range and max batch size configurations
5510 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>
5513 <td class="entry_units">
5516 <td class="entry_range">
5517 <p>For each configuration,<wbr/> the fps_<wbr/>max >= 120fps.<wbr/></p>
5520 <td class="entry_hal_version">
5524 <td class="entry_tags">
5525 <ul class="entry_tags">
5526 <li><a href="#tag_V1">V1</a></li>
5531 <tr class="entries_header">
5532 <th class="th_details" colspan="6">Details</th>
5534 <tr class="entry_cont">
5535 <td class="entry_details" colspan="6">
5536 <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/>
5537 this metadata will list the supported high speed video size,<wbr/> fps range and max batch size
5538 configurations.<wbr/> All the sizes listed in this configuration will be a subset of the sizes
5539 reported by <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputSizes">StreamConfigurationMap#getOutputSizes</a>
5540 for processed non-stalling formats.<wbr/></p>
5541 <p>For the high speed video use case,<wbr/> the application must
5542 select the video size and fps range from this metadata to configure the recording and
5543 preview streams and setup the recording requests.<wbr/> For example,<wbr/> if the application intends
5544 to do high speed recording,<wbr/> it can select the maximum size reported by this metadata to
5545 configure output streams.<wbr/> Once the size is selected,<wbr/> application can filter this metadata
5546 by selected size and get the supported fps ranges,<wbr/> and use these fps ranges to setup the
5547 recording requests.<wbr/> Note that for the use case of multiple output streams,<wbr/> application
5548 must select one unique size from this metadata to use (e.<wbr/>g.,<wbr/> preview and recording streams
5549 must have the same size).<wbr/> Otherwise,<wbr/> the high speed capture session creation will fail.<wbr/></p>
5550 <p>The min and max fps will be multiple times of 30fps.<wbr/></p>
5551 <p>High speed video streaming extends significant performance pressue to camera hardware,<wbr/>
5552 to achieve efficient high speed streaming,<wbr/> the camera device may have to aggregate
5553 multiple frames together and send to camera device for processing where the request
5554 controls are same for all the frames in this batch.<wbr/> Max batch size indicates
5555 the max possible number of frames the camera device will group together for this high
5556 speed stream configuration.<wbr/> This max batch size will be used to generate a high speed
5557 recording request list by
5558 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a>.<wbr/>
5559 The max batch size for each configuration will satisfy below conditions:</p>
5561 <li>Each max batch size will be a divisor of its corresponding fps_<wbr/>max /<wbr/> 30.<wbr/> For example,<wbr/>
5562 if max_<wbr/>fps is 300,<wbr/> max batch size will only be 1,<wbr/> 2,<wbr/> 5,<wbr/> or 10.<wbr/></li>
5563 <li>The camera device may choose smaller internal batch size for each configuration,<wbr/> but
5564 the actual batch size will be a divisor of max batch size.<wbr/> For example,<wbr/> if the max batch
5565 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>
5566 <li>The max batch size in each configuration entry must be no larger than 32.<wbr/></li>
5568 <p>The camera device doesn't have to support batch mode to achieve high speed video recording,<wbr/>
5569 in such case,<wbr/> batch_<wbr/>size_<wbr/>max will be reported as 1 in each configuration entry.<wbr/></p>
5570 <p>This fps ranges in this configuration list can only be used to create requests
5571 that are submitted to a high speed camera capture session created by
5572 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>.<wbr/>
5573 The fps ranges reported in this metadata must not be used to setup capture requests for
5574 normal capture session,<wbr/> or it will cause request error.<wbr/></p>
5578 <tr class="entries_header">
5579 <th class="th_details" colspan="6">HAL Implementation Details</th>
5581 <tr class="entry_cont">
5582 <td class="entry_details" colspan="6">
5583 <p>All the sizes listed in this configuration will be a subset of the sizes reported by
5584 <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> for processed non-stalling output formats.<wbr/>
5585 Note that for all high speed video configurations,<wbr/> HAL must be able to support a minimum
5586 of two streams,<wbr/> though the application might choose to configure just one stream.<wbr/></p>
5587 <p>The HAL may support multiple sensor modes for high speed outputs,<wbr/> for example,<wbr/> 120fps
5588 sensor mode and 120fps recording,<wbr/> 240fps sensor mode for 240fps recording.<wbr/> The application
5589 usually starts preview first,<wbr/> then starts recording.<wbr/> To avoid sensor mode switch caused
5590 stutter when starting recording as much as possible,<wbr/> the application may want to ensure
5591 the same sensor mode is used for preview and recording.<wbr/> Therefore,<wbr/> The HAL must advertise
5592 the variable fps range [30,<wbr/> fps_<wbr/>max] for each fixed fps range in this configuration list.<wbr/>
5593 For example,<wbr/> if the HAL advertises [120,<wbr/> 120] and [240,<wbr/> 240],<wbr/> the HAL must also advertise
5594 [30,<wbr/> 120] and [30,<wbr/> 240] for each configuration.<wbr/> In doing so,<wbr/> if the application intends to
5595 do 120fps recording,<wbr/> it can select [30,<wbr/> 120] to start preview,<wbr/> and [120,<wbr/> 120] to start
5596 recording.<wbr/> For these variable fps ranges,<wbr/> it's up to the HAL to decide the actual fps
5597 values that are suitable for smooth preview streaming.<wbr/> If the HAL sees different max_<wbr/>fps
5598 values that fall into different sensor modes in a sequence of requests,<wbr/> the HAL must
5599 switch the sensor mode as quick as possible to minimize the mode switch caused stutter.<wbr/></p>
5603 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5604 <!-- end of entry -->
5607 <tr class="entry" id="static_android.control.aeLockAvailable">
5608 <td class="entry_name
5610 android.<wbr/>control.<wbr/>ae<wbr/>Lock<wbr/>Available
5612 <td class="entry_type">
5613 <span class="entry_type_name entry_type_name_enum">byte</span>
5615 <span class="entry_type_visibility"> [public as boolean]</span>
5618 <span class="entry_type_hwlevel">[legacy] </span>
5622 <ul class="entry_type_enum">
5624 <span class="entry_type_enum_name">FALSE</span>
5627 <span class="entry_type_enum_name">TRUE</span>
5631 </td> <!-- entry_type -->
5633 <td class="entry_description">
5634 <p>Whether the camera device supports <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></p>
5637 <td class="entry_units">
5640 <td class="entry_range">
5643 <td class="entry_hal_version">
5647 <td class="entry_tags">
5648 <ul class="entry_tags">
5649 <li><a href="#tag_BC">BC</a></li>
5654 <tr class="entries_header">
5655 <th class="th_details" colspan="6">Details</th>
5657 <tr class="entry_cont">
5658 <td class="entry_details" colspan="6">
5659 <p>Devices with MANUAL_<wbr/>SENSOR capability or BURST_<wbr/>CAPTURE capability will always
5660 list <code>true</code>.<wbr/> This includes FULL devices.<wbr/></p>
5665 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5666 <!-- end of entry -->
5669 <tr class="entry" id="static_android.control.awbLockAvailable">
5670 <td class="entry_name
5672 android.<wbr/>control.<wbr/>awb<wbr/>Lock<wbr/>Available
5674 <td class="entry_type">
5675 <span class="entry_type_name entry_type_name_enum">byte</span>
5677 <span class="entry_type_visibility"> [public as boolean]</span>
5680 <span class="entry_type_hwlevel">[legacy] </span>
5684 <ul class="entry_type_enum">
5686 <span class="entry_type_enum_name">FALSE</span>
5689 <span class="entry_type_enum_name">TRUE</span>
5693 </td> <!-- entry_type -->
5695 <td class="entry_description">
5696 <p>Whether the camera device supports <a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></p>
5699 <td class="entry_units">
5702 <td class="entry_range">
5705 <td class="entry_hal_version">
5709 <td class="entry_tags">
5710 <ul class="entry_tags">
5711 <li><a href="#tag_BC">BC</a></li>
5716 <tr class="entries_header">
5717 <th class="th_details" colspan="6">Details</th>
5719 <tr class="entry_cont">
5720 <td class="entry_details" colspan="6">
5721 <p>Devices with MANUAL_<wbr/>POST_<wbr/>PROCESSING capability or BURST_<wbr/>CAPTURE capability will
5722 always list <code>true</code>.<wbr/> This includes FULL devices.<wbr/></p>
5727 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5728 <!-- end of entry -->
5731 <tr class="entry" id="static_android.control.availableModes">
5732 <td class="entry_name
5734 android.<wbr/>control.<wbr/>available<wbr/>Modes
5736 <td class="entry_type">
5737 <span class="entry_type_name">byte</span>
5738 <span class="entry_type_container">x</span>
5740 <span class="entry_type_array">
5743 <span class="entry_type_visibility"> [public as enumList]</span>
5746 <span class="entry_type_hwlevel">[legacy] </span>
5749 <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>mode).<wbr/></div>
5752 </td> <!-- entry_type -->
5754 <td class="entry_description">
5755 <p>List of control modes for <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> that are supported by this camera
5759 <td class="entry_units">
5762 <td class="entry_range">
5763 <p>Any value listed in <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a></p>
5766 <td class="entry_hal_version">
5770 <td class="entry_tags">
5774 <tr class="entries_header">
5775 <th class="th_details" colspan="6">Details</th>
5777 <tr class="entry_cont">
5778 <td class="entry_details" colspan="6">
5779 <p>This list contains control modes that can be set for the camera device.<wbr/>
5780 LEGACY mode devices will always support AUTO mode.<wbr/> LIMITED and FULL
5781 devices will always support OFF,<wbr/> AUTO modes.<wbr/></p>
5786 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5787 <!-- end of entry -->
5790 <tr class="entry" id="static_android.control.postRawSensitivityBoostRange">
5791 <td class="entry_name
5793 android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost<wbr/>Range
5795 <td class="entry_type">
5796 <span class="entry_type_name">int32</span>
5797 <span class="entry_type_container">x</span>
5799 <span class="entry_type_array">
5802 <span class="entry_type_visibility"> [public as rangeInt]</span>
5807 <div class="entry_type_notes">Range of supported post RAW sensitivitiy boosts</div>
5810 </td> <!-- entry_type -->
5812 <td class="entry_description">
5813 <p>Range of boosts for <a href="#controls_android.control.postRawSensitivityBoost">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost</a> supported
5814 by this camera device.<wbr/></p>
5817 <td class="entry_units">
5818 ISO arithmetic units,<wbr/> the same as android.<wbr/>sensor.<wbr/>sensitivity
5821 <td class="entry_range">
5824 <td class="entry_hal_version">
5828 <td class="entry_tags">
5832 <tr class="entries_header">
5833 <th class="th_details" colspan="6">Details</th>
5835 <tr class="entry_cont">
5836 <td class="entry_details" colspan="6">
5837 <p>Devices support post RAW sensitivity boost will advertise
5838 <a href="#controls_android.control.postRawSensitivityBoost">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost</a> key for controling
5839 post RAW sensitivity boost.<wbr/></p>
5840 <p>This key will be <code>null</code> for devices that do not support any RAW format
5841 outputs.<wbr/> For devices that do support RAW format outputs,<wbr/> this key will always
5842 present,<wbr/> and if a device does not support post RAW sensitivity boost,<wbr/> it will
5843 list <code>(100,<wbr/> 100)</code> in this key.<wbr/></p>
5847 <tr class="entries_header">
5848 <th class="th_details" colspan="6">HAL Implementation Details</th>
5850 <tr class="entry_cont">
5851 <td class="entry_details" colspan="6">
5852 <p>This key is added in legacy HAL3.<wbr/>4.<wbr/> For legacy HAL3.<wbr/>3 or earlier devices,<wbr/> camera
5853 framework will generate this key as <code>(100,<wbr/> 100)</code> if device supports any of RAW output
5854 formats.<wbr/> All legacy HAL3.<wbr/>4 and above devices should list this key if device supports
5855 any of RAW output formats.<wbr/></p>
5859 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5860 <!-- end of entry -->
5864 <!-- end of kind -->
5866 <tr><td colspan="7" class="kind">dynamic</td></tr>
5868 <thead class="entries_header">
5870 <th class="th_name">Property Name</th>
5871 <th class="th_type">Type</th>
5872 <th class="th_description">Description</th>
5873 <th class="th_units">Units</th>
5874 <th class="th_range">Range</th>
5875 <th class="th_hal_version">Initial HIDL HAL version</th>
5876 <th class="th_tags">Tags</th>
5891 <tr class="entry" id="dynamic_android.control.aePrecaptureId">
5892 <td class="entry_name
5893 entry_name_deprecated
5895 android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Id
5897 <td class="entry_type">
5898 <span class="entry_type_name">int32</span>
5900 <span class="entry_type_visibility"> [system]</span>
5904 <span class="entry_type_deprecated">[deprecated] </span>
5908 </td> <!-- entry_type -->
5910 <td class="entry_description">
5911 <p>The ID sent with the latest
5912 CAMERA2_<wbr/>TRIGGER_<wbr/>PRECAPTURE_<wbr/>METERING call</p>
5915 <td class="entry_units">
5918 <td class="entry_range">
5919 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
5922 <td class="entry_hal_version">
5926 <td class="entry_tags">
5930 <tr class="entries_header">
5931 <th class="th_details" colspan="6">Details</th>
5933 <tr class="entry_cont">
5934 <td class="entry_details" colspan="6">
5936 CAMERA2_<wbr/>TRIGGER_<wbr/>PRECAPTURE_<wbr/>METERING trigger received yet
5937 by HAL.<wbr/> Always updated even if AE algorithm ignores the
5943 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5944 <!-- end of entry -->
5947 <tr class="entry" id="dynamic_android.control.aeAntibandingMode">
5948 <td class="entry_name
5950 android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode
5952 <td class="entry_type">
5953 <span class="entry_type_name entry_type_name_enum">byte</span>
5955 <span class="entry_type_visibility"> [public]</span>
5958 <span class="entry_type_hwlevel">[legacy] </span>
5962 <ul class="entry_type_enum">
5964 <span class="entry_type_enum_name">OFF</span>
5965 <span class="entry_type_enum_notes"><p>The camera device will not adjust exposure duration to
5966 avoid banding problems.<wbr/></p></span>
5969 <span class="entry_type_enum_name">50HZ</span>
5970 <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
5971 avoid banding problems with 50Hz illumination sources.<wbr/></p></span>
5974 <span class="entry_type_enum_name">60HZ</span>
5975 <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
5976 avoid banding problems with 60Hz illumination
5977 sources.<wbr/></p></span>
5980 <span class="entry_type_enum_name">AUTO</span>
5981 <span class="entry_type_enum_notes"><p>The camera device will automatically adapt its
5982 antibanding routine to the current illumination
5983 condition.<wbr/> This is the default mode if AUTO is
5984 available on given camera device.<wbr/></p></span>
5988 </td> <!-- entry_type -->
5990 <td class="entry_description">
5991 <p>The desired setting for the camera device's auto-exposure
5992 algorithm's antibanding compensation.<wbr/></p>
5995 <td class="entry_units">
5998 <td class="entry_range">
5999 <p><a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a></p>
6002 <td class="entry_hal_version">
6006 <td class="entry_tags">
6007 <ul class="entry_tags">
6008 <li><a href="#tag_BC">BC</a></li>
6013 <tr class="entries_header">
6014 <th class="th_details" colspan="6">Details</th>
6016 <tr class="entry_cont">
6017 <td class="entry_details" colspan="6">
6018 <p>Some kinds of lighting fixtures,<wbr/> such as some fluorescent
6019 lights,<wbr/> flicker at the rate of the power supply frequency
6020 (60Hz or 50Hz,<wbr/> depending on country).<wbr/> While this is
6021 typically not noticeable to a person,<wbr/> it can be visible to
6022 a camera device.<wbr/> If a camera sets its exposure time to the
6023 wrong value,<wbr/> the flicker may become visible in the
6024 viewfinder as flicker or in a final captured image,<wbr/> as a
6025 set of variable-brightness bands across the image.<wbr/></p>
6026 <p>Therefore,<wbr/> the auto-exposure routines of camera devices
6027 include antibanding routines that ensure that the chosen
6028 exposure value will not cause such banding.<wbr/> The choice of
6029 exposure time depends on the rate of flicker,<wbr/> which the
6030 camera device can detect automatically,<wbr/> or the expected
6031 rate can be selected by the application using this
6033 <p>A given camera device may not support all of the possible
6034 options for the antibanding mode.<wbr/> The
6035 <a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a> key contains
6036 the available modes for a given camera device.<wbr/></p>
6037 <p>AUTO mode is the default if it is available on given
6038 camera device.<wbr/> When AUTO mode is not available,<wbr/> the
6039 default will be either 50HZ or 60HZ,<wbr/> and both 50HZ
6040 and 60HZ will be available.<wbr/></p>
6041 <p>If manual exposure control is enabled (by setting
6042 <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/>
6043 then this setting has no effect,<wbr/> and the application must
6044 ensure it selects exposure times that do not cause banding
6045 issues.<wbr/> The <a href="#dynamic_android.statistics.sceneFlicker">android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker</a> key can assist
6046 the application in this.<wbr/></p>
6050 <tr class="entries_header">
6051 <th class="th_details" colspan="6">HAL Implementation Details</th>
6053 <tr class="entry_cont">
6054 <td class="entry_details" colspan="6">
6055 <p>For all capture request templates,<wbr/> this field must be set
6056 to AUTO if AUTO mode is available.<wbr/> If AUTO is not available,<wbr/>
6057 the default must be either 50HZ or 60HZ,<wbr/> and both 50HZ and
6058 60HZ must be available.<wbr/></p>
6059 <p>If manual exposure control is enabled (by setting
6060 <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/>
6061 then the exposure values provided by the application must not be
6062 adjusted for antibanding.<wbr/></p>
6066 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6067 <!-- end of entry -->
6070 <tr class="entry" id="dynamic_android.control.aeExposureCompensation">
6071 <td class="entry_name
6073 android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation
6075 <td class="entry_type">
6076 <span class="entry_type_name">int32</span>
6078 <span class="entry_type_visibility"> [public]</span>
6081 <span class="entry_type_hwlevel">[legacy] </span>
6086 </td> <!-- entry_type -->
6088 <td class="entry_description">
6089 <p>Adjustment to auto-exposure (AE) target image
6090 brightness.<wbr/></p>
6093 <td class="entry_units">
6097 <td class="entry_range">
6098 <p><a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a></p>
6101 <td class="entry_hal_version">
6105 <td class="entry_tags">
6106 <ul class="entry_tags">
6107 <li><a href="#tag_BC">BC</a></li>
6112 <tr class="entries_header">
6113 <th class="th_details" colspan="6">Details</th>
6115 <tr class="entry_cont">
6116 <td class="entry_details" colspan="6">
6117 <p>The adjustment is measured as a count of steps,<wbr/> with the
6118 step size defined by <a href="#static_android.control.aeCompensationStep">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step</a> and the
6119 allowed range by <a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a>.<wbr/></p>
6120 <p>For example,<wbr/> if the exposure value (EV) step is 0.<wbr/>333,<wbr/> '6'
6121 will mean an exposure compensation of +2 EV; -3 will mean an
6122 exposure compensation of -1 EV.<wbr/> One EV represents a doubling
6123 of image brightness.<wbr/> Note that this control will only be
6124 effective if <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>!=</code> OFF.<wbr/> This control
6125 will take effect even when <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> <code>== true</code>.<wbr/></p>
6126 <p>In the event of exposure compensation value being changed,<wbr/> camera device
6127 may take several frames to reach the newly requested exposure target.<wbr/>
6128 During that time,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> field will be in the SEARCHING
6129 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
6130 change from SEARCHING to either CONVERGED,<wbr/> LOCKED (if AE lock is enabled),<wbr/> or
6131 FLASH_<wbr/>REQUIRED (if the scene is too dark for still capture).<wbr/></p>
6136 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6137 <!-- end of entry -->
6140 <tr class="entry" id="dynamic_android.control.aeLock">
6141 <td class="entry_name
6143 android.<wbr/>control.<wbr/>ae<wbr/>Lock
6145 <td class="entry_type">
6146 <span class="entry_type_name entry_type_name_enum">byte</span>
6148 <span class="entry_type_visibility"> [public as boolean]</span>
6151 <span class="entry_type_hwlevel">[legacy] </span>
6155 <ul class="entry_type_enum">
6157 <span class="entry_type_enum_name">OFF</span>
6158 <span class="entry_type_enum_notes"><p>Auto-exposure lock is disabled; the AE algorithm
6159 is free to update its parameters.<wbr/></p></span>
6162 <span class="entry_type_enum_name">ON</span>
6163 <span class="entry_type_enum_notes"><p>Auto-exposure lock is enabled; the AE algorithm
6164 must not update the exposure and sensitivity parameters
6165 while the lock is active.<wbr/></p>
6166 <p><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a> setting changes
6167 will still take effect while auto-exposure is locked.<wbr/></p>
6168 <p>Some rare LEGACY devices may not support
6169 this,<wbr/> in which case the value will always be overridden to OFF.<wbr/></p></span>
6173 </td> <!-- entry_type -->
6175 <td class="entry_description">
6176 <p>Whether auto-exposure (AE) is currently locked to its latest
6177 calculated values.<wbr/></p>
6180 <td class="entry_units">
6183 <td class="entry_range">
6186 <td class="entry_hal_version">
6190 <td class="entry_tags">
6191 <ul class="entry_tags">
6192 <li><a href="#tag_BC">BC</a></li>
6197 <tr class="entries_header">
6198 <th class="th_details" colspan="6">Details</th>
6200 <tr class="entry_cont">
6201 <td class="entry_details" colspan="6">
6202 <p>When set to <code>true</code> (ON),<wbr/> the AE algorithm is locked to its latest parameters,<wbr/>
6203 and will not change exposure settings until the lock is set to <code>false</code> (OFF).<wbr/></p>
6204 <p>Note that even when AE is locked,<wbr/> the flash may be fired if
6205 the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is ON_<wbr/>AUTO_<wbr/>FLASH /<wbr/>
6206 ON_<wbr/>ALWAYS_<wbr/>FLASH /<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE.<wbr/></p>
6207 <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
6208 is ON,<wbr/> the camera device will still adjust its exposure value.<wbr/></p>
6209 <p>If AE precapture is triggered (see <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>)
6210 when AE is already locked,<wbr/> the camera device will not change the exposure time
6211 (<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>)
6212 parameters.<wbr/> The flash may be fired if the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>
6213 is ON_<wbr/>AUTO_<wbr/>FLASH/<wbr/>ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE and the scene is too dark.<wbr/> If the
6214 <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/>
6215 Similarly,<wbr/> AE precapture trigger CANCEL has no effect when AE is already locked.<wbr/></p>
6216 <p>When an AE precapture sequence is triggered,<wbr/> AE unlock will not be able to unlock
6217 the AE if AE is locked by the camera device internally during precapture metering
6218 sequence In other words,<wbr/> submitting requests with AE unlock has no effect for an
6219 ongoing precapture metering sequence.<wbr/> Otherwise,<wbr/> the precapture metering sequence
6220 will never succeed in a sequence of preview requests where AE lock is always set
6221 to <code>false</code>.<wbr/></p>
6222 <p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that
6223 get locked do not necessarily correspond to the settings that were present in the
6224 latest capture result received from the camera device,<wbr/> since additional captures
6225 and AE updates may have occurred even before the result was sent out.<wbr/> If an
6226 application is switching between automatic and manual control and wishes to eliminate
6227 any flicker during the switch,<wbr/> the following procedure is recommended:</p>
6229 <li>Starting in auto-AE mode:</li>
6231 <li>Wait for the first result to be output that has the AE locked</li>
6232 <li>Copy exposure settings from that result into a request,<wbr/> set the request to manual AE</li>
6233 <li>Submit the capture request,<wbr/> proceed to run manual AE as desired.<wbr/></li>
6235 <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>
6240 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6241 <!-- end of entry -->
6244 <tr class="entry" id="dynamic_android.control.aeMode">
6245 <td class="entry_name
6247 android.<wbr/>control.<wbr/>ae<wbr/>Mode
6249 <td class="entry_type">
6250 <span class="entry_type_name entry_type_name_enum">byte</span>
6252 <span class="entry_type_visibility"> [public]</span>
6255 <span class="entry_type_hwlevel">[legacy] </span>
6259 <ul class="entry_type_enum">
6261 <span class="entry_type_enum_name">OFF</span>
6262 <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is disabled.<wbr/></p>
6263 <p>The application-selected <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
6264 <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> and
6265 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are used by the camera
6266 device,<wbr/> along with android.<wbr/>flash.<wbr/>* fields,<wbr/> if there's
6267 a flash unit for this camera device.<wbr/></p>
6268 <p>Note that auto-white balance (AWB) and auto-focus (AF)
6269 behavior is device dependent when AE is in OFF mode.<wbr/>
6270 To have consistent behavior across different devices,<wbr/>
6271 it is recommended to either set AWB and AF to OFF mode
6272 or lock AWB and AF before setting AE to OFF.<wbr/>
6273 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/>
6274 <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>
6275 for more details.<wbr/></p>
6276 <p>LEGACY devices do not support the OFF mode and will
6277 override attempts to use this value to ON.<wbr/></p></span>
6280 <span class="entry_type_enum_name">ON</span>
6281 <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is active,<wbr/>
6282 with no flash control.<wbr/></p>
6283 <p>The application's values for
6284 <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
6285 <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
6286 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are ignored.<wbr/> The
6287 application has control over the various
6288 android.<wbr/>flash.<wbr/>* fields.<wbr/></p></span>
6291 <span class="entry_type_enum_name">ON_AUTO_FLASH</span>
6292 <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
6293 the camera's flash unit,<wbr/> firing it in low-light
6294 conditions.<wbr/></p>
6295 <p>The flash may be fired during a precapture sequence
6296 (triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and
6297 may be fired for captures for which the
6298 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to
6299 STILL_<wbr/>CAPTURE</p></span>
6302 <span class="entry_type_enum_name">ON_ALWAYS_FLASH</span>
6303 <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
6304 the camera's flash unit,<wbr/> always firing it for still
6306 <p>The flash may be fired during a precapture sequence
6307 (triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and
6308 will always be fired for captures for which the
6309 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to
6310 STILL_<wbr/>CAPTURE</p></span>
6313 <span class="entry_type_enum_name">ON_AUTO_FLASH_REDEYE</span>
6314 <span class="entry_type_enum_notes"><p>Like ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> but with automatic red eye
6315 reduction.<wbr/></p>
6316 <p>If deemed necessary by the camera device,<wbr/> a red eye
6317 reduction flash will fire during the precapture
6318 sequence.<wbr/></p></span>
6322 </td> <!-- entry_type -->
6324 <td class="entry_description">
6325 <p>The desired mode for the camera device's
6326 auto-exposure routine.<wbr/></p>
6329 <td class="entry_units">
6332 <td class="entry_range">
6333 <p><a href="#static_android.control.aeAvailableModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes</a></p>
6336 <td class="entry_hal_version">
6340 <td class="entry_tags">
6341 <ul class="entry_tags">
6342 <li><a href="#tag_BC">BC</a></li>
6347 <tr class="entries_header">
6348 <th class="th_details" colspan="6">Details</th>
6350 <tr class="entry_cont">
6351 <td class="entry_details" colspan="6">
6352 <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is
6354 <p>When set to any of the ON modes,<wbr/> the camera device's
6355 auto-exposure routine is enabled,<wbr/> overriding the
6356 application's selected exposure time,<wbr/> sensor sensitivity,<wbr/>
6357 and frame duration (<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
6358 <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
6359 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>).<wbr/> If one of the FLASH modes
6360 is selected,<wbr/> the camera device's flash unit controls are
6361 also overridden.<wbr/></p>
6362 <p>The FLASH modes are only available if the camera device
6363 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>
6364 <p>If flash TORCH mode is desired,<wbr/> this field must be set to
6365 ON or OFF,<wbr/> and <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> set to TORCH.<wbr/></p>
6366 <p>When set to any of the ON modes,<wbr/> the values chosen by the
6367 camera device auto-exposure routine for the overridden
6368 fields for a given capture will be available in its
6369 CaptureResult.<wbr/></p>
6374 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6375 <!-- end of entry -->
6378 <tr class="entry" id="dynamic_android.control.aeRegions">
6379 <td class="entry_name
6381 android.<wbr/>control.<wbr/>ae<wbr/>Regions
6383 <td class="entry_type">
6384 <span class="entry_type_name">int32</span>
6385 <span class="entry_type_container">x</span>
6387 <span class="entry_type_array">
6390 <span class="entry_type_visibility"> [public as meteringRectangle]</span>
6397 </td> <!-- entry_type -->
6399 <td class="entry_description">
6400 <p>List of metering areas to use for auto-exposure adjustment.<wbr/></p>
6403 <td class="entry_units">
6404 Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
6407 <td class="entry_range">
6408 <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
6409 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
6412 <td class="entry_hal_version">
6416 <td class="entry_tags">
6417 <ul class="entry_tags">
6418 <li><a href="#tag_BC">BC</a></li>
6423 <tr class="entries_header">
6424 <th class="th_details" colspan="6">Details</th>
6426 <tr class="entry_cont">
6427 <td class="entry_details" colspan="6">
6428 <p>Not available if <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a> is 0.<wbr/>
6429 Otherwise will always be present.<wbr/></p>
6430 <p>The maximum number of regions supported by the device is determined by the value
6431 of <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a>.<wbr/></p>
6432 <p>The coordinate system is based on the active pixel array,<wbr/>
6433 with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
6434 (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
6435 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
6436 bottom-right pixel in the active pixel array.<wbr/></p>
6437 <p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight
6438 for every pixel in the area.<wbr/> This means that a large metering area
6439 with the same weight as a smaller area will have more effect in
6440 the metering result.<wbr/> Metering areas can partially overlap and the
6441 camera device will add the weights in the overlap region.<wbr/></p>
6442 <p>The weights are relative to weights of other exposure metering regions,<wbr/> so if only one
6443 region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0
6444 weight is ignored.<wbr/></p>
6445 <p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
6446 camera device.<wbr/></p>
6447 <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
6448 capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
6449 region and output only the intersection rectangle as the metering region in the result
6450 metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and
6451 not reported in the result metadata.<wbr/></p>
6455 <tr class="entries_header">
6456 <th class="th_details" colspan="6">HAL Implementation Details</th>
6458 <tr class="entry_cont">
6459 <td class="entry_details" colspan="6">
6460 <p>The HAL level representation of MeteringRectangle[] is a
6461 int[5 * area_<wbr/>count].<wbr/>
6462 Every five elements represent a metering region of
6463 (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
6464 The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
6465 exclusive on xmax and ymax.<wbr/></p>
6469 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6470 <!-- end of entry -->
6473 <tr class="entry" id="dynamic_android.control.aeTargetFpsRange">
6474 <td class="entry_name
6476 android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range
6478 <td class="entry_type">
6479 <span class="entry_type_name">int32</span>
6480 <span class="entry_type_container">x</span>
6482 <span class="entry_type_array">
6485 <span class="entry_type_visibility"> [public as rangeInt]</span>
6488 <span class="entry_type_hwlevel">[legacy] </span>
6493 </td> <!-- entry_type -->
6495 <td class="entry_description">
6496 <p>Range over which the auto-exposure routine can
6497 adjust the capture frame rate to maintain good
6501 <td class="entry_units">
6502 Frames per second (FPS)
6505 <td class="entry_range">
6506 <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>
6509 <td class="entry_hal_version">
6513 <td class="entry_tags">
6514 <ul class="entry_tags">
6515 <li><a href="#tag_BC">BC</a></li>
6520 <tr class="entries_header">
6521 <th class="th_details" colspan="6">Details</th>
6523 <tr class="entry_cont">
6524 <td class="entry_details" colspan="6">
6525 <p>Only constrains auto-exposure (AE) algorithm,<wbr/> not
6526 manual control of <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> and
6527 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>.<wbr/></p>
6532 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6533 <!-- end of entry -->
6536 <tr class="entry" id="dynamic_android.control.aePrecaptureTrigger">
6537 <td class="entry_name
6539 android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger
6541 <td class="entry_type">
6542 <span class="entry_type_name entry_type_name_enum">byte</span>
6544 <span class="entry_type_visibility"> [public]</span>
6547 <span class="entry_type_hwlevel">[limited] </span>
6551 <ul class="entry_type_enum">
6553 <span class="entry_type_enum_name">IDLE</span>
6554 <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
6557 <span class="entry_type_enum_name">START</span>
6558 <span class="entry_type_enum_notes"><p>The precapture metering sequence will be started
6559 by the camera device.<wbr/></p>
6560 <p>The exact effect of the precapture trigger depends on
6561 the current AE mode and state.<wbr/></p></span>
6564 <span class="entry_type_enum_name">CANCEL</span>
6565 <span class="entry_type_enum_notes"><p>The camera device will cancel any currently active or completed
6566 precapture metering sequence,<wbr/> the auto-exposure routine will return to its
6567 initial state.<wbr/></p></span>
6571 </td> <!-- entry_type -->
6573 <td class="entry_description">
6574 <p>Whether the camera device will trigger a precapture
6575 metering sequence when it processes this request.<wbr/></p>
6578 <td class="entry_units">
6581 <td class="entry_range">
6584 <td class="entry_hal_version">
6588 <td class="entry_tags">
6589 <ul class="entry_tags">
6590 <li><a href="#tag_BC">BC</a></li>
6595 <tr class="entries_header">
6596 <th class="th_details" colspan="6">Details</th>
6598 <tr class="entry_cont">
6599 <td class="entry_details" colspan="6">
6600 <p>This entry is normally set to IDLE,<wbr/> or is not
6601 included at all in the request settings.<wbr/> When included and
6602 set to START,<wbr/> the camera device will trigger the auto-exposure (AE)
6603 precapture metering sequence.<wbr/></p>
6604 <p>When set to CANCEL,<wbr/> the camera device will cancel any active
6605 precapture metering trigger,<wbr/> and return to its initial AE state.<wbr/>
6606 If a precapture metering sequence is already completed,<wbr/> and the camera
6607 device has implicitly locked the AE for subsequent still capture,<wbr/> the
6608 CANCEL trigger will unlock the AE and return to its initial AE state.<wbr/></p>
6609 <p>The precapture sequence should be triggered before starting a
6610 high-quality still capture for final metering decisions to
6611 be made,<wbr/> and for firing pre-capture flash pulses to estimate
6612 scene brightness and required final capture flash power,<wbr/> when
6613 the flash is enabled.<wbr/></p>
6614 <p>Normally,<wbr/> this entry should be set to START for only a
6615 single request,<wbr/> and the application should wait until the
6616 sequence completes before starting a new one.<wbr/></p>
6617 <p>When a precapture metering sequence is finished,<wbr/> the camera device
6618 may lock the auto-exposure routine internally to be able to accurately expose the
6619 subsequent still capture image (<code><a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE</code>).<wbr/>
6620 For this case,<wbr/> the AE may not resume normal scan if no subsequent still capture is
6621 submitted.<wbr/> To ensure that the AE routine restarts normal scan,<wbr/> the application should
6622 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
6623 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
6624 still capture request after the precapture sequence completes.<wbr/> Alternatively,<wbr/> for
6625 API level 23 or newer devices,<wbr/> the CANCEL can be used to unlock the camera device
6626 internally locked AE if the application doesn't submit a still capture request after
6627 the AE precapture trigger.<wbr/> Note that,<wbr/> the CANCEL was added in API level 23,<wbr/> and must not
6628 be used in devices that have earlier API levels.<wbr/></p>
6629 <p>The exact effect of auto-exposure (AE) precapture trigger
6630 depends on the current AE mode and state; see
6631 <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> for AE precapture state transition
6633 <p>On LEGACY-level devices,<wbr/> the precapture trigger is not supported;
6634 capturing a high-resolution JPEG image will automatically trigger a
6635 precapture sequence before the high-resolution capture,<wbr/> including
6636 potentially firing a pre-capture flash.<wbr/></p>
6637 <p>Using the precapture trigger and the auto-focus trigger <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>
6638 simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between
6639 the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a
6640 focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous
6641 trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and
6642 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
6644 <p>If both the precapture and the auto-focus trigger are activated on the same request,<wbr/> then
6645 the camera device will complete them in the optimal order for that device.<wbr/></p>
6649 <tr class="entries_header">
6650 <th class="th_details" colspan="6">HAL Implementation Details</th>
6652 <tr class="entry_cont">
6653 <td class="entry_details" colspan="6">
6654 <p>The HAL must support triggering the AE precapture trigger while an AF trigger is active
6655 (and vice versa),<wbr/> or at the same time as the AF trigger.<wbr/> It is acceptable for the HAL to
6656 treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the
6657 AE trigger.<wbr/> Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/>
6658 to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p>
6662 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6663 <!-- end of entry -->
6666 <tr class="entry" id="dynamic_android.control.aeState">
6667 <td class="entry_name
6669 android.<wbr/>control.<wbr/>ae<wbr/>State
6671 <td class="entry_type">
6672 <span class="entry_type_name entry_type_name_enum">byte</span>
6674 <span class="entry_type_visibility"> [public]</span>
6677 <span class="entry_type_hwlevel">[limited] </span>
6681 <ul class="entry_type_enum">
6683 <span class="entry_type_enum_name">INACTIVE</span>
6684 <span class="entry_type_enum_notes"><p>AE is off or recently reset.<wbr/></p>
6685 <p>When a camera device is opened,<wbr/> it starts in
6686 this state.<wbr/> This is a transient state,<wbr/> the camera device may skip reporting
6687 this state in capture result.<wbr/></p></span>
6690 <span class="entry_type_enum_name">SEARCHING</span>
6691 <span class="entry_type_enum_notes"><p>AE doesn't yet have a good set of control values
6692 for the current scene.<wbr/></p>
6693 <p>This is a transient state,<wbr/> the camera device may skip
6694 reporting this state in capture result.<wbr/></p></span>
6697 <span class="entry_type_enum_name">CONVERGED</span>
6698 <span class="entry_type_enum_notes"><p>AE has a good set of control values for the
6699 current scene.<wbr/></p></span>
6702 <span class="entry_type_enum_name">LOCKED</span>
6703 <span class="entry_type_enum_notes"><p>AE has been locked.<wbr/></p></span>
6706 <span class="entry_type_enum_name">FLASH_REQUIRED</span>
6707 <span class="entry_type_enum_notes"><p>AE has a good set of control values,<wbr/> but flash
6708 needs to be fired for good quality still
6709 capture.<wbr/></p></span>
6712 <span class="entry_type_enum_name">PRECAPTURE</span>
6713 <span class="entry_type_enum_notes"><p>AE has been asked to do a precapture sequence
6714 and is currently executing it.<wbr/></p>
6715 <p>Precapture can be triggered through setting
6716 <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> to START.<wbr/> Currently
6717 active and completed (if it causes camera device internal AE lock) precapture
6718 metering sequence can be canceled through setting
6719 <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> to CANCEL.<wbr/></p>
6720 <p>Once PRECAPTURE completes,<wbr/> AE will transition to CONVERGED
6721 or FLASH_<wbr/>REQUIRED as appropriate.<wbr/> This is a transient
6722 state,<wbr/> the camera device may skip reporting this state in
6723 capture result.<wbr/></p></span>
6727 </td> <!-- entry_type -->
6729 <td class="entry_description">
6730 <p>Current state of the auto-exposure (AE) algorithm.<wbr/></p>
6733 <td class="entry_units">
6736 <td class="entry_range">
6739 <td class="entry_hal_version">
6743 <td class="entry_tags">
6747 <tr class="entries_header">
6748 <th class="th_details" colspan="6">Details</th>
6750 <tr class="entry_cont">
6751 <td class="entry_details" colspan="6">
6752 <p>Switching between or enabling AE modes (<a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>) always
6753 resets the AE state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/>
6754 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
6755 the algorithm states to INACTIVE.<wbr/></p>
6756 <p>The camera device can do several state transitions between two results,<wbr/> if it is
6757 allowed by the state transition table.<wbr/> For example: INACTIVE may never actually be
6758 seen in a result.<wbr/></p>
6759 <p>The state in the result is the state for this image (in sync with this image): if
6760 AE state becomes CONVERGED,<wbr/> then the image data associated with this result should
6761 be good to use.<wbr/></p>
6762 <p>Below are state transition tables for different AE modes.<wbr/></p>
6766 <th align="center">State</th>
6767 <th align="center">Transition Cause</th>
6768 <th align="center">New State</th>
6769 <th align="center">Notes</th>
6774 <td align="center">INACTIVE</td>
6775 <td align="center"></td>
6776 <td align="center">INACTIVE</td>
6777 <td align="center">Camera device auto exposure algorithm is disabled</td>
6781 <p>When <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is AE_<wbr/>MODE_<wbr/>ON_<wbr/>*:</p>
6785 <th align="center">State</th>
6786 <th align="center">Transition Cause</th>
6787 <th align="center">New State</th>
6788 <th align="center">Notes</th>
6793 <td align="center">INACTIVE</td>
6794 <td align="center">Camera device initiates AE scan</td>
6795 <td align="center">SEARCHING</td>
6796 <td align="center">Values changing</td>
6799 <td align="center">INACTIVE</td>
6800 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
6801 <td align="center">LOCKED</td>
6802 <td align="center">Values locked</td>
6805 <td align="center">SEARCHING</td>
6806 <td align="center">Camera device finishes AE scan</td>
6807 <td align="center">CONVERGED</td>
6808 <td align="center">Good values,<wbr/> not changing</td>
6811 <td align="center">SEARCHING</td>
6812 <td align="center">Camera device finishes AE scan</td>
6813 <td align="center">FLASH_<wbr/>REQUIRED</td>
6814 <td align="center">Converged but too dark w/<wbr/>o flash</td>
6817 <td align="center">SEARCHING</td>
6818 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
6819 <td align="center">LOCKED</td>
6820 <td align="center">Values locked</td>
6823 <td align="center">CONVERGED</td>
6824 <td align="center">Camera device initiates AE scan</td>
6825 <td align="center">SEARCHING</td>
6826 <td align="center">Values changing</td>
6829 <td align="center">CONVERGED</td>
6830 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
6831 <td align="center">LOCKED</td>
6832 <td align="center">Values locked</td>
6835 <td align="center">FLASH_<wbr/>REQUIRED</td>
6836 <td align="center">Camera device initiates AE scan</td>
6837 <td align="center">SEARCHING</td>
6838 <td align="center">Values changing</td>
6841 <td align="center">FLASH_<wbr/>REQUIRED</td>
6842 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
6843 <td align="center">LOCKED</td>
6844 <td align="center">Values locked</td>
6847 <td align="center">LOCKED</td>
6848 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td>
6849 <td align="center">SEARCHING</td>
6850 <td align="center">Values not good after unlock</td>
6853 <td align="center">LOCKED</td>
6854 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td>
6855 <td align="center">CONVERGED</td>
6856 <td align="center">Values good after unlock</td>
6859 <td align="center">LOCKED</td>
6860 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td>
6861 <td align="center">FLASH_<wbr/>REQUIRED</td>
6862 <td align="center">Exposure good,<wbr/> but too dark</td>
6865 <td align="center">PRECAPTURE</td>
6866 <td align="center">Sequence done.<wbr/> <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td>
6867 <td align="center">CONVERGED</td>
6868 <td align="center">Ready for high-quality capture</td>
6871 <td align="center">PRECAPTURE</td>
6872 <td align="center">Sequence done.<wbr/> <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
6873 <td align="center">LOCKED</td>
6874 <td align="center">Ready for high-quality capture</td>
6877 <td align="center">LOCKED</td>
6878 <td align="center">aeLock is ON and aePrecaptureTrigger is START</td>
6879 <td align="center">LOCKED</td>
6880 <td align="center">Precapture trigger is ignored when AE is already locked</td>
6883 <td align="center">LOCKED</td>
6884 <td align="center">aeLock is ON and aePrecaptureTrigger is CANCEL</td>
6885 <td align="center">LOCKED</td>
6886 <td align="center">Precapture trigger is ignored when AE is already locked</td>
6889 <td align="center">Any state (excluding LOCKED)</td>
6890 <td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is START</td>
6891 <td align="center">PRECAPTURE</td>
6892 <td align="center">Start AE precapture metering sequence</td>
6895 <td align="center">Any state (excluding LOCKED)</td>
6896 <td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL</td>
6897 <td align="center">INACTIVE</td>
6898 <td align="center">Currently active precapture metering sequence is canceled</td>
6902 <p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen
6903 without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that
6904 can be skipped in that manner is called a transient state.<wbr/></p>
6905 <p>For example,<wbr/> for above AE modes (AE_<wbr/>MODE_<wbr/>ON_<wbr/>*),<wbr/> in addition to the state transitions
6906 listed in above table,<wbr/> it is also legal for the camera device to skip one or more
6907 transient states between two results.<wbr/> See below table for examples:</p>
6911 <th align="center">State</th>
6912 <th align="center">Transition Cause</th>
6913 <th align="center">New State</th>
6914 <th align="center">Notes</th>
6919 <td align="center">INACTIVE</td>
6920 <td align="center">Camera device finished AE scan</td>
6921 <td align="center">CONVERGED</td>
6922 <td align="center">Values are already good,<wbr/> transient states are skipped by camera device.<wbr/></td>
6925 <td align="center">Any state (excluding LOCKED)</td>
6926 <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>
6927 <td align="center">FLASH_<wbr/>REQUIRED</td>
6928 <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>
6931 <td align="center">Any state (excluding LOCKED)</td>
6932 <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>
6933 <td align="center">CONVERGED</td>
6934 <td align="center">Converged after a precapture sequence,<wbr/> transient states are skipped by camera device.<wbr/></td>
6937 <td align="center">Any state (excluding LOCKED)</td>
6938 <td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL,<wbr/> converged</td>
6939 <td align="center">FLASH_<wbr/>REQUIRED</td>
6940 <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>
6943 <td align="center">Any state (excluding LOCKED)</td>
6944 <td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL,<wbr/> converged</td>
6945 <td align="center">CONVERGED</td>
6946 <td align="center">Converged after a precapture sequenceis canceled,<wbr/> transient states are skipped by camera device.<wbr/></td>
6949 <td align="center">CONVERGED</td>
6950 <td align="center">Camera device finished AE scan</td>
6951 <td align="center">FLASH_<wbr/>REQUIRED</td>
6952 <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>
6955 <td align="center">FLASH_<wbr/>REQUIRED</td>
6956 <td align="center">Camera device finished AE scan</td>
6957 <td align="center">CONVERGED</td>
6958 <td align="center">Converged after a new scan,<wbr/> transient states are skipped by camera device.<wbr/></td>
6966 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6967 <!-- end of entry -->
6970 <tr class="entry" id="dynamic_android.control.afMode">
6971 <td class="entry_name
6973 android.<wbr/>control.<wbr/>af<wbr/>Mode
6975 <td class="entry_type">
6976 <span class="entry_type_name entry_type_name_enum">byte</span>
6978 <span class="entry_type_visibility"> [public]</span>
6981 <span class="entry_type_hwlevel">[legacy] </span>
6985 <ul class="entry_type_enum">
6987 <span class="entry_type_enum_name">OFF</span>
6988 <span class="entry_type_enum_notes"><p>The auto-focus routine does not control the lens;
6989 <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> is controlled by the
6990 application.<wbr/></p></span>
6993 <span class="entry_type_enum_name">AUTO</span>
6994 <span class="entry_type_enum_notes"><p>Basic automatic focus mode.<wbr/></p>
6995 <p>In this mode,<wbr/> the lens does not move unless
6996 the autofocus trigger action is called.<wbr/> When that trigger
6997 is activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
6998 the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/></p>
6999 <p>Always supported if lens is not fixed focus.<wbr/></p>
7000 <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
7001 is fixed-focus.<wbr/></p>
7002 <p>Triggering AF_<wbr/>CANCEL resets the lens position to default,<wbr/>
7003 and sets the AF state to INACTIVE.<wbr/></p></span>
7006 <span class="entry_type_enum_name">MACRO</span>
7007 <span class="entry_type_enum_notes"><p>Close-up focusing mode.<wbr/></p>
7008 <p>In this mode,<wbr/> the lens does not move unless the
7009 autofocus trigger action is called.<wbr/> When that trigger is
7010 activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
7011 the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/> This
7012 mode is optimized for focusing on objects very close to
7013 the camera.<wbr/></p>
7014 <p>When that trigger is activated,<wbr/> AF will transition to
7015 ACTIVE_<wbr/>SCAN,<wbr/> then to the outcome of the scan (FOCUSED or
7016 NOT_<wbr/>FOCUSED).<wbr/> Triggering cancel AF resets the lens
7017 position to default,<wbr/> and sets the AF state to
7018 INACTIVE.<wbr/></p></span>
7021 <span class="entry_type_enum_name">CONTINUOUS_VIDEO</span>
7022 <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
7023 position continually to attempt to provide a
7024 constantly-in-focus image stream.<wbr/></p>
7025 <p>The focusing behavior should be suitable for good quality
7026 video recording; typically this means slower focus
7027 movement and no overshoots.<wbr/> When the AF trigger is not
7028 involved,<wbr/> the AF algorithm should start in INACTIVE state,<wbr/>
7029 and then transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED
7030 states as appropriate.<wbr/> When the AF trigger is activated,<wbr/>
7031 the algorithm should immediately transition into
7032 AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the
7033 lens position until a cancel AF trigger is received.<wbr/></p>
7034 <p>Once cancel is received,<wbr/> the algorithm should transition
7035 back to INACTIVE and resume passive scan.<wbr/> Note that this
7036 behavior is not identical to CONTINUOUS_<wbr/>PICTURE,<wbr/> since an
7037 ongoing PASSIVE_<wbr/>SCAN must immediately be
7038 canceled.<wbr/></p></span>
7041 <span class="entry_type_enum_name">CONTINUOUS_PICTURE</span>
7042 <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
7043 position continually to attempt to provide a
7044 constantly-in-focus image stream.<wbr/></p>
7045 <p>The focusing behavior should be suitable for still image
7046 capture; typically this means focusing as fast as
7047 possible.<wbr/> When the AF trigger is not involved,<wbr/> the AF
7048 algorithm should start in INACTIVE state,<wbr/> and then
7049 transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED states as
7050 appropriate as it attempts to maintain focus.<wbr/> When the AF
7051 trigger is activated,<wbr/> the algorithm should finish its
7052 PASSIVE_<wbr/>SCAN if active,<wbr/> and then transition into
7053 AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the
7054 lens position until a cancel AF trigger is received.<wbr/></p>
7055 <p>When the AF cancel trigger is activated,<wbr/> the algorithm
7056 should transition back to INACTIVE and then act as if it
7057 has just been started.<wbr/></p></span>
7060 <span class="entry_type_enum_name">EDOF</span>
7061 <span class="entry_type_enum_notes"><p>Extended depth of field (digital focus) mode.<wbr/></p>
7062 <p>The camera device will produce images with an extended
7063 depth of field automatically; no special focusing
7064 operations need to be done before taking a picture.<wbr/></p>
7065 <p>AF triggers are ignored,<wbr/> and the AF state will always be
7066 INACTIVE.<wbr/></p></span>
7070 </td> <!-- entry_type -->
7072 <td class="entry_description">
7073 <p>Whether auto-focus (AF) is currently enabled,<wbr/> and what
7074 mode it is set to.<wbr/></p>
7077 <td class="entry_units">
7080 <td class="entry_range">
7081 <p><a href="#static_android.control.afAvailableModes">android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes</a></p>
7084 <td class="entry_hal_version">
7088 <td class="entry_tags">
7089 <ul class="entry_tags">
7090 <li><a href="#tag_BC">BC</a></li>
7095 <tr class="entries_header">
7096 <th class="th_details" colspan="6">Details</th>
7098 <tr class="entry_cont">
7099 <td class="entry_details" colspan="6">
7100 <p>Only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> = AUTO and the lens is not fixed focus
7101 (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
7102 when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> the behavior of AF is device
7103 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
7104 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>
7105 <p>If the lens is controlled by the camera device auto-focus algorithm,<wbr/>
7106 the camera device will report the current AF status in <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>
7107 in result metadata.<wbr/></p>
7111 <tr class="entries_header">
7112 <th class="th_details" colspan="6">HAL Implementation Details</th>
7114 <tr class="entry_cont">
7115 <td class="entry_details" colspan="6">
7116 <p>When afMode is AUTO or MACRO,<wbr/> the lens must not move until an AF trigger is sent in a
7117 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
7118 up with either FOCUSED_<wbr/>LOCKED or NOT_<wbr/>FOCUSED_<wbr/>LOCKED state (see
7119 <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
7120 locked and will not move.<wbr/> If camera movement (e.<wbr/>g.<wbr/> tilting camera) causes the lens to move
7121 after the lens is locked,<wbr/> the HAL must compensate this movement appropriately such that
7122 the same focal plane remains in focus.<wbr/></p>
7123 <p>When afMode is one of the continuous auto focus modes,<wbr/> the HAL is free to start a AF
7124 scan whenever it's not locked.<wbr/> When the lens is locked after an AF trigger
7125 (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
7126 same lock behavior as above.<wbr/></p>
7127 <p>When afMode is OFF,<wbr/> the application controls focus manually.<wbr/> The accuracy of the
7128 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/>
7129 However,<wbr/> the lens must not move regardless of the camera movement for any focus distance
7130 manual control.<wbr/></p>
7131 <p>To put this in concrete terms,<wbr/> if the camera has lens elements which may move based on
7132 camera orientation or motion (e.<wbr/>g.<wbr/> due to gravity),<wbr/> then the HAL must drive the lens to
7133 remain in a fixed position invariant to the camera's orientation or motion,<wbr/> for example,<wbr/>
7134 by using accelerometer measurements in the lens control logic.<wbr/> This is a typical issue
7135 that will arise on camera modules with open-loop VCMs.<wbr/></p>
7139 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
7140 <!-- end of entry -->
7143 <tr class="entry" id="dynamic_android.control.afRegions">
7144 <td class="entry_name
7146 android.<wbr/>control.<wbr/>af<wbr/>Regions
7148 <td class="entry_type">
7149 <span class="entry_type_name">int32</span>
7150 <span class="entry_type_container">x</span>
7152 <span class="entry_type_array">
7155 <span class="entry_type_visibility"> [public as meteringRectangle]</span>
7162 </td> <!-- entry_type -->
7164 <td class="entry_description">
7165 <p>List of metering areas to use for auto-focus.<wbr/></p>
7168 <td class="entry_units">
7169 Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
7172 <td class="entry_range">
7173 <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
7174 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
7177 <td class="entry_hal_version">
7181 <td class="entry_tags">
7182 <ul class="entry_tags">
7183 <li><a href="#tag_BC">BC</a></li>
7188 <tr class="entries_header">
7189 <th class="th_details" colspan="6">Details</th>
7191 <tr class="entry_cont">
7192 <td class="entry_details" colspan="6">
7193 <p>Not available if <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a> is 0.<wbr/>
7194 Otherwise will always be present.<wbr/></p>
7195 <p>The maximum number of focus areas supported by the device is determined by the value
7196 of <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a>.<wbr/></p>
7197 <p>The coordinate system is based on the active pixel array,<wbr/>
7198 with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
7199 (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
7200 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
7201 bottom-right pixel in the active pixel array.<wbr/></p>
7202 <p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight
7203 for every pixel in the area.<wbr/> This means that a large metering area
7204 with the same weight as a smaller area will have more effect in
7205 the metering result.<wbr/> Metering areas can partially overlap and the
7206 camera device will add the weights in the overlap region.<wbr/></p>
7207 <p>The weights are relative to weights of other metering regions,<wbr/> so if only one region
7208 is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0 weight is
7210 <p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
7211 camera device.<wbr/></p>
7212 <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
7213 capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
7214 region and output only the intersection rectangle as the metering region in the result
7215 metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and
7216 not reported in the result metadata.<wbr/></p>
7220 <tr class="entries_header">
7221 <th class="th_details" colspan="6">HAL Implementation Details</th>
7223 <tr class="entry_cont">
7224 <td class="entry_details" colspan="6">
7225 <p>The HAL level representation of MeteringRectangle[] is a
7226 int[5 * area_<wbr/>count].<wbr/>
7227 Every five elements represent a metering region of
7228 (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
7229 The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
7230 exclusive on xmax and ymax.<wbr/></p>
7234 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
7235 <!-- end of entry -->
7238 <tr class="entry" id="dynamic_android.control.afTrigger">
7239 <td class="entry_name
7241 android.<wbr/>control.<wbr/>af<wbr/>Trigger
7243 <td class="entry_type">
7244 <span class="entry_type_name entry_type_name_enum">byte</span>
7246 <span class="entry_type_visibility"> [public]</span>
7249 <span class="entry_type_hwlevel">[legacy] </span>
7253 <ul class="entry_type_enum">
7255 <span class="entry_type_enum_name">IDLE</span>
7256 <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
7259 <span class="entry_type_enum_name">START</span>
7260 <span class="entry_type_enum_notes"><p>Autofocus will trigger now.<wbr/></p></span>
7263 <span class="entry_type_enum_name">CANCEL</span>
7264 <span class="entry_type_enum_notes"><p>Autofocus will return to its initial
7265 state,<wbr/> and cancel any currently active trigger.<wbr/></p></span>
7269 </td> <!-- entry_type -->
7271 <td class="entry_description">
7272 <p>Whether the camera device will trigger autofocus for this request.<wbr/></p>
7275 <td class="entry_units">
7278 <td class="entry_range">
7281 <td class="entry_hal_version">
7285 <td class="entry_tags">
7286 <ul class="entry_tags">
7287 <li><a href="#tag_BC">BC</a></li>
7292 <tr class="entries_header">
7293 <th class="th_details" colspan="6">Details</th>
7295 <tr class="entry_cont">
7296 <td class="entry_details" colspan="6">
7297 <p>This entry is normally set to IDLE,<wbr/> or is not
7298 included at all in the request settings.<wbr/></p>
7299 <p>When included and set to START,<wbr/> the camera device will trigger the
7300 autofocus algorithm.<wbr/> If autofocus is disabled,<wbr/> this trigger has no effect.<wbr/></p>
7301 <p>When set to CANCEL,<wbr/> the camera device will cancel any active trigger,<wbr/>
7302 and return to its initial AF state.<wbr/></p>
7303 <p>Generally,<wbr/> applications should set this entry to START or CANCEL for only a
7304 single capture,<wbr/> and then return it to IDLE (or not set at all).<wbr/> Specifying
7305 START for multiple captures in a row means restarting the AF operation over
7306 and over again.<wbr/></p>
7307 <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>
7308 <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>
7309 simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between
7310 the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a
7311 focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous
7312 trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and
7313 changes to <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>,<wbr/> for example.<wbr/></p>
7317 <tr class="entries_header">
7318 <th class="th_details" colspan="6">HAL Implementation Details</th>
7320 <tr class="entry_cont">
7321 <td class="entry_details" colspan="6">
7322 <p>The HAL must support triggering the AF trigger while an AE precapture trigger is active
7323 (and vice versa),<wbr/> or at the same time as the AE trigger.<wbr/> It is acceptable for the HAL to
7324 treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the
7325 AE trigger.<wbr/> Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/>
7326 to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p>
7330 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
7331 <!-- end of entry -->
7334 <tr class="entry" id="dynamic_android.control.afState">
7335 <td class="entry_name
7337 android.<wbr/>control.<wbr/>af<wbr/>State
7339 <td class="entry_type">
7340 <span class="entry_type_name entry_type_name_enum">byte</span>
7342 <span class="entry_type_visibility"> [public]</span>
7345 <span class="entry_type_hwlevel">[legacy] </span>
7349 <ul class="entry_type_enum">
7351 <span class="entry_type_enum_name">INACTIVE</span>
7352 <span class="entry_type_enum_notes"><p>AF is off or has not yet tried to scan/<wbr/>been asked
7354 <p>When a camera device is opened,<wbr/> it starts in this
7355 state.<wbr/> This is a transient state,<wbr/> the camera device may
7356 skip reporting this state in capture
7357 result.<wbr/></p></span>
7360 <span class="entry_type_enum_name">PASSIVE_SCAN</span>
7361 <span class="entry_type_enum_notes"><p>AF is currently performing an AF scan initiated the
7362 camera device in a continuous autofocus mode.<wbr/></p>
7363 <p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient
7364 state,<wbr/> the camera device may skip reporting this state in
7365 capture result.<wbr/></p></span>
7368 <span class="entry_type_enum_name">PASSIVE_FOCUSED</span>
7369 <span class="entry_type_enum_notes"><p>AF currently believes it is in focus,<wbr/> but may
7370 restart scanning at any time.<wbr/></p>
7371 <p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient
7372 state,<wbr/> the camera device may skip reporting this state in
7373 capture result.<wbr/></p></span>
7376 <span class="entry_type_enum_name">ACTIVE_SCAN</span>
7377 <span class="entry_type_enum_notes"><p>AF is performing an AF scan because it was
7378 triggered by AF trigger.<wbr/></p>
7379 <p>Only used by AUTO or MACRO AF modes.<wbr/> This is a transient
7380 state,<wbr/> the camera device may skip reporting this state in
7381 capture result.<wbr/></p></span>
7384 <span class="entry_type_enum_name">FOCUSED_LOCKED</span>
7385 <span class="entry_type_enum_notes"><p>AF believes it is focused correctly and has locked
7387 <p>This state is reached only after an explicit START AF trigger has been
7388 sent (<a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>),<wbr/> when good focus has been obtained.<wbr/></p>
7389 <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
7390 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>
7393 <span class="entry_type_enum_name">NOT_FOCUSED_LOCKED</span>
7394 <span class="entry_type_enum_notes"><p>AF has failed to focus successfully and has locked
7396 <p>This state is reached only after an explicit START AF trigger has been
7397 sent (<a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>),<wbr/> when good focus cannot be obtained.<wbr/></p>
7398 <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
7399 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>
7402 <span class="entry_type_enum_name">PASSIVE_UNFOCUSED</span>
7403 <span class="entry_type_enum_notes"><p>AF finished a passive scan without finding focus,<wbr/>
7404 and may restart scanning at any time.<wbr/></p>
7405 <p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient state,<wbr/> the camera
7406 device may skip reporting this state in capture result.<wbr/></p>
7407 <p>LEGACY camera devices do not support this state.<wbr/> When a passive
7408 scan has finished,<wbr/> it will always go to PASSIVE_<wbr/>FOCUSED.<wbr/></p></span>
7412 </td> <!-- entry_type -->
7414 <td class="entry_description">
7415 <p>Current state of auto-focus (AF) algorithm.<wbr/></p>
7418 <td class="entry_units">
7421 <td class="entry_range">
7424 <td class="entry_hal_version">
7428 <td class="entry_tags">
7432 <tr class="entries_header">
7433 <th class="th_details" colspan="6">Details</th>
7435 <tr class="entry_cont">
7436 <td class="entry_details" colspan="6">
7437 <p>Switching between or enabling AF modes (<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>) always
7438 resets the AF state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/>
7439 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
7440 the algorithm states to INACTIVE.<wbr/></p>
7441 <p>The camera device can do several state transitions between two results,<wbr/> if it is
7442 allowed by the state transition table.<wbr/> For example: INACTIVE may never actually be
7443 seen in a result.<wbr/></p>
7444 <p>The state in the result is the state for this image (in sync with this image): if
7445 AF state becomes FOCUSED,<wbr/> then the image data associated with this result should
7447 <p>Below are state transition tables for different AF modes.<wbr/></p>
7448 <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>
7452 <th align="center">State</th>
7453 <th align="center">Transition Cause</th>
7454 <th align="center">New State</th>
7455 <th align="center">Notes</th>
7460 <td align="center">INACTIVE</td>
7461 <td align="center"></td>
7462 <td align="center">INACTIVE</td>
7463 <td align="center">Never changes</td>
7467 <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>
7471 <th align="center">State</th>
7472 <th align="center">Transition Cause</th>
7473 <th align="center">New State</th>
7474 <th align="center">Notes</th>
7479 <td align="center">INACTIVE</td>
7480 <td align="center">AF_<wbr/>TRIGGER</td>
7481 <td align="center">ACTIVE_<wbr/>SCAN</td>
7482 <td align="center">Start AF sweep,<wbr/> Lens now moving</td>
7485 <td align="center">ACTIVE_<wbr/>SCAN</td>
7486 <td align="center">AF sweep done</td>
7487 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7488 <td align="center">Focused,<wbr/> Lens now locked</td>
7491 <td align="center">ACTIVE_<wbr/>SCAN</td>
7492 <td align="center">AF sweep done</td>
7493 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7494 <td align="center">Not focused,<wbr/> Lens now locked</td>
7497 <td align="center">ACTIVE_<wbr/>SCAN</td>
7498 <td align="center">AF_<wbr/>CANCEL</td>
7499 <td align="center">INACTIVE</td>
7500 <td align="center">Cancel/<wbr/>reset AF,<wbr/> Lens now locked</td>
7503 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7504 <td align="center">AF_<wbr/>CANCEL</td>
7505 <td align="center">INACTIVE</td>
7506 <td align="center">Cancel/<wbr/>reset AF</td>
7509 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7510 <td align="center">AF_<wbr/>TRIGGER</td>
7511 <td align="center">ACTIVE_<wbr/>SCAN</td>
7512 <td align="center">Start new sweep,<wbr/> Lens now moving</td>
7515 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7516 <td align="center">AF_<wbr/>CANCEL</td>
7517 <td align="center">INACTIVE</td>
7518 <td align="center">Cancel/<wbr/>reset AF</td>
7521 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7522 <td align="center">AF_<wbr/>TRIGGER</td>
7523 <td align="center">ACTIVE_<wbr/>SCAN</td>
7524 <td align="center">Start new sweep,<wbr/> Lens now moving</td>
7527 <td align="center">Any state</td>
7528 <td align="center">Mode change</td>
7529 <td align="center">INACTIVE</td>
7530 <td align="center"></td>
7534 <p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen
7535 without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that
7536 can be skipped in that manner is called a transient state.<wbr/></p>
7537 <p>For example,<wbr/> for these AF modes (AF_<wbr/>MODE_<wbr/>AUTO and AF_<wbr/>MODE_<wbr/>MACRO),<wbr/> in addition to the
7538 state transitions listed in above table,<wbr/> it is also legal for the camera device to skip
7539 one or more transient states between two results.<wbr/> See below table for examples:</p>
7543 <th align="center">State</th>
7544 <th align="center">Transition Cause</th>
7545 <th align="center">New State</th>
7546 <th align="center">Notes</th>
7551 <td align="center">INACTIVE</td>
7552 <td align="center">AF_<wbr/>TRIGGER</td>
7553 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7554 <td align="center">Focus is already good or good after a scan,<wbr/> lens is now locked.<wbr/></td>
7557 <td align="center">INACTIVE</td>
7558 <td align="center">AF_<wbr/>TRIGGER</td>
7559 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7560 <td align="center">Focus failed after a scan,<wbr/> lens is now locked.<wbr/></td>
7563 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7564 <td align="center">AF_<wbr/>TRIGGER</td>
7565 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7566 <td align="center">Focus is already good or good after a scan,<wbr/> lens is now locked.<wbr/></td>
7569 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7570 <td align="center">AF_<wbr/>TRIGGER</td>
7571 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7572 <td align="center">Focus is good after a scan,<wbr/> lens is not locked.<wbr/></td>
7576 <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>
7580 <th align="center">State</th>
7581 <th align="center">Transition Cause</th>
7582 <th align="center">New State</th>
7583 <th align="center">Notes</th>
7588 <td align="center">INACTIVE</td>
7589 <td align="center">Camera device initiates new scan</td>
7590 <td align="center">PASSIVE_<wbr/>SCAN</td>
7591 <td align="center">Start AF scan,<wbr/> Lens now moving</td>
7594 <td align="center">INACTIVE</td>
7595 <td align="center">AF_<wbr/>TRIGGER</td>
7596 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7597 <td align="center">AF state query,<wbr/> Lens now locked</td>
7600 <td align="center">PASSIVE_<wbr/>SCAN</td>
7601 <td align="center">Camera device completes current scan</td>
7602 <td align="center">PASSIVE_<wbr/>FOCUSED</td>
7603 <td align="center">End AF scan,<wbr/> Lens now locked</td>
7606 <td align="center">PASSIVE_<wbr/>SCAN</td>
7607 <td align="center">Camera device fails current scan</td>
7608 <td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7609 <td align="center">End AF scan,<wbr/> Lens now locked</td>
7612 <td align="center">PASSIVE_<wbr/>SCAN</td>
7613 <td align="center">AF_<wbr/>TRIGGER</td>
7614 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7615 <td align="center">Immediate transition,<wbr/> if focus is good.<wbr/> Lens now locked</td>
7618 <td align="center">PASSIVE_<wbr/>SCAN</td>
7619 <td align="center">AF_<wbr/>TRIGGER</td>
7620 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7621 <td align="center">Immediate transition,<wbr/> if focus is bad.<wbr/> Lens now locked</td>
7624 <td align="center">PASSIVE_<wbr/>SCAN</td>
7625 <td align="center">AF_<wbr/>CANCEL</td>
7626 <td align="center">INACTIVE</td>
7627 <td align="center">Reset lens position,<wbr/> Lens now locked</td>
7630 <td align="center">PASSIVE_<wbr/>FOCUSED</td>
7631 <td align="center">Camera device initiates new scan</td>
7632 <td align="center">PASSIVE_<wbr/>SCAN</td>
7633 <td align="center">Start AF scan,<wbr/> Lens now moving</td>
7636 <td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7637 <td align="center">Camera device initiates new scan</td>
7638 <td align="center">PASSIVE_<wbr/>SCAN</td>
7639 <td align="center">Start AF scan,<wbr/> Lens now moving</td>
7642 <td align="center">PASSIVE_<wbr/>FOCUSED</td>
7643 <td align="center">AF_<wbr/>TRIGGER</td>
7644 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7645 <td align="center">Immediate transition,<wbr/> lens now locked</td>
7648 <td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7649 <td align="center">AF_<wbr/>TRIGGER</td>
7650 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7651 <td align="center">Immediate transition,<wbr/> lens now locked</td>
7654 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7655 <td align="center">AF_<wbr/>TRIGGER</td>
7656 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7657 <td align="center">No effect</td>
7660 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7661 <td align="center">AF_<wbr/>CANCEL</td>
7662 <td align="center">INACTIVE</td>
7663 <td align="center">Restart AF scan</td>
7666 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7667 <td align="center">AF_<wbr/>TRIGGER</td>
7668 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7669 <td align="center">No effect</td>
7672 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7673 <td align="center">AF_<wbr/>CANCEL</td>
7674 <td align="center">INACTIVE</td>
7675 <td align="center">Restart AF scan</td>
7679 <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>
7683 <th align="center">State</th>
7684 <th align="center">Transition Cause</th>
7685 <th align="center">New State</th>
7686 <th align="center">Notes</th>
7691 <td align="center">INACTIVE</td>
7692 <td align="center">Camera device initiates new scan</td>
7693 <td align="center">PASSIVE_<wbr/>SCAN</td>
7694 <td align="center">Start AF scan,<wbr/> Lens now moving</td>
7697 <td align="center">INACTIVE</td>
7698 <td align="center">AF_<wbr/>TRIGGER</td>
7699 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7700 <td align="center">AF state query,<wbr/> Lens now locked</td>
7703 <td align="center">PASSIVE_<wbr/>SCAN</td>
7704 <td align="center">Camera device completes current scan</td>
7705 <td align="center">PASSIVE_<wbr/>FOCUSED</td>
7706 <td align="center">End AF scan,<wbr/> Lens now locked</td>
7709 <td align="center">PASSIVE_<wbr/>SCAN</td>
7710 <td align="center">Camera device fails current scan</td>
7711 <td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7712 <td align="center">End AF scan,<wbr/> Lens now locked</td>
7715 <td align="center">PASSIVE_<wbr/>SCAN</td>
7716 <td align="center">AF_<wbr/>TRIGGER</td>
7717 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7718 <td align="center">Eventual transition once the focus is good.<wbr/> Lens now locked</td>
7721 <td align="center">PASSIVE_<wbr/>SCAN</td>
7722 <td align="center">AF_<wbr/>TRIGGER</td>
7723 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7724 <td align="center">Eventual transition if cannot find focus.<wbr/> Lens now locked</td>
7727 <td align="center">PASSIVE_<wbr/>SCAN</td>
7728 <td align="center">AF_<wbr/>CANCEL</td>
7729 <td align="center">INACTIVE</td>
7730 <td align="center">Reset lens position,<wbr/> Lens now locked</td>
7733 <td align="center">PASSIVE_<wbr/>FOCUSED</td>
7734 <td align="center">Camera device initiates new scan</td>
7735 <td align="center">PASSIVE_<wbr/>SCAN</td>
7736 <td align="center">Start AF scan,<wbr/> Lens now moving</td>
7739 <td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7740 <td align="center">Camera device initiates new scan</td>
7741 <td align="center">PASSIVE_<wbr/>SCAN</td>
7742 <td align="center">Start AF scan,<wbr/> Lens now moving</td>
7745 <td align="center">PASSIVE_<wbr/>FOCUSED</td>
7746 <td align="center">AF_<wbr/>TRIGGER</td>
7747 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7748 <td align="center">Immediate trans.<wbr/> Lens now locked</td>
7751 <td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7752 <td align="center">AF_<wbr/>TRIGGER</td>
7753 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7754 <td align="center">Immediate trans.<wbr/> Lens now locked</td>
7757 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7758 <td align="center">AF_<wbr/>TRIGGER</td>
7759 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7760 <td align="center">No effect</td>
7763 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7764 <td align="center">AF_<wbr/>CANCEL</td>
7765 <td align="center">INACTIVE</td>
7766 <td align="center">Restart AF scan</td>
7769 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7770 <td align="center">AF_<wbr/>TRIGGER</td>
7771 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7772 <td align="center">No effect</td>
7775 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7776 <td align="center">AF_<wbr/>CANCEL</td>
7777 <td align="center">INACTIVE</td>
7778 <td align="center">Restart AF scan</td>
7782 <p>When switch between AF_<wbr/>MODE_<wbr/>CONTINUOUS_<wbr/>* (CAF modes) and AF_<wbr/>MODE_<wbr/>AUTO/<wbr/>AF_<wbr/>MODE_<wbr/>MACRO
7783 (AUTO modes),<wbr/> the initial INACTIVE or PASSIVE_<wbr/>SCAN states may be skipped by the
7784 camera device.<wbr/> When a trigger is included in a mode switch request,<wbr/> the trigger
7785 will be evaluated in the context of the new mode in the request.<wbr/>
7786 See below table for examples:</p>
7790 <th align="center">State</th>
7791 <th align="center">Transition Cause</th>
7792 <th align="center">New State</th>
7793 <th align="center">Notes</th>
7798 <td align="center">any state</td>
7799 <td align="center">CAF-->AUTO mode switch</td>
7800 <td align="center">INACTIVE</td>
7801 <td align="center">Mode switch without trigger,<wbr/> initial state must be INACTIVE</td>
7804 <td align="center">any state</td>
7805 <td align="center">CAF-->AUTO mode switch with AF_<wbr/>TRIGGER</td>
7806 <td align="center">trigger-reachable states from INACTIVE</td>
7807 <td align="center">Mode switch with trigger,<wbr/> INACTIVE is skipped</td>
7810 <td align="center">any state</td>
7811 <td align="center">AUTO-->CAF mode switch</td>
7812 <td align="center">passively reachable states from INACTIVE</td>
7813 <td align="center">Mode switch without trigger,<wbr/> passive transient state is skipped</td>
7821 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
7822 <!-- end of entry -->
7825 <tr class="entry" id="dynamic_android.control.afTriggerId">
7826 <td class="entry_name
7827 entry_name_deprecated
7829 android.<wbr/>control.<wbr/>af<wbr/>Trigger<wbr/>Id
7831 <td class="entry_type">
7832 <span class="entry_type_name">int32</span>
7834 <span class="entry_type_visibility"> [system]</span>
7838 <span class="entry_type_deprecated">[deprecated] </span>
7842 </td> <!-- entry_type -->
7844 <td class="entry_description">
7845 <p>The ID sent with the latest
7846 CAMERA2_<wbr/>TRIGGER_<wbr/>AUTOFOCUS call</p>
7849 <td class="entry_units">
7852 <td class="entry_range">
7853 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
7856 <td class="entry_hal_version">
7860 <td class="entry_tags">
7864 <tr class="entries_header">
7865 <th class="th_details" colspan="6">Details</th>
7867 <tr class="entry_cont">
7868 <td class="entry_details" colspan="6">
7869 <p>Must be 0 if no CAMERA2_<wbr/>TRIGGER_<wbr/>AUTOFOCUS trigger
7870 received yet by HAL.<wbr/> Always updated even if AF algorithm
7871 ignores the trigger</p>
7876 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
7877 <!-- end of entry -->
7880 <tr class="entry" id="dynamic_android.control.awbLock">
7881 <td class="entry_name
7883 android.<wbr/>control.<wbr/>awb<wbr/>Lock
7885 <td class="entry_type">
7886 <span class="entry_type_name entry_type_name_enum">byte</span>
7888 <span class="entry_type_visibility"> [public as boolean]</span>
7891 <span class="entry_type_hwlevel">[legacy] </span>
7895 <ul class="entry_type_enum">
7897 <span class="entry_type_enum_name">OFF</span>
7898 <span class="entry_type_enum_notes"><p>Auto-white balance lock is disabled; the AWB
7899 algorithm is free to update its parameters if in AUTO
7900 mode.<wbr/></p></span>
7903 <span class="entry_type_enum_name">ON</span>
7904 <span class="entry_type_enum_notes"><p>Auto-white balance lock is enabled; the AWB
7905 algorithm will not update its parameters while the lock
7906 is active.<wbr/></p></span>
7910 </td> <!-- entry_type -->
7912 <td class="entry_description">
7913 <p>Whether auto-white balance (AWB) is currently locked to its
7914 latest calculated values.<wbr/></p>
7917 <td class="entry_units">
7920 <td class="entry_range">
7923 <td class="entry_hal_version">
7927 <td class="entry_tags">
7928 <ul class="entry_tags">
7929 <li><a href="#tag_BC">BC</a></li>
7934 <tr class="entries_header">
7935 <th class="th_details" colspan="6">Details</th>
7937 <tr class="entry_cont">
7938 <td class="entry_details" colspan="6">
7939 <p>When set to <code>true</code> (ON),<wbr/> the AWB algorithm is locked to its latest parameters,<wbr/>
7940 and will not change color balance settings until the lock is set to <code>false</code> (OFF).<wbr/></p>
7941 <p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that
7942 get locked do not necessarily correspond to the settings that were present in the
7943 latest capture result received from the camera device,<wbr/> since additional captures
7944 and AWB updates may have occurred even before the result was sent out.<wbr/> If an
7945 application is switching between automatic and manual control and wishes to eliminate
7946 any flicker during the switch,<wbr/> the following procedure is recommended:</p>
7948 <li>Starting in auto-AWB mode:</li>
7950 <li>Wait for the first result to be output that has the AWB locked</li>
7951 <li>Copy AWB settings from that result into a request,<wbr/> set the request to manual AWB</li>
7952 <li>Submit the capture request,<wbr/> proceed to run manual AWB as desired.<wbr/></li>
7954 <p>Note that AWB lock is only meaningful when
7955 <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is in the AUTO mode; in other modes,<wbr/>
7956 AWB is already fixed to a specific setting.<wbr/></p>
7957 <p>Some LEGACY devices may not support ON; the value is then overridden to OFF.<wbr/></p>
7962 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
7963 <!-- end of entry -->
7966 <tr class="entry" id="dynamic_android.control.awbMode">
7967 <td class="entry_name
7969 android.<wbr/>control.<wbr/>awb<wbr/>Mode
7971 <td class="entry_type">
7972 <span class="entry_type_name entry_type_name_enum">byte</span>
7974 <span class="entry_type_visibility"> [public]</span>
7977 <span class="entry_type_hwlevel">[legacy] </span>
7981 <ul class="entry_type_enum">
7983 <span class="entry_type_enum_name">OFF</span>
7984 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled.<wbr/></p>
7985 <p>The application-selected color transform matrix
7986 (<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>) and gains
7987 (<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a>) are used by the camera
7988 device for manual white balance control.<wbr/></p></span>
7991 <span class="entry_type_enum_name">AUTO</span>
7992 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is active.<wbr/></p>
7993 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
7994 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
7995 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
7996 values used by the camera device for the transform and gains
7997 will be available in the capture result for this request.<wbr/></p></span>
8000 <span class="entry_type_enum_name">INCANDESCENT</span>
8001 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
8002 the camera device uses incandescent light as the assumed scene
8003 illumination for white balance.<wbr/></p>
8004 <p>While the exact white balance transforms are up to the
8005 camera device,<wbr/> they will approximately match the CIE
8006 standard illuminant A.<wbr/></p>
8007 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
8008 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
8009 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
8010 values used by the camera device for the transform and gains
8011 will be available in the capture result for this request.<wbr/></p></span>
8014 <span class="entry_type_enum_name">FLUORESCENT</span>
8015 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
8016 the camera device uses fluorescent light as the assumed scene
8017 illumination for white balance.<wbr/></p>
8018 <p>While the exact white balance transforms are up to the
8019 camera device,<wbr/> they will approximately match the CIE
8020 standard illuminant F2.<wbr/></p>
8021 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
8022 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
8023 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
8024 values used by the camera device for the transform and gains
8025 will be available in the capture result for this request.<wbr/></p></span>
8028 <span class="entry_type_enum_name">WARM_FLUORESCENT</span>
8029 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
8030 the camera device uses warm fluorescent light as the assumed scene
8031 illumination for white balance.<wbr/></p>
8032 <p>While the exact white balance transforms are up to the
8033 camera device,<wbr/> they will approximately match the CIE
8034 standard illuminant F4.<wbr/></p>
8035 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
8036 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
8037 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
8038 values used by the camera device for the transform and gains
8039 will be available in the capture result for this request.<wbr/></p></span>
8042 <span class="entry_type_enum_name">DAYLIGHT</span>
8043 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
8044 the camera device uses daylight light as the assumed scene
8045 illumination for white balance.<wbr/></p>
8046 <p>While the exact white balance transforms are up to the
8047 camera device,<wbr/> they will approximately match the CIE
8048 standard illuminant D65.<wbr/></p>
8049 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
8050 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
8051 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
8052 values used by the camera device for the transform and gains
8053 will be available in the capture result for this request.<wbr/></p></span>
8056 <span class="entry_type_enum_name">CLOUDY_DAYLIGHT</span>
8057 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
8058 the camera device uses cloudy daylight light as the assumed scene
8059 illumination for white balance.<wbr/></p>
8060 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
8061 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
8062 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
8063 values used by the camera device for the transform and gains
8064 will be available in the capture result for this request.<wbr/></p></span>
8067 <span class="entry_type_enum_name">TWILIGHT</span>
8068 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
8069 the camera device uses twilight light as the assumed scene
8070 illumination for white balance.<wbr/></p>
8071 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
8072 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
8073 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
8074 values used by the camera device for the transform and gains
8075 will be available in the capture result for this request.<wbr/></p></span>
8078 <span class="entry_type_enum_name">SHADE</span>
8079 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
8080 the camera device uses shade light as the assumed scene
8081 illumination for white balance.<wbr/></p>
8082 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
8083 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
8084 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
8085 values used by the camera device for the transform and gains
8086 will be available in the capture result for this request.<wbr/></p></span>
8090 </td> <!-- entry_type -->
8092 <td class="entry_description">
8093 <p>Whether auto-white balance (AWB) is currently setting the color
8094 transform fields,<wbr/> and what its illumination target
8098 <td class="entry_units">
8101 <td class="entry_range">
8102 <p><a href="#static_android.control.awbAvailableModes">android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes</a></p>
8105 <td class="entry_hal_version">
8109 <td class="entry_tags">
8110 <ul class="entry_tags">
8111 <li><a href="#tag_BC">BC</a></li>
8116 <tr class="entries_header">
8117 <th class="th_details" colspan="6">Details</th>
8119 <tr class="entry_cont">
8120 <td class="entry_details" colspan="6">
8121 <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is AUTO.<wbr/></p>
8122 <p>When set to the ON mode,<wbr/> the camera device's auto-white balance
8123 routine is enabled,<wbr/> overriding the application's selected
8124 <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
8125 <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>
8126 is OFF,<wbr/> the behavior of AWB is device dependent.<wbr/> It is recommened to
8127 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
8128 setting AE mode to OFF.<wbr/></p>
8129 <p>When set to the OFF mode,<wbr/> the camera device's auto-white balance
8130 routine is disabled.<wbr/> The application manually controls the white
8131 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>
8132 and <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/></p>
8133 <p>When set to any other modes,<wbr/> the camera device's auto-white
8134 balance routine is disabled.<wbr/> The camera device uses each
8135 particular illumination target for white balance
8136 adjustment.<wbr/> The application's values for
8137 <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>,<wbr/>
8138 <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
8139 <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> are ignored.<wbr/></p>
8144 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
8145 <!-- end of entry -->
8148 <tr class="entry" id="dynamic_android.control.awbRegions">
8149 <td class="entry_name
8151 android.<wbr/>control.<wbr/>awb<wbr/>Regions
8153 <td class="entry_type">
8154 <span class="entry_type_name">int32</span>
8155 <span class="entry_type_container">x</span>
8157 <span class="entry_type_array">
8160 <span class="entry_type_visibility"> [public as meteringRectangle]</span>
8167 </td> <!-- entry_type -->
8169 <td class="entry_description">
8170 <p>List of metering areas to use for auto-white-balance illuminant
8171 estimation.<wbr/></p>
8174 <td class="entry_units">
8175 Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
8178 <td class="entry_range">
8179 <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
8180 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
8183 <td class="entry_hal_version">
8187 <td class="entry_tags">
8188 <ul class="entry_tags">
8189 <li><a href="#tag_BC">BC</a></li>
8194 <tr class="entries_header">
8195 <th class="th_details" colspan="6">Details</th>
8197 <tr class="entry_cont">
8198 <td class="entry_details" colspan="6">
8199 <p>Not available if <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a> is 0.<wbr/>
8200 Otherwise will always be present.<wbr/></p>
8201 <p>The maximum number of regions supported by the device is determined by the value
8202 of <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a>.<wbr/></p>
8203 <p>The coordinate system is based on the active pixel array,<wbr/>
8204 with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
8205 (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
8206 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
8207 bottom-right pixel in the active pixel array.<wbr/></p>
8208 <p>The weight must range from 0 to 1000,<wbr/> and represents a weight
8209 for every pixel in the area.<wbr/> This means that a large metering area
8210 with the same weight as a smaller area will have more effect in
8211 the metering result.<wbr/> Metering areas can partially overlap and the
8212 camera device will add the weights in the overlap region.<wbr/></p>
8213 <p>The weights are relative to weights of other white balance metering regions,<wbr/> so if
8214 only one region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with
8215 0 weight is ignored.<wbr/></p>
8216 <p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
8217 camera device.<wbr/></p>
8218 <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
8219 capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
8220 region and output only the intersection rectangle as the metering region in the result
8221 metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and
8222 not reported in the result metadata.<wbr/></p>
8226 <tr class="entries_header">
8227 <th class="th_details" colspan="6">HAL Implementation Details</th>
8229 <tr class="entry_cont">
8230 <td class="entry_details" colspan="6">
8231 <p>The HAL level representation of MeteringRectangle[] is a
8232 int[5 * area_<wbr/>count].<wbr/>
8233 Every five elements represent a metering region of
8234 (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
8235 The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
8236 exclusive on xmax and ymax.<wbr/></p>
8240 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
8241 <!-- end of entry -->
8244 <tr class="entry" id="dynamic_android.control.captureIntent">
8245 <td class="entry_name
8247 android.<wbr/>control.<wbr/>capture<wbr/>Intent
8249 <td class="entry_type">
8250 <span class="entry_type_name entry_type_name_enum">byte</span>
8252 <span class="entry_type_visibility"> [public]</span>
8255 <span class="entry_type_hwlevel">[legacy] </span>
8259 <ul class="entry_type_enum">
8261 <span class="entry_type_enum_name">CUSTOM</span>
8262 <span class="entry_type_enum_notes"><p>The goal of this request doesn't fall into the other
8263 categories.<wbr/> The camera device will default to preview-like
8264 behavior.<wbr/></p></span>
8267 <span class="entry_type_enum_name">PREVIEW</span>
8268 <span class="entry_type_enum_notes"><p>This request is for a preview-like use case.<wbr/></p>
8269 <p>The precapture trigger may be used to start off a metering
8270 w/<wbr/>flash sequence.<wbr/></p></span>
8273 <span class="entry_type_enum_name">STILL_CAPTURE</span>
8274 <span class="entry_type_enum_notes"><p>This request is for a still capture-type
8276 <p>If the flash unit is under automatic control,<wbr/> it may fire as needed.<wbr/></p></span>
8279 <span class="entry_type_enum_name">VIDEO_RECORD</span>
8280 <span class="entry_type_enum_notes"><p>This request is for a video recording
8281 use case.<wbr/></p></span>
8284 <span class="entry_type_enum_name">VIDEO_SNAPSHOT</span>
8285 <span class="entry_type_enum_notes"><p>This request is for a video snapshot (still
8286 image while recording video) use case.<wbr/></p>
8287 <p>The camera device should take the highest-quality image
8288 possible (given the other settings) without disrupting the
8289 frame rate of video recording.<wbr/> </p></span>
8292 <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span>
8293 <span class="entry_type_enum_notes"><p>This request is for a ZSL usecase; the
8294 application will stream full-resolution images and
8295 reprocess one or several later for a final
8296 capture.<wbr/></p></span>
8299 <span class="entry_type_enum_name">MANUAL</span>
8300 <span class="entry_type_enum_notes"><p>This request is for manual capture use case where
8301 the applications want to directly control the capture parameters.<wbr/></p>
8302 <p>For example,<wbr/> the application may wish to manually control
8303 <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>
8307 </td> <!-- entry_type -->
8309 <td class="entry_description">
8310 <p>Information to the camera device 3A (auto-exposure,<wbr/>
8311 auto-focus,<wbr/> auto-white balance) routines about the purpose
8312 of this capture,<wbr/> to help the camera device to decide optimal 3A
8316 <td class="entry_units">
8319 <td class="entry_range">
8322 <td class="entry_hal_version">
8326 <td class="entry_tags">
8327 <ul class="entry_tags">
8328 <li><a href="#tag_BC">BC</a></li>
8333 <tr class="entries_header">
8334 <th class="th_details" colspan="6">Details</th>
8336 <tr class="entry_cont">
8337 <td class="entry_details" colspan="6">
8338 <p>This control (except for MANUAL) is only effective if
8339 <code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF</code> and any 3A routine is active.<wbr/></p>
8340 <p>ZERO_<wbr/>SHUTTER_<wbr/>LAG will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>
8341 contains PRIVATE_<wbr/>REPROCESSING or YUV_<wbr/>REPROCESSING.<wbr/> MANUAL will be supported if
8342 <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains MANUAL_<wbr/>SENSOR.<wbr/> Other intent values are
8343 always supported.<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.awbState">
8353 <td class="entry_name
8355 android.<wbr/>control.<wbr/>awb<wbr/>State
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">[limited] </span>
8367 <ul class="entry_type_enum">
8369 <span class="entry_type_enum_name">INACTIVE</span>
8370 <span class="entry_type_enum_notes"><p>AWB is not in auto mode,<wbr/> or has not yet started metering.<wbr/></p>
8371 <p>When a camera device is opened,<wbr/> it starts in this
8372 state.<wbr/> This is a transient state,<wbr/> the camera device may
8373 skip reporting this state in capture
8374 result.<wbr/></p></span>
8377 <span class="entry_type_enum_name">SEARCHING</span>
8378 <span class="entry_type_enum_notes"><p>AWB doesn't yet have a good set of control
8379 values for the current scene.<wbr/></p>
8380 <p>This is a transient state,<wbr/> the camera device
8381 may skip reporting this state in capture result.<wbr/></p></span>
8384 <span class="entry_type_enum_name">CONVERGED</span>
8385 <span class="entry_type_enum_notes"><p>AWB has a good set of control values for the
8386 current scene.<wbr/></p></span>
8389 <span class="entry_type_enum_name">LOCKED</span>
8390 <span class="entry_type_enum_notes"><p>AWB has been locked.<wbr/></p></span>
8394 </td> <!-- entry_type -->
8396 <td class="entry_description">
8397 <p>Current state of auto-white balance (AWB) algorithm.<wbr/></p>
8400 <td class="entry_units">
8403 <td class="entry_range">
8406 <td class="entry_hal_version">
8410 <td class="entry_tags">
8414 <tr class="entries_header">
8415 <th class="th_details" colspan="6">Details</th>
8417 <tr class="entry_cont">
8418 <td class="entry_details" colspan="6">
8419 <p>Switching between or enabling AWB modes (<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>) always
8420 resets the AWB state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/>
8421 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
8422 the algorithm states to INACTIVE.<wbr/></p>
8423 <p>The camera device can do several state transitions between two results,<wbr/> if it is
8424 allowed by the state transition table.<wbr/> So INACTIVE may never actually be seen in
8426 <p>The state in the result is the state for this image (in sync with this image): if
8427 AWB state becomes CONVERGED,<wbr/> then the image data associated with this result should
8428 be good to use.<wbr/></p>
8429 <p>Below are state transition tables for different AWB modes.<wbr/></p>
8430 <p>When <code><a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> != AWB_<wbr/>MODE_<wbr/>AUTO</code>:</p>
8434 <th align="center">State</th>
8435 <th align="center">Transition Cause</th>
8436 <th align="center">New State</th>
8437 <th align="center">Notes</th>
8442 <td align="center">INACTIVE</td>
8443 <td align="center"></td>
8444 <td align="center">INACTIVE</td>
8445 <td align="center">Camera device auto white balance algorithm is disabled</td>
8449 <p>When <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is AWB_<wbr/>MODE_<wbr/>AUTO:</p>
8453 <th align="center">State</th>
8454 <th align="center">Transition Cause</th>
8455 <th align="center">New State</th>
8456 <th align="center">Notes</th>
8461 <td align="center">INACTIVE</td>
8462 <td align="center">Camera device initiates AWB scan</td>
8463 <td align="center">SEARCHING</td>
8464 <td align="center">Values changing</td>
8467 <td align="center">INACTIVE</td>
8468 <td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td>
8469 <td align="center">LOCKED</td>
8470 <td align="center">Values locked</td>
8473 <td align="center">SEARCHING</td>
8474 <td align="center">Camera device finishes AWB scan</td>
8475 <td align="center">CONVERGED</td>
8476 <td align="center">Good values,<wbr/> not changing</td>
8479 <td align="center">SEARCHING</td>
8480 <td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td>
8481 <td align="center">LOCKED</td>
8482 <td align="center">Values locked</td>
8485 <td align="center">CONVERGED</td>
8486 <td align="center">Camera device initiates AWB scan</td>
8487 <td align="center">SEARCHING</td>
8488 <td align="center">Values changing</td>
8491 <td align="center">CONVERGED</td>
8492 <td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td>
8493 <td align="center">LOCKED</td>
8494 <td align="center">Values locked</td>
8497 <td align="center">LOCKED</td>
8498 <td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is OFF</td>
8499 <td align="center">SEARCHING</td>
8500 <td align="center">Values not good after unlock</td>
8504 <p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen
8505 without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that
8506 can be skipped in that manner is called a transient state.<wbr/></p>
8507 <p>For example,<wbr/> for this AWB mode (AWB_<wbr/>MODE_<wbr/>AUTO),<wbr/> in addition to the state transitions
8508 listed in above table,<wbr/> it is also legal for the camera device to skip one or more
8509 transient states between two results.<wbr/> See below table for examples:</p>
8513 <th align="center">State</th>
8514 <th align="center">Transition Cause</th>
8515 <th align="center">New State</th>
8516 <th align="center">Notes</th>
8521 <td align="center">INACTIVE</td>
8522 <td align="center">Camera device finished AWB scan</td>
8523 <td align="center">CONVERGED</td>
8524 <td align="center">Values are already good,<wbr/> transient states are skipped by camera device.<wbr/></td>
8527 <td align="center">LOCKED</td>
8528 <td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is OFF</td>
8529 <td align="center">CONVERGED</td>
8530 <td align="center">Values good after unlock,<wbr/> transient states are skipped by camera device.<wbr/></td>
8538 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
8539 <!-- end of entry -->
8542 <tr class="entry" id="dynamic_android.control.effectMode">
8543 <td class="entry_name
8545 android.<wbr/>control.<wbr/>effect<wbr/>Mode
8547 <td class="entry_type">
8548 <span class="entry_type_name entry_type_name_enum">byte</span>
8550 <span class="entry_type_visibility"> [public]</span>
8553 <span class="entry_type_hwlevel">[legacy] </span>
8557 <ul class="entry_type_enum">
8559 <span class="entry_type_enum_name">OFF</span>
8560 <span class="entry_type_enum_notes"><p>No color effect will be applied.<wbr/></p></span>
8563 <span class="entry_type_enum_name">MONO</span>
8564 <span class="entry_type_enum_optional">[optional]</span>
8565 <span class="entry_type_enum_notes"><p>A "monocolor" effect where the image is mapped into
8566 a single color.<wbr/></p>
8567 <p>This will typically be grayscale.<wbr/></p></span>
8570 <span class="entry_type_enum_name">NEGATIVE</span>
8571 <span class="entry_type_enum_optional">[optional]</span>
8572 <span class="entry_type_enum_notes"><p>A "photo-negative" effect where the image's colors
8573 are inverted.<wbr/></p></span>
8576 <span class="entry_type_enum_name">SOLARIZE</span>
8577 <span class="entry_type_enum_optional">[optional]</span>
8578 <span class="entry_type_enum_notes"><p>A "solarisation" effect (Sabattier effect) where the
8579 image is wholly or partially reversed in
8580 tone.<wbr/></p></span>
8583 <span class="entry_type_enum_name">SEPIA</span>
8584 <span class="entry_type_enum_optional">[optional]</span>
8585 <span class="entry_type_enum_notes"><p>A "sepia" effect where the image is mapped into warm
8586 gray,<wbr/> red,<wbr/> and brown tones.<wbr/></p></span>
8589 <span class="entry_type_enum_name">POSTERIZE</span>
8590 <span class="entry_type_enum_optional">[optional]</span>
8591 <span class="entry_type_enum_notes"><p>A "posterization" effect where the image uses
8592 discrete regions of tone rather than a continuous
8593 gradient of tones.<wbr/></p></span>
8596 <span class="entry_type_enum_name">WHITEBOARD</span>
8597 <span class="entry_type_enum_optional">[optional]</span>
8598 <span class="entry_type_enum_notes"><p>A "whiteboard" effect where the image is typically displayed
8599 as regions of white,<wbr/> with black or grey details.<wbr/></p></span>
8602 <span class="entry_type_enum_name">BLACKBOARD</span>
8603 <span class="entry_type_enum_optional">[optional]</span>
8604 <span class="entry_type_enum_notes"><p>A "blackboard" effect where the image is typically displayed
8605 as regions of black,<wbr/> with white or grey details.<wbr/></p></span>
8608 <span class="entry_type_enum_name">AQUA</span>
8609 <span class="entry_type_enum_optional">[optional]</span>
8610 <span class="entry_type_enum_notes"><p>An "aqua" effect where a blue hue is added to the image.<wbr/></p></span>
8614 </td> <!-- entry_type -->
8616 <td class="entry_description">
8617 <p>A special color effect to apply.<wbr/></p>
8620 <td class="entry_units">
8623 <td class="entry_range">
8624 <p><a href="#static_android.control.availableEffects">android.<wbr/>control.<wbr/>available<wbr/>Effects</a></p>
8627 <td class="entry_hal_version">
8631 <td class="entry_tags">
8632 <ul class="entry_tags">
8633 <li><a href="#tag_BC">BC</a></li>
8638 <tr class="entries_header">
8639 <th class="th_details" colspan="6">Details</th>
8641 <tr class="entry_cont">
8642 <td class="entry_details" colspan="6">
8643 <p>When this mode is set,<wbr/> a color effect will be applied
8644 to images produced by the camera device.<wbr/> The interpretation
8645 and implementation of these color effects is left to the
8646 implementor of the camera device,<wbr/> and should not be
8647 depended on to be consistent (or present) across all
8653 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
8654 <!-- end of entry -->
8657 <tr class="entry" id="dynamic_android.control.mode">
8658 <td class="entry_name
8660 android.<wbr/>control.<wbr/>mode
8662 <td class="entry_type">
8663 <span class="entry_type_name entry_type_name_enum">byte</span>
8665 <span class="entry_type_visibility"> [public]</span>
8668 <span class="entry_type_hwlevel">[legacy] </span>
8672 <ul class="entry_type_enum">
8674 <span class="entry_type_enum_name">OFF</span>
8675 <span class="entry_type_enum_notes"><p>Full application control of pipeline.<wbr/></p>
8676 <p>All control by the device's metering and focusing (3A)
8677 routines is disabled,<wbr/> and no other settings in
8678 android.<wbr/>control.<wbr/>* have any effect,<wbr/> except that
8679 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> may be used by the camera
8680 device to select post-processing values for processing
8681 blocks that do not allow for manual control,<wbr/> or are not
8682 exposed by the camera API.<wbr/></p>
8683 <p>However,<wbr/> the camera device's 3A routines may continue to
8684 collect statistics and update their internal state so that
8685 when control is switched to AUTO mode,<wbr/> good control values
8686 can be immediately applied.<wbr/></p></span>
8689 <span class="entry_type_enum_name">AUTO</span>
8690 <span class="entry_type_enum_notes"><p>Use settings for each individual 3A routine.<wbr/></p>
8691 <p>Manual control of capture parameters is disabled.<wbr/> All
8692 controls in android.<wbr/>control.<wbr/>* besides sceneMode take
8693 effect.<wbr/></p></span>
8696 <span class="entry_type_enum_name">USE_SCENE_MODE</span>
8697 <span class="entry_type_enum_optional">[optional]</span>
8698 <span class="entry_type_enum_notes"><p>Use a specific scene mode.<wbr/></p>
8699 <p>Enabling this disables control.<wbr/>aeMode,<wbr/> control.<wbr/>awbMode and
8700 control.<wbr/>afMode controls; the camera device will ignore
8701 those settings while USE_<wbr/>SCENE_<wbr/>MODE is active (except for
8702 FACE_<wbr/>PRIORITY scene mode).<wbr/> Other control entries are still active.<wbr/>
8703 This setting can only be used if scene mode is supported (i.<wbr/>e.<wbr/>
8704 <a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a>
8705 contain some modes other than DISABLED).<wbr/></p></span>
8708 <span class="entry_type_enum_name">OFF_KEEP_STATE</span>
8709 <span class="entry_type_enum_optional">[optional]</span>
8710 <span class="entry_type_enum_notes"><p>Same as OFF mode,<wbr/> except that this capture will not be
8711 used by camera device background auto-exposure,<wbr/> auto-white balance and
8712 auto-focus algorithms (3A) to update their statistics.<wbr/></p>
8713 <p>Specifically,<wbr/> the 3A routines are locked to the last
8714 values set from a request with AUTO,<wbr/> OFF,<wbr/> or
8715 USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> and any statistics or state updates
8716 collected from manual captures with OFF_<wbr/>KEEP_<wbr/>STATE will be
8717 discarded by the camera device.<wbr/></p></span>
8721 </td> <!-- entry_type -->
8723 <td class="entry_description">
8724 <p>Overall mode of 3A (auto-exposure,<wbr/> auto-white-balance,<wbr/> auto-focus) control
8728 <td class="entry_units">
8731 <td class="entry_range">
8732 <p><a href="#static_android.control.availableModes">android.<wbr/>control.<wbr/>available<wbr/>Modes</a></p>
8735 <td class="entry_hal_version">
8739 <td class="entry_tags">
8740 <ul class="entry_tags">
8741 <li><a href="#tag_BC">BC</a></li>
8746 <tr class="entries_header">
8747 <th class="th_details" colspan="6">Details</th>
8749 <tr class="entry_cont">
8750 <td class="entry_details" colspan="6">
8751 <p>This is a top-level 3A control switch.<wbr/> When set to OFF,<wbr/> all 3A control
8752 by the camera device is disabled.<wbr/> The application must set the fields for
8753 capture parameters itself.<wbr/></p>
8754 <p>When set to AUTO,<wbr/> the individual algorithm controls in
8755 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>
8756 <p>When set to USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> the individual controls in
8757 android.<wbr/>control.<wbr/>* are mostly disabled,<wbr/> and the camera device
8758 implements one of the scene mode settings (such as ACTION,<wbr/>
8759 SUNSET,<wbr/> or PARTY) as it wishes.<wbr/> The camera device scene mode
8760 3A settings are provided by <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">capture results</a>.<wbr/></p>
8761 <p>When set to OFF_<wbr/>KEEP_<wbr/>STATE,<wbr/> it is similar to OFF mode,<wbr/> the only difference
8762 is that this frame will not be used by camera device background 3A statistics
8763 update,<wbr/> as if this frame is never captured.<wbr/> This mode can be used in the scenario
8764 where the application doesn't want a 3A manual control capture to affect
8765 the subsequent auto 3A capture results.<wbr/></p>
8770 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
8771 <!-- end of entry -->
8774 <tr class="entry" id="dynamic_android.control.sceneMode">
8775 <td class="entry_name
8777 android.<wbr/>control.<wbr/>scene<wbr/>Mode
8779 <td class="entry_type">
8780 <span class="entry_type_name entry_type_name_enum">byte</span>
8782 <span class="entry_type_visibility"> [public]</span>
8785 <span class="entry_type_hwlevel">[legacy] </span>
8789 <ul class="entry_type_enum">
8791 <span class="entry_type_enum_name">DISABLED</span>
8792 <span class="entry_type_enum_value">0</span>
8793 <span class="entry_type_enum_notes"><p>Indicates that no scene modes are set for a given capture request.<wbr/></p></span>
8796 <span class="entry_type_enum_name">FACE_PRIORITY</span>
8797 <span class="entry_type_enum_notes"><p>If face detection support exists,<wbr/> use face
8798 detection data for auto-focus,<wbr/> auto-white balance,<wbr/> and
8799 auto-exposure routines.<wbr/></p>
8800 <p>If face detection statistics are disabled
8801 (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/>
8802 this should still operate correctly (but will not return
8803 face detection statistics to the framework).<wbr/></p>
8804 <p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
8805 <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>
8806 remain active when FACE_<wbr/>PRIORITY is set.<wbr/></p></span>
8809 <span class="entry_type_enum_name">ACTION</span>
8810 <span class="entry_type_enum_optional">[optional]</span>
8811 <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving objects.<wbr/></p>
8812 <p>Similar to SPORTS.<wbr/></p></span>
8815 <span class="entry_type_enum_name">PORTRAIT</span>
8816 <span class="entry_type_enum_optional">[optional]</span>
8817 <span class="entry_type_enum_notes"><p>Optimized for still photos of people.<wbr/></p></span>
8820 <span class="entry_type_enum_name">LANDSCAPE</span>
8821 <span class="entry_type_enum_optional">[optional]</span>
8822 <span class="entry_type_enum_notes"><p>Optimized for photos of distant macroscopic objects.<wbr/></p></span>
8825 <span class="entry_type_enum_name">NIGHT</span>
8826 <span class="entry_type_enum_optional">[optional]</span>
8827 <span class="entry_type_enum_notes"><p>Optimized for low-light settings.<wbr/></p></span>
8830 <span class="entry_type_enum_name">NIGHT_PORTRAIT</span>
8831 <span class="entry_type_enum_optional">[optional]</span>
8832 <span class="entry_type_enum_notes"><p>Optimized for still photos of people in low-light
8833 settings.<wbr/></p></span>
8836 <span class="entry_type_enum_name">THEATRE</span>
8837 <span class="entry_type_enum_optional">[optional]</span>
8838 <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings where flash must
8839 remain off.<wbr/></p></span>
8842 <span class="entry_type_enum_name">BEACH</span>
8843 <span class="entry_type_enum_optional">[optional]</span>
8844 <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor beach settings.<wbr/></p></span>
8847 <span class="entry_type_enum_name">SNOW</span>
8848 <span class="entry_type_enum_optional">[optional]</span>
8849 <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor settings containing snow.<wbr/></p></span>
8852 <span class="entry_type_enum_name">SUNSET</span>
8853 <span class="entry_type_enum_optional">[optional]</span>
8854 <span class="entry_type_enum_notes"><p>Optimized for scenes of the setting sun.<wbr/></p></span>
8857 <span class="entry_type_enum_name">STEADYPHOTO</span>
8858 <span class="entry_type_enum_optional">[optional]</span>
8859 <span class="entry_type_enum_notes"><p>Optimized to avoid blurry photos due to small amounts of
8860 device motion (for example: due to hand shake).<wbr/></p></span>
8863 <span class="entry_type_enum_name">FIREWORKS</span>
8864 <span class="entry_type_enum_optional">[optional]</span>
8865 <span class="entry_type_enum_notes"><p>Optimized for nighttime photos of fireworks.<wbr/></p></span>
8868 <span class="entry_type_enum_name">SPORTS</span>
8869 <span class="entry_type_enum_optional">[optional]</span>
8870 <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving people.<wbr/></p>
8871 <p>Similar to ACTION.<wbr/></p></span>
8874 <span class="entry_type_enum_name">PARTY</span>
8875 <span class="entry_type_enum_optional">[optional]</span>
8876 <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings with multiple moving
8877 people.<wbr/></p></span>
8880 <span class="entry_type_enum_name">CANDLELIGHT</span>
8881 <span class="entry_type_enum_optional">[optional]</span>
8882 <span class="entry_type_enum_notes"><p>Optimized for dim settings where the main light source
8883 is a flame.<wbr/></p></span>
8886 <span class="entry_type_enum_name">BARCODE</span>
8887 <span class="entry_type_enum_optional">[optional]</span>
8888 <span class="entry_type_enum_notes"><p>Optimized for accurately capturing a photo of barcode
8889 for use by camera applications that wish to read the
8890 barcode value.<wbr/></p></span>
8893 <span class="entry_type_enum_name">HIGH_SPEED_VIDEO</span>
8894 <span class="entry_type_enum_deprecated">[deprecated]</span>
8895 <span class="entry_type_enum_optional">[optional]</span>
8896 <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>
8897 and <a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a>
8898 for high speed video recording.<wbr/></p>
8899 <p>Optimized for high speed video recording (frame rate >=60fps) use case.<wbr/></p>
8900 <p>The supported high speed video sizes and fps ranges are specified in
8901 <a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/> To get desired
8902 output frame rates,<wbr/> the application is only allowed to select video size
8903 and fps range combinations listed in this static metadata.<wbr/> The fps range
8904 can be control via <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a>.<wbr/></p>
8905 <p>In this mode,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to
8906 ON,<wbr/> ON,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode
8907 controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture
8908 and post-processing parameters is possible.<wbr/> All other controls operate the
8909 same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other
8910 android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p>
8912 <li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li>
8913 <li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li>
8914 <li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li>
8915 <li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li>
8916 <li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li>
8917 <li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li>
8918 <li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li>
8919 <li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li>
8920 <li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li>
8921 <li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li>
8923 <p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p>
8925 <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>
8926 <li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li>
8927 <li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li>
8928 <li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></li>
8930 <p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may
8931 be lower than what camera can output,<wbr/> depending on the destination Surfaces for
8932 the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/>
8933 the application need check if the video encoder is capable of supporting the
8934 high frame rate for a given video size,<wbr/> or it will end up with lower recording
8935 frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the preview frame
8936 rate will be bounded by the screen refresh rate.<wbr/></p>
8937 <p>The camera device will only support up to 2 output high speed streams
8938 (processed non-stalling format defined in <a href="#static_android.request.maxNumOutputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams</a>)
8939 in this mode.<wbr/> This control will be effective only if all of below conditions are true:</p>
8941 <li>The application created no more than maxNumHighSpeedStreams processed non-stalling
8942 format output streams,<wbr/> where maxNumHighSpeedStreams is calculated as
8943 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>
8944 <li>The stream sizes are selected from the sizes reported by
8945 <a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/></li>
8946 <li>No processed non-stalling or raw streams are configured.<wbr/></li>
8948 <p>When above conditions are NOT satistied,<wbr/> the controls of this mode and
8949 <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/>
8950 the camera device will fall back to <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> <code>==</code> AUTO,<wbr/>
8951 and the returned capture result metadata will give the fps range choosen
8952 by the camera device.<wbr/></p>
8953 <p>Switching into or out of this mode may trigger some camera ISP/<wbr/>sensor
8954 reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that
8955 the application avoids unnecessary scene mode switch as much as possible.<wbr/></p></span>
8958 <span class="entry_type_enum_name">HDR</span>
8959 <span class="entry_type_enum_optional">[optional]</span>
8960 <span class="entry_type_enum_notes"><p>Turn on a device-specific high dynamic range (HDR) mode.<wbr/></p>
8961 <p>In this scene mode,<wbr/> the camera device captures images
8962 that keep a larger range of scene illumination levels
8963 visible in the final image.<wbr/> For example,<wbr/> when taking a
8964 picture of a object in front of a bright window,<wbr/> both
8965 the object and the scene through the window may be
8966 visible when using HDR mode,<wbr/> while in normal AUTO mode,<wbr/>
8967 one or the other may be poorly exposed.<wbr/> As a tradeoff,<wbr/>
8968 HDR mode generally takes much longer to capture a single
8969 image,<wbr/> has no user control,<wbr/> and may have other artifacts
8970 depending on the HDR method used.<wbr/></p>
8971 <p>Therefore,<wbr/> HDR captures operate at a much slower rate
8972 than regular captures.<wbr/></p>
8973 <p>In this mode,<wbr/> on LIMITED or FULL devices,<wbr/> when a request
8974 is made with a <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> of
8975 STILL_<wbr/>CAPTURE,<wbr/> the camera device will capture an image
8976 using a high dynamic range capture technique.<wbr/> On LEGACY
8977 devices,<wbr/> captures that target a JPEG-format output will
8978 be captured with HDR,<wbr/> and the capture intent is not
8980 <p>The HDR capture may involve the device capturing a burst
8981 of images internally and combining them into one,<wbr/> or it
8982 may involve the device using specialized high dynamic
8983 range capture hardware.<wbr/> In all cases,<wbr/> a single image is
8984 produced in response to a capture request submitted
8985 while in HDR mode.<wbr/></p>
8986 <p>Since substantial post-processing is generally needed to
8987 produce an HDR image,<wbr/> only YUV,<wbr/> PRIVATE,<wbr/> and JPEG
8988 outputs are supported for LIMITED/<wbr/>FULL device HDR
8989 captures,<wbr/> and only JPEG outputs are supported for LEGACY
8990 HDR captures.<wbr/> Using a RAW output for HDR capture is not
8991 supported.<wbr/></p>
8992 <p>Some devices may also support always-on HDR,<wbr/> which
8993 applies HDR processing at full frame rate.<wbr/> For these
8994 devices,<wbr/> intents other than STILL_<wbr/>CAPTURE will also
8995 produce an HDR output with no frame rate impact compared
8996 to normal operation,<wbr/> though the quality may be lower
8997 than for STILL_<wbr/>CAPTURE intents.<wbr/></p>
8998 <p>If SCENE_<wbr/>MODE_<wbr/>HDR is used with unsupported output types
8999 or capture intents,<wbr/> the images captured will be as if
9000 the SCENE_<wbr/>MODE was not enabled at all.<wbr/></p></span>
9003 <span class="entry_type_enum_name">FACE_PRIORITY_LOW_LIGHT</span>
9004 <span class="entry_type_enum_optional">[optional]</span>
9005 <span class="entry_type_enum_hidden">[hidden]</span>
9006 <span class="entry_type_enum_notes"><p>Same as FACE_<wbr/>PRIORITY scene mode,<wbr/> except that the camera
9007 device will choose higher sensitivity values (<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>)
9008 under low light conditions.<wbr/></p>
9009 <p>The camera device may be tuned to expose the images in a reduced
9010 sensitivity range to produce the best quality images.<wbr/> For example,<wbr/>
9011 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/>
9012 the camera device auto-exposure routine tuning process may limit the actual
9013 exposure sensitivity range to [100,<wbr/> 1200] to ensure that the noise level isn't
9014 exessive in order to preserve the image quality.<wbr/> Under this situation,<wbr/> the image under
9015 low light may be under-exposed when the sensor max exposure time (bounded by the
9016 <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
9017 ON_<wbr/>* modes) and effective max sensitivity are reached.<wbr/> This scene mode allows the
9018 camera device auto-exposure routine to increase the sensitivity up to the max
9019 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
9020 dark and the max exposure time is reached.<wbr/> The captured images may be noisier
9021 compared with the images captured in normal FACE_<wbr/>PRIORITY mode; therefore,<wbr/> it is
9022 recommended that the application only use this scene mode when it is capable of
9023 reducing the noise level of the captured images.<wbr/></p>
9024 <p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
9025 <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>
9026 remain active when FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT is set.<wbr/></p></span>
9029 <span class="entry_type_enum_name">DEVICE_CUSTOM_START</span>
9030 <span class="entry_type_enum_optional">[optional]</span>
9031 <span class="entry_type_enum_hidden">[hidden]</span>
9032 <span class="entry_type_enum_value">100</span>
9033 <span class="entry_type_enum_notes"><p>Scene mode values within the range of
9034 <code>[DEVICE_<wbr/>CUSTOM_<wbr/>START,<wbr/> DEVICE_<wbr/>CUSTOM_<wbr/>END]</code> are reserved for device specific
9035 customized scene modes.<wbr/></p></span>
9038 <span class="entry_type_enum_name">DEVICE_CUSTOM_END</span>
9039 <span class="entry_type_enum_optional">[optional]</span>
9040 <span class="entry_type_enum_hidden">[hidden]</span>
9041 <span class="entry_type_enum_value">127</span>
9042 <span class="entry_type_enum_notes"><p>Scene mode values within the range of
9043 <code>[DEVICE_<wbr/>CUSTOM_<wbr/>START,<wbr/> DEVICE_<wbr/>CUSTOM_<wbr/>END]</code> are reserved for device specific
9044 customized scene modes.<wbr/></p></span>
9048 </td> <!-- entry_type -->
9050 <td class="entry_description">
9051 <p>Control for which scene mode is currently active.<wbr/></p>
9054 <td class="entry_units">
9057 <td class="entry_range">
9058 <p><a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a></p>
9061 <td class="entry_hal_version">
9065 <td class="entry_tags">
9066 <ul class="entry_tags">
9067 <li><a href="#tag_BC">BC</a></li>
9072 <tr class="entries_header">
9073 <th class="th_details" colspan="6">Details</th>
9075 <tr class="entry_cont">
9076 <td class="entry_details" colspan="6">
9077 <p>Scene modes are custom camera modes optimized for a certain set of conditions and
9078 capture settings.<wbr/></p>
9079 <p>This is the mode that that is active when
9080 <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
9081 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>
9082 while in use.<wbr/></p>
9083 <p>The interpretation and implementation of these scene modes is left
9084 to the implementor of the camera device.<wbr/> Their behavior will not be
9085 consistent across all devices,<wbr/> and any given device may only implement
9086 a subset of these modes.<wbr/></p>
9090 <tr class="entries_header">
9091 <th class="th_details" colspan="6">HAL Implementation Details</th>
9093 <tr class="entry_cont">
9094 <td class="entry_details" colspan="6">
9095 <p>HAL implementations that include scene modes are expected to provide
9096 the per-scene settings to use for <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
9097 <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
9098 <a href="#static_android.control.sceneModeOverrides">android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides</a>.<wbr/></p>
9099 <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
9100 HAL must list supported video size and fps range in
9101 <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/>
9102 if the HAL has two different sensor configurations for normal streaming mode and high
9103 speed streaming,<wbr/> when this scene mode is set/<wbr/>reset in a sequence of capture requests,<wbr/> the
9104 HAL may have to switch between different sensor modes.<wbr/> This mode is deprecated in legacy
9105 HAL3.<wbr/>3,<wbr/> to support high speed video recording,<wbr/> please implement
9106 <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
9107 capbility defined in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
9111 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9112 <!-- end of entry -->
9115 <tr class="entry" id="dynamic_android.control.videoStabilizationMode">
9116 <td class="entry_name
9118 android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode
9120 <td class="entry_type">
9121 <span class="entry_type_name entry_type_name_enum">byte</span>
9123 <span class="entry_type_visibility"> [public]</span>
9126 <span class="entry_type_hwlevel">[legacy] </span>
9130 <ul class="entry_type_enum">
9132 <span class="entry_type_enum_name">OFF</span>
9133 <span class="entry_type_enum_notes"><p>Video stabilization is disabled.<wbr/></p></span>
9136 <span class="entry_type_enum_name">ON</span>
9137 <span class="entry_type_enum_notes"><p>Video stabilization is enabled.<wbr/></p></span>
9141 </td> <!-- entry_type -->
9143 <td class="entry_description">
9144 <p>Whether video stabilization is
9148 <td class="entry_units">
9151 <td class="entry_range">
9154 <td class="entry_hal_version">
9158 <td class="entry_tags">
9159 <ul class="entry_tags">
9160 <li><a href="#tag_BC">BC</a></li>
9165 <tr class="entries_header">
9166 <th class="th_details" colspan="6">Details</th>
9168 <tr class="entry_cont">
9169 <td class="entry_details" colspan="6">
9170 <p>Video stabilization automatically warps images from
9171 the camera in order to stabilize motion between consecutive frames.<wbr/></p>
9172 <p>If enabled,<wbr/> video stabilization can modify the
9173 <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> to keep the video stream stabilized.<wbr/></p>
9174 <p>Switching between different video stabilization modes may take several
9175 frames to initialize,<wbr/> the camera device will report the current mode
9176 in capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/>
9177 the video stabilization modes in the first several capture results may
9178 still be "OFF",<wbr/> and it will become "ON" when the initialization is
9180 <p>In addition,<wbr/> not all recording sizes or frame rates may be supported for
9181 stabilization by a device that reports stabilization support.<wbr/> It is guaranteed
9182 that an output targeting a MediaRecorder or MediaCodec will be stabilized if
9183 the recording resolution is less than or equal to 1920 x 1080 (width less than
9184 or equal to 1920,<wbr/> height less than or equal to 1080),<wbr/> and the recording
9185 frame rate is less than or equal to 30fps.<wbr/> At other sizes,<wbr/> the CaptureResult
9186 <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a> field will return
9187 OFF if the recording output is not stabilized,<wbr/> or if there are no output
9188 Surface types that can be stabilized.<wbr/></p>
9189 <p>If a camera device supports both this mode and OIS
9190 (<a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may
9191 produce undesirable interaction,<wbr/> so it is recommended not to enable
9192 both at the same time.<wbr/></p>
9197 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9198 <!-- end of entry -->
9201 <tr class="entry" id="dynamic_android.control.postRawSensitivityBoost">
9202 <td class="entry_name
9204 android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost
9206 <td class="entry_type">
9207 <span class="entry_type_name">int32</span>
9209 <span class="entry_type_visibility"> [public]</span>
9216 </td> <!-- entry_type -->
9218 <td class="entry_description">
9219 <p>The amount of additional sensitivity boost applied to output images
9220 after RAW sensor data is captured.<wbr/></p>
9223 <td class="entry_units">
9224 ISO arithmetic units,<wbr/> the same as android.<wbr/>sensor.<wbr/>sensitivity
9227 <td class="entry_range">
9228 <p><a href="#static_android.control.postRawSensitivityBoostRange">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost<wbr/>Range</a></p>
9231 <td class="entry_hal_version">
9235 <td class="entry_tags">
9239 <tr class="entries_header">
9240 <th class="th_details" colspan="6">Details</th>
9242 <tr class="entry_cont">
9243 <td class="entry_details" colspan="6">
9244 <p>Some camera devices support additional digital sensitivity boosting in the
9245 camera processing pipeline after sensor RAW image is captured.<wbr/>
9246 Such a boost will be applied to YUV/<wbr/>JPEG format output images but will not
9247 have effect on RAW output formats like RAW_<wbr/>SENSOR,<wbr/> RAW10,<wbr/> RAW12 or RAW_<wbr/>OPAQUE.<wbr/></p>
9248 <p>This key will be <code>null</code> for devices that do not support any RAW format
9249 outputs.<wbr/> For devices that do support RAW format outputs,<wbr/> this key will always
9250 present,<wbr/> and if a device does not support post RAW sensitivity boost,<wbr/> it will
9251 list <code>100</code> in this key.<wbr/></p>
9252 <p>If the camera device cannot apply the exact boost requested,<wbr/> it will reduce the
9253 boost to the nearest supported value.<wbr/>
9254 The final boost value used will be available in the output capture result.<wbr/></p>
9255 <p>For devices that support post RAW sensitivity boost,<wbr/> the YUV/<wbr/>JPEG output images
9256 of such device will have the total sensitivity of
9257 <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>
9258 The sensitivity of RAW format images will always be <code><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></code></p>
9259 <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
9260 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
9265 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9266 <!-- end of entry -->
9269 <tr class="entry" id="dynamic_android.control.enableZsl">
9270 <td class="entry_name
9272 android.<wbr/>control.<wbr/>enable<wbr/>Zsl
9274 <td class="entry_type">
9275 <span class="entry_type_name entry_type_name_enum">byte</span>
9277 <span class="entry_type_visibility"> [public as boolean]</span>
9283 <ul class="entry_type_enum">
9285 <span class="entry_type_enum_name">FALSE</span>
9286 <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
9287 after previous requests.<wbr/></p></span>
9290 <span class="entry_type_enum_name">TRUE</span>
9291 <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
9292 captured before previous requests.<wbr/></p></span>
9296 </td> <!-- entry_type -->
9298 <td class="entry_description">
9299 <p>Allow camera device to enable zero-shutter-lag mode for requests with
9300 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE.<wbr/></p>
9303 <td class="entry_units">
9306 <td class="entry_range">
9309 <td class="entry_hal_version">
9313 <td class="entry_tags">
9317 <tr class="entries_header">
9318 <th class="th_details" colspan="6">Details</th>
9320 <tr class="entry_cont">
9321 <td class="entry_details" colspan="6">
9322 <p>If enableZsl is <code>true</code>,<wbr/> the camera device may enable zero-shutter-lag mode for requests with
9323 STILL_<wbr/>CAPTURE capture intent.<wbr/> The camera device may use images captured in the past to
9324 produce output images for a zero-shutter-lag request.<wbr/> The result metadata including the
9325 <a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a> reflects the source frames used to produce output images.<wbr/>
9326 Therefore,<wbr/> the contents of the output images and the result metadata may be out of order
9327 compared to previous regular requests.<wbr/> enableZsl does not affect requests with other
9328 capture intents.<wbr/></p>
9329 <p>For example,<wbr/> when requests are submitted in the following order:
9330 Request A: enableZsl is ON,<wbr/> <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> is PREVIEW
9331 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>
9332 <p>The output images for request B may have contents captured before the output images for
9333 request A,<wbr/> and the result metadata for request B may be older than the result metadata for
9334 request A.<wbr/></p>
9335 <p>Note that when enableZsl is <code>true</code>,<wbr/> it is not guaranteed to get output images captured in
9336 the past for requests with STILL_<wbr/>CAPTURE capture intent.<wbr/></p>
9337 <p>For applications targeting SDK versions O and newer,<wbr/> the value of enableZsl in
9338 TEMPLATE_<wbr/>STILL_<wbr/>CAPTURE template may be <code>true</code>.<wbr/> The value in other templates is always
9339 <code>false</code> if present.<wbr/></p>
9340 <p>For applications targeting SDK versions older than O,<wbr/> the value of enableZsl in all
9341 capture templates is always <code>false</code> if present.<wbr/></p>
9342 <p>For application-operated ZSL,<wbr/> use CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p>
9346 <tr class="entries_header">
9347 <th class="th_details" colspan="6">HAL Implementation Details</th>
9349 <tr class="entry_cont">
9350 <td class="entry_details" colspan="6">
9351 <p>It is valid for HAL to produce regular output images for requests with STILL_<wbr/>CAPTURE
9352 capture intent.<wbr/></p>
9356 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9357 <!-- end of entry -->
9360 <tr class="entry" id="dynamic_android.control.afSceneChange">
9361 <td class="entry_name
9363 android.<wbr/>control.<wbr/>af<wbr/>Scene<wbr/>Change
9365 <td class="entry_type">
9366 <span class="entry_type_name entry_type_name_enum">int32</span>
9368 <span class="entry_type_visibility"> [public]</span>
9374 <ul class="entry_type_enum">
9376 <span class="entry_type_enum_name">NOT_DETECTED</span>
9377 <span class="entry_type_enum_notes"><p>Scene change is not detected within the AF region(s).<wbr/></p></span>
9380 <span class="entry_type_enum_name">DETECTED</span>
9381 <span class="entry_type_enum_notes"><p>Scene change is detected within the AF region(s).<wbr/></p></span>
9385 </td> <!-- entry_type -->
9387 <td class="entry_description">
9388 <p>Whether a significant scene change is detected within the currently-set AF
9389 region(s).<wbr/></p>
9392 <td class="entry_units">
9395 <td class="entry_range">
9398 <td class="entry_hal_version">
9402 <td class="entry_tags">
9406 <tr class="entries_header">
9407 <th class="th_details" colspan="6">Details</th>
9409 <tr class="entry_cont">
9410 <td class="entry_details" colspan="6">
9411 <p>When the camera focus routine detects a change in the scene it is looking at,<wbr/>
9412 such as a large shift in camera viewpoint,<wbr/> significant motion in the scene,<wbr/> or a
9413 significant illumination change,<wbr/> this value will be set to DETECTED for a single capture
9414 result.<wbr/> Otherwise the value will be NOT_<wbr/>DETECTED.<wbr/> The threshold for detection is similar
9415 to what would trigger a new passive focus scan to begin in CONTINUOUS autofocus modes.<wbr/></p>
9416 <p>afSceneChange may be DETECTED only if afMode is AF_<wbr/>MODE_<wbr/>CONTINUOUS_<wbr/>VIDEO or
9417 AF_<wbr/>MODE_<wbr/>CONTINUOUS_<wbr/>PICTURE.<wbr/> In other AF modes,<wbr/> afSceneChange must be NOT_<wbr/>DETECTED.<wbr/></p>
9418 <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>
9423 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9424 <!-- end of entry -->
9428 <!-- end of kind -->
9431 <!-- end of section -->
9432 <tr><td colspan="7" id="section_demosaic" class="section">demosaic</td></tr>
9435 <tr><td colspan="7" class="kind">controls</td></tr>
9437 <thead class="entries_header">
9439 <th class="th_name">Property Name</th>
9440 <th class="th_type">Type</th>
9441 <th class="th_description">Description</th>
9442 <th class="th_units">Units</th>
9443 <th class="th_range">Range</th>
9444 <th class="th_hal_version">Initial HIDL HAL version</th>
9445 <th class="th_tags">Tags</th>
9460 <tr class="entry" id="controls_android.demosaic.mode">
9461 <td class="entry_name
9463 android.<wbr/>demosaic.<wbr/>mode
9465 <td class="entry_type">
9466 <span class="entry_type_name entry_type_name_enum">byte</span>
9468 <span class="entry_type_visibility"> [system]</span>
9474 <ul class="entry_type_enum">
9476 <span class="entry_type_enum_name">FAST</span>
9477 <span class="entry_type_enum_notes"><p>Minimal or no slowdown of frame rate compared to
9478 Bayer RAW output.<wbr/></p></span>
9481 <span class="entry_type_enum_name">HIGH_QUALITY</span>
9482 <span class="entry_type_enum_notes"><p>Improved processing quality but the frame rate might be slowed down
9483 relative to raw output.<wbr/></p></span>
9487 </td> <!-- entry_type -->
9489 <td class="entry_description">
9490 <p>Controls the quality of the demosaicing
9491 processing.<wbr/></p>
9494 <td class="entry_units">
9497 <td class="entry_range">
9500 <td class="entry_hal_version">
9504 <td class="entry_tags">
9505 <ul class="entry_tags">
9506 <li><a href="#tag_FUTURE">FUTURE</a></li>
9513 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9514 <!-- end of entry -->
9518 <!-- end of kind -->
9521 <!-- end of section -->
9522 <tr><td colspan="7" id="section_edge" class="section">edge</td></tr>
9525 <tr><td colspan="7" class="kind">controls</td></tr>
9527 <thead class="entries_header">
9529 <th class="th_name">Property Name</th>
9530 <th class="th_type">Type</th>
9531 <th class="th_description">Description</th>
9532 <th class="th_units">Units</th>
9533 <th class="th_range">Range</th>
9534 <th class="th_hal_version">Initial HIDL HAL version</th>
9535 <th class="th_tags">Tags</th>
9550 <tr class="entry" id="controls_android.edge.mode">
9551 <td class="entry_name
9553 android.<wbr/>edge.<wbr/>mode
9555 <td class="entry_type">
9556 <span class="entry_type_name entry_type_name_enum">byte</span>
9558 <span class="entry_type_visibility"> [public]</span>
9561 <span class="entry_type_hwlevel">[full] </span>
9565 <ul class="entry_type_enum">
9567 <span class="entry_type_enum_name">OFF</span>
9568 <span class="entry_type_enum_notes"><p>No edge enhancement is applied.<wbr/></p></span>
9571 <span class="entry_type_enum_name">FAST</span>
9572 <span class="entry_type_enum_notes"><p>Apply edge enhancement at a quality level that does not slow down frame rate
9573 relative to sensor output.<wbr/> It may be the same as OFF if edge enhancement will
9574 slow down frame rate relative to sensor.<wbr/></p></span>
9577 <span class="entry_type_enum_name">HIGH_QUALITY</span>
9578 <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>
9581 <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span>
9582 <span class="entry_type_enum_optional">[optional]</span>
9583 <span class="entry_type_enum_notes"><p>Edge enhancement is applied at different
9584 levels for different output streams,<wbr/> based on resolution.<wbr/> Streams at maximum recording
9585 resolution (see <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">CameraDevice#createCaptureSession</a>)
9586 or below have edge enhancement applied,<wbr/> while higher-resolution streams have no edge
9587 enhancement applied.<wbr/> The level of edge enhancement for low-resolution streams is tuned
9588 so that frame rate is not impacted,<wbr/> and the quality is equal to or better than FAST
9589 (since it is only applied to lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p>
9590 <p>This mode is intended to be used by applications operating in a zero-shutter-lag mode
9591 with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures
9592 high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is
9593 produced via reprocessing when a user takes a picture.<wbr/> For such a use case,<wbr/> the
9594 high-resolution buffers must not have edge enhancement applied to maximize efficiency of
9595 preview and to avoid double-applying enhancement when reprocessed,<wbr/> while low-resolution
9596 buffers (used for recording or preview,<wbr/> generally) need edge enhancement applied for
9597 reasonable preview quality.<wbr/></p>
9598 <p>This mode is guaranteed to be supported by devices that support either the
9599 YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities
9600 (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will
9601 be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span>
9605 </td> <!-- entry_type -->
9607 <td class="entry_description">
9608 <p>Operation mode for edge
9609 enhancement.<wbr/></p>
9612 <td class="entry_units">
9615 <td class="entry_range">
9616 <p><a href="#static_android.edge.availableEdgeModes">android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes</a></p>
9619 <td class="entry_hal_version">
9623 <td class="entry_tags">
9624 <ul class="entry_tags">
9625 <li><a href="#tag_V1">V1</a></li>
9626 <li><a href="#tag_REPROC">REPROC</a></li>
9631 <tr class="entries_header">
9632 <th class="th_details" colspan="6">Details</th>
9634 <tr class="entry_cont">
9635 <td class="entry_details" colspan="6">
9636 <p>Edge enhancement improves sharpness and details in the captured image.<wbr/> OFF means
9637 no enhancement will be applied by the camera device.<wbr/></p>
9638 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined enhancement
9639 will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the
9640 camera device will use the highest-quality enhancement algorithms,<wbr/>
9641 even if it slows down capture rate.<wbr/> FAST means the camera device will
9642 not slow down capture rate when applying edge enhancement.<wbr/> FAST may be the same as OFF if
9643 edge enhancement will slow down capture rate.<wbr/> Every output stream will have a similar
9644 amount of enhancement applied.<wbr/></p>
9645 <p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular
9646 buffer of high-resolution images during preview and reprocess image(s) from that buffer
9647 into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies
9648 edge enhancement to low-resolution streams (below maximum recording resolution) to
9649 maximize preview quality,<wbr/> but does not apply edge enhancement to high-resolution streams,<wbr/>
9650 since those will be reprocessed later if necessary.<wbr/></p>
9651 <p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera
9652 device will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV-domain edge enhancement,<wbr/> respectively.<wbr/>
9653 The camera device may adjust its internal edge enhancement parameters for best
9654 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>
9658 <tr class="entries_header">
9659 <th class="th_details" colspan="6">HAL Implementation Details</th>
9661 <tr class="entry_cont">
9662 <td class="entry_details" colspan="6">
9663 <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
9664 adjust the internal edge enhancement reduction parameters appropriately to get the best
9665 quality images.<wbr/></p>
9669 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9670 <!-- end of entry -->
9673 <tr class="entry" id="controls_android.edge.strength">
9674 <td class="entry_name
9676 android.<wbr/>edge.<wbr/>strength
9678 <td class="entry_type">
9679 <span class="entry_type_name">byte</span>
9681 <span class="entry_type_visibility"> [system]</span>
9688 </td> <!-- entry_type -->
9690 <td class="entry_description">
9691 <p>Control the amount of edge enhancement
9692 applied to the images</p>
9695 <td class="entry_units">
9696 1-10; 10 is maximum sharpening
9699 <td class="entry_range">
9702 <td class="entry_hal_version">
9706 <td class="entry_tags">
9707 <ul class="entry_tags">
9708 <li><a href="#tag_FUTURE">FUTURE</a></li>
9715 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9716 <!-- end of entry -->
9720 <!-- end of kind -->
9722 <tr><td colspan="7" class="kind">static</td></tr>
9724 <thead class="entries_header">
9726 <th class="th_name">Property Name</th>
9727 <th class="th_type">Type</th>
9728 <th class="th_description">Description</th>
9729 <th class="th_units">Units</th>
9730 <th class="th_range">Range</th>
9731 <th class="th_hal_version">Initial HIDL HAL version</th>
9732 <th class="th_tags">Tags</th>
9747 <tr class="entry" id="static_android.edge.availableEdgeModes">
9748 <td class="entry_name
9750 android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes
9752 <td class="entry_type">
9753 <span class="entry_type_name">byte</span>
9754 <span class="entry_type_container">x</span>
9756 <span class="entry_type_array">
9759 <span class="entry_type_visibility"> [public as enumList]</span>
9762 <span class="entry_type_hwlevel">[full] </span>
9765 <div class="entry_type_notes">list of enums</div>
9768 </td> <!-- entry_type -->
9770 <td class="entry_description">
9771 <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
9775 <td class="entry_units">
9778 <td class="entry_range">
9779 <p>Any value listed in <a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></p>
9782 <td class="entry_hal_version">
9786 <td class="entry_tags">
9787 <ul class="entry_tags">
9788 <li><a href="#tag_V1">V1</a></li>
9789 <li><a href="#tag_REPROC">REPROC</a></li>
9794 <tr class="entries_header">
9795 <th class="th_details" colspan="6">Details</th>
9797 <tr class="entry_cont">
9798 <td class="entry_details" colspan="6">
9799 <p>Full-capability camera devices must always support OFF; camera devices that support
9800 YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING will list ZERO_<wbr/>SHUTTER_<wbr/>LAG; all devices will
9801 list FAST.<wbr/></p>
9805 <tr class="entries_header">
9806 <th class="th_details" colspan="6">HAL Implementation Details</th>
9808 <tr class="entry_cont">
9809 <td class="entry_details" colspan="6">
9810 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if edge enhancement control is available
9811 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
9812 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
9813 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
9817 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9818 <!-- end of entry -->
9822 <!-- end of kind -->
9824 <tr><td colspan="7" class="kind">dynamic</td></tr>
9826 <thead class="entries_header">
9828 <th class="th_name">Property Name</th>
9829 <th class="th_type">Type</th>
9830 <th class="th_description">Description</th>
9831 <th class="th_units">Units</th>
9832 <th class="th_range">Range</th>
9833 <th class="th_hal_version">Initial HIDL HAL version</th>
9834 <th class="th_tags">Tags</th>
9849 <tr class="entry" id="dynamic_android.edge.mode">
9850 <td class="entry_name
9852 android.<wbr/>edge.<wbr/>mode
9854 <td class="entry_type">
9855 <span class="entry_type_name entry_type_name_enum">byte</span>
9857 <span class="entry_type_visibility"> [public]</span>
9860 <span class="entry_type_hwlevel">[full] </span>
9864 <ul class="entry_type_enum">
9866 <span class="entry_type_enum_name">OFF</span>
9867 <span class="entry_type_enum_notes"><p>No edge enhancement is applied.<wbr/></p></span>
9870 <span class="entry_type_enum_name">FAST</span>
9871 <span class="entry_type_enum_notes"><p>Apply edge enhancement at a quality level that does not slow down frame rate
9872 relative to sensor output.<wbr/> It may be the same as OFF if edge enhancement will
9873 slow down frame rate relative to sensor.<wbr/></p></span>
9876 <span class="entry_type_enum_name">HIGH_QUALITY</span>
9877 <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>
9880 <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span>
9881 <span class="entry_type_enum_optional">[optional]</span>
9882 <span class="entry_type_enum_notes"><p>Edge enhancement is applied at different
9883 levels for different output streams,<wbr/> based on resolution.<wbr/> Streams at maximum recording
9884 resolution (see <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">CameraDevice#createCaptureSession</a>)
9885 or below have edge enhancement applied,<wbr/> while higher-resolution streams have no edge
9886 enhancement applied.<wbr/> The level of edge enhancement for low-resolution streams is tuned
9887 so that frame rate is not impacted,<wbr/> and the quality is equal to or better than FAST
9888 (since it is only applied to lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p>
9889 <p>This mode is intended to be used by applications operating in a zero-shutter-lag mode
9890 with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures
9891 high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is
9892 produced via reprocessing when a user takes a picture.<wbr/> For such a use case,<wbr/> the
9893 high-resolution buffers must not have edge enhancement applied to maximize efficiency of
9894 preview and to avoid double-applying enhancement when reprocessed,<wbr/> while low-resolution
9895 buffers (used for recording or preview,<wbr/> generally) need edge enhancement applied for
9896 reasonable preview quality.<wbr/></p>
9897 <p>This mode is guaranteed to be supported by devices that support either the
9898 YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities
9899 (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will
9900 be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span>
9904 </td> <!-- entry_type -->
9906 <td class="entry_description">
9907 <p>Operation mode for edge
9908 enhancement.<wbr/></p>
9911 <td class="entry_units">
9914 <td class="entry_range">
9915 <p><a href="#static_android.edge.availableEdgeModes">android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes</a></p>
9918 <td class="entry_hal_version">
9922 <td class="entry_tags">
9923 <ul class="entry_tags">
9924 <li><a href="#tag_V1">V1</a></li>
9925 <li><a href="#tag_REPROC">REPROC</a></li>
9930 <tr class="entries_header">
9931 <th class="th_details" colspan="6">Details</th>
9933 <tr class="entry_cont">
9934 <td class="entry_details" colspan="6">
9935 <p>Edge enhancement improves sharpness and details in the captured image.<wbr/> OFF means
9936 no enhancement will be applied by the camera device.<wbr/></p>
9937 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined enhancement
9938 will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the
9939 camera device will use the highest-quality enhancement algorithms,<wbr/>
9940 even if it slows down capture rate.<wbr/> FAST means the camera device will
9941 not slow down capture rate when applying edge enhancement.<wbr/> FAST may be the same as OFF if
9942 edge enhancement will slow down capture rate.<wbr/> Every output stream will have a similar
9943 amount of enhancement applied.<wbr/></p>
9944 <p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular
9945 buffer of high-resolution images during preview and reprocess image(s) from that buffer
9946 into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies
9947 edge enhancement to low-resolution streams (below maximum recording resolution) to
9948 maximize preview quality,<wbr/> but does not apply edge enhancement to high-resolution streams,<wbr/>
9949 since those will be reprocessed later if necessary.<wbr/></p>
9950 <p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera
9951 device will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV-domain edge enhancement,<wbr/> respectively.<wbr/>
9952 The camera device may adjust its internal edge enhancement parameters for best
9953 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>
9957 <tr class="entries_header">
9958 <th class="th_details" colspan="6">HAL Implementation Details</th>
9960 <tr class="entry_cont">
9961 <td class="entry_details" colspan="6">
9962 <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
9963 adjust the internal edge enhancement reduction parameters appropriately to get the best
9964 quality images.<wbr/></p>
9968 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9969 <!-- end of entry -->
9973 <!-- end of kind -->
9976 <!-- end of section -->
9977 <tr><td colspan="7" id="section_flash" class="section">flash</td></tr>
9980 <tr><td colspan="7" class="kind">controls</td></tr>
9982 <thead class="entries_header">
9984 <th class="th_name">Property Name</th>
9985 <th class="th_type">Type</th>
9986 <th class="th_description">Description</th>
9987 <th class="th_units">Units</th>
9988 <th class="th_range">Range</th>
9989 <th class="th_hal_version">Initial HIDL HAL version</th>
9990 <th class="th_tags">Tags</th>
10005 <tr class="entry" id="controls_android.flash.firingPower">
10006 <td class="entry_name
10008 android.<wbr/>flash.<wbr/>firing<wbr/>Power
10010 <td class="entry_type">
10011 <span class="entry_type_name">byte</span>
10013 <span class="entry_type_visibility"> [system]</span>
10020 </td> <!-- entry_type -->
10022 <td class="entry_description">
10023 <p>Power for flash firing/<wbr/>torch</p>
10026 <td class="entry_units">
10027 10 is max power; 0 is no flash.<wbr/> Linear
10030 <td class="entry_range">
10034 <td class="entry_hal_version">
10038 <td class="entry_tags">
10039 <ul class="entry_tags">
10040 <li><a href="#tag_FUTURE">FUTURE</a></li>
10045 <tr class="entries_header">
10046 <th class="th_details" colspan="6">Details</th>
10048 <tr class="entry_cont">
10049 <td class="entry_details" colspan="6">
10050 <p>Power for snapshot may use a different scale than
10051 for torch mode.<wbr/> Only one entry for torch mode will be
10057 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10058 <!-- end of entry -->
10061 <tr class="entry" id="controls_android.flash.firingTime">
10062 <td class="entry_name
10064 android.<wbr/>flash.<wbr/>firing<wbr/>Time
10066 <td class="entry_type">
10067 <span class="entry_type_name">int64</span>
10069 <span class="entry_type_visibility"> [system]</span>
10076 </td> <!-- entry_type -->
10078 <td class="entry_description">
10079 <p>Firing time of flash relative to start of
10083 <td class="entry_units">
10087 <td class="entry_range">
10088 <p>0-(exposure time-flash duration)</p>
10091 <td class="entry_hal_version">
10095 <td class="entry_tags">
10096 <ul class="entry_tags">
10097 <li><a href="#tag_FUTURE">FUTURE</a></li>
10102 <tr class="entries_header">
10103 <th class="th_details" colspan="6">Details</th>
10105 <tr class="entry_cont">
10106 <td class="entry_details" colspan="6">
10107 <p>Clamped to (0,<wbr/> exposure time - flash
10108 duration).<wbr/></p>
10113 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10114 <!-- end of entry -->
10117 <tr class="entry" id="controls_android.flash.mode">
10118 <td class="entry_name
10120 android.<wbr/>flash.<wbr/>mode
10122 <td class="entry_type">
10123 <span class="entry_type_name entry_type_name_enum">byte</span>
10125 <span class="entry_type_visibility"> [public]</span>
10128 <span class="entry_type_hwlevel">[legacy] </span>
10132 <ul class="entry_type_enum">
10134 <span class="entry_type_enum_name">OFF</span>
10135 <span class="entry_type_enum_notes"><p>Do not fire the flash for this capture.<wbr/></p></span>
10138 <span class="entry_type_enum_name">SINGLE</span>
10139 <span class="entry_type_enum_notes"><p>If the flash is available and charged,<wbr/> fire flash
10140 for this capture.<wbr/></p></span>
10143 <span class="entry_type_enum_name">TORCH</span>
10144 <span class="entry_type_enum_notes"><p>Transition flash to continuously on.<wbr/></p></span>
10148 </td> <!-- entry_type -->
10150 <td class="entry_description">
10151 <p>The desired mode for for the camera device's flash control.<wbr/></p>
10154 <td class="entry_units">
10157 <td class="entry_range">
10160 <td class="entry_hal_version">
10164 <td class="entry_tags">
10165 <ul class="entry_tags">
10166 <li><a href="#tag_BC">BC</a></li>
10171 <tr class="entries_header">
10172 <th class="th_details" colspan="6">Details</th>
10174 <tr class="entry_cont">
10175 <td class="entry_details" colspan="6">
10176 <p>This control is only effective when flash unit is available
10177 (<code><a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> == true</code>).<wbr/></p>
10178 <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/>
10179 Otherwise,<wbr/> the camera device auto-exposure related flash control (ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/>
10180 ON_<wbr/>ALWAYS_<wbr/>FLASH,<wbr/> or ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE) will override this control.<wbr/></p>
10181 <p>When set to OFF,<wbr/> the camera device will not fire flash for this capture.<wbr/></p>
10182 <p>When set to SINGLE,<wbr/> the camera device will fire flash regardless of the camera
10183 device's auto-exposure routine's result.<wbr/> When used in still capture case,<wbr/> this
10184 control should be used along with auto-exposure (AE) precapture metering sequence
10185 (<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>
10186 <p>When set to TORCH,<wbr/> the flash will be on continuously.<wbr/> This mode can be used
10187 for use cases such as preview,<wbr/> auto-focus assist,<wbr/> still capture,<wbr/> or video recording.<wbr/></p>
10188 <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>
10193 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10194 <!-- end of entry -->
10198 <!-- end of kind -->
10200 <tr><td colspan="7" class="kind">static</td></tr>
10202 <thead class="entries_header">
10204 <th class="th_name">Property Name</th>
10205 <th class="th_type">Type</th>
10206 <th class="th_description">Description</th>
10207 <th class="th_units">Units</th>
10208 <th class="th_range">Range</th>
10209 <th class="th_hal_version">Initial HIDL HAL version</th>
10210 <th class="th_tags">Tags</th>
10227 <tr class="entry" id="static_android.flash.info.available">
10228 <td class="entry_name
10230 android.<wbr/>flash.<wbr/>info.<wbr/>available
10232 <td class="entry_type">
10233 <span class="entry_type_name entry_type_name_enum">byte</span>
10235 <span class="entry_type_visibility"> [public as boolean]</span>
10238 <span class="entry_type_hwlevel">[legacy] </span>
10242 <ul class="entry_type_enum">
10244 <span class="entry_type_enum_name">FALSE</span>
10247 <span class="entry_type_enum_name">TRUE</span>
10251 </td> <!-- entry_type -->
10253 <td class="entry_description">
10254 <p>Whether this camera device has a
10255 flash unit.<wbr/></p>
10258 <td class="entry_units">
10261 <td class="entry_range">
10264 <td class="entry_hal_version">
10268 <td class="entry_tags">
10269 <ul class="entry_tags">
10270 <li><a href="#tag_BC">BC</a></li>
10275 <tr class="entries_header">
10276 <th class="th_details" colspan="6">Details</th>
10278 <tr class="entry_cont">
10279 <td class="entry_details" colspan="6">
10280 <p>Will be <code>false</code> if no flash is available.<wbr/></p>
10281 <p>If there is no flash unit,<wbr/> none of the flash controls do
10282 anything.<wbr/></p>
10287 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10288 <!-- end of entry -->
10291 <tr class="entry" id="static_android.flash.info.chargeDuration">
10292 <td class="entry_name
10294 android.<wbr/>flash.<wbr/>info.<wbr/>charge<wbr/>Duration
10296 <td class="entry_type">
10297 <span class="entry_type_name">int64</span>
10299 <span class="entry_type_visibility"> [system]</span>
10306 </td> <!-- entry_type -->
10308 <td class="entry_description">
10309 <p>Time taken before flash can fire
10313 <td class="entry_units">
10317 <td class="entry_range">
10321 <td class="entry_hal_version">
10325 <td class="entry_tags">
10326 <ul class="entry_tags">
10327 <li><a href="#tag_FUTURE">FUTURE</a></li>
10332 <tr class="entries_header">
10333 <th class="th_details" colspan="6">Details</th>
10335 <tr class="entry_cont">
10336 <td class="entry_details" colspan="6">
10337 <p>1 second too long/<wbr/>too short for recharge? Should
10338 this be power-dependent?</p>
10343 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10344 <!-- end of entry -->
10350 <tr class="entry" id="static_android.flash.colorTemperature">
10351 <td class="entry_name
10353 android.<wbr/>flash.<wbr/>color<wbr/>Temperature
10355 <td class="entry_type">
10356 <span class="entry_type_name">byte</span>
10358 <span class="entry_type_visibility"> [system]</span>
10365 </td> <!-- entry_type -->
10367 <td class="entry_description">
10368 <p>The x,<wbr/>y whitepoint of the
10372 <td class="entry_units">
10376 <td class="entry_range">
10377 <p>0-1 for both</p>
10380 <td class="entry_hal_version">
10384 <td class="entry_tags">
10385 <ul class="entry_tags">
10386 <li><a href="#tag_FUTURE">FUTURE</a></li>
10393 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10394 <!-- end of entry -->
10397 <tr class="entry" id="static_android.flash.maxEnergy">
10398 <td class="entry_name
10400 android.<wbr/>flash.<wbr/>max<wbr/>Energy
10402 <td class="entry_type">
10403 <span class="entry_type_name">byte</span>
10405 <span class="entry_type_visibility"> [system]</span>
10412 </td> <!-- entry_type -->
10414 <td class="entry_description">
10415 <p>Max energy output of the flash for a full
10416 power single flash</p>
10419 <td class="entry_units">
10423 <td class="entry_range">
10427 <td class="entry_hal_version">
10431 <td class="entry_tags">
10432 <ul class="entry_tags">
10433 <li><a href="#tag_FUTURE">FUTURE</a></li>
10440 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10441 <!-- end of entry -->
10445 <!-- end of kind -->
10447 <tr><td colspan="7" class="kind">dynamic</td></tr>
10449 <thead class="entries_header">
10451 <th class="th_name">Property Name</th>
10452 <th class="th_type">Type</th>
10453 <th class="th_description">Description</th>
10454 <th class="th_units">Units</th>
10455 <th class="th_range">Range</th>
10456 <th class="th_hal_version">Initial HIDL HAL version</th>
10457 <th class="th_tags">Tags</th>
10472 <tr class="entry" id="dynamic_android.flash.firingPower">
10473 <td class="entry_name
10475 android.<wbr/>flash.<wbr/>firing<wbr/>Power
10477 <td class="entry_type">
10478 <span class="entry_type_name">byte</span>
10480 <span class="entry_type_visibility"> [system]</span>
10487 </td> <!-- entry_type -->
10489 <td class="entry_description">
10490 <p>Power for flash firing/<wbr/>torch</p>
10493 <td class="entry_units">
10494 10 is max power; 0 is no flash.<wbr/> Linear
10497 <td class="entry_range">
10501 <td class="entry_hal_version">
10505 <td class="entry_tags">
10506 <ul class="entry_tags">
10507 <li><a href="#tag_FUTURE">FUTURE</a></li>
10512 <tr class="entries_header">
10513 <th class="th_details" colspan="6">Details</th>
10515 <tr class="entry_cont">
10516 <td class="entry_details" colspan="6">
10517 <p>Power for snapshot may use a different scale than
10518 for torch mode.<wbr/> Only one entry for torch mode will be
10524 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10525 <!-- end of entry -->
10528 <tr class="entry" id="dynamic_android.flash.firingTime">
10529 <td class="entry_name
10531 android.<wbr/>flash.<wbr/>firing<wbr/>Time
10533 <td class="entry_type">
10534 <span class="entry_type_name">int64</span>
10536 <span class="entry_type_visibility"> [system]</span>
10543 </td> <!-- entry_type -->
10545 <td class="entry_description">
10546 <p>Firing time of flash relative to start of
10550 <td class="entry_units">
10554 <td class="entry_range">
10555 <p>0-(exposure time-flash duration)</p>
10558 <td class="entry_hal_version">
10562 <td class="entry_tags">
10563 <ul class="entry_tags">
10564 <li><a href="#tag_FUTURE">FUTURE</a></li>
10569 <tr class="entries_header">
10570 <th class="th_details" colspan="6">Details</th>
10572 <tr class="entry_cont">
10573 <td class="entry_details" colspan="6">
10574 <p>Clamped to (0,<wbr/> exposure time - flash
10575 duration).<wbr/></p>
10580 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10581 <!-- end of entry -->
10584 <tr class="entry" id="dynamic_android.flash.mode">
10585 <td class="entry_name
10587 android.<wbr/>flash.<wbr/>mode
10589 <td class="entry_type">
10590 <span class="entry_type_name entry_type_name_enum">byte</span>
10592 <span class="entry_type_visibility"> [public]</span>
10595 <span class="entry_type_hwlevel">[legacy] </span>
10599 <ul class="entry_type_enum">
10601 <span class="entry_type_enum_name">OFF</span>
10602 <span class="entry_type_enum_notes"><p>Do not fire the flash for this capture.<wbr/></p></span>
10605 <span class="entry_type_enum_name">SINGLE</span>
10606 <span class="entry_type_enum_notes"><p>If the flash is available and charged,<wbr/> fire flash
10607 for this capture.<wbr/></p></span>
10610 <span class="entry_type_enum_name">TORCH</span>
10611 <span class="entry_type_enum_notes"><p>Transition flash to continuously on.<wbr/></p></span>
10615 </td> <!-- entry_type -->
10617 <td class="entry_description">
10618 <p>The desired mode for for the camera device's flash control.<wbr/></p>
10621 <td class="entry_units">
10624 <td class="entry_range">
10627 <td class="entry_hal_version">
10631 <td class="entry_tags">
10632 <ul class="entry_tags">
10633 <li><a href="#tag_BC">BC</a></li>
10638 <tr class="entries_header">
10639 <th class="th_details" colspan="6">Details</th>
10641 <tr class="entry_cont">
10642 <td class="entry_details" colspan="6">
10643 <p>This control is only effective when flash unit is available
10644 (<code><a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> == true</code>).<wbr/></p>
10645 <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/>
10646 Otherwise,<wbr/> the camera device auto-exposure related flash control (ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/>
10647 ON_<wbr/>ALWAYS_<wbr/>FLASH,<wbr/> or ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE) will override this control.<wbr/></p>
10648 <p>When set to OFF,<wbr/> the camera device will not fire flash for this capture.<wbr/></p>
10649 <p>When set to SINGLE,<wbr/> the camera device will fire flash regardless of the camera
10650 device's auto-exposure routine's result.<wbr/> When used in still capture case,<wbr/> this
10651 control should be used along with auto-exposure (AE) precapture metering sequence
10652 (<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>
10653 <p>When set to TORCH,<wbr/> the flash will be on continuously.<wbr/> This mode can be used
10654 for use cases such as preview,<wbr/> auto-focus assist,<wbr/> still capture,<wbr/> or video recording.<wbr/></p>
10655 <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>
10660 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10661 <!-- end of entry -->
10664 <tr class="entry" id="dynamic_android.flash.state">
10665 <td class="entry_name
10667 android.<wbr/>flash.<wbr/>state
10669 <td class="entry_type">
10670 <span class="entry_type_name entry_type_name_enum">byte</span>
10672 <span class="entry_type_visibility"> [public]</span>
10675 <span class="entry_type_hwlevel">[limited] </span>
10679 <ul class="entry_type_enum">
10681 <span class="entry_type_enum_name">UNAVAILABLE</span>
10682 <span class="entry_type_enum_notes"><p>No flash on camera.<wbr/></p></span>
10685 <span class="entry_type_enum_name">CHARGING</span>
10686 <span class="entry_type_enum_notes"><p>Flash is charging and cannot be fired.<wbr/></p></span>
10689 <span class="entry_type_enum_name">READY</span>
10690 <span class="entry_type_enum_notes"><p>Flash is ready to fire.<wbr/></p></span>
10693 <span class="entry_type_enum_name">FIRED</span>
10694 <span class="entry_type_enum_notes"><p>Flash fired for this capture.<wbr/></p></span>
10697 <span class="entry_type_enum_name">PARTIAL</span>
10698 <span class="entry_type_enum_notes"><p>Flash partially illuminated this frame.<wbr/></p>
10699 <p>This is usually due to the next or previous frame having
10700 the flash fire,<wbr/> and the flash spilling into this capture
10701 due to hardware limitations.<wbr/></p></span>
10705 </td> <!-- entry_type -->
10707 <td class="entry_description">
10708 <p>Current state of the flash
10712 <td class="entry_units">
10715 <td class="entry_range">
10718 <td class="entry_hal_version">
10722 <td class="entry_tags">
10726 <tr class="entries_header">
10727 <th class="th_details" colspan="6">Details</th>
10729 <tr class="entry_cont">
10730 <td class="entry_details" colspan="6">
10731 <p>When the camera device doesn't have flash unit
10732 (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/>
10733 Other states indicate the current flash status.<wbr/></p>
10734 <p>In certain conditions,<wbr/> this will be available on LEGACY devices:</p>
10736 <li>Flash-less cameras always return UNAVAILABLE.<wbr/></li>
10737 <li>Using <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>==</code> ON_<wbr/>ALWAYS_<wbr/>FLASH
10738 will always return FIRED.<wbr/></li>
10739 <li>Using <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> <code>==</code> TORCH
10740 will always return FIRED.<wbr/></li>
10742 <p>In all other conditions the state will not be available on
10743 LEGACY devices (i.<wbr/>e.<wbr/> it will be <code>null</code>).<wbr/></p>
10748 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10749 <!-- end of entry -->
10753 <!-- end of kind -->
10756 <!-- end of section -->
10757 <tr><td colspan="7" id="section_hotPixel" class="section">hotPixel</td></tr>
10760 <tr><td colspan="7" class="kind">controls</td></tr>
10762 <thead class="entries_header">
10764 <th class="th_name">Property Name</th>
10765 <th class="th_type">Type</th>
10766 <th class="th_description">Description</th>
10767 <th class="th_units">Units</th>
10768 <th class="th_range">Range</th>
10769 <th class="th_hal_version">Initial HIDL HAL version</th>
10770 <th class="th_tags">Tags</th>
10785 <tr class="entry" id="controls_android.hotPixel.mode">
10786 <td class="entry_name
10788 android.<wbr/>hot<wbr/>Pixel.<wbr/>mode
10790 <td class="entry_type">
10791 <span class="entry_type_name entry_type_name_enum">byte</span>
10793 <span class="entry_type_visibility"> [public]</span>
10799 <ul class="entry_type_enum">
10801 <span class="entry_type_enum_name">OFF</span>
10802 <span class="entry_type_enum_notes"><p>No hot pixel correction is applied.<wbr/></p>
10803 <p>The frame rate must not be reduced relative to sensor raw output
10804 for this option.<wbr/></p>
10805 <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>
10808 <span class="entry_type_enum_name">FAST</span>
10809 <span class="entry_type_enum_notes"><p>Hot pixel correction is applied,<wbr/> without reducing frame
10810 rate relative to sensor raw output.<wbr/></p>
10811 <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>
10814 <span class="entry_type_enum_name">HIGH_QUALITY</span>
10815 <span class="entry_type_enum_notes"><p>High-quality hot pixel correction is applied,<wbr/> at a cost
10816 of possibly reduced frame rate relative to sensor raw output.<wbr/></p>
10817 <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>
10821 </td> <!-- entry_type -->
10823 <td class="entry_description">
10824 <p>Operational mode for hot pixel correction.<wbr/></p>
10827 <td class="entry_units">
10830 <td class="entry_range">
10831 <p><a href="#static_android.hotPixel.availableHotPixelModes">android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes</a></p>
10834 <td class="entry_hal_version">
10838 <td class="entry_tags">
10839 <ul class="entry_tags">
10840 <li><a href="#tag_V1">V1</a></li>
10841 <li><a href="#tag_RAW">RAW</a></li>
10846 <tr class="entries_header">
10847 <th class="th_details" colspan="6">Details</th>
10849 <tr class="entry_cont">
10850 <td class="entry_details" colspan="6">
10851 <p>Hotpixel correction interpolates out,<wbr/> or otherwise removes,<wbr/> pixels
10852 that do not accurately measure the incoming light (i.<wbr/>e.<wbr/> pixels that
10853 are stuck at an arbitrary value or are oversensitive).<wbr/></p>
10858 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10859 <!-- end of entry -->
10863 <!-- end of kind -->
10865 <tr><td colspan="7" class="kind">static</td></tr>
10867 <thead class="entries_header">
10869 <th class="th_name">Property Name</th>
10870 <th class="th_type">Type</th>
10871 <th class="th_description">Description</th>
10872 <th class="th_units">Units</th>
10873 <th class="th_range">Range</th>
10874 <th class="th_hal_version">Initial HIDL HAL version</th>
10875 <th class="th_tags">Tags</th>
10890 <tr class="entry" id="static_android.hotPixel.availableHotPixelModes">
10891 <td class="entry_name
10893 android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes
10895 <td class="entry_type">
10896 <span class="entry_type_name">byte</span>
10897 <span class="entry_type_container">x</span>
10899 <span class="entry_type_array">
10902 <span class="entry_type_visibility"> [public as enumList]</span>
10907 <div class="entry_type_notes">list of enums</div>
10910 </td> <!-- entry_type -->
10912 <td class="entry_description">
10913 <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
10914 camera device.<wbr/></p>
10917 <td class="entry_units">
10920 <td class="entry_range">
10921 <p>Any value listed in <a href="#controls_android.hotPixel.mode">android.<wbr/>hot<wbr/>Pixel.<wbr/>mode</a></p>
10924 <td class="entry_hal_version">
10928 <td class="entry_tags">
10929 <ul class="entry_tags">
10930 <li><a href="#tag_V1">V1</a></li>
10931 <li><a href="#tag_RAW">RAW</a></li>
10936 <tr class="entries_header">
10937 <th class="th_details" colspan="6">Details</th>
10939 <tr class="entry_cont">
10940 <td class="entry_details" colspan="6">
10941 <p>FULL mode camera devices will always support FAST.<wbr/></p>
10945 <tr class="entries_header">
10946 <th class="th_details" colspan="6">HAL Implementation Details</th>
10948 <tr class="entry_cont">
10949 <td class="entry_details" colspan="6">
10950 <p>To avoid performance issues,<wbr/> there will be significantly fewer hot
10951 pixels than actual pixels on the camera sensor.<wbr/>
10952 HAL must support both FAST and HIGH_<wbr/>QUALITY if hot pixel correction control is available
10953 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
10954 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
10955 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
10959 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10960 <!-- end of entry -->
10964 <!-- end of kind -->
10966 <tr><td colspan="7" class="kind">dynamic</td></tr>
10968 <thead class="entries_header">
10970 <th class="th_name">Property Name</th>
10971 <th class="th_type">Type</th>
10972 <th class="th_description">Description</th>
10973 <th class="th_units">Units</th>
10974 <th class="th_range">Range</th>
10975 <th class="th_hal_version">Initial HIDL HAL version</th>
10976 <th class="th_tags">Tags</th>
10991 <tr class="entry" id="dynamic_android.hotPixel.mode">
10992 <td class="entry_name
10994 android.<wbr/>hot<wbr/>Pixel.<wbr/>mode
10996 <td class="entry_type">
10997 <span class="entry_type_name entry_type_name_enum">byte</span>
10999 <span class="entry_type_visibility"> [public]</span>
11005 <ul class="entry_type_enum">
11007 <span class="entry_type_enum_name">OFF</span>
11008 <span class="entry_type_enum_notes"><p>No hot pixel correction is applied.<wbr/></p>
11009 <p>The frame rate must not be reduced relative to sensor raw output
11010 for this option.<wbr/></p>
11011 <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>
11014 <span class="entry_type_enum_name">FAST</span>
11015 <span class="entry_type_enum_notes"><p>Hot pixel correction is applied,<wbr/> without reducing frame
11016 rate relative to sensor raw output.<wbr/></p>
11017 <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>
11020 <span class="entry_type_enum_name">HIGH_QUALITY</span>
11021 <span class="entry_type_enum_notes"><p>High-quality hot pixel correction is applied,<wbr/> at a cost
11022 of possibly reduced frame rate relative to sensor raw output.<wbr/></p>
11023 <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>
11027 </td> <!-- entry_type -->
11029 <td class="entry_description">
11030 <p>Operational mode for hot pixel correction.<wbr/></p>
11033 <td class="entry_units">
11036 <td class="entry_range">
11037 <p><a href="#static_android.hotPixel.availableHotPixelModes">android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes</a></p>
11040 <td class="entry_hal_version">
11044 <td class="entry_tags">
11045 <ul class="entry_tags">
11046 <li><a href="#tag_V1">V1</a></li>
11047 <li><a href="#tag_RAW">RAW</a></li>
11052 <tr class="entries_header">
11053 <th class="th_details" colspan="6">Details</th>
11055 <tr class="entry_cont">
11056 <td class="entry_details" colspan="6">
11057 <p>Hotpixel correction interpolates out,<wbr/> or otherwise removes,<wbr/> pixels
11058 that do not accurately measure the incoming light (i.<wbr/>e.<wbr/> pixels that
11059 are stuck at an arbitrary value or are oversensitive).<wbr/></p>
11064 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11065 <!-- end of entry -->
11069 <!-- end of kind -->
11072 <!-- end of section -->
11073 <tr><td colspan="7" id="section_jpeg" class="section">jpeg</td></tr>
11076 <tr><td colspan="7" class="kind">controls</td></tr>
11078 <thead class="entries_header">
11080 <th class="th_name">Property Name</th>
11081 <th class="th_type">Type</th>
11082 <th class="th_description">Description</th>
11083 <th class="th_units">Units</th>
11084 <th class="th_range">Range</th>
11085 <th class="th_hal_version">Initial HIDL HAL version</th>
11086 <th class="th_tags">Tags</th>
11101 <tr class="entry" id="controls_android.jpeg.gpsLocation">
11102 <td class="entry_name
11104 android.<wbr/>jpeg.<wbr/>gps<wbr/>Location
11106 <td class="entry_type">
11107 <span class="entry_type_name">byte</span>
11109 <span class="entry_type_visibility"> [java_public as location]</span>
11111 <span class="entry_type_synthetic">[synthetic] </span>
11113 <span class="entry_type_hwlevel">[legacy] </span>
11118 </td> <!-- entry_type -->
11120 <td class="entry_description">
11121 <p>A location object to use when generating image GPS metadata.<wbr/></p>
11124 <td class="entry_units">
11127 <td class="entry_range">
11130 <td class="entry_hal_version">
11134 <td class="entry_tags">
11138 <tr class="entries_header">
11139 <th class="th_details" colspan="6">Details</th>
11141 <tr class="entry_cont">
11142 <td class="entry_details" colspan="6">
11143 <p>Setting a location object in a request will include the GPS coordinates of the location
11144 into any JPEG images captured based on the request.<wbr/> These coordinates can then be
11145 viewed by anyone who receives the JPEG image.<wbr/></p>
11150 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11151 <!-- end of entry -->
11154 <tr class="entry" id="controls_android.jpeg.gpsCoordinates">
11155 <td class="entry_name
11157 android.<wbr/>jpeg.<wbr/>gps<wbr/>Coordinates
11159 <td class="entry_type">
11160 <span class="entry_type_name">double</span>
11161 <span class="entry_type_container">x</span>
11163 <span class="entry_type_array">
11166 <span class="entry_type_visibility"> [ndk_public]</span>
11169 <span class="entry_type_hwlevel">[legacy] </span>
11172 <div class="entry_type_notes">latitude,<wbr/> longitude,<wbr/> altitude.<wbr/> First two in degrees,<wbr/> the third in meters</div>
11175 </td> <!-- entry_type -->
11177 <td class="entry_description">
11178 <p>GPS coordinates to include in output JPEG
11182 <td class="entry_units">
11185 <td class="entry_range">
11186 <p>(-180 - 180],<wbr/> [-90,<wbr/>90],<wbr/> [-inf,<wbr/> inf]</p>
11189 <td class="entry_hal_version">
11193 <td class="entry_tags">
11194 <ul class="entry_tags">
11195 <li><a href="#tag_BC">BC</a></li>
11202 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11203 <!-- end of entry -->
11206 <tr class="entry" id="controls_android.jpeg.gpsProcessingMethod">
11207 <td class="entry_name
11209 android.<wbr/>jpeg.<wbr/>gps<wbr/>Processing<wbr/>Method
11211 <td class="entry_type">
11212 <span class="entry_type_name">byte</span>
11214 <span class="entry_type_visibility"> [ndk_public as string]</span>
11217 <span class="entry_type_hwlevel">[legacy] </span>
11222 </td> <!-- entry_type -->
11224 <td class="entry_description">
11225 <p>32 characters describing GPS algorithm to
11226 include in EXIF.<wbr/></p>
11229 <td class="entry_units">
11230 UTF-8 null-terminated string
11233 <td class="entry_range">
11236 <td class="entry_hal_version">
11240 <td class="entry_tags">
11241 <ul class="entry_tags">
11242 <li><a href="#tag_BC">BC</a></li>
11249 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11250 <!-- end of entry -->
11253 <tr class="entry" id="controls_android.jpeg.gpsTimestamp">
11254 <td class="entry_name
11256 android.<wbr/>jpeg.<wbr/>gps<wbr/>Timestamp
11258 <td class="entry_type">
11259 <span class="entry_type_name">int64</span>
11261 <span class="entry_type_visibility"> [ndk_public]</span>
11264 <span class="entry_type_hwlevel">[legacy] </span>
11269 </td> <!-- entry_type -->
11271 <td class="entry_description">
11272 <p>Time GPS fix was made to include in
11276 <td class="entry_units">
11277 UTC in seconds since January 1,<wbr/> 1970
11280 <td class="entry_range">
11283 <td class="entry_hal_version">
11287 <td class="entry_tags">
11288 <ul class="entry_tags">
11289 <li><a href="#tag_BC">BC</a></li>
11296 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11297 <!-- end of entry -->
11300 <tr class="entry" id="controls_android.jpeg.orientation">
11301 <td class="entry_name
11303 android.<wbr/>jpeg.<wbr/>orientation
11305 <td class="entry_type">
11306 <span class="entry_type_name">int32</span>
11308 <span class="entry_type_visibility"> [public]</span>
11311 <span class="entry_type_hwlevel">[legacy] </span>
11316 </td> <!-- entry_type -->
11318 <td class="entry_description">
11319 <p>The orientation for a JPEG image.<wbr/></p>
11322 <td class="entry_units">
11323 Degrees in multiples of 90
11326 <td class="entry_range">
11327 <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p>
11330 <td class="entry_hal_version">
11334 <td class="entry_tags">
11335 <ul class="entry_tags">
11336 <li><a href="#tag_BC">BC</a></li>
11341 <tr class="entries_header">
11342 <th class="th_details" colspan="6">Details</th>
11344 <tr class="entry_cont">
11345 <td class="entry_details" colspan="6">
11346 <p>The clockwise rotation angle in degrees,<wbr/> relative to the orientation
11347 to the camera,<wbr/> that the JPEG picture needs to be rotated by,<wbr/> to be viewed
11349 <p>Camera devices may either encode this value into the JPEG EXIF header,<wbr/> or
11350 rotate the image data to match this orientation.<wbr/> When the image data is rotated,<wbr/>
11351 the thumbnail data will also be rotated.<wbr/></p>
11352 <p>Note that this orientation is relative to the orientation of the camera sensor,<wbr/> given
11353 by <a href="#static_android.sensor.orientation">android.<wbr/>sensor.<wbr/>orientation</a>.<wbr/></p>
11354 <p>To translate from the device orientation given by the Android sensor APIs,<wbr/> the following
11355 sample code may be used:</p>
11356 <pre><code>private int getJpegOrientation(CameraCharacteristics c,<wbr/> int deviceOrientation) {
11357 if (deviceOrientation == android.<wbr/>view.<wbr/>Orientation<wbr/>Event<wbr/>Listener.<wbr/>ORIENTATION_<wbr/>UNKNOWN) return 0;
11358 int sensorOrientation = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>SENSOR_<wbr/>ORIENTATION);
11360 //<wbr/> Round device orientation to a multiple of 90
11361 deviceOrientation = (deviceOrientation + 45) /<wbr/> 90 * 90;
11363 //<wbr/> Reverse device orientation for front-facing cameras
11364 boolean facingFront = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING) == Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING_<wbr/>FRONT;
11365 if (facingFront) deviceOrientation = -deviceOrientation;
11367 //<wbr/> Calculate desired JPEG orientation relative to camera orientation to make
11368 //<wbr/> the image upright relative to the device orientation
11369 int jpegOrientation = (sensorOrientation + deviceOrientation + 360) % 360;
11371 return jpegOrientation;
11378 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11379 <!-- end of entry -->
11382 <tr class="entry" id="controls_android.jpeg.quality">
11383 <td class="entry_name
11385 android.<wbr/>jpeg.<wbr/>quality
11387 <td class="entry_type">
11388 <span class="entry_type_name">byte</span>
11390 <span class="entry_type_visibility"> [public]</span>
11393 <span class="entry_type_hwlevel">[legacy] </span>
11398 </td> <!-- entry_type -->
11400 <td class="entry_description">
11401 <p>Compression quality of the final JPEG
11405 <td class="entry_units">
11408 <td class="entry_range">
11409 <p>1-100; larger is higher quality</p>
11412 <td class="entry_hal_version">
11416 <td class="entry_tags">
11417 <ul class="entry_tags">
11418 <li><a href="#tag_BC">BC</a></li>
11423 <tr class="entries_header">
11424 <th class="th_details" colspan="6">Details</th>
11426 <tr class="entry_cont">
11427 <td class="entry_details" colspan="6">
11428 <p>85-95 is typical usage range.<wbr/></p>
11433 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11434 <!-- end of entry -->
11437 <tr class="entry" id="controls_android.jpeg.thumbnailQuality">
11438 <td class="entry_name
11440 android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Quality
11442 <td class="entry_type">
11443 <span class="entry_type_name">byte</span>
11445 <span class="entry_type_visibility"> [public]</span>
11448 <span class="entry_type_hwlevel">[legacy] </span>
11453 </td> <!-- entry_type -->
11455 <td class="entry_description">
11456 <p>Compression quality of JPEG
11457 thumbnail.<wbr/></p>
11460 <td class="entry_units">
11463 <td class="entry_range">
11464 <p>1-100; larger is higher quality</p>
11467 <td class="entry_hal_version">
11471 <td class="entry_tags">
11472 <ul class="entry_tags">
11473 <li><a href="#tag_BC">BC</a></li>
11480 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11481 <!-- end of entry -->
11484 <tr class="entry" id="controls_android.jpeg.thumbnailSize">
11485 <td class="entry_name
11487 android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size
11489 <td class="entry_type">
11490 <span class="entry_type_name">int32</span>
11491 <span class="entry_type_container">x</span>
11493 <span class="entry_type_array">
11496 <span class="entry_type_visibility"> [public as size]</span>
11499 <span class="entry_type_hwlevel">[legacy] </span>
11504 </td> <!-- entry_type -->
11506 <td class="entry_description">
11507 <p>Resolution of embedded JPEG thumbnail.<wbr/></p>
11510 <td class="entry_units">
11513 <td class="entry_range">
11514 <p><a href="#static_android.jpeg.availableThumbnailSizes">android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes</a></p>
11517 <td class="entry_hal_version">
11521 <td class="entry_tags">
11522 <ul class="entry_tags">
11523 <li><a href="#tag_BC">BC</a></li>
11528 <tr class="entries_header">
11529 <th class="th_details" colspan="6">Details</th>
11531 <tr class="entry_cont">
11532 <td class="entry_details" colspan="6">
11533 <p>When set to (0,<wbr/> 0) value,<wbr/> the JPEG EXIF will not contain thumbnail,<wbr/>
11534 but the captured JPEG will still be a valid image.<wbr/></p>
11535 <p>For best results,<wbr/> when issuing a request for a JPEG image,<wbr/> the thumbnail size selected
11536 should have the same aspect ratio as the main JPEG output.<wbr/></p>
11537 <p>If the thumbnail image aspect ratio differs from the JPEG primary image aspect
11538 ratio,<wbr/> the camera device creates the thumbnail by cropping it from the primary image.<wbr/>
11539 For example,<wbr/> if the primary image has 4:3 aspect ratio,<wbr/> the thumbnail image has
11540 16:9 aspect ratio,<wbr/> the primary image will be cropped vertically (letterbox) to
11541 generate the thumbnail image.<wbr/> The thumbnail image will always have a smaller Field
11542 Of View (FOV) than the primary image when aspect ratios differ.<wbr/></p>
11543 <p>When an <a href="#controls_android.jpeg.orientation">android.<wbr/>jpeg.<wbr/>orientation</a> of non-zero degree is requested,<wbr/>
11544 the camera device will handle thumbnail rotation in one of the following ways:</p>
11546 <li>Set the <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>
11547 and keep jpeg and thumbnail image data unrotated.<wbr/></li>
11548 <li>Rotate the jpeg and thumbnail image data and not set
11549 <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>.<wbr/> In this
11550 case,<wbr/> LIMITED or FULL hardware level devices will report rotated thumnail size in
11551 capture result,<wbr/> so the width and height will be interchanged if 90 or 270 degree
11552 orientation is requested.<wbr/> LEGACY device will always report unrotated thumbnail
11558 <tr class="entries_header">
11559 <th class="th_details" colspan="6">HAL Implementation Details</th>
11561 <tr class="entry_cont">
11562 <td class="entry_details" colspan="6">
11563 <p>The HAL must not squeeze or stretch the downscaled primary image to generate thumbnail.<wbr/>
11564 The cropping must be done on the primary jpeg image rather than the sensor active array.<wbr/>
11565 The stream cropping rule specified by "S5.<wbr/> Cropping" in camera3.<wbr/>h doesn't apply to the
11566 thumbnail image cropping.<wbr/></p>
11570 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11571 <!-- end of entry -->
11575 <!-- end of kind -->
11577 <tr><td colspan="7" class="kind">static</td></tr>
11579 <thead class="entries_header">
11581 <th class="th_name">Property Name</th>
11582 <th class="th_type">Type</th>
11583 <th class="th_description">Description</th>
11584 <th class="th_units">Units</th>
11585 <th class="th_range">Range</th>
11586 <th class="th_hal_version">Initial HIDL HAL version</th>
11587 <th class="th_tags">Tags</th>
11602 <tr class="entry" id="static_android.jpeg.availableThumbnailSizes">
11603 <td class="entry_name
11605 android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes
11607 <td class="entry_type">
11608 <span class="entry_type_name">int32</span>
11609 <span class="entry_type_container">x</span>
11611 <span class="entry_type_array">
11614 <span class="entry_type_visibility"> [public as size]</span>
11617 <span class="entry_type_hwlevel">[legacy] </span>
11622 </td> <!-- entry_type -->
11624 <td class="entry_description">
11625 <p>List of JPEG thumbnail sizes for <a href="#controls_android.jpeg.thumbnailSize">android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size</a> supported by this
11626 camera device.<wbr/></p>
11629 <td class="entry_units">
11632 <td class="entry_range">
11635 <td class="entry_hal_version">
11639 <td class="entry_tags">
11640 <ul class="entry_tags">
11641 <li><a href="#tag_BC">BC</a></li>
11646 <tr class="entries_header">
11647 <th class="th_details" colspan="6">Details</th>
11649 <tr class="entry_cont">
11650 <td class="entry_details" colspan="6">
11651 <p>This list will include at least one non-zero resolution,<wbr/> plus <code>(0,<wbr/>0)</code> for indicating no
11652 thumbnail should be generated.<wbr/></p>
11653 <p>Below condiditions will be satisfied for this size list:</p>
11655 <li>The sizes will be sorted by increasing pixel area (width x height).<wbr/>
11656 If several resolutions have the same area,<wbr/> they will be sorted by increasing width.<wbr/></li>
11657 <li>The aspect ratio of the largest thumbnail size will be same as the
11658 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/>
11659 The largest size is defined as the size that has the largest pixel area
11660 in a given size list.<wbr/></li>
11661 <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
11662 one corresponding size that has the same aspect ratio in availableThumbnailSizes,<wbr/>
11663 and vice versa.<wbr/></li>
11664 <li>All non-<code>(0,<wbr/> 0)</code> sizes will have non-zero widths and heights.<wbr/></li>
11670 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11671 <!-- end of entry -->
11674 <tr class="entry" id="static_android.jpeg.maxSize">
11675 <td class="entry_name
11677 android.<wbr/>jpeg.<wbr/>max<wbr/>Size
11679 <td class="entry_type">
11680 <span class="entry_type_name">int32</span>
11682 <span class="entry_type_visibility"> [system]</span>
11689 </td> <!-- entry_type -->
11691 <td class="entry_description">
11692 <p>Maximum size in bytes for the compressed
11696 <td class="entry_units">
11699 <td class="entry_range">
11700 <p>Must be large enough to fit any JPEG produced by
11704 <td class="entry_hal_version">
11708 <td class="entry_tags">
11712 <tr class="entries_header">
11713 <th class="th_details" colspan="6">Details</th>
11715 <tr class="entry_cont">
11716 <td class="entry_details" colspan="6">
11717 <p>This is used for sizing the gralloc buffers for
11723 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11724 <!-- end of entry -->
11728 <!-- end of kind -->
11730 <tr><td colspan="7" class="kind">dynamic</td></tr>
11732 <thead class="entries_header">
11734 <th class="th_name">Property Name</th>
11735 <th class="th_type">Type</th>
11736 <th class="th_description">Description</th>
11737 <th class="th_units">Units</th>
11738 <th class="th_range">Range</th>
11739 <th class="th_hal_version">Initial HIDL HAL version</th>
11740 <th class="th_tags">Tags</th>
11755 <tr class="entry" id="dynamic_android.jpeg.gpsLocation">
11756 <td class="entry_name
11758 android.<wbr/>jpeg.<wbr/>gps<wbr/>Location
11760 <td class="entry_type">
11761 <span class="entry_type_name">byte</span>
11763 <span class="entry_type_visibility"> [java_public as location]</span>
11765 <span class="entry_type_synthetic">[synthetic] </span>
11767 <span class="entry_type_hwlevel">[legacy] </span>
11772 </td> <!-- entry_type -->
11774 <td class="entry_description">
11775 <p>A location object to use when generating image GPS metadata.<wbr/></p>
11778 <td class="entry_units">
11781 <td class="entry_range">
11784 <td class="entry_hal_version">
11788 <td class="entry_tags">
11792 <tr class="entries_header">
11793 <th class="th_details" colspan="6">Details</th>
11795 <tr class="entry_cont">
11796 <td class="entry_details" colspan="6">
11797 <p>Setting a location object in a request will include the GPS coordinates of the location
11798 into any JPEG images captured based on the request.<wbr/> These coordinates can then be
11799 viewed by anyone who receives the JPEG image.<wbr/></p>
11804 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11805 <!-- end of entry -->
11808 <tr class="entry" id="dynamic_android.jpeg.gpsCoordinates">
11809 <td class="entry_name
11811 android.<wbr/>jpeg.<wbr/>gps<wbr/>Coordinates
11813 <td class="entry_type">
11814 <span class="entry_type_name">double</span>
11815 <span class="entry_type_container">x</span>
11817 <span class="entry_type_array">
11820 <span class="entry_type_visibility"> [ndk_public]</span>
11823 <span class="entry_type_hwlevel">[legacy] </span>
11826 <div class="entry_type_notes">latitude,<wbr/> longitude,<wbr/> altitude.<wbr/> First two in degrees,<wbr/> the third in meters</div>
11829 </td> <!-- entry_type -->
11831 <td class="entry_description">
11832 <p>GPS coordinates to include in output JPEG
11836 <td class="entry_units">
11839 <td class="entry_range">
11840 <p>(-180 - 180],<wbr/> [-90,<wbr/>90],<wbr/> [-inf,<wbr/> inf]</p>
11843 <td class="entry_hal_version">
11847 <td class="entry_tags">
11848 <ul class="entry_tags">
11849 <li><a href="#tag_BC">BC</a></li>
11856 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11857 <!-- end of entry -->
11860 <tr class="entry" id="dynamic_android.jpeg.gpsProcessingMethod">
11861 <td class="entry_name
11863 android.<wbr/>jpeg.<wbr/>gps<wbr/>Processing<wbr/>Method
11865 <td class="entry_type">
11866 <span class="entry_type_name">byte</span>
11868 <span class="entry_type_visibility"> [ndk_public as string]</span>
11871 <span class="entry_type_hwlevel">[legacy] </span>
11876 </td> <!-- entry_type -->
11878 <td class="entry_description">
11879 <p>32 characters describing GPS algorithm to
11880 include in EXIF.<wbr/></p>
11883 <td class="entry_units">
11884 UTF-8 null-terminated string
11887 <td class="entry_range">
11890 <td class="entry_hal_version">
11894 <td class="entry_tags">
11895 <ul class="entry_tags">
11896 <li><a href="#tag_BC">BC</a></li>
11903 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11904 <!-- end of entry -->
11907 <tr class="entry" id="dynamic_android.jpeg.gpsTimestamp">
11908 <td class="entry_name
11910 android.<wbr/>jpeg.<wbr/>gps<wbr/>Timestamp
11912 <td class="entry_type">
11913 <span class="entry_type_name">int64</span>
11915 <span class="entry_type_visibility"> [ndk_public]</span>
11918 <span class="entry_type_hwlevel">[legacy] </span>
11923 </td> <!-- entry_type -->
11925 <td class="entry_description">
11926 <p>Time GPS fix was made to include in
11930 <td class="entry_units">
11931 UTC in seconds since January 1,<wbr/> 1970
11934 <td class="entry_range">
11937 <td class="entry_hal_version">
11941 <td class="entry_tags">
11942 <ul class="entry_tags">
11943 <li><a href="#tag_BC">BC</a></li>
11950 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11951 <!-- end of entry -->
11954 <tr class="entry" id="dynamic_android.jpeg.orientation">
11955 <td class="entry_name
11957 android.<wbr/>jpeg.<wbr/>orientation
11959 <td class="entry_type">
11960 <span class="entry_type_name">int32</span>
11962 <span class="entry_type_visibility"> [public]</span>
11965 <span class="entry_type_hwlevel">[legacy] </span>
11970 </td> <!-- entry_type -->
11972 <td class="entry_description">
11973 <p>The orientation for a JPEG image.<wbr/></p>
11976 <td class="entry_units">
11977 Degrees in multiples of 90
11980 <td class="entry_range">
11981 <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p>
11984 <td class="entry_hal_version">
11988 <td class="entry_tags">
11989 <ul class="entry_tags">
11990 <li><a href="#tag_BC">BC</a></li>
11995 <tr class="entries_header">
11996 <th class="th_details" colspan="6">Details</th>
11998 <tr class="entry_cont">
11999 <td class="entry_details" colspan="6">
12000 <p>The clockwise rotation angle in degrees,<wbr/> relative to the orientation
12001 to the camera,<wbr/> that the JPEG picture needs to be rotated by,<wbr/> to be viewed
12003 <p>Camera devices may either encode this value into the JPEG EXIF header,<wbr/> or
12004 rotate the image data to match this orientation.<wbr/> When the image data is rotated,<wbr/>
12005 the thumbnail data will also be rotated.<wbr/></p>
12006 <p>Note that this orientation is relative to the orientation of the camera sensor,<wbr/> given
12007 by <a href="#static_android.sensor.orientation">android.<wbr/>sensor.<wbr/>orientation</a>.<wbr/></p>
12008 <p>To translate from the device orientation given by the Android sensor APIs,<wbr/> the following
12009 sample code may be used:</p>
12010 <pre><code>private int getJpegOrientation(CameraCharacteristics c,<wbr/> int deviceOrientation) {
12011 if (deviceOrientation == android.<wbr/>view.<wbr/>Orientation<wbr/>Event<wbr/>Listener.<wbr/>ORIENTATION_<wbr/>UNKNOWN) return 0;
12012 int sensorOrientation = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>SENSOR_<wbr/>ORIENTATION);
12014 //<wbr/> Round device orientation to a multiple of 90
12015 deviceOrientation = (deviceOrientation + 45) /<wbr/> 90 * 90;
12017 //<wbr/> Reverse device orientation for front-facing cameras
12018 boolean facingFront = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING) == Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING_<wbr/>FRONT;
12019 if (facingFront) deviceOrientation = -deviceOrientation;
12021 //<wbr/> Calculate desired JPEG orientation relative to camera orientation to make
12022 //<wbr/> the image upright relative to the device orientation
12023 int jpegOrientation = (sensorOrientation + deviceOrientation + 360) % 360;
12025 return jpegOrientation;
12032 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12033 <!-- end of entry -->
12036 <tr class="entry" id="dynamic_android.jpeg.quality">
12037 <td class="entry_name
12039 android.<wbr/>jpeg.<wbr/>quality
12041 <td class="entry_type">
12042 <span class="entry_type_name">byte</span>
12044 <span class="entry_type_visibility"> [public]</span>
12047 <span class="entry_type_hwlevel">[legacy] </span>
12052 </td> <!-- entry_type -->
12054 <td class="entry_description">
12055 <p>Compression quality of the final JPEG
12059 <td class="entry_units">
12062 <td class="entry_range">
12063 <p>1-100; larger is higher quality</p>
12066 <td class="entry_hal_version">
12070 <td class="entry_tags">
12071 <ul class="entry_tags">
12072 <li><a href="#tag_BC">BC</a></li>
12077 <tr class="entries_header">
12078 <th class="th_details" colspan="6">Details</th>
12080 <tr class="entry_cont">
12081 <td class="entry_details" colspan="6">
12082 <p>85-95 is typical usage range.<wbr/></p>
12087 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12088 <!-- end of entry -->
12091 <tr class="entry" id="dynamic_android.jpeg.size">
12092 <td class="entry_name
12094 android.<wbr/>jpeg.<wbr/>size
12096 <td class="entry_type">
12097 <span class="entry_type_name">int32</span>
12099 <span class="entry_type_visibility"> [system]</span>
12106 </td> <!-- entry_type -->
12108 <td class="entry_description">
12109 <p>The size of the compressed JPEG image,<wbr/> in
12113 <td class="entry_units">
12116 <td class="entry_range">
12120 <td class="entry_hal_version">
12124 <td class="entry_tags">
12125 <ul class="entry_tags">
12126 <li><a href="#tag_FUTURE">FUTURE</a></li>
12131 <tr class="entries_header">
12132 <th class="th_details" colspan="6">Details</th>
12134 <tr class="entry_cont">
12135 <td class="entry_details" colspan="6">
12136 <p>If no JPEG output is produced for the request,<wbr/>
12137 this must be 0.<wbr/></p>
12138 <p>Otherwise,<wbr/> this describes the real size of the compressed
12139 JPEG image placed in the output stream.<wbr/> More specifically,<wbr/>
12140 if <a href="#static_android.jpeg.maxSize">android.<wbr/>jpeg.<wbr/>max<wbr/>Size</a> = 1000000,<wbr/> and a specific capture
12141 has <a href="#dynamic_android.jpeg.size">android.<wbr/>jpeg.<wbr/>size</a> = 500000,<wbr/> then the output buffer from
12142 the JPEG stream will be 1000000 bytes,<wbr/> of which the first
12143 500000 make up the real data.<wbr/></p>
12148 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12149 <!-- end of entry -->
12152 <tr class="entry" id="dynamic_android.jpeg.thumbnailQuality">
12153 <td class="entry_name
12155 android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Quality
12157 <td class="entry_type">
12158 <span class="entry_type_name">byte</span>
12160 <span class="entry_type_visibility"> [public]</span>
12163 <span class="entry_type_hwlevel">[legacy] </span>
12168 </td> <!-- entry_type -->
12170 <td class="entry_description">
12171 <p>Compression quality of JPEG
12172 thumbnail.<wbr/></p>
12175 <td class="entry_units">
12178 <td class="entry_range">
12179 <p>1-100; larger is higher quality</p>
12182 <td class="entry_hal_version">
12186 <td class="entry_tags">
12187 <ul class="entry_tags">
12188 <li><a href="#tag_BC">BC</a></li>
12195 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12196 <!-- end of entry -->
12199 <tr class="entry" id="dynamic_android.jpeg.thumbnailSize">
12200 <td class="entry_name
12202 android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size
12204 <td class="entry_type">
12205 <span class="entry_type_name">int32</span>
12206 <span class="entry_type_container">x</span>
12208 <span class="entry_type_array">
12211 <span class="entry_type_visibility"> [public as size]</span>
12214 <span class="entry_type_hwlevel">[legacy] </span>
12219 </td> <!-- entry_type -->
12221 <td class="entry_description">
12222 <p>Resolution of embedded JPEG thumbnail.<wbr/></p>
12225 <td class="entry_units">
12228 <td class="entry_range">
12229 <p><a href="#static_android.jpeg.availableThumbnailSizes">android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes</a></p>
12232 <td class="entry_hal_version">
12236 <td class="entry_tags">
12237 <ul class="entry_tags">
12238 <li><a href="#tag_BC">BC</a></li>
12243 <tr class="entries_header">
12244 <th class="th_details" colspan="6">Details</th>
12246 <tr class="entry_cont">
12247 <td class="entry_details" colspan="6">
12248 <p>When set to (0,<wbr/> 0) value,<wbr/> the JPEG EXIF will not contain thumbnail,<wbr/>
12249 but the captured JPEG will still be a valid image.<wbr/></p>
12250 <p>For best results,<wbr/> when issuing a request for a JPEG image,<wbr/> the thumbnail size selected
12251 should have the same aspect ratio as the main JPEG output.<wbr/></p>
12252 <p>If the thumbnail image aspect ratio differs from the JPEG primary image aspect
12253 ratio,<wbr/> the camera device creates the thumbnail by cropping it from the primary image.<wbr/>
12254 For example,<wbr/> if the primary image has 4:3 aspect ratio,<wbr/> the thumbnail image has
12255 16:9 aspect ratio,<wbr/> the primary image will be cropped vertically (letterbox) to
12256 generate the thumbnail image.<wbr/> The thumbnail image will always have a smaller Field
12257 Of View (FOV) than the primary image when aspect ratios differ.<wbr/></p>
12258 <p>When an <a href="#controls_android.jpeg.orientation">android.<wbr/>jpeg.<wbr/>orientation</a> of non-zero degree is requested,<wbr/>
12259 the camera device will handle thumbnail rotation in one of the following ways:</p>
12261 <li>Set the <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>
12262 and keep jpeg and thumbnail image data unrotated.<wbr/></li>
12263 <li>Rotate the jpeg and thumbnail image data and not set
12264 <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>.<wbr/> In this
12265 case,<wbr/> LIMITED or FULL hardware level devices will report rotated thumnail size in
12266 capture result,<wbr/> so the width and height will be interchanged if 90 or 270 degree
12267 orientation is requested.<wbr/> LEGACY device will always report unrotated thumbnail
12273 <tr class="entries_header">
12274 <th class="th_details" colspan="6">HAL Implementation Details</th>
12276 <tr class="entry_cont">
12277 <td class="entry_details" colspan="6">
12278 <p>The HAL must not squeeze or stretch the downscaled primary image to generate thumbnail.<wbr/>
12279 The cropping must be done on the primary jpeg image rather than the sensor active array.<wbr/>
12280 The stream cropping rule specified by "S5.<wbr/> Cropping" in camera3.<wbr/>h doesn't apply to the
12281 thumbnail image cropping.<wbr/></p>
12285 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12286 <!-- end of entry -->
12290 <!-- end of kind -->
12293 <!-- end of section -->
12294 <tr><td colspan="7" id="section_lens" class="section">lens</td></tr>
12297 <tr><td colspan="7" class="kind">controls</td></tr>
12299 <thead class="entries_header">
12301 <th class="th_name">Property Name</th>
12302 <th class="th_type">Type</th>
12303 <th class="th_description">Description</th>
12304 <th class="th_units">Units</th>
12305 <th class="th_range">Range</th>
12306 <th class="th_hal_version">Initial HIDL HAL version</th>
12307 <th class="th_tags">Tags</th>
12322 <tr class="entry" id="controls_android.lens.aperture">
12323 <td class="entry_name
12325 android.<wbr/>lens.<wbr/>aperture
12327 <td class="entry_type">
12328 <span class="entry_type_name">float</span>
12330 <span class="entry_type_visibility"> [public]</span>
12333 <span class="entry_type_hwlevel">[full] </span>
12338 </td> <!-- entry_type -->
12340 <td class="entry_description">
12341 <p>The desired lens aperture size,<wbr/> as a ratio of lens focal length to the
12342 effective aperture diameter.<wbr/></p>
12345 <td class="entry_units">
12346 The f-number (f/<wbr/>N)
12349 <td class="entry_range">
12350 <p><a href="#static_android.lens.info.availableApertures">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures</a></p>
12353 <td class="entry_hal_version">
12357 <td class="entry_tags">
12358 <ul class="entry_tags">
12359 <li><a href="#tag_V1">V1</a></li>
12364 <tr class="entries_header">
12365 <th class="th_details" colspan="6">Details</th>
12367 <tr class="entry_cont">
12368 <td class="entry_details" colspan="6">
12369 <p>Setting this value is only supported on the camera devices that have a variable
12370 aperture lens.<wbr/></p>
12371 <p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/>
12372 this can be set along with <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
12373 <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>
12374 to achieve manual exposure control.<wbr/></p>
12375 <p>The requested aperture value may take several frames to reach the
12376 requested value; the camera device will report the current (intermediate)
12377 aperture size in capture result metadata while the aperture is changing.<wbr/>
12378 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>
12379 <p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is one of
12380 the ON modes,<wbr/> this will be overridden by the camera device
12381 auto-exposure algorithm,<wbr/> the overridden values are then provided
12382 back to the user in the corresponding result.<wbr/></p>
12387 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12388 <!-- end of entry -->
12391 <tr class="entry" id="controls_android.lens.filterDensity">
12392 <td class="entry_name
12394 android.<wbr/>lens.<wbr/>filter<wbr/>Density
12396 <td class="entry_type">
12397 <span class="entry_type_name">float</span>
12399 <span class="entry_type_visibility"> [public]</span>
12402 <span class="entry_type_hwlevel">[full] </span>
12407 </td> <!-- entry_type -->
12409 <td class="entry_description">
12410 <p>The desired setting for the lens neutral density filter(s).<wbr/></p>
12413 <td class="entry_units">
12414 Exposure Value (EV)
12417 <td class="entry_range">
12418 <p><a href="#static_android.lens.info.availableFilterDensities">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities</a></p>
12421 <td class="entry_hal_version">
12425 <td class="entry_tags">
12426 <ul class="entry_tags">
12427 <li><a href="#tag_V1">V1</a></li>
12432 <tr class="entries_header">
12433 <th class="th_details" colspan="6">Details</th>
12435 <tr class="entry_cont">
12436 <td class="entry_details" colspan="6">
12437 <p>This control will not be supported on most camera devices.<wbr/></p>
12438 <p>Lens filters are typically used to lower the amount of light the
12439 sensor is exposed to (measured in steps of EV).<wbr/> As used here,<wbr/> an EV
12440 step is the standard logarithmic representation,<wbr/> which are
12441 non-negative,<wbr/> and inversely proportional to the amount of light
12442 hitting the sensor.<wbr/> For example,<wbr/> setting this to 0 would result
12443 in no reduction of the incoming light,<wbr/> and setting this to 2 would
12444 mean that the filter is set to reduce incoming light by two stops
12445 (allowing 1/<wbr/>4 of the prior amount of light to the sensor).<wbr/></p>
12446 <p>It may take several frames before the lens filter density changes
12447 to the requested value.<wbr/> While the filter density is still changing,<wbr/>
12448 <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p>
12453 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12454 <!-- end of entry -->
12457 <tr class="entry" id="controls_android.lens.focalLength">
12458 <td class="entry_name
12460 android.<wbr/>lens.<wbr/>focal<wbr/>Length
12462 <td class="entry_type">
12463 <span class="entry_type_name">float</span>
12465 <span class="entry_type_visibility"> [public]</span>
12468 <span class="entry_type_hwlevel">[legacy] </span>
12473 </td> <!-- entry_type -->
12475 <td class="entry_description">
12476 <p>The desired lens focal length; used for optical zoom.<wbr/></p>
12479 <td class="entry_units">
12483 <td class="entry_range">
12484 <p><a href="#static_android.lens.info.availableFocalLengths">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths</a></p>
12487 <td class="entry_hal_version">
12491 <td class="entry_tags">
12492 <ul class="entry_tags">
12493 <li><a href="#tag_V1">V1</a></li>
12498 <tr class="entries_header">
12499 <th class="th_details" colspan="6">Details</th>
12501 <tr class="entry_cont">
12502 <td class="entry_details" colspan="6">
12503 <p>This setting controls the physical focal length of the camera
12504 device's lens.<wbr/> Changing the focal length changes the field of
12505 view of the camera device,<wbr/> and is usually used for optical zoom.<wbr/></p>
12506 <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
12507 setting won't be applied instantaneously,<wbr/> and it may take several
12508 frames before the lens can change to the requested focal length.<wbr/>
12509 While the focal length is still changing,<wbr/> <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will
12510 be set to MOVING.<wbr/></p>
12511 <p>Optical zoom will not be supported on most devices.<wbr/></p>
12516 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12517 <!-- end of entry -->
12520 <tr class="entry" id="controls_android.lens.focusDistance">
12521 <td class="entry_name
12523 android.<wbr/>lens.<wbr/>focus<wbr/>Distance
12525 <td class="entry_type">
12526 <span class="entry_type_name">float</span>
12528 <span class="entry_type_visibility"> [public]</span>
12531 <span class="entry_type_hwlevel">[full] </span>
12536 </td> <!-- entry_type -->
12538 <td class="entry_description">
12539 <p>Desired distance to plane of sharpest focus,<wbr/>
12540 measured from frontmost surface of the lens.<wbr/></p>
12543 <td class="entry_units">
12544 See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
12547 <td class="entry_range">
12551 <td class="entry_hal_version">
12555 <td class="entry_tags">
12556 <ul class="entry_tags">
12557 <li><a href="#tag_BC">BC</a></li>
12558 <li><a href="#tag_V1">V1</a></li>
12563 <tr class="entries_header">
12564 <th class="th_details" colspan="6">Details</th>
12566 <tr class="entry_cont">
12567 <td class="entry_details" colspan="6">
12568 <p>This control can be used for setting manual focus,<wbr/> on devices that support
12569 the MANUAL_<wbr/>SENSOR capability and have a variable-focus lens (see
12570 <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a>).<wbr/></p>
12571 <p>A value of <code>0.<wbr/>0f</code> means infinity focus.<wbr/> The value set will be clamped to
12572 <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>
12573 <p>Like <a href="#controls_android.lens.focalLength">android.<wbr/>lens.<wbr/>focal<wbr/>Length</a>,<wbr/> this setting won't be applied
12574 instantaneously,<wbr/> and it may take several frames before the lens
12575 can move to the requested focus distance.<wbr/> While the lens is still moving,<wbr/>
12576 <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p>
12577 <p>LEGACY devices support at most setting this to <code>0.<wbr/>0f</code>
12578 for infinity focus.<wbr/></p>
12583 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12584 <!-- end of entry -->
12587 <tr class="entry" id="controls_android.lens.opticalStabilizationMode">
12588 <td class="entry_name
12590 android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode
12592 <td class="entry_type">
12593 <span class="entry_type_name entry_type_name_enum">byte</span>
12595 <span class="entry_type_visibility"> [public]</span>
12598 <span class="entry_type_hwlevel">[limited] </span>
12602 <ul class="entry_type_enum">
12604 <span class="entry_type_enum_name">OFF</span>
12605 <span class="entry_type_enum_notes"><p>Optical stabilization is unavailable.<wbr/></p></span>
12608 <span class="entry_type_enum_name">ON</span>
12609 <span class="entry_type_enum_optional">[optional]</span>
12610 <span class="entry_type_enum_notes"><p>Optical stabilization is enabled.<wbr/></p></span>
12614 </td> <!-- entry_type -->
12616 <td class="entry_description">
12617 <p>Sets whether the camera device uses optical image stabilization (OIS)
12618 when capturing images.<wbr/></p>
12621 <td class="entry_units">
12624 <td class="entry_range">
12625 <p><a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a></p>
12628 <td class="entry_hal_version">
12632 <td class="entry_tags">
12633 <ul class="entry_tags">
12634 <li><a href="#tag_V1">V1</a></li>
12639 <tr class="entries_header">
12640 <th class="th_details" colspan="6">Details</th>
12642 <tr class="entry_cont">
12643 <td class="entry_details" colspan="6">
12644 <p>OIS is used to compensate for motion blur due to small
12645 movements of the camera during capture.<wbr/> Unlike digital image
12646 stabilization (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> OIS
12647 makes use of mechanical elements to stabilize the camera
12648 sensor,<wbr/> and thus allows for longer exposure times before
12649 camera shake becomes apparent.<wbr/></p>
12650 <p>Switching between different optical stabilization modes may take several
12651 frames to initialize,<wbr/> the camera device will report the current mode in
12652 capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/> the
12653 optical stabilization modes in the first several capture results may still
12654 be "OFF",<wbr/> and it will become "ON" when the initialization is done.<wbr/></p>
12655 <p>If a camera device supports both OIS and digital image stabilization
12656 (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may produce undesirable
12657 interaction,<wbr/> so it is recommended not to enable both at the same time.<wbr/></p>
12658 <p>Not all devices will support OIS; see
12659 <a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a> for
12660 available controls.<wbr/></p>
12665 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12666 <!-- end of entry -->
12670 <!-- end of kind -->
12672 <tr><td colspan="7" class="kind">static</td></tr>
12674 <thead class="entries_header">
12676 <th class="th_name">Property Name</th>
12677 <th class="th_type">Type</th>
12678 <th class="th_description">Description</th>
12679 <th class="th_units">Units</th>
12680 <th class="th_range">Range</th>
12681 <th class="th_hal_version">Initial HIDL HAL version</th>
12682 <th class="th_tags">Tags</th>
12699 <tr class="entry" id="static_android.lens.info.availableApertures">
12700 <td class="entry_name
12702 android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures
12704 <td class="entry_type">
12705 <span class="entry_type_name">float</span>
12706 <span class="entry_type_container">x</span>
12708 <span class="entry_type_array">
12711 <span class="entry_type_visibility"> [public]</span>
12714 <span class="entry_type_hwlevel">[full] </span>
12719 </td> <!-- entry_type -->
12721 <td class="entry_description">
12722 <p>List of aperture size values for <a href="#controls_android.lens.aperture">android.<wbr/>lens.<wbr/>aperture</a> that are
12723 supported by this camera device.<wbr/></p>
12726 <td class="entry_units">
12727 The aperture f-number
12730 <td class="entry_range">
12733 <td class="entry_hal_version">
12737 <td class="entry_tags">
12738 <ul class="entry_tags">
12739 <li><a href="#tag_V1">V1</a></li>
12744 <tr class="entries_header">
12745 <th class="th_details" colspan="6">Details</th>
12747 <tr class="entry_cont">
12748 <td class="entry_details" colspan="6">
12749 <p>If the camera device doesn't support a variable lens aperture,<wbr/>
12750 this list will contain only one value,<wbr/> which is the fixed aperture size.<wbr/></p>
12751 <p>If the camera device supports a variable aperture,<wbr/> the aperture values
12752 in this list will be sorted in ascending order.<wbr/></p>
12757 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12758 <!-- end of entry -->
12761 <tr class="entry" id="static_android.lens.info.availableFilterDensities">
12762 <td class="entry_name
12764 android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities
12766 <td class="entry_type">
12767 <span class="entry_type_name">float</span>
12768 <span class="entry_type_container">x</span>
12770 <span class="entry_type_array">
12773 <span class="entry_type_visibility"> [public]</span>
12776 <span class="entry_type_hwlevel">[full] </span>
12781 </td> <!-- entry_type -->
12783 <td class="entry_description">
12784 <p>List of neutral density filter values for
12785 <a href="#controls_android.lens.filterDensity">android.<wbr/>lens.<wbr/>filter<wbr/>Density</a> that are supported by this camera device.<wbr/></p>
12788 <td class="entry_units">
12789 Exposure value (EV)
12792 <td class="entry_range">
12793 <p>Values are >= 0</p>
12796 <td class="entry_hal_version">
12800 <td class="entry_tags">
12801 <ul class="entry_tags">
12802 <li><a href="#tag_V1">V1</a></li>
12807 <tr class="entries_header">
12808 <th class="th_details" colspan="6">Details</th>
12810 <tr class="entry_cont">
12811 <td class="entry_details" colspan="6">
12812 <p>If a neutral density filter is not supported by this camera device,<wbr/>
12813 this list will contain only 0.<wbr/> Otherwise,<wbr/> this list will include every
12814 filter density supported by the camera device,<wbr/> in ascending order.<wbr/></p>
12819 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12820 <!-- end of entry -->
12823 <tr class="entry" id="static_android.lens.info.availableFocalLengths">
12824 <td class="entry_name
12826 android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths
12828 <td class="entry_type">
12829 <span class="entry_type_name">float</span>
12830 <span class="entry_type_container">x</span>
12832 <span class="entry_type_array">
12835 <span class="entry_type_visibility"> [public]</span>
12838 <span class="entry_type_hwlevel">[legacy] </span>
12841 <div class="entry_type_notes">The list of available focal lengths</div>
12844 </td> <!-- entry_type -->
12846 <td class="entry_description">
12847 <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
12851 <td class="entry_units">
12855 <td class="entry_range">
12856 <p>Values are > 0</p>
12859 <td class="entry_hal_version">
12863 <td class="entry_tags">
12864 <ul class="entry_tags">
12865 <li><a href="#tag_BC">BC</a></li>
12866 <li><a href="#tag_V1">V1</a></li>
12871 <tr class="entries_header">
12872 <th class="th_details" colspan="6">Details</th>
12874 <tr class="entry_cont">
12875 <td class="entry_details" colspan="6">
12876 <p>If optical zoom is not supported,<wbr/> this list will only contain
12877 a single value corresponding to the fixed focal length of the
12878 device.<wbr/> Otherwise,<wbr/> this list will include every focal length supported
12879 by the camera device,<wbr/> in ascending order.<wbr/></p>
12884 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12885 <!-- end of entry -->
12888 <tr class="entry" id="static_android.lens.info.availableOpticalStabilization">
12889 <td class="entry_name
12891 android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization
12893 <td class="entry_type">
12894 <span class="entry_type_name">byte</span>
12895 <span class="entry_type_container">x</span>
12897 <span class="entry_type_array">
12900 <span class="entry_type_visibility"> [public as enumList]</span>
12903 <span class="entry_type_hwlevel">[limited] </span>
12906 <div class="entry_type_notes">list of enums</div>
12909 </td> <!-- entry_type -->
12911 <td class="entry_description">
12912 <p>List of optical image stabilization (OIS) modes for
12913 <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>
12916 <td class="entry_units">
12919 <td class="entry_range">
12920 <p>Any value listed in <a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a></p>
12923 <td class="entry_hal_version">
12927 <td class="entry_tags">
12928 <ul class="entry_tags">
12929 <li><a href="#tag_V1">V1</a></li>
12934 <tr class="entries_header">
12935 <th class="th_details" colspan="6">Details</th>
12937 <tr class="entry_cont">
12938 <td class="entry_details" colspan="6">
12939 <p>If OIS is not supported by a given camera device,<wbr/> this list will
12940 contain only OFF.<wbr/></p>
12945 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12946 <!-- end of entry -->
12949 <tr class="entry" id="static_android.lens.info.hyperfocalDistance">
12950 <td class="entry_name
12952 android.<wbr/>lens.<wbr/>info.<wbr/>hyperfocal<wbr/>Distance
12954 <td class="entry_type">
12955 <span class="entry_type_name">float</span>
12957 <span class="entry_type_visibility"> [public]</span>
12960 <span class="entry_type_hwlevel">[limited] </span>
12965 </td> <!-- entry_type -->
12967 <td class="entry_description">
12968 <p>Hyperfocal distance for this lens.<wbr/></p>
12971 <td class="entry_units">
12972 See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
12975 <td class="entry_range">
12976 <p>If lens is fixed focus,<wbr/> >= 0.<wbr/> If lens has focuser unit,<wbr/> the value is
12977 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>
12980 <td class="entry_hal_version">
12984 <td class="entry_tags">
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 the lens is not fixed focus,<wbr/> the camera device will report this
12994 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>
12999 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13000 <!-- end of entry -->
13003 <tr class="entry" id="static_android.lens.info.minimumFocusDistance">
13004 <td class="entry_name
13006 android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance
13008 <td class="entry_type">
13009 <span class="entry_type_name">float</span>
13011 <span class="entry_type_visibility"> [public]</span>
13014 <span class="entry_type_hwlevel">[limited] </span>
13019 </td> <!-- entry_type -->
13021 <td class="entry_description">
13022 <p>Shortest distance from frontmost surface
13023 of the lens that can be brought into sharp focus.<wbr/></p>
13026 <td class="entry_units">
13027 See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
13030 <td class="entry_range">
13034 <td class="entry_hal_version">
13038 <td class="entry_tags">
13039 <ul class="entry_tags">
13040 <li><a href="#tag_V1">V1</a></li>
13045 <tr class="entries_header">
13046 <th class="th_details" colspan="6">Details</th>
13048 <tr class="entry_cont">
13049 <td class="entry_details" colspan="6">
13050 <p>If the lens is fixed-focus,<wbr/> this will be
13055 <tr class="entries_header">
13056 <th class="th_details" colspan="6">HAL Implementation Details</th>
13058 <tr class="entry_cont">
13059 <td class="entry_details" colspan="6">
13060 <p>Mandatory for FULL devices; LIMITED devices
13061 must always set this value to 0 for fixed-focus; and may omit
13062 the minimum focus distance otherwise.<wbr/></p>
13063 <p>This field is also mandatory for all devices advertising
13064 the MANUAL_<wbr/>SENSOR capability.<wbr/></p>
13068 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13069 <!-- end of entry -->
13072 <tr class="entry" id="static_android.lens.info.shadingMapSize">
13073 <td class="entry_name
13075 android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size
13077 <td class="entry_type">
13078 <span class="entry_type_name">int32</span>
13079 <span class="entry_type_container">x</span>
13081 <span class="entry_type_array">
13084 <span class="entry_type_visibility"> [ndk_public as size]</span>
13087 <span class="entry_type_hwlevel">[full] </span>
13090 <div class="entry_type_notes">width and height (N,<wbr/> M) of lens shading map provided by the camera device.<wbr/></div>
13093 </td> <!-- entry_type -->
13095 <td class="entry_description">
13096 <p>Dimensions of lens shading map.<wbr/></p>
13099 <td class="entry_units">
13102 <td class="entry_range">
13103 <p>Both values >= 1</p>
13106 <td class="entry_hal_version">
13110 <td class="entry_tags">
13111 <ul class="entry_tags">
13112 <li><a href="#tag_V1">V1</a></li>
13117 <tr class="entries_header">
13118 <th class="th_details" colspan="6">Details</th>
13120 <tr class="entry_cont">
13121 <td class="entry_details" colspan="6">
13122 <p>The map should be on the order of 30-40 rows and columns,<wbr/> and
13123 must be smaller than 64x64.<wbr/></p>
13128 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13129 <!-- end of entry -->
13132 <tr class="entry" id="static_android.lens.info.focusDistanceCalibration">
13133 <td class="entry_name
13135 android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration
13137 <td class="entry_type">
13138 <span class="entry_type_name entry_type_name_enum">byte</span>
13140 <span class="entry_type_visibility"> [public]</span>
13143 <span class="entry_type_hwlevel">[limited] </span>
13147 <ul class="entry_type_enum">
13149 <span class="entry_type_enum_name">UNCALIBRATED</span>
13150 <span class="entry_type_enum_notes"><p>The lens focus distance is not accurate,<wbr/> and the units used for
13151 <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> do not correspond to any physical units.<wbr/></p>
13152 <p>Setting the lens to the same focus distance on separate occasions may
13153 result in a different real focus distance,<wbr/> depending on factors such
13154 as the orientation of the device,<wbr/> the age of the focusing mechanism,<wbr/>
13155 and the device temperature.<wbr/> The focus distance value will still be
13156 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
13157 represents the farthest focus.<wbr/></p></span>
13160 <span class="entry_type_enum_name">APPROXIMATE</span>
13161 <span class="entry_type_enum_notes"><p>The lens focus distance is measured in diopters.<wbr/></p>
13162 <p>However,<wbr/> setting the lens to the same focus distance
13163 on separate occasions may result in a different real
13164 focus distance,<wbr/> depending on factors such as the
13165 orientation of the device,<wbr/> the age of the focusing
13166 mechanism,<wbr/> and the device temperature.<wbr/></p></span>
13169 <span class="entry_type_enum_name">CALIBRATED</span>
13170 <span class="entry_type_enum_notes"><p>The lens focus distance is measured in diopters,<wbr/> and
13171 is calibrated.<wbr/></p>
13172 <p>The lens mechanism is calibrated so that setting the
13173 same focus distance is repeatable on multiple
13174 occasions with good accuracy,<wbr/> and the focus distance
13175 corresponds to the real physical distance to the plane
13176 of best focus.<wbr/></p></span>
13180 </td> <!-- entry_type -->
13182 <td class="entry_description">
13183 <p>The lens focus distance calibration quality.<wbr/></p>
13186 <td class="entry_units">
13189 <td class="entry_range">
13192 <td class="entry_hal_version">
13196 <td class="entry_tags">
13197 <ul class="entry_tags">
13198 <li><a href="#tag_V1">V1</a></li>
13203 <tr class="entries_header">
13204 <th class="th_details" colspan="6">Details</th>
13206 <tr class="entry_cont">
13207 <td class="entry_details" colspan="6">
13208 <p>The lens focus distance calibration quality determines the reliability of
13209 focus related metadata entries,<wbr/> i.<wbr/>e.<wbr/> <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a>,<wbr/>
13210 <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
13211 <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a>.<wbr/></p>
13212 <p>APPROXIMATE and CALIBRATED devices report the focus metadata in
13213 units of diopters (1/<wbr/>meter),<wbr/> so <code>0.<wbr/>0f</code> represents focusing at infinity,<wbr/>
13214 and increasing positive numbers represent focusing closer and closer
13215 to the camera device.<wbr/> The focus distance control also uses diopters
13216 on these devices.<wbr/></p>
13217 <p>UNCALIBRATED devices do not use units that are directly comparable
13218 to any real physical measurement,<wbr/> but <code>0.<wbr/>0f</code> still represents farthest
13219 focus,<wbr/> and <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a> represents the
13220 nearest focus the device can achieve.<wbr/></p>
13224 <tr class="entries_header">
13225 <th class="th_details" colspan="6">HAL Implementation Details</th>
13227 <tr class="entry_cont">
13228 <td class="entry_details" colspan="6">
13229 <p>For devices advertise APPROXIMATE quality or higher,<wbr/> diopters 0 (infinity
13230 focus) must work.<wbr/> When autofocus is disabled (<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> == OFF)
13231 and the lens focus distance is set to 0 diopters
13232 (<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> == 0),<wbr/> the lens will move to focus at infinity
13233 and is stably focused at infinity even if the device tilts.<wbr/> It may take the
13234 lens some time to move; during the move the lens state should be MOVING and
13235 the output diopter value should be changing toward 0.<wbr/></p>
13239 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13240 <!-- end of entry -->
13246 <tr class="entry" id="static_android.lens.facing">
13247 <td class="entry_name
13249 android.<wbr/>lens.<wbr/>facing
13251 <td class="entry_type">
13252 <span class="entry_type_name entry_type_name_enum">byte</span>
13254 <span class="entry_type_visibility"> [public]</span>
13257 <span class="entry_type_hwlevel">[legacy] </span>
13261 <ul class="entry_type_enum">
13263 <span class="entry_type_enum_name">FRONT</span>
13264 <span class="entry_type_enum_notes"><p>The camera device faces the same direction as the device's screen.<wbr/></p></span>
13267 <span class="entry_type_enum_name">BACK</span>
13268 <span class="entry_type_enum_notes"><p>The camera device faces the opposite direction as the device's screen.<wbr/></p></span>
13271 <span class="entry_type_enum_name">EXTERNAL</span>
13272 <span class="entry_type_enum_notes"><p>The camera device is an external camera,<wbr/> and has no fixed facing relative to the
13273 device's screen.<wbr/></p></span>
13277 </td> <!-- entry_type -->
13279 <td class="entry_description">
13280 <p>Direction the camera faces relative to
13281 device screen.<wbr/></p>
13284 <td class="entry_units">
13287 <td class="entry_range">
13290 <td class="entry_hal_version">
13294 <td class="entry_tags">
13300 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13301 <!-- end of entry -->
13304 <tr class="entry" id="static_android.lens.poseRotation">
13305 <td class="entry_name
13307 android.<wbr/>lens.<wbr/>pose<wbr/>Rotation
13309 <td class="entry_type">
13310 <span class="entry_type_name">float</span>
13311 <span class="entry_type_container">x</span>
13313 <span class="entry_type_array">
13316 <span class="entry_type_visibility"> [public]</span>
13323 </td> <!-- entry_type -->
13325 <td class="entry_description">
13326 <p>The orientation of the camera relative to the sensor
13327 coordinate system.<wbr/></p>
13330 <td class="entry_units">
13332 Quaternion coefficients
13336 <td class="entry_range">
13339 <td class="entry_hal_version">
13343 <td class="entry_tags">
13344 <ul class="entry_tags">
13345 <li><a href="#tag_DEPTH">DEPTH</a></li>
13350 <tr class="entries_header">
13351 <th class="th_details" colspan="6">Details</th>
13353 <tr class="entry_cont">
13354 <td class="entry_details" colspan="6">
13355 <p>The four coefficients that describe the quaternion
13356 rotation from the Android sensor coordinate system to a
13357 camera-aligned coordinate system where the X-axis is
13358 aligned with the long side of the image sensor,<wbr/> the Y-axis
13359 is aligned with the short side of the image sensor,<wbr/> and
13360 the Z-axis is aligned with the optical axis of the sensor.<wbr/></p>
13361 <p>To convert from the quaternion coefficients <code>(x,<wbr/>y,<wbr/>z,<wbr/>w)</code>
13362 to the axis of rotation <code>(a_<wbr/>x,<wbr/> a_<wbr/>y,<wbr/> a_<wbr/>z)</code> and rotation
13363 amount <code>theta</code>,<wbr/> the following formulas can be used:</p>
13364 <pre><code> theta = 2 * acos(w)
13365 a_<wbr/>x = x /<wbr/> sin(theta/<wbr/>2)
13366 a_<wbr/>y = y /<wbr/> sin(theta/<wbr/>2)
13367 a_<wbr/>z = z /<wbr/> sin(theta/<wbr/>2)
13369 <p>To create a 3x3 rotation matrix that applies the rotation
13370 defined by this quaternion,<wbr/> the following matrix can be
13372 <pre><code>R = [ 1 - 2y^2 - 2z^2,<wbr/> 2xy - 2zw,<wbr/> 2xz + 2yw,<wbr/>
13373 2xy + 2zw,<wbr/> 1 - 2x^2 - 2z^2,<wbr/> 2yz - 2xw,<wbr/>
13374 2xz - 2yw,<wbr/> 2yz + 2xw,<wbr/> 1 - 2x^2 - 2y^2 ]
13376 <p>This matrix can then be used to apply the rotation to a
13377 column vector point with</p>
13378 <p><code>p' = Rp</code></p>
13379 <p>where <code>p</code> is in the device sensor coordinate system,<wbr/> and
13380 <code>p'</code> is in the camera-oriented coordinate system.<wbr/></p>
13385 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13386 <!-- end of entry -->
13389 <tr class="entry" id="static_android.lens.poseTranslation">
13390 <td class="entry_name
13392 android.<wbr/>lens.<wbr/>pose<wbr/>Translation
13394 <td class="entry_type">
13395 <span class="entry_type_name">float</span>
13396 <span class="entry_type_container">x</span>
13398 <span class="entry_type_array">
13401 <span class="entry_type_visibility"> [public]</span>
13408 </td> <!-- entry_type -->
13410 <td class="entry_description">
13411 <p>Position of the camera optical center.<wbr/></p>
13414 <td class="entry_units">
13418 <td class="entry_range">
13421 <td class="entry_hal_version">
13425 <td class="entry_tags">
13426 <ul class="entry_tags">
13427 <li><a href="#tag_DEPTH">DEPTH</a></li>
13432 <tr class="entries_header">
13433 <th class="th_details" colspan="6">Details</th>
13435 <tr class="entry_cont">
13436 <td class="entry_details" colspan="6">
13437 <p>The position of the camera device's lens optical center,<wbr/>
13438 as a three-dimensional vector <code>(x,<wbr/>y,<wbr/>z)</code>,<wbr/> relative to the
13439 optical center of the largest camera device facing in the
13440 same direction as this camera,<wbr/> in the <a href="https://developer.android.com/reference/android/hardware/SensorEvent.html">Android sensor coordinate
13441 axes</a>.<wbr/> Note that only the axis definitions are shared with
13442 the sensor coordinate system,<wbr/> but not the origin.<wbr/></p>
13443 <p>If this device is the largest or only camera device with a
13444 given facing,<wbr/> then this position will be <code>(0,<wbr/> 0,<wbr/> 0)</code>; a
13445 camera device with a lens optical center located 3 cm from
13446 the main sensor along the +X axis (to the right from the
13447 user's perspective) will report <code>(0.<wbr/>03,<wbr/> 0,<wbr/> 0)</code>.<wbr/></p>
13448 <p>To transform a pixel coordinates between two cameras
13449 facing the same direction,<wbr/> first the source camera
13450 <a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a> must be corrected for.<wbr/> Then
13451 the source camera <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> needs
13452 to be applied,<wbr/> followed by the <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a>
13453 of the source camera,<wbr/> the translation of the source camera
13454 relative to the destination camera,<wbr/> the
13455 <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> of the destination camera,<wbr/> and
13456 finally the inverse of <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a>
13457 of the destination camera.<wbr/> This obtains a
13458 radial-distortion-free coordinate in the destination
13459 camera pixel coordinates.<wbr/></p>
13460 <p>To compare this against a real image from the destination
13461 camera,<wbr/> the destination camera image then needs to be
13462 corrected for radial distortion before comparison or
13463 sampling.<wbr/></p>
13468 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13469 <!-- end of entry -->
13472 <tr class="entry" id="static_android.lens.intrinsicCalibration">
13473 <td class="entry_name
13475 android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration
13477 <td class="entry_type">
13478 <span class="entry_type_name">float</span>
13479 <span class="entry_type_container">x</span>
13481 <span class="entry_type_array">
13484 <span class="entry_type_visibility"> [public]</span>
13491 </td> <!-- entry_type -->
13493 <td class="entry_description">
13494 <p>The parameters for this camera device's intrinsic
13495 calibration.<wbr/></p>
13498 <td class="entry_units">
13501 android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size
13502 coordinate system.<wbr/>
13506 <td class="entry_range">
13509 <td class="entry_hal_version">
13513 <td class="entry_tags">
13514 <ul class="entry_tags">
13515 <li><a href="#tag_DEPTH">DEPTH</a></li>
13520 <tr class="entries_header">
13521 <th class="th_details" colspan="6">Details</th>
13523 <tr class="entry_cont">
13524 <td class="entry_details" colspan="6">
13525 <p>The five calibration parameters that describe the
13526 transform from camera-centric 3D coordinates to sensor
13527 pixel coordinates:</p>
13528 <pre><code>[f_<wbr/>x,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>x,<wbr/> c_<wbr/>y,<wbr/> s]
13530 <p>Where <code>f_<wbr/>x</code> and <code>f_<wbr/>y</code> are the horizontal and vertical
13531 focal lengths,<wbr/> <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code> is the position of the optical
13532 axis,<wbr/> and <code>s</code> is a skew parameter for the sensor plane not
13533 being aligned with the lens plane.<wbr/></p>
13534 <p>These are typically used within a transformation matrix K:</p>
13535 <pre><code>K = [ f_<wbr/>x,<wbr/> s,<wbr/> c_<wbr/>x,<wbr/>
13536 0,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>y,<wbr/>
13539 <p>which can then be combined with the camera pose rotation
13540 <code>R</code> and translation <code>t</code> (<a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> and
13541 <a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a>,<wbr/> respective) to calculate the
13542 complete transform from world coordinates to pixel
13544 <pre><code>P = [ K 0 * [ R t
13547 <p>and with <code>p_<wbr/>w</code> being a point in the world coordinate system
13548 and <code>p_<wbr/>s</code> being a point in the camera active pixel array
13549 coordinate system,<wbr/> and with the mapping including the
13550 homogeneous division by z:</p>
13551 <pre><code> p_<wbr/>h = (x_<wbr/>h,<wbr/> y_<wbr/>h,<wbr/> z_<wbr/>h) = P p_<wbr/>w
13552 p_<wbr/>s = p_<wbr/>h /<wbr/> z_<wbr/>h
13554 <p>so <code>[x_<wbr/>s,<wbr/> y_<wbr/>s]</code> is the pixel coordinates of the world
13555 point,<wbr/> <code>z_<wbr/>s = 1</code>,<wbr/> and <code>w_<wbr/>s</code> is a measurement of disparity
13556 (depth) in pixel coordinates.<wbr/></p>
13557 <p>Note that the coordinate system for this transform is the
13558 <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/>
13559 where <code>(0,<wbr/>0)</code> is the top-left of the
13560 preCorrectionActiveArraySize rectangle.<wbr/> Once the pose and
13561 intrinsic calibration transforms have been applied to a
13562 world point,<wbr/> then the <a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a>
13563 transform needs to be applied,<wbr/> and the result adjusted to
13564 be in the <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> coordinate
13565 system (where <code>(0,<wbr/> 0)</code> is the top-left of the
13566 activeArraySize rectangle),<wbr/> to determine the final pixel
13567 coordinate of the world point for processed (non-RAW)
13568 output buffers.<wbr/></p>
13573 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13574 <!-- end of entry -->
13577 <tr class="entry" id="static_android.lens.radialDistortion">
13578 <td class="entry_name
13580 android.<wbr/>lens.<wbr/>radial<wbr/>Distortion
13582 <td class="entry_type">
13583 <span class="entry_type_name">float</span>
13584 <span class="entry_type_container">x</span>
13586 <span class="entry_type_array">
13589 <span class="entry_type_visibility"> [public]</span>
13596 </td> <!-- entry_type -->
13598 <td class="entry_description">
13599 <p>The correction coefficients to correct for this camera device's
13600 radial and tangential lens distortion.<wbr/></p>
13603 <td class="entry_units">
13605 Unitless coefficients.<wbr/>
13609 <td class="entry_range">
13612 <td class="entry_hal_version">
13616 <td class="entry_tags">
13617 <ul class="entry_tags">
13618 <li><a href="#tag_DEPTH">DEPTH</a></li>
13623 <tr class="entries_header">
13624 <th class="th_details" colspan="6">Details</th>
13626 <tr class="entry_cont">
13627 <td class="entry_details" colspan="6">
13628 <p>Four radial distortion coefficients <code>[kappa_<wbr/>0,<wbr/> kappa_<wbr/>1,<wbr/> kappa_<wbr/>2,<wbr/>
13629 kappa_<wbr/>3]</code> and two tangential distortion coefficients
13630 <code>[kappa_<wbr/>4,<wbr/> kappa_<wbr/>5]</code> that can be used to correct the
13631 lens's geometric distortion with the mapping equations:</p>
13632 <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 ) +
13633 kappa_<wbr/>4 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>5 * ( r^2 + 2 * x_<wbr/>i^2 )
13634 y_<wbr/>c = y_<wbr/>i * ( kappa_<wbr/>0 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) +
13635 kappa_<wbr/>5 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>4 * ( r^2 + 2 * y_<wbr/>i^2 )
13637 <p>Here,<wbr/> <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> are the coordinates to sample in the
13638 input image that correspond to the pixel values in the
13639 corrected image at the coordinate <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code>:</p>
13640 <pre><code> correctedImage(x_<wbr/>i,<wbr/> y_<wbr/>i) = sample_<wbr/>at(x_<wbr/>c,<wbr/> y_<wbr/>c,<wbr/> inputImage)
13642 <p>The pixel coordinates are defined in a normalized
13643 coordinate system related to the
13644 <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> calibration fields.<wbr/>
13645 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
13646 lens optical center <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code>.<wbr/> The maximum magnitudes
13647 of both x and y coordinates are normalized to be 1 at the
13648 edge further from the optical center,<wbr/> so the range
13649 for both dimensions is <code>-1 <= x <= 1</code>.<wbr/></p>
13650 <p>Finally,<wbr/> <code>r</code> represents the radial distance from the
13651 optical center,<wbr/> <code>r^2 = x_<wbr/>i^2 + y_<wbr/>i^2</code>,<wbr/> and its magnitude
13652 is therefore no larger than <code>|<wbr/>r|<wbr/> <= sqrt(2)</code>.<wbr/></p>
13653 <p>The distortion model used is the Brown-Conrady model.<wbr/></p>
13658 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13659 <!-- end of entry -->
13663 <!-- end of kind -->
13665 <tr><td colspan="7" class="kind">dynamic</td></tr>
13667 <thead class="entries_header">
13669 <th class="th_name">Property Name</th>
13670 <th class="th_type">Type</th>
13671 <th class="th_description">Description</th>
13672 <th class="th_units">Units</th>
13673 <th class="th_range">Range</th>
13674 <th class="th_hal_version">Initial HIDL HAL version</th>
13675 <th class="th_tags">Tags</th>
13690 <tr class="entry" id="dynamic_android.lens.aperture">
13691 <td class="entry_name
13693 android.<wbr/>lens.<wbr/>aperture
13695 <td class="entry_type">
13696 <span class="entry_type_name">float</span>
13698 <span class="entry_type_visibility"> [public]</span>
13701 <span class="entry_type_hwlevel">[full] </span>
13706 </td> <!-- entry_type -->
13708 <td class="entry_description">
13709 <p>The desired lens aperture size,<wbr/> as a ratio of lens focal length to the
13710 effective aperture diameter.<wbr/></p>
13713 <td class="entry_units">
13714 The f-number (f/<wbr/>N)
13717 <td class="entry_range">
13718 <p><a href="#static_android.lens.info.availableApertures">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures</a></p>
13721 <td class="entry_hal_version">
13725 <td class="entry_tags">
13726 <ul class="entry_tags">
13727 <li><a href="#tag_V1">V1</a></li>
13732 <tr class="entries_header">
13733 <th class="th_details" colspan="6">Details</th>
13735 <tr class="entry_cont">
13736 <td class="entry_details" colspan="6">
13737 <p>Setting this value is only supported on the camera devices that have a variable
13738 aperture lens.<wbr/></p>
13739 <p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/>
13740 this can be set along with <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
13741 <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>
13742 to achieve manual exposure control.<wbr/></p>
13743 <p>The requested aperture value may take several frames to reach the
13744 requested value; the camera device will report the current (intermediate)
13745 aperture size in capture result metadata while the aperture is changing.<wbr/>
13746 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>
13747 <p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is one of
13748 the ON modes,<wbr/> this will be overridden by the camera device
13749 auto-exposure algorithm,<wbr/> the overridden values are then provided
13750 back to the user in the corresponding result.<wbr/></p>
13755 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13756 <!-- end of entry -->
13759 <tr class="entry" id="dynamic_android.lens.filterDensity">
13760 <td class="entry_name
13762 android.<wbr/>lens.<wbr/>filter<wbr/>Density
13764 <td class="entry_type">
13765 <span class="entry_type_name">float</span>
13767 <span class="entry_type_visibility"> [public]</span>
13770 <span class="entry_type_hwlevel">[full] </span>
13775 </td> <!-- entry_type -->
13777 <td class="entry_description">
13778 <p>The desired setting for the lens neutral density filter(s).<wbr/></p>
13781 <td class="entry_units">
13782 Exposure Value (EV)
13785 <td class="entry_range">
13786 <p><a href="#static_android.lens.info.availableFilterDensities">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities</a></p>
13789 <td class="entry_hal_version">
13793 <td class="entry_tags">
13794 <ul class="entry_tags">
13795 <li><a href="#tag_V1">V1</a></li>
13800 <tr class="entries_header">
13801 <th class="th_details" colspan="6">Details</th>
13803 <tr class="entry_cont">
13804 <td class="entry_details" colspan="6">
13805 <p>This control will not be supported on most camera devices.<wbr/></p>
13806 <p>Lens filters are typically used to lower the amount of light the
13807 sensor is exposed to (measured in steps of EV).<wbr/> As used here,<wbr/> an EV
13808 step is the standard logarithmic representation,<wbr/> which are
13809 non-negative,<wbr/> and inversely proportional to the amount of light
13810 hitting the sensor.<wbr/> For example,<wbr/> setting this to 0 would result
13811 in no reduction of the incoming light,<wbr/> and setting this to 2 would
13812 mean that the filter is set to reduce incoming light by two stops
13813 (allowing 1/<wbr/>4 of the prior amount of light to the sensor).<wbr/></p>
13814 <p>It may take several frames before the lens filter density changes
13815 to the requested value.<wbr/> While the filter density is still changing,<wbr/>
13816 <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p>
13821 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13822 <!-- end of entry -->
13825 <tr class="entry" id="dynamic_android.lens.focalLength">
13826 <td class="entry_name
13828 android.<wbr/>lens.<wbr/>focal<wbr/>Length
13830 <td class="entry_type">
13831 <span class="entry_type_name">float</span>
13833 <span class="entry_type_visibility"> [public]</span>
13836 <span class="entry_type_hwlevel">[legacy] </span>
13841 </td> <!-- entry_type -->
13843 <td class="entry_description">
13844 <p>The desired lens focal length; used for optical zoom.<wbr/></p>
13847 <td class="entry_units">
13851 <td class="entry_range">
13852 <p><a href="#static_android.lens.info.availableFocalLengths">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths</a></p>
13855 <td class="entry_hal_version">
13859 <td class="entry_tags">
13860 <ul class="entry_tags">
13861 <li><a href="#tag_BC">BC</a></li>
13866 <tr class="entries_header">
13867 <th class="th_details" colspan="6">Details</th>
13869 <tr class="entry_cont">
13870 <td class="entry_details" colspan="6">
13871 <p>This setting controls the physical focal length of the camera
13872 device's lens.<wbr/> Changing the focal length changes the field of
13873 view of the camera device,<wbr/> and is usually used for optical zoom.<wbr/></p>
13874 <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
13875 setting won't be applied instantaneously,<wbr/> and it may take several
13876 frames before the lens can change to the requested focal length.<wbr/>
13877 While the focal length is still changing,<wbr/> <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will
13878 be set to MOVING.<wbr/></p>
13879 <p>Optical zoom will not be supported on most devices.<wbr/></p>
13884 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13885 <!-- end of entry -->
13888 <tr class="entry" id="dynamic_android.lens.focusDistance">
13889 <td class="entry_name
13891 android.<wbr/>lens.<wbr/>focus<wbr/>Distance
13893 <td class="entry_type">
13894 <span class="entry_type_name">float</span>
13896 <span class="entry_type_visibility"> [public]</span>
13899 <span class="entry_type_hwlevel">[full] </span>
13904 </td> <!-- entry_type -->
13906 <td class="entry_description">
13907 <p>Desired distance to plane of sharpest focus,<wbr/>
13908 measured from frontmost surface of the lens.<wbr/></p>
13911 <td class="entry_units">
13912 See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
13915 <td class="entry_range">
13919 <td class="entry_hal_version">
13923 <td class="entry_tags">
13924 <ul class="entry_tags">
13925 <li><a href="#tag_BC">BC</a></li>
13930 <tr class="entries_header">
13931 <th class="th_details" colspan="6">Details</th>
13933 <tr class="entry_cont">
13934 <td class="entry_details" colspan="6">
13935 <p>Should be zero for fixed-focus cameras</p>
13940 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13941 <!-- end of entry -->
13944 <tr class="entry" id="dynamic_android.lens.focusRange">
13945 <td class="entry_name
13947 android.<wbr/>lens.<wbr/>focus<wbr/>Range
13949 <td class="entry_type">
13950 <span class="entry_type_name">float</span>
13951 <span class="entry_type_container">x</span>
13953 <span class="entry_type_array">
13956 <span class="entry_type_visibility"> [public as pairFloatFloat]</span>
13959 <span class="entry_type_hwlevel">[limited] </span>
13962 <div class="entry_type_notes">Range of scene distances that are in focus</div>
13965 </td> <!-- entry_type -->
13967 <td class="entry_description">
13968 <p>The range of scene distances that are in
13969 sharp focus (depth of field).<wbr/></p>
13972 <td class="entry_units">
13973 A pair of focus distances in diopters: (near,<wbr/>
13974 far); see android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details.<wbr/>
13977 <td class="entry_range">
13981 <td class="entry_hal_version">
13985 <td class="entry_tags">
13986 <ul class="entry_tags">
13987 <li><a href="#tag_BC">BC</a></li>
13992 <tr class="entries_header">
13993 <th class="th_details" colspan="6">Details</th>
13995 <tr class="entry_cont">
13996 <td class="entry_details" colspan="6">
13997 <p>If variable focus not supported,<wbr/> can still report
13998 fixed depth of field range</p>
14003 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14004 <!-- end of entry -->
14007 <tr class="entry" id="dynamic_android.lens.opticalStabilizationMode">
14008 <td class="entry_name
14010 android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode
14012 <td class="entry_type">
14013 <span class="entry_type_name entry_type_name_enum">byte</span>
14015 <span class="entry_type_visibility"> [public]</span>
14018 <span class="entry_type_hwlevel">[limited] </span>
14022 <ul class="entry_type_enum">
14024 <span class="entry_type_enum_name">OFF</span>
14025 <span class="entry_type_enum_notes"><p>Optical stabilization is unavailable.<wbr/></p></span>
14028 <span class="entry_type_enum_name">ON</span>
14029 <span class="entry_type_enum_optional">[optional]</span>
14030 <span class="entry_type_enum_notes"><p>Optical stabilization is enabled.<wbr/></p></span>
14034 </td> <!-- entry_type -->
14036 <td class="entry_description">
14037 <p>Sets whether the camera device uses optical image stabilization (OIS)
14038 when capturing images.<wbr/></p>
14041 <td class="entry_units">
14044 <td class="entry_range">
14045 <p><a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a></p>
14048 <td class="entry_hal_version">
14052 <td class="entry_tags">
14053 <ul class="entry_tags">
14054 <li><a href="#tag_V1">V1</a></li>
14059 <tr class="entries_header">
14060 <th class="th_details" colspan="6">Details</th>
14062 <tr class="entry_cont">
14063 <td class="entry_details" colspan="6">
14064 <p>OIS is used to compensate for motion blur due to small
14065 movements of the camera during capture.<wbr/> Unlike digital image
14066 stabilization (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> OIS
14067 makes use of mechanical elements to stabilize the camera
14068 sensor,<wbr/> and thus allows for longer exposure times before
14069 camera shake becomes apparent.<wbr/></p>
14070 <p>Switching between different optical stabilization modes may take several
14071 frames to initialize,<wbr/> the camera device will report the current mode in
14072 capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/> the
14073 optical stabilization modes in the first several capture results may still
14074 be "OFF",<wbr/> and it will become "ON" when the initialization is done.<wbr/></p>
14075 <p>If a camera device supports both OIS and digital image stabilization
14076 (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may produce undesirable
14077 interaction,<wbr/> so it is recommended not to enable both at the same time.<wbr/></p>
14078 <p>Not all devices will support OIS; see
14079 <a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a> for
14080 available controls.<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.state">
14090 <td class="entry_name
14092 android.<wbr/>lens.<wbr/>state
14094 <td class="entry_type">
14095 <span class="entry_type_name entry_type_name_enum">byte</span>
14097 <span class="entry_type_visibility"> [public]</span>
14100 <span class="entry_type_hwlevel">[limited] </span>
14104 <ul class="entry_type_enum">
14106 <span class="entry_type_enum_name">STATIONARY</span>
14107 <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/>
14108 <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>
14111 <span class="entry_type_enum_name">MOVING</span>
14112 <span class="entry_type_enum_notes"><p>One or several of the lens parameters
14113 (<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/>
14114 <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
14115 currently changing.<wbr/></p></span>
14119 </td> <!-- entry_type -->
14121 <td class="entry_description">
14122 <p>Current lens status.<wbr/></p>
14125 <td class="entry_units">
14128 <td class="entry_range">
14131 <td class="entry_hal_version">
14135 <td class="entry_tags">
14136 <ul class="entry_tags">
14137 <li><a href="#tag_V1">V1</a></li>
14142 <tr class="entries_header">
14143 <th class="th_details" colspan="6">Details</th>
14145 <tr class="entry_cont">
14146 <td class="entry_details" colspan="6">
14147 <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/>
14148 <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/>
14149 they may take several frames to reach the requested values.<wbr/> This state indicates
14150 the current status of the lens parameters.<wbr/></p>
14151 <p>When the state is STATIONARY,<wbr/> the lens parameters are not changing.<wbr/> This could be
14152 either because the parameters are all fixed,<wbr/> or because the lens has had enough
14153 time to reach the most recently-requested values.<wbr/>
14154 If all these lens parameters are not changable for a camera device,<wbr/> as listed below:</p>
14156 <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
14157 <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> parameter will always be 0.<wbr/></li>
14158 <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/>
14159 which means the optical zoom is not supported.<wbr/></li>
14160 <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>
14161 <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>
14163 <p>Then this state will always be STATIONARY.<wbr/></p>
14164 <p>When the state is MOVING,<wbr/> it indicates that at least one of the lens parameters
14165 is changing.<wbr/></p>
14170 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14171 <!-- end of entry -->
14174 <tr class="entry" id="dynamic_android.lens.poseRotation">
14175 <td class="entry_name
14177 android.<wbr/>lens.<wbr/>pose<wbr/>Rotation
14179 <td class="entry_type">
14180 <span class="entry_type_name">float</span>
14181 <span class="entry_type_container">x</span>
14183 <span class="entry_type_array">
14186 <span class="entry_type_visibility"> [public]</span>
14193 </td> <!-- entry_type -->
14195 <td class="entry_description">
14196 <p>The orientation of the camera relative to the sensor
14197 coordinate system.<wbr/></p>
14200 <td class="entry_units">
14202 Quaternion coefficients
14206 <td class="entry_range">
14209 <td class="entry_hal_version">
14213 <td class="entry_tags">
14214 <ul class="entry_tags">
14215 <li><a href="#tag_DEPTH">DEPTH</a></li>
14220 <tr class="entries_header">
14221 <th class="th_details" colspan="6">Details</th>
14223 <tr class="entry_cont">
14224 <td class="entry_details" colspan="6">
14225 <p>The four coefficients that describe the quaternion
14226 rotation from the Android sensor coordinate system to a
14227 camera-aligned coordinate system where the X-axis is
14228 aligned with the long side of the image sensor,<wbr/> the Y-axis
14229 is aligned with the short side of the image sensor,<wbr/> and
14230 the Z-axis is aligned with the optical axis of the sensor.<wbr/></p>
14231 <p>To convert from the quaternion coefficients <code>(x,<wbr/>y,<wbr/>z,<wbr/>w)</code>
14232 to the axis of rotation <code>(a_<wbr/>x,<wbr/> a_<wbr/>y,<wbr/> a_<wbr/>z)</code> and rotation
14233 amount <code>theta</code>,<wbr/> the following formulas can be used:</p>
14234 <pre><code> theta = 2 * acos(w)
14235 a_<wbr/>x = x /<wbr/> sin(theta/<wbr/>2)
14236 a_<wbr/>y = y /<wbr/> sin(theta/<wbr/>2)
14237 a_<wbr/>z = z /<wbr/> sin(theta/<wbr/>2)
14239 <p>To create a 3x3 rotation matrix that applies the rotation
14240 defined by this quaternion,<wbr/> the following matrix can be
14242 <pre><code>R = [ 1 - 2y^2 - 2z^2,<wbr/> 2xy - 2zw,<wbr/> 2xz + 2yw,<wbr/>
14243 2xy + 2zw,<wbr/> 1 - 2x^2 - 2z^2,<wbr/> 2yz - 2xw,<wbr/>
14244 2xz - 2yw,<wbr/> 2yz + 2xw,<wbr/> 1 - 2x^2 - 2y^2 ]
14246 <p>This matrix can then be used to apply the rotation to a
14247 column vector point with</p>
14248 <p><code>p' = Rp</code></p>
14249 <p>where <code>p</code> is in the device sensor coordinate system,<wbr/> and
14250 <code>p'</code> is in the camera-oriented coordinate system.<wbr/></p>
14255 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14256 <!-- end of entry -->
14259 <tr class="entry" id="dynamic_android.lens.poseTranslation">
14260 <td class="entry_name
14262 android.<wbr/>lens.<wbr/>pose<wbr/>Translation
14264 <td class="entry_type">
14265 <span class="entry_type_name">float</span>
14266 <span class="entry_type_container">x</span>
14268 <span class="entry_type_array">
14271 <span class="entry_type_visibility"> [public]</span>
14278 </td> <!-- entry_type -->
14280 <td class="entry_description">
14281 <p>Position of the camera optical center.<wbr/></p>
14284 <td class="entry_units">
14288 <td class="entry_range">
14291 <td class="entry_hal_version">
14295 <td class="entry_tags">
14296 <ul class="entry_tags">
14297 <li><a href="#tag_DEPTH">DEPTH</a></li>
14302 <tr class="entries_header">
14303 <th class="th_details" colspan="6">Details</th>
14305 <tr class="entry_cont">
14306 <td class="entry_details" colspan="6">
14307 <p>The position of the camera device's lens optical center,<wbr/>
14308 as a three-dimensional vector <code>(x,<wbr/>y,<wbr/>z)</code>,<wbr/> relative to the
14309 optical center of the largest camera device facing in the
14310 same direction as this camera,<wbr/> in the <a href="https://developer.android.com/reference/android/hardware/SensorEvent.html">Android sensor coordinate
14311 axes</a>.<wbr/> Note that only the axis definitions are shared with
14312 the sensor coordinate system,<wbr/> but not the origin.<wbr/></p>
14313 <p>If this device is the largest or only camera device with a
14314 given facing,<wbr/> then this position will be <code>(0,<wbr/> 0,<wbr/> 0)</code>; a
14315 camera device with a lens optical center located 3 cm from
14316 the main sensor along the +X axis (to the right from the
14317 user's perspective) will report <code>(0.<wbr/>03,<wbr/> 0,<wbr/> 0)</code>.<wbr/></p>
14318 <p>To transform a pixel coordinates between two cameras
14319 facing the same direction,<wbr/> first the source camera
14320 <a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a> must be corrected for.<wbr/> Then
14321 the source camera <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> needs
14322 to be applied,<wbr/> followed by the <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a>
14323 of the source camera,<wbr/> the translation of the source camera
14324 relative to the destination camera,<wbr/> the
14325 <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> of the destination camera,<wbr/> and
14326 finally the inverse of <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a>
14327 of the destination camera.<wbr/> This obtains a
14328 radial-distortion-free coordinate in the destination
14329 camera pixel coordinates.<wbr/></p>
14330 <p>To compare this against a real image from the destination
14331 camera,<wbr/> the destination camera image then needs to be
14332 corrected for radial distortion before comparison or
14333 sampling.<wbr/></p>
14338 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14339 <!-- end of entry -->
14342 <tr class="entry" id="dynamic_android.lens.intrinsicCalibration">
14343 <td class="entry_name
14345 android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration
14347 <td class="entry_type">
14348 <span class="entry_type_name">float</span>
14349 <span class="entry_type_container">x</span>
14351 <span class="entry_type_array">
14354 <span class="entry_type_visibility"> [public]</span>
14361 </td> <!-- entry_type -->
14363 <td class="entry_description">
14364 <p>The parameters for this camera device's intrinsic
14365 calibration.<wbr/></p>
14368 <td class="entry_units">
14371 android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size
14372 coordinate system.<wbr/>
14376 <td class="entry_range">
14379 <td class="entry_hal_version">
14383 <td class="entry_tags">
14384 <ul class="entry_tags">
14385 <li><a href="#tag_DEPTH">DEPTH</a></li>
14390 <tr class="entries_header">
14391 <th class="th_details" colspan="6">Details</th>
14393 <tr class="entry_cont">
14394 <td class="entry_details" colspan="6">
14395 <p>The five calibration parameters that describe the
14396 transform from camera-centric 3D coordinates to sensor
14397 pixel coordinates:</p>
14398 <pre><code>[f_<wbr/>x,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>x,<wbr/> c_<wbr/>y,<wbr/> s]
14400 <p>Where <code>f_<wbr/>x</code> and <code>f_<wbr/>y</code> are the horizontal and vertical
14401 focal lengths,<wbr/> <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code> is the position of the optical
14402 axis,<wbr/> and <code>s</code> is a skew parameter for the sensor plane not
14403 being aligned with the lens plane.<wbr/></p>
14404 <p>These are typically used within a transformation matrix K:</p>
14405 <pre><code>K = [ f_<wbr/>x,<wbr/> s,<wbr/> c_<wbr/>x,<wbr/>
14406 0,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>y,<wbr/>
14409 <p>which can then be combined with the camera pose rotation
14410 <code>R</code> and translation <code>t</code> (<a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> and
14411 <a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a>,<wbr/> respective) to calculate the
14412 complete transform from world coordinates to pixel
14414 <pre><code>P = [ K 0 * [ R t
14417 <p>and with <code>p_<wbr/>w</code> being a point in the world coordinate system
14418 and <code>p_<wbr/>s</code> being a point in the camera active pixel array
14419 coordinate system,<wbr/> and with the mapping including the
14420 homogeneous division by z:</p>
14421 <pre><code> p_<wbr/>h = (x_<wbr/>h,<wbr/> y_<wbr/>h,<wbr/> z_<wbr/>h) = P p_<wbr/>w
14422 p_<wbr/>s = p_<wbr/>h /<wbr/> z_<wbr/>h
14424 <p>so <code>[x_<wbr/>s,<wbr/> y_<wbr/>s]</code> is the pixel coordinates of the world
14425 point,<wbr/> <code>z_<wbr/>s = 1</code>,<wbr/> and <code>w_<wbr/>s</code> is a measurement of disparity
14426 (depth) in pixel coordinates.<wbr/></p>
14427 <p>Note that the coordinate system for this transform is the
14428 <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/>
14429 where <code>(0,<wbr/>0)</code> is the top-left of the
14430 preCorrectionActiveArraySize rectangle.<wbr/> Once the pose and
14431 intrinsic calibration transforms have been applied to a
14432 world point,<wbr/> then the <a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a>
14433 transform needs to be applied,<wbr/> and the result adjusted to
14434 be in the <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> coordinate
14435 system (where <code>(0,<wbr/> 0)</code> is the top-left of the
14436 activeArraySize rectangle),<wbr/> to determine the final pixel
14437 coordinate of the world point for processed (non-RAW)
14438 output buffers.<wbr/></p>
14443 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14444 <!-- end of entry -->
14447 <tr class="entry" id="dynamic_android.lens.radialDistortion">
14448 <td class="entry_name
14450 android.<wbr/>lens.<wbr/>radial<wbr/>Distortion
14452 <td class="entry_type">
14453 <span class="entry_type_name">float</span>
14454 <span class="entry_type_container">x</span>
14456 <span class="entry_type_array">
14459 <span class="entry_type_visibility"> [public]</span>
14466 </td> <!-- entry_type -->
14468 <td class="entry_description">
14469 <p>The correction coefficients to correct for this camera device's
14470 radial and tangential lens distortion.<wbr/></p>
14473 <td class="entry_units">
14475 Unitless coefficients.<wbr/>
14479 <td class="entry_range">
14482 <td class="entry_hal_version">
14486 <td class="entry_tags">
14487 <ul class="entry_tags">
14488 <li><a href="#tag_DEPTH">DEPTH</a></li>
14493 <tr class="entries_header">
14494 <th class="th_details" colspan="6">Details</th>
14496 <tr class="entry_cont">
14497 <td class="entry_details" colspan="6">
14498 <p>Four radial distortion coefficients <code>[kappa_<wbr/>0,<wbr/> kappa_<wbr/>1,<wbr/> kappa_<wbr/>2,<wbr/>
14499 kappa_<wbr/>3]</code> and two tangential distortion coefficients
14500 <code>[kappa_<wbr/>4,<wbr/> kappa_<wbr/>5]</code> that can be used to correct the
14501 lens's geometric distortion with the mapping equations:</p>
14502 <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 ) +
14503 kappa_<wbr/>4 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>5 * ( r^2 + 2 * x_<wbr/>i^2 )
14504 y_<wbr/>c = y_<wbr/>i * ( kappa_<wbr/>0 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) +
14505 kappa_<wbr/>5 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>4 * ( r^2 + 2 * y_<wbr/>i^2 )
14507 <p>Here,<wbr/> <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> are the coordinates to sample in the
14508 input image that correspond to the pixel values in the
14509 corrected image at the coordinate <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code>:</p>
14510 <pre><code> correctedImage(x_<wbr/>i,<wbr/> y_<wbr/>i) = sample_<wbr/>at(x_<wbr/>c,<wbr/> y_<wbr/>c,<wbr/> inputImage)
14512 <p>The pixel coordinates are defined in a normalized
14513 coordinate system related to the
14514 <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> calibration fields.<wbr/>
14515 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
14516 lens optical center <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code>.<wbr/> The maximum magnitudes
14517 of both x and y coordinates are normalized to be 1 at the
14518 edge further from the optical center,<wbr/> so the range
14519 for both dimensions is <code>-1 <= x <= 1</code>.<wbr/></p>
14520 <p>Finally,<wbr/> <code>r</code> represents the radial distance from the
14521 optical center,<wbr/> <code>r^2 = x_<wbr/>i^2 + y_<wbr/>i^2</code>,<wbr/> and its magnitude
14522 is therefore no larger than <code>|<wbr/>r|<wbr/> <= sqrt(2)</code>.<wbr/></p>
14523 <p>The distortion model used is the Brown-Conrady model.<wbr/></p>
14528 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14529 <!-- end of entry -->
14533 <!-- end of kind -->
14536 <!-- end of section -->
14537 <tr><td colspan="7" id="section_noiseReduction" class="section">noiseReduction</td></tr>
14540 <tr><td colspan="7" class="kind">controls</td></tr>
14542 <thead class="entries_header">
14544 <th class="th_name">Property Name</th>
14545 <th class="th_type">Type</th>
14546 <th class="th_description">Description</th>
14547 <th class="th_units">Units</th>
14548 <th class="th_range">Range</th>
14549 <th class="th_hal_version">Initial HIDL HAL version</th>
14550 <th class="th_tags">Tags</th>
14565 <tr class="entry" id="controls_android.noiseReduction.mode">
14566 <td class="entry_name
14568 android.<wbr/>noise<wbr/>Reduction.<wbr/>mode
14570 <td class="entry_type">
14571 <span class="entry_type_name entry_type_name_enum">byte</span>
14573 <span class="entry_type_visibility"> [public]</span>
14576 <span class="entry_type_hwlevel">[full] </span>
14580 <ul class="entry_type_enum">
14582 <span class="entry_type_enum_name">OFF</span>
14583 <span class="entry_type_enum_notes"><p>No noise reduction is applied.<wbr/></p></span>
14586 <span class="entry_type_enum_name">FAST</span>
14587 <span class="entry_type_enum_notes"><p>Noise reduction is applied without reducing frame rate relative to sensor
14588 output.<wbr/> It may be the same as OFF if noise reduction will reduce frame rate
14589 relative to sensor.<wbr/></p></span>
14592 <span class="entry_type_enum_name">HIGH_QUALITY</span>
14593 <span class="entry_type_enum_notes"><p>High-quality noise reduction is applied,<wbr/> at the cost of possibly reduced frame
14594 rate relative to sensor output.<wbr/></p></span>
14597 <span class="entry_type_enum_name">MINIMAL</span>
14598 <span class="entry_type_enum_optional">[optional]</span>
14599 <span class="entry_type_enum_notes"><p>MINIMAL noise reduction is applied without reducing frame rate relative to
14600 sensor output.<wbr/> </p></span>
14603 <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span>
14604 <span class="entry_type_enum_optional">[optional]</span>
14605 <span class="entry_type_enum_notes"><p>Noise reduction is applied at different levels for different output streams,<wbr/>
14606 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>)
14607 or below have noise reduction applied,<wbr/> while higher-resolution streams have MINIMAL (if
14608 supported) or no noise reduction applied (if MINIMAL is not supported.<wbr/>) The degree of
14609 noise reduction for low-resolution streams is tuned so that frame rate is not impacted,<wbr/>
14610 and the quality is equal to or better than FAST (since it is only applied to
14611 lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p>
14612 <p>This mode is intended to be used by applications operating in a zero-shutter-lag mode
14613 with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures
14614 high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is
14615 produced via reprocessing when a user takes a picture.<wbr/> For such a use case,<wbr/> the
14616 high-resolution buffers must not have noise reduction applied to maximize efficiency of
14617 preview and to avoid over-applying noise filtering when reprocessing,<wbr/> while
14618 low-resolution buffers (used for recording or preview,<wbr/> generally) need noise reduction
14619 applied for reasonable preview quality.<wbr/></p>
14620 <p>This mode is guaranteed to be supported by devices that support either the
14621 YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities
14622 (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will
14623 be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span>
14627 </td> <!-- entry_type -->
14629 <td class="entry_description">
14630 <p>Mode of operation for the noise reduction algorithm.<wbr/></p>
14633 <td class="entry_units">
14636 <td class="entry_range">
14637 <p><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a></p>
14640 <td class="entry_hal_version">
14644 <td class="entry_tags">
14645 <ul class="entry_tags">
14646 <li><a href="#tag_V1">V1</a></li>
14647 <li><a href="#tag_REPROC">REPROC</a></li>
14652 <tr class="entries_header">
14653 <th class="th_details" colspan="6">Details</th>
14655 <tr class="entry_cont">
14656 <td class="entry_details" colspan="6">
14657 <p>The noise reduction algorithm attempts to improve image quality by removing
14658 excessive noise added by the capture process,<wbr/> especially in dark conditions.<wbr/></p>
14659 <p>OFF means no noise reduction will be applied by the camera device,<wbr/> for both raw and
14660 YUV domain.<wbr/></p>
14661 <p>MINIMAL means that only sensor raw domain basic noise reduction is enabled ,<wbr/>to remove
14662 demosaicing or other processing artifacts.<wbr/> For YUV_<wbr/>REPROCESSING,<wbr/> MINIMAL is same as OFF.<wbr/>
14663 This mode is optional,<wbr/> may not be support by all devices.<wbr/> The application should check
14664 <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>
14665 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined noise filtering
14666 will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device
14667 will use the highest-quality noise filtering algorithms,<wbr/>
14668 even if it slows down capture rate.<wbr/> FAST means the camera device will not
14669 slow down capture rate when applying noise filtering.<wbr/> FAST may be the same as MINIMAL if
14670 MINIMAL is listed,<wbr/> or the same as OFF if any noise filtering will slow down capture rate.<wbr/>
14671 Every output stream will have a similar amount of enhancement applied.<wbr/></p>
14672 <p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular
14673 buffer of high-resolution images during preview and reprocess image(s) from that buffer
14674 into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies
14675 noise reduction to low-resolution streams (below maximum recording resolution) to maximize
14676 preview quality,<wbr/> but does not apply noise reduction to high-resolution streams,<wbr/> since
14677 those will be reprocessed later if necessary.<wbr/></p>
14678 <p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera device
14679 will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV domain noise reduction,<wbr/> respectively.<wbr/> The camera device
14680 may adjust the noise reduction parameters for best image quality based on the
14681 <a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a> if it is set.<wbr/></p>
14685 <tr class="entries_header">
14686 <th class="th_details" colspan="6">HAL Implementation Details</th>
14688 <tr class="entry_cont">
14689 <td class="entry_details" colspan="6">
14690 <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
14691 adjust the internal noise reduction parameters appropriately to get the best quality
14696 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14697 <!-- end of entry -->
14700 <tr class="entry" id="controls_android.noiseReduction.strength">
14701 <td class="entry_name
14703 android.<wbr/>noise<wbr/>Reduction.<wbr/>strength
14705 <td class="entry_type">
14706 <span class="entry_type_name">byte</span>
14708 <span class="entry_type_visibility"> [system]</span>
14715 </td> <!-- entry_type -->
14717 <td class="entry_description">
14718 <p>Control the amount of noise reduction
14719 applied to the images</p>
14722 <td class="entry_units">
14723 1-10; 10 is max noise reduction
14726 <td class="entry_range">
14730 <td class="entry_hal_version">
14734 <td class="entry_tags">
14735 <ul class="entry_tags">
14736 <li><a href="#tag_FUTURE">FUTURE</a></li>
14743 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14744 <!-- end of entry -->
14748 <!-- end of kind -->
14750 <tr><td colspan="7" class="kind">static</td></tr>
14752 <thead class="entries_header">
14754 <th class="th_name">Property Name</th>
14755 <th class="th_type">Type</th>
14756 <th class="th_description">Description</th>
14757 <th class="th_units">Units</th>
14758 <th class="th_range">Range</th>
14759 <th class="th_hal_version">Initial HIDL HAL version</th>
14760 <th class="th_tags">Tags</th>
14775 <tr class="entry" id="static_android.noiseReduction.availableNoiseReductionModes">
14776 <td class="entry_name
14778 android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes
14780 <td class="entry_type">
14781 <span class="entry_type_name">byte</span>
14782 <span class="entry_type_container">x</span>
14784 <span class="entry_type_array">
14787 <span class="entry_type_visibility"> [public as enumList]</span>
14790 <span class="entry_type_hwlevel">[limited] </span>
14793 <div class="entry_type_notes">list of enums</div>
14796 </td> <!-- entry_type -->
14798 <td class="entry_description">
14799 <p>List of noise reduction modes for <a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a> that are supported
14800 by this camera device.<wbr/></p>
14803 <td class="entry_units">
14806 <td class="entry_range">
14807 <p>Any value listed in <a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></p>
14810 <td class="entry_hal_version">
14814 <td class="entry_tags">
14815 <ul class="entry_tags">
14816 <li><a href="#tag_V1">V1</a></li>
14817 <li><a href="#tag_REPROC">REPROC</a></li>
14822 <tr class="entries_header">
14823 <th class="th_details" colspan="6">Details</th>
14825 <tr class="entry_cont">
14826 <td class="entry_details" colspan="6">
14827 <p>Full-capability camera devices will always support OFF and FAST.<wbr/></p>
14828 <p>Camera devices that support YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING will support
14829 ZERO_<wbr/>SHUTTER_<wbr/>LAG.<wbr/></p>
14830 <p>Legacy-capability camera devices will only support FAST mode.<wbr/></p>
14834 <tr class="entries_header">
14835 <th class="th_details" colspan="6">HAL Implementation Details</th>
14837 <tr class="entry_cont">
14838 <td class="entry_details" colspan="6">
14839 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if noise reduction control is available
14840 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
14841 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
14842 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
14846 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14847 <!-- end of entry -->
14851 <!-- end of kind -->
14853 <tr><td colspan="7" class="kind">dynamic</td></tr>
14855 <thead class="entries_header">
14857 <th class="th_name">Property Name</th>
14858 <th class="th_type">Type</th>
14859 <th class="th_description">Description</th>
14860 <th class="th_units">Units</th>
14861 <th class="th_range">Range</th>
14862 <th class="th_hal_version">Initial HIDL HAL version</th>
14863 <th class="th_tags">Tags</th>
14878 <tr class="entry" id="dynamic_android.noiseReduction.mode">
14879 <td class="entry_name
14881 android.<wbr/>noise<wbr/>Reduction.<wbr/>mode
14883 <td class="entry_type">
14884 <span class="entry_type_name entry_type_name_enum">byte</span>
14886 <span class="entry_type_visibility"> [public]</span>
14889 <span class="entry_type_hwlevel">[full] </span>
14893 <ul class="entry_type_enum">
14895 <span class="entry_type_enum_name">OFF</span>
14896 <span class="entry_type_enum_notes"><p>No noise reduction is applied.<wbr/></p></span>
14899 <span class="entry_type_enum_name">FAST</span>
14900 <span class="entry_type_enum_notes"><p>Noise reduction is applied without reducing frame rate relative to sensor
14901 output.<wbr/> It may be the same as OFF if noise reduction will reduce frame rate
14902 relative to sensor.<wbr/></p></span>
14905 <span class="entry_type_enum_name">HIGH_QUALITY</span>
14906 <span class="entry_type_enum_notes"><p>High-quality noise reduction is applied,<wbr/> at the cost of possibly reduced frame
14907 rate relative to sensor output.<wbr/></p></span>
14910 <span class="entry_type_enum_name">MINIMAL</span>
14911 <span class="entry_type_enum_optional">[optional]</span>
14912 <span class="entry_type_enum_notes"><p>MINIMAL noise reduction is applied without reducing frame rate relative to
14913 sensor output.<wbr/> </p></span>
14916 <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span>
14917 <span class="entry_type_enum_optional">[optional]</span>
14918 <span class="entry_type_enum_notes"><p>Noise reduction is applied at different levels for different output streams,<wbr/>
14919 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>)
14920 or below have noise reduction applied,<wbr/> while higher-resolution streams have MINIMAL (if
14921 supported) or no noise reduction applied (if MINIMAL is not supported.<wbr/>) The degree of
14922 noise reduction for low-resolution streams is tuned so that frame rate is not impacted,<wbr/>
14923 and the quality is equal to or better than FAST (since it is only applied to
14924 lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p>
14925 <p>This mode is intended to be used by applications operating in a zero-shutter-lag mode
14926 with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures
14927 high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is
14928 produced via reprocessing when a user takes a picture.<wbr/> For such a use case,<wbr/> the
14929 high-resolution buffers must not have noise reduction applied to maximize efficiency of
14930 preview and to avoid over-applying noise filtering when reprocessing,<wbr/> while
14931 low-resolution buffers (used for recording or preview,<wbr/> generally) need noise reduction
14932 applied for reasonable preview quality.<wbr/></p>
14933 <p>This mode is guaranteed to be supported by devices that support either the
14934 YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities
14935 (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will
14936 be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span>
14940 </td> <!-- entry_type -->
14942 <td class="entry_description">
14943 <p>Mode of operation for the noise reduction algorithm.<wbr/></p>
14946 <td class="entry_units">
14949 <td class="entry_range">
14950 <p><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a></p>
14953 <td class="entry_hal_version">
14957 <td class="entry_tags">
14958 <ul class="entry_tags">
14959 <li><a href="#tag_V1">V1</a></li>
14960 <li><a href="#tag_REPROC">REPROC</a></li>
14965 <tr class="entries_header">
14966 <th class="th_details" colspan="6">Details</th>
14968 <tr class="entry_cont">
14969 <td class="entry_details" colspan="6">
14970 <p>The noise reduction algorithm attempts to improve image quality by removing
14971 excessive noise added by the capture process,<wbr/> especially in dark conditions.<wbr/></p>
14972 <p>OFF means no noise reduction will be applied by the camera device,<wbr/> for both raw and
14973 YUV domain.<wbr/></p>
14974 <p>MINIMAL means that only sensor raw domain basic noise reduction is enabled ,<wbr/>to remove
14975 demosaicing or other processing artifacts.<wbr/> For YUV_<wbr/>REPROCESSING,<wbr/> MINIMAL is same as OFF.<wbr/>
14976 This mode is optional,<wbr/> may not be support by all devices.<wbr/> The application should check
14977 <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>
14978 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined noise filtering
14979 will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device
14980 will use the highest-quality noise filtering algorithms,<wbr/>
14981 even if it slows down capture rate.<wbr/> FAST means the camera device will not
14982 slow down capture rate when applying noise filtering.<wbr/> FAST may be the same as MINIMAL if
14983 MINIMAL is listed,<wbr/> or the same as OFF if any noise filtering will slow down capture rate.<wbr/>
14984 Every output stream will have a similar amount of enhancement applied.<wbr/></p>
14985 <p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular
14986 buffer of high-resolution images during preview and reprocess image(s) from that buffer
14987 into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies
14988 noise reduction to low-resolution streams (below maximum recording resolution) to maximize
14989 preview quality,<wbr/> but does not apply noise reduction to high-resolution streams,<wbr/> since
14990 those will be reprocessed later if necessary.<wbr/></p>
14991 <p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera device
14992 will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV domain noise reduction,<wbr/> respectively.<wbr/> The camera device
14993 may adjust the noise reduction parameters for best image quality based on the
14994 <a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a> if it is set.<wbr/></p>
14998 <tr class="entries_header">
14999 <th class="th_details" colspan="6">HAL Implementation Details</th>
15001 <tr class="entry_cont">
15002 <td class="entry_details" colspan="6">
15003 <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
15004 adjust the internal noise reduction parameters appropriately to get the best quality
15009 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15010 <!-- end of entry -->
15014 <!-- end of kind -->
15017 <!-- end of section -->
15018 <tr><td colspan="7" id="section_quirks" class="section">quirks</td></tr>
15021 <tr><td colspan="7" class="kind">static</td></tr>
15023 <thead class="entries_header">
15025 <th class="th_name">Property Name</th>
15026 <th class="th_type">Type</th>
15027 <th class="th_description">Description</th>
15028 <th class="th_units">Units</th>
15029 <th class="th_range">Range</th>
15030 <th class="th_hal_version">Initial HIDL HAL version</th>
15031 <th class="th_tags">Tags</th>
15046 <tr class="entry" id="static_android.quirks.meteringCropRegion">
15047 <td class="entry_name
15048 entry_name_deprecated
15050 android.<wbr/>quirks.<wbr/>metering<wbr/>Crop<wbr/>Region
15052 <td class="entry_type">
15053 <span class="entry_type_name">byte</span>
15055 <span class="entry_type_visibility"> [system]</span>
15059 <span class="entry_type_deprecated">[deprecated] </span>
15063 </td> <!-- entry_type -->
15065 <td class="entry_description">
15066 <p>If set to 1,<wbr/> the camera service does not
15067 scale 'normalized' coordinates with respect to the crop
15068 region.<wbr/> This applies to metering input (a{e,<wbr/>f,<wbr/>wb}Region
15069 and output (face rectangles).<wbr/></p>
15072 <td class="entry_units">
15075 <td class="entry_range">
15076 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15079 <td class="entry_hal_version">
15083 <td class="entry_tags">
15087 <tr class="entries_header">
15088 <th class="th_details" colspan="6">Details</th>
15090 <tr class="entry_cont">
15091 <td class="entry_details" colspan="6">
15092 <p>Normalized coordinates refer to those in the
15093 (-1000,<wbr/>1000) range mentioned in the
15094 android.<wbr/>hardware.<wbr/>Camera API.<wbr/></p>
15095 <p>HAL implementations should instead always use and emit
15096 sensor array-relative coordinates for all region data.<wbr/> Does
15097 not need to be listed in static metadata.<wbr/> Support will be
15098 removed in future versions of camera service.<wbr/></p>
15103 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15104 <!-- end of entry -->
15107 <tr class="entry" id="static_android.quirks.triggerAfWithAuto">
15108 <td class="entry_name
15109 entry_name_deprecated
15111 android.<wbr/>quirks.<wbr/>trigger<wbr/>Af<wbr/>With<wbr/>Auto
15113 <td class="entry_type">
15114 <span class="entry_type_name">byte</span>
15116 <span class="entry_type_visibility"> [system]</span>
15120 <span class="entry_type_deprecated">[deprecated] </span>
15124 </td> <!-- entry_type -->
15126 <td class="entry_description">
15127 <p>If set to 1,<wbr/> then the camera service always
15128 switches to FOCUS_<wbr/>MODE_<wbr/>AUTO before issuing a AF
15132 <td class="entry_units">
15135 <td class="entry_range">
15136 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15139 <td class="entry_hal_version">
15143 <td class="entry_tags">
15147 <tr class="entries_header">
15148 <th class="th_details" colspan="6">Details</th>
15150 <tr class="entry_cont">
15151 <td class="entry_details" colspan="6">
15152 <p>HAL implementations should implement AF trigger
15153 modes for AUTO,<wbr/> MACRO,<wbr/> CONTINUOUS_<wbr/>FOCUS,<wbr/> and
15154 CONTINUOUS_<wbr/>PICTURE modes instead of using this flag.<wbr/> Does
15155 not need to be listed in static metadata.<wbr/> Support will be
15156 removed in future versions of camera service</p>
15161 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15162 <!-- end of entry -->
15165 <tr class="entry" id="static_android.quirks.useZslFormat">
15166 <td class="entry_name
15167 entry_name_deprecated
15169 android.<wbr/>quirks.<wbr/>use<wbr/>Zsl<wbr/>Format
15171 <td class="entry_type">
15172 <span class="entry_type_name">byte</span>
15174 <span class="entry_type_visibility"> [system]</span>
15178 <span class="entry_type_deprecated">[deprecated] </span>
15182 </td> <!-- entry_type -->
15184 <td class="entry_description">
15185 <p>If set to 1,<wbr/> the camera service uses
15186 CAMERA2_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>ZSL instead of
15187 HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>IMPLEMENTATION_<wbr/>DEFINED for the zero
15188 shutter lag stream</p>
15191 <td class="entry_units">
15194 <td class="entry_range">
15195 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15198 <td class="entry_hal_version">
15202 <td class="entry_tags">
15206 <tr class="entries_header">
15207 <th class="th_details" colspan="6">Details</th>
15209 <tr class="entry_cont">
15210 <td class="entry_details" colspan="6">
15211 <p>HAL implementations should use gralloc usage flags
15212 to determine that a stream will be used for
15213 zero-shutter-lag,<wbr/> instead of relying on an explicit
15214 format setting.<wbr/> Does not need to be listed in static
15215 metadata.<wbr/> Support will be removed in future versions of
15216 camera service.<wbr/></p>
15221 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15222 <!-- end of entry -->
15225 <tr class="entry" id="static_android.quirks.usePartialResult">
15226 <td class="entry_name
15227 entry_name_deprecated
15229 android.<wbr/>quirks.<wbr/>use<wbr/>Partial<wbr/>Result
15231 <td class="entry_type">
15232 <span class="entry_type_name">byte</span>
15234 <span class="entry_type_visibility"> [hidden]</span>
15238 <span class="entry_type_deprecated">[deprecated] </span>
15242 </td> <!-- entry_type -->
15244 <td class="entry_description">
15245 <p>If set to 1,<wbr/> the HAL will always split result
15246 metadata for a single capture into multiple buffers,<wbr/>
15247 returned using multiple process_<wbr/>capture_<wbr/>result calls.<wbr/></p>
15250 <td class="entry_units">
15253 <td class="entry_range">
15254 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15257 <td class="entry_hal_version">
15261 <td class="entry_tags">
15265 <tr class="entries_header">
15266 <th class="th_details" colspan="6">Details</th>
15268 <tr class="entry_cont">
15269 <td class="entry_details" colspan="6">
15270 <p>Does not need to be listed in static
15271 metadata.<wbr/> Support for partial results will be reworked in
15272 future versions of camera service.<wbr/> This quirk will stop
15273 working at that point; DO NOT USE without careful
15274 consideration of future support.<wbr/></p>
15278 <tr class="entries_header">
15279 <th class="th_details" colspan="6">HAL Implementation Details</th>
15281 <tr class="entry_cont">
15282 <td class="entry_details" colspan="6">
15283 <p>Refer to <code>camera3_<wbr/>capture_<wbr/>result::partial_<wbr/>result</code>
15284 for information on how to implement partial results.<wbr/></p>
15288 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15289 <!-- end of entry -->
15293 <!-- end of kind -->
15295 <tr><td colspan="7" class="kind">dynamic</td></tr>
15297 <thead class="entries_header">
15299 <th class="th_name">Property Name</th>
15300 <th class="th_type">Type</th>
15301 <th class="th_description">Description</th>
15302 <th class="th_units">Units</th>
15303 <th class="th_range">Range</th>
15304 <th class="th_hal_version">Initial HIDL HAL version</th>
15305 <th class="th_tags">Tags</th>
15320 <tr class="entry" id="dynamic_android.quirks.partialResult">
15321 <td class="entry_name
15322 entry_name_deprecated
15324 android.<wbr/>quirks.<wbr/>partial<wbr/>Result
15326 <td class="entry_type">
15327 <span class="entry_type_name entry_type_name_enum">byte</span>
15329 <span class="entry_type_visibility"> [hidden as boolean]</span>
15333 <span class="entry_type_deprecated">[deprecated] </span>
15336 <ul class="entry_type_enum">
15338 <span class="entry_type_enum_name">FINAL</span>
15339 <span class="entry_type_enum_notes"><p>The last or only metadata result buffer
15340 for this capture.<wbr/></p></span>
15343 <span class="entry_type_enum_name">PARTIAL</span>
15344 <span class="entry_type_enum_notes"><p>A partial buffer of result metadata for this
15345 capture.<wbr/> More result buffers for this capture will be sent
15346 by the camera device,<wbr/> the last of which will be marked
15347 FINAL.<wbr/></p></span>
15351 </td> <!-- entry_type -->
15353 <td class="entry_description">
15354 <p>Whether a result given to the framework is the
15355 final one for the capture,<wbr/> or only a partial that contains a
15356 subset of the full set of dynamic metadata
15360 <td class="entry_units">
15363 <td class="entry_range">
15364 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15365 <p>Optional.<wbr/> Default value is FINAL.<wbr/></p>
15368 <td class="entry_hal_version">
15372 <td class="entry_tags">
15376 <tr class="entries_header">
15377 <th class="th_details" colspan="6">Details</th>
15379 <tr class="entry_cont">
15380 <td class="entry_details" colspan="6">
15381 <p>The entries in the result metadata buffers for a
15382 single capture may not overlap,<wbr/> except for this entry.<wbr/> The
15383 FINAL buffers must retain FIFO ordering relative to the
15384 requests that generate them,<wbr/> so the FINAL buffer for frame 3 must
15385 always be sent to the framework after the FINAL buffer for frame 2,<wbr/> and
15386 before the FINAL buffer for frame 4.<wbr/> PARTIAL buffers may be returned
15387 in any order relative to other frames,<wbr/> but all PARTIAL buffers for a given
15388 capture must arrive before the FINAL buffer for that capture.<wbr/> This entry may
15389 only be used by the camera device if quirks.<wbr/>usePartialResult is set to 1.<wbr/></p>
15393 <tr class="entries_header">
15394 <th class="th_details" colspan="6">HAL Implementation Details</th>
15396 <tr class="entry_cont">
15397 <td class="entry_details" colspan="6">
15398 <p>Refer to <code>camera3_<wbr/>capture_<wbr/>result::partial_<wbr/>result</code>
15399 for information on how to implement partial results.<wbr/></p>
15403 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15404 <!-- end of entry -->
15408 <!-- end of kind -->
15411 <!-- end of section -->
15412 <tr><td colspan="7" id="section_request" class="section">request</td></tr>
15415 <tr><td colspan="7" class="kind">controls</td></tr>
15417 <thead class="entries_header">
15419 <th class="th_name">Property Name</th>
15420 <th class="th_type">Type</th>
15421 <th class="th_description">Description</th>
15422 <th class="th_units">Units</th>
15423 <th class="th_range">Range</th>
15424 <th class="th_hal_version">Initial HIDL HAL version</th>
15425 <th class="th_tags">Tags</th>
15440 <tr class="entry" id="controls_android.request.frameCount">
15441 <td class="entry_name
15442 entry_name_deprecated
15444 android.<wbr/>request.<wbr/>frame<wbr/>Count
15446 <td class="entry_type">
15447 <span class="entry_type_name">int32</span>
15449 <span class="entry_type_visibility"> [system]</span>
15453 <span class="entry_type_deprecated">[deprecated] </span>
15457 </td> <!-- entry_type -->
15459 <td class="entry_description">
15460 <p>A frame counter set by the framework.<wbr/> Must
15461 be maintained unchanged in output frame.<wbr/> This value monotonically
15462 increases with every new result (that is,<wbr/> each new result has a unique
15463 frameCount value).<wbr/></p>
15466 <td class="entry_units">
15467 incrementing integer
15470 <td class="entry_range">
15471 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15472 <p>Any int.<wbr/></p>
15475 <td class="entry_hal_version">
15479 <td class="entry_tags">
15485 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15486 <!-- end of entry -->
15489 <tr class="entry" id="controls_android.request.id">
15490 <td class="entry_name
15492 android.<wbr/>request.<wbr/>id
15494 <td class="entry_type">
15495 <span class="entry_type_name">int32</span>
15497 <span class="entry_type_visibility"> [hidden]</span>
15504 </td> <!-- entry_type -->
15506 <td class="entry_description">
15507 <p>An application-specified ID for the current
15508 request.<wbr/> Must be maintained unchanged in output
15512 <td class="entry_units">
15513 arbitrary integer assigned by application
15516 <td class="entry_range">
15520 <td class="entry_hal_version">
15524 <td class="entry_tags">
15525 <ul class="entry_tags">
15526 <li><a href="#tag_V1">V1</a></li>
15533 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15534 <!-- end of entry -->
15537 <tr class="entry" id="controls_android.request.inputStreams">
15538 <td class="entry_name
15539 entry_name_deprecated
15541 android.<wbr/>request.<wbr/>input<wbr/>Streams
15543 <td class="entry_type">
15544 <span class="entry_type_name">int32</span>
15545 <span class="entry_type_container">x</span>
15547 <span class="entry_type_array">
15550 <span class="entry_type_visibility"> [system]</span>
15554 <span class="entry_type_deprecated">[deprecated] </span>
15558 </td> <!-- entry_type -->
15560 <td class="entry_description">
15561 <p>List which camera reprocess stream is used
15562 for the source of reprocessing data.<wbr/></p>
15565 <td class="entry_units">
15566 List of camera reprocess stream IDs
15569 <td class="entry_range">
15570 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15571 <p>Typically,<wbr/> only one entry allowed,<wbr/> must be a valid reprocess stream ID.<wbr/></p>
15574 <td class="entry_hal_version">
15578 <td class="entry_tags">
15579 <ul class="entry_tags">
15580 <li><a href="#tag_HAL2">HAL2</a></li>
15585 <tr class="entries_header">
15586 <th class="th_details" colspan="6">Details</th>
15588 <tr class="entry_cont">
15589 <td class="entry_details" colspan="6">
15590 <p>Only meaningful when <a href="#controls_android.request.type">android.<wbr/>request.<wbr/>type</a> ==
15591 REPROCESS.<wbr/> Ignored otherwise</p>
15596 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15597 <!-- end of entry -->
15600 <tr class="entry" id="controls_android.request.metadataMode">
15601 <td class="entry_name
15603 android.<wbr/>request.<wbr/>metadata<wbr/>Mode
15605 <td class="entry_type">
15606 <span class="entry_type_name entry_type_name_enum">byte</span>
15608 <span class="entry_type_visibility"> [system]</span>
15614 <ul class="entry_type_enum">
15616 <span class="entry_type_enum_name">NONE</span>
15617 <span class="entry_type_enum_notes"><p>No metadata should be produced on output,<wbr/> except
15618 for application-bound buffer data.<wbr/> If no
15619 application-bound streams exist,<wbr/> no frame should be
15620 placed in the output frame queue.<wbr/> If such streams
15621 exist,<wbr/> a frame should be placed on the output queue
15622 with null metadata but with the necessary output buffer
15623 information.<wbr/> Timestamp information should still be
15624 included with any output stream buffers</p></span>
15627 <span class="entry_type_enum_name">FULL</span>
15628 <span class="entry_type_enum_notes"><p>All metadata should be produced.<wbr/> Statistics will
15629 only be produced if they are separately
15634 </td> <!-- entry_type -->
15636 <td class="entry_description">
15637 <p>How much metadata to produce on
15641 <td class="entry_units">
15644 <td class="entry_range">
15647 <td class="entry_hal_version">
15651 <td class="entry_tags">
15652 <ul class="entry_tags">
15653 <li><a href="#tag_FUTURE">FUTURE</a></li>
15660 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15661 <!-- end of entry -->
15664 <tr class="entry" id="controls_android.request.outputStreams">
15665 <td class="entry_name
15666 entry_name_deprecated
15668 android.<wbr/>request.<wbr/>output<wbr/>Streams
15670 <td class="entry_type">
15671 <span class="entry_type_name">int32</span>
15672 <span class="entry_type_container">x</span>
15674 <span class="entry_type_array">
15677 <span class="entry_type_visibility"> [system]</span>
15681 <span class="entry_type_deprecated">[deprecated] </span>
15685 </td> <!-- entry_type -->
15687 <td class="entry_description">
15688 <p>Lists which camera output streams image data
15689 from this capture must be sent to</p>
15692 <td class="entry_units">
15693 List of camera stream IDs
15696 <td class="entry_range">
15697 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15698 <p>List must only include streams that have been
15702 <td class="entry_hal_version">
15706 <td class="entry_tags">
15707 <ul class="entry_tags">
15708 <li><a href="#tag_HAL2">HAL2</a></li>
15713 <tr class="entries_header">
15714 <th class="th_details" colspan="6">Details</th>
15716 <tr class="entry_cont">
15717 <td class="entry_details" colspan="6">
15718 <p>If no output streams are listed,<wbr/> then the image
15719 data should simply be discarded.<wbr/> The image data must
15720 still be captured for metadata and statistics production,<wbr/>
15721 and the lens and flash must operate as requested.<wbr/></p>
15726 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15727 <!-- end of entry -->
15730 <tr class="entry" id="controls_android.request.type">
15731 <td class="entry_name
15732 entry_name_deprecated
15734 android.<wbr/>request.<wbr/>type
15736 <td class="entry_type">
15737 <span class="entry_type_name entry_type_name_enum">byte</span>
15739 <span class="entry_type_visibility"> [system]</span>
15743 <span class="entry_type_deprecated">[deprecated] </span>
15746 <ul class="entry_type_enum">
15748 <span class="entry_type_enum_name">CAPTURE</span>
15749 <span class="entry_type_enum_notes"><p>Capture a new image from the imaging hardware,<wbr/>
15750 and process it according to the
15751 settings</p></span>
15754 <span class="entry_type_enum_name">REPROCESS</span>
15755 <span class="entry_type_enum_notes"><p>Process previously captured data; the
15756 <a href="#controls_android.request.inputStreams">android.<wbr/>request.<wbr/>input<wbr/>Streams</a> parameter determines the
15757 source reprocessing stream.<wbr/> TODO: Mark dynamic metadata
15758 needed for reprocessing with [RP]</p></span>
15762 </td> <!-- entry_type -->
15764 <td class="entry_description">
15765 <p>The type of the request; either CAPTURE or
15766 REPROCESS.<wbr/> For legacy HAL3,<wbr/> this tag is redundant.<wbr/></p>
15769 <td class="entry_units">
15772 <td class="entry_range">
15773 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15776 <td class="entry_hal_version">
15780 <td class="entry_tags">
15781 <ul class="entry_tags">
15782 <li><a href="#tag_HAL2">HAL2</a></li>
15789 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15790 <!-- end of entry -->
15794 <!-- end of kind -->
15796 <tr><td colspan="7" class="kind">static</td></tr>
15798 <thead class="entries_header">
15800 <th class="th_name">Property Name</th>
15801 <th class="th_type">Type</th>
15802 <th class="th_description">Description</th>
15803 <th class="th_units">Units</th>
15804 <th class="th_range">Range</th>
15805 <th class="th_hal_version">Initial HIDL HAL version</th>
15806 <th class="th_tags">Tags</th>
15821 <tr class="entry" id="static_android.request.maxNumOutputStreams">
15822 <td class="entry_name
15824 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams
15826 <td class="entry_type">
15827 <span class="entry_type_name">int32</span>
15828 <span class="entry_type_container">x</span>
15830 <span class="entry_type_array">
15833 <span class="entry_type_visibility"> [ndk_public]</span>
15836 <span class="entry_type_hwlevel">[legacy] </span>
15841 </td> <!-- entry_type -->
15843 <td class="entry_description">
15844 <p>The maximum numbers of different types of output streams
15845 that can be configured and used simultaneously by a camera device.<wbr/></p>
15848 <td class="entry_units">
15851 <td class="entry_range">
15852 <p>For processed (and stalling) format streams,<wbr/> >= 1.<wbr/></p>
15853 <p>For Raw format (either stalling or non-stalling) streams,<wbr/> >= 0.<wbr/></p>
15854 <p>For processed (but not stalling) format streams,<wbr/> >= 3
15855 for FULL mode devices (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL</code>);
15856 >= 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>
15859 <td class="entry_hal_version">
15863 <td class="entry_tags">
15864 <ul class="entry_tags">
15865 <li><a href="#tag_BC">BC</a></li>
15870 <tr class="entries_header">
15871 <th class="th_details" colspan="6">Details</th>
15873 <tr class="entry_cont">
15874 <td class="entry_details" colspan="6">
15875 <p>This is a 3 element tuple that contains the max number of output simultaneous
15876 streams for raw sensor,<wbr/> processed (but not stalling),<wbr/> and processed (and stalling)
15877 formats respectively.<wbr/> For example,<wbr/> assuming that JPEG is typically a processed and
15878 stalling stream,<wbr/> if max raw sensor format output stream number is 1,<wbr/> max YUV streams
15879 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>
15880 <p>This lists the upper bound of the number of output streams supported by
15881 the camera device.<wbr/> Using more streams simultaneously may require more hardware and
15882 CPU resources that will consume more power.<wbr/> The image format for an output stream can
15883 be any supported format provided by <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a>.<wbr/>
15884 The formats defined in <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> can be catergorized
15885 into the 3 stream types as below:</p>
15887 <li>Processed (but stalling): any non-RAW format with a stallDurations > 0.<wbr/>
15888 Typically <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">JPEG format</a>.<wbr/></li>
15889 <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
15890 <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW12">RAW12</a>.<wbr/></li>
15891 <li>Processed (but not-stalling): any non-RAW format without a stall duration.<wbr/> Typically
15892 <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">YUV_<wbr/>420_<wbr/>888</a>,<wbr/>
15893 <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>
15899 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15900 <!-- end of entry -->
15903 <tr class="entry" id="static_android.request.maxNumOutputRaw">
15904 <td class="entry_name
15906 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Raw
15908 <td class="entry_type">
15909 <span class="entry_type_name">int32</span>
15911 <span class="entry_type_visibility"> [java_public]</span>
15913 <span class="entry_type_synthetic">[synthetic] </span>
15915 <span class="entry_type_hwlevel">[legacy] </span>
15920 </td> <!-- entry_type -->
15922 <td class="entry_description">
15923 <p>The maximum numbers of different types of output streams
15924 that can be configured and used simultaneously by a camera device
15925 for any <code>RAW</code> formats.<wbr/></p>
15928 <td class="entry_units">
15931 <td class="entry_range">
15935 <td class="entry_hal_version">
15939 <td class="entry_tags">
15943 <tr class="entries_header">
15944 <th class="th_details" colspan="6">Details</th>
15946 <tr class="entry_cont">
15947 <td class="entry_details" colspan="6">
15948 <p>This value contains the max number of output simultaneous
15949 streams from the raw sensor.<wbr/></p>
15950 <p>This lists the upper bound of the number of output streams supported by
15951 the camera device.<wbr/> Using more streams simultaneously may require more hardware and
15952 CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can
15953 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>
15954 <p>In particular,<wbr/> a <code>RAW</code> format is typically one of:</p>
15956 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_SENSOR">RAW_<wbr/>SENSOR</a></li>
15957 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW10">RAW10</a></li>
15958 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW12">RAW12</a></li>
15960 <p>LEGACY mode devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> <code>==</code> LEGACY)
15961 never support raw streams.<wbr/></p>
15966 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15967 <!-- end of entry -->
15970 <tr class="entry" id="static_android.request.maxNumOutputProc">
15971 <td class="entry_name
15973 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Proc
15975 <td class="entry_type">
15976 <span class="entry_type_name">int32</span>
15978 <span class="entry_type_visibility"> [java_public]</span>
15980 <span class="entry_type_synthetic">[synthetic] </span>
15982 <span class="entry_type_hwlevel">[legacy] </span>
15987 </td> <!-- entry_type -->
15989 <td class="entry_description">
15990 <p>The maximum numbers of different types of output streams
15991 that can be configured and used simultaneously by a camera device
15992 for any processed (but not-stalling) formats.<wbr/></p>
15995 <td class="entry_units">
15998 <td class="entry_range">
16000 for FULL mode devices (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL</code>);
16001 >= 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>
16004 <td class="entry_hal_version">
16008 <td class="entry_tags">
16012 <tr class="entries_header">
16013 <th class="th_details" colspan="6">Details</th>
16015 <tr class="entry_cont">
16016 <td class="entry_details" colspan="6">
16017 <p>This value contains the max number of output simultaneous
16018 streams for any processed (but not-stalling) formats.<wbr/></p>
16019 <p>This lists the upper bound of the number of output streams supported by
16020 the camera device.<wbr/> Using more streams simultaneously may require more hardware and
16021 CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can
16022 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>
16023 <p>Processed (but not-stalling) is defined as any non-RAW format without a stall duration.<wbr/>
16026 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">YUV_<wbr/>420_<wbr/>888</a></li>
16027 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#NV21">NV21</a></li>
16028 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YV12">YV12</a></li>
16029 <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>
16031 <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
16032 processed format -- it will return 0 for a non-stalling stream.<wbr/></p>
16033 <p>LEGACY devices will support at least 2 processing/<wbr/>non-stalling streams.<wbr/></p>
16038 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16039 <!-- end of entry -->
16042 <tr class="entry" id="static_android.request.maxNumOutputProcStalling">
16043 <td class="entry_name
16045 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Proc<wbr/>Stalling
16047 <td class="entry_type">
16048 <span class="entry_type_name">int32</span>
16050 <span class="entry_type_visibility"> [java_public]</span>
16052 <span class="entry_type_synthetic">[synthetic] </span>
16054 <span class="entry_type_hwlevel">[legacy] </span>
16059 </td> <!-- entry_type -->
16061 <td class="entry_description">
16062 <p>The maximum numbers of different types of output streams
16063 that can be configured and used simultaneously by a camera device
16064 for any processed (and stalling) formats.<wbr/></p>
16067 <td class="entry_units">
16070 <td class="entry_range">
16074 <td class="entry_hal_version">
16078 <td class="entry_tags">
16082 <tr class="entries_header">
16083 <th class="th_details" colspan="6">Details</th>
16085 <tr class="entry_cont">
16086 <td class="entry_details" colspan="6">
16087 <p>This value contains the max number of output simultaneous
16088 streams for any processed (but not-stalling) formats.<wbr/></p>
16089 <p>This lists the upper bound of the number of output streams supported by
16090 the camera device.<wbr/> Using more streams simultaneously may require more hardware and
16091 CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can
16092 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>
16093 <p>A processed and stalling format is defined as any non-RAW format with a stallDurations
16094 > 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>
16095 <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
16096 processed format -- it will return a non-0 value for a stalling stream.<wbr/></p>
16097 <p>LEGACY devices will support up to 1 processing/<wbr/>stalling stream.<wbr/></p>
16102 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16103 <!-- end of entry -->
16106 <tr class="entry" id="static_android.request.maxNumReprocessStreams">
16107 <td class="entry_name
16108 entry_name_deprecated
16110 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Reprocess<wbr/>Streams
16112 <td class="entry_type">
16113 <span class="entry_type_name">int32</span>
16114 <span class="entry_type_container">x</span>
16116 <span class="entry_type_array">
16119 <span class="entry_type_visibility"> [system]</span>
16123 <span class="entry_type_deprecated">[deprecated] </span>
16127 </td> <!-- entry_type -->
16129 <td class="entry_description">
16130 <p>How many reprocessing streams of any type
16131 can be allocated at the same time.<wbr/></p>
16134 <td class="entry_units">
16137 <td class="entry_range">
16138 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
16142 <td class="entry_hal_version">
16146 <td class="entry_tags">
16147 <ul class="entry_tags">
16148 <li><a href="#tag_HAL2">HAL2</a></li>
16153 <tr class="entries_header">
16154 <th class="th_details" colspan="6">Details</th>
16156 <tr class="entry_cont">
16157 <td class="entry_details" colspan="6">
16158 <p>Only used by HAL2.<wbr/>x.<wbr/></p>
16159 <p>When set to 0,<wbr/> it means no reprocess stream is supported.<wbr/></p>
16164 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16165 <!-- end of entry -->
16168 <tr class="entry" id="static_android.request.maxNumInputStreams">
16169 <td class="entry_name
16171 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Input<wbr/>Streams
16173 <td class="entry_type">
16174 <span class="entry_type_name">int32</span>
16176 <span class="entry_type_visibility"> [java_public]</span>
16179 <span class="entry_type_hwlevel">[full] </span>
16184 </td> <!-- entry_type -->
16186 <td class="entry_description">
16187 <p>The maximum numbers of any type of input streams
16188 that can be configured and used simultaneously by a camera device.<wbr/></p>
16191 <td class="entry_units">
16194 <td class="entry_range">
16195 <p>0 or 1.<wbr/></p>
16198 <td class="entry_hal_version">
16202 <td class="entry_tags">
16203 <ul class="entry_tags">
16204 <li><a href="#tag_REPROC">REPROC</a></li>
16209 <tr class="entries_header">
16210 <th class="th_details" colspan="6">Details</th>
16212 <tr class="entry_cont">
16213 <td class="entry_details" colspan="6">
16214 <p>When set to 0,<wbr/> it means no input stream is supported.<wbr/></p>
16215 <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
16216 input stream,<wbr/> there must be at least one output stream configured to to receive the
16217 reprocessed images.<wbr/></p>
16218 <p>When an input stream and some output streams are used in a reprocessing request,<wbr/>
16219 only the input buffer will be used to produce these output stream buffers,<wbr/> and a
16220 new sensor image will not be captured.<wbr/></p>
16221 <p>For example,<wbr/> for Zero Shutter Lag (ZSL) still capture use case,<wbr/> the input
16222 stream image format will be PRIVATE,<wbr/> the associated output stream image format
16223 should be JPEG.<wbr/></p>
16227 <tr class="entries_header">
16228 <th class="th_details" colspan="6">HAL Implementation Details</th>
16230 <tr class="entry_cont">
16231 <td class="entry_details" colspan="6">
16232 <p>For the reprocessing flow and controls,<wbr/> see
16233 hardware/<wbr/>libhardware/<wbr/>include/<wbr/>hardware/<wbr/>camera3.<wbr/>h Section 10 for more details.<wbr/></p>
16237 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16238 <!-- end of entry -->
16241 <tr class="entry" id="static_android.request.pipelineMaxDepth">
16242 <td class="entry_name
16244 android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth
16246 <td class="entry_type">
16247 <span class="entry_type_name">byte</span>
16249 <span class="entry_type_visibility"> [public]</span>
16252 <span class="entry_type_hwlevel">[legacy] </span>
16257 </td> <!-- entry_type -->
16259 <td class="entry_description">
16260 <p>Specifies the number of maximum pipeline stages a frame
16261 has to go through from when it's exposed to when it's available
16262 to the framework.<wbr/></p>
16265 <td class="entry_units">
16268 <td class="entry_range">
16271 <td class="entry_hal_version">
16275 <td class="entry_tags">
16279 <tr class="entries_header">
16280 <th class="th_details" colspan="6">Details</th>
16282 <tr class="entry_cont">
16283 <td class="entry_details" colspan="6">
16284 <p>A typical minimum value for this is 2 (one stage to expose,<wbr/>
16285 one stage to readout) from the sensor.<wbr/> The ISP then usually adds
16286 its own stages to do custom HW processing.<wbr/> Further stages may be
16287 added by SW processing.<wbr/></p>
16288 <p>Depending on what settings are used (e.<wbr/>g.<wbr/> YUV,<wbr/> JPEG) and what
16289 processing is enabled (e.<wbr/>g.<wbr/> face detection),<wbr/> the actual pipeline
16290 depth (specified by <a href="#dynamic_android.request.pipelineDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Depth</a>) may be less than
16291 the max pipeline depth.<wbr/></p>
16292 <p>A pipeline depth of X stages is equivalent to a pipeline latency of
16293 X frame intervals.<wbr/></p>
16294 <p>This value will normally be 8 or less,<wbr/> however,<wbr/> for high speed capture session,<wbr/>
16295 the max pipeline depth will be up to 8 x size of high speed capture request list.<wbr/></p>
16299 <tr class="entries_header">
16300 <th class="th_details" colspan="6">HAL Implementation Details</th>
16302 <tr class="entry_cont">
16303 <td class="entry_details" colspan="6">
16304 <p>This value should be 4 or less,<wbr/> expect for the high speed recording session,<wbr/> where the
16305 max batch sizes may be larger than 1.<wbr/></p>
16309 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16310 <!-- end of entry -->
16313 <tr class="entry" id="static_android.request.partialResultCount">
16314 <td class="entry_name
16316 android.<wbr/>request.<wbr/>partial<wbr/>Result<wbr/>Count
16318 <td class="entry_type">
16319 <span class="entry_type_name">int32</span>
16321 <span class="entry_type_visibility"> [public]</span>
16328 </td> <!-- entry_type -->
16330 <td class="entry_description">
16331 <p>Defines how many sub-components
16332 a result will be composed of.<wbr/></p>
16335 <td class="entry_units">
16338 <td class="entry_range">
16342 <td class="entry_hal_version">
16346 <td class="entry_tags">
16350 <tr class="entries_header">
16351 <th class="th_details" colspan="6">Details</th>
16353 <tr class="entry_cont">
16354 <td class="entry_details" colspan="6">
16355 <p>In order to combat the pipeline latency,<wbr/> partial results
16356 may be delivered to the application layer from the camera device as
16357 soon as they are available.<wbr/></p>
16358 <p>Optional; defaults to 1.<wbr/> A value of 1 means that partial
16359 results are not supported,<wbr/> and only the final TotalCaptureResult will
16360 be produced by the camera device.<wbr/></p>
16361 <p>A typical use case for this might be: after requesting an
16362 auto-focus (AF) lock the new AF state might be available 50%
16363 of the way through the pipeline.<wbr/> The camera device could
16364 then immediately dispatch this state via a partial result to
16365 the application,<wbr/> and the rest of the metadata via later
16366 partial results.<wbr/></p>
16371 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16372 <!-- end of entry -->
16375 <tr class="entry" id="static_android.request.availableCapabilities">
16376 <td class="entry_name
16378 android.<wbr/>request.<wbr/>available<wbr/>Capabilities
16380 <td class="entry_type">
16381 <span class="entry_type_name entry_type_name_enum">byte</span>
16382 <span class="entry_type_container">x</span>
16384 <span class="entry_type_array">
16387 <span class="entry_type_visibility"> [public]</span>
16390 <span class="entry_type_hwlevel">[legacy] </span>
16394 <ul class="entry_type_enum">
16396 <span class="entry_type_enum_name">BACKWARD_COMPATIBLE</span>
16397 <span class="entry_type_enum_notes"><p>The minimal set of capabilities that every camera
16398 device (regardless of <a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>)
16399 supports.<wbr/></p>
16400 <p>This capability is listed by all normal devices,<wbr/> and
16401 indicates that the camera device has a feature set
16402 that's comparable to the baseline requirements for the
16403 older android.<wbr/>hardware.<wbr/>Camera API.<wbr/></p>
16404 <p>Devices with the DEPTH_<wbr/>OUTPUT capability might not list this
16405 capability,<wbr/> indicating that they support only depth measurement,<wbr/>
16406 not standard color output.<wbr/></p></span>
16409 <span class="entry_type_enum_name">MANUAL_SENSOR</span>
16410 <span class="entry_type_enum_optional">[optional]</span>
16411 <span class="entry_type_enum_notes"><p>The camera device can be manually controlled (3A algorithms such
16412 as auto-exposure,<wbr/> and auto-focus can be bypassed).<wbr/>
16413 The camera device supports basic manual control of the sensor image
16414 acquisition related stages.<wbr/> This means the following controls are
16415 guaranteed to be supported:</p>
16417 <li>Manual frame duration control<ul>
16418 <li><a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a></li>
16419 <li><a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a></li>
16422 <li>Manual exposure control<ul>
16423 <li><a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a></li>
16424 <li><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></li>
16427 <li>Manual sensitivity control<ul>
16428 <li><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></li>
16429 <li><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></li>
16432 <li>Manual lens control (if the lens is adjustable)<ul>
16433 <li>android.<wbr/>lens.<wbr/>*</li>
16436 <li>Manual flash control (if a flash unit is present)<ul>
16437 <li>android.<wbr/>flash.<wbr/>*</li>
16440 <li>Manual black level locking<ul>
16441 <li><a href="#controls_android.blackLevel.lock">android.<wbr/>black<wbr/>Level.<wbr/>lock</a></li>
16444 <li>Auto exposure lock<ul>
16445 <li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li>
16449 <p>If any of the above 3A algorithms are enabled,<wbr/> then the camera
16450 device will accurately report the values applied by 3A in the
16452 <p>A given camera device may also support additional manual sensor controls,<wbr/>
16453 but this capability only covers the above list of controls.<wbr/></p>
16454 <p>If this is supported,<wbr/> <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> will
16455 additionally return a min frame duration that is greater than
16456 zero for each supported size-format combination.<wbr/></p></span>
16459 <span class="entry_type_enum_name">MANUAL_POST_PROCESSING</span>
16460 <span class="entry_type_enum_optional">[optional]</span>
16461 <span class="entry_type_enum_notes"><p>The camera device post-processing stages can be manually controlled.<wbr/>
16462 The camera device supports basic manual control of the image post-processing
16463 stages.<wbr/> This means the following controls are guaranteed to be supported:</p>
16466 <p>Manual tonemap control</p>
16468 <li><a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a></li>
16469 <li><a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a></li>
16470 <li><a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></li>
16471 <li><a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a></li>
16472 <li><a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a></li>
16476 <p>Manual white balance control</p>
16478 <li><a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a></li>
16479 <li><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a></li>
16482 <li>Manual lens shading map control<ul>
16483 <li><a href="#controls_android.shading.mode">android.<wbr/>shading.<wbr/>mode</a></li>
16484 <li><a href="#controls_android.statistics.lensShadingMapMode">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode</a></li>
16485 <li><a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a></li>
16486 <li><a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a></li>
16489 <li>Manual aberration correction control (if aberration correction is supported)<ul>
16490 <li><a href="#controls_android.colorCorrection.aberrationMode">android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode</a></li>
16491 <li><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></li>
16494 <li>Auto white balance lock<ul>
16495 <li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li>
16499 <p>If auto white balance is enabled,<wbr/> then the camera device
16500 will accurately report the values applied by AWB in the result.<wbr/></p>
16501 <p>A given camera device may also support additional post-processing
16502 controls,<wbr/> but this capability only covers the above list of controls.<wbr/></p></span>
16505 <span class="entry_type_enum_name">RAW</span>
16506 <span class="entry_type_enum_optional">[optional]</span>
16507 <span class="entry_type_enum_notes"><p>The camera device supports outputting RAW buffers and
16508 metadata for interpreting them.<wbr/></p>
16509 <p>Devices supporting the RAW capability allow both for
16510 saving DNG files,<wbr/> and for direct application processing of
16511 raw sensor images.<wbr/></p>
16513 <li>RAW_<wbr/>SENSOR is supported as an output format.<wbr/></li>
16514 <li>The maximum available resolution for RAW_<wbr/>SENSOR streams
16515 will match either the value in
16516 <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a> or
16517 <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>
16518 <li>All DNG-related optional metadata entries are provided
16519 by the camera device.<wbr/></li>
16523 <span class="entry_type_enum_name">PRIVATE_REPROCESSING</span>
16524 <span class="entry_type_enum_optional">[optional]</span>
16525 <span class="entry_type_enum_notes"><p>The camera device supports the Zero Shutter Lag reprocessing use case.<wbr/></p>
16527 <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>
16528 <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/>
16529 that is,<wbr/> <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> is included in the lists of
16530 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>
16531 <li><a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getValidOutputFormatsForInput">StreamConfigurationMap#getValidOutputFormatsForInput</a>
16532 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>
16533 <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>
16534 <li>Using <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> does not cause a frame rate drop
16535 relative to the sensor's maximum capture rate (at that resolution).<wbr/></li>
16536 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> will be reprocessable into both
16537 <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a> and
16538 <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a> formats.<wbr/></li>
16539 <li>The maximum available resolution for PRIVATE streams
16540 (both input/<wbr/>output) will match the maximum available
16541 resolution of JPEG streams.<wbr/></li>
16542 <li>Static metadata <a href="#static_android.reprocess.maxCaptureStall">android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall</a>.<wbr/></li>
16543 <li>Only below controls are effective for reprocessing requests and
16544 will be present in capture results,<wbr/> other controls in reprocess
16545 requests will be ignored by the camera device.<wbr/><ul>
16546 <li>android.<wbr/>jpeg.<wbr/>*</li>
16547 <li><a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></li>
16548 <li><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></li>
16551 <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a> and
16552 <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>
16556 <span class="entry_type_enum_name">READ_SENSOR_SETTINGS</span>
16557 <span class="entry_type_enum_optional">[optional]</span>
16558 <span class="entry_type_enum_notes"><p>The camera device supports accurately reporting the sensor settings for many of
16559 the sensor controls while the built-in 3A algorithm is running.<wbr/> This allows
16560 reporting of sensor settings even when these settings cannot be manually changed.<wbr/></p>
16561 <p>The values reported for the following controls are guaranteed to be available
16562 in the CaptureResult,<wbr/> including when 3A is enabled:</p>
16564 <li>Exposure control<ul>
16565 <li><a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a></li>
16568 <li>Sensitivity control<ul>
16569 <li><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></li>
16572 <li>Lens controls (if the lens is adjustable)<ul>
16573 <li><a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a></li>
16574 <li><a href="#controls_android.lens.aperture">android.<wbr/>lens.<wbr/>aperture</a></li>
16578 <p>This capability is a subset of the MANUAL_<wbr/>SENSOR control capability,<wbr/> and will
16579 always be included if the MANUAL_<wbr/>SENSOR capability is available.<wbr/></p></span>
16582 <span class="entry_type_enum_name">BURST_CAPTURE</span>
16583 <span class="entry_type_enum_optional">[optional]</span>
16584 <span class="entry_type_enum_notes"><p>The camera device supports capturing high-resolution images at >= 20 frames per
16585 second,<wbr/> in at least the uncompressed YUV format,<wbr/> when post-processing settings are set
16586 to FAST.<wbr/> Additionally,<wbr/> maximum-resolution images can be captured at >= 10 frames
16587 per second.<wbr/> Here,<wbr/> 'high resolution' means at least 8 megapixels,<wbr/> or the maximum
16588 resolution of the device,<wbr/> whichever is smaller.<wbr/></p></span>
16591 <span class="entry_type_enum_name">YUV_REPROCESSING</span>
16592 <span class="entry_type_enum_optional">[optional]</span>
16593 <span class="entry_type_enum_notes"><p>The camera device supports the YUV_<wbr/>420_<wbr/>888 reprocessing use case,<wbr/> similar as
16594 PRIVATE_<wbr/>REPROCESSING,<wbr/> This capability requires the camera device to support the
16597 <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>
16598 <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
16599 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>
16600 <li><a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getValidOutputFormatsForInput">StreamConfigurationMap#getValidOutputFormatsForInput</a>
16601 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>
16602 <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>
16603 <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
16604 drop relative to the sensor's maximum capture rate (at that resolution).<wbr/></li>
16605 <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
16606 <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>
16607 <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
16608 maximum available resolution of <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a> streams.<wbr/></li>
16609 <li>Static metadata <a href="#static_android.reprocess.maxCaptureStall">android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall</a>.<wbr/></li>
16610 <li>Only the below controls are effective for reprocessing requests and will be present
16611 in capture results.<wbr/> The reprocess requests are from the original capture results
16612 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
16613 reprocess requests will be ignored by the camera device.<wbr/><ul>
16614 <li>android.<wbr/>jpeg.<wbr/>*</li>
16615 <li><a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></li>
16616 <li><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></li>
16617 <li><a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a></li>
16620 <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a> and
16621 <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>
16625 <span class="entry_type_enum_name">DEPTH_OUTPUT</span>
16626 <span class="entry_type_enum_optional">[optional]</span>
16627 <span class="entry_type_enum_notes"><p>The camera device can produce depth measurements from its field of view.<wbr/></p>
16628 <p>This capability requires the camera device to support the following:</p>
16630 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#DEPTH16">ImageFormat#DEPTH16</a> is supported as
16631 an output format.<wbr/></li>
16632 <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
16633 optionally supported as an output format.<wbr/></li>
16634 <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
16635 list the following calibration metadata entries in both <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html">CameraCharacteristics</a>
16636 and <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">CaptureResult</a>:<ul>
16637 <li><a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a></li>
16638 <li><a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a></li>
16639 <li><a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a></li>
16640 <li><a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a></li>
16643 <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>
16644 <li>A LIMITED camera with only the DEPTH_<wbr/>OUTPUT capability does not have to support
16645 normal YUV_<wbr/>420_<wbr/>888,<wbr/> JPEG,<wbr/> and PRIV-format outputs.<wbr/> It only has to support the DEPTH16
16648 <p>Generally,<wbr/> depth output operates at a slower frame rate than standard color capture,<wbr/>
16649 so the DEPTH16 and DEPTH_<wbr/>POINT_<wbr/>CLOUD formats will commonly have a stall duration that
16650 should be accounted for (see <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a>).<wbr/>
16651 On a device that supports both depth and color-based output,<wbr/> to enable smooth preview,<wbr/>
16652 using a repeating burst is recommended,<wbr/> where a depth-output target is only included
16653 once every N frames,<wbr/> where N is the ratio between preview output rate and depth output
16654 rate,<wbr/> including depth stall time.<wbr/></p></span>
16657 <span class="entry_type_enum_name">CONSTRAINED_HIGH_SPEED_VIDEO</span>
16658 <span class="entry_type_enum_optional">[optional]</span>
16659 <span class="entry_type_enum_notes"><p>The device supports constrained high speed video recording (frame rate >=120fps) use
16660 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
16661 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>
16662 <p>A camera device can still support high speed video streaming by advertising the high
16663 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
16664 normal capture request per frame control and synchronization requirements will apply
16665 to the high speed fps ranges,<wbr/> the same as all other fps ranges.<wbr/> This capability
16666 describes the capability of a specialized operating mode with many limitations (see
16667 below),<wbr/> which is only targeted at high speed video recording.<wbr/></p>
16668 <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/>
16669 To get desired output frame rates,<wbr/> the application is only allowed to select video
16670 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
16671 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>
16672 <p>In this capability,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to
16673 ON,<wbr/> AUTO,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode
16674 controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture
16675 and post-processing parameters is possible.<wbr/> All other controls operate the
16676 same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other
16677 android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p>
16679 <li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li>
16680 <li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li>
16681 <li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li>
16682 <li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li>
16683 <li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li>
16684 <li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li>
16685 <li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li>
16686 <li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li>
16687 <li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li>
16688 <li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li>
16690 <p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p>
16692 <li><a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> (TORCH mode only,<wbr/> automatic flash for still capture will not
16693 work since aeMode is ON)</li>
16694 <li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li>
16695 <li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li>
16696 <li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> (if it is supported)</li>
16698 <p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may
16699 be lower than what camera can output,<wbr/> depending on the destination Surfaces for
16700 the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/>
16701 the application need check if the video encoder is capable of supporting the
16702 high frame rate for a given video size,<wbr/> or it will end up with lower recording
16703 frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the actual preview frame
16704 rate will be bounded by the screen refresh rate.<wbr/></p>
16705 <p>The camera device will only support up to 2 high speed simultaneous output surfaces
16706 (preview and recording surfaces) in this mode.<wbr/> Above controls will be effective only
16707 if all of below conditions are true:</p>
16709 <li>The application creates a camera capture session with no more than 2 surfaces via
16710 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>.<wbr/> The
16711 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
16712 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>
16713 <li>The stream sizes are selected from the sizes reported by
16714 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighSpeedVideoSizes">StreamConfigurationMap#getHighSpeedVideoSizes</a>.<wbr/></li>
16715 <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>
16717 <p>When above conditions are NOT satistied,<wbr/>
16718 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>
16719 will fail.<wbr/></p>
16720 <p>Switching to a FPS range that has different maximum FPS may trigger some camera device
16721 reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that
16722 the application avoids unnecessary maximum target FPS changes as much as possible
16723 during high speed streaming.<wbr/></p></span>
16727 </td> <!-- entry_type -->
16729 <td class="entry_description">
16730 <p>List of capabilities that this camera device
16731 advertises as fully supporting.<wbr/></p>
16734 <td class="entry_units">
16737 <td class="entry_range">
16740 <td class="entry_hal_version">
16744 <td class="entry_tags">
16748 <tr class="entries_header">
16749 <th class="th_details" colspan="6">Details</th>
16751 <tr class="entry_cont">
16752 <td class="entry_details" colspan="6">
16753 <p>A capability is a contract that the camera device makes in order
16754 to be able to satisfy one or more use cases.<wbr/></p>
16755 <p>Listing a capability guarantees that the whole set of features
16756 required to support a common use will all be available.<wbr/></p>
16757 <p>Using a subset of the functionality provided by an unsupported
16758 capability may be possible on a specific camera device implementation;
16759 to do this query each of <a href="#static_android.request.availableRequestKeys">android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys</a>,<wbr/>
16760 <a href="#static_android.request.availableResultKeys">android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys</a>,<wbr/>
16761 <a href="#static_android.request.availableCharacteristicsKeys">android.<wbr/>request.<wbr/>available<wbr/>Characteristics<wbr/>Keys</a>.<wbr/></p>
16762 <p>The following capabilities are guaranteed to be available on
16763 <a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> <code>==</code> FULL devices:</p>
16765 <li>MANUAL_<wbr/>SENSOR</li>
16766 <li>MANUAL_<wbr/>POST_<wbr/>PROCESSING</li>
16768 <p>Other capabilities may be available on either FULL or LIMITED
16769 devices,<wbr/> but the application should query this key to be sure.<wbr/></p>
16773 <tr class="entries_header">
16774 <th class="th_details" colspan="6">HAL Implementation Details</th>
16776 <tr class="entry_cont">
16777 <td class="entry_details" colspan="6">
16778 <p>Additional constraint details per-capability will be available
16779 in the Compatibility Test Suite.<wbr/></p>
16780 <p>Minimum baseline requirements required for the
16781 BACKWARD_<wbr/>COMPATIBLE capability are not explicitly listed.<wbr/>
16782 Instead refer to "BC" tags and the camera CTS tests in the
16783 android.<wbr/>hardware.<wbr/>camera2.<wbr/>cts package.<wbr/></p>
16784 <p>Listed controls that can be either request or result (e.<wbr/>g.<wbr/>
16785 <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>) must be available both in the
16786 request and the result in order to be considered to be
16787 capability-compliant.<wbr/></p>
16788 <p>For example,<wbr/> if the HAL claims to support MANUAL control,<wbr/>
16789 then exposure time must be configurable via the request <em>and</em>
16790 the actual exposure applied must be available via
16791 the result.<wbr/></p>
16792 <p>If MANUAL_<wbr/>SENSOR is omitted,<wbr/> the HAL may choose to omit the
16793 <a href="#static_android.scaler.availableMinFrameDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Min<wbr/>Frame<wbr/>Durations</a> static property entirely.<wbr/></p>
16794 <p>For PRIVATE_<wbr/>REPROCESSING and YUV_<wbr/>REPROCESSING capabilities,<wbr/> see
16795 hardware/<wbr/>libhardware/<wbr/>include/<wbr/>hardware/<wbr/>camera3.<wbr/>h Section 10 for more information.<wbr/></p>
16796 <p>Devices that support the MANUAL_<wbr/>SENSOR capability must support the
16797 CAMERA3_<wbr/>TEMPLATE_<wbr/>MANUAL template defined in camera3.<wbr/>h.<wbr/></p>
16798 <p>Devices that support the PRIVATE_<wbr/>REPROCESSING capability or the
16799 YUV_<wbr/>REPROCESSING capability must support the
16800 CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template defined in camera3.<wbr/>h.<wbr/></p>
16801 <p>For DEPTH_<wbr/>OUTPUT,<wbr/> the depth-format keys
16802 <a href="#static_android.depth.availableDepthStreamConfigurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stream<wbr/>Configurations</a>,<wbr/>
16803 <a href="#static_android.depth.availableDepthMinFrameDurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Min<wbr/>Frame<wbr/>Durations</a>,<wbr/>
16804 <a href="#static_android.depth.availableDepthStallDurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stall<wbr/>Durations</a> must be available,<wbr/> in
16805 addition to the other keys explicitly mentioned in the DEPTH_<wbr/>OUTPUT
16806 enum notes.<wbr/> The entry <a href="#static_android.depth.maxDepthSamples">android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples</a> must be available
16807 if the DEPTH_<wbr/>POINT_<wbr/>CLOUD format is supported (HAL pixel format BLOB,<wbr/> dataspace
16812 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16813 <!-- end of entry -->
16816 <tr class="entry" id="static_android.request.availableRequestKeys">
16817 <td class="entry_name
16819 android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys
16821 <td class="entry_type">
16822 <span class="entry_type_name">int32</span>
16823 <span class="entry_type_container">x</span>
16825 <span class="entry_type_array">
16828 <span class="entry_type_visibility"> [ndk_public]</span>
16831 <span class="entry_type_hwlevel">[legacy] </span>
16836 </td> <!-- entry_type -->
16838 <td class="entry_description">
16839 <p>A list of all keys that the camera device has available
16840 to use with <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureRequest.html">CaptureRequest</a>.<wbr/></p>
16843 <td class="entry_units">
16846 <td class="entry_range">
16849 <td class="entry_hal_version">
16853 <td class="entry_tags">
16857 <tr class="entries_header">
16858 <th class="th_details" colspan="6">Details</th>
16860 <tr class="entry_cont">
16861 <td class="entry_details" colspan="6">
16862 <p>Attempting to set a key into a CaptureRequest that is not
16863 listed here will result in an invalid request and will be rejected
16864 by the camera device.<wbr/></p>
16865 <p>This field can be used to query the feature set of a camera device
16866 at a more granular level than capabilities.<wbr/> This is especially
16867 important for optional keys that are not listed under any capability
16868 in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
16872 <tr class="entries_header">
16873 <th class="th_details" colspan="6">HAL Implementation Details</th>
16875 <tr class="entry_cont">
16876 <td class="entry_details" colspan="6">
16877 <p>Vendor tags can be listed here.<wbr/> Vendor tag metadata should also
16878 use the extensions C api (refer to camera3.<wbr/>h for more details).<wbr/></p>
16879 <p>Setting/<wbr/>getting vendor tags will be checked against the metadata
16880 vendor extensions API and not against this field.<wbr/></p>
16881 <p>The HAL must not consume any request tags that are not listed either
16882 here or in the vendor tag list.<wbr/></p>
16883 <p>The public camera2 API will always make the vendor tags visible
16885 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a>.<wbr/></p>
16889 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16890 <!-- end of entry -->
16893 <tr class="entry" id="static_android.request.availableResultKeys">
16894 <td class="entry_name
16896 android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys
16898 <td class="entry_type">
16899 <span class="entry_type_name">int32</span>
16900 <span class="entry_type_container">x</span>
16902 <span class="entry_type_array">
16905 <span class="entry_type_visibility"> [ndk_public]</span>
16908 <span class="entry_type_hwlevel">[legacy] </span>
16913 </td> <!-- entry_type -->
16915 <td class="entry_description">
16916 <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>
16919 <td class="entry_units">
16922 <td class="entry_range">
16925 <td class="entry_hal_version">
16929 <td class="entry_tags">
16933 <tr class="entries_header">
16934 <th class="th_details" colspan="6">Details</th>
16936 <tr class="entry_cont">
16937 <td class="entry_details" colspan="6">
16938 <p>Attempting to get a key from a CaptureResult that is not
16939 listed here will always return a <code>null</code> value.<wbr/> Getting a key from
16940 a CaptureResult that is listed here will generally never return a <code>null</code>
16942 <p>The following keys may return <code>null</code> unless they are enabled:</p>
16944 <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>
16946 <p>(Those sometimes-null keys will nevertheless be listed here
16947 if they are available.<wbr/>)</p>
16948 <p>This field can be used to query the feature set of a camera device
16949 at a more granular level than capabilities.<wbr/> This is especially
16950 important for optional keys that are not listed under any capability
16951 in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
16955 <tr class="entries_header">
16956 <th class="th_details" colspan="6">HAL Implementation Details</th>
16958 <tr class="entry_cont">
16959 <td class="entry_details" colspan="6">
16960 <p>Tags listed here must always have an entry in the result metadata,<wbr/>
16961 even if that size is 0 elements.<wbr/> Only array-type tags (e.<wbr/>g.<wbr/> lists,<wbr/>
16962 matrices,<wbr/> strings) are allowed to have 0 elements.<wbr/></p>
16963 <p>Vendor tags can be listed here.<wbr/> Vendor tag metadata should also
16964 use the extensions C api (refer to camera3.<wbr/>h for more details).<wbr/></p>
16965 <p>Setting/<wbr/>getting vendor tags will be checked against the metadata
16966 vendor extensions API and not against this field.<wbr/></p>
16967 <p>The HAL must not produce any result tags that are not listed either
16968 here or in the vendor tag list.<wbr/></p>
16969 <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>
16973 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16974 <!-- end of entry -->
16977 <tr class="entry" id="static_android.request.availableCharacteristicsKeys">
16978 <td class="entry_name
16980 android.<wbr/>request.<wbr/>available<wbr/>Characteristics<wbr/>Keys
16982 <td class="entry_type">
16983 <span class="entry_type_name">int32</span>
16984 <span class="entry_type_container">x</span>
16986 <span class="entry_type_array">
16989 <span class="entry_type_visibility"> [ndk_public]</span>
16992 <span class="entry_type_hwlevel">[legacy] </span>
16997 </td> <!-- entry_type -->
16999 <td class="entry_description">
17000 <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>
17003 <td class="entry_units">
17006 <td class="entry_range">
17009 <td class="entry_hal_version">
17013 <td class="entry_tags">
17017 <tr class="entries_header">
17018 <th class="th_details" colspan="6">Details</th>
17020 <tr class="entry_cont">
17021 <td class="entry_details" colspan="6">
17022 <p>This entry follows the same rules as
17023 <a href="#static_android.request.availableResultKeys">android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys</a> (except that it applies for
17024 CameraCharacteristics instead of CaptureResult).<wbr/> See above for more
17029 <tr class="entries_header">
17030 <th class="th_details" colspan="6">HAL Implementation Details</th>
17032 <tr class="entry_cont">
17033 <td class="entry_details" colspan="6">
17034 <p>Keys listed here must always have an entry in the static info metadata,<wbr/>
17035 even if that size is 0 elements.<wbr/> Only array-type tags (e.<wbr/>g.<wbr/> lists,<wbr/>
17036 matrices,<wbr/> strings) are allowed to have 0 elements.<wbr/></p>
17037 <p>Vendor tags can listed here.<wbr/> Vendor tag metadata should also use
17038 the extensions C api (refer to camera3.<wbr/>h for more details).<wbr/></p>
17039 <p>Setting/<wbr/>getting vendor tags will be checked against the metadata
17040 vendor extensions API and not against this field.<wbr/></p>
17041 <p>The HAL must not have any tags in its static info that are not listed
17042 either here or in the vendor tag list.<wbr/></p>
17043 <p>The public camera2 API will always make the vendor tags visible
17044 via <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getKeys">CameraCharacteristics#getKeys</a>.<wbr/></p>
17048 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17049 <!-- end of entry -->
17053 <!-- end of kind -->
17055 <tr><td colspan="7" class="kind">dynamic</td></tr>
17057 <thead class="entries_header">
17059 <th class="th_name">Property Name</th>
17060 <th class="th_type">Type</th>
17061 <th class="th_description">Description</th>
17062 <th class="th_units">Units</th>
17063 <th class="th_range">Range</th>
17064 <th class="th_hal_version">Initial HIDL HAL version</th>
17065 <th class="th_tags">Tags</th>
17080 <tr class="entry" id="dynamic_android.request.frameCount">
17081 <td class="entry_name
17082 entry_name_deprecated
17084 android.<wbr/>request.<wbr/>frame<wbr/>Count
17086 <td class="entry_type">
17087 <span class="entry_type_name">int32</span>
17089 <span class="entry_type_visibility"> [hidden]</span>
17093 <span class="entry_type_deprecated">[deprecated] </span>
17097 </td> <!-- entry_type -->
17099 <td class="entry_description">
17100 <p>A frame counter set by the framework.<wbr/> This value monotonically
17101 increases with every new result (that is,<wbr/> each new result has a unique
17102 frameCount value).<wbr/></p>
17105 <td class="entry_units">
17109 <td class="entry_range">
17110 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
17114 <td class="entry_hal_version">
17118 <td class="entry_tags">
17122 <tr class="entries_header">
17123 <th class="th_details" colspan="6">Details</th>
17125 <tr class="entry_cont">
17126 <td class="entry_details" colspan="6">
17127 <p>Reset on release()</p>
17132 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17133 <!-- end of entry -->
17136 <tr class="entry" id="dynamic_android.request.id">
17137 <td class="entry_name
17139 android.<wbr/>request.<wbr/>id
17141 <td class="entry_type">
17142 <span class="entry_type_name">int32</span>
17144 <span class="entry_type_visibility"> [hidden]</span>
17151 </td> <!-- entry_type -->
17153 <td class="entry_description">
17154 <p>An application-specified ID for the current
17155 request.<wbr/> Must be maintained unchanged in output
17159 <td class="entry_units">
17160 arbitrary integer assigned by application
17163 <td class="entry_range">
17167 <td class="entry_hal_version">
17171 <td class="entry_tags">
17172 <ul class="entry_tags">
17173 <li><a href="#tag_V1">V1</a></li>
17180 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17181 <!-- end of entry -->
17184 <tr class="entry" id="dynamic_android.request.metadataMode">
17185 <td class="entry_name
17187 android.<wbr/>request.<wbr/>metadata<wbr/>Mode
17189 <td class="entry_type">
17190 <span class="entry_type_name entry_type_name_enum">byte</span>
17192 <span class="entry_type_visibility"> [system]</span>
17198 <ul class="entry_type_enum">
17200 <span class="entry_type_enum_name">NONE</span>
17201 <span class="entry_type_enum_notes"><p>No metadata should be produced on output,<wbr/> except
17202 for application-bound buffer data.<wbr/> If no
17203 application-bound streams exist,<wbr/> no frame should be
17204 placed in the output frame queue.<wbr/> If such streams
17205 exist,<wbr/> a frame should be placed on the output queue
17206 with null metadata but with the necessary output buffer
17207 information.<wbr/> Timestamp information should still be
17208 included with any output stream buffers</p></span>
17211 <span class="entry_type_enum_name">FULL</span>
17212 <span class="entry_type_enum_notes"><p>All metadata should be produced.<wbr/> Statistics will
17213 only be produced if they are separately
17218 </td> <!-- entry_type -->
17220 <td class="entry_description">
17221 <p>How much metadata to produce on
17225 <td class="entry_units">
17228 <td class="entry_range">
17231 <td class="entry_hal_version">
17235 <td class="entry_tags">
17236 <ul class="entry_tags">
17237 <li><a href="#tag_FUTURE">FUTURE</a></li>
17244 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17245 <!-- end of entry -->
17248 <tr class="entry" id="dynamic_android.request.outputStreams">
17249 <td class="entry_name
17250 entry_name_deprecated
17252 android.<wbr/>request.<wbr/>output<wbr/>Streams
17254 <td class="entry_type">
17255 <span class="entry_type_name">int32</span>
17256 <span class="entry_type_container">x</span>
17258 <span class="entry_type_array">
17261 <span class="entry_type_visibility"> [system]</span>
17265 <span class="entry_type_deprecated">[deprecated] </span>
17269 </td> <!-- entry_type -->
17271 <td class="entry_description">
17272 <p>Lists which camera output streams image data
17273 from this capture must be sent to</p>
17276 <td class="entry_units">
17277 List of camera stream IDs
17280 <td class="entry_range">
17281 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
17282 <p>List must only include streams that have been
17286 <td class="entry_hal_version">
17290 <td class="entry_tags">
17291 <ul class="entry_tags">
17292 <li><a href="#tag_HAL2">HAL2</a></li>
17297 <tr class="entries_header">
17298 <th class="th_details" colspan="6">Details</th>
17300 <tr class="entry_cont">
17301 <td class="entry_details" colspan="6">
17302 <p>If no output streams are listed,<wbr/> then the image
17303 data should simply be discarded.<wbr/> The image data must
17304 still be captured for metadata and statistics production,<wbr/>
17305 and the lens and flash must operate as requested.<wbr/></p>
17310 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17311 <!-- end of entry -->
17314 <tr class="entry" id="dynamic_android.request.pipelineDepth">
17315 <td class="entry_name
17317 android.<wbr/>request.<wbr/>pipeline<wbr/>Depth
17319 <td class="entry_type">
17320 <span class="entry_type_name">byte</span>
17322 <span class="entry_type_visibility"> [public]</span>
17325 <span class="entry_type_hwlevel">[legacy] </span>
17330 </td> <!-- entry_type -->
17332 <td class="entry_description">
17333 <p>Specifies the number of pipeline stages the frame went
17334 through from when it was exposed to when the final completed result
17335 was available to the framework.<wbr/></p>
17338 <td class="entry_units">
17341 <td class="entry_range">
17342 <p><= <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a></p>
17345 <td class="entry_hal_version">
17349 <td class="entry_tags">
17353 <tr class="entries_header">
17354 <th class="th_details" colspan="6">Details</th>
17356 <tr class="entry_cont">
17357 <td class="entry_details" colspan="6">
17358 <p>Depending on what settings are used in the request,<wbr/> and
17359 what streams are configured,<wbr/> the data may undergo less processing,<wbr/>
17360 and some pipeline stages skipped.<wbr/></p>
17361 <p>See <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a> for more details.<wbr/></p>
17365 <tr class="entries_header">
17366 <th class="th_details" colspan="6">HAL Implementation Details</th>
17368 <tr class="entry_cont">
17369 <td class="entry_details" colspan="6">
17370 <p>This value must always represent the accurate count of how many
17371 pipeline stages were actually used.<wbr/></p>
17375 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17376 <!-- end of entry -->
17380 <!-- end of kind -->
17383 <!-- end of section -->
17384 <tr><td colspan="7" id="section_scaler" class="section">scaler</td></tr>
17387 <tr><td colspan="7" class="kind">controls</td></tr>
17389 <thead class="entries_header">
17391 <th class="th_name">Property Name</th>
17392 <th class="th_type">Type</th>
17393 <th class="th_description">Description</th>
17394 <th class="th_units">Units</th>
17395 <th class="th_range">Range</th>
17396 <th class="th_hal_version">Initial HIDL HAL version</th>
17397 <th class="th_tags">Tags</th>
17412 <tr class="entry" id="controls_android.scaler.cropRegion">
17413 <td class="entry_name
17415 android.<wbr/>scaler.<wbr/>crop<wbr/>Region
17417 <td class="entry_type">
17418 <span class="entry_type_name">int32</span>
17419 <span class="entry_type_container">x</span>
17421 <span class="entry_type_array">
17424 <span class="entry_type_visibility"> [public as rectangle]</span>
17427 <span class="entry_type_hwlevel">[legacy] </span>
17432 </td> <!-- entry_type -->
17434 <td class="entry_description">
17435 <p>The desired region of the sensor to read out for this capture.<wbr/></p>
17438 <td class="entry_units">
17439 Pixel coordinates relative to
17440 android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
17443 <td class="entry_range">
17446 <td class="entry_hal_version">
17450 <td class="entry_tags">
17451 <ul class="entry_tags">
17452 <li><a href="#tag_BC">BC</a></li>
17457 <tr class="entries_header">
17458 <th class="th_details" colspan="6">Details</th>
17460 <tr class="entry_cont">
17461 <td class="entry_details" colspan="6">
17462 <p>This control can be used to implement digital zoom.<wbr/></p>
17463 <p>The crop region coordinate system is based off
17464 <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
17465 top-left corner of the sensor active array.<wbr/></p>
17466 <p>Output streams use this rectangle to produce their output,<wbr/>
17467 cropping to a smaller region if necessary to maintain the
17468 stream's aspect ratio,<wbr/> then scaling the sensor input to
17469 match the output's configured resolution.<wbr/></p>
17470 <p>The crop region is applied after the RAW to other color
17471 space (e.<wbr/>g.<wbr/> YUV) conversion.<wbr/> Since raw streams
17472 (e.<wbr/>g.<wbr/> RAW16) don't have the conversion stage,<wbr/> they are not
17473 croppable.<wbr/> The crop region will be ignored by raw streams.<wbr/></p>
17474 <p>For non-raw streams,<wbr/> any additional per-stream cropping will
17475 be done to maximize the final pixel area of the stream.<wbr/></p>
17476 <p>For example,<wbr/> if the crop region is set to a 4:3 aspect
17477 ratio,<wbr/> then 4:3 streams will use the exact crop
17478 region.<wbr/> 16:9 streams will further crop vertically
17479 (letterbox).<wbr/></p>
17480 <p>Conversely,<wbr/> if the crop region is set to a 16:9,<wbr/> then 4:3
17481 outputs will crop horizontally (pillarbox),<wbr/> and 16:9
17482 streams will match exactly.<wbr/> These additional crops will
17483 be centered within the crop region.<wbr/></p>
17484 <p>The width and height of the crop region cannot
17485 be set to be smaller than
17486 <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
17487 <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>
17488 <p>The camera device may adjust the crop region to account
17489 for rounding and other hardware requirements; the final
17490 crop region used will be included in the output capture
17495 <tr class="entries_header">
17496 <th class="th_details" colspan="6">HAL Implementation Details</th>
17498 <tr class="entry_cont">
17499 <td class="entry_details" colspan="6">
17500 <p>The output streams must maintain square pixels at all
17501 times,<wbr/> no matter what the relative aspect ratios of the
17502 crop region and the stream are.<wbr/> Negative values for
17503 corner are allowed for raw output if full pixel array is
17504 larger than active pixel array.<wbr/> Width and height may be
17505 rounded to nearest larger supportable width,<wbr/> especially
17506 for raw output,<wbr/> where only a few fixed scales may be
17507 possible.<wbr/></p>
17508 <p>For a set of output streams configured,<wbr/> if the sensor output is cropped to a smaller
17509 size than active array size,<wbr/> the HAL need follow below cropping rules:</p>
17512 <p>The HAL need handle the cropRegion as if the sensor crop size is the effective active
17513 array size.<wbr/>More specifically,<wbr/> the HAL must transform the request cropRegion from
17514 <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>
17516 <li>Translate the requested cropRegion w.<wbr/>r.<wbr/>t.,<wbr/> the left top corner of the sensor
17517 cropped pixel area by (tx,<wbr/> ty),<wbr/>
17518 where <code>tx = sensorCrop.<wbr/>top * (sensorCrop.<wbr/>height /<wbr/> activeArraySize.<wbr/>height)</code>
17519 and <code>tx = sensorCrop.<wbr/>left * (sensorCrop.<wbr/>width /<wbr/> activeArraySize.<wbr/>width)</code>.<wbr/> The
17520 (sensorCrop.<wbr/>top,<wbr/> sensorCrop.<wbr/>left) is the coordinate based off the
17521 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></li>
17522 <li>Scale the width and height of requested cropRegion with scaling factor of
17523 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
17524 respectively.<wbr/>
17525 Once this new cropRegion is calculated,<wbr/> the HAL must use this region to crop the image
17526 with regard to the sensor crop size (effective active array size).<wbr/> The HAL still need
17527 follow the general cropping rule for this new cropRegion and effective active
17528 array size.<wbr/></li>
17532 <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/>
17533 The HAL need convert the new cropRegion generated above w.<wbr/>r.<wbr/>t.,<wbr/> full active array size.<wbr/>
17534 The reported cropRegion may be slightly different with the requested cropRegion since
17535 the HAL may adjust the crop region to account for rounding,<wbr/> conversion error,<wbr/> or other
17536 hardware limitations.<wbr/></p>
17539 <p>HAL2.<wbr/>x uses only (x,<wbr/> y,<wbr/> width)</p>
17543 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17544 <!-- end of entry -->
17548 <!-- end of kind -->
17550 <tr><td colspan="7" class="kind">static</td></tr>
17552 <thead class="entries_header">
17554 <th class="th_name">Property Name</th>
17555 <th class="th_type">Type</th>
17556 <th class="th_description">Description</th>
17557 <th class="th_units">Units</th>
17558 <th class="th_range">Range</th>
17559 <th class="th_hal_version">Initial HIDL HAL version</th>
17560 <th class="th_tags">Tags</th>
17575 <tr class="entry" id="static_android.scaler.availableFormats">
17576 <td class="entry_name
17577 entry_name_deprecated
17579 android.<wbr/>scaler.<wbr/>available<wbr/>Formats
17581 <td class="entry_type">
17582 <span class="entry_type_name entry_type_name_enum">int32</span>
17583 <span class="entry_type_container">x</span>
17585 <span class="entry_type_array">
17588 <span class="entry_type_visibility"> [hidden as imageFormat]</span>
17592 <span class="entry_type_deprecated">[deprecated] </span>
17595 <ul class="entry_type_enum">
17597 <span class="entry_type_enum_name">RAW16</span>
17598 <span class="entry_type_enum_optional">[optional]</span>
17599 <span class="entry_type_enum_value">0x20</span>
17600 <span class="entry_type_enum_notes"><p>RAW16 is a standard,<wbr/> cross-platform format for raw image
17601 buffers with 16-bit pixels.<wbr/></p>
17602 <p>Buffers of this format are typically expected to have a
17603 Bayer Color Filter Array (CFA) layout,<wbr/> which is given in
17604 <a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a>.<wbr/> Sensors with
17605 CFAs that are not representable by a format in
17606 <a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a> should not
17607 use this format.<wbr/></p>
17608 <p>Buffers of this format will also follow the constraints given for
17609 RAW_<wbr/>OPAQUE buffers,<wbr/> but with relaxed performance constraints.<wbr/></p>
17610 <p>This format is intended to give users access to the full contents
17611 of the buffers coming directly from the image sensor prior to any
17612 cropping or scaling operations,<wbr/> and all coordinate systems for
17613 metadata used for this format are relative to the size of the
17614 active region of the image sensor before any geometric distortion
17615 correction has been applied (i.<wbr/>e.<wbr/>
17616 <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
17617 dimensions for this format are limited to the full dimensions of
17618 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
17619 <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
17620 only supported output size).<wbr/></p>
17621 <p>See <a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a> for
17622 the full set of performance guarantees.<wbr/></p></span>
17625 <span class="entry_type_enum_name">RAW_OPAQUE</span>
17626 <span class="entry_type_enum_optional">[optional]</span>
17627 <span class="entry_type_enum_value">0x24</span>
17628 <span class="entry_type_enum_notes"><p>RAW_<wbr/>OPAQUE (or
17629 <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_PRIVATE">RAW_<wbr/>PRIVATE</a>
17630 as referred in public API) is a format for raw image buffers
17631 coming from an image sensor.<wbr/></p>
17632 <p>The actual structure of buffers of this format is
17633 platform-specific,<wbr/> but must follow several constraints:</p>
17635 <li>No image post-processing operations may have been applied to
17636 buffers of this type.<wbr/> These buffers contain raw image data coming
17637 directly from the image sensor.<wbr/></li>
17638 <li>If a buffer of this format is passed to the camera device for
17639 reprocessing,<wbr/> the resulting images will be identical to the images
17640 produced if the buffer had come directly from the sensor and was
17641 processed with the same settings.<wbr/></li>
17643 <p>The intended use for this format is to allow access to the native
17644 raw format buffers coming directly from the camera sensor without
17645 any additional conversions or decrease in framerate.<wbr/></p>
17646 <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
17647 performance guarantees.<wbr/></p></span>
17650 <span class="entry_type_enum_name">YV12</span>
17651 <span class="entry_type_enum_optional">[optional]</span>
17652 <span class="entry_type_enum_value">0x32315659</span>
17653 <span class="entry_type_enum_notes"><p>YCrCb 4:2:0 Planar</p></span>
17656 <span class="entry_type_enum_name">YCrCb_420_SP</span>
17657 <span class="entry_type_enum_optional">[optional]</span>
17658 <span class="entry_type_enum_value">0x11</span>
17659 <span class="entry_type_enum_notes"><p>NV21</p></span>
17662 <span class="entry_type_enum_name">IMPLEMENTATION_DEFINED</span>
17663 <span class="entry_type_enum_value">0x22</span>
17664 <span class="entry_type_enum_notes"><p>System internal format,<wbr/> not application-accessible</p></span>
17667 <span class="entry_type_enum_name">YCbCr_420_888</span>
17668 <span class="entry_type_enum_value">0x23</span>
17669 <span class="entry_type_enum_notes"><p>Flexible YUV420 Format</p></span>
17672 <span class="entry_type_enum_name">BLOB</span>
17673 <span class="entry_type_enum_value">0x21</span>
17674 <span class="entry_type_enum_notes"><p>JPEG format</p></span>
17678 </td> <!-- entry_type -->
17680 <td class="entry_description">
17681 <p>The list of image formats that are supported by this
17682 camera device for output streams.<wbr/></p>
17685 <td class="entry_units">
17688 <td class="entry_range">
17689 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
17692 <td class="entry_hal_version">
17696 <td class="entry_tags">
17697 <ul class="entry_tags">
17698 <li><a href="#tag_BC">BC</a></li>
17703 <tr class="entries_header">
17704 <th class="th_details" colspan="6">Details</th>
17706 <tr class="entry_cont">
17707 <td class="entry_details" colspan="6">
17708 <p>All camera devices will support JPEG and YUV_<wbr/>420_<wbr/>888 formats.<wbr/></p>
17709 <p>When set to YUV_<wbr/>420_<wbr/>888,<wbr/> application can access the YUV420 data directly.<wbr/></p>
17713 <tr class="entries_header">
17714 <th class="th_details" colspan="6">HAL Implementation Details</th>
17716 <tr class="entry_cont">
17717 <td class="entry_details" colspan="6">
17718 <p>These format values are from HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>* in
17719 system/<wbr/>core/<wbr/>include/<wbr/>system/<wbr/>graphics.<wbr/>h.<wbr/></p>
17720 <p>When IMPLEMENTATION_<wbr/>DEFINED is used,<wbr/> the platform
17721 gralloc module will select a format based on the usage flags provided
17722 by the camera HAL device and the other endpoint of the stream.<wbr/> It is
17723 usually used by preview and recording streams,<wbr/> where the application doesn't
17724 need access the image data.<wbr/></p>
17725 <p>YCb<wbr/>Cr_<wbr/>420_<wbr/>888 format must be supported by the HAL.<wbr/> When an image stream
17726 needs CPU/<wbr/>application direct access,<wbr/> this format will be used.<wbr/></p>
17727 <p>The BLOB format must be supported by the HAL.<wbr/> This is used for the JPEG stream.<wbr/></p>
17728 <p>A RAW_<wbr/>OPAQUE buffer should contain only pixel data.<wbr/> It is strongly
17729 recommended that any information used by the camera device when
17730 processing images is fully expressed by the result metadata
17731 for that image buffer.<wbr/></p>
17735 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17736 <!-- end of entry -->
17739 <tr class="entry" id="static_android.scaler.availableJpegMinDurations">
17740 <td class="entry_name
17741 entry_name_deprecated
17743 android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Min<wbr/>Durations
17745 <td class="entry_type">
17746 <span class="entry_type_name">int64</span>
17747 <span class="entry_type_container">x</span>
17749 <span class="entry_type_array">
17752 <span class="entry_type_visibility"> [hidden]</span>
17756 <span class="entry_type_deprecated">[deprecated] </span>
17760 </td> <!-- entry_type -->
17762 <td class="entry_description">
17763 <p>The minimum frame duration that is supported
17764 for each resolution in <a href="#static_android.scaler.availableJpegSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes</a>.<wbr/></p>
17767 <td class="entry_units">
17771 <td class="entry_range">
17772 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
17773 <p>TODO: Remove property.<wbr/></p>
17776 <td class="entry_hal_version">
17780 <td class="entry_tags">
17781 <ul class="entry_tags">
17782 <li><a href="#tag_BC">BC</a></li>
17787 <tr class="entries_header">
17788 <th class="th_details" colspan="6">Details</th>
17790 <tr class="entry_cont">
17791 <td class="entry_details" colspan="6">
17792 <p>This corresponds to the minimum steady-state frame duration when only
17793 that JPEG stream is active and captured in a burst,<wbr/> with all
17794 processing (typically in android.<wbr/>*.<wbr/>mode) set to FAST.<wbr/></p>
17795 <p>When multiple streams are configured,<wbr/> the minimum
17796 frame duration will be >= max(individual stream min
17802 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17803 <!-- end of entry -->
17806 <tr class="entry" id="static_android.scaler.availableJpegSizes">
17807 <td class="entry_name
17808 entry_name_deprecated
17810 android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes
17812 <td class="entry_type">
17813 <span class="entry_type_name">int32</span>
17814 <span class="entry_type_container">x</span>
17816 <span class="entry_type_array">
17819 <span class="entry_type_visibility"> [hidden as size]</span>
17823 <span class="entry_type_deprecated">[deprecated] </span>
17827 </td> <!-- entry_type -->
17829 <td class="entry_description">
17830 <p>The JPEG resolutions that are supported by this camera device.<wbr/></p>
17833 <td class="entry_units">
17836 <td class="entry_range">
17837 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
17838 <p>TODO: Remove property.<wbr/></p>
17841 <td class="entry_hal_version">
17845 <td class="entry_tags">
17846 <ul class="entry_tags">
17847 <li><a href="#tag_BC">BC</a></li>
17852 <tr class="entries_header">
17853 <th class="th_details" colspan="6">Details</th>
17855 <tr class="entry_cont">
17856 <td class="entry_details" colspan="6">
17857 <p>The resolutions are listed as <code>(width,<wbr/> height)</code> pairs.<wbr/> All camera devices will support
17858 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>
17862 <tr class="entries_header">
17863 <th class="th_details" colspan="6">HAL Implementation Details</th>
17865 <tr class="entry_cont">
17866 <td class="entry_details" colspan="6">
17867 <p>The HAL must include sensor maximum resolution
17868 (defined by <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>),<wbr/>
17869 and should include half/<wbr/>quarter of sensor maximum resolution.<wbr/></p>
17873 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17874 <!-- end of entry -->
17877 <tr class="entry" id="static_android.scaler.availableMaxDigitalZoom">
17878 <td class="entry_name
17880 android.<wbr/>scaler.<wbr/>available<wbr/>Max<wbr/>Digital<wbr/>Zoom
17882 <td class="entry_type">
17883 <span class="entry_type_name">float</span>
17885 <span class="entry_type_visibility"> [public]</span>
17888 <span class="entry_type_hwlevel">[legacy] </span>
17893 </td> <!-- entry_type -->
17895 <td class="entry_description">
17896 <p>The maximum ratio between both active area width
17897 and crop region width,<wbr/> and active area height and
17898 crop region height,<wbr/> for <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></p>
17901 <td class="entry_units">
17905 <td class="entry_range">
17909 <td class="entry_hal_version">
17913 <td class="entry_tags">
17914 <ul class="entry_tags">
17915 <li><a href="#tag_BC">BC</a></li>
17920 <tr class="entries_header">
17921 <th class="th_details" colspan="6">Details</th>
17923 <tr class="entry_cont">
17924 <td class="entry_details" colspan="6">
17925 <p>This represents the maximum amount of zooming possible by
17926 the camera device,<wbr/> or equivalently,<wbr/> the minimum cropping
17927 window size.<wbr/></p>
17928 <p>Crop regions that have a width or height that is smaller
17929 than this ratio allows will be rounded up to the minimum
17930 allowed size by the camera device.<wbr/></p>
17935 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17936 <!-- end of entry -->
17939 <tr class="entry" id="static_android.scaler.availableProcessedMinDurations">
17940 <td class="entry_name
17941 entry_name_deprecated
17943 android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Min<wbr/>Durations
17945 <td class="entry_type">
17946 <span class="entry_type_name">int64</span>
17947 <span class="entry_type_container">x</span>
17949 <span class="entry_type_array">
17952 <span class="entry_type_visibility"> [hidden]</span>
17956 <span class="entry_type_deprecated">[deprecated] </span>
17960 </td> <!-- entry_type -->
17962 <td class="entry_description">
17963 <p>For each available processed output size (defined in
17964 <a href="#static_android.scaler.availableProcessedSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Sizes</a>),<wbr/> this property lists the
17965 minimum supportable frame duration for that size.<wbr/></p>
17968 <td class="entry_units">
17972 <td class="entry_range">
17973 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
17976 <td class="entry_hal_version">
17980 <td class="entry_tags">
17981 <ul class="entry_tags">
17982 <li><a href="#tag_BC">BC</a></li>
17987 <tr class="entries_header">
17988 <th class="th_details" colspan="6">Details</th>
17990 <tr class="entry_cont">
17991 <td class="entry_details" colspan="6">
17992 <p>This should correspond to the frame duration when only that processed
17993 stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode)
17994 set to FAST.<wbr/></p>
17995 <p>When multiple streams are configured,<wbr/> the minimum frame duration will
17996 be >= max(individual stream min durations).<wbr/></p>
18001 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18002 <!-- end of entry -->
18005 <tr class="entry" id="static_android.scaler.availableProcessedSizes">
18006 <td class="entry_name
18007 entry_name_deprecated
18009 android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Sizes
18011 <td class="entry_type">
18012 <span class="entry_type_name">int32</span>
18013 <span class="entry_type_container">x</span>
18015 <span class="entry_type_array">
18018 <span class="entry_type_visibility"> [hidden as size]</span>
18022 <span class="entry_type_deprecated">[deprecated] </span>
18026 </td> <!-- entry_type -->
18028 <td class="entry_description">
18029 <p>The resolutions available for use with
18030 processed output streams,<wbr/> such as YV12,<wbr/> NV12,<wbr/> and
18031 platform opaque YUV/<wbr/>RGB streams to the GPU or video
18032 encoders.<wbr/></p>
18035 <td class="entry_units">
18038 <td class="entry_range">
18039 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
18042 <td class="entry_hal_version">
18046 <td class="entry_tags">
18047 <ul class="entry_tags">
18048 <li><a href="#tag_BC">BC</a></li>
18053 <tr class="entries_header">
18054 <th class="th_details" colspan="6">Details</th>
18056 <tr class="entry_cont">
18057 <td class="entry_details" colspan="6">
18058 <p>The resolutions are listed as <code>(width,<wbr/> height)</code> pairs.<wbr/></p>
18059 <p>For a given use case,<wbr/> the actual maximum supported resolution
18060 may be lower than what is listed here,<wbr/> depending on the destination
18061 Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/>
18062 the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p)
18063 smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448)
18064 can provide.<wbr/></p>
18065 <p>Please reference the documentation for the image data destination to
18066 check if it limits the maximum size for image data.<wbr/></p>
18070 <tr class="entries_header">
18071 <th class="th_details" colspan="6">HAL Implementation Details</th>
18073 <tr class="entry_cont">
18074 <td class="entry_details" colspan="6">
18075 <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/>
18076 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>
18077 and each below resolution if it is smaller than or equal to the sensor
18078 maximum resolution (if they are not listed in JPEG sizes already):</p>
18080 <li>240p (320 x 240)</li>
18081 <li>480p (640 x 480)</li>
18082 <li>720p (1280 x 720)</li>
18083 <li>1080p (1920 x 1080)</li>
18085 <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/>
18086 the HAL only has to list up to the maximum video size supported by the devices.<wbr/></p>
18090 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18091 <!-- end of entry -->
18094 <tr class="entry" id="static_android.scaler.availableRawMinDurations">
18095 <td class="entry_name
18096 entry_name_deprecated
18098 android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Min<wbr/>Durations
18100 <td class="entry_type">
18101 <span class="entry_type_name">int64</span>
18102 <span class="entry_type_container">x</span>
18104 <span class="entry_type_array">
18107 <span class="entry_type_visibility"> [system]</span>
18111 <span class="entry_type_deprecated">[deprecated] </span>
18115 </td> <!-- entry_type -->
18117 <td class="entry_description">
18118 <p>For each available raw output size (defined in
18119 <a href="#static_android.scaler.availableRawSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Sizes</a>),<wbr/> this property lists the minimum
18120 supportable frame duration for that size.<wbr/></p>
18123 <td class="entry_units">
18127 <td class="entry_range">
18128 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
18131 <td class="entry_hal_version">
18135 <td class="entry_tags">
18136 <ul class="entry_tags">
18137 <li><a href="#tag_BC">BC</a></li>
18142 <tr class="entries_header">
18143 <th class="th_details" colspan="6">Details</th>
18145 <tr class="entry_cont">
18146 <td class="entry_details" colspan="6">
18147 <p>Should correspond to the frame duration when only the raw stream is
18149 <p>When multiple streams are configured,<wbr/> the minimum
18150 frame duration will be >= max(individual stream min
18156 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18157 <!-- end of entry -->
18160 <tr class="entry" id="static_android.scaler.availableRawSizes">
18161 <td class="entry_name
18162 entry_name_deprecated
18164 android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Sizes
18166 <td class="entry_type">
18167 <span class="entry_type_name">int32</span>
18168 <span class="entry_type_container">x</span>
18170 <span class="entry_type_array">
18173 <span class="entry_type_visibility"> [system as size]</span>
18177 <span class="entry_type_deprecated">[deprecated] </span>
18181 </td> <!-- entry_type -->
18183 <td class="entry_description">
18184 <p>The resolutions available for use with raw
18185 sensor output streams,<wbr/> listed as width,<wbr/>
18189 <td class="entry_units">
18192 <td class="entry_range">
18193 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
18196 <td class="entry_hal_version">
18200 <td class="entry_tags">
18206 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18207 <!-- end of entry -->
18210 <tr class="entry" id="static_android.scaler.availableInputOutputFormatsMap">
18211 <td class="entry_name
18213 android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map
18215 <td class="entry_type">
18216 <span class="entry_type_name">int32</span>
18218 <span class="entry_type_visibility"> [hidden as reprocessFormatsMap]</span>
18225 </td> <!-- entry_type -->
18227 <td class="entry_description">
18228 <p>The mapping of image formats that are supported by this
18229 camera device for input streams,<wbr/> to their corresponding output formats.<wbr/></p>
18232 <td class="entry_units">
18235 <td class="entry_range">
18238 <td class="entry_hal_version">
18242 <td class="entry_tags">
18243 <ul class="entry_tags">
18244 <li><a href="#tag_REPROC">REPROC</a></li>
18249 <tr class="entries_header">
18250 <th class="th_details" colspan="6">Details</th>
18252 <tr class="entry_cont">
18253 <td class="entry_details" colspan="6">
18254 <p>All camera devices with at least 1
18255 <a href="#static_android.request.maxNumInputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Input<wbr/>Streams</a> will have at least one
18256 available input format.<wbr/></p>
18257 <p>The camera device will support the following map of formats,<wbr/>
18258 if its dependent capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>) is supported:</p>
18262 <th align="left">Input Format</th>
18263 <th align="left">Output Format</th>
18264 <th align="left">Capability</th>
18269 <td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td>
18270 <td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
18271 <td align="left">PRIVATE_<wbr/>REPROCESSING</td>
18274 <td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td>
18275 <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>
18276 <td align="left">PRIVATE_<wbr/>REPROCESSING</td>
18279 <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>
18280 <td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
18281 <td align="left">YUV_<wbr/>REPROCESSING</td>
18284 <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>
18285 <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>
18286 <td align="left">YUV_<wbr/>REPROCESSING</td>
18290 <p>PRIVATE refers to a device-internal format that is not directly application-visible.<wbr/> A
18291 PRIVATE input surface can be acquired by <a href="https://developer.android.com/reference/android/media/ImageReader.html#newInstance">ImageReader#newInstance</a>
18292 with <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> as the format.<wbr/></p>
18293 <p>For a PRIVATE_<wbr/>REPROCESSING-capable camera device,<wbr/> using the PRIVATE format as either input
18294 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>
18295 <p>Attempting to configure an input stream with output streams not
18296 listed as available in this map is not valid.<wbr/></p>
18300 <tr class="entries_header">
18301 <th class="th_details" colspan="6">HAL Implementation Details</th>
18303 <tr class="entry_cont">
18304 <td class="entry_details" colspan="6">
18305 <p>For the formats,<wbr/> see <code>system/<wbr/>core/<wbr/>include/<wbr/>system/<wbr/>graphics.<wbr/>h</code> for a definition
18306 of the image format enumerations.<wbr/> The PRIVATE format refers to the
18307 HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>IMPLEMENTATION_<wbr/>DEFINED format.<wbr/> The HAL could determine
18308 the actual format by using the gralloc usage flags.<wbr/>
18309 For ZSL use case in particular,<wbr/> the HAL could choose appropriate format (partially
18310 processed YUV or RAW based format) by checking the format and GRALLOC_<wbr/>USAGE_<wbr/>HW_<wbr/>CAMERA_<wbr/>ZSL.<wbr/>
18311 See camera3.<wbr/>h for more details.<wbr/></p>
18312 <p>This value is encoded as a variable-size array-of-arrays.<wbr/>
18313 The inner array always contains <code>[format,<wbr/> length,<wbr/> ...<wbr/>]</code> where
18314 <code>...<wbr/></code> has <code>length</code> elements.<wbr/> An inner array is followed by another
18315 inner array if the total metadata entry size hasn't yet been exceeded.<wbr/></p>
18316 <p>A code sample to read/<wbr/>write this encoding (with a device that
18317 supports reprocessing IMPLEMENTATION_<wbr/>DEFINED to YUV_<wbr/>420_<wbr/>888,<wbr/> and JPEG,<wbr/>
18318 and reprocessing YUV_<wbr/>420_<wbr/>888 to YUV_<wbr/>420_<wbr/>888 and JPEG):</p>
18319 <pre><code>//<wbr/> reading
18320 int32_<wbr/>t* contents = &entry.<wbr/>i32[0];
18321 for (size_<wbr/>t i = 0; i < entry.<wbr/>count; ) {
18322 int32_<wbr/>t format = contents[i++];
18323 int32_<wbr/>t length = contents[i++];
18324 int32_<wbr/>t output_<wbr/>formats[length];
18325 memcpy(&output_<wbr/>formats[0],<wbr/> &contents[i],<wbr/>
18326 length * sizeof(int32_<wbr/>t));
18330 //<wbr/> writing (static example,<wbr/> PRIVATE_<wbr/>REPROCESSING + YUV_<wbr/>REPROCESSING)
18331 int32_<wbr/>t[] contents = {
18332 IMPLEMENTATION_<wbr/>DEFINED,<wbr/> 2,<wbr/> YUV_<wbr/>420_<wbr/>888,<wbr/> BLOB,<wbr/>
18333 YUV_<wbr/>420_<wbr/>888,<wbr/> 2,<wbr/> YUV_<wbr/>420_<wbr/>888,<wbr/> BLOB,<wbr/>
18335 update_<wbr/>camera_<wbr/>metadata_<wbr/>entry(metadata,<wbr/> index,<wbr/> &contents[0],<wbr/>
18336 sizeof(contents)/<wbr/>sizeof(contents[0]),<wbr/> &updated_<wbr/>entry);
18338 <p>If the HAL claims to support any of the capabilities listed in the
18339 above details,<wbr/> then it must also support all the input-output
18340 combinations listed for that capability.<wbr/> It can optionally support
18341 additional formats if it so chooses.<wbr/></p>
18345 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18346 <!-- end of entry -->
18349 <tr class="entry" id="static_android.scaler.availableStreamConfigurations">
18350 <td class="entry_name
18352 android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations
18354 <td class="entry_type">
18355 <span class="entry_type_name entry_type_name_enum">int32</span>
18356 <span class="entry_type_container">x</span>
18358 <span class="entry_type_array">
18361 <span class="entry_type_visibility"> [ndk_public as streamConfiguration]</span>
18364 <span class="entry_type_hwlevel">[legacy] </span>
18368 <ul class="entry_type_enum">
18370 <span class="entry_type_enum_name">OUTPUT</span>
18373 <span class="entry_type_enum_name">INPUT</span>
18377 </td> <!-- entry_type -->
18379 <td class="entry_description">
18380 <p>The available stream configurations that this
18381 camera device supports
18382 (i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p>
18385 <td class="entry_units">
18388 <td class="entry_range">
18391 <td class="entry_hal_version">
18395 <td class="entry_tags">
18399 <tr class="entries_header">
18400 <th class="th_details" colspan="6">Details</th>
18402 <tr class="entry_cont">
18403 <td class="entry_details" colspan="6">
18404 <p>The configurations are listed as <code>(format,<wbr/> width,<wbr/> height,<wbr/> input?)</code>
18406 <p>For a given use case,<wbr/> the actual maximum supported resolution
18407 may be lower than what is listed here,<wbr/> depending on the destination
18408 Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/>
18409 the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p)
18410 smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448)
18411 can provide.<wbr/></p>
18412 <p>Please reference the documentation for the image data destination to
18413 check if it limits the maximum size for image data.<wbr/></p>
18414 <p>Not all output formats may be supported in a configuration with
18415 an input stream of a particular format.<wbr/> For more details,<wbr/> see
18416 <a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a>.<wbr/></p>
18417 <p>The following table describes the minimum required output stream
18418 configurations based on the hardware level
18419 (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>):</p>
18423 <th align="center">Format</th>
18424 <th align="center">Size</th>
18425 <th align="center">Hardware Level</th>
18426 <th align="center">Notes</th>
18431 <td align="center">JPEG</td>
18432 <td align="center"><a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></td>
18433 <td align="center">Any</td>
18434 <td align="center"></td>
18437 <td align="center">JPEG</td>
18438 <td align="center">1920x1080 (1080p)</td>
18439 <td align="center">Any</td>
18440 <td align="center">if 1080p <= activeArraySize</td>
18443 <td align="center">JPEG</td>
18444 <td align="center">1280x720 (720)</td>
18445 <td align="center">Any</td>
18446 <td align="center">if 720p <= activeArraySize</td>
18449 <td align="center">JPEG</td>
18450 <td align="center">640x480 (480p)</td>
18451 <td align="center">Any</td>
18452 <td align="center">if 480p <= activeArraySize</td>
18455 <td align="center">JPEG</td>
18456 <td align="center">320x240 (240p)</td>
18457 <td align="center">Any</td>
18458 <td align="center">if 240p <= activeArraySize</td>
18461 <td align="center">YUV_<wbr/>420_<wbr/>888</td>
18462 <td align="center">all output sizes available for JPEG</td>
18463 <td align="center">FULL</td>
18464 <td align="center"></td>
18467 <td align="center">YUV_<wbr/>420_<wbr/>888</td>
18468 <td align="center">all output sizes available for JPEG,<wbr/> up to the maximum video size</td>
18469 <td align="center">LIMITED</td>
18470 <td align="center"></td>
18473 <td align="center">IMPLEMENTATION_<wbr/>DEFINED</td>
18474 <td align="center">same as YUV_<wbr/>420_<wbr/>888</td>
18475 <td align="center">Any</td>
18476 <td align="center"></td>
18480 <p>Refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> for additional
18481 mandatory stream configurations on a per-capability basis.<wbr/></p>
18485 <tr class="entries_header">
18486 <th class="th_details" colspan="6">HAL Implementation Details</th>
18488 <tr class="entry_cont">
18489 <td class="entry_details" colspan="6">
18490 <p>It is recommended (but not mandatory) to also include half/<wbr/>quarter
18491 of sensor maximum resolution for JPEG formats (regardless of hardware
18493 <p>(The following is a rewording of the above required table):</p>
18494 <p>For JPEG format,<wbr/> the sizes may be restricted by below conditions:</p>
18496 <li>The HAL may choose the aspect ratio of each Jpeg size to be one of well known ones
18497 (e.<wbr/>g.<wbr/> 4:3,<wbr/> 16:9,<wbr/> 3:2 etc.<wbr/>).<wbr/> If the sensor maximum resolution
18498 (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/>
18499 it does not have to be included in the supported JPEG sizes.<wbr/></li>
18500 <li>Some hardware JPEG encoders may have pixel boundary alignment requirements,<wbr/> such as
18501 the dimensions being a multiple of 16.<wbr/></li>
18503 <p>Therefore,<wbr/> the maximum JPEG size may be smaller than sensor maximum resolution.<wbr/>
18504 However,<wbr/> the largest JPEG size must be as close as possible to the sensor maximum
18505 resolution given above constraints.<wbr/> It is required that after aspect ratio adjustments,<wbr/>
18506 additional size reduction due to other issues must be less than 3% in area.<wbr/> For example,<wbr/>
18507 if the sensor maximum resolution is 3280x2464,<wbr/> if the maximum JPEG size has aspect
18508 ratio 4:3,<wbr/> the JPEG encoder alignment requirement is 16,<wbr/> the maximum JPEG size will be
18509 3264x2448.<wbr/></p>
18510 <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/>
18511 the HAL must include all YUV_<wbr/>420_<wbr/>888 sizes that have JPEG sizes listed
18512 here as output streams.<wbr/></p>
18513 <p>It must also include each below resolution if it is smaller than or
18514 equal to the sensor maximum resolution (for both YUV_<wbr/>420_<wbr/>888 and JPEG
18515 formats),<wbr/> as output streams:</p>
18517 <li>240p (320 x 240)</li>
18518 <li>480p (640 x 480)</li>
18519 <li>720p (1280 x 720)</li>
18520 <li>1080p (1920 x 1080)</li>
18522 <p>For LIMITED capability devices
18523 (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == LIMITED</code>),<wbr/>
18524 the HAL only has to list up to the maximum video size
18525 supported by the device.<wbr/></p>
18526 <p>Regardless of hardware level,<wbr/> every output resolution available for
18527 YUV_<wbr/>420_<wbr/>888 must also be available for IMPLEMENTATION_<wbr/>DEFINED.<wbr/></p>
18528 <p>This supercedes the following fields,<wbr/> which are now deprecated:</p>
18530 <li>availableFormats</li>
18531 <li>available[Processed,<wbr/>Raw,<wbr/>Jpeg]Sizes</li>
18536 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18537 <!-- end of entry -->
18540 <tr class="entry" id="static_android.scaler.availableMinFrameDurations">
18541 <td class="entry_name
18543 android.<wbr/>scaler.<wbr/>available<wbr/>Min<wbr/>Frame<wbr/>Durations
18545 <td class="entry_type">
18546 <span class="entry_type_name">int64</span>
18547 <span class="entry_type_container">x</span>
18549 <span class="entry_type_array">
18552 <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
18555 <span class="entry_type_hwlevel">[legacy] </span>
18560 </td> <!-- entry_type -->
18562 <td class="entry_description">
18563 <p>This lists the minimum frame duration for each
18564 format/<wbr/>size combination.<wbr/></p>
18567 <td class="entry_units">
18568 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
18571 <td class="entry_range">
18574 <td class="entry_hal_version">
18578 <td class="entry_tags">
18579 <ul class="entry_tags">
18580 <li><a href="#tag_V1">V1</a></li>
18585 <tr class="entries_header">
18586 <th class="th_details" colspan="6">Details</th>
18588 <tr class="entry_cont">
18589 <td class="entry_details" colspan="6">
18590 <p>This should correspond to the frame duration when only that
18591 stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode)
18592 set to either OFF or FAST.<wbr/></p>
18593 <p>When multiple streams are used in a request,<wbr/> the minimum frame
18594 duration will be max(individual stream min durations).<wbr/></p>
18595 <p>The minimum frame duration of a stream (of a particular format,<wbr/> size)
18596 is the same regardless of whether the stream is input or output.<wbr/></p>
18597 <p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> and
18598 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for more details about
18599 calculating the max frame rate.<wbr/></p>
18604 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18605 <!-- end of entry -->
18608 <tr class="entry" id="static_android.scaler.availableStallDurations">
18609 <td class="entry_name
18611 android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations
18613 <td class="entry_type">
18614 <span class="entry_type_name">int64</span>
18615 <span class="entry_type_container">x</span>
18617 <span class="entry_type_array">
18620 <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
18623 <span class="entry_type_hwlevel">[legacy] </span>
18628 </td> <!-- entry_type -->
18630 <td class="entry_description">
18631 <p>This lists the maximum stall duration for each
18632 output format/<wbr/>size combination.<wbr/></p>
18635 <td class="entry_units">
18636 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
18639 <td class="entry_range">
18642 <td class="entry_hal_version">
18646 <td class="entry_tags">
18647 <ul class="entry_tags">
18648 <li><a href="#tag_V1">V1</a></li>
18653 <tr class="entries_header">
18654 <th class="th_details" colspan="6">Details</th>
18656 <tr class="entry_cont">
18657 <td class="entry_details" colspan="6">
18658 <p>A stall duration is how much extra time would get added
18659 to the normal minimum frame duration for a repeating request
18660 that has streams with non-zero stall.<wbr/></p>
18661 <p>For example,<wbr/> consider JPEG captures which have the following
18662 characteristics:</p>
18664 <li>JPEG streams act like processed YUV streams in requests for which
18665 they are not included; in requests in which they are directly
18666 referenced,<wbr/> they act as JPEG streams.<wbr/> This is because supporting a
18667 JPEG stream requires the underlying YUV data to always be ready for
18668 use by a JPEG encoder,<wbr/> but the encoder will only be used (and impact
18669 frame duration) on requests that actually reference a JPEG stream.<wbr/></li>
18670 <li>The JPEG processor can run concurrently to the rest of the camera
18671 pipeline,<wbr/> but cannot process more than 1 capture at a time.<wbr/></li>
18673 <p>In other words,<wbr/> using a repeating YUV request would result
18674 in a steady frame rate (let's say it's 30 FPS).<wbr/> If a single
18675 JPEG request is submitted periodically,<wbr/> the frame rate will stay
18676 at 30 FPS (as long as we wait for the previous JPEG to return each
18677 time).<wbr/> If we try to submit a repeating YUV + JPEG request,<wbr/> then
18678 the frame rate will drop from 30 FPS.<wbr/></p>
18679 <p>In general,<wbr/> submitting a new request with a non-0 stall time
18680 stream will <em>not</em> cause a frame rate drop unless there are still
18681 outstanding buffers for that stream from previous requests.<wbr/></p>
18682 <p>Submitting a repeating request with streams (call this <code>S</code>)
18683 is the same as setting the minimum frame duration from
18684 the normal minimum frame duration corresponding to <code>S</code>,<wbr/> added with
18685 the maximum stall duration for <code>S</code>.<wbr/></p>
18686 <p>If interleaving requests with and without a stall duration,<wbr/>
18687 a request will stall by the maximum of the remaining times
18688 for each can-stall stream with outstanding buffers.<wbr/></p>
18689 <p>This means that a stalling request will not have an exposure start
18690 until the stall has completed.<wbr/></p>
18691 <p>This should correspond to the stall duration when only that stream is
18692 active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode) set to FAST
18693 or OFF.<wbr/> Setting any of the processing modes to HIGH_<wbr/>QUALITY
18694 effectively results in an indeterminate stall duration for all
18695 streams in a request (the regular stall calculation rules are
18696 ignored).<wbr/></p>
18697 <p>The following formats may always have a stall duration:</p>
18699 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></li>
18700 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_SENSOR">ImageFormat#RAW_<wbr/>SENSOR</a></li>
18702 <p>The following formats will never have a stall duration:</p>
18704 <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>
18705 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW10">ImageFormat#RAW10</a></li>
18706 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW12">ImageFormat#RAW12</a></li>
18708 <p>All other formats may or may not have an allowed stall duration on
18709 a per-capability basis; refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>
18710 for more details.<wbr/></p>
18711 <p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> for more information about
18712 calculating the max frame rate (absent stalls).<wbr/></p>
18716 <tr class="entries_header">
18717 <th class="th_details" colspan="6">HAL Implementation Details</th>
18719 <tr class="entry_cont">
18720 <td class="entry_details" colspan="6">
18721 <p>If possible,<wbr/> it is recommended that all non-JPEG formats
18722 (such as RAW16) should not have a stall duration.<wbr/> RAW10,<wbr/> RAW12,<wbr/> RAW_<wbr/>OPAQUE
18723 and IMPLEMENTATION_<wbr/>DEFINED must not have stall durations.<wbr/></p>
18727 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18728 <!-- end of entry -->
18731 <tr class="entry" id="static_android.scaler.streamConfigurationMap">
18732 <td class="entry_name
18734 android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map
18736 <td class="entry_type">
18737 <span class="entry_type_name">int32</span>
18739 <span class="entry_type_visibility"> [java_public as streamConfigurationMap]</span>
18741 <span class="entry_type_synthetic">[synthetic] </span>
18743 <span class="entry_type_hwlevel">[legacy] </span>
18748 </td> <!-- entry_type -->
18750 <td class="entry_description">
18751 <p>The available stream configurations that this
18752 camera device supports; also includes the minimum frame durations
18753 and the stall durations for each format/<wbr/>size combination.<wbr/></p>
18756 <td class="entry_units">
18759 <td class="entry_range">
18762 <td class="entry_hal_version">
18766 <td class="entry_tags">
18770 <tr class="entries_header">
18771 <th class="th_details" colspan="6">Details</th>
18773 <tr class="entry_cont">
18774 <td class="entry_details" colspan="6">
18775 <p>All camera devices will support sensor maximum resolution (defined by
18776 <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>
18777 <p>For a given use case,<wbr/> the actual maximum supported resolution
18778 may be lower than what is listed here,<wbr/> depending on the destination
18779 Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/>
18780 the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p)
18781 smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448)
18782 can provide.<wbr/></p>
18783 <p>Please reference the documentation for the image data destination to
18784 check if it limits the maximum size for image data.<wbr/></p>
18785 <p>The following table describes the minimum required output stream
18786 configurations based on the hardware level
18787 (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>):</p>
18791 <th align="center">Format</th>
18792 <th align="center">Size</th>
18793 <th align="center">Hardware Level</th>
18794 <th align="center">Notes</th>
18799 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
18800 <td align="center"><a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> (*1)</td>
18801 <td align="center">Any</td>
18802 <td align="center"></td>
18805 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
18806 <td align="center">1920x1080 (1080p)</td>
18807 <td align="center">Any</td>
18808 <td align="center">if 1080p <= activeArraySize</td>
18811 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
18812 <td align="center">1280x720 (720p)</td>
18813 <td align="center">Any</td>
18814 <td align="center">if 720p <= activeArraySize</td>
18817 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
18818 <td align="center">640x480 (480p)</td>
18819 <td align="center">Any</td>
18820 <td align="center">if 480p <= activeArraySize</td>
18823 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
18824 <td align="center">320x240 (240p)</td>
18825 <td align="center">Any</td>
18826 <td align="center">if 240p <= activeArraySize</td>
18829 <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>
18830 <td align="center">all output sizes available for JPEG</td>
18831 <td align="center">FULL</td>
18832 <td align="center"></td>
18835 <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>
18836 <td align="center">all output sizes available for JPEG,<wbr/> up to the maximum video size</td>
18837 <td align="center">LIMITED</td>
18838 <td align="center"></td>
18841 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td>
18842 <td align="center">same as YUV_<wbr/>420_<wbr/>888</td>
18843 <td align="center">Any</td>
18844 <td align="center"></td>
18848 <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
18849 stream configurations on a per-capability basis.<wbr/></p>
18850 <p>*1: For JPEG format,<wbr/> the sizes may be restricted by below conditions:</p>
18852 <li>The HAL may choose the aspect ratio of each Jpeg size to be one of well known ones
18853 (e.<wbr/>g.<wbr/> 4:3,<wbr/> 16:9,<wbr/> 3:2 etc.<wbr/>).<wbr/> If the sensor maximum resolution
18854 (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/>
18855 it does not have to be included in the supported JPEG sizes.<wbr/></li>
18856 <li>Some hardware JPEG encoders may have pixel boundary alignment requirements,<wbr/> such as
18857 the dimensions being a multiple of 16.<wbr/>
18858 Therefore,<wbr/> the maximum JPEG size may be smaller than sensor maximum resolution.<wbr/>
18859 However,<wbr/> the largest JPEG size will be as close as possible to the sensor maximum
18860 resolution given above constraints.<wbr/> It is required that after aspect ratio adjustments,<wbr/>
18861 additional size reduction due to other issues must be less than 3% in area.<wbr/> For example,<wbr/>
18862 if the sensor maximum resolution is 3280x2464,<wbr/> if the maximum JPEG size has aspect
18863 ratio 4:3,<wbr/> and the JPEG encoder alignment requirement is 16,<wbr/> the maximum JPEG size will be
18864 3264x2448.<wbr/></li>
18869 <tr class="entries_header">
18870 <th class="th_details" colspan="6">HAL Implementation Details</th>
18872 <tr class="entry_cont">
18873 <td class="entry_details" colspan="6">
18874 <p>Do not set this property directly
18875 (it is synthetic and will not be available at the HAL layer);
18876 set the <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> instead.<wbr/></p>
18877 <p>Not all output formats may be supported in a configuration with
18878 an input stream of a particular format.<wbr/> For more details,<wbr/> see
18879 <a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a>.<wbr/></p>
18880 <p>It is recommended (but not mandatory) to also include half/<wbr/>quarter
18881 of sensor maximum resolution for JPEG formats (regardless of hardware
18883 <p>(The following is a rewording of the above required table):</p>
18884 <p>The HAL must include sensor maximum resolution (defined by
18885 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>).<wbr/></p>
18886 <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/>
18887 the HAL must include all YUV_<wbr/>420_<wbr/>888 sizes that have JPEG sizes listed
18888 here as output streams.<wbr/></p>
18889 <p>It must also include each below resolution if it is smaller than or
18890 equal to the sensor maximum resolution (for both YUV_<wbr/>420_<wbr/>888 and JPEG
18891 formats),<wbr/> as output streams:</p>
18893 <li>240p (320 x 240)</li>
18894 <li>480p (640 x 480)</li>
18895 <li>720p (1280 x 720)</li>
18896 <li>1080p (1920 x 1080)</li>
18898 <p>For LIMITED capability devices
18899 (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == LIMITED</code>),<wbr/>
18900 the HAL only has to list up to the maximum video size
18901 supported by the device.<wbr/></p>
18902 <p>Regardless of hardware level,<wbr/> every output resolution available for
18903 YUV_<wbr/>420_<wbr/>888 must also be available for IMPLEMENTATION_<wbr/>DEFINED.<wbr/></p>
18904 <p>This supercedes the following fields,<wbr/> which are now deprecated:</p>
18906 <li>availableFormats</li>
18907 <li>available[Processed,<wbr/>Raw,<wbr/>Jpeg]Sizes</li>
18912 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18913 <!-- end of entry -->
18916 <tr class="entry" id="static_android.scaler.croppingType">
18917 <td class="entry_name
18919 android.<wbr/>scaler.<wbr/>cropping<wbr/>Type
18921 <td class="entry_type">
18922 <span class="entry_type_name entry_type_name_enum">byte</span>
18924 <span class="entry_type_visibility"> [public]</span>
18927 <span class="entry_type_hwlevel">[legacy] </span>
18931 <ul class="entry_type_enum">
18933 <span class="entry_type_enum_name">CENTER_ONLY</span>
18934 <span class="entry_type_enum_notes"><p>The camera device only supports centered crop regions.<wbr/></p></span>
18937 <span class="entry_type_enum_name">FREEFORM</span>
18938 <span class="entry_type_enum_notes"><p>The camera device supports arbitrarily chosen crop regions.<wbr/></p></span>
18942 </td> <!-- entry_type -->
18944 <td class="entry_description">
18945 <p>The crop type that this camera device supports.<wbr/></p>
18948 <td class="entry_units">
18951 <td class="entry_range">
18954 <td class="entry_hal_version">
18958 <td class="entry_tags">
18962 <tr class="entries_header">
18963 <th class="th_details" colspan="6">Details</th>
18965 <tr class="entry_cont">
18966 <td class="entry_details" colspan="6">
18967 <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
18968 device that only supports CENTER_<wbr/>ONLY cropping,<wbr/> the camera device will move the
18969 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>)
18970 and keep the crop region width and height unchanged.<wbr/> The camera device will return the
18971 final used crop region in metadata result <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></p>
18972 <p>Camera devices that support FREEFORM cropping will support any crop region that
18973 is inside of the active array.<wbr/> The camera device will apply the same crop region and
18974 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>
18975 <p>LEGACY capability devices will only support CENTER_<wbr/>ONLY cropping.<wbr/></p>
18980 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18981 <!-- end of entry -->
18985 <!-- end of kind -->
18987 <tr><td colspan="7" class="kind">dynamic</td></tr>
18989 <thead class="entries_header">
18991 <th class="th_name">Property Name</th>
18992 <th class="th_type">Type</th>
18993 <th class="th_description">Description</th>
18994 <th class="th_units">Units</th>
18995 <th class="th_range">Range</th>
18996 <th class="th_hal_version">Initial HIDL HAL version</th>
18997 <th class="th_tags">Tags</th>
19012 <tr class="entry" id="dynamic_android.scaler.cropRegion">
19013 <td class="entry_name
19015 android.<wbr/>scaler.<wbr/>crop<wbr/>Region
19017 <td class="entry_type">
19018 <span class="entry_type_name">int32</span>
19019 <span class="entry_type_container">x</span>
19021 <span class="entry_type_array">
19024 <span class="entry_type_visibility"> [public as rectangle]</span>
19027 <span class="entry_type_hwlevel">[legacy] </span>
19032 </td> <!-- entry_type -->
19034 <td class="entry_description">
19035 <p>The desired region of the sensor to read out for this capture.<wbr/></p>
19038 <td class="entry_units">
19039 Pixel coordinates relative to
19040 android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
19043 <td class="entry_range">
19046 <td class="entry_hal_version">
19050 <td class="entry_tags">
19051 <ul class="entry_tags">
19052 <li><a href="#tag_BC">BC</a></li>
19057 <tr class="entries_header">
19058 <th class="th_details" colspan="6">Details</th>
19060 <tr class="entry_cont">
19061 <td class="entry_details" colspan="6">
19062 <p>This control can be used to implement digital zoom.<wbr/></p>
19063 <p>The crop region coordinate system is based off
19064 <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
19065 top-left corner of the sensor active array.<wbr/></p>
19066 <p>Output streams use this rectangle to produce their output,<wbr/>
19067 cropping to a smaller region if necessary to maintain the
19068 stream's aspect ratio,<wbr/> then scaling the sensor input to
19069 match the output's configured resolution.<wbr/></p>
19070 <p>The crop region is applied after the RAW to other color
19071 space (e.<wbr/>g.<wbr/> YUV) conversion.<wbr/> Since raw streams
19072 (e.<wbr/>g.<wbr/> RAW16) don't have the conversion stage,<wbr/> they are not
19073 croppable.<wbr/> The crop region will be ignored by raw streams.<wbr/></p>
19074 <p>For non-raw streams,<wbr/> any additional per-stream cropping will
19075 be done to maximize the final pixel area of the stream.<wbr/></p>
19076 <p>For example,<wbr/> if the crop region is set to a 4:3 aspect
19077 ratio,<wbr/> then 4:3 streams will use the exact crop
19078 region.<wbr/> 16:9 streams will further crop vertically
19079 (letterbox).<wbr/></p>
19080 <p>Conversely,<wbr/> if the crop region is set to a 16:9,<wbr/> then 4:3
19081 outputs will crop horizontally (pillarbox),<wbr/> and 16:9
19082 streams will match exactly.<wbr/> These additional crops will
19083 be centered within the crop region.<wbr/></p>
19084 <p>The width and height of the crop region cannot
19085 be set to be smaller than
19086 <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
19087 <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>
19088 <p>The camera device may adjust the crop region to account
19089 for rounding and other hardware requirements; the final
19090 crop region used will be included in the output capture
19095 <tr class="entries_header">
19096 <th class="th_details" colspan="6">HAL Implementation Details</th>
19098 <tr class="entry_cont">
19099 <td class="entry_details" colspan="6">
19100 <p>The output streams must maintain square pixels at all
19101 times,<wbr/> no matter what the relative aspect ratios of the
19102 crop region and the stream are.<wbr/> Negative values for
19103 corner are allowed for raw output if full pixel array is
19104 larger than active pixel array.<wbr/> Width and height may be
19105 rounded to nearest larger supportable width,<wbr/> especially
19106 for raw output,<wbr/> where only a few fixed scales may be
19107 possible.<wbr/></p>
19108 <p>For a set of output streams configured,<wbr/> if the sensor output is cropped to a smaller
19109 size than active array size,<wbr/> the HAL need follow below cropping rules:</p>
19112 <p>The HAL need handle the cropRegion as if the sensor crop size is the effective active
19113 array size.<wbr/>More specifically,<wbr/> the HAL must transform the request cropRegion from
19114 <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>
19116 <li>Translate the requested cropRegion w.<wbr/>r.<wbr/>t.,<wbr/> the left top corner of the sensor
19117 cropped pixel area by (tx,<wbr/> ty),<wbr/>
19118 where <code>tx = sensorCrop.<wbr/>top * (sensorCrop.<wbr/>height /<wbr/> activeArraySize.<wbr/>height)</code>
19119 and <code>tx = sensorCrop.<wbr/>left * (sensorCrop.<wbr/>width /<wbr/> activeArraySize.<wbr/>width)</code>.<wbr/> The
19120 (sensorCrop.<wbr/>top,<wbr/> sensorCrop.<wbr/>left) is the coordinate based off the
19121 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></li>
19122 <li>Scale the width and height of requested cropRegion with scaling factor of
19123 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
19124 respectively.<wbr/>
19125 Once this new cropRegion is calculated,<wbr/> the HAL must use this region to crop the image
19126 with regard to the sensor crop size (effective active array size).<wbr/> The HAL still need
19127 follow the general cropping rule for this new cropRegion and effective active
19128 array size.<wbr/></li>
19132 <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/>
19133 The HAL need convert the new cropRegion generated above w.<wbr/>r.<wbr/>t.,<wbr/> full active array size.<wbr/>
19134 The reported cropRegion may be slightly different with the requested cropRegion since
19135 the HAL may adjust the crop region to account for rounding,<wbr/> conversion error,<wbr/> or other
19136 hardware limitations.<wbr/></p>
19139 <p>HAL2.<wbr/>x uses only (x,<wbr/> y,<wbr/> width)</p>
19143 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19144 <!-- end of entry -->
19148 <!-- end of kind -->
19151 <!-- end of section -->
19152 <tr><td colspan="7" id="section_sensor" class="section">sensor</td></tr>
19155 <tr><td colspan="7" class="kind">controls</td></tr>
19157 <thead class="entries_header">
19159 <th class="th_name">Property Name</th>
19160 <th class="th_type">Type</th>
19161 <th class="th_description">Description</th>
19162 <th class="th_units">Units</th>
19163 <th class="th_range">Range</th>
19164 <th class="th_hal_version">Initial HIDL HAL version</th>
19165 <th class="th_tags">Tags</th>
19180 <tr class="entry" id="controls_android.sensor.exposureTime">
19181 <td class="entry_name
19183 android.<wbr/>sensor.<wbr/>exposure<wbr/>Time
19185 <td class="entry_type">
19186 <span class="entry_type_name">int64</span>
19188 <span class="entry_type_visibility"> [public]</span>
19191 <span class="entry_type_hwlevel">[full] </span>
19196 </td> <!-- entry_type -->
19198 <td class="entry_description">
19199 <p>Duration each pixel is exposed to
19203 <td class="entry_units">
19207 <td class="entry_range">
19208 <p><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></p>
19211 <td class="entry_hal_version">
19215 <td class="entry_tags">
19216 <ul class="entry_tags">
19217 <li><a href="#tag_V1">V1</a></li>
19222 <tr class="entries_header">
19223 <th class="th_details" colspan="6">Details</th>
19225 <tr class="entry_cont">
19226 <td class="entry_details" colspan="6">
19227 <p>If the sensor can't expose this exact duration,<wbr/> it will shorten the
19228 duration exposed to the nearest possible value (rather than expose longer).<wbr/>
19229 The final exposure time used will be available in the output capture result.<wbr/></p>
19230 <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
19231 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
19236 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19237 <!-- end of entry -->
19240 <tr class="entry" id="controls_android.sensor.frameDuration">
19241 <td class="entry_name
19243 android.<wbr/>sensor.<wbr/>frame<wbr/>Duration
19245 <td class="entry_type">
19246 <span class="entry_type_name">int64</span>
19248 <span class="entry_type_visibility"> [public]</span>
19251 <span class="entry_type_hwlevel">[full] </span>
19256 </td> <!-- entry_type -->
19258 <td class="entry_description">
19259 <p>Duration from start of frame exposure to
19260 start of next frame exposure.<wbr/></p>
19263 <td class="entry_units">
19267 <td class="entry_range">
19268 <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/>
19269 The duration is capped to <code>max(duration,<wbr/> exposureTime + overhead)</code>.<wbr/></p>
19272 <td class="entry_hal_version">
19276 <td class="entry_tags">
19277 <ul class="entry_tags">
19278 <li><a href="#tag_V1">V1</a></li>
19283 <tr class="entries_header">
19284 <th class="th_details" colspan="6">Details</th>
19286 <tr class="entry_cont">
19287 <td class="entry_details" colspan="6">
19288 <p>The maximum frame rate that can be supported by a camera subsystem is
19289 a function of many factors:</p>
19291 <li>Requested resolutions of output image streams</li>
19292 <li>Availability of binning /<wbr/> skipping modes on the imager</li>
19293 <li>The bandwidth of the imager interface</li>
19294 <li>The bandwidth of the various ISP processing blocks</li>
19296 <p>Since these factors can vary greatly between different ISPs and
19297 sensors,<wbr/> the camera abstraction tries to represent the bandwidth
19298 restrictions with as simple a model as possible.<wbr/></p>
19299 <p>The model presented has the following characteristics:</p>
19301 <li>The image sensor is always configured to output the smallest
19302 resolution possible given the application's requested output stream
19303 sizes.<wbr/> The smallest resolution is defined as being at least as large
19304 as the largest requested output stream size; the camera pipeline must
19305 never digitally upsample sensor data when the crop region covers the
19306 whole sensor.<wbr/> In general,<wbr/> this means that if only small output stream
19307 resolutions are configured,<wbr/> the sensor can provide a higher frame
19309 <li>Since any request may use any or all the currently configured
19310 output streams,<wbr/> the sensor and ISP must be configured to support
19311 scaling a single capture to all the streams at the same time.<wbr/> This
19312 means the camera pipeline must be ready to produce the largest
19313 requested output size without any delay.<wbr/> Therefore,<wbr/> the overall
19314 frame rate of a given configured stream set is governed only by the
19315 largest requested stream resolution.<wbr/></li>
19316 <li>Using more than one output stream in a request does not affect the
19317 frame duration.<wbr/></li>
19318 <li>Certain format-streams may need to do additional background processing
19319 before data is consumed/<wbr/>produced by that stream.<wbr/> These processors
19320 can run concurrently to the rest of the camera pipeline,<wbr/> but
19321 cannot process more than 1 capture at a time.<wbr/></li>
19323 <p>The necessary information for the application,<wbr/> given the model above,<wbr/> is provided via
19324 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/>
19325 These are used to determine the maximum frame rate /<wbr/> minimum frame duration that is
19326 possible for a given stream configuration.<wbr/></p>
19327 <p>Specifically,<wbr/> the application can use the following rules to
19328 determine the minimum frame duration it can request from the camera
19331 <li>Let the set of currently configured input/<wbr/>output streams be called <code>S</code>.<wbr/></li>
19332 <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>
19333 (with its respective size/<wbr/>format).<wbr/> Let this set of frame durations be called <code>F</code>.<wbr/></li>
19334 <li>For any given request <code>R</code>,<wbr/> the minimum frame duration allowed for <code>R</code> is the maximum
19335 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>
19337 <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>
19338 using its respective size/<wbr/>format),<wbr/> then the frame duration in <code>F</code> determines the steady
19339 state frame rate that the application will get if it uses <code>R</code> as a repeating request.<wbr/> Let
19340 this special kind of request be called <code>Rsimple</code>.<wbr/></p>
19341 <p>A repeating request <code>Rsimple</code> can be <em>occasionally</em> interleaved by a single capture of a
19342 new request <code>Rstall</code> (which has at least one in-use stream with a non-0 stall time) and if
19343 <code>Rstall</code> has the same minimum frame duration this will not cause a frame rate loss if all
19344 buffers from the previous <code>Rstall</code> have already been delivered.<wbr/></p>
19345 <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>
19346 <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
19347 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
19351 <tr class="entries_header">
19352 <th class="th_details" colspan="6">HAL Implementation Details</th>
19354 <tr class="entry_cont">
19355 <td class="entry_details" colspan="6">
19356 <p>For more details about stalling,<wbr/> see
19357 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>.<wbr/></p>
19361 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19362 <!-- end of entry -->
19365 <tr class="entry" id="controls_android.sensor.sensitivity">
19366 <td class="entry_name
19368 android.<wbr/>sensor.<wbr/>sensitivity
19370 <td class="entry_type">
19371 <span class="entry_type_name">int32</span>
19373 <span class="entry_type_visibility"> [public]</span>
19376 <span class="entry_type_hwlevel">[full] </span>
19381 </td> <!-- entry_type -->
19383 <td class="entry_description">
19384 <p>The amount of gain applied to sensor data
19385 before processing.<wbr/></p>
19388 <td class="entry_units">
19389 ISO arithmetic units
19392 <td class="entry_range">
19393 <p><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></p>
19396 <td class="entry_hal_version">
19400 <td class="entry_tags">
19401 <ul class="entry_tags">
19402 <li><a href="#tag_V1">V1</a></li>
19407 <tr class="entries_header">
19408 <th class="th_details" colspan="6">Details</th>
19410 <tr class="entry_cont">
19411 <td class="entry_details" colspan="6">
19412 <p>The sensitivity is the standard ISO sensitivity value,<wbr/>
19413 as defined in ISO 12232:2006.<wbr/></p>
19414 <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
19415 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
19416 is guaranteed to use only analog amplification for applying the gain.<wbr/></p>
19417 <p>If the camera device cannot apply the exact sensitivity
19418 requested,<wbr/> it will reduce the gain to the nearest supported
19419 value.<wbr/> The final sensitivity used will be available in the
19420 output capture result.<wbr/></p>
19421 <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
19422 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
19426 <tr class="entries_header">
19427 <th class="th_details" colspan="6">HAL Implementation Details</th>
19429 <tr class="entry_cont">
19430 <td class="entry_details" colspan="6">
19431 <p>ISO 12232:2006 REI method is acceptable.<wbr/></p>
19435 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19436 <!-- end of entry -->
19439 <tr class="entry" id="controls_android.sensor.testPatternData">
19440 <td class="entry_name
19442 android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data
19444 <td class="entry_type">
19445 <span class="entry_type_name">int32</span>
19446 <span class="entry_type_container">x</span>
19448 <span class="entry_type_array">
19451 <span class="entry_type_visibility"> [public]</span>
19458 </td> <!-- entry_type -->
19460 <td class="entry_description">
19461 <p>A pixel <code>[R,<wbr/> G_<wbr/>even,<wbr/> G_<wbr/>odd,<wbr/> B]</code> that supplies the test pattern
19462 when <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a> is SOLID_<wbr/>COLOR.<wbr/></p>
19465 <td class="entry_units">
19468 <td class="entry_range">
19471 <td class="entry_hal_version">
19475 <td class="entry_tags">
19479 <tr class="entries_header">
19480 <th class="th_details" colspan="6">Details</th>
19482 <tr class="entry_cont">
19483 <td class="entry_details" colspan="6">
19484 <p>Each color channel is treated as an unsigned 32-bit integer.<wbr/>
19485 The camera device then uses the most significant X bits
19486 that correspond to how many bits are in its Bayer raw sensor
19488 <p>For example,<wbr/> a sensor with RAW10 Bayer output would use the
19489 10 most significant bits from each color channel.<wbr/></p>
19493 <tr class="entries_header">
19494 <th class="th_details" colspan="6">HAL Implementation Details</th>
19496 <tr class="entry_cont">
19497 <td class="entry_details" colspan="6">
19502 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19503 <!-- end of entry -->
19506 <tr class="entry" id="controls_android.sensor.testPatternMode">
19507 <td class="entry_name
19509 android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode
19511 <td class="entry_type">
19512 <span class="entry_type_name entry_type_name_enum">int32</span>
19514 <span class="entry_type_visibility"> [public]</span>
19520 <ul class="entry_type_enum">
19522 <span class="entry_type_enum_name">OFF</span>
19523 <span class="entry_type_enum_notes"><p>No test pattern mode is used,<wbr/> and the camera
19524 device returns captures from the image sensor.<wbr/></p>
19525 <p>This is the default if the key is not set.<wbr/></p></span>
19528 <span class="entry_type_enum_name">SOLID_COLOR</span>
19529 <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
19530 respective color channel provided in
19531 <a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a>.<wbr/></p>
19532 <p>For example:</p>
19533 <pre><code>android.<wbr/>testPatternData = [0,<wbr/> 0xFFFFFFFF,<wbr/> 0xFFFFFFFF,<wbr/> 0]
19535 <p>All green pixels are 100% green.<wbr/> All red/<wbr/>blue pixels are black.<wbr/></p>
19536 <pre><code>android.<wbr/>testPatternData = [0xFFFFFFFF,<wbr/> 0,<wbr/> 0xFFFFFFFF,<wbr/> 0]
19538 <p>All red pixels are 100% red.<wbr/> Only the odd green pixels
19539 are 100% green.<wbr/> All blue pixels are 100% black.<wbr/></p></span>
19542 <span class="entry_type_enum_name">COLOR_BARS</span>
19543 <span class="entry_type_enum_notes"><p>All pixel data is replaced with an 8-bar color pattern.<wbr/></p>
19544 <p>The vertical bars (left-to-right) are as follows:</p>
19546 <li>100% white</li>
19555 <p>In general the image would look like the following:</p>
19556 <pre><code>W Y C G M R B K
19561 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
19562 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
19563 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
19565 (B = Blue,<wbr/> K = Black)
19567 <p>Each bar should take up 1/<wbr/>8 of the sensor pixel array width.<wbr/>
19568 When this is not possible,<wbr/> the bar size should be rounded
19569 down to the nearest integer and the pattern can repeat
19570 on the right side.<wbr/></p>
19571 <p>Each bar's height must always take up the full sensor
19572 pixel array height.<wbr/></p>
19573 <p>Each pixel in this test pattern must be set to either
19574 0% intensity or 100% intensity.<wbr/></p></span>
19577 <span class="entry_type_enum_name">COLOR_BARS_FADE_TO_GRAY</span>
19578 <span class="entry_type_enum_notes"><p>The test pattern is similar to COLOR_<wbr/>BARS,<wbr/> except that
19579 each bar should start at its specified color at the top,<wbr/>
19580 and fade to gray at the bottom.<wbr/></p>
19581 <p>Furthermore each bar is further subdivided into a left and
19582 right half.<wbr/> The left half should have a smooth gradient,<wbr/>
19583 and the right half should have a quantized gradient.<wbr/></p>
19584 <p>In particular,<wbr/> the right half's should consist of blocks of the
19585 same color for 1/<wbr/>16th active sensor pixel array width.<wbr/></p>
19586 <p>The least significant bits in the quantized gradient should
19587 be copied from the most significant bits of the smooth gradient.<wbr/></p>
19588 <p>The height of each bar should always be a multiple of 128.<wbr/>
19589 When this is not the case,<wbr/> the pattern should repeat at the bottom
19590 of the image.<wbr/></p></span>
19593 <span class="entry_type_enum_name">PN9</span>
19594 <span class="entry_type_enum_notes"><p>All pixel data is replaced by a pseudo-random sequence
19595 generated from a PN9 512-bit sequence (typically implemented
19596 in hardware with a linear feedback shift register).<wbr/></p>
19597 <p>The generator should be reset at the beginning of each frame,<wbr/>
19598 and thus each subsequent raw frame with this test pattern should
19599 be exactly the same as the last.<wbr/></p></span>
19602 <span class="entry_type_enum_name">CUSTOM1</span>
19603 <span class="entry_type_enum_value">256</span>
19604 <span class="entry_type_enum_notes"><p>The first custom test pattern.<wbr/> All custom patterns that are
19605 available only on this camera device are at least this numeric
19607 <p>All of the custom test patterns will be static
19608 (that is the raw image must not vary from frame to frame).<wbr/></p></span>
19612 </td> <!-- entry_type -->
19614 <td class="entry_description">
19615 <p>When enabled,<wbr/> the sensor sends a test pattern instead of
19616 doing a real exposure from the camera.<wbr/></p>
19619 <td class="entry_units">
19622 <td class="entry_range">
19623 <p><a href="#static_android.sensor.availableTestPatternModes">android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes</a></p>
19626 <td class="entry_hal_version">
19630 <td class="entry_tags">
19634 <tr class="entries_header">
19635 <th class="th_details" colspan="6">Details</th>
19637 <tr class="entry_cont">
19638 <td class="entry_details" colspan="6">
19639 <p>When a test pattern is enabled,<wbr/> all manual sensor controls specified
19640 by android.<wbr/>sensor.<wbr/>* will be ignored.<wbr/> All other controls should
19641 work as normal.<wbr/></p>
19642 <p>For example,<wbr/> if manual flash is enabled,<wbr/> flash firing should still
19643 occur (and that the test pattern remain unmodified,<wbr/> since the flash
19644 would not actually affect it).<wbr/></p>
19645 <p>Defaults to OFF.<wbr/></p>
19649 <tr class="entries_header">
19650 <th class="th_details" colspan="6">HAL Implementation Details</th>
19652 <tr class="entry_cont">
19653 <td class="entry_details" colspan="6">
19654 <p>All test patterns are specified in the Bayer domain.<wbr/></p>
19655 <p>The HAL may choose to substitute test patterns from the sensor
19656 with test patterns from on-device memory.<wbr/> In that case,<wbr/> it should be
19657 indistinguishable to the ISP whether the data came from the
19658 sensor interconnect bus (such as CSI2) or memory.<wbr/></p>
19662 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19663 <!-- end of entry -->
19667 <!-- end of kind -->
19669 <tr><td colspan="7" class="kind">static</td></tr>
19671 <thead class="entries_header">
19673 <th class="th_name">Property Name</th>
19674 <th class="th_type">Type</th>
19675 <th class="th_description">Description</th>
19676 <th class="th_units">Units</th>
19677 <th class="th_range">Range</th>
19678 <th class="th_hal_version">Initial HIDL HAL version</th>
19679 <th class="th_tags">Tags</th>
19696 <tr class="entry" id="static_android.sensor.info.activeArraySize">
19697 <td class="entry_name
19699 android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
19701 <td class="entry_type">
19702 <span class="entry_type_name">int32</span>
19703 <span class="entry_type_container">x</span>
19705 <span class="entry_type_array">
19708 <span class="entry_type_visibility"> [public as rectangle]</span>
19711 <span class="entry_type_hwlevel">[legacy] </span>
19714 <div class="entry_type_notes">Four ints defining the active pixel rectangle</div>
19717 </td> <!-- entry_type -->
19719 <td class="entry_description">
19720 <p>The area of the image sensor which corresponds to active pixels after any geometric
19721 distortion correction has been applied.<wbr/></p>
19724 <td class="entry_units">
19725 Pixel coordinates on the image sensor
19728 <td class="entry_range">
19731 <td class="entry_hal_version">
19735 <td class="entry_tags">
19736 <ul class="entry_tags">
19737 <li><a href="#tag_RAW">RAW</a></li>
19742 <tr class="entries_header">
19743 <th class="th_details" colspan="6">Details</th>
19745 <tr class="entry_cont">
19746 <td class="entry_details" colspan="6">
19747 <p>This is the rectangle representing the size of the active region of the sensor (i.<wbr/>e.<wbr/>
19748 the region that actually receives light from the scene) after any geometric correction
19749 has been applied,<wbr/> and should be treated as the maximum size in pixels of any of the
19750 image output formats aside from the raw formats.<wbr/></p>
19751 <p>This rectangle is defined relative to the full pixel array; (0,<wbr/>0) is the top-left of
19752 the full pixel array,<wbr/> and the size of the full pixel array is given by
19753 <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
19754 <p>The coordinate system for most other keys that list pixel coordinates,<wbr/> including
19755 <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
19756 this field,<wbr/> with <code>(0,<wbr/> 0)</code> being the top-left of this rectangle.<wbr/></p>
19757 <p>The active array may be smaller than the full pixel array,<wbr/> since the full array may
19758 include black calibration pixels or other inactive regions,<wbr/> and geometric correction
19759 resulting in scaling or cropping may have been applied.<wbr/></p>
19763 <tr class="entries_header">
19764 <th class="th_details" colspan="6">HAL Implementation Details</th>
19766 <tr class="entry_cont">
19767 <td class="entry_details" colspan="6">
19768 <p>This array contains <code>(xmin,<wbr/> ymin,<wbr/> width,<wbr/> height)</code>.<wbr/> The <code>(xmin,<wbr/> ymin)</code> must be
19769 >= <code>(0,<wbr/>0)</code>.<wbr/>
19770 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>
19774 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19775 <!-- end of entry -->
19778 <tr class="entry" id="static_android.sensor.info.sensitivityRange">
19779 <td class="entry_name
19781 android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range
19783 <td class="entry_type">
19784 <span class="entry_type_name">int32</span>
19785 <span class="entry_type_container">x</span>
19787 <span class="entry_type_array">
19790 <span class="entry_type_visibility"> [public as rangeInt]</span>
19793 <span class="entry_type_hwlevel">[full] </span>
19796 <div class="entry_type_notes">Range of supported sensitivities</div>
19799 </td> <!-- entry_type -->
19801 <td class="entry_description">
19802 <p>Range of sensitivities for <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> supported by this
19803 camera device.<wbr/></p>
19806 <td class="entry_units">
19809 <td class="entry_range">
19810 <p>Min <= 100,<wbr/> Max >= 800</p>
19813 <td class="entry_hal_version">
19817 <td class="entry_tags">
19818 <ul class="entry_tags">
19819 <li><a href="#tag_BC">BC</a></li>
19820 <li><a href="#tag_V1">V1</a></li>
19825 <tr class="entries_header">
19826 <th class="th_details" colspan="6">Details</th>
19828 <tr class="entry_cont">
19829 <td class="entry_details" colspan="6">
19830 <p>The values are the standard ISO sensitivity values,<wbr/>
19831 as defined in ISO 12232:2006.<wbr/></p>
19836 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19837 <!-- end of entry -->
19840 <tr class="entry" id="static_android.sensor.info.colorFilterArrangement">
19841 <td class="entry_name
19843 android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement
19845 <td class="entry_type">
19846 <span class="entry_type_name entry_type_name_enum">byte</span>
19848 <span class="entry_type_visibility"> [public]</span>
19851 <span class="entry_type_hwlevel">[full] </span>
19855 <ul class="entry_type_enum">
19857 <span class="entry_type_enum_name">RGGB</span>
19860 <span class="entry_type_enum_name">GRBG</span>
19863 <span class="entry_type_enum_name">GBRG</span>
19866 <span class="entry_type_enum_name">BGGR</span>
19869 <span class="entry_type_enum_name">RGB</span>
19870 <span class="entry_type_enum_notes"><p>Sensor is not Bayer; output has 3 16-bit
19871 values for each pixel,<wbr/> instead of just 1 16-bit value
19872 per pixel.<wbr/></p></span>
19876 </td> <!-- entry_type -->
19878 <td class="entry_description">
19879 <p>The arrangement of color filters on sensor;
19880 represents the colors in the top-left 2x2 section of
19881 the sensor,<wbr/> in reading order.<wbr/></p>
19884 <td class="entry_units">
19887 <td class="entry_range">
19890 <td class="entry_hal_version">
19894 <td class="entry_tags">
19895 <ul class="entry_tags">
19896 <li><a href="#tag_RAW">RAW</a></li>
19903 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19904 <!-- end of entry -->
19907 <tr class="entry" id="static_android.sensor.info.exposureTimeRange">
19908 <td class="entry_name
19910 android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range
19912 <td class="entry_type">
19913 <span class="entry_type_name">int64</span>
19914 <span class="entry_type_container">x</span>
19916 <span class="entry_type_array">
19919 <span class="entry_type_visibility"> [public as rangeLong]</span>
19922 <span class="entry_type_hwlevel">[full] </span>
19925 <div class="entry_type_notes">nanoseconds</div>
19928 </td> <!-- entry_type -->
19930 <td class="entry_description">
19931 <p>The range of image exposure times for <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> supported
19932 by this camera device.<wbr/></p>
19935 <td class="entry_units">
19939 <td class="entry_range">
19940 <p>The minimum exposure time will be less than 100 us.<wbr/> For FULL
19941 capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/>
19942 the maximum exposure time will be greater than 100ms.<wbr/></p>
19945 <td class="entry_hal_version">
19949 <td class="entry_tags">
19950 <ul class="entry_tags">
19951 <li><a href="#tag_V1">V1</a></li>
19957 <tr class="entries_header">
19958 <th class="th_details" colspan="6">HAL Implementation Details</th>
19960 <tr class="entry_cont">
19961 <td class="entry_details" colspan="6">
19962 <p>For FULL capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/>
19963 The maximum of the range SHOULD be at least 1 second (1e9),<wbr/> MUST be at least
19968 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19969 <!-- end of entry -->
19972 <tr class="entry" id="static_android.sensor.info.maxFrameDuration">
19973 <td class="entry_name
19975 android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration
19977 <td class="entry_type">
19978 <span class="entry_type_name">int64</span>
19980 <span class="entry_type_visibility"> [public]</span>
19983 <span class="entry_type_hwlevel">[full] </span>
19988 </td> <!-- entry_type -->
19990 <td class="entry_description">
19991 <p>The maximum possible frame duration (minimum frame rate) for
19992 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> that is supported this camera device.<wbr/></p>
19995 <td class="entry_units">
19999 <td class="entry_range">
20000 <p>For FULL capability devices
20001 (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/> at least 100ms.<wbr/></p>
20004 <td class="entry_hal_version">
20008 <td class="entry_tags">
20009 <ul class="entry_tags">
20010 <li><a href="#tag_V1">V1</a></li>
20015 <tr class="entries_header">
20016 <th class="th_details" colspan="6">Details</th>
20018 <tr class="entry_cont">
20019 <td class="entry_details" colspan="6">
20020 <p>Attempting to use frame durations beyond the maximum will result in the frame
20021 duration being clipped to the maximum.<wbr/> See that control for a full definition of frame
20022 durations.<wbr/></p>
20023 <p>Refer to <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>
20024 for the minimum frame duration values.<wbr/></p>
20028 <tr class="entries_header">
20029 <th class="th_details" colspan="6">HAL Implementation Details</th>
20031 <tr class="entry_cont">
20032 <td class="entry_details" colspan="6">
20033 <p>For FULL capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/>
20034 The maximum of the range SHOULD be at least
20035 1 second (1e9),<wbr/> MUST be at least 100ms (100e6).<wbr/></p>
20036 <p><a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a> must be greater or
20037 equal to the <a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a> max
20038 value (since exposure time overrides frame duration).<wbr/></p>
20039 <p>Available minimum frame durations for JPEG must be no greater
20040 than that of the YUV_<wbr/>420_<wbr/>888/<wbr/>IMPLEMENTATION_<wbr/>DEFINED
20041 minimum frame durations (for that respective size).<wbr/></p>
20042 <p>Since JPEG processing is considered offline and can take longer than
20043 a single uncompressed capture,<wbr/> refer to
20044 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>
20045 for details about encoding this scenario.<wbr/></p>
20049 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20050 <!-- end of entry -->
20053 <tr class="entry" id="static_android.sensor.info.physicalSize">
20054 <td class="entry_name
20056 android.<wbr/>sensor.<wbr/>info.<wbr/>physical<wbr/>Size
20058 <td class="entry_type">
20059 <span class="entry_type_name">float</span>
20060 <span class="entry_type_container">x</span>
20062 <span class="entry_type_array">
20065 <span class="entry_type_visibility"> [public as sizeF]</span>
20068 <span class="entry_type_hwlevel">[legacy] </span>
20071 <div class="entry_type_notes">width x height</div>
20074 </td> <!-- entry_type -->
20076 <td class="entry_description">
20077 <p>The physical dimensions of the full pixel
20081 <td class="entry_units">
20085 <td class="entry_range">
20088 <td class="entry_hal_version">
20092 <td class="entry_tags">
20093 <ul class="entry_tags">
20094 <li><a href="#tag_V1">V1</a></li>
20095 <li><a href="#tag_BC">BC</a></li>
20100 <tr class="entries_header">
20101 <th class="th_details" colspan="6">Details</th>
20103 <tr class="entry_cont">
20104 <td class="entry_details" colspan="6">
20105 <p>This is the physical size of the sensor pixel
20106 array defined by <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
20110 <tr class="entries_header">
20111 <th class="th_details" colspan="6">HAL Implementation Details</th>
20113 <tr class="entry_cont">
20114 <td class="entry_details" colspan="6">
20115 <p>Needed for FOV calculation for old API</p>
20119 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20120 <!-- end of entry -->
20123 <tr class="entry" id="static_android.sensor.info.pixelArraySize">
20124 <td class="entry_name
20126 android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size
20128 <td class="entry_type">
20129 <span class="entry_type_name">int32</span>
20130 <span class="entry_type_container">x</span>
20132 <span class="entry_type_array">
20135 <span class="entry_type_visibility"> [public as size]</span>
20138 <span class="entry_type_hwlevel">[legacy] </span>
20143 </td> <!-- entry_type -->
20145 <td class="entry_description">
20146 <p>Dimensions of the full pixel array,<wbr/> possibly
20147 including black calibration pixels.<wbr/></p>
20150 <td class="entry_units">
20154 <td class="entry_range">
20157 <td class="entry_hal_version">
20161 <td class="entry_tags">
20162 <ul class="entry_tags">
20163 <li><a href="#tag_RAW">RAW</a></li>
20164 <li><a href="#tag_BC">BC</a></li>
20169 <tr class="entries_header">
20170 <th class="th_details" colspan="6">Details</th>
20172 <tr class="entry_cont">
20173 <td class="entry_details" colspan="6">
20174 <p>The pixel count of the full pixel array of the image sensor,<wbr/> which covers
20175 <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
20176 the raw buffers produced by this sensor.<wbr/></p>
20177 <p>If a camera device supports raw sensor formats,<wbr/> either this or
20178 <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
20179 output formats listed in <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html">StreamConfigurationMap</a>
20180 (this depends on whether or not the image sensor returns buffers containing pixels that
20181 are not part of the active array region for blacklevel calibration or other purposes).<wbr/></p>
20182 <p>Some parts of the full pixel array may not receive light from the scene,<wbr/>
20183 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
20184 defines the rectangle of active pixels that will be included in processed image
20190 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20191 <!-- end of entry -->
20194 <tr class="entry" id="static_android.sensor.info.whiteLevel">
20195 <td class="entry_name
20197 android.<wbr/>sensor.<wbr/>info.<wbr/>white<wbr/>Level
20199 <td class="entry_type">
20200 <span class="entry_type_name">int32</span>
20202 <span class="entry_type_visibility"> [public]</span>
20209 </td> <!-- entry_type -->
20211 <td class="entry_description">
20212 <p>Maximum raw value output by sensor.<wbr/></p>
20215 <td class="entry_units">
20218 <td class="entry_range">
20219 <p>> 255 (8-bit output)</p>
20222 <td class="entry_hal_version">
20226 <td class="entry_tags">
20227 <ul class="entry_tags">
20228 <li><a href="#tag_RAW">RAW</a></li>
20233 <tr class="entries_header">
20234 <th class="th_details" colspan="6">Details</th>
20236 <tr class="entry_cont">
20237 <td class="entry_details" colspan="6">
20238 <p>This specifies the fully-saturated encoding level for the raw
20239 sample values from the sensor.<wbr/> This is typically caused by the
20240 sensor becoming highly non-linear or clipping.<wbr/> The minimum for
20241 each channel is specified by the offset in the
20242 <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> key.<wbr/></p>
20243 <p>The white level is typically determined either by sensor bit depth
20244 (8-14 bits is expected),<wbr/> or by the point where the sensor response
20245 becomes too non-linear to be useful.<wbr/> The default value for this is
20246 maximum representable value for a 16-bit raw sample (2^16 - 1).<wbr/></p>
20247 <p>The white level values of captured images may vary for different
20248 capture settings (e.<wbr/>g.,<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>).<wbr/> This key
20249 represents a coarse approximation for such case.<wbr/> It is recommended
20250 to use <a href="#dynamic_android.sensor.dynamicWhiteLevel">android.<wbr/>sensor.<wbr/>dynamic<wbr/>White<wbr/>Level</a> for captures when supported
20251 by the camera device,<wbr/> which provides more accurate white level values.<wbr/></p>
20255 <tr class="entries_header">
20256 <th class="th_details" colspan="6">HAL Implementation Details</th>
20258 <tr class="entry_cont">
20259 <td class="entry_details" colspan="6">
20260 <p>The full bit depth of the sensor must be available in the raw data,<wbr/>
20261 so the value for linear sensors should not be significantly lower
20262 than maximum raw value supported,<wbr/> i.<wbr/>e.<wbr/> 2^(sensor bits per pixel).<wbr/></p>
20266 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20267 <!-- end of entry -->
20270 <tr class="entry" id="static_android.sensor.info.timestampSource">
20271 <td class="entry_name
20273 android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source
20275 <td class="entry_type">
20276 <span class="entry_type_name entry_type_name_enum">byte</span>
20278 <span class="entry_type_visibility"> [public]</span>
20281 <span class="entry_type_hwlevel">[legacy] </span>
20285 <ul class="entry_type_enum">
20287 <span class="entry_type_enum_name">UNKNOWN</span>
20288 <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/>
20289 but can not be compared to timestamps from other subsystems
20290 (e.<wbr/>g.<wbr/> accelerometer,<wbr/> gyro etc.<wbr/>),<wbr/> or other instances of the same or different
20291 camera devices in the same system.<wbr/> Timestamps between streams and results for
20292 a single camera instance are comparable,<wbr/> and the timestamps for all buffers
20293 and the result metadata generated by a single capture are identical.<wbr/></p></span>
20296 <span class="entry_type_enum_name">REALTIME</span>
20297 <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
20298 <a href="https://developer.android.com/reference/android/os/SystemClock.html#elapsedRealtimeNanos">SystemClock#elapsedRealtimeNanos</a>,<wbr/>
20299 and they can be compared to other timestamps using that base.<wbr/></p></span>
20303 </td> <!-- entry_type -->
20305 <td class="entry_description">
20306 <p>The time base source for sensor capture start timestamps.<wbr/></p>
20309 <td class="entry_units">
20312 <td class="entry_range">
20315 <td class="entry_hal_version">
20319 <td class="entry_tags">
20320 <ul class="entry_tags">
20321 <li><a href="#tag_V1">V1</a></li>
20326 <tr class="entries_header">
20327 <th class="th_details" colspan="6">Details</th>
20329 <tr class="entry_cont">
20330 <td class="entry_details" colspan="6">
20331 <p>The timestamps provided for captures are always in nanoseconds and monotonic,<wbr/> but
20332 may not based on a time source that can be compared to other system time sources.<wbr/></p>
20333 <p>This characteristic defines the source for the timestamps,<wbr/> and therefore whether they
20334 can be compared against other system time sources/<wbr/>timestamps.<wbr/></p>
20338 <tr class="entries_header">
20339 <th class="th_details" colspan="6">HAL Implementation Details</th>
20341 <tr class="entry_cont">
20342 <td class="entry_details" colspan="6">
20343 <p>For camera devices implement UNKNOWN,<wbr/> the camera framework expects that the timestamp
20344 source to be SYSTEM_<wbr/>TIME_<wbr/>MONOTONIC.<wbr/> For camera devices implement REALTIME,<wbr/> the camera
20345 framework expects that the timestamp source to be SYSTEM_<wbr/>TIME_<wbr/>BOOTTIME.<wbr/> See
20346 system/<wbr/>core/<wbr/>include/<wbr/>utils/<wbr/>Timers.<wbr/>h for the definition of SYSTEM_<wbr/>TIME_<wbr/>MONOTONIC and
20347 SYSTEM_<wbr/>TIME_<wbr/>BOOTTIME.<wbr/> Note that HAL must follow above expectation; otherwise video
20348 recording might suffer unexpected behavior.<wbr/></p>
20349 <p>Also,<wbr/> camera devices which implement REALTIME must pass the ITS sensor fusion test which
20350 tests the alignment between camera timestamps and gyro sensor timestamps.<wbr/></p>
20354 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20355 <!-- end of entry -->
20358 <tr class="entry" id="static_android.sensor.info.lensShadingApplied">
20359 <td class="entry_name
20361 android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied
20363 <td class="entry_type">
20364 <span class="entry_type_name entry_type_name_enum">byte</span>
20366 <span class="entry_type_visibility"> [public as boolean]</span>
20372 <ul class="entry_type_enum">
20374 <span class="entry_type_enum_name">FALSE</span>
20377 <span class="entry_type_enum_name">TRUE</span>
20381 </td> <!-- entry_type -->
20383 <td class="entry_description">
20384 <p>Whether the RAW images output from this camera device are subject to
20385 lens shading correction.<wbr/></p>
20388 <td class="entry_units">
20391 <td class="entry_range">
20394 <td class="entry_hal_version">
20398 <td class="entry_tags">
20402 <tr class="entries_header">
20403 <th class="th_details" colspan="6">Details</th>
20405 <tr class="entry_cont">
20406 <td class="entry_details" colspan="6">
20407 <p>If TRUE,<wbr/> all images produced by the camera device in the RAW image formats will
20408 have lens shading correction already applied to it.<wbr/> If FALSE,<wbr/> the images will
20409 not be adjusted for lens shading correction.<wbr/>
20410 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>
20411 <p>This key will be <code>null</code> for all devices do not report this information.<wbr/>
20412 Devices with RAW capability will always report this information in this key.<wbr/></p>
20417 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20418 <!-- end of entry -->
20421 <tr class="entry" id="static_android.sensor.info.preCorrectionActiveArraySize">
20422 <td class="entry_name
20424 android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size
20426 <td class="entry_type">
20427 <span class="entry_type_name">int32</span>
20428 <span class="entry_type_container">x</span>
20430 <span class="entry_type_array">
20433 <span class="entry_type_visibility"> [public as rectangle]</span>
20436 <span class="entry_type_hwlevel">[legacy] </span>
20439 <div class="entry_type_notes">Four ints defining the active pixel rectangle</div>
20442 </td> <!-- entry_type -->
20444 <td class="entry_description">
20445 <p>The area of the image sensor which corresponds to active pixels prior to the
20446 application of any geometric distortion correction.<wbr/></p>
20449 <td class="entry_units">
20450 Pixel coordinates on the image sensor
20453 <td class="entry_range">
20456 <td class="entry_hal_version">
20460 <td class="entry_tags">
20461 <ul class="entry_tags">
20462 <li><a href="#tag_RAW">RAW</a></li>
20467 <tr class="entries_header">
20468 <th class="th_details" colspan="6">Details</th>
20470 <tr class="entry_cont">
20471 <td class="entry_details" colspan="6">
20472 <p>This is the rectangle representing the size of the active region of the sensor (i.<wbr/>e.<wbr/>
20473 the region that actually receives light from the scene) before any geometric correction
20474 has been applied,<wbr/> and should be treated as the active region rectangle for any of the
20475 raw formats.<wbr/> All metadata associated with raw processing (e.<wbr/>g.<wbr/> the lens shading
20476 correction map,<wbr/> and radial distortion fields) treats the top,<wbr/> left of this rectangle as
20477 the origin,<wbr/> (0,<wbr/>0).<wbr/></p>
20478 <p>The size of this region determines the maximum field of view and the maximum number of
20479 pixels that an image from this sensor can contain,<wbr/> prior to the application of
20480 geometric distortion correction.<wbr/> The effective maximum pixel dimensions of a
20481 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>
20482 field,<wbr/> and the effective maximum field of view for a post-distortion-corrected image
20483 can be calculated by applying the geometric distortion correction fields to this
20484 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>
20485 <p>E.<wbr/>g.<wbr/> to calculate position of a pixel,<wbr/> (x,<wbr/>y),<wbr/> in a processed YUV output image with the
20486 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/>
20487 (x',<wbr/> y'),<wbr/> in the raw pixel array with dimensions give in
20488 <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>:</p>
20490 <li>Choose a pixel (x',<wbr/> y') within the active array region of the raw buffer given in
20491 <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
20492 to be outside of the FOV,<wbr/> and will not be shown in the processed output image.<wbr/></li>
20493 <li>Apply geometric distortion correction to get the post-distortion pixel coordinate,<wbr/>
20494 (x_<wbr/>i,<wbr/> y_<wbr/>i).<wbr/> When applying geometric correction metadata,<wbr/> note that metadata for raw
20495 buffers is defined relative to the top,<wbr/> left of the
20496 <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>
20497 <li>If the resulting corrected pixel coordinate is within the region given in
20498 <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
20499 processed output image buffer is <code>(x_<wbr/>i - activeArray.<wbr/>left,<wbr/> y_<wbr/>i - activeArray.<wbr/>top)</code>,<wbr/>
20500 when the top,<wbr/> left coordinate of that buffer is treated as (0,<wbr/> 0).<wbr/></li>
20502 <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>
20503 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/>
20504 <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
20505 correction doesn't change the pixel coordinate,<wbr/> the resulting pixel selected in
20506 pixel coordinates would be x,<wbr/>y = (25,<wbr/> 25) relative to the top,<wbr/>left of the raw buffer
20507 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)
20508 relative to the top,<wbr/>left of post-processed YUV output buffer with dimensions given in
20509 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
20510 <p>The currently supported fields that correct for geometric distortion are:</p>
20512 <li><a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a>.<wbr/></li>
20514 <p>If all of the geometric distortion fields are no-ops,<wbr/> this rectangle will be the same
20515 as the post-distortion-corrected rectangle given in
20516 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
20517 <p>This rectangle is defined relative to the full pixel array; (0,<wbr/>0) is the top-left of
20518 the full pixel array,<wbr/> and the size of the full pixel array is given by
20519 <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
20520 <p>The pre-correction active array may be smaller than the full pixel array,<wbr/> since the
20521 full array may include black calibration pixels or other inactive regions.<wbr/></p>
20525 <tr class="entries_header">
20526 <th class="th_details" colspan="6">HAL Implementation Details</th>
20528 <tr class="entry_cont">
20529 <td class="entry_details" colspan="6">
20530 <p>This array contains <code>(xmin,<wbr/> ymin,<wbr/> width,<wbr/> height)</code>.<wbr/> The <code>(xmin,<wbr/> ymin)</code> must be
20531 >= <code>(0,<wbr/>0)</code>.<wbr/>
20532 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>
20533 <p>If omitted by the HAL implementation,<wbr/> the camera framework will assume that this is
20534 the same as the post-correction active array region given in
20535 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
20539 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20540 <!-- end of entry -->
20546 <tr class="entry" id="static_android.sensor.referenceIlluminant1">
20547 <td class="entry_name
20549 android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1
20551 <td class="entry_type">
20552 <span class="entry_type_name entry_type_name_enum">byte</span>
20554 <span class="entry_type_visibility"> [public]</span>
20560 <ul class="entry_type_enum">
20562 <span class="entry_type_enum_name">DAYLIGHT</span>
20563 <span class="entry_type_enum_value">1</span>
20566 <span class="entry_type_enum_name">FLUORESCENT</span>
20567 <span class="entry_type_enum_value">2</span>
20570 <span class="entry_type_enum_name">TUNGSTEN</span>
20571 <span class="entry_type_enum_value">3</span>
20572 <span class="entry_type_enum_notes"><p>Incandescent light</p></span>
20575 <span class="entry_type_enum_name">FLASH</span>
20576 <span class="entry_type_enum_value">4</span>
20579 <span class="entry_type_enum_name">FINE_WEATHER</span>
20580 <span class="entry_type_enum_value">9</span>
20583 <span class="entry_type_enum_name">CLOUDY_WEATHER</span>
20584 <span class="entry_type_enum_value">10</span>
20587 <span class="entry_type_enum_name">SHADE</span>
20588 <span class="entry_type_enum_value">11</span>
20591 <span class="entry_type_enum_name">DAYLIGHT_FLUORESCENT</span>
20592 <span class="entry_type_enum_value">12</span>
20593 <span class="entry_type_enum_notes"><p>D 5700 - 7100K</p></span>
20596 <span class="entry_type_enum_name">DAY_WHITE_FLUORESCENT</span>
20597 <span class="entry_type_enum_value">13</span>
20598 <span class="entry_type_enum_notes"><p>N 4600 - 5400K</p></span>
20601 <span class="entry_type_enum_name">COOL_WHITE_FLUORESCENT</span>
20602 <span class="entry_type_enum_value">14</span>
20603 <span class="entry_type_enum_notes"><p>W 3900 - 4500K</p></span>
20606 <span class="entry_type_enum_name">WHITE_FLUORESCENT</span>
20607 <span class="entry_type_enum_value">15</span>
20608 <span class="entry_type_enum_notes"><p>WW 3200 - 3700K</p></span>
20611 <span class="entry_type_enum_name">STANDARD_A</span>
20612 <span class="entry_type_enum_value">17</span>
20615 <span class="entry_type_enum_name">STANDARD_B</span>
20616 <span class="entry_type_enum_value">18</span>
20619 <span class="entry_type_enum_name">STANDARD_C</span>
20620 <span class="entry_type_enum_value">19</span>
20623 <span class="entry_type_enum_name">D55</span>
20624 <span class="entry_type_enum_value">20</span>
20627 <span class="entry_type_enum_name">D65</span>
20628 <span class="entry_type_enum_value">21</span>
20631 <span class="entry_type_enum_name">D75</span>
20632 <span class="entry_type_enum_value">22</span>
20635 <span class="entry_type_enum_name">D50</span>
20636 <span class="entry_type_enum_value">23</span>
20639 <span class="entry_type_enum_name">ISO_STUDIO_TUNGSTEN</span>
20640 <span class="entry_type_enum_value">24</span>
20644 </td> <!-- entry_type -->
20646 <td class="entry_description">
20647 <p>The standard reference illuminant used as the scene light source when
20648 calculating the <a href="#static_android.sensor.colorTransform1">android.<wbr/>sensor.<wbr/>color<wbr/>Transform1</a>,<wbr/>
20649 <a href="#static_android.sensor.calibrationTransform1">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1</a>,<wbr/> and
20650 <a href="#static_android.sensor.forwardMatrix1">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1</a> matrices.<wbr/></p>
20653 <td class="entry_units">
20656 <td class="entry_range">
20659 <td class="entry_hal_version">
20663 <td class="entry_tags">
20664 <ul class="entry_tags">
20665 <li><a href="#tag_RAW">RAW</a></li>
20670 <tr class="entries_header">
20671 <th class="th_details" colspan="6">Details</th>
20673 <tr class="entry_cont">
20674 <td class="entry_details" colspan="6">
20675 <p>The values in this key correspond to the values defined for the
20676 EXIF LightSource tag.<wbr/> These illuminants are standard light sources
20677 that are often used calibrating camera devices.<wbr/></p>
20678 <p>If this key is present,<wbr/> then <a href="#static_android.sensor.colorTransform1">android.<wbr/>sensor.<wbr/>color<wbr/>Transform1</a>,<wbr/>
20679 <a href="#static_android.sensor.calibrationTransform1">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1</a>,<wbr/> and
20680 <a href="#static_android.sensor.forwardMatrix1">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1</a> will also be present.<wbr/></p>
20681 <p>Some devices may choose to provide a second set of calibration
20682 information for improved quality,<wbr/> including
20683 <a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> and its corresponding matrices.<wbr/></p>
20687 <tr class="entries_header">
20688 <th class="th_details" colspan="6">HAL Implementation Details</th>
20690 <tr class="entry_cont">
20691 <td class="entry_details" colspan="6">
20692 <p>The first reference illuminant (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>)
20693 and corresponding matrices must be present to support the RAW capability
20694 and DNG output.<wbr/></p>
20695 <p>When producing raw images with a color profile that has only been
20696 calibrated against a single light source,<wbr/> it is valid to omit
20697 <a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> along with the
20698 <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/>
20699 and <a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> matrices.<wbr/></p>
20700 <p>If only <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> is included,<wbr/> it should be
20701 chosen so that it is representative of typical scene lighting.<wbr/> In
20702 general,<wbr/> D50 or DAYLIGHT will be chosen for this case.<wbr/></p>
20703 <p>If both <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> and
20704 <a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> are included,<wbr/> they should be
20705 chosen to represent the typical range of scene lighting conditions.<wbr/>
20706 In general,<wbr/> low color temperature illuminant such as Standard-A will
20707 be chosen for the first reference illuminant and a higher color
20708 temperature illuminant such as D65 will be chosen for the second
20709 reference illuminant.<wbr/></p>
20713 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20714 <!-- end of entry -->
20717 <tr class="entry" id="static_android.sensor.referenceIlluminant2">
20718 <td class="entry_name
20720 android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2
20722 <td class="entry_type">
20723 <span class="entry_type_name">byte</span>
20725 <span class="entry_type_visibility"> [public]</span>
20732 </td> <!-- entry_type -->
20734 <td class="entry_description">
20735 <p>The standard reference illuminant used as the scene light source when
20736 calculating the <a href="#static_android.sensor.colorTransform2">android.<wbr/>sensor.<wbr/>color<wbr/>Transform2</a>,<wbr/>
20737 <a href="#static_android.sensor.calibrationTransform2">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2</a>,<wbr/> and
20738 <a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> matrices.<wbr/></p>
20741 <td class="entry_units">
20744 <td class="entry_range">
20745 <p>Any value listed in <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a></p>
20748 <td class="entry_hal_version">
20752 <td class="entry_tags">
20753 <ul class="entry_tags">
20754 <li><a href="#tag_RAW">RAW</a></li>
20759 <tr class="entries_header">
20760 <th class="th_details" colspan="6">Details</th>
20762 <tr class="entry_cont">
20763 <td class="entry_details" colspan="6">
20764 <p>See <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> for more details.<wbr/></p>
20765 <p>If this key is present,<wbr/> then <a href="#static_android.sensor.colorTransform2">android.<wbr/>sensor.<wbr/>color<wbr/>Transform2</a>,<wbr/>
20766 <a href="#static_android.sensor.calibrationTransform2">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2</a>,<wbr/> and
20767 <a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> will also be present.<wbr/></p>
20772 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20773 <!-- end of entry -->
20776 <tr class="entry" id="static_android.sensor.calibrationTransform1">
20777 <td class="entry_name
20779 android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1
20781 <td class="entry_type">
20782 <span class="entry_type_name">rational</span>
20783 <span class="entry_type_container">x</span>
20785 <span class="entry_type_array">
20788 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
20793 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
20796 </td> <!-- entry_type -->
20798 <td class="entry_description">
20799 <p>A per-device calibration transform matrix that maps from the
20800 reference sensor colorspace to the actual device sensor colorspace.<wbr/></p>
20803 <td class="entry_units">
20806 <td class="entry_range">
20809 <td class="entry_hal_version">
20813 <td class="entry_tags">
20814 <ul class="entry_tags">
20815 <li><a href="#tag_RAW">RAW</a></li>
20820 <tr class="entries_header">
20821 <th class="th_details" colspan="6">Details</th>
20823 <tr class="entry_cont">
20824 <td class="entry_details" colspan="6">
20825 <p>This matrix is used to correct for per-device variations in the
20826 sensor colorspace,<wbr/> and is used for processing raw buffer data.<wbr/></p>
20827 <p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
20828 contains a per-device calibration transform that maps colors
20829 from reference sensor color space (i.<wbr/>e.<wbr/> the "golden module"
20830 colorspace) into this camera device's native sensor color
20831 space under the first reference illuminant
20832 (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>).<wbr/></p>
20837 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20838 <!-- end of entry -->
20841 <tr class="entry" id="static_android.sensor.calibrationTransform2">
20842 <td class="entry_name
20844 android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2
20846 <td class="entry_type">
20847 <span class="entry_type_name">rational</span>
20848 <span class="entry_type_container">x</span>
20850 <span class="entry_type_array">
20853 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
20858 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
20861 </td> <!-- entry_type -->
20863 <td class="entry_description">
20864 <p>A per-device calibration transform matrix that maps from the
20865 reference sensor colorspace to the actual device sensor colorspace
20866 (this is the colorspace of the raw buffer data).<wbr/></p>
20869 <td class="entry_units">
20872 <td class="entry_range">
20875 <td class="entry_hal_version">
20879 <td class="entry_tags">
20880 <ul class="entry_tags">
20881 <li><a href="#tag_RAW">RAW</a></li>
20886 <tr class="entries_header">
20887 <th class="th_details" colspan="6">Details</th>
20889 <tr class="entry_cont">
20890 <td class="entry_details" colspan="6">
20891 <p>This matrix is used to correct for per-device variations in the
20892 sensor colorspace,<wbr/> and is used for processing raw buffer data.<wbr/></p>
20893 <p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
20894 contains a per-device calibration transform that maps colors
20895 from reference sensor color space (i.<wbr/>e.<wbr/> the "golden module"
20896 colorspace) into this camera device's native sensor color
20897 space under the second reference illuminant
20898 (<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>).<wbr/></p>
20899 <p>This matrix will only be present if the second reference
20900 illuminant is present.<wbr/></p>
20905 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20906 <!-- end of entry -->
20909 <tr class="entry" id="static_android.sensor.colorTransform1">
20910 <td class="entry_name
20912 android.<wbr/>sensor.<wbr/>color<wbr/>Transform1
20914 <td class="entry_type">
20915 <span class="entry_type_name">rational</span>
20916 <span class="entry_type_container">x</span>
20918 <span class="entry_type_array">
20921 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
20926 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
20929 </td> <!-- entry_type -->
20931 <td class="entry_description">
20932 <p>A matrix that transforms color values from CIE XYZ color space to
20933 reference sensor color space.<wbr/></p>
20936 <td class="entry_units">
20939 <td class="entry_range">
20942 <td class="entry_hal_version">
20946 <td class="entry_tags">
20947 <ul class="entry_tags">
20948 <li><a href="#tag_RAW">RAW</a></li>
20953 <tr class="entries_header">
20954 <th class="th_details" colspan="6">Details</th>
20956 <tr class="entry_cont">
20957 <td class="entry_details" colspan="6">
20958 <p>This matrix is used to convert from the standard CIE XYZ color
20959 space to the reference sensor colorspace,<wbr/> and is used when processing
20960 raw buffer data.<wbr/></p>
20961 <p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
20962 contains a color transform matrix that maps colors from the CIE
20963 XYZ color space to the reference sensor color space (i.<wbr/>e.<wbr/> the
20964 "golden module" colorspace) under the first reference illuminant
20965 (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>).<wbr/></p>
20966 <p>The white points chosen in both the reference sensor color space
20967 and the CIE XYZ colorspace when calculating this transform will
20968 match the standard white point for the first reference illuminant
20969 (i.<wbr/>e.<wbr/> no chromatic adaptation will be applied by this transform).<wbr/></p>
20974 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20975 <!-- end of entry -->
20978 <tr class="entry" id="static_android.sensor.colorTransform2">
20979 <td class="entry_name
20981 android.<wbr/>sensor.<wbr/>color<wbr/>Transform2
20983 <td class="entry_type">
20984 <span class="entry_type_name">rational</span>
20985 <span class="entry_type_container">x</span>
20987 <span class="entry_type_array">
20990 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
20995 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
20998 </td> <!-- entry_type -->
21000 <td class="entry_description">
21001 <p>A matrix that transforms color values from CIE XYZ color space to
21002 reference sensor color space.<wbr/></p>
21005 <td class="entry_units">
21008 <td class="entry_range">
21011 <td class="entry_hal_version">
21015 <td class="entry_tags">
21016 <ul class="entry_tags">
21017 <li><a href="#tag_RAW">RAW</a></li>
21022 <tr class="entries_header">
21023 <th class="th_details" colspan="6">Details</th>
21025 <tr class="entry_cont">
21026 <td class="entry_details" colspan="6">
21027 <p>This matrix is used to convert from the standard CIE XYZ color
21028 space to the reference sensor colorspace,<wbr/> and is used when processing
21029 raw buffer data.<wbr/></p>
21030 <p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
21031 contains a color transform matrix that maps colors from the CIE
21032 XYZ color space to the reference sensor color space (i.<wbr/>e.<wbr/> the
21033 "golden module" colorspace) under the second reference illuminant
21034 (<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>).<wbr/></p>
21035 <p>The white points chosen in both the reference sensor color space
21036 and the CIE XYZ colorspace when calculating this transform will
21037 match the standard white point for the second reference illuminant
21038 (i.<wbr/>e.<wbr/> no chromatic adaptation will be applied by this transform).<wbr/></p>
21039 <p>This matrix will only be present if the second reference
21040 illuminant is present.<wbr/></p>
21045 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21046 <!-- end of entry -->
21049 <tr class="entry" id="static_android.sensor.forwardMatrix1">
21050 <td class="entry_name
21052 android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1
21054 <td class="entry_type">
21055 <span class="entry_type_name">rational</span>
21056 <span class="entry_type_container">x</span>
21058 <span class="entry_type_array">
21061 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
21066 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
21069 </td> <!-- entry_type -->
21071 <td class="entry_description">
21072 <p>A matrix that transforms white balanced camera colors from the reference
21073 sensor colorspace to the CIE XYZ colorspace with a D50 whitepoint.<wbr/></p>
21076 <td class="entry_units">
21079 <td class="entry_range">
21082 <td class="entry_hal_version">
21086 <td class="entry_tags">
21087 <ul class="entry_tags">
21088 <li><a href="#tag_RAW">RAW</a></li>
21093 <tr class="entries_header">
21094 <th class="th_details" colspan="6">Details</th>
21096 <tr class="entry_cont">
21097 <td class="entry_details" colspan="6">
21098 <p>This matrix is used to convert to the standard CIE XYZ colorspace,<wbr/> and
21099 is used when processing raw buffer data.<wbr/></p>
21100 <p>This matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and contains
21101 a color transform matrix that maps white balanced colors from the
21102 reference sensor color space to the CIE XYZ color space with a D50 white
21104 <p>Under the first reference illuminant (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>)
21105 this matrix is chosen so that the standard white point for this reference
21106 illuminant in the reference sensor colorspace is mapped to D50 in the
21107 CIE XYZ colorspace.<wbr/></p>
21112 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21113 <!-- end of entry -->
21116 <tr class="entry" id="static_android.sensor.forwardMatrix2">
21117 <td class="entry_name
21119 android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2
21121 <td class="entry_type">
21122 <span class="entry_type_name">rational</span>
21123 <span class="entry_type_container">x</span>
21125 <span class="entry_type_array">
21128 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
21133 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
21136 </td> <!-- entry_type -->
21138 <td class="entry_description">
21139 <p>A matrix that transforms white balanced camera colors from the reference
21140 sensor colorspace to the CIE XYZ colorspace with a D50 whitepoint.<wbr/></p>
21143 <td class="entry_units">
21146 <td class="entry_range">
21149 <td class="entry_hal_version">
21153 <td class="entry_tags">
21154 <ul class="entry_tags">
21155 <li><a href="#tag_RAW">RAW</a></li>
21160 <tr class="entries_header">
21161 <th class="th_details" colspan="6">Details</th>
21163 <tr class="entry_cont">
21164 <td class="entry_details" colspan="6">
21165 <p>This matrix is used to convert to the standard CIE XYZ colorspace,<wbr/> and
21166 is used when processing raw buffer data.<wbr/></p>
21167 <p>This matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and contains
21168 a color transform matrix that maps white balanced colors from the
21169 reference sensor color space to the CIE XYZ color space with a D50 white
21171 <p>Under the second reference illuminant (<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>)
21172 this matrix is chosen so that the standard white point for this reference
21173 illuminant in the reference sensor colorspace is mapped to D50 in the
21174 CIE XYZ colorspace.<wbr/></p>
21175 <p>This matrix will only be present if the second reference
21176 illuminant is present.<wbr/></p>
21181 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21182 <!-- end of entry -->
21185 <tr class="entry" id="static_android.sensor.baseGainFactor">
21186 <td class="entry_name
21188 android.<wbr/>sensor.<wbr/>base<wbr/>Gain<wbr/>Factor
21190 <td class="entry_type">
21191 <span class="entry_type_name">rational</span>
21193 <span class="entry_type_visibility"> [system]</span>
21200 </td> <!-- entry_type -->
21202 <td class="entry_description">
21203 <p>Gain factor from electrons to raw units when
21207 <td class="entry_units">
21210 <td class="entry_range">
21213 <td class="entry_hal_version">
21217 <td class="entry_tags">
21218 <ul class="entry_tags">
21219 <li><a href="#tag_FUTURE">FUTURE</a></li>
21226 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21227 <!-- end of entry -->
21230 <tr class="entry" id="static_android.sensor.blackLevelPattern">
21231 <td class="entry_name
21233 android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern
21235 <td class="entry_type">
21236 <span class="entry_type_name">int32</span>
21237 <span class="entry_type_container">x</span>
21239 <span class="entry_type_array">
21242 <span class="entry_type_visibility"> [public as blackLevelPattern]</span>
21247 <div class="entry_type_notes">2x2 raw count block</div>
21250 </td> <!-- entry_type -->
21252 <td class="entry_description">
21253 <p>A fixed black level offset for each of the color filter arrangement
21254 (CFA) mosaic channels.<wbr/></p>
21257 <td class="entry_units">
21260 <td class="entry_range">
21261 <p>>= 0 for each.<wbr/></p>
21264 <td class="entry_hal_version">
21268 <td class="entry_tags">
21269 <ul class="entry_tags">
21270 <li><a href="#tag_RAW">RAW</a></li>
21275 <tr class="entries_header">
21276 <th class="th_details" colspan="6">Details</th>
21278 <tr class="entry_cont">
21279 <td class="entry_details" colspan="6">
21280 <p>This key specifies the zero light value for each of the CFA mosaic
21281 channels in the camera sensor.<wbr/> The maximal value output by the
21282 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>
21283 <p>The values are given in the same order as channels listed for the CFA
21284 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
21285 nth value given corresponds to the black level offset for the nth
21286 color channel listed in the CFA.<wbr/></p>
21287 <p>The black level values of captured images may vary for different
21288 capture settings (e.<wbr/>g.,<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>).<wbr/> This key
21289 represents a coarse approximation for such case.<wbr/> It is recommended to
21290 use <a href="#dynamic_android.sensor.dynamicBlackLevel">android.<wbr/>sensor.<wbr/>dynamic<wbr/>Black<wbr/>Level</a> or use pixels from
21291 <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a> directly for captures when
21292 supported by the camera device,<wbr/> which provides more accurate black
21293 level values.<wbr/> For raw capture in particular,<wbr/> it is recommended to use
21294 pixels from <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a> to calculate black
21295 level values for each frame.<wbr/></p>
21299 <tr class="entries_header">
21300 <th class="th_details" colspan="6">HAL Implementation Details</th>
21302 <tr class="entry_cont">
21303 <td class="entry_details" colspan="6">
21304 <p>The values are given in row-column scan order,<wbr/> with the first value
21305 corresponding to the element of the CFA in row=0,<wbr/> column=0.<wbr/></p>
21309 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21310 <!-- end of entry -->
21313 <tr class="entry" id="static_android.sensor.maxAnalogSensitivity">
21314 <td class="entry_name
21316 android.<wbr/>sensor.<wbr/>max<wbr/>Analog<wbr/>Sensitivity
21318 <td class="entry_type">
21319 <span class="entry_type_name">int32</span>
21321 <span class="entry_type_visibility"> [public]</span>
21324 <span class="entry_type_hwlevel">[full] </span>
21329 </td> <!-- entry_type -->
21331 <td class="entry_description">
21332 <p>Maximum sensitivity that is implemented
21333 purely through analog gain.<wbr/></p>
21336 <td class="entry_units">
21339 <td class="entry_range">
21342 <td class="entry_hal_version">
21346 <td class="entry_tags">
21347 <ul class="entry_tags">
21348 <li><a href="#tag_V1">V1</a></li>
21349 <li><a href="#tag_FULL">FULL</a></li>
21354 <tr class="entries_header">
21355 <th class="th_details" colspan="6">Details</th>
21357 <tr class="entry_cont">
21358 <td class="entry_details" colspan="6">
21359 <p>For <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> values less than or
21360 equal to this,<wbr/> all applied gain must be analog.<wbr/> For
21361 values above this,<wbr/> the gain applied can be a mix of analog and
21367 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21368 <!-- end of entry -->
21371 <tr class="entry" id="static_android.sensor.orientation">
21372 <td class="entry_name
21374 android.<wbr/>sensor.<wbr/>orientation
21376 <td class="entry_type">
21377 <span class="entry_type_name">int32</span>
21379 <span class="entry_type_visibility"> [public]</span>
21382 <span class="entry_type_hwlevel">[legacy] </span>
21387 </td> <!-- entry_type -->
21389 <td class="entry_description">
21390 <p>Clockwise angle through which the output image needs to be rotated to be
21391 upright on the device screen in its native orientation.<wbr/></p>
21394 <td class="entry_units">
21395 Degrees of clockwise rotation; always a multiple of
21399 <td class="entry_range">
21400 <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p>
21403 <td class="entry_hal_version">
21407 <td class="entry_tags">
21408 <ul class="entry_tags">
21409 <li><a href="#tag_BC">BC</a></li>
21414 <tr class="entries_header">
21415 <th class="th_details" colspan="6">Details</th>
21417 <tr class="entry_cont">
21418 <td class="entry_details" colspan="6">
21419 <p>Also defines the direction of rolling shutter readout,<wbr/> which is from top to bottom in
21420 the sensor's coordinate system.<wbr/></p>
21425 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21426 <!-- end of entry -->
21429 <tr class="entry" id="static_android.sensor.profileHueSatMapDimensions">
21430 <td class="entry_name
21432 android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map<wbr/>Dimensions
21434 <td class="entry_type">
21435 <span class="entry_type_name">int32</span>
21436 <span class="entry_type_container">x</span>
21438 <span class="entry_type_array">
21441 <span class="entry_type_visibility"> [system]</span>
21446 <div class="entry_type_notes">Number of samples for hue,<wbr/> saturation,<wbr/> and value</div>
21449 </td> <!-- entry_type -->
21451 <td class="entry_description">
21452 <p>The number of input samples for each dimension of
21453 <a href="#dynamic_android.sensor.profileHueSatMap">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map</a>.<wbr/></p>
21456 <td class="entry_units">
21459 <td class="entry_range">
21460 <p>Hue >= 1,<wbr/>
21461 Saturation >= 2,<wbr/>
21465 <td class="entry_hal_version">
21469 <td class="entry_tags">
21470 <ul class="entry_tags">
21471 <li><a href="#tag_RAW">RAW</a></li>
21476 <tr class="entries_header">
21477 <th class="th_details" colspan="6">Details</th>
21479 <tr class="entry_cont">
21480 <td class="entry_details" colspan="6">
21481 <p>The number of input samples for the hue,<wbr/> saturation,<wbr/> and value
21482 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
21483 dimensions given is hue,<wbr/> saturation,<wbr/> value; where hue is the 0th
21489 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21490 <!-- end of entry -->
21493 <tr class="entry" id="static_android.sensor.availableTestPatternModes">
21494 <td class="entry_name
21496 android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes
21498 <td class="entry_type">
21499 <span class="entry_type_name">int32</span>
21500 <span class="entry_type_container">x</span>
21502 <span class="entry_type_array">
21505 <span class="entry_type_visibility"> [public]</span>
21510 <div class="entry_type_notes">list of enums</div>
21513 </td> <!-- entry_type -->
21515 <td class="entry_description">
21516 <p>List of sensor test pattern modes for <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a>
21517 supported by this camera device.<wbr/></p>
21520 <td class="entry_units">
21523 <td class="entry_range">
21524 <p>Any value listed in <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a></p>
21527 <td class="entry_hal_version">
21531 <td class="entry_tags">
21535 <tr class="entries_header">
21536 <th class="th_details" colspan="6">Details</th>
21538 <tr class="entry_cont">
21539 <td class="entry_details" colspan="6">
21540 <p>Defaults to OFF,<wbr/> and always includes OFF if defined.<wbr/></p>
21544 <tr class="entries_header">
21545 <th class="th_details" colspan="6">HAL Implementation Details</th>
21547 <tr class="entry_cont">
21548 <td class="entry_details" colspan="6">
21549 <p>All custom modes must be >= CUSTOM1.<wbr/></p>
21553 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21554 <!-- end of entry -->
21557 <tr class="entry" id="static_android.sensor.opticalBlackRegions">
21558 <td class="entry_name
21560 android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions
21562 <td class="entry_type">
21563 <span class="entry_type_name">int32</span>
21564 <span class="entry_type_container">x</span>
21566 <span class="entry_type_array">
21569 <span class="entry_type_visibility"> [public as rectangle]</span>
21576 </td> <!-- entry_type -->
21578 <td class="entry_description">
21579 <p>List of disjoint rectangles indicating the sensor
21580 optically shielded black pixel regions.<wbr/></p>
21583 <td class="entry_units">
21586 <td class="entry_range">
21589 <td class="entry_hal_version">
21593 <td class="entry_tags">
21597 <tr class="entries_header">
21598 <th class="th_details" colspan="6">Details</th>
21600 <tr class="entry_cont">
21601 <td class="entry_details" colspan="6">
21602 <p>In most camera sensors,<wbr/> the active array is surrounded by some
21603 optically shielded pixel areas.<wbr/> By blocking light,<wbr/> these pixels
21604 provides a reliable black reference for black level compensation
21605 in active array region.<wbr/></p>
21606 <p>This key provides a list of disjoint rectangles specifying the
21607 regions of optically shielded (with metal shield) black pixel
21608 regions if the camera device is capable of reading out these black
21609 pixels in the output raw images.<wbr/> In comparison to the fixed black
21610 level values reported by <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a>,<wbr/> this key
21611 may provide a more accurate way for the application to calculate
21612 black level of each captured raw images.<wbr/></p>
21613 <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
21614 <a href="#dynamic_android.sensor.dynamicWhiteLevel">android.<wbr/>sensor.<wbr/>dynamic<wbr/>White<wbr/>Level</a> will also be reported.<wbr/></p>
21618 <tr class="entries_header">
21619 <th class="th_details" colspan="6">HAL Implementation Details</th>
21621 <tr class="entry_cont">
21622 <td class="entry_details" colspan="6">
21623 <p>This array contains (xmin,<wbr/> ymin,<wbr/> width,<wbr/> height).<wbr/> The (xmin,<wbr/> ymin)
21624 must be >= (0,<wbr/>0) and <=
21625 <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
21626 <= <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/> Each region must be
21627 outside the region reported by
21628 <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>
21629 <p>The HAL must report minimal number of disjoint regions for the
21630 optically shielded back pixel regions.<wbr/> For example,<wbr/> if a region can
21631 be covered by one rectangle,<wbr/> the HAL must not split this region into
21632 multiple rectangles.<wbr/></p>
21636 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21637 <!-- end of entry -->
21640 <tr class="entry" id="static_android.sensor.opaqueRawSize">
21641 <td class="entry_name
21643 android.<wbr/>sensor.<wbr/>opaque<wbr/>Raw<wbr/>Size
21645 <td class="entry_type">
21646 <span class="entry_type_name">int32</span>
21647 <span class="entry_type_container">x</span>
21649 <span class="entry_type_array">
21652 <span class="entry_type_visibility"> [system]</span>
21659 </td> <!-- entry_type -->
21661 <td class="entry_description">
21662 <p>Size in bytes for all the listed opaque RAW buffer sizes</p>
21665 <td class="entry_units">
21668 <td class="entry_range">
21669 <p>Must be large enough to fit the opaque RAW of corresponding size produced by
21673 <td class="entry_hal_version">
21677 <td class="entry_tags">
21681 <tr class="entries_header">
21682 <th class="th_details" colspan="6">Details</th>
21684 <tr class="entry_cont">
21685 <td class="entry_details" colspan="6">
21686 <p>This configurations are listed as <code>(width,<wbr/> height,<wbr/> size_<wbr/>in_<wbr/>bytes)</code> tuples.<wbr/>
21687 This is used for sizing the gralloc buffers for opaque RAW buffers.<wbr/>
21688 All RAW_<wbr/>OPAQUE output stream configuration listed in
21689 <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> will have a corresponding tuple in
21690 this key.<wbr/></p>
21694 <tr class="entries_header">
21695 <th class="th_details" colspan="6">HAL Implementation Details</th>
21697 <tr class="entry_cont">
21698 <td class="entry_details" colspan="6">
21699 <p>This key is added in legacy HAL3.<wbr/>4.<wbr/></p>
21700 <p>For legacy HAL3.<wbr/>4 or above: devices advertising RAW_<wbr/>OPAQUE format output must list this
21701 key.<wbr/> For legacy HAL3.<wbr/>3 or earlier devices: if RAW_<wbr/>OPAQUE ouput is advertised,<wbr/> camera
21702 framework will derive this key by assuming each pixel takes two bytes and no padding bytes
21703 between rows.<wbr/></p>
21707 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21708 <!-- end of entry -->
21712 <!-- end of kind -->
21714 <tr><td colspan="7" class="kind">dynamic</td></tr>
21716 <thead class="entries_header">
21718 <th class="th_name">Property Name</th>
21719 <th class="th_type">Type</th>
21720 <th class="th_description">Description</th>
21721 <th class="th_units">Units</th>
21722 <th class="th_range">Range</th>
21723 <th class="th_hal_version">Initial HIDL HAL version</th>
21724 <th class="th_tags">Tags</th>
21739 <tr class="entry" id="dynamic_android.sensor.exposureTime">
21740 <td class="entry_name
21742 android.<wbr/>sensor.<wbr/>exposure<wbr/>Time
21744 <td class="entry_type">
21745 <span class="entry_type_name">int64</span>
21747 <span class="entry_type_visibility"> [public]</span>
21750 <span class="entry_type_hwlevel">[full] </span>
21755 </td> <!-- entry_type -->
21757 <td class="entry_description">
21758 <p>Duration each pixel is exposed to
21762 <td class="entry_units">
21766 <td class="entry_range">
21767 <p><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></p>
21770 <td class="entry_hal_version">
21774 <td class="entry_tags">
21775 <ul class="entry_tags">
21776 <li><a href="#tag_V1">V1</a></li>
21781 <tr class="entries_header">
21782 <th class="th_details" colspan="6">Details</th>
21784 <tr class="entry_cont">
21785 <td class="entry_details" colspan="6">
21786 <p>If the sensor can't expose this exact duration,<wbr/> it will shorten the
21787 duration exposed to the nearest possible value (rather than expose longer).<wbr/>
21788 The final exposure time used will be available in the output capture result.<wbr/></p>
21789 <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
21790 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
21795 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21796 <!-- end of entry -->
21799 <tr class="entry" id="dynamic_android.sensor.frameDuration">
21800 <td class="entry_name
21802 android.<wbr/>sensor.<wbr/>frame<wbr/>Duration
21804 <td class="entry_type">
21805 <span class="entry_type_name">int64</span>
21807 <span class="entry_type_visibility"> [public]</span>
21810 <span class="entry_type_hwlevel">[full] </span>
21815 </td> <!-- entry_type -->
21817 <td class="entry_description">
21818 <p>Duration from start of frame exposure to
21819 start of next frame exposure.<wbr/></p>
21822 <td class="entry_units">
21826 <td class="entry_range">
21827 <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/>
21828 The duration is capped to <code>max(duration,<wbr/> exposureTime + overhead)</code>.<wbr/></p>
21831 <td class="entry_hal_version">
21835 <td class="entry_tags">
21836 <ul class="entry_tags">
21837 <li><a href="#tag_V1">V1</a></li>
21842 <tr class="entries_header">
21843 <th class="th_details" colspan="6">Details</th>
21845 <tr class="entry_cont">
21846 <td class="entry_details" colspan="6">
21847 <p>The maximum frame rate that can be supported by a camera subsystem is
21848 a function of many factors:</p>
21850 <li>Requested resolutions of output image streams</li>
21851 <li>Availability of binning /<wbr/> skipping modes on the imager</li>
21852 <li>The bandwidth of the imager interface</li>
21853 <li>The bandwidth of the various ISP processing blocks</li>
21855 <p>Since these factors can vary greatly between different ISPs and
21856 sensors,<wbr/> the camera abstraction tries to represent the bandwidth
21857 restrictions with as simple a model as possible.<wbr/></p>
21858 <p>The model presented has the following characteristics:</p>
21860 <li>The image sensor is always configured to output the smallest
21861 resolution possible given the application's requested output stream
21862 sizes.<wbr/> The smallest resolution is defined as being at least as large
21863 as the largest requested output stream size; the camera pipeline must
21864 never digitally upsample sensor data when the crop region covers the
21865 whole sensor.<wbr/> In general,<wbr/> this means that if only small output stream
21866 resolutions are configured,<wbr/> the sensor can provide a higher frame
21868 <li>Since any request may use any or all the currently configured
21869 output streams,<wbr/> the sensor and ISP must be configured to support
21870 scaling a single capture to all the streams at the same time.<wbr/> This
21871 means the camera pipeline must be ready to produce the largest
21872 requested output size without any delay.<wbr/> Therefore,<wbr/> the overall
21873 frame rate of a given configured stream set is governed only by the
21874 largest requested stream resolution.<wbr/></li>
21875 <li>Using more than one output stream in a request does not affect the
21876 frame duration.<wbr/></li>
21877 <li>Certain format-streams may need to do additional background processing
21878 before data is consumed/<wbr/>produced by that stream.<wbr/> These processors
21879 can run concurrently to the rest of the camera pipeline,<wbr/> but
21880 cannot process more than 1 capture at a time.<wbr/></li>
21882 <p>The necessary information for the application,<wbr/> given the model above,<wbr/> is provided via
21883 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/>
21884 These are used to determine the maximum frame rate /<wbr/> minimum frame duration that is
21885 possible for a given stream configuration.<wbr/></p>
21886 <p>Specifically,<wbr/> the application can use the following rules to
21887 determine the minimum frame duration it can request from the camera
21890 <li>Let the set of currently configured input/<wbr/>output streams be called <code>S</code>.<wbr/></li>
21891 <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>
21892 (with its respective size/<wbr/>format).<wbr/> Let this set of frame durations be called <code>F</code>.<wbr/></li>
21893 <li>For any given request <code>R</code>,<wbr/> the minimum frame duration allowed for <code>R</code> is the maximum
21894 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>
21896 <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>
21897 using its respective size/<wbr/>format),<wbr/> then the frame duration in <code>F</code> determines the steady
21898 state frame rate that the application will get if it uses <code>R</code> as a repeating request.<wbr/> Let
21899 this special kind of request be called <code>Rsimple</code>.<wbr/></p>
21900 <p>A repeating request <code>Rsimple</code> can be <em>occasionally</em> interleaved by a single capture of a
21901 new request <code>Rstall</code> (which has at least one in-use stream with a non-0 stall time) and if
21902 <code>Rstall</code> has the same minimum frame duration this will not cause a frame rate loss if all
21903 buffers from the previous <code>Rstall</code> have already been delivered.<wbr/></p>
21904 <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>
21905 <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
21906 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
21910 <tr class="entries_header">
21911 <th class="th_details" colspan="6">HAL Implementation Details</th>
21913 <tr class="entry_cont">
21914 <td class="entry_details" colspan="6">
21915 <p>For more details about stalling,<wbr/> see
21916 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>.<wbr/></p>
21920 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21921 <!-- end of entry -->
21924 <tr class="entry" id="dynamic_android.sensor.sensitivity">
21925 <td class="entry_name
21927 android.<wbr/>sensor.<wbr/>sensitivity
21929 <td class="entry_type">
21930 <span class="entry_type_name">int32</span>
21932 <span class="entry_type_visibility"> [public]</span>
21935 <span class="entry_type_hwlevel">[full] </span>
21940 </td> <!-- entry_type -->
21942 <td class="entry_description">
21943 <p>The amount of gain applied to sensor data
21944 before processing.<wbr/></p>
21947 <td class="entry_units">
21948 ISO arithmetic units
21951 <td class="entry_range">
21952 <p><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></p>
21955 <td class="entry_hal_version">
21959 <td class="entry_tags">
21960 <ul class="entry_tags">
21961 <li><a href="#tag_V1">V1</a></li>
21966 <tr class="entries_header">
21967 <th class="th_details" colspan="6">Details</th>
21969 <tr class="entry_cont">
21970 <td class="entry_details" colspan="6">
21971 <p>The sensitivity is the standard ISO sensitivity value,<wbr/>
21972 as defined in ISO 12232:2006.<wbr/></p>
21973 <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
21974 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
21975 is guaranteed to use only analog amplification for applying the gain.<wbr/></p>
21976 <p>If the camera device cannot apply the exact sensitivity
21977 requested,<wbr/> it will reduce the gain to the nearest supported
21978 value.<wbr/> The final sensitivity used will be available in the
21979 output capture result.<wbr/></p>
21980 <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
21981 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
21985 <tr class="entries_header">
21986 <th class="th_details" colspan="6">HAL Implementation Details</th>
21988 <tr class="entry_cont">
21989 <td class="entry_details" colspan="6">
21990 <p>ISO 12232:2006 REI method is acceptable.<wbr/></p>
21994 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21995 <!-- end of entry -->
21998 <tr class="entry" id="dynamic_android.sensor.timestamp">
21999 <td class="entry_name
22001 android.<wbr/>sensor.<wbr/>timestamp
22003 <td class="entry_type">
22004 <span class="entry_type_name">int64</span>
22006 <span class="entry_type_visibility"> [public]</span>
22009 <span class="entry_type_hwlevel">[legacy] </span>
22014 </td> <!-- entry_type -->
22016 <td class="entry_description">
22017 <p>Time at start of exposure of first
22018 row of the image sensor active array,<wbr/> in nanoseconds.<wbr/></p>
22021 <td class="entry_units">
22025 <td class="entry_range">
22029 <td class="entry_hal_version">
22033 <td class="entry_tags">
22034 <ul class="entry_tags">
22035 <li><a href="#tag_BC">BC</a></li>
22040 <tr class="entries_header">
22041 <th class="th_details" colspan="6">Details</th>
22043 <tr class="entry_cont">
22044 <td class="entry_details" colspan="6">
22045 <p>The timestamps are also included in all image
22046 buffers produced for the same capture,<wbr/> and will be identical
22047 on all the outputs.<wbr/></p>
22048 <p>When <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> UNKNOWN,<wbr/>
22049 the timestamps measure time since an unspecified starting point,<wbr/>
22050 and are monotonically increasing.<wbr/> They can be compared with the
22051 timestamps for other captures from the same camera device,<wbr/> but are
22052 not guaranteed to be comparable to any other time source.<wbr/></p>
22053 <p>When <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME,<wbr/> the
22054 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
22055 be compared to other timestamps from other subsystems that
22056 are using that base.<wbr/></p>
22057 <p>For reprocessing,<wbr/> the timestamp will match the start of exposure of
22058 the input image,<wbr/> i.<wbr/>e.<wbr/> <a href="https://developer.android.com/reference/CaptureResult.html#SENSOR_TIMESTAMP">the
22059 timestamp</a> in the TotalCaptureResult that was used to create the
22060 reprocess capture request.<wbr/></p>
22064 <tr class="entries_header">
22065 <th class="th_details" colspan="6">HAL Implementation Details</th>
22067 <tr class="entry_cont">
22068 <td class="entry_details" colspan="6">
22069 <p>All timestamps must be in reference to the kernel's
22070 CLOCK_<wbr/>BOOTTIME monotonic clock,<wbr/> which properly accounts for
22071 time spent asleep.<wbr/> This allows for synchronization with
22072 sensors that continue to operate while the system is
22073 otherwise asleep.<wbr/></p>
22074 <p>If <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME,<wbr/>
22075 The timestamp must be synchronized with the timestamps from other
22076 sensor subsystems that are using the same timebase.<wbr/></p>
22077 <p>For reprocessing,<wbr/> the input image's start of exposure can be looked up
22078 with <a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a> from the metadata included in the
22079 capture request.<wbr/></p>
22083 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22084 <!-- end of entry -->
22087 <tr class="entry" id="dynamic_android.sensor.temperature">
22088 <td class="entry_name
22090 android.<wbr/>sensor.<wbr/>temperature
22092 <td class="entry_type">
22093 <span class="entry_type_name">float</span>
22095 <span class="entry_type_visibility"> [system]</span>
22102 </td> <!-- entry_type -->
22104 <td class="entry_description">
22105 <p>The temperature of the sensor,<wbr/> sampled at the time
22106 exposure began for this frame.<wbr/></p>
22107 <p>The thermal diode being queried should be inside the sensor PCB,<wbr/> or
22108 somewhere close to it.<wbr/></p>
22111 <td class="entry_units">
22115 <td class="entry_range">
22116 <p>Optional.<wbr/> This value is missing if no temperature is available.<wbr/></p>
22119 <td class="entry_hal_version">
22123 <td class="entry_tags">
22124 <ul class="entry_tags">
22125 <li><a href="#tag_FUTURE">FUTURE</a></li>
22132 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22133 <!-- end of entry -->
22136 <tr class="entry" id="dynamic_android.sensor.neutralColorPoint">
22137 <td class="entry_name
22139 android.<wbr/>sensor.<wbr/>neutral<wbr/>Color<wbr/>Point
22141 <td class="entry_type">
22142 <span class="entry_type_name">rational</span>
22143 <span class="entry_type_container">x</span>
22145 <span class="entry_type_array">
22148 <span class="entry_type_visibility"> [public]</span>
22155 </td> <!-- entry_type -->
22157 <td class="entry_description">
22158 <p>The estimated camera neutral color in the native sensor colorspace at
22159 the time of capture.<wbr/></p>
22162 <td class="entry_units">
22165 <td class="entry_range">
22168 <td class="entry_hal_version">
22172 <td class="entry_tags">
22173 <ul class="entry_tags">
22174 <li><a href="#tag_RAW">RAW</a></li>
22179 <tr class="entries_header">
22180 <th class="th_details" colspan="6">Details</th>
22182 <tr class="entry_cont">
22183 <td class="entry_details" colspan="6">
22184 <p>This value gives the neutral color point encoded as an RGB value in the
22185 native sensor color space.<wbr/> The neutral color point indicates the
22186 currently estimated white point of the scene illumination.<wbr/> It can be
22187 used to interpolate between the provided color transforms when
22188 processing raw sensor data.<wbr/></p>
22189 <p>The order of the values is R,<wbr/> G,<wbr/> B; where R is in the lowest index.<wbr/></p>
22194 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22195 <!-- end of entry -->
22198 <tr class="entry" id="dynamic_android.sensor.noiseProfile">
22199 <td class="entry_name
22201 android.<wbr/>sensor.<wbr/>noise<wbr/>Profile
22203 <td class="entry_type">
22204 <span class="entry_type_name">double</span>
22205 <span class="entry_type_container">x</span>
22207 <span class="entry_type_array">
22210 <span class="entry_type_visibility"> [public as pairDoubleDouble]</span>
22215 <div class="entry_type_notes">Pairs of noise model coefficients</div>
22218 </td> <!-- entry_type -->
22220 <td class="entry_description">
22221 <p>Noise model coefficients for each CFA mosaic channel.<wbr/></p>
22224 <td class="entry_units">
22227 <td class="entry_range">
22230 <td class="entry_hal_version">
22234 <td class="entry_tags">
22235 <ul class="entry_tags">
22236 <li><a href="#tag_RAW">RAW</a></li>
22241 <tr class="entries_header">
22242 <th class="th_details" colspan="6">Details</th>
22244 <tr class="entry_cont">
22245 <td class="entry_details" colspan="6">
22246 <p>This key contains two noise model coefficients for each CFA channel
22247 corresponding to the sensor amplification (S) and sensor readout
22248 noise (O).<wbr/> These are given as pairs of coefficients for each channel
22249 in the same order as channels listed for the CFA layout key
22250 (see <a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a>).<wbr/> This is
22251 represented as an array of Pair<Double,<wbr/> Double>,<wbr/> where
22252 the first member of the Pair at index n is the S coefficient and the
22253 second member is the O coefficient for the nth color channel in the CFA.<wbr/></p>
22254 <p>These coefficients are used in a two parameter noise model to describe
22255 the amount of noise present in the image for each CFA channel.<wbr/> The
22256 noise model used here is:</p>
22257 <p>N(x) = sqrt(Sx + O)</p>
22258 <p>Where x represents the recorded signal of a CFA channel normalized to
22259 the range [0,<wbr/> 1],<wbr/> and S and O are the noise model coeffiecients for
22260 that channel.<wbr/></p>
22261 <p>A more detailed description of the noise model can be found in the
22262 Adobe DNG specification for the NoiseProfile tag.<wbr/></p>
22266 <tr class="entries_header">
22267 <th class="th_details" colspan="6">HAL Implementation Details</th>
22269 <tr class="entry_cont">
22270 <td class="entry_details" colspan="6">
22271 <p>For a CFA layout of RGGB,<wbr/> the list of coefficients would be given as
22272 an array of doubles S0,<wbr/>O0,<wbr/>S1,<wbr/>O1,...,<wbr/> where S0 and O0 are the coefficients
22273 for the red channel,<wbr/> S1 and O1 are the coefficients for the first green
22274 channel,<wbr/> etc.<wbr/></p>
22278 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22279 <!-- end of entry -->
22282 <tr class="entry" id="dynamic_android.sensor.profileHueSatMap">
22283 <td class="entry_name
22285 android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map
22287 <td class="entry_type">
22288 <span class="entry_type_name">float</span>
22289 <span class="entry_type_container">x</span>
22291 <span class="entry_type_array">
22292 hue_samples x saturation_samples x value_samples x 3
22294 <span class="entry_type_visibility"> [system]</span>
22299 <div class="entry_type_notes">Mapping for hue,<wbr/> saturation,<wbr/> and value</div>
22302 </td> <!-- entry_type -->
22304 <td class="entry_description">
22305 <p>A mapping containing a hue shift,<wbr/> saturation scale,<wbr/> and value scale
22306 for each pixel.<wbr/></p>
22309 <td class="entry_units">
22311 The hue shift is given in degrees; saturation and value scale factors are
22312 unitless and are between 0 and 1 inclusive
22316 <td class="entry_range">
22319 <td class="entry_hal_version">
22323 <td class="entry_tags">
22324 <ul class="entry_tags">
22325 <li><a href="#tag_RAW">RAW</a></li>
22330 <tr class="entries_header">
22331 <th class="th_details" colspan="6">Details</th>
22333 <tr class="entry_cont">
22334 <td class="entry_details" colspan="6">
22335 <p>hue_<wbr/>samples,<wbr/> saturation_<wbr/>samples,<wbr/> and value_<wbr/>samples are given in
22336 <a href="#static_android.sensor.profileHueSatMapDimensions">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map<wbr/>Dimensions</a>.<wbr/></p>
22337 <p>Each entry of this map contains three floats corresponding to the
22338 hue shift,<wbr/> saturation scale,<wbr/> and value scale,<wbr/> respectively; where the
22339 hue shift has the lowest index.<wbr/> The map entries are stored in the key
22340 in nested loop order,<wbr/> with the value divisions in the outer loop,<wbr/> the
22341 hue divisions in the middle loop,<wbr/> and the saturation divisions in the
22342 inner loop.<wbr/> All zero input saturation entries are required to have a
22343 value scale factor of 1.<wbr/>0.<wbr/></p>
22348 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22349 <!-- end of entry -->
22352 <tr class="entry" id="dynamic_android.sensor.profileToneCurve">
22353 <td class="entry_name
22355 android.<wbr/>sensor.<wbr/>profile<wbr/>Tone<wbr/>Curve
22357 <td class="entry_type">
22358 <span class="entry_type_name">float</span>
22359 <span class="entry_type_container">x</span>
22361 <span class="entry_type_array">
22364 <span class="entry_type_visibility"> [system]</span>
22369 <div class="entry_type_notes">Samples defining a spline for a tone-mapping curve</div>
22372 </td> <!-- entry_type -->
22374 <td class="entry_description">
22375 <p>A list of x,<wbr/>y samples defining a tone-mapping curve for gamma adjustment.<wbr/></p>
22378 <td class="entry_units">
22381 <td class="entry_range">
22382 <p>Each sample has an input range of <code>[0,<wbr/> 1]</code> and an output range of
22383 <code>[0,<wbr/> 1]</code>.<wbr/> The first sample is required to be <code>(0,<wbr/> 0)</code>,<wbr/> and the last
22384 sample is required to be <code>(1,<wbr/> 1)</code>.<wbr/></p>
22387 <td class="entry_hal_version">
22391 <td class="entry_tags">
22392 <ul class="entry_tags">
22393 <li><a href="#tag_RAW">RAW</a></li>
22398 <tr class="entries_header">
22399 <th class="th_details" colspan="6">Details</th>
22401 <tr class="entry_cont">
22402 <td class="entry_details" colspan="6">
22403 <p>This key contains a default tone curve that can be applied while
22404 processing the image as a starting point for user adjustments.<wbr/>
22405 The curve is specified as a list of value pairs in linear gamma.<wbr/>
22406 The curve is interpolated using a cubic spline.<wbr/></p>
22411 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22412 <!-- end of entry -->
22415 <tr class="entry" id="dynamic_android.sensor.greenSplit">
22416 <td class="entry_name
22418 android.<wbr/>sensor.<wbr/>green<wbr/>Split
22420 <td class="entry_type">
22421 <span class="entry_type_name">float</span>
22423 <span class="entry_type_visibility"> [public]</span>
22430 </td> <!-- entry_type -->
22432 <td class="entry_description">
22433 <p>The worst-case divergence between Bayer green channels.<wbr/></p>
22436 <td class="entry_units">
22439 <td class="entry_range">
22443 <td class="entry_hal_version">
22447 <td class="entry_tags">
22448 <ul class="entry_tags">
22449 <li><a href="#tag_RAW">RAW</a></li>
22454 <tr class="entries_header">
22455 <th class="th_details" colspan="6">Details</th>
22457 <tr class="entry_cont">
22458 <td class="entry_details" colspan="6">
22459 <p>This value is an estimate of the worst case split between the
22460 Bayer green channels in the red and blue rows in the sensor color
22461 filter array.<wbr/></p>
22462 <p>The green split is calculated as follows:</p>
22464 <li>A 5x5 pixel (or larger) window W within the active sensor array is
22465 chosen.<wbr/> The term 'pixel' here is taken to mean a group of 4 Bayer
22466 mosaic channels (R,<wbr/> Gr,<wbr/> Gb,<wbr/> B).<wbr/> The location and size of the window
22467 chosen is implementation defined,<wbr/> and should be chosen to provide a
22468 green split estimate that is both representative of the entire image
22469 for this camera sensor,<wbr/> and can be calculated quickly.<wbr/></li>
22470 <li>The arithmetic mean of the green channels from the red
22471 rows (mean_<wbr/>Gr) within W is computed.<wbr/></li>
22472 <li>The arithmetic mean of the green channels from the blue
22473 rows (mean_<wbr/>Gb) within W is computed.<wbr/></li>
22474 <li>The maximum ratio R of the two means is computed as follows:
22475 <code>R = max((mean_<wbr/>Gr + 1)/<wbr/>(mean_<wbr/>Gb + 1),<wbr/> (mean_<wbr/>Gb + 1)/<wbr/>(mean_<wbr/>Gr + 1))</code></li>
22477 <p>The ratio R is the green split divergence reported for this property,<wbr/>
22478 which represents how much the green channels differ in the mosaic
22479 pattern.<wbr/> This value is typically used to determine the treatment of
22480 the green mosaic channels when demosaicing.<wbr/></p>
22481 <p>The green split value can be roughly interpreted as follows:</p>
22483 <li>R < 1.<wbr/>03 is a negligible split (<3% divergence).<wbr/></li>
22484 <li>1.<wbr/>20 <= R >= 1.<wbr/>03 will require some software
22485 correction to avoid demosaic errors (3-20% divergence).<wbr/></li>
22486 <li>R > 1.<wbr/>20 will require strong software correction to produce
22487 a usuable image (>20% divergence).<wbr/></li>
22492 <tr class="entries_header">
22493 <th class="th_details" colspan="6">HAL Implementation Details</th>
22495 <tr class="entry_cont">
22496 <td class="entry_details" colspan="6">
22497 <p>The green split given may be a static value based on prior
22498 characterization of the camera sensor using the green split
22499 calculation method given here over a large,<wbr/> representative,<wbr/> sample
22500 set of images.<wbr/> Other methods of calculation that produce equivalent
22501 results,<wbr/> and can be interpreted in the same manner,<wbr/> may be used.<wbr/></p>
22505 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22506 <!-- end of entry -->
22509 <tr class="entry" id="dynamic_android.sensor.testPatternData">
22510 <td class="entry_name
22512 android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data
22514 <td class="entry_type">
22515 <span class="entry_type_name">int32</span>
22516 <span class="entry_type_container">x</span>
22518 <span class="entry_type_array">
22521 <span class="entry_type_visibility"> [public]</span>
22528 </td> <!-- entry_type -->
22530 <td class="entry_description">
22531 <p>A pixel <code>[R,<wbr/> G_<wbr/>even,<wbr/> G_<wbr/>odd,<wbr/> B]</code> that supplies the test pattern
22532 when <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a> is SOLID_<wbr/>COLOR.<wbr/></p>
22535 <td class="entry_units">
22538 <td class="entry_range">
22541 <td class="entry_hal_version">
22545 <td class="entry_tags">
22549 <tr class="entries_header">
22550 <th class="th_details" colspan="6">Details</th>
22552 <tr class="entry_cont">
22553 <td class="entry_details" colspan="6">
22554 <p>Each color channel is treated as an unsigned 32-bit integer.<wbr/>
22555 The camera device then uses the most significant X bits
22556 that correspond to how many bits are in its Bayer raw sensor
22558 <p>For example,<wbr/> a sensor with RAW10 Bayer output would use the
22559 10 most significant bits from each color channel.<wbr/></p>
22563 <tr class="entries_header">
22564 <th class="th_details" colspan="6">HAL Implementation Details</th>
22566 <tr class="entry_cont">
22567 <td class="entry_details" colspan="6">
22572 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22573 <!-- end of entry -->
22576 <tr class="entry" id="dynamic_android.sensor.testPatternMode">
22577 <td class="entry_name
22579 android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode
22581 <td class="entry_type">
22582 <span class="entry_type_name entry_type_name_enum">int32</span>
22584 <span class="entry_type_visibility"> [public]</span>
22590 <ul class="entry_type_enum">
22592 <span class="entry_type_enum_name">OFF</span>
22593 <span class="entry_type_enum_notes"><p>No test pattern mode is used,<wbr/> and the camera
22594 device returns captures from the image sensor.<wbr/></p>
22595 <p>This is the default if the key is not set.<wbr/></p></span>
22598 <span class="entry_type_enum_name">SOLID_COLOR</span>
22599 <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
22600 respective color channel provided in
22601 <a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a>.<wbr/></p>
22602 <p>For example:</p>
22603 <pre><code>android.<wbr/>testPatternData = [0,<wbr/> 0xFFFFFFFF,<wbr/> 0xFFFFFFFF,<wbr/> 0]
22605 <p>All green pixels are 100% green.<wbr/> All red/<wbr/>blue pixels are black.<wbr/></p>
22606 <pre><code>android.<wbr/>testPatternData = [0xFFFFFFFF,<wbr/> 0,<wbr/> 0xFFFFFFFF,<wbr/> 0]
22608 <p>All red pixels are 100% red.<wbr/> Only the odd green pixels
22609 are 100% green.<wbr/> All blue pixels are 100% black.<wbr/></p></span>
22612 <span class="entry_type_enum_name">COLOR_BARS</span>
22613 <span class="entry_type_enum_notes"><p>All pixel data is replaced with an 8-bar color pattern.<wbr/></p>
22614 <p>The vertical bars (left-to-right) are as follows:</p>
22616 <li>100% white</li>
22625 <p>In general the image would look like the following:</p>
22626 <pre><code>W Y C G M R B K
22631 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
22632 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
22633 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
22635 (B = Blue,<wbr/> K = Black)
22637 <p>Each bar should take up 1/<wbr/>8 of the sensor pixel array width.<wbr/>
22638 When this is not possible,<wbr/> the bar size should be rounded
22639 down to the nearest integer and the pattern can repeat
22640 on the right side.<wbr/></p>
22641 <p>Each bar's height must always take up the full sensor
22642 pixel array height.<wbr/></p>
22643 <p>Each pixel in this test pattern must be set to either
22644 0% intensity or 100% intensity.<wbr/></p></span>
22647 <span class="entry_type_enum_name">COLOR_BARS_FADE_TO_GRAY</span>
22648 <span class="entry_type_enum_notes"><p>The test pattern is similar to COLOR_<wbr/>BARS,<wbr/> except that
22649 each bar should start at its specified color at the top,<wbr/>
22650 and fade to gray at the bottom.<wbr/></p>
22651 <p>Furthermore each bar is further subdivided into a left and
22652 right half.<wbr/> The left half should have a smooth gradient,<wbr/>
22653 and the right half should have a quantized gradient.<wbr/></p>
22654 <p>In particular,<wbr/> the right half's should consist of blocks of the
22655 same color for 1/<wbr/>16th active sensor pixel array width.<wbr/></p>
22656 <p>The least significant bits in the quantized gradient should
22657 be copied from the most significant bits of the smooth gradient.<wbr/></p>
22658 <p>The height of each bar should always be a multiple of 128.<wbr/>
22659 When this is not the case,<wbr/> the pattern should repeat at the bottom
22660 of the image.<wbr/></p></span>
22663 <span class="entry_type_enum_name">PN9</span>
22664 <span class="entry_type_enum_notes"><p>All pixel data is replaced by a pseudo-random sequence
22665 generated from a PN9 512-bit sequence (typically implemented
22666 in hardware with a linear feedback shift register).<wbr/></p>
22667 <p>The generator should be reset at the beginning of each frame,<wbr/>
22668 and thus each subsequent raw frame with this test pattern should
22669 be exactly the same as the last.<wbr/></p></span>
22672 <span class="entry_type_enum_name">CUSTOM1</span>
22673 <span class="entry_type_enum_value">256</span>
22674 <span class="entry_type_enum_notes"><p>The first custom test pattern.<wbr/> All custom patterns that are
22675 available only on this camera device are at least this numeric
22677 <p>All of the custom test patterns will be static
22678 (that is the raw image must not vary from frame to frame).<wbr/></p></span>
22682 </td> <!-- entry_type -->
22684 <td class="entry_description">
22685 <p>When enabled,<wbr/> the sensor sends a test pattern instead of
22686 doing a real exposure from the camera.<wbr/></p>
22689 <td class="entry_units">
22692 <td class="entry_range">
22693 <p><a href="#static_android.sensor.availableTestPatternModes">android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes</a></p>
22696 <td class="entry_hal_version">
22700 <td class="entry_tags">
22704 <tr class="entries_header">
22705 <th class="th_details" colspan="6">Details</th>
22707 <tr class="entry_cont">
22708 <td class="entry_details" colspan="6">
22709 <p>When a test pattern is enabled,<wbr/> all manual sensor controls specified
22710 by android.<wbr/>sensor.<wbr/>* will be ignored.<wbr/> All other controls should
22711 work as normal.<wbr/></p>
22712 <p>For example,<wbr/> if manual flash is enabled,<wbr/> flash firing should still
22713 occur (and that the test pattern remain unmodified,<wbr/> since the flash
22714 would not actually affect it).<wbr/></p>
22715 <p>Defaults to OFF.<wbr/></p>
22719 <tr class="entries_header">
22720 <th class="th_details" colspan="6">HAL Implementation Details</th>
22722 <tr class="entry_cont">
22723 <td class="entry_details" colspan="6">
22724 <p>All test patterns are specified in the Bayer domain.<wbr/></p>
22725 <p>The HAL may choose to substitute test patterns from the sensor
22726 with test patterns from on-device memory.<wbr/> In that case,<wbr/> it should be
22727 indistinguishable to the ISP whether the data came from the
22728 sensor interconnect bus (such as CSI2) or memory.<wbr/></p>
22732 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22733 <!-- end of entry -->
22736 <tr class="entry" id="dynamic_android.sensor.rollingShutterSkew">
22737 <td class="entry_name
22739 android.<wbr/>sensor.<wbr/>rolling<wbr/>Shutter<wbr/>Skew
22741 <td class="entry_type">
22742 <span class="entry_type_name">int64</span>
22744 <span class="entry_type_visibility"> [public]</span>
22747 <span class="entry_type_hwlevel">[limited] </span>
22752 </td> <!-- entry_type -->
22754 <td class="entry_description">
22755 <p>Duration between the start of first row exposure
22756 and the start of last row exposure.<wbr/></p>
22759 <td class="entry_units">
22763 <td class="entry_range">
22764 <p>>= 0 and <
22765 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/></p>
22768 <td class="entry_hal_version">
22772 <td class="entry_tags">
22773 <ul class="entry_tags">
22774 <li><a href="#tag_V1">V1</a></li>
22779 <tr class="entries_header">
22780 <th class="th_details" colspan="6">Details</th>
22782 <tr class="entry_cont">
22783 <td class="entry_details" colspan="6">
22784 <p>This is the exposure time skew between the first and last
22785 row exposure start times.<wbr/> The first row and the last row are
22786 the first and last rows inside of the
22787 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
22788 <p>For typical camera sensors that use rolling shutters,<wbr/> this is also equivalent
22789 to the frame readout time.<wbr/></p>
22793 <tr class="entries_header">
22794 <th class="th_details" colspan="6">HAL Implementation Details</th>
22796 <tr class="entry_cont">
22797 <td class="entry_details" colspan="6">
22798 <p>The HAL must report <code>0</code> if the sensor is using global shutter,<wbr/> where all pixels begin
22799 exposure at the same time.<wbr/></p>
22803 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22804 <!-- end of entry -->
22807 <tr class="entry" id="dynamic_android.sensor.dynamicBlackLevel">
22808 <td class="entry_name
22810 android.<wbr/>sensor.<wbr/>dynamic<wbr/>Black<wbr/>Level
22812 <td class="entry_type">
22813 <span class="entry_type_name">float</span>
22814 <span class="entry_type_container">x</span>
22816 <span class="entry_type_array">
22819 <span class="entry_type_visibility"> [public]</span>
22824 <div class="entry_type_notes">2x2 raw count block</div>
22827 </td> <!-- entry_type -->
22829 <td class="entry_description">
22830 <p>A per-frame dynamic black level offset for each of the color filter
22831 arrangement (CFA) mosaic channels.<wbr/></p>
22834 <td class="entry_units">
22837 <td class="entry_range">
22838 <p>>= 0 for each.<wbr/></p>
22841 <td class="entry_hal_version">
22845 <td class="entry_tags">
22846 <ul class="entry_tags">
22847 <li><a href="#tag_RAW">RAW</a></li>
22852 <tr class="entries_header">
22853 <th class="th_details" colspan="6">Details</th>
22855 <tr class="entry_cont">
22856 <td class="entry_details" colspan="6">
22857 <p>Camera sensor black levels may vary dramatically for different
22858 capture settings (e.<wbr/>g.<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>).<wbr/> The fixed black
22859 level reported by <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> may be too
22860 inaccurate to represent the actual value on a per-frame basis.<wbr/> The
22861 camera device internal pipeline relies on reliable black level values
22862 to process the raw images appropriately.<wbr/> To get the best image
22863 quality,<wbr/> the camera device may choose to estimate the per frame black
22864 level values either based on optically shielded black regions
22865 (<a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a>) or its internal model.<wbr/></p>
22866 <p>This key reports the camera device estimated per-frame zero light
22867 value for each of the CFA mosaic channels in the camera sensor.<wbr/> The
22868 <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> may only represent a coarse
22869 approximation of the actual black level values.<wbr/> This value is the
22870 black level used in camera device internal image processing pipeline
22871 and generally more accurate than the fixed black level values.<wbr/>
22872 However,<wbr/> since they are estimated values by the camera device,<wbr/> they
22873 may not be as accurate as the black level values calculated from the
22874 optical black pixels reported by <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a>.<wbr/></p>
22875 <p>The values are given in the same order as channels listed for the CFA
22876 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
22877 nth value given corresponds to the black level offset for the nth
22878 color channel listed in the CFA.<wbr/></p>
22879 <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
22880 camera device advertises this key via <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureResultKeys">CameraCharacteristics#getAvailableCaptureResultKeys</a>.<wbr/></p>
22884 <tr class="entries_header">
22885 <th class="th_details" colspan="6">HAL Implementation Details</th>
22887 <tr class="entry_cont">
22888 <td class="entry_details" colspan="6">
22889 <p>The values are given in row-column scan order,<wbr/> with the first value
22890 corresponding to the element of the CFA in row=0,<wbr/> column=0.<wbr/></p>
22894 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22895 <!-- end of entry -->
22898 <tr class="entry" id="dynamic_android.sensor.dynamicWhiteLevel">
22899 <td class="entry_name
22901 android.<wbr/>sensor.<wbr/>dynamic<wbr/>White<wbr/>Level
22903 <td class="entry_type">
22904 <span class="entry_type_name">int32</span>
22906 <span class="entry_type_visibility"> [public]</span>
22913 </td> <!-- entry_type -->
22915 <td class="entry_description">
22916 <p>Maximum raw value output by sensor for this frame.<wbr/></p>
22919 <td class="entry_units">
22922 <td class="entry_range">
22926 <td class="entry_hal_version">
22930 <td class="entry_tags">
22931 <ul class="entry_tags">
22932 <li><a href="#tag_RAW">RAW</a></li>
22937 <tr class="entries_header">
22938 <th class="th_details" colspan="6">Details</th>
22940 <tr class="entry_cont">
22941 <td class="entry_details" colspan="6">
22942 <p>Since the <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> may change for different
22943 capture settings (e.<wbr/>g.,<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>),<wbr/> the white
22944 level will change accordingly.<wbr/> This key is similar to
22945 <a href="#static_android.sensor.info.whiteLevel">android.<wbr/>sensor.<wbr/>info.<wbr/>white<wbr/>Level</a>,<wbr/> but specifies the camera device
22946 estimated white level for each frame.<wbr/></p>
22947 <p>This key will be available if <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a> is
22948 available or the camera device advertises this key via
22949 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a>.<wbr/></p>
22953 <tr class="entries_header">
22954 <th class="th_details" colspan="6">HAL Implementation Details</th>
22956 <tr class="entry_cont">
22957 <td class="entry_details" colspan="6">
22958 <p>The full bit depth of the sensor must be available in the raw data,<wbr/>
22959 so the value for linear sensors should not be significantly lower
22960 than maximum raw value supported,<wbr/> i.<wbr/>e.<wbr/> 2^(sensor bits per pixel).<wbr/></p>
22964 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22965 <!-- end of entry -->
22969 <!-- end of kind -->
22972 <!-- end of section -->
22973 <tr><td colspan="7" id="section_shading" class="section">shading</td></tr>
22976 <tr><td colspan="7" class="kind">controls</td></tr>
22978 <thead class="entries_header">
22980 <th class="th_name">Property Name</th>
22981 <th class="th_type">Type</th>
22982 <th class="th_description">Description</th>
22983 <th class="th_units">Units</th>
22984 <th class="th_range">Range</th>
22985 <th class="th_hal_version">Initial HIDL HAL version</th>
22986 <th class="th_tags">Tags</th>
23001 <tr class="entry" id="controls_android.shading.mode">
23002 <td class="entry_name
23004 android.<wbr/>shading.<wbr/>mode
23006 <td class="entry_type">
23007 <span class="entry_type_name entry_type_name_enum">byte</span>
23009 <span class="entry_type_visibility"> [public]</span>
23012 <span class="entry_type_hwlevel">[full] </span>
23016 <ul class="entry_type_enum">
23018 <span class="entry_type_enum_name">OFF</span>
23019 <span class="entry_type_enum_notes"><p>No lens shading correction is applied.<wbr/></p></span>
23022 <span class="entry_type_enum_name">FAST</span>
23023 <span class="entry_type_enum_notes"><p>Apply lens shading corrections,<wbr/> without slowing
23024 frame rate relative to sensor raw output</p></span>
23027 <span class="entry_type_enum_name">HIGH_QUALITY</span>
23028 <span class="entry_type_enum_notes"><p>Apply high-quality lens shading correction,<wbr/> at the
23029 cost of possibly reduced frame rate.<wbr/></p></span>
23033 </td> <!-- entry_type -->
23035 <td class="entry_description">
23036 <p>Quality of lens shading correction applied
23037 to the image data.<wbr/></p>
23040 <td class="entry_units">
23043 <td class="entry_range">
23044 <p><a href="#static_android.shading.availableModes">android.<wbr/>shading.<wbr/>available<wbr/>Modes</a></p>
23047 <td class="entry_hal_version">
23051 <td class="entry_tags">
23055 <tr class="entries_header">
23056 <th class="th_details" colspan="6">Details</th>
23058 <tr class="entry_cont">
23059 <td class="entry_details" colspan="6">
23060 <p>When set to OFF mode,<wbr/> no lens shading correction will be applied by the
23061 camera device,<wbr/> and an identity lens shading map data will be provided
23062 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
23063 shading map with size of <code>[ 4,<wbr/> 3 ]</code>,<wbr/>
23064 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
23065 map shown below:</p>
23066 <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/>
23067 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/>
23068 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/>
23069 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/>
23070 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/>
23071 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 ]
23073 <p>When set to other modes,<wbr/> lens shading correction will be applied by the camera
23074 device.<wbr/> Applications can request lens shading map data by setting
23075 <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
23076 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
23077 data will be the one applied by the camera device for this capture request.<wbr/></p>
23078 <p>The shading map data may depend on the auto-exposure (AE) and AWB statistics,<wbr/> therefore
23079 the reliability of the map data may be affected by the AE and AWB algorithms.<wbr/> When AE and
23080 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>
23081 OFF),<wbr/> to get best results,<wbr/> it is recommended that the applications wait for the AE and AWB
23082 to be converged before using the returned shading map data.<wbr/></p>
23087 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23088 <!-- end of entry -->
23091 <tr class="entry" id="controls_android.shading.strength">
23092 <td class="entry_name
23094 android.<wbr/>shading.<wbr/>strength
23096 <td class="entry_type">
23097 <span class="entry_type_name">byte</span>
23099 <span class="entry_type_visibility"> [system]</span>
23106 </td> <!-- entry_type -->
23108 <td class="entry_description">
23109 <p>Control the amount of shading correction
23110 applied to the images</p>
23113 <td class="entry_units">
23114 unitless: 1-10; 10 is full shading
23118 <td class="entry_range">
23121 <td class="entry_hal_version">
23125 <td class="entry_tags">
23126 <ul class="entry_tags">
23127 <li><a href="#tag_FUTURE">FUTURE</a></li>
23134 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23135 <!-- end of entry -->
23139 <!-- end of kind -->
23141 <tr><td colspan="7" class="kind">dynamic</td></tr>
23143 <thead class="entries_header">
23145 <th class="th_name">Property Name</th>
23146 <th class="th_type">Type</th>
23147 <th class="th_description">Description</th>
23148 <th class="th_units">Units</th>
23149 <th class="th_range">Range</th>
23150 <th class="th_hal_version">Initial HIDL HAL version</th>
23151 <th class="th_tags">Tags</th>
23166 <tr class="entry" id="dynamic_android.shading.mode">
23167 <td class="entry_name
23169 android.<wbr/>shading.<wbr/>mode
23171 <td class="entry_type">
23172 <span class="entry_type_name entry_type_name_enum">byte</span>
23174 <span class="entry_type_visibility"> [public]</span>
23177 <span class="entry_type_hwlevel">[full] </span>
23181 <ul class="entry_type_enum">
23183 <span class="entry_type_enum_name">OFF</span>
23184 <span class="entry_type_enum_notes"><p>No lens shading correction is applied.<wbr/></p></span>
23187 <span class="entry_type_enum_name">FAST</span>
23188 <span class="entry_type_enum_notes"><p>Apply lens shading corrections,<wbr/> without slowing
23189 frame rate relative to sensor raw output</p></span>
23192 <span class="entry_type_enum_name">HIGH_QUALITY</span>
23193 <span class="entry_type_enum_notes"><p>Apply high-quality lens shading correction,<wbr/> at the
23194 cost of possibly reduced frame rate.<wbr/></p></span>
23198 </td> <!-- entry_type -->
23200 <td class="entry_description">
23201 <p>Quality of lens shading correction applied
23202 to the image data.<wbr/></p>
23205 <td class="entry_units">
23208 <td class="entry_range">
23209 <p><a href="#static_android.shading.availableModes">android.<wbr/>shading.<wbr/>available<wbr/>Modes</a></p>
23212 <td class="entry_hal_version">
23216 <td class="entry_tags">
23220 <tr class="entries_header">
23221 <th class="th_details" colspan="6">Details</th>
23223 <tr class="entry_cont">
23224 <td class="entry_details" colspan="6">
23225 <p>When set to OFF mode,<wbr/> no lens shading correction will be applied by the
23226 camera device,<wbr/> and an identity lens shading map data will be provided
23227 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
23228 shading map with size of <code>[ 4,<wbr/> 3 ]</code>,<wbr/>
23229 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
23230 map shown below:</p>
23231 <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/>
23232 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/>
23233 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/>
23234 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/>
23235 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/>
23236 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 ]
23238 <p>When set to other modes,<wbr/> lens shading correction will be applied by the camera
23239 device.<wbr/> Applications can request lens shading map data by setting
23240 <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
23241 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
23242 data will be the one applied by the camera device for this capture request.<wbr/></p>
23243 <p>The shading map data may depend on the auto-exposure (AE) and AWB statistics,<wbr/> therefore
23244 the reliability of the map data may be affected by the AE and AWB algorithms.<wbr/> When AE and
23245 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>
23246 OFF),<wbr/> to get best results,<wbr/> it is recommended that the applications wait for the AE and AWB
23247 to be converged before using the returned shading map data.<wbr/></p>
23252 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23253 <!-- end of entry -->
23257 <!-- end of kind -->
23259 <tr><td colspan="7" class="kind">static</td></tr>
23261 <thead class="entries_header">
23263 <th class="th_name">Property Name</th>
23264 <th class="th_type">Type</th>
23265 <th class="th_description">Description</th>
23266 <th class="th_units">Units</th>
23267 <th class="th_range">Range</th>
23268 <th class="th_hal_version">Initial HIDL HAL version</th>
23269 <th class="th_tags">Tags</th>
23284 <tr class="entry" id="static_android.shading.availableModes">
23285 <td class="entry_name
23287 android.<wbr/>shading.<wbr/>available<wbr/>Modes
23289 <td class="entry_type">
23290 <span class="entry_type_name">byte</span>
23291 <span class="entry_type_container">x</span>
23293 <span class="entry_type_array">
23296 <span class="entry_type_visibility"> [public as enumList]</span>
23299 <span class="entry_type_hwlevel">[legacy] </span>
23302 <div class="entry_type_notes">List of enums (android.<wbr/>shading.<wbr/>mode).<wbr/></div>
23305 </td> <!-- entry_type -->
23307 <td class="entry_description">
23308 <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>
23311 <td class="entry_units">
23314 <td class="entry_range">
23315 <p>Any value listed in <a href="#controls_android.shading.mode">android.<wbr/>shading.<wbr/>mode</a></p>
23318 <td class="entry_hal_version">
23322 <td class="entry_tags">
23326 <tr class="entries_header">
23327 <th class="th_details" colspan="6">Details</th>
23329 <tr class="entry_cont">
23330 <td class="entry_details" colspan="6">
23331 <p>This list contains lens shading modes that can be set for the camera device.<wbr/>
23332 Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always
23333 list OFF and FAST mode.<wbr/> This includes all FULL level devices.<wbr/>
23334 LEGACY devices will always only support FAST mode.<wbr/></p>
23338 <tr class="entries_header">
23339 <th class="th_details" colspan="6">HAL Implementation Details</th>
23341 <tr class="entry_cont">
23342 <td class="entry_details" colspan="6">
23343 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if lens shading correction control is
23344 available on the camera device,<wbr/> but the underlying implementation can be the same for
23345 both modes.<wbr/> That is,<wbr/> if the highest quality implementation on the camera device does not
23346 slow down capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
23350 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23351 <!-- end of entry -->
23355 <!-- end of kind -->
23358 <!-- end of section -->
23359 <tr><td colspan="7" id="section_statistics" class="section">statistics</td></tr>
23362 <tr><td colspan="7" class="kind">controls</td></tr>
23364 <thead class="entries_header">
23366 <th class="th_name">Property Name</th>
23367 <th class="th_type">Type</th>
23368 <th class="th_description">Description</th>
23369 <th class="th_units">Units</th>
23370 <th class="th_range">Range</th>
23371 <th class="th_hal_version">Initial HIDL HAL version</th>
23372 <th class="th_tags">Tags</th>
23387 <tr class="entry" id="controls_android.statistics.faceDetectMode">
23388 <td class="entry_name
23390 android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode
23392 <td class="entry_type">
23393 <span class="entry_type_name entry_type_name_enum">byte</span>
23395 <span class="entry_type_visibility"> [public]</span>
23398 <span class="entry_type_hwlevel">[legacy] </span>
23402 <ul class="entry_type_enum">
23404 <span class="entry_type_enum_name">OFF</span>
23405 <span class="entry_type_enum_notes"><p>Do not include face detection statistics in capture
23406 results.<wbr/></p></span>
23409 <span class="entry_type_enum_name">SIMPLE</span>
23410 <span class="entry_type_enum_optional">[optional]</span>
23411 <span class="entry_type_enum_notes"><p>Return face rectangle and confidence values only.<wbr/></p></span>
23414 <span class="entry_type_enum_name">FULL</span>
23415 <span class="entry_type_enum_optional">[optional]</span>
23416 <span class="entry_type_enum_notes"><p>Return all face
23417 metadata.<wbr/></p>
23418 <p>In this mode,<wbr/> face rectangles,<wbr/> scores,<wbr/> landmarks,<wbr/> and face IDs are all valid.<wbr/></p></span>
23422 </td> <!-- entry_type -->
23424 <td class="entry_description">
23425 <p>Operating mode for the face detector
23429 <td class="entry_units">
23432 <td class="entry_range">
23433 <p><a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a></p>
23436 <td class="entry_hal_version">
23440 <td class="entry_tags">
23441 <ul class="entry_tags">
23442 <li><a href="#tag_BC">BC</a></li>
23447 <tr class="entries_header">
23448 <th class="th_details" colspan="6">Details</th>
23450 <tr class="entry_cont">
23451 <td class="entry_details" colspan="6">
23452 <p>Whether face detection is enabled,<wbr/> and whether it
23453 should output just the basic fields or the full set of
23458 <tr class="entries_header">
23459 <th class="th_details" colspan="6">HAL Implementation Details</th>
23461 <tr class="entry_cont">
23462 <td class="entry_details" colspan="6">
23463 <p>SIMPLE mode must fill in <a href="#dynamic_android.statistics.faceRectangles">android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles</a> and
23464 <a href="#dynamic_android.statistics.faceScores">android.<wbr/>statistics.<wbr/>face<wbr/>Scores</a>.<wbr/>
23465 FULL mode must also fill in <a href="#dynamic_android.statistics.faceIds">android.<wbr/>statistics.<wbr/>face<wbr/>Ids</a>,<wbr/> and
23466 <a href="#dynamic_android.statistics.faceLandmarks">android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks</a>.<wbr/></p>
23470 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23471 <!-- end of entry -->
23474 <tr class="entry" id="controls_android.statistics.histogramMode">
23475 <td class="entry_name
23477 android.<wbr/>statistics.<wbr/>histogram<wbr/>Mode
23479 <td class="entry_type">
23480 <span class="entry_type_name entry_type_name_enum">byte</span>
23482 <span class="entry_type_visibility"> [system as boolean]</span>
23488 <ul class="entry_type_enum">
23490 <span class="entry_type_enum_name">OFF</span>
23493 <span class="entry_type_enum_name">ON</span>
23497 </td> <!-- entry_type -->
23499 <td class="entry_description">
23500 <p>Operating mode for histogram
23504 <td class="entry_units">
23507 <td class="entry_range">
23510 <td class="entry_hal_version">
23514 <td class="entry_tags">
23515 <ul class="entry_tags">
23516 <li><a href="#tag_FUTURE">FUTURE</a></li>
23523 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23524 <!-- end of entry -->
23527 <tr class="entry" id="controls_android.statistics.sharpnessMapMode">
23528 <td class="entry_name
23530 android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map<wbr/>Mode
23532 <td class="entry_type">
23533 <span class="entry_type_name entry_type_name_enum">byte</span>
23535 <span class="entry_type_visibility"> [system as boolean]</span>
23541 <ul class="entry_type_enum">
23543 <span class="entry_type_enum_name">OFF</span>
23546 <span class="entry_type_enum_name">ON</span>
23550 </td> <!-- entry_type -->
23552 <td class="entry_description">
23553 <p>Operating mode for sharpness map
23557 <td class="entry_units">
23560 <td class="entry_range">
23563 <td class="entry_hal_version">
23567 <td class="entry_tags">
23568 <ul class="entry_tags">
23569 <li><a href="#tag_FUTURE">FUTURE</a></li>
23576 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23577 <!-- end of entry -->
23580 <tr class="entry" id="controls_android.statistics.hotPixelMapMode">
23581 <td class="entry_name
23583 android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode
23585 <td class="entry_type">
23586 <span class="entry_type_name entry_type_name_enum">byte</span>
23588 <span class="entry_type_visibility"> [public as boolean]</span>
23594 <ul class="entry_type_enum">
23596 <span class="entry_type_enum_name">OFF</span>
23597 <span class="entry_type_enum_notes"><p>Hot pixel map production is disabled.<wbr/></p></span>
23600 <span class="entry_type_enum_name">ON</span>
23601 <span class="entry_type_enum_notes"><p>Hot pixel map production is enabled.<wbr/></p></span>
23605 </td> <!-- entry_type -->
23607 <td class="entry_description">
23608 <p>Operating mode for hot pixel map generation.<wbr/></p>
23611 <td class="entry_units">
23614 <td class="entry_range">
23615 <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>
23618 <td class="entry_hal_version">
23622 <td class="entry_tags">
23623 <ul class="entry_tags">
23624 <li><a href="#tag_V1">V1</a></li>
23625 <li><a href="#tag_RAW">RAW</a></li>
23630 <tr class="entries_header">
23631 <th class="th_details" colspan="6">Details</th>
23633 <tr class="entry_cont">
23634 <td class="entry_details" colspan="6">
23635 <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/>
23636 If set to <code>false</code>,<wbr/> no hot pixel map will be returned.<wbr/></p>
23641 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23642 <!-- end of entry -->
23645 <tr class="entry" id="controls_android.statistics.lensShadingMapMode">
23646 <td class="entry_name
23648 android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode
23650 <td class="entry_type">
23651 <span class="entry_type_name entry_type_name_enum">byte</span>
23653 <span class="entry_type_visibility"> [public]</span>
23656 <span class="entry_type_hwlevel">[full] </span>
23660 <ul class="entry_type_enum">
23662 <span class="entry_type_enum_name">OFF</span>
23663 <span class="entry_type_enum_notes"><p>Do not include a lens shading map in the capture result.<wbr/></p></span>
23666 <span class="entry_type_enum_name">ON</span>
23667 <span class="entry_type_enum_notes"><p>Include a lens shading map in the capture result.<wbr/></p></span>
23671 </td> <!-- entry_type -->
23673 <td class="entry_description">
23674 <p>Whether the camera device will output the lens
23675 shading map in output result metadata.<wbr/></p>
23678 <td class="entry_units">
23681 <td class="entry_range">
23682 <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>
23685 <td class="entry_hal_version">
23689 <td class="entry_tags">
23690 <ul class="entry_tags">
23691 <li><a href="#tag_RAW">RAW</a></li>
23696 <tr class="entries_header">
23697 <th class="th_details" colspan="6">Details</th>
23699 <tr class="entry_cont">
23700 <td class="entry_details" colspan="6">
23701 <p>When set to ON,<wbr/>
23702 <a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> will be provided in
23703 the output result metadata.<wbr/></p>
23704 <p>ON is always supported on devices with the RAW capability.<wbr/></p>
23709 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23710 <!-- end of entry -->
23714 <!-- end of kind -->
23716 <tr><td colspan="7" class="kind">static</td></tr>
23718 <thead class="entries_header">
23720 <th class="th_name">Property Name</th>
23721 <th class="th_type">Type</th>
23722 <th class="th_description">Description</th>
23723 <th class="th_units">Units</th>
23724 <th class="th_range">Range</th>
23725 <th class="th_hal_version">Initial HIDL HAL version</th>
23726 <th class="th_tags">Tags</th>
23743 <tr class="entry" id="static_android.statistics.info.availableFaceDetectModes">
23744 <td class="entry_name
23746 android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes
23748 <td class="entry_type">
23749 <span class="entry_type_name">byte</span>
23750 <span class="entry_type_container">x</span>
23752 <span class="entry_type_array">
23755 <span class="entry_type_visibility"> [public as enumList]</span>
23758 <span class="entry_type_hwlevel">[legacy] </span>
23761 <div class="entry_type_notes">List of enums from android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</div>
23764 </td> <!-- entry_type -->
23766 <td class="entry_description">
23767 <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
23768 supported by this camera device.<wbr/></p>
23771 <td class="entry_units">
23774 <td class="entry_range">
23775 <p>Any value listed in <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></p>
23778 <td class="entry_hal_version">
23782 <td class="entry_tags">
23786 <tr class="entries_header">
23787 <th class="th_details" colspan="6">Details</th>
23789 <tr class="entry_cont">
23790 <td class="entry_details" colspan="6">
23791 <p>OFF is always supported.<wbr/></p>
23796 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23797 <!-- end of entry -->
23800 <tr class="entry" id="static_android.statistics.info.histogramBucketCount">
23801 <td class="entry_name
23803 android.<wbr/>statistics.<wbr/>info.<wbr/>histogram<wbr/>Bucket<wbr/>Count
23805 <td class="entry_type">
23806 <span class="entry_type_name">int32</span>
23808 <span class="entry_type_visibility"> [system]</span>
23815 </td> <!-- entry_type -->
23817 <td class="entry_description">
23818 <p>Number of histogram buckets
23822 <td class="entry_units">
23825 <td class="entry_range">
23829 <td class="entry_hal_version">
23833 <td class="entry_tags">
23834 <ul class="entry_tags">
23835 <li><a href="#tag_FUTURE">FUTURE</a></li>
23842 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23843 <!-- end of entry -->
23846 <tr class="entry" id="static_android.statistics.info.maxFaceCount">
23847 <td class="entry_name
23849 android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Face<wbr/>Count
23851 <td class="entry_type">
23852 <span class="entry_type_name">int32</span>
23854 <span class="entry_type_visibility"> [public]</span>
23857 <span class="entry_type_hwlevel">[legacy] </span>
23862 </td> <!-- entry_type -->
23864 <td class="entry_description">
23865 <p>The maximum number of simultaneously detectable
23869 <td class="entry_units">
23872 <td class="entry_range">
23873 <p>0 for cameras without available face detection; otherwise:
23874 <code>>=4</code> for LIMITED or FULL hwlevel devices or
23875 <code>>0</code> for LEGACY devices.<wbr/></p>
23878 <td class="entry_hal_version">
23882 <td class="entry_tags">
23883 <ul class="entry_tags">
23884 <li><a href="#tag_BC">BC</a></li>
23891 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23892 <!-- end of entry -->
23895 <tr class="entry" id="static_android.statistics.info.maxHistogramCount">
23896 <td class="entry_name
23898 android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Histogram<wbr/>Count
23900 <td class="entry_type">
23901 <span class="entry_type_name">int32</span>
23903 <span class="entry_type_visibility"> [system]</span>
23910 </td> <!-- entry_type -->
23912 <td class="entry_description">
23913 <p>Maximum value possible for a histogram
23917 <td class="entry_units">
23920 <td class="entry_range">
23923 <td class="entry_hal_version">
23927 <td class="entry_tags">
23928 <ul class="entry_tags">
23929 <li><a href="#tag_FUTURE">FUTURE</a></li>
23936 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23937 <!-- end of entry -->
23940 <tr class="entry" id="static_android.statistics.info.maxSharpnessMapValue">
23941 <td class="entry_name
23943 android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Sharpness<wbr/>Map<wbr/>Value
23945 <td class="entry_type">
23946 <span class="entry_type_name">int32</span>
23948 <span class="entry_type_visibility"> [system]</span>
23955 </td> <!-- entry_type -->
23957 <td class="entry_description">
23958 <p>Maximum value possible for a sharpness map
23962 <td class="entry_units">
23965 <td class="entry_range">
23968 <td class="entry_hal_version">
23972 <td class="entry_tags">
23973 <ul class="entry_tags">
23974 <li><a href="#tag_FUTURE">FUTURE</a></li>
23981 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23982 <!-- end of entry -->
23985 <tr class="entry" id="static_android.statistics.info.sharpnessMapSize">
23986 <td class="entry_name
23988 android.<wbr/>statistics.<wbr/>info.<wbr/>sharpness<wbr/>Map<wbr/>Size
23990 <td class="entry_type">
23991 <span class="entry_type_name">int32</span>
23992 <span class="entry_type_container">x</span>
23994 <span class="entry_type_array">
23997 <span class="entry_type_visibility"> [system as size]</span>
24002 <div class="entry_type_notes">width x height</div>
24005 </td> <!-- entry_type -->
24007 <td class="entry_description">
24008 <p>Dimensions of the sharpness
24012 <td class="entry_units">
24015 <td class="entry_range">
24016 <p>Must be at least 32 x 32</p>
24019 <td class="entry_hal_version">
24023 <td class="entry_tags">
24024 <ul class="entry_tags">
24025 <li><a href="#tag_FUTURE">FUTURE</a></li>
24032 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24033 <!-- end of entry -->
24036 <tr class="entry" id="static_android.statistics.info.availableHotPixelMapModes">
24037 <td class="entry_name
24039 android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Map<wbr/>Modes
24041 <td class="entry_type">
24042 <span class="entry_type_name">byte</span>
24043 <span class="entry_type_container">x</span>
24045 <span class="entry_type_array">
24048 <span class="entry_type_visibility"> [public as boolean]</span>
24053 <div class="entry_type_notes">list of enums</div>
24056 </td> <!-- entry_type -->
24058 <td class="entry_description">
24059 <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
24060 supported by this camera device.<wbr/></p>
24063 <td class="entry_units">
24066 <td class="entry_range">
24067 <p>Any value listed in <a href="#controls_android.statistics.hotPixelMapMode">android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode</a></p>
24070 <td class="entry_hal_version">
24074 <td class="entry_tags">
24075 <ul class="entry_tags">
24076 <li><a href="#tag_V1">V1</a></li>
24077 <li><a href="#tag_RAW">RAW</a></li>
24082 <tr class="entries_header">
24083 <th class="th_details" colspan="6">Details</th>
24085 <tr class="entry_cont">
24086 <td class="entry_details" colspan="6">
24087 <p>If no hotpixel map output is available for this camera device,<wbr/> this will contain only
24088 <code>false</code>.<wbr/></p>
24089 <p>ON is always supported on devices with the RAW capability.<wbr/></p>
24094 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24095 <!-- end of entry -->
24098 <tr class="entry" id="static_android.statistics.info.availableLensShadingMapModes">
24099 <td class="entry_name
24101 android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Lens<wbr/>Shading<wbr/>Map<wbr/>Modes
24103 <td class="entry_type">
24104 <span class="entry_type_name">byte</span>
24105 <span class="entry_type_container">x</span>
24107 <span class="entry_type_array">
24110 <span class="entry_type_visibility"> [public as enumList]</span>
24115 <div class="entry_type_notes">list of enums</div>
24118 </td> <!-- entry_type -->
24120 <td class="entry_description">
24121 <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
24122 are supported by this camera device.<wbr/></p>
24125 <td class="entry_units">
24128 <td class="entry_range">
24129 <p>Any value listed in <a href="#controls_android.statistics.lensShadingMapMode">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode</a></p>
24132 <td class="entry_hal_version">
24136 <td class="entry_tags">
24140 <tr class="entries_header">
24141 <th class="th_details" colspan="6">Details</th>
24143 <tr class="entry_cont">
24144 <td class="entry_details" colspan="6">
24145 <p>If no lens shading map output is available for this camera device,<wbr/> this key will
24146 contain only OFF.<wbr/></p>
24147 <p>ON is always supported on devices with the RAW capability.<wbr/>
24148 LEGACY mode devices will always only support OFF.<wbr/></p>
24153 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24154 <!-- end of entry -->
24161 <!-- end of kind -->
24163 <tr><td colspan="7" class="kind">dynamic</td></tr>
24165 <thead class="entries_header">
24167 <th class="th_name">Property Name</th>
24168 <th class="th_type">Type</th>
24169 <th class="th_description">Description</th>
24170 <th class="th_units">Units</th>
24171 <th class="th_range">Range</th>
24172 <th class="th_hal_version">Initial HIDL HAL version</th>
24173 <th class="th_tags">Tags</th>
24188 <tr class="entry" id="dynamic_android.statistics.faceDetectMode">
24189 <td class="entry_name
24191 android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode
24193 <td class="entry_type">
24194 <span class="entry_type_name entry_type_name_enum">byte</span>
24196 <span class="entry_type_visibility"> [public]</span>
24199 <span class="entry_type_hwlevel">[legacy] </span>
24203 <ul class="entry_type_enum">
24205 <span class="entry_type_enum_name">OFF</span>
24206 <span class="entry_type_enum_notes"><p>Do not include face detection statistics in capture
24207 results.<wbr/></p></span>
24210 <span class="entry_type_enum_name">SIMPLE</span>
24211 <span class="entry_type_enum_optional">[optional]</span>
24212 <span class="entry_type_enum_notes"><p>Return face rectangle and confidence values only.<wbr/></p></span>
24215 <span class="entry_type_enum_name">FULL</span>
24216 <span class="entry_type_enum_optional">[optional]</span>
24217 <span class="entry_type_enum_notes"><p>Return all face
24218 metadata.<wbr/></p>
24219 <p>In this mode,<wbr/> face rectangles,<wbr/> scores,<wbr/> landmarks,<wbr/> and face IDs are all valid.<wbr/></p></span>
24223 </td> <!-- entry_type -->
24225 <td class="entry_description">
24226 <p>Operating mode for the face detector
24230 <td class="entry_units">
24233 <td class="entry_range">
24234 <p><a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a></p>
24237 <td class="entry_hal_version">
24241 <td class="entry_tags">
24242 <ul class="entry_tags">
24243 <li><a href="#tag_BC">BC</a></li>
24248 <tr class="entries_header">
24249 <th class="th_details" colspan="6">Details</th>
24251 <tr class="entry_cont">
24252 <td class="entry_details" colspan="6">
24253 <p>Whether face detection is enabled,<wbr/> and whether it
24254 should output just the basic fields or the full set of
24259 <tr class="entries_header">
24260 <th class="th_details" colspan="6">HAL Implementation Details</th>
24262 <tr class="entry_cont">
24263 <td class="entry_details" colspan="6">
24264 <p>SIMPLE mode must fill in <a href="#dynamic_android.statistics.faceRectangles">android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles</a> and
24265 <a href="#dynamic_android.statistics.faceScores">android.<wbr/>statistics.<wbr/>face<wbr/>Scores</a>.<wbr/>
24266 FULL mode must also fill in <a href="#dynamic_android.statistics.faceIds">android.<wbr/>statistics.<wbr/>face<wbr/>Ids</a>,<wbr/> and
24267 <a href="#dynamic_android.statistics.faceLandmarks">android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks</a>.<wbr/></p>
24271 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24272 <!-- end of entry -->
24275 <tr class="entry" id="dynamic_android.statistics.faceIds">
24276 <td class="entry_name
24278 android.<wbr/>statistics.<wbr/>face<wbr/>Ids
24280 <td class="entry_type">
24281 <span class="entry_type_name">int32</span>
24282 <span class="entry_type_container">x</span>
24284 <span class="entry_type_array">
24287 <span class="entry_type_visibility"> [ndk_public]</span>
24290 <span class="entry_type_hwlevel">[legacy] </span>
24295 </td> <!-- entry_type -->
24297 <td class="entry_description">
24298 <p>List of unique IDs for detected faces.<wbr/></p>
24301 <td class="entry_units">
24304 <td class="entry_range">
24307 <td class="entry_hal_version">
24311 <td class="entry_tags">
24312 <ul class="entry_tags">
24313 <li><a href="#tag_BC">BC</a></li>
24318 <tr class="entries_header">
24319 <th class="th_details" colspan="6">Details</th>
24321 <tr class="entry_cont">
24322 <td class="entry_details" colspan="6">
24323 <p>Each detected face is given a unique ID that is valid for as long as the face is visible
24324 to the camera device.<wbr/> A face that leaves the field of view and later returns may be
24325 assigned a new ID.<wbr/></p>
24326 <p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> == FULL</p>
24331 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24332 <!-- end of entry -->
24335 <tr class="entry" id="dynamic_android.statistics.faceLandmarks">
24336 <td class="entry_name
24338 android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks
24340 <td class="entry_type">
24341 <span class="entry_type_name">int32</span>
24342 <span class="entry_type_container">x</span>
24344 <span class="entry_type_array">
24347 <span class="entry_type_visibility"> [ndk_public]</span>
24350 <span class="entry_type_hwlevel">[legacy] </span>
24353 <div class="entry_type_notes">(leftEyeX,<wbr/> leftEyeY,<wbr/> rightEyeX,<wbr/> rightEyeY,<wbr/> mouthX,<wbr/> mouthY)</div>
24356 </td> <!-- entry_type -->
24358 <td class="entry_description">
24359 <p>List of landmarks for detected
24363 <td class="entry_units">
24366 <td class="entry_range">
24369 <td class="entry_hal_version">
24373 <td class="entry_tags">
24374 <ul class="entry_tags">
24375 <li><a href="#tag_BC">BC</a></li>
24380 <tr class="entries_header">
24381 <th class="th_details" colspan="6">Details</th>
24383 <tr class="entry_cont">
24384 <td class="entry_details" colspan="6">
24385 <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
24386 <code>(0,<wbr/> 0)</code> being the top-left pixel of the active array.<wbr/></p>
24387 <p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> == FULL</p>
24392 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24393 <!-- end of entry -->
24396 <tr class="entry" id="dynamic_android.statistics.faceRectangles">
24397 <td class="entry_name
24399 android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles
24401 <td class="entry_type">
24402 <span class="entry_type_name">int32</span>
24403 <span class="entry_type_container">x</span>
24405 <span class="entry_type_array">
24408 <span class="entry_type_visibility"> [ndk_public as rectangle]</span>
24411 <span class="entry_type_hwlevel">[legacy] </span>
24414 <div class="entry_type_notes">(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax).<wbr/> (0,<wbr/>0) is top-left of active pixel area</div>
24417 </td> <!-- entry_type -->
24419 <td class="entry_description">
24420 <p>List of the bounding rectangles for detected
24424 <td class="entry_units">
24427 <td class="entry_range">
24430 <td class="entry_hal_version">
24434 <td class="entry_tags">
24435 <ul class="entry_tags">
24436 <li><a href="#tag_BC">BC</a></li>
24441 <tr class="entries_header">
24442 <th class="th_details" colspan="6">Details</th>
24444 <tr class="entry_cont">
24445 <td class="entry_details" colspan="6">
24446 <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
24447 <code>(0,<wbr/> 0)</code> being the top-left pixel of the active array.<wbr/></p>
24448 <p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> != OFF</p>
24453 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24454 <!-- end of entry -->
24457 <tr class="entry" id="dynamic_android.statistics.faceScores">
24458 <td class="entry_name
24460 android.<wbr/>statistics.<wbr/>face<wbr/>Scores
24462 <td class="entry_type">
24463 <span class="entry_type_name">byte</span>
24464 <span class="entry_type_container">x</span>
24466 <span class="entry_type_array">
24469 <span class="entry_type_visibility"> [ndk_public]</span>
24472 <span class="entry_type_hwlevel">[legacy] </span>
24477 </td> <!-- entry_type -->
24479 <td class="entry_description">
24480 <p>List of the face confidence scores for
24484 <td class="entry_units">
24487 <td class="entry_range">
24491 <td class="entry_hal_version">
24495 <td class="entry_tags">
24496 <ul class="entry_tags">
24497 <li><a href="#tag_BC">BC</a></li>
24502 <tr class="entries_header">
24503 <th class="th_details" colspan="6">Details</th>
24505 <tr class="entry_cont">
24506 <td class="entry_details" colspan="6">
24507 <p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> != OFF.<wbr/></p>
24511 <tr class="entries_header">
24512 <th class="th_details" colspan="6">HAL Implementation Details</th>
24514 <tr class="entry_cont">
24515 <td class="entry_details" colspan="6">
24516 <p>The value should be meaningful (for example,<wbr/> setting 100 at
24517 all times is illegal).<wbr/></p>
24521 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24522 <!-- end of entry -->
24525 <tr class="entry" id="dynamic_android.statistics.faces">
24526 <td class="entry_name
24528 android.<wbr/>statistics.<wbr/>faces
24530 <td class="entry_type">
24531 <span class="entry_type_name">int32</span>
24532 <span class="entry_type_container">x</span>
24534 <span class="entry_type_array">
24537 <span class="entry_type_visibility"> [java_public as face]</span>
24539 <span class="entry_type_synthetic">[synthetic] </span>
24541 <span class="entry_type_hwlevel">[legacy] </span>
24546 </td> <!-- entry_type -->
24548 <td class="entry_description">
24549 <p>List of the faces detected through camera face detection
24550 in this capture.<wbr/></p>
24553 <td class="entry_units">
24556 <td class="entry_range">
24559 <td class="entry_hal_version">
24563 <td class="entry_tags">
24567 <tr class="entries_header">
24568 <th class="th_details" colspan="6">Details</th>
24570 <tr class="entry_cont">
24571 <td class="entry_details" colspan="6">
24572 <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>
24577 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24578 <!-- end of entry -->
24581 <tr class="entry" id="dynamic_android.statistics.histogram">
24582 <td class="entry_name
24584 android.<wbr/>statistics.<wbr/>histogram
24586 <td class="entry_type">
24587 <span class="entry_type_name">int32</span>
24588 <span class="entry_type_container">x</span>
24590 <span class="entry_type_array">
24593 <span class="entry_type_visibility"> [system]</span>
24598 <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>
24601 </td> <!-- entry_type -->
24603 <td class="entry_description">
24604 <p>A 3-channel histogram based on the raw
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>
24625 <tr class="entries_header">
24626 <th class="th_details" colspan="6">Details</th>
24628 <tr class="entry_cont">
24629 <td class="entry_details" colspan="6">
24630 <p>The k'th bucket (0-based) covers the input range
24631 (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/>
24632 (k + 1) * w /<wbr/> N ).<wbr/> If only a monochrome sharpness map is
24633 supported,<wbr/> all channels should have the same data</p>
24638 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24639 <!-- end of entry -->
24642 <tr class="entry" id="dynamic_android.statistics.histogramMode">
24643 <td class="entry_name
24645 android.<wbr/>statistics.<wbr/>histogram<wbr/>Mode
24647 <td class="entry_type">
24648 <span class="entry_type_name entry_type_name_enum">byte</span>
24650 <span class="entry_type_visibility"> [system as boolean]</span>
24656 <ul class="entry_type_enum">
24658 <span class="entry_type_enum_name">OFF</span>
24661 <span class="entry_type_enum_name">ON</span>
24665 </td> <!-- entry_type -->
24667 <td class="entry_description">
24668 <p>Operating mode for histogram
24672 <td class="entry_units">
24675 <td class="entry_range">
24678 <td class="entry_hal_version">
24682 <td class="entry_tags">
24683 <ul class="entry_tags">
24684 <li><a href="#tag_FUTURE">FUTURE</a></li>
24691 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24692 <!-- end of entry -->
24695 <tr class="entry" id="dynamic_android.statistics.sharpnessMap">
24696 <td class="entry_name
24698 android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map
24700 <td class="entry_type">
24701 <span class="entry_type_name">int32</span>
24702 <span class="entry_type_container">x</span>
24704 <span class="entry_type_array">
24707 <span class="entry_type_visibility"> [system]</span>
24712 <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>
24715 </td> <!-- entry_type -->
24717 <td class="entry_description">
24718 <p>A 3-channel sharpness map,<wbr/> based on the raw
24722 <td class="entry_units">
24725 <td class="entry_range">
24728 <td class="entry_hal_version">
24732 <td class="entry_tags">
24733 <ul class="entry_tags">
24734 <li><a href="#tag_FUTURE">FUTURE</a></li>
24739 <tr class="entries_header">
24740 <th class="th_details" colspan="6">Details</th>
24742 <tr class="entry_cont">
24743 <td class="entry_details" colspan="6">
24744 <p>If only a monochrome sharpness map is supported,<wbr/>
24745 all channels should have the same data</p>
24750 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24751 <!-- end of entry -->
24754 <tr class="entry" id="dynamic_android.statistics.sharpnessMapMode">
24755 <td class="entry_name
24757 android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map<wbr/>Mode
24759 <td class="entry_type">
24760 <span class="entry_type_name entry_type_name_enum">byte</span>
24762 <span class="entry_type_visibility"> [system as boolean]</span>
24768 <ul class="entry_type_enum">
24770 <span class="entry_type_enum_name">OFF</span>
24773 <span class="entry_type_enum_name">ON</span>
24777 </td> <!-- entry_type -->
24779 <td class="entry_description">
24780 <p>Operating mode for sharpness map
24784 <td class="entry_units">
24787 <td class="entry_range">
24790 <td class="entry_hal_version">
24794 <td class="entry_tags">
24795 <ul class="entry_tags">
24796 <li><a href="#tag_FUTURE">FUTURE</a></li>
24803 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24804 <!-- end of entry -->
24807 <tr class="entry" id="dynamic_android.statistics.lensShadingCorrectionMap">
24808 <td class="entry_name
24810 android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Correction<wbr/>Map
24812 <td class="entry_type">
24813 <span class="entry_type_name">byte</span>
24815 <span class="entry_type_visibility"> [java_public as lensShadingMap]</span>
24818 <span class="entry_type_hwlevel">[full] </span>
24823 </td> <!-- entry_type -->
24825 <td class="entry_description">
24826 <p>The shading map is a low-resolution floating-point map
24827 that lists the coefficients used to correct for vignetting,<wbr/> for each
24828 Bayer color channel.<wbr/></p>
24831 <td class="entry_units">
24834 <td class="entry_range">
24835 <p>Each gain factor is >= 1</p>
24838 <td class="entry_hal_version">
24842 <td class="entry_tags">
24846 <tr class="entries_header">
24847 <th class="th_details" colspan="6">Details</th>
24849 <tr class="entry_cont">
24850 <td class="entry_details" colspan="6">
24851 <p>The map provided here is the same map that is used by the camera device to
24852 correct both color shading and vignetting for output non-RAW images.<wbr/></p>
24853 <p>When there is no lens shading correction applied to RAW
24854 output images (<a href="#static_android.sensor.info.lensShadingApplied">android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied</a> <code>==</code>
24855 false),<wbr/> this map is the complete lens shading correction
24856 map; when there is some lens shading correction applied to
24857 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
24858 correction map that needs to be applied to get shading
24859 corrected images that match the camera device's output for
24860 non-RAW formats.<wbr/></p>
24861 <p>For a complete shading correction map,<wbr/> the least shaded
24862 section of the image will have a gain factor of 1; all
24863 other sections will have gains above 1.<wbr/></p>
24864 <p>When <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> = TRANSFORM_<wbr/>MATRIX,<wbr/> the map
24865 will take into account the colorCorrection settings.<wbr/></p>
24866 <p>The shading map is for the entire active pixel array,<wbr/> and is not
24867 affected by the crop region specified in the request.<wbr/> Each shading map
24868 entry is the value of the shading compensation map over a specific
24869 pixel on the sensor.<wbr/> Specifically,<wbr/> with a (N x M) resolution shading
24870 map,<wbr/> and an active pixel array size (W x H),<wbr/> shading map entry
24871 (x,<wbr/>y) ϵ (0 ...<wbr/> N-1,<wbr/> 0 ...<wbr/> M-1) is the value of the shading map at
24872 pixel ( ((W-1)/<wbr/>(N-1)) * x,<wbr/> ((H-1)/<wbr/>(M-1)) * y) for the four color channels.<wbr/>
24873 The map is assumed to be bilinearly interpolated between the sample points.<wbr/></p>
24874 <p>The channel order is [R,<wbr/> Geven,<wbr/> Godd,<wbr/> B],<wbr/> where Geven is the green
24875 channel for the even rows of a Bayer pattern,<wbr/> and Godd is the odd rows.<wbr/>
24876 The shading map is stored in a fully interleaved format.<wbr/></p>
24877 <p>The shading map will generally have on the order of 30-40 rows and columns,<wbr/>
24878 and will be smaller than 64x64.<wbr/></p>
24879 <p>As an example,<wbr/> given a very small map defined as:</p>
24880 <pre><code>width,<wbr/>height = [ 4,<wbr/> 3 ]
24882 [ 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/>
24883 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/>
24884 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/>
24885 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/>
24886 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/>
24887 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 ]
24889 <p>The low-resolution scaling map images for each channel are
24890 (displayed using nearest-neighbor interpolation):</p>
24891 <p><img alt="Red lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/red_shading.png"/>
24892 <img alt="Green (even rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_e_shading.png"/>
24893 <img alt="Green (odd rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_o_shading.png"/>
24894 <img alt="Blue lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/blue_shading.png"/></p>
24895 <p>As a visualization only,<wbr/> inverting the full-color map to recover an
24896 image of a gray wall (using bicubic interpolation for visual quality) as captured by the sensor gives:</p>
24897 <p><img alt="Image of a uniform white wall (inverse shading map)" src="images/camera2/metadata/android.statistics.lensShadingMap/inv_shading.png"/></p>
24902 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24903 <!-- end of entry -->
24906 <tr class="entry" id="dynamic_android.statistics.lensShadingMap">
24907 <td class="entry_name
24909 android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map
24911 <td class="entry_type">
24912 <span class="entry_type_name">float</span>
24913 <span class="entry_type_container">x</span>
24915 <span class="entry_type_array">
24918 <span class="entry_type_visibility"> [ndk_public]</span>
24921 <span class="entry_type_hwlevel">[full] </span>
24924 <div class="entry_type_notes">2D array of float gain factors per channel to correct lens shading</div>
24927 </td> <!-- entry_type -->
24929 <td class="entry_description">
24930 <p>The shading map is a low-resolution floating-point map
24931 that lists the coefficients used to correct for vignetting and color shading,<wbr/>
24932 for each Bayer color channel of RAW image data.<wbr/></p>
24935 <td class="entry_units">
24938 <td class="entry_range">
24939 <p>Each gain factor is >= 1</p>
24942 <td class="entry_hal_version">
24946 <td class="entry_tags">
24950 <tr class="entries_header">
24951 <th class="th_details" colspan="6">Details</th>
24953 <tr class="entry_cont">
24954 <td class="entry_details" colspan="6">
24955 <p>The map provided here is the same map that is used by the camera device to
24956 correct both color shading and vignetting for output non-RAW images.<wbr/></p>
24957 <p>When there is no lens shading correction applied to RAW
24958 output images (<a href="#static_android.sensor.info.lensShadingApplied">android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied</a> <code>==</code>
24959 false),<wbr/> this map is the complete lens shading correction
24960 map; when there is some lens shading correction applied to
24961 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
24962 correction map that needs to be applied to get shading
24963 corrected images that match the camera device's output for
24964 non-RAW formats.<wbr/></p>
24965 <p>For a complete shading correction map,<wbr/> the least shaded
24966 section of the image will have a gain factor of 1; all
24967 other sections will have gains above 1.<wbr/></p>
24968 <p>When <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> = TRANSFORM_<wbr/>MATRIX,<wbr/> the map
24969 will take into account the colorCorrection settings.<wbr/></p>
24970 <p>The shading map is for the entire active pixel array,<wbr/> and is not
24971 affected by the crop region specified in the request.<wbr/> Each shading map
24972 entry is the value of the shading compensation map over a specific
24973 pixel on the sensor.<wbr/> Specifically,<wbr/> with a (N x M) resolution shading
24974 map,<wbr/> and an active pixel array size (W x H),<wbr/> shading map entry
24975 (x,<wbr/>y) ϵ (0 ...<wbr/> N-1,<wbr/> 0 ...<wbr/> M-1) is the value of the shading map at
24976 pixel ( ((W-1)/<wbr/>(N-1)) * x,<wbr/> ((H-1)/<wbr/>(M-1)) * y) for the four color channels.<wbr/>
24977 The map is assumed to be bilinearly interpolated between the sample points.<wbr/></p>
24978 <p>The channel order is [R,<wbr/> Geven,<wbr/> Godd,<wbr/> B],<wbr/> where Geven is the green
24979 channel for the even rows of a Bayer pattern,<wbr/> and Godd is the odd rows.<wbr/>
24980 The shading map is stored in a fully interleaved format,<wbr/> and its size
24981 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>
24982 <p>The shading map will generally have on the order of 30-40 rows and columns,<wbr/>
24983 and will be smaller than 64x64.<wbr/></p>
24984 <p>As an example,<wbr/> given a very small map defined as:</p>
24985 <pre><code><a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a> = [ 4,<wbr/> 3 ]
24986 <a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> =
24987 [ 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/>
24988 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/>
24989 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/>
24990 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/>
24991 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/>
24992 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 ]
24994 <p>The low-resolution scaling map images for each channel are
24995 (displayed using nearest-neighbor interpolation):</p>
24996 <p><img alt="Red lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/red_shading.png"/>
24997 <img alt="Green (even rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_e_shading.png"/>
24998 <img alt="Green (odd rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_o_shading.png"/>
24999 <img alt="Blue lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/blue_shading.png"/></p>
25000 <p>As a visualization only,<wbr/> inverting the full-color map to recover an
25001 image of a gray wall (using bicubic interpolation for visual quality)
25002 as captured by the sensor gives:</p>
25003 <p><img alt="Image of a uniform white wall (inverse shading map)" src="images/camera2/metadata/android.statistics.lensShadingMap/inv_shading.png"/></p>
25004 <p>Note that the RAW image data might be subject to lens shading
25005 correction not reported on this map.<wbr/> Query
25006 <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
25007 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>
25008 is TRUE,<wbr/> the RAW image data is subject to partial or full lens shading
25009 correction.<wbr/> In the case full lens shading correction is applied to RAW
25010 images,<wbr/> the gain factor map reported in this key will contain all 1.<wbr/>0 gains.<wbr/>
25011 In other words,<wbr/> the map reported in this key is the remaining lens shading
25012 that needs to be applied on the RAW image to get images without lens shading
25013 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
25018 <tr class="entries_header">
25019 <th class="th_details" colspan="6">HAL Implementation Details</th>
25021 <tr class="entry_cont">
25022 <td class="entry_details" colspan="6">
25023 <p>The lens shading map calculation may depend on exposure and white balance statistics.<wbr/>
25024 When AE and AWB are in AUTO modes
25025 (<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
25026 may have all the information it need to generate most accurate lens shading map.<wbr/> When
25027 AE or AWB are in manual mode
25028 (<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
25029 may be adversely impacted by manual exposure or white balance parameters.<wbr/> To avoid
25030 generating unreliable shading map data,<wbr/> the HAL may choose to lock the shading map with
25031 the latest known good map generated when the AE and AWB are in AUTO modes.<wbr/></p>
25035 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25036 <!-- end of entry -->
25039 <tr class="entry" id="dynamic_android.statistics.predictedColorGains">
25040 <td class="entry_name
25041 entry_name_deprecated
25043 android.<wbr/>statistics.<wbr/>predicted<wbr/>Color<wbr/>Gains
25045 <td class="entry_type">
25046 <span class="entry_type_name">float</span>
25047 <span class="entry_type_container">x</span>
25049 <span class="entry_type_array">
25052 <span class="entry_type_visibility"> [hidden]</span>
25056 <span class="entry_type_deprecated">[deprecated] </span>
25058 <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div>
25061 </td> <!-- entry_type -->
25063 <td class="entry_description">
25064 <p>The best-fit color channel gains calculated
25065 by the camera device's statistics units for the current output frame.<wbr/></p>
25068 <td class="entry_units">
25071 <td class="entry_range">
25072 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
25075 <td class="entry_hal_version">
25079 <td class="entry_tags">
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>This may be different than the gains used for this frame,<wbr/>
25089 since statistics processing on data from a new frame
25090 typically completes after the transform has already been
25091 applied to that frame.<wbr/></p>
25092 <p>The 4 channel gains are defined in Bayer domain,<wbr/>
25093 see <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> for details.<wbr/></p>
25094 <p>This value should always be calculated by the auto-white balance (AWB) block,<wbr/>
25095 regardless of the android.<wbr/>control.<wbr/>* current values.<wbr/></p>
25100 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25101 <!-- end of entry -->
25104 <tr class="entry" id="dynamic_android.statistics.predictedColorTransform">
25105 <td class="entry_name
25106 entry_name_deprecated
25108 android.<wbr/>statistics.<wbr/>predicted<wbr/>Color<wbr/>Transform
25110 <td class="entry_type">
25111 <span class="entry_type_name">rational</span>
25112 <span class="entry_type_container">x</span>
25114 <span class="entry_type_array">
25117 <span class="entry_type_visibility"> [hidden]</span>
25121 <span class="entry_type_deprecated">[deprecated] </span>
25123 <div class="entry_type_notes">3x3 rational matrix in row-major order</div>
25126 </td> <!-- entry_type -->
25128 <td class="entry_description">
25129 <p>The best-fit color transform matrix estimate
25130 calculated by the camera device's statistics units for the current
25131 output frame.<wbr/></p>
25134 <td class="entry_units">
25137 <td class="entry_range">
25138 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
25141 <td class="entry_hal_version">
25145 <td class="entry_tags">
25149 <tr class="entries_header">
25150 <th class="th_details" colspan="6">Details</th>
25152 <tr class="entry_cont">
25153 <td class="entry_details" colspan="6">
25154 <p>The camera device will provide the estimate from its
25155 statistics unit on the white balance transforms to use
25156 for the next frame.<wbr/> These are the values the camera device believes
25157 are the best fit for the current output frame.<wbr/> This may
25158 be different than the transform used for this frame,<wbr/> since
25159 statistics processing on data from a new frame typically
25160 completes after the transform has already been applied to
25161 that frame.<wbr/></p>
25162 <p>These estimates must be provided for all frames,<wbr/> even if
25163 capture settings and color transforms are set by the application.<wbr/></p>
25164 <p>This value should always be calculated by the auto-white balance (AWB) block,<wbr/>
25165 regardless of the android.<wbr/>control.<wbr/>* current values.<wbr/></p>
25170 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25171 <!-- end of entry -->
25174 <tr class="entry" id="dynamic_android.statistics.sceneFlicker">
25175 <td class="entry_name
25177 android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker
25179 <td class="entry_type">
25180 <span class="entry_type_name entry_type_name_enum">byte</span>
25182 <span class="entry_type_visibility"> [public]</span>
25185 <span class="entry_type_hwlevel">[full] </span>
25189 <ul class="entry_type_enum">
25191 <span class="entry_type_enum_name">NONE</span>
25192 <span class="entry_type_enum_notes"><p>The camera device does not detect any flickering illumination
25193 in the current scene.<wbr/></p></span>
25196 <span class="entry_type_enum_name">50HZ</span>
25197 <span class="entry_type_enum_notes"><p>The camera device detects illumination flickering at 50Hz
25198 in the current scene.<wbr/></p></span>
25201 <span class="entry_type_enum_name">60HZ</span>
25202 <span class="entry_type_enum_notes"><p>The camera device detects illumination flickering at 60Hz
25203 in the current scene.<wbr/></p></span>
25207 </td> <!-- entry_type -->
25209 <td class="entry_description">
25210 <p>The camera device estimated scene illumination lighting
25211 frequency.<wbr/></p>
25214 <td class="entry_units">
25217 <td class="entry_range">
25220 <td class="entry_hal_version">
25224 <td class="entry_tags">
25228 <tr class="entries_header">
25229 <th class="th_details" colspan="6">Details</th>
25231 <tr class="entry_cont">
25232 <td class="entry_details" colspan="6">
25233 <p>Many light sources,<wbr/> such as most fluorescent lights,<wbr/> flicker at a rate
25234 that depends on the local utility power standards.<wbr/> This flicker must be
25235 accounted for by auto-exposure routines to avoid artifacts in captured images.<wbr/>
25236 The camera device uses this entry to tell the application what the scene
25237 illuminant frequency is.<wbr/></p>
25238 <p>When manual exposure control is enabled
25239 (<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> ==
25240 OFF</code>),<wbr/> the <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> doesn't perform
25241 antibanding,<wbr/> and the application can ensure it selects
25242 exposure times that do not cause banding issues by looking
25243 into this metadata field.<wbr/> See
25244 <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> for more details.<wbr/></p>
25245 <p>Reports NONE if there doesn't appear to be flickering illumination.<wbr/></p>
25250 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25251 <!-- end of entry -->
25254 <tr class="entry" id="dynamic_android.statistics.hotPixelMapMode">
25255 <td class="entry_name
25257 android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode
25259 <td class="entry_type">
25260 <span class="entry_type_name entry_type_name_enum">byte</span>
25262 <span class="entry_type_visibility"> [public as boolean]</span>
25268 <ul class="entry_type_enum">
25270 <span class="entry_type_enum_name">OFF</span>
25271 <span class="entry_type_enum_notes"><p>Hot pixel map production is disabled.<wbr/></p></span>
25274 <span class="entry_type_enum_name">ON</span>
25275 <span class="entry_type_enum_notes"><p>Hot pixel map production is enabled.<wbr/></p></span>
25279 </td> <!-- entry_type -->
25281 <td class="entry_description">
25282 <p>Operating mode for hot pixel map generation.<wbr/></p>
25285 <td class="entry_units">
25288 <td class="entry_range">
25289 <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>
25292 <td class="entry_hal_version">
25296 <td class="entry_tags">
25297 <ul class="entry_tags">
25298 <li><a href="#tag_V1">V1</a></li>
25299 <li><a href="#tag_RAW">RAW</a></li>
25304 <tr class="entries_header">
25305 <th class="th_details" colspan="6">Details</th>
25307 <tr class="entry_cont">
25308 <td class="entry_details" colspan="6">
25309 <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/>
25310 If set to <code>false</code>,<wbr/> no hot pixel map will be returned.<wbr/></p>
25315 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25316 <!-- end of entry -->
25319 <tr class="entry" id="dynamic_android.statistics.hotPixelMap">
25320 <td class="entry_name
25322 android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map
25324 <td class="entry_type">
25325 <span class="entry_type_name">int32</span>
25326 <span class="entry_type_container">x</span>
25328 <span class="entry_type_array">
25331 <span class="entry_type_visibility"> [public as point]</span>
25336 <div class="entry_type_notes">list of coordinates based on android.<wbr/>sensor.<wbr/>pixel<wbr/>Array<wbr/>Size</div>
25339 </td> <!-- entry_type -->
25341 <td class="entry_description">
25342 <p>List of <code>(x,<wbr/> y)</code> coordinates of hot/<wbr/>defective pixels on the sensor.<wbr/></p>
25345 <td class="entry_units">
25348 <td class="entry_range">
25349 <p>n <= number of pixels on the sensor.<wbr/>
25350 The <code>(x,<wbr/> y)</code> coordinates must be bounded by
25351 <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
25354 <td class="entry_hal_version">
25358 <td class="entry_tags">
25359 <ul class="entry_tags">
25360 <li><a href="#tag_V1">V1</a></li>
25361 <li><a href="#tag_RAW">RAW</a></li>
25366 <tr class="entries_header">
25367 <th class="th_details" colspan="6">Details</th>
25369 <tr class="entry_cont">
25370 <td class="entry_details" colspan="6">
25371 <p>A coordinate <code>(x,<wbr/> y)</code> must lie between <code>(0,<wbr/> 0)</code>,<wbr/> and
25372 <code>(width - 1,<wbr/> height - 1)</code> (inclusive),<wbr/> which are the top-left and
25373 bottom-right of the pixel array,<wbr/> respectively.<wbr/> The width and
25374 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/>
25375 This may include hot pixels that lie outside of the active array
25376 bounds given by <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
25380 <tr class="entries_header">
25381 <th class="th_details" colspan="6">HAL Implementation Details</th>
25383 <tr class="entry_cont">
25384 <td class="entry_details" colspan="6">
25385 <p>A hotpixel map contains the coordinates of pixels on the camera
25386 sensor that do report valid values (usually due to defects in
25387 the camera sensor).<wbr/> This includes pixels that are stuck at certain
25388 values,<wbr/> or have a response that does not accuractly encode the
25389 incoming light from the scene.<wbr/></p>
25390 <p>To avoid performance issues,<wbr/> there should be significantly fewer hot
25391 pixels than actual pixels on the camera sensor.<wbr/></p>
25395 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25396 <!-- end of entry -->
25399 <tr class="entry" id="dynamic_android.statistics.lensShadingMapMode">
25400 <td class="entry_name
25402 android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode
25404 <td class="entry_type">
25405 <span class="entry_type_name entry_type_name_enum">byte</span>
25407 <span class="entry_type_visibility"> [public]</span>
25410 <span class="entry_type_hwlevel">[full] </span>
25414 <ul class="entry_type_enum">
25416 <span class="entry_type_enum_name">OFF</span>
25417 <span class="entry_type_enum_notes"><p>Do not include a lens shading map in the capture result.<wbr/></p></span>
25420 <span class="entry_type_enum_name">ON</span>
25421 <span class="entry_type_enum_notes"><p>Include a lens shading map in the capture result.<wbr/></p></span>
25425 </td> <!-- entry_type -->
25427 <td class="entry_description">
25428 <p>Whether the camera device will output the lens
25429 shading map in output result metadata.<wbr/></p>
25432 <td class="entry_units">
25435 <td class="entry_range">
25436 <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>
25439 <td class="entry_hal_version">
25443 <td class="entry_tags">
25444 <ul class="entry_tags">
25445 <li><a href="#tag_RAW">RAW</a></li>
25450 <tr class="entries_header">
25451 <th class="th_details" colspan="6">Details</th>
25453 <tr class="entry_cont">
25454 <td class="entry_details" colspan="6">
25455 <p>When set to ON,<wbr/>
25456 <a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> will be provided in
25457 the output result metadata.<wbr/></p>
25458 <p>ON is always supported on devices with the RAW capability.<wbr/></p>
25463 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25464 <!-- end of entry -->
25468 <!-- end of kind -->
25471 <!-- end of section -->
25472 <tr><td colspan="7" id="section_tonemap" class="section">tonemap</td></tr>
25475 <tr><td colspan="7" class="kind">controls</td></tr>
25477 <thead class="entries_header">
25479 <th class="th_name">Property Name</th>
25480 <th class="th_type">Type</th>
25481 <th class="th_description">Description</th>
25482 <th class="th_units">Units</th>
25483 <th class="th_range">Range</th>
25484 <th class="th_hal_version">Initial HIDL HAL version</th>
25485 <th class="th_tags">Tags</th>
25500 <tr class="entry" id="controls_android.tonemap.curveBlue">
25501 <td class="entry_name
25503 android.<wbr/>tonemap.<wbr/>curve<wbr/>Blue
25505 <td class="entry_type">
25506 <span class="entry_type_name">float</span>
25507 <span class="entry_type_container">x</span>
25509 <span class="entry_type_array">
25512 <span class="entry_type_visibility"> [ndk_public]</span>
25515 <span class="entry_type_hwlevel">[full] </span>
25518 <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>
25521 </td> <!-- entry_type -->
25523 <td class="entry_description">
25524 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the blue
25525 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
25526 CONTRAST_<wbr/>CURVE.<wbr/></p>
25529 <td class="entry_units">
25532 <td class="entry_range">
25535 <td class="entry_hal_version">
25539 <td class="entry_tags">
25543 <tr class="entries_header">
25544 <th class="th_details" colspan="6">Details</th>
25546 <tr class="entry_cont">
25547 <td class="entry_details" colspan="6">
25548 <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
25553 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25554 <!-- end of entry -->
25557 <tr class="entry" id="controls_android.tonemap.curveGreen">
25558 <td class="entry_name
25560 android.<wbr/>tonemap.<wbr/>curve<wbr/>Green
25562 <td class="entry_type">
25563 <span class="entry_type_name">float</span>
25564 <span class="entry_type_container">x</span>
25566 <span class="entry_type_array">
25569 <span class="entry_type_visibility"> [ndk_public]</span>
25572 <span class="entry_type_hwlevel">[full] </span>
25575 <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>
25578 </td> <!-- entry_type -->
25580 <td class="entry_description">
25581 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the green
25582 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
25583 CONTRAST_<wbr/>CURVE.<wbr/></p>
25586 <td class="entry_units">
25589 <td class="entry_range">
25592 <td class="entry_hal_version">
25596 <td class="entry_tags">
25600 <tr class="entries_header">
25601 <th class="th_details" colspan="6">Details</th>
25603 <tr class="entry_cont">
25604 <td class="entry_details" colspan="6">
25605 <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
25610 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25611 <!-- end of entry -->
25614 <tr class="entry" id="controls_android.tonemap.curveRed">
25615 <td class="entry_name
25617 android.<wbr/>tonemap.<wbr/>curve<wbr/>Red
25619 <td class="entry_type">
25620 <span class="entry_type_name">float</span>
25621 <span class="entry_type_container">x</span>
25623 <span class="entry_type_array">
25626 <span class="entry_type_visibility"> [ndk_public]</span>
25629 <span class="entry_type_hwlevel">[full] </span>
25632 <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>
25635 </td> <!-- entry_type -->
25637 <td class="entry_description">
25638 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the red
25639 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
25640 CONTRAST_<wbr/>CURVE.<wbr/></p>
25643 <td class="entry_units">
25646 <td class="entry_range">
25647 <p>0-1 on both input and output coordinates,<wbr/> normalized
25648 as a floating-point value such that 0 == black and 1 == white.<wbr/></p>
25651 <td class="entry_hal_version">
25655 <td class="entry_tags">
25659 <tr class="entries_header">
25660 <th class="th_details" colspan="6">Details</th>
25662 <tr class="entry_cont">
25663 <td class="entry_details" colspan="6">
25664 <p>Each channel's curve is defined by an array of control points:</p>
25665 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> =
25666 [ P0in,<wbr/> P0out,<wbr/> P1in,<wbr/> P1out,<wbr/> P2in,<wbr/> P2out,<wbr/> P3in,<wbr/> P3out,<wbr/> ...,<wbr/> PNin,<wbr/> PNout ]
25667 2 <= N <= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
25668 <p>These are sorted in order of increasing <code>Pin</code>; it is
25669 required that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
25670 define a complete mapping.<wbr/> For input values between control points,<wbr/>
25671 the camera device must linearly interpolate between the control
25673 <p>Each curve can have an independent number of points,<wbr/> and the number
25674 of points can be less than max (that is,<wbr/> the request doesn't have to
25675 always provide a curve with number of points equivalent to
25676 <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
25677 <p>A few examples,<wbr/> and their corresponding graphical mappings; these
25678 only specify the red channel and the precision is limited to 4
25679 digits,<wbr/> for conciseness.<wbr/></p>
25680 <p>Linear mapping:</p>
25681 <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 ]
25683 <p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
25684 <p>Invert mapping:</p>
25685 <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 ]
25687 <p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
25688 <p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
25689 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
25690 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/>
25691 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/>
25692 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/>
25693 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 ]
25695 <p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
25696 <p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
25697 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
25698 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/>
25699 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/>
25700 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/>
25701 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 ]
25703 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
25707 <tr class="entries_header">
25708 <th class="th_details" colspan="6">HAL Implementation Details</th>
25710 <tr class="entry_cont">
25711 <td class="entry_details" colspan="6">
25712 <p>For good quality of mapping,<wbr/> at least 128 control points are
25713 preferred.<wbr/></p>
25714 <p>A typical use case of this would be a gamma-1/<wbr/>2.<wbr/>2 curve,<wbr/> with as many
25715 control points used as are available.<wbr/></p>
25719 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25720 <!-- end of entry -->
25723 <tr class="entry" id="controls_android.tonemap.curve">
25724 <td class="entry_name
25726 android.<wbr/>tonemap.<wbr/>curve
25728 <td class="entry_type">
25729 <span class="entry_type_name">float</span>
25731 <span class="entry_type_visibility"> [java_public as tonemapCurve]</span>
25733 <span class="entry_type_synthetic">[synthetic] </span>
25735 <span class="entry_type_hwlevel">[full] </span>
25740 </td> <!-- entry_type -->
25742 <td class="entry_description">
25743 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a>
25744 is CONTRAST_<wbr/>CURVE.<wbr/></p>
25747 <td class="entry_units">
25750 <td class="entry_range">
25753 <td class="entry_hal_version">
25757 <td class="entry_tags">
25761 <tr class="entries_header">
25762 <th class="th_details" colspan="6">Details</th>
25764 <tr class="entry_cont">
25765 <td class="entry_details" colspan="6">
25766 <p>The tonemapCurve consist of three curves for each of red,<wbr/> green,<wbr/> and blue
25767 channels respectively.<wbr/> The following example uses the red channel as an
25768 example.<wbr/> The same logic applies to green and blue channel.<wbr/>
25769 Each channel's curve is defined by an array of control points:</p>
25770 <pre><code>curveRed =
25771 [ 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) ]
25772 2 <= N <= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
25773 <p>These are sorted in order of increasing <code>Pin</code>; it is always
25774 guaranteed that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
25775 define a complete mapping.<wbr/> For input values between control points,<wbr/>
25776 the camera device must linearly interpolate between the control
25778 <p>Each curve can have an independent number of points,<wbr/> and the number
25779 of points can be less than max (that is,<wbr/> the request doesn't have to
25780 always provide a curve with number of points equivalent to
25781 <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
25782 <p>A few examples,<wbr/> and their corresponding graphical mappings; these
25783 only specify the red channel and the precision is limited to 4
25784 digits,<wbr/> for conciseness.<wbr/></p>
25785 <p>Linear mapping:</p>
25786 <pre><code>curveRed = [ (0,<wbr/> 0),<wbr/> (1.<wbr/>0,<wbr/> 1.<wbr/>0) ]
25788 <p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
25789 <p>Invert mapping:</p>
25790 <pre><code>curveRed = [ (0,<wbr/> 1.<wbr/>0),<wbr/> (1.<wbr/>0,<wbr/> 0) ]
25792 <p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
25793 <p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
25794 <pre><code>curveRed = [
25795 (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/>
25796 (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/>
25797 (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/>
25798 (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) ]
25800 <p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
25801 <p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
25802 <pre><code>curveRed = [
25803 (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/>
25804 (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/>
25805 (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/>
25806 (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) ]
25808 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
25812 <tr class="entries_header">
25813 <th class="th_details" colspan="6">HAL Implementation Details</th>
25815 <tr class="entry_cont">
25816 <td class="entry_details" colspan="6">
25817 <p>This entry is created by the framework from the curveRed,<wbr/> curveGreen and
25818 curveBlue entries.<wbr/></p>
25822 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25823 <!-- end of entry -->
25826 <tr class="entry" id="controls_android.tonemap.mode">
25827 <td class="entry_name
25829 android.<wbr/>tonemap.<wbr/>mode
25831 <td class="entry_type">
25832 <span class="entry_type_name entry_type_name_enum">byte</span>
25834 <span class="entry_type_visibility"> [public]</span>
25837 <span class="entry_type_hwlevel">[full] </span>
25841 <ul class="entry_type_enum">
25843 <span class="entry_type_enum_name">CONTRAST_CURVE</span>
25844 <span class="entry_type_enum_notes"><p>Use the tone mapping curve specified in
25845 the <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>* entries.<wbr/></p>
25846 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
25847 for applying the tonemapping curve specified by
25848 <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p>
25849 <p>Must not slow down frame rate relative to raw
25850 sensor output.<wbr/></p></span>
25853 <span class="entry_type_enum_name">FAST</span>
25854 <span class="entry_type_enum_notes"><p>Advanced gamma mapping and color enhancement may be applied,<wbr/> without
25855 reducing frame rate compared to raw sensor output.<wbr/></p></span>
25858 <span class="entry_type_enum_name">HIGH_QUALITY</span>
25859 <span class="entry_type_enum_notes"><p>High-quality gamma mapping and color enhancement will be applied,<wbr/> at
25860 the cost of possibly reduced frame rate compared to raw sensor output.<wbr/></p></span>
25863 <span class="entry_type_enum_name">GAMMA_VALUE</span>
25864 <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
25865 tonemapping.<wbr/></p>
25866 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
25867 for applying the tonemapping curve specified by <a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a>.<wbr/></p>
25868 <p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
25871 <span class="entry_type_enum_name">PRESET_CURVE</span>
25872 <span class="entry_type_enum_notes"><p>Use the preset tonemapping curve specified in
25873 <a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a> to peform tonemapping.<wbr/></p>
25874 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
25875 for applying the tonemapping curve specified by
25876 <a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a>.<wbr/></p>
25877 <p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
25881 </td> <!-- entry_type -->
25883 <td class="entry_description">
25884 <p>High-level global contrast/<wbr/>gamma/<wbr/>tonemapping control.<wbr/></p>
25887 <td class="entry_units">
25890 <td class="entry_range">
25891 <p><a href="#static_android.tonemap.availableToneMapModes">android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes</a></p>
25894 <td class="entry_hal_version">
25898 <td class="entry_tags">
25902 <tr class="entries_header">
25903 <th class="th_details" colspan="6">Details</th>
25905 <tr class="entry_cont">
25906 <td class="entry_details" colspan="6">
25907 <p>When switching to an application-defined contrast curve by setting
25908 <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> to CONTRAST_<wbr/>CURVE,<wbr/> the curve is defined
25909 per-channel with a set of <code>(in,<wbr/> out)</code> points that specify the
25910 mapping from input high-bit-depth pixel value to the output
25911 low-bit-depth value.<wbr/> Since the actual pixel ranges of both input
25912 and output may change depending on the camera pipeline,<wbr/> the values
25913 are specified by normalized floating-point numbers.<wbr/></p>
25914 <p>More-complex color mapping operations such as 3D color look-up
25915 tables,<wbr/> selective chroma enhancement,<wbr/> or other non-linear color
25916 transforms will be disabled when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
25917 CONTRAST_<wbr/>CURVE.<wbr/></p>
25918 <p>When using either FAST or HIGH_<wbr/>QUALITY,<wbr/> the camera device will
25919 emit its own tonemap curve in <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/>
25920 These values are always available,<wbr/> and as close as possible to the
25921 actually used nonlinear/<wbr/>nonglobal transforms.<wbr/></p>
25922 <p>If a request is sent with CONTRAST_<wbr/>CURVE with the camera device's
25923 provided curve in FAST or HIGH_<wbr/>QUALITY,<wbr/> the image's tonemap will be
25924 roughly the same.<wbr/></p>
25929 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25930 <!-- end of entry -->
25933 <tr class="entry" id="controls_android.tonemap.gamma">
25934 <td class="entry_name
25936 android.<wbr/>tonemap.<wbr/>gamma
25938 <td class="entry_type">
25939 <span class="entry_type_name">float</span>
25941 <span class="entry_type_visibility"> [public]</span>
25948 </td> <!-- entry_type -->
25950 <td class="entry_description">
25951 <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
25952 GAMMA_<wbr/>VALUE</p>
25955 <td class="entry_units">
25958 <td class="entry_range">
25961 <td class="entry_hal_version">
25965 <td class="entry_tags">
25969 <tr class="entries_header">
25970 <th class="th_details" colspan="6">Details</th>
25972 <tr class="entry_cont">
25973 <td class="entry_details" colspan="6">
25974 <p>The tonemap curve will be defined the following formula:
25975 * OUT = pow(IN,<wbr/> 1.<wbr/>0 /<wbr/> gamma)
25976 where IN and OUT is the input pixel value scaled to range [0.<wbr/>0,<wbr/> 1.<wbr/>0],<wbr/>
25977 pow is the power function and gamma is the gamma value specified by this
25979 <p>The same curve will be applied to all color channels.<wbr/> The camera device
25980 may clip the input gamma value to its supported range.<wbr/> The actual applied
25981 value will be returned in capture result.<wbr/></p>
25982 <p>The valid range of gamma value varies on different devices,<wbr/> but values
25983 within [1.<wbr/>0,<wbr/> 5.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
25988 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25989 <!-- end of entry -->
25992 <tr class="entry" id="controls_android.tonemap.presetCurve">
25993 <td class="entry_name
25995 android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve
25997 <td class="entry_type">
25998 <span class="entry_type_name entry_type_name_enum">byte</span>
26000 <span class="entry_type_visibility"> [public]</span>
26006 <ul class="entry_type_enum">
26008 <span class="entry_type_enum_name">SRGB</span>
26009 <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by sRGB</p></span>
26012 <span class="entry_type_enum_name">REC709</span>
26013 <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by ITU-R BT.<wbr/>709</p></span>
26017 </td> <!-- entry_type -->
26019 <td class="entry_description">
26020 <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
26021 PRESET_<wbr/>CURVE</p>
26024 <td class="entry_units">
26027 <td class="entry_range">
26030 <td class="entry_hal_version">
26034 <td class="entry_tags">
26038 <tr class="entries_header">
26039 <th class="th_details" colspan="6">Details</th>
26041 <tr class="entry_cont">
26042 <td class="entry_details" colspan="6">
26043 <p>The tonemap curve will be defined by specified standard.<wbr/></p>
26044 <p>sRGB (approximated by 16 control points):</p>
26045 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
26046 <p>Rec.<wbr/> 709 (approximated by 16 control points):</p>
26047 <p><img alt="Rec. 709 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/rec709_tonemap.png"/></p>
26048 <p>Note that above figures show a 16 control points approximation of preset
26049 curves.<wbr/> Camera devices may apply a different approximation to the curve.<wbr/></p>
26054 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26055 <!-- end of entry -->
26059 <!-- end of kind -->
26061 <tr><td colspan="7" class="kind">static</td></tr>
26063 <thead class="entries_header">
26065 <th class="th_name">Property Name</th>
26066 <th class="th_type">Type</th>
26067 <th class="th_description">Description</th>
26068 <th class="th_units">Units</th>
26069 <th class="th_range">Range</th>
26070 <th class="th_hal_version">Initial HIDL HAL version</th>
26071 <th class="th_tags">Tags</th>
26086 <tr class="entry" id="static_android.tonemap.maxCurvePoints">
26087 <td class="entry_name
26089 android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points
26091 <td class="entry_type">
26092 <span class="entry_type_name">int32</span>
26094 <span class="entry_type_visibility"> [public]</span>
26097 <span class="entry_type_hwlevel">[full] </span>
26102 </td> <!-- entry_type -->
26104 <td class="entry_description">
26105 <p>Maximum number of supported points in the
26106 tonemap curve that can be used for <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p>
26109 <td class="entry_units">
26112 <td class="entry_range">
26115 <td class="entry_hal_version">
26119 <td class="entry_tags">
26123 <tr class="entries_header">
26124 <th class="th_details" colspan="6">Details</th>
26126 <tr class="entry_cont">
26127 <td class="entry_details" colspan="6">
26128 <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
26129 less than this maximum,<wbr/> the camera device will resample the curve to its internal
26130 representation,<wbr/> using linear interpolation.<wbr/></p>
26131 <p>The output curves in the result metadata may have a different number
26132 of points than the input curves,<wbr/> and will represent the actual
26133 hardware curves used as closely as possible when linearly interpolated.<wbr/></p>
26137 <tr class="entries_header">
26138 <th class="th_details" colspan="6">HAL Implementation Details</th>
26140 <tr class="entry_cont">
26141 <td class="entry_details" colspan="6">
26142 <p>This value must be at least 64.<wbr/> This should be at least 128.<wbr/></p>
26146 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26147 <!-- end of entry -->
26150 <tr class="entry" id="static_android.tonemap.availableToneMapModes">
26151 <td class="entry_name
26153 android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes
26155 <td class="entry_type">
26156 <span class="entry_type_name">byte</span>
26157 <span class="entry_type_container">x</span>
26159 <span class="entry_type_array">
26162 <span class="entry_type_visibility"> [public as enumList]</span>
26165 <span class="entry_type_hwlevel">[full] </span>
26168 <div class="entry_type_notes">list of enums</div>
26171 </td> <!-- entry_type -->
26173 <td class="entry_description">
26174 <p>List of tonemapping modes for <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> that are supported by this camera
26178 <td class="entry_units">
26181 <td class="entry_range">
26182 <p>Any value listed in <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a></p>
26185 <td class="entry_hal_version">
26189 <td class="entry_tags">
26193 <tr class="entries_header">
26194 <th class="th_details" colspan="6">Details</th>
26196 <tr class="entry_cont">
26197 <td class="entry_details" colspan="6">
26198 <p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always contain
26199 at least one of below mode combinations:</p>
26201 <li>CONTRAST_<wbr/>CURVE,<wbr/> FAST and HIGH_<wbr/>QUALITY</li>
26202 <li>GAMMA_<wbr/>VALUE,<wbr/> PRESET_<wbr/>CURVE,<wbr/> FAST and HIGH_<wbr/>QUALITY</li>
26204 <p>This includes all FULL level devices.<wbr/></p>
26208 <tr class="entries_header">
26209 <th class="th_details" colspan="6">HAL Implementation Details</th>
26211 <tr class="entry_cont">
26212 <td class="entry_details" colspan="6">
26213 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if automatic tonemap control is available
26214 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
26215 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
26216 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
26220 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26221 <!-- end of entry -->
26225 <!-- end of kind -->
26227 <tr><td colspan="7" class="kind">dynamic</td></tr>
26229 <thead class="entries_header">
26231 <th class="th_name">Property Name</th>
26232 <th class="th_type">Type</th>
26233 <th class="th_description">Description</th>
26234 <th class="th_units">Units</th>
26235 <th class="th_range">Range</th>
26236 <th class="th_hal_version">Initial HIDL HAL version</th>
26237 <th class="th_tags">Tags</th>
26252 <tr class="entry" id="dynamic_android.tonemap.curveBlue">
26253 <td class="entry_name
26255 android.<wbr/>tonemap.<wbr/>curve<wbr/>Blue
26257 <td class="entry_type">
26258 <span class="entry_type_name">float</span>
26259 <span class="entry_type_container">x</span>
26261 <span class="entry_type_array">
26264 <span class="entry_type_visibility"> [ndk_public]</span>
26267 <span class="entry_type_hwlevel">[full] </span>
26270 <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>
26273 </td> <!-- entry_type -->
26275 <td class="entry_description">
26276 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the blue
26277 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
26278 CONTRAST_<wbr/>CURVE.<wbr/></p>
26281 <td class="entry_units">
26284 <td class="entry_range">
26287 <td class="entry_hal_version">
26291 <td class="entry_tags">
26295 <tr class="entries_header">
26296 <th class="th_details" colspan="6">Details</th>
26298 <tr class="entry_cont">
26299 <td class="entry_details" colspan="6">
26300 <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
26305 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26306 <!-- end of entry -->
26309 <tr class="entry" id="dynamic_android.tonemap.curveGreen">
26310 <td class="entry_name
26312 android.<wbr/>tonemap.<wbr/>curve<wbr/>Green
26314 <td class="entry_type">
26315 <span class="entry_type_name">float</span>
26316 <span class="entry_type_container">x</span>
26318 <span class="entry_type_array">
26321 <span class="entry_type_visibility"> [ndk_public]</span>
26324 <span class="entry_type_hwlevel">[full] </span>
26327 <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>
26330 </td> <!-- entry_type -->
26332 <td class="entry_description">
26333 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the green
26334 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
26335 CONTRAST_<wbr/>CURVE.<wbr/></p>
26338 <td class="entry_units">
26341 <td class="entry_range">
26344 <td class="entry_hal_version">
26348 <td class="entry_tags">
26352 <tr class="entries_header">
26353 <th class="th_details" colspan="6">Details</th>
26355 <tr class="entry_cont">
26356 <td class="entry_details" colspan="6">
26357 <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
26362 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26363 <!-- end of entry -->
26366 <tr class="entry" id="dynamic_android.tonemap.curveRed">
26367 <td class="entry_name
26369 android.<wbr/>tonemap.<wbr/>curve<wbr/>Red
26371 <td class="entry_type">
26372 <span class="entry_type_name">float</span>
26373 <span class="entry_type_container">x</span>
26375 <span class="entry_type_array">
26378 <span class="entry_type_visibility"> [ndk_public]</span>
26381 <span class="entry_type_hwlevel">[full] </span>
26384 <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>
26387 </td> <!-- entry_type -->
26389 <td class="entry_description">
26390 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the red
26391 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
26392 CONTRAST_<wbr/>CURVE.<wbr/></p>
26395 <td class="entry_units">
26398 <td class="entry_range">
26399 <p>0-1 on both input and output coordinates,<wbr/> normalized
26400 as a floating-point value such that 0 == black and 1 == white.<wbr/></p>
26403 <td class="entry_hal_version">
26407 <td class="entry_tags">
26411 <tr class="entries_header">
26412 <th class="th_details" colspan="6">Details</th>
26414 <tr class="entry_cont">
26415 <td class="entry_details" colspan="6">
26416 <p>Each channel's curve is defined by an array of control points:</p>
26417 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> =
26418 [ P0in,<wbr/> P0out,<wbr/> P1in,<wbr/> P1out,<wbr/> P2in,<wbr/> P2out,<wbr/> P3in,<wbr/> P3out,<wbr/> ...,<wbr/> PNin,<wbr/> PNout ]
26419 2 <= N <= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
26420 <p>These are sorted in order of increasing <code>Pin</code>; it is
26421 required that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
26422 define a complete mapping.<wbr/> For input values between control points,<wbr/>
26423 the camera device must linearly interpolate between the control
26425 <p>Each curve can have an independent number of points,<wbr/> and the number
26426 of points can be less than max (that is,<wbr/> the request doesn't have to
26427 always provide a curve with number of points equivalent to
26428 <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
26429 <p>A few examples,<wbr/> and their corresponding graphical mappings; these
26430 only specify the red channel and the precision is limited to 4
26431 digits,<wbr/> for conciseness.<wbr/></p>
26432 <p>Linear mapping:</p>
26433 <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 ]
26435 <p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
26436 <p>Invert mapping:</p>
26437 <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 ]
26439 <p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
26440 <p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
26441 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
26442 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/>
26443 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/>
26444 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/>
26445 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 ]
26447 <p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
26448 <p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
26449 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
26450 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/>
26451 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/>
26452 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/>
26453 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 ]
26455 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
26459 <tr class="entries_header">
26460 <th class="th_details" colspan="6">HAL Implementation Details</th>
26462 <tr class="entry_cont">
26463 <td class="entry_details" colspan="6">
26464 <p>For good quality of mapping,<wbr/> at least 128 control points are
26465 preferred.<wbr/></p>
26466 <p>A typical use case of this would be a gamma-1/<wbr/>2.<wbr/>2 curve,<wbr/> with as many
26467 control points used as are available.<wbr/></p>
26471 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26472 <!-- end of entry -->
26475 <tr class="entry" id="dynamic_android.tonemap.curve">
26476 <td class="entry_name
26478 android.<wbr/>tonemap.<wbr/>curve
26480 <td class="entry_type">
26481 <span class="entry_type_name">float</span>
26483 <span class="entry_type_visibility"> [java_public as tonemapCurve]</span>
26485 <span class="entry_type_synthetic">[synthetic] </span>
26487 <span class="entry_type_hwlevel">[full] </span>
26492 </td> <!-- entry_type -->
26494 <td class="entry_description">
26495 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a>
26496 is CONTRAST_<wbr/>CURVE.<wbr/></p>
26499 <td class="entry_units">
26502 <td class="entry_range">
26505 <td class="entry_hal_version">
26509 <td class="entry_tags">
26513 <tr class="entries_header">
26514 <th class="th_details" colspan="6">Details</th>
26516 <tr class="entry_cont">
26517 <td class="entry_details" colspan="6">
26518 <p>The tonemapCurve consist of three curves for each of red,<wbr/> green,<wbr/> and blue
26519 channels respectively.<wbr/> The following example uses the red channel as an
26520 example.<wbr/> The same logic applies to green and blue channel.<wbr/>
26521 Each channel's curve is defined by an array of control points:</p>
26522 <pre><code>curveRed =
26523 [ 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) ]
26524 2 <= N <= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
26525 <p>These are sorted in order of increasing <code>Pin</code>; it is always
26526 guaranteed that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
26527 define a complete mapping.<wbr/> For input values between control points,<wbr/>
26528 the camera device must linearly interpolate between the control
26530 <p>Each curve can have an independent number of points,<wbr/> and the number
26531 of points can be less than max (that is,<wbr/> the request doesn't have to
26532 always provide a curve with number of points equivalent to
26533 <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
26534 <p>A few examples,<wbr/> and their corresponding graphical mappings; these
26535 only specify the red channel and the precision is limited to 4
26536 digits,<wbr/> for conciseness.<wbr/></p>
26537 <p>Linear mapping:</p>
26538 <pre><code>curveRed = [ (0,<wbr/> 0),<wbr/> (1.<wbr/>0,<wbr/> 1.<wbr/>0) ]
26540 <p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
26541 <p>Invert mapping:</p>
26542 <pre><code>curveRed = [ (0,<wbr/> 1.<wbr/>0),<wbr/> (1.<wbr/>0,<wbr/> 0) ]
26544 <p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
26545 <p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
26546 <pre><code>curveRed = [
26547 (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/>
26548 (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/>
26549 (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/>
26550 (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) ]
26552 <p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
26553 <p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
26554 <pre><code>curveRed = [
26555 (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/>
26556 (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/>
26557 (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/>
26558 (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) ]
26560 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
26564 <tr class="entries_header">
26565 <th class="th_details" colspan="6">HAL Implementation Details</th>
26567 <tr class="entry_cont">
26568 <td class="entry_details" colspan="6">
26569 <p>This entry is created by the framework from the curveRed,<wbr/> curveGreen and
26570 curveBlue entries.<wbr/></p>
26574 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26575 <!-- end of entry -->
26578 <tr class="entry" id="dynamic_android.tonemap.mode">
26579 <td class="entry_name
26581 android.<wbr/>tonemap.<wbr/>mode
26583 <td class="entry_type">
26584 <span class="entry_type_name entry_type_name_enum">byte</span>
26586 <span class="entry_type_visibility"> [public]</span>
26589 <span class="entry_type_hwlevel">[full] </span>
26593 <ul class="entry_type_enum">
26595 <span class="entry_type_enum_name">CONTRAST_CURVE</span>
26596 <span class="entry_type_enum_notes"><p>Use the tone mapping curve specified in
26597 the <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>* entries.<wbr/></p>
26598 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
26599 for applying the tonemapping curve specified by
26600 <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p>
26601 <p>Must not slow down frame rate relative to raw
26602 sensor output.<wbr/></p></span>
26605 <span class="entry_type_enum_name">FAST</span>
26606 <span class="entry_type_enum_notes"><p>Advanced gamma mapping and color enhancement may be applied,<wbr/> without
26607 reducing frame rate compared to raw sensor output.<wbr/></p></span>
26610 <span class="entry_type_enum_name">HIGH_QUALITY</span>
26611 <span class="entry_type_enum_notes"><p>High-quality gamma mapping and color enhancement will be applied,<wbr/> at
26612 the cost of possibly reduced frame rate compared to raw sensor output.<wbr/></p></span>
26615 <span class="entry_type_enum_name">GAMMA_VALUE</span>
26616 <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
26617 tonemapping.<wbr/></p>
26618 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
26619 for applying the tonemapping curve specified by <a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a>.<wbr/></p>
26620 <p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
26623 <span class="entry_type_enum_name">PRESET_CURVE</span>
26624 <span class="entry_type_enum_notes"><p>Use the preset tonemapping curve specified in
26625 <a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a> to peform tonemapping.<wbr/></p>
26626 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
26627 for applying the tonemapping curve specified by
26628 <a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a>.<wbr/></p>
26629 <p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
26633 </td> <!-- entry_type -->
26635 <td class="entry_description">
26636 <p>High-level global contrast/<wbr/>gamma/<wbr/>tonemapping control.<wbr/></p>
26639 <td class="entry_units">
26642 <td class="entry_range">
26643 <p><a href="#static_android.tonemap.availableToneMapModes">android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes</a></p>
26646 <td class="entry_hal_version">
26650 <td class="entry_tags">
26654 <tr class="entries_header">
26655 <th class="th_details" colspan="6">Details</th>
26657 <tr class="entry_cont">
26658 <td class="entry_details" colspan="6">
26659 <p>When switching to an application-defined contrast curve by setting
26660 <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> to CONTRAST_<wbr/>CURVE,<wbr/> the curve is defined
26661 per-channel with a set of <code>(in,<wbr/> out)</code> points that specify the
26662 mapping from input high-bit-depth pixel value to the output
26663 low-bit-depth value.<wbr/> Since the actual pixel ranges of both input
26664 and output may change depending on the camera pipeline,<wbr/> the values
26665 are specified by normalized floating-point numbers.<wbr/></p>
26666 <p>More-complex color mapping operations such as 3D color look-up
26667 tables,<wbr/> selective chroma enhancement,<wbr/> or other non-linear color
26668 transforms will be disabled when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
26669 CONTRAST_<wbr/>CURVE.<wbr/></p>
26670 <p>When using either FAST or HIGH_<wbr/>QUALITY,<wbr/> the camera device will
26671 emit its own tonemap curve in <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/>
26672 These values are always available,<wbr/> and as close as possible to the
26673 actually used nonlinear/<wbr/>nonglobal transforms.<wbr/></p>
26674 <p>If a request is sent with CONTRAST_<wbr/>CURVE with the camera device's
26675 provided curve in FAST or HIGH_<wbr/>QUALITY,<wbr/> the image's tonemap will be
26676 roughly the same.<wbr/></p>
26681 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26682 <!-- end of entry -->
26685 <tr class="entry" id="dynamic_android.tonemap.gamma">
26686 <td class="entry_name
26688 android.<wbr/>tonemap.<wbr/>gamma
26690 <td class="entry_type">
26691 <span class="entry_type_name">float</span>
26693 <span class="entry_type_visibility"> [public]</span>
26700 </td> <!-- entry_type -->
26702 <td class="entry_description">
26703 <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
26704 GAMMA_<wbr/>VALUE</p>
26707 <td class="entry_units">
26710 <td class="entry_range">
26713 <td class="entry_hal_version">
26717 <td class="entry_tags">
26721 <tr class="entries_header">
26722 <th class="th_details" colspan="6">Details</th>
26724 <tr class="entry_cont">
26725 <td class="entry_details" colspan="6">
26726 <p>The tonemap curve will be defined the following formula:
26727 * OUT = pow(IN,<wbr/> 1.<wbr/>0 /<wbr/> gamma)
26728 where IN and OUT is the input pixel value scaled to range [0.<wbr/>0,<wbr/> 1.<wbr/>0],<wbr/>
26729 pow is the power function and gamma is the gamma value specified by this
26731 <p>The same curve will be applied to all color channels.<wbr/> The camera device
26732 may clip the input gamma value to its supported range.<wbr/> The actual applied
26733 value will be returned in capture result.<wbr/></p>
26734 <p>The valid range of gamma value varies on different devices,<wbr/> but values
26735 within [1.<wbr/>0,<wbr/> 5.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
26740 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26741 <!-- end of entry -->
26744 <tr class="entry" id="dynamic_android.tonemap.presetCurve">
26745 <td class="entry_name
26747 android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve
26749 <td class="entry_type">
26750 <span class="entry_type_name entry_type_name_enum">byte</span>
26752 <span class="entry_type_visibility"> [public]</span>
26758 <ul class="entry_type_enum">
26760 <span class="entry_type_enum_name">SRGB</span>
26761 <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by sRGB</p></span>
26764 <span class="entry_type_enum_name">REC709</span>
26765 <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by ITU-R BT.<wbr/>709</p></span>
26769 </td> <!-- entry_type -->
26771 <td class="entry_description">
26772 <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
26773 PRESET_<wbr/>CURVE</p>
26776 <td class="entry_units">
26779 <td class="entry_range">
26782 <td class="entry_hal_version">
26786 <td class="entry_tags">
26790 <tr class="entries_header">
26791 <th class="th_details" colspan="6">Details</th>
26793 <tr class="entry_cont">
26794 <td class="entry_details" colspan="6">
26795 <p>The tonemap curve will be defined by specified standard.<wbr/></p>
26796 <p>sRGB (approximated by 16 control points):</p>
26797 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
26798 <p>Rec.<wbr/> 709 (approximated by 16 control points):</p>
26799 <p><img alt="Rec. 709 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/rec709_tonemap.png"/></p>
26800 <p>Note that above figures show a 16 control points approximation of preset
26801 curves.<wbr/> Camera devices may apply a different approximation to the curve.<wbr/></p>
26806 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26807 <!-- end of entry -->
26811 <!-- end of kind -->
26814 <!-- end of section -->
26815 <tr><td colspan="7" id="section_led" class="section">led</td></tr>
26818 <tr><td colspan="7" class="kind">controls</td></tr>
26820 <thead class="entries_header">
26822 <th class="th_name">Property Name</th>
26823 <th class="th_type">Type</th>
26824 <th class="th_description">Description</th>
26825 <th class="th_units">Units</th>
26826 <th class="th_range">Range</th>
26827 <th class="th_hal_version">Initial HIDL HAL version</th>
26828 <th class="th_tags">Tags</th>
26843 <tr class="entry" id="controls_android.led.transmit">
26844 <td class="entry_name
26846 android.<wbr/>led.<wbr/>transmit
26848 <td class="entry_type">
26849 <span class="entry_type_name entry_type_name_enum">byte</span>
26851 <span class="entry_type_visibility"> [hidden as boolean]</span>
26857 <ul class="entry_type_enum">
26859 <span class="entry_type_enum_name">OFF</span>
26862 <span class="entry_type_enum_name">ON</span>
26866 </td> <!-- entry_type -->
26868 <td class="entry_description">
26869 <p>This LED is nominally used to indicate to the user
26870 that the camera is powered on and may be streaming images back to the
26871 Application Processor.<wbr/> In certain rare circumstances,<wbr/> the OS may
26872 disable this when video is processed locally and not transmitted to
26873 any untrusted applications.<wbr/></p>
26874 <p>In particular,<wbr/> the LED <em>must</em> always be on when the data could be
26875 transmitted off the device.<wbr/> The LED <em>should</em> always be on whenever
26876 data is stored locally on the device.<wbr/></p>
26877 <p>The LED <em>may</em> be off if a trusted application is using the data that
26878 doesn't violate the above rules.<wbr/></p>
26881 <td class="entry_units">
26884 <td class="entry_range">
26887 <td class="entry_hal_version">
26891 <td class="entry_tags">
26897 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26898 <!-- end of entry -->
26902 <!-- end of kind -->
26904 <tr><td colspan="7" class="kind">dynamic</td></tr>
26906 <thead class="entries_header">
26908 <th class="th_name">Property Name</th>
26909 <th class="th_type">Type</th>
26910 <th class="th_description">Description</th>
26911 <th class="th_units">Units</th>
26912 <th class="th_range">Range</th>
26913 <th class="th_hal_version">Initial HIDL HAL version</th>
26914 <th class="th_tags">Tags</th>
26929 <tr class="entry" id="dynamic_android.led.transmit">
26930 <td class="entry_name
26932 android.<wbr/>led.<wbr/>transmit
26934 <td class="entry_type">
26935 <span class="entry_type_name entry_type_name_enum">byte</span>
26937 <span class="entry_type_visibility"> [hidden as boolean]</span>
26943 <ul class="entry_type_enum">
26945 <span class="entry_type_enum_name">OFF</span>
26948 <span class="entry_type_enum_name">ON</span>
26952 </td> <!-- entry_type -->
26954 <td class="entry_description">
26955 <p>This LED is nominally used to indicate to the user
26956 that the camera is powered on and may be streaming images back to the
26957 Application Processor.<wbr/> In certain rare circumstances,<wbr/> the OS may
26958 disable this when video is processed locally and not transmitted to
26959 any untrusted applications.<wbr/></p>
26960 <p>In particular,<wbr/> the LED <em>must</em> always be on when the data could be
26961 transmitted off the device.<wbr/> The LED <em>should</em> always be on whenever
26962 data is stored locally on the device.<wbr/></p>
26963 <p>The LED <em>may</em> be off if a trusted application is using the data that
26964 doesn't violate the above rules.<wbr/></p>
26967 <td class="entry_units">
26970 <td class="entry_range">
26973 <td class="entry_hal_version">
26977 <td class="entry_tags">
26983 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26984 <!-- end of entry -->
26988 <!-- end of kind -->
26990 <tr><td colspan="7" class="kind">static</td></tr>
26992 <thead class="entries_header">
26994 <th class="th_name">Property Name</th>
26995 <th class="th_type">Type</th>
26996 <th class="th_description">Description</th>
26997 <th class="th_units">Units</th>
26998 <th class="th_range">Range</th>
26999 <th class="th_hal_version">Initial HIDL HAL version</th>
27000 <th class="th_tags">Tags</th>
27015 <tr class="entry" id="static_android.led.availableLeds">
27016 <td class="entry_name
27018 android.<wbr/>led.<wbr/>available<wbr/>Leds
27020 <td class="entry_type">
27021 <span class="entry_type_name entry_type_name_enum">byte</span>
27022 <span class="entry_type_container">x</span>
27024 <span class="entry_type_array">
27027 <span class="entry_type_visibility"> [hidden]</span>
27033 <ul class="entry_type_enum">
27035 <span class="entry_type_enum_name">TRANSMIT</span>
27036 <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>
27040 </td> <!-- entry_type -->
27042 <td class="entry_description">
27043 <p>A list of camera LEDs that are available on this system.<wbr/></p>
27046 <td class="entry_units">
27049 <td class="entry_range">
27052 <td class="entry_hal_version">
27056 <td class="entry_tags">
27062 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27063 <!-- end of entry -->
27067 <!-- end of kind -->
27070 <!-- end of section -->
27071 <tr><td colspan="7" id="section_info" class="section">info</td></tr>
27074 <tr><td colspan="7" class="kind">static</td></tr>
27076 <thead class="entries_header">
27078 <th class="th_name">Property Name</th>
27079 <th class="th_type">Type</th>
27080 <th class="th_description">Description</th>
27081 <th class="th_units">Units</th>
27082 <th class="th_range">Range</th>
27083 <th class="th_hal_version">Initial HIDL HAL version</th>
27084 <th class="th_tags">Tags</th>
27099 <tr class="entry" id="static_android.info.supportedHardwareLevel">
27100 <td class="entry_name
27102 android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level
27104 <td class="entry_type">
27105 <span class="entry_type_name entry_type_name_enum">byte</span>
27107 <span class="entry_type_visibility"> [public]</span>
27110 <span class="entry_type_hwlevel">[legacy] </span>
27114 <ul class="entry_type_enum">
27116 <span class="entry_type_enum_name">LIMITED</span>
27117 <span class="entry_type_enum_notes"><p>This camera device does not have enough capabilities to qualify as a <code>FULL</code> device or
27119 <p>Only the stream configurations listed in the <code>LEGACY</code> and <code>LIMITED</code> tables in the
27120 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">createCaptureSession</a> documentation are guaranteed to be supported.<wbr/></p>
27121 <p>All <code>LIMITED</code> devices support the <code>BACKWARDS_<wbr/>COMPATIBLE</code> capability,<wbr/> indicating basic
27122 support for color image capture.<wbr/> The only exception is that the device may
27123 alternatively support only the <code>DEPTH_<wbr/>OUTPUT</code> capability,<wbr/> if it can only output depth
27124 measurements and not color images.<wbr/></p>
27125 <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>
27126 to lock exposure metering (and calculate flash power,<wbr/> for cameras with flash) before
27127 capturing a high-quality still image.<wbr/></p>
27128 <p>A <code>LIMITED</code> device that only lists the <code>BACKWARDS_<wbr/>COMPATIBLE</code> capability is only
27129 required to support full-automatic operation and post-processing (<code>OFF</code> is not
27130 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
27131 <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>)</p>
27132 <p>Additional capabilities may optionally be supported by a <code>LIMITED</code>-level device,<wbr/> and
27133 can be checked for in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p></span>
27136 <span class="entry_type_enum_name">FULL</span>
27137 <span class="entry_type_enum_notes"><p>This camera device is capable of supporting advanced imaging applications.<wbr/></p>
27138 <p>The stream configurations listed in the <code>FULL</code>,<wbr/> <code>LEGACY</code> and <code>LIMITED</code> tables in the
27139 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">createCaptureSession</a> documentation are guaranteed to be supported.<wbr/></p>
27140 <p>A <code>FULL</code> device will support below capabilities:</p>
27142 <li><code>BURST_<wbr/>CAPTURE</code> capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
27143 <code>BURST_<wbr/>CAPTURE</code>)</li>
27144 <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>
27145 <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>
27146 <li>Manual post-processing control (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
27147 <code>MANUAL_<wbr/>POST_<wbr/>PROCESSING</code>)</li>
27148 <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>
27149 <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>
27152 Pre-API level 23,<wbr/> FULL devices also supported arbitrary cropping region
27153 (<a href="#static_android.scaler.croppingType">android.<wbr/>scaler.<wbr/>cropping<wbr/>Type</a> <code>== FREEFORM</code>); this requirement was relaxed in API level
27154 23,<wbr/> and <code>FULL</code> devices may only support <code>CENTERED</code> cropping.<wbr/></p></span>
27157 <span class="entry_type_enum_name">LEGACY</span>
27158 <span class="entry_type_enum_notes"><p>This camera device is running in backward compatibility mode.<wbr/></p>
27159 <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>
27160 <p>A <code>LEGACY</code> device does not support per-frame control,<wbr/> manual sensor control,<wbr/> manual
27161 post-processing,<wbr/> arbitrary cropping regions,<wbr/> and has relaxed performance constraints.<wbr/>
27162 No additional capabilities beyond <code>BACKWARD_<wbr/>COMPATIBLE</code> will ever be listed by a
27163 <code>LEGACY</code> device in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
27164 <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>
27165 devices.<wbr/> Instead,<wbr/> every request that includes a JPEG-format output target is treated
27166 as triggering a still capture,<wbr/> internally executing a precapture trigger.<wbr/> This may
27167 fire the flash for flash power metering during precapture,<wbr/> and then fire the flash
27168 for the final capture,<wbr/> if a flash is available on the device and the AE mode is set to
27169 enable the flash.<wbr/></p></span>
27172 <span class="entry_type_enum_name">3</span>
27173 <span class="entry_type_enum_notes"><p>This camera device is capable of YUV reprocessing and RAW data capture,<wbr/> in addition to
27174 FULL-level capabilities.<wbr/></p>
27175 <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
27176 <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>
27177 <p>The following additional capabilities are guaranteed to be supported:</p>
27179 <li><code>YUV_<wbr/>REPROCESSING</code> capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
27180 <code>YUV_<wbr/>REPROCESSING</code>)</li>
27181 <li><code>RAW</code> capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
27182 <code>RAW</code>)</li>
27187 </td> <!-- entry_type -->
27189 <td class="entry_description">
27190 <p>Generally classifies the overall set of the camera device functionality.<wbr/></p>
27193 <td class="entry_units">
27196 <td class="entry_range">
27199 <td class="entry_hal_version">
27203 <td class="entry_tags">
27207 <tr class="entries_header">
27208 <th class="th_details" colspan="6">Details</th>
27210 <tr class="entry_cont">
27211 <td class="entry_details" colspan="6">
27212 <p>The supported hardware level is a high-level description of the camera device's
27213 capabilities,<wbr/> summarizing several capabilities into one field.<wbr/> Each level adds additional
27214 features to the previous one,<wbr/> and is always a strict superset of the previous level.<wbr/>
27215 The ordering is <code>LEGACY < LIMITED < FULL < LEVEL_<wbr/>3</code>.<wbr/></p>
27216 <p>Starting from <code>LEVEL_<wbr/>3</code>,<wbr/> the level enumerations are guaranteed to be in increasing
27217 numerical value as well.<wbr/> To check if a given device is at least at a given hardware level,<wbr/>
27218 the following code snippet can be used:</p>
27219 <pre><code>//<wbr/> Returns true if the device supports the required hardware level,<wbr/> or better.<wbr/>
27220 boolean isHardwareLevelSupported(CameraCharacteristics c,<wbr/> int requiredLevel) {
27221 int deviceLevel = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>INFO_<wbr/>SUPPORTED_<wbr/>HARDWARE_<wbr/>LEVEL);
27222 if (deviceLevel == Camera<wbr/>Characteristics.<wbr/>INFO_<wbr/>SUPPORTED_<wbr/>HARDWARE_<wbr/>LEVEL_<wbr/>LEGACY) {
27223 return requiredLevel == deviceLevel;
27225 //<wbr/> deviceLevel is not LEGACY,<wbr/> can use numerical sort
27226 return requiredLevel <= deviceLevel;
27229 <p>At a high level,<wbr/> the levels are:</p>
27231 <li><code>LEGACY</code> devices operate in a backwards-compatibility mode for older
27232 Android devices,<wbr/> and have very limited capabilities.<wbr/></li>
27233 <li><code>LIMITED</code> devices represent the
27234 baseline feature set,<wbr/> and may also include additional capabilities that are
27235 subsets of <code>FULL</code>.<wbr/></li>
27236 <li><code>FULL</code> devices additionally support per-frame manual control of sensor,<wbr/> flash,<wbr/> lens and
27237 post-processing settings,<wbr/> and image capture at a high rate.<wbr/></li>
27238 <li><code>LEVEL_<wbr/>3</code> devices additionally support YUV reprocessing and RAW image capture,<wbr/> along
27239 with additional output stream configurations.<wbr/></li>
27241 <p>See the individual level enums for full descriptions of the supported capabilities.<wbr/> The
27242 <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> entry describes the device's capabilities at a
27243 finer-grain level,<wbr/> if needed.<wbr/> In addition,<wbr/> many controls have their available settings or
27244 ranges defined in individual entries from <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html">CameraCharacteristics</a>.<wbr/></p>
27245 <p>Some features are not part of any particular hardware level or capability and must be
27246 queried separately.<wbr/> These include:</p>
27248 <li>Calibrated timestamps (<a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME)</li>
27249 <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>
27250 <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>
27251 <li>Optical or electrical image stabilization
27252 (<a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a>,<wbr/>
27253 <a href="#static_android.control.availableVideoStabilizationModes">android.<wbr/>control.<wbr/>available<wbr/>Video<wbr/>Stabilization<wbr/>Modes</a>)</li>
27258 <tr class="entries_header">
27259 <th class="th_details" colspan="6">HAL Implementation Details</th>
27261 <tr class="entry_cont">
27262 <td class="entry_details" colspan="6">
27263 <p>A camera HALv3 device can implement one of three possible operational modes; LIMITED,<wbr/>
27264 FULL,<wbr/> and LEVEL_<wbr/>3.<wbr/></p>
27265 <p>FULL support or better is expected from new higher-end devices.<wbr/> Limited
27266 mode has hardware requirements roughly in line with those for a camera HAL device v1
27267 implementation,<wbr/> and is expected from older or inexpensive devices.<wbr/> Each level is a strict
27268 superset of the previous level,<wbr/> and they share the same essential operational flow.<wbr/></p>
27269 <p>For full details refer to "S3.<wbr/> Operational Modes" in camera3.<wbr/>h</p>
27270 <p>Camera HAL3+ must not implement LEGACY mode.<wbr/> It is there for backwards compatibility in
27271 the <code>android.<wbr/>hardware.<wbr/>camera2</code> user-facing API only on legacy HALv1 devices,<wbr/> and is
27272 implemented by the camera framework code.<wbr/></p>
27276 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27277 <!-- end of entry -->
27281 <!-- end of kind -->
27284 <!-- end of section -->
27285 <tr><td colspan="7" id="section_blackLevel" class="section">blackLevel</td></tr>
27288 <tr><td colspan="7" class="kind">controls</td></tr>
27290 <thead class="entries_header">
27292 <th class="th_name">Property Name</th>
27293 <th class="th_type">Type</th>
27294 <th class="th_description">Description</th>
27295 <th class="th_units">Units</th>
27296 <th class="th_range">Range</th>
27297 <th class="th_hal_version">Initial HIDL HAL version</th>
27298 <th class="th_tags">Tags</th>
27313 <tr class="entry" id="controls_android.blackLevel.lock">
27314 <td class="entry_name
27316 android.<wbr/>black<wbr/>Level.<wbr/>lock
27318 <td class="entry_type">
27319 <span class="entry_type_name entry_type_name_enum">byte</span>
27321 <span class="entry_type_visibility"> [public as boolean]</span>
27324 <span class="entry_type_hwlevel">[full] </span>
27328 <ul class="entry_type_enum">
27330 <span class="entry_type_enum_name">OFF</span>
27333 <span class="entry_type_enum_name">ON</span>
27337 </td> <!-- entry_type -->
27339 <td class="entry_description">
27340 <p>Whether black-level compensation is locked
27341 to its current values,<wbr/> or is free to vary.<wbr/></p>
27344 <td class="entry_units">
27347 <td class="entry_range">
27350 <td class="entry_hal_version">
27354 <td class="entry_tags">
27355 <ul class="entry_tags">
27356 <li><a href="#tag_HAL2">HAL2</a></li>
27361 <tr class="entries_header">
27362 <th class="th_details" colspan="6">Details</th>
27364 <tr class="entry_cont">
27365 <td class="entry_details" colspan="6">
27366 <p>When set to <code>true</code> (ON),<wbr/> the values used for black-level
27367 compensation will not change until the lock is set to
27368 <code>false</code> (OFF).<wbr/></p>
27369 <p>Since changes to certain capture parameters (such as
27370 exposure time) may require resetting of black level
27371 compensation,<wbr/> the camera device must report whether setting
27372 the black level lock was successful in the output result
27373 metadata.<wbr/></p>
27374 <p>For example,<wbr/> if a sequence of requests is as follows:</p>
27376 <li>Request 1: Exposure = 10ms,<wbr/> Black level lock = OFF</li>
27377 <li>Request 2: Exposure = 10ms,<wbr/> Black level lock = ON</li>
27378 <li>Request 3: Exposure = 10ms,<wbr/> Black level lock = ON</li>
27379 <li>Request 4: Exposure = 20ms,<wbr/> Black level lock = ON</li>
27380 <li>Request 5: Exposure = 20ms,<wbr/> Black level lock = ON</li>
27381 <li>Request 6: Exposure = 20ms,<wbr/> Black level lock = ON</li>
27383 <p>And the exposure change in Request 4 requires the camera
27384 device to reset the black level offsets,<wbr/> then the output
27385 result metadata is expected to be:</p>
27387 <li>Result 1: Exposure = 10ms,<wbr/> Black level lock = OFF</li>
27388 <li>Result 2: Exposure = 10ms,<wbr/> Black level lock = ON</li>
27389 <li>Result 3: Exposure = 10ms,<wbr/> Black level lock = ON</li>
27390 <li>Result 4: Exposure = 20ms,<wbr/> Black level lock = OFF</li>
27391 <li>Result 5: Exposure = 20ms,<wbr/> Black level lock = ON</li>
27392 <li>Result 6: Exposure = 20ms,<wbr/> Black level lock = ON</li>
27394 <p>This indicates to the application that on frame 4,<wbr/> black
27395 levels were reset due to exposure value changes,<wbr/> and pixel
27396 values may not be consistent across captures.<wbr/></p>
27397 <p>The camera device will maintain the lock to the extent
27398 possible,<wbr/> only overriding the lock to OFF when changes to
27399 other request parameters require a black level recalculation
27400 or reset.<wbr/></p>
27404 <tr class="entries_header">
27405 <th class="th_details" colspan="6">HAL Implementation Details</th>
27407 <tr class="entry_cont">
27408 <td class="entry_details" colspan="6">
27409 <p>If for some reason black level locking is no longer possible
27410 (for example,<wbr/> the analog gain has changed,<wbr/> which forces
27411 black level offsets to be recalculated),<wbr/> then the HAL must
27412 override this request (and it must report 'OFF' when this
27413 does happen) until the next capture for which locking is
27414 possible again.<wbr/></p>
27418 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27419 <!-- end of entry -->
27423 <!-- end of kind -->
27425 <tr><td colspan="7" class="kind">dynamic</td></tr>
27427 <thead class="entries_header">
27429 <th class="th_name">Property Name</th>
27430 <th class="th_type">Type</th>
27431 <th class="th_description">Description</th>
27432 <th class="th_units">Units</th>
27433 <th class="th_range">Range</th>
27434 <th class="th_hal_version">Initial HIDL HAL version</th>
27435 <th class="th_tags">Tags</th>
27450 <tr class="entry" id="dynamic_android.blackLevel.lock">
27451 <td class="entry_name
27453 android.<wbr/>black<wbr/>Level.<wbr/>lock
27455 <td class="entry_type">
27456 <span class="entry_type_name entry_type_name_enum">byte</span>
27458 <span class="entry_type_visibility"> [public as boolean]</span>
27461 <span class="entry_type_hwlevel">[full] </span>
27465 <ul class="entry_type_enum">
27467 <span class="entry_type_enum_name">OFF</span>
27470 <span class="entry_type_enum_name">ON</span>
27474 </td> <!-- entry_type -->
27476 <td class="entry_description">
27477 <p>Whether black-level compensation is locked
27478 to its current values,<wbr/> or is free to vary.<wbr/></p>
27481 <td class="entry_units">
27484 <td class="entry_range">
27487 <td class="entry_hal_version">
27491 <td class="entry_tags">
27492 <ul class="entry_tags">
27493 <li><a href="#tag_HAL2">HAL2</a></li>
27498 <tr class="entries_header">
27499 <th class="th_details" colspan="6">Details</th>
27501 <tr class="entry_cont">
27502 <td class="entry_details" colspan="6">
27503 <p>Whether the black level offset was locked for this frame.<wbr/> Should be
27504 ON if <a href="#controls_android.blackLevel.lock">android.<wbr/>black<wbr/>Level.<wbr/>lock</a> was ON in the capture request,<wbr/> unless
27505 a change in other capture settings forced the camera device to
27506 perform a black level reset.<wbr/></p>
27510 <tr class="entries_header">
27511 <th class="th_details" colspan="6">HAL Implementation Details</th>
27513 <tr class="entry_cont">
27514 <td class="entry_details" colspan="6">
27515 <p>If for some reason black level locking is no longer possible
27516 (for example,<wbr/> the analog gain has changed,<wbr/> which forces
27517 black level offsets to be recalculated),<wbr/> then the HAL must
27518 override this request (and it must report 'OFF' when this
27519 does happen) until the next capture for which locking is
27520 possible again.<wbr/></p>
27524 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27525 <!-- end of entry -->
27529 <!-- end of kind -->
27532 <!-- end of section -->
27533 <tr><td colspan="7" id="section_sync" class="section">sync</td></tr>
27536 <tr><td colspan="7" class="kind">dynamic</td></tr>
27538 <thead class="entries_header">
27540 <th class="th_name">Property Name</th>
27541 <th class="th_type">Type</th>
27542 <th class="th_description">Description</th>
27543 <th class="th_units">Units</th>
27544 <th class="th_range">Range</th>
27545 <th class="th_hal_version">Initial HIDL HAL version</th>
27546 <th class="th_tags">Tags</th>
27561 <tr class="entry" id="dynamic_android.sync.frameNumber">
27562 <td class="entry_name
27564 android.<wbr/>sync.<wbr/>frame<wbr/>Number
27566 <td class="entry_type">
27567 <span class="entry_type_name entry_type_name_enum">int64</span>
27569 <span class="entry_type_visibility"> [ndk_public]</span>
27572 <span class="entry_type_hwlevel">[legacy] </span>
27576 <ul class="entry_type_enum">
27578 <span class="entry_type_enum_name">CONVERGING</span>
27579 <span class="entry_type_enum_value">-1</span>
27580 <span class="entry_type_enum_notes"><p>The current result is not yet fully synchronized to any request.<wbr/></p>
27581 <p>Synchronization is in progress,<wbr/> and reading metadata from this
27582 result may include a mix of data that have taken effect since the
27583 last synchronization time.<wbr/></p>
27584 <p>In some future result,<wbr/> within <a href="#static_android.sync.maxLatency">android.<wbr/>sync.<wbr/>max<wbr/>Latency</a> frames,<wbr/>
27585 this value will update to the actual frame number frame number
27586 the result is guaranteed to be synchronized to (as long as the
27587 request settings remain constant).<wbr/></p></span>
27590 <span class="entry_type_enum_name">UNKNOWN</span>
27591 <span class="entry_type_enum_value">-2</span>
27592 <span class="entry_type_enum_notes"><p>The current result's synchronization status is unknown.<wbr/></p>
27593 <p>The result may have already converged,<wbr/> or it may be in
27594 progress.<wbr/> Reading from this result may include some mix
27595 of settings from past requests.<wbr/></p>
27596 <p>After a settings change,<wbr/> the new settings will eventually all
27597 take effect for the output buffers and results.<wbr/> However,<wbr/> this
27598 value will not change when that happens.<wbr/> Altering settings
27599 rapidly may provide outcomes using mixes of settings from recent
27600 requests.<wbr/></p>
27601 <p>This value is intended primarily for backwards compatibility with
27602 the older camera implementations (for android.<wbr/>hardware.<wbr/>Camera).<wbr/></p></span>
27606 </td> <!-- entry_type -->
27608 <td class="entry_description">
27609 <p>The frame number corresponding to the last request
27610 with which the output result (metadata + buffers) has been fully
27611 synchronized.<wbr/></p>
27614 <td class="entry_units">
27617 <td class="entry_range">
27618 <p>Either a non-negative value corresponding to a
27619 <code>frame_<wbr/>number</code>,<wbr/> or one of the two enums (CONVERGING /<wbr/> UNKNOWN).<wbr/></p>
27622 <td class="entry_hal_version">
27626 <td class="entry_tags">
27627 <ul class="entry_tags">
27628 <li><a href="#tag_V1">V1</a></li>
27633 <tr class="entries_header">
27634 <th class="th_details" colspan="6">Details</th>
27636 <tr class="entry_cont">
27637 <td class="entry_details" colspan="6">
27638 <p>When a request is submitted to the camera device,<wbr/> there is usually a
27639 delay of several frames before the controls get applied.<wbr/> A camera
27640 device may either choose to account for this delay by implementing a
27641 pipeline and carefully submit well-timed atomic control updates,<wbr/> or
27642 it may start streaming control changes that span over several frame
27643 boundaries.<wbr/></p>
27644 <p>In the latter case,<wbr/> whenever a request's settings change relative to
27645 the previous submitted request,<wbr/> the full set of changes may take
27646 multiple frame durations to fully take effect.<wbr/> Some settings may
27647 take effect sooner (in less frame durations) than others.<wbr/></p>
27648 <p>While a set of control changes are being propagated,<wbr/> this value
27649 will be CONVERGING.<wbr/></p>
27650 <p>Once it is fully known that a set of control changes have been
27651 finished propagating,<wbr/> and the resulting updated control settings
27652 have been read back by the camera device,<wbr/> this value will be set
27653 to a non-negative frame number (corresponding to the request to
27654 which the results have synchronized to).<wbr/></p>
27655 <p>Older camera device implementations may not have a way to detect
27656 when all camera controls have been applied,<wbr/> and will always set this
27657 value to UNKNOWN.<wbr/></p>
27658 <p>FULL capability devices will always have this value set to the
27659 frame number of the request corresponding to this result.<wbr/></p>
27660 <p><em>Further details</em>:</p>
27662 <li>Whenever a request differs from the last request,<wbr/> any future
27663 results not yet returned may have this value set to CONVERGING (this
27664 could include any in-progress captures not yet returned by the camera
27665 device,<wbr/> for more details see pipeline considerations below).<wbr/></li>
27666 <li>Submitting a series of multiple requests that differ from the
27667 previous request (e.<wbr/>g.<wbr/> r1,<wbr/> r2,<wbr/> r3 s.<wbr/>t.<wbr/> r1 != r2 != r3)
27668 moves the new synchronization frame to the last non-repeating
27669 request (using the smallest frame number from the contiguous list of
27670 repeating requests).<wbr/></li>
27671 <li>Submitting the same request repeatedly will not change this value
27672 to CONVERGING,<wbr/> if it was already a non-negative value.<wbr/></li>
27673 <li>When this value changes to non-negative,<wbr/> that means that all of the
27674 metadata controls from the request have been applied,<wbr/> all of the
27675 metadata controls from the camera device have been read to the
27676 updated values (into the result),<wbr/> and all of the graphics buffers
27677 corresponding to this result are also synchronized to the request.<wbr/></li>
27679 <p><em>Pipeline considerations</em>:</p>
27680 <p>Submitting a request with updated controls relative to the previously
27681 submitted requests may also invalidate the synchronization state
27682 of all the results corresponding to currently in-flight requests.<wbr/></p>
27683 <p>In other words,<wbr/> results for this current request and up to
27684 <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a> prior requests may have their
27685 <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> change to CONVERGING.<wbr/></p>
27689 <tr class="entries_header">
27690 <th class="th_details" colspan="6">HAL Implementation Details</th>
27692 <tr class="entry_cont">
27693 <td class="entry_details" colspan="6">
27694 <p>Using UNKNOWN here is illegal unless <a href="#static_android.sync.maxLatency">android.<wbr/>sync.<wbr/>max<wbr/>Latency</a>
27695 is also UNKNOWN.<wbr/></p>
27696 <p>FULL capability devices should simply set this value to the
27697 <code>frame_<wbr/>number</code> of the request this result corresponds to.<wbr/></p>
27701 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27702 <!-- end of entry -->
27706 <!-- end of kind -->
27708 <tr><td colspan="7" class="kind">static</td></tr>
27710 <thead class="entries_header">
27712 <th class="th_name">Property Name</th>
27713 <th class="th_type">Type</th>
27714 <th class="th_description">Description</th>
27715 <th class="th_units">Units</th>
27716 <th class="th_range">Range</th>
27717 <th class="th_hal_version">Initial HIDL HAL version</th>
27718 <th class="th_tags">Tags</th>
27733 <tr class="entry" id="static_android.sync.maxLatency">
27734 <td class="entry_name
27736 android.<wbr/>sync.<wbr/>max<wbr/>Latency
27738 <td class="entry_type">
27739 <span class="entry_type_name entry_type_name_enum">int32</span>
27741 <span class="entry_type_visibility"> [public]</span>
27744 <span class="entry_type_hwlevel">[legacy] </span>
27748 <ul class="entry_type_enum">
27750 <span class="entry_type_enum_name">PER_FRAME_CONTROL</span>
27751 <span class="entry_type_enum_value">0</span>
27752 <span class="entry_type_enum_notes"><p>Every frame has the requests immediately applied.<wbr/></p>
27753 <p>Changing controls over multiple requests one after another will
27754 produce results that have those controls applied atomically
27755 each frame.<wbr/></p>
27756 <p>All FULL capability devices will have this as their maxLatency.<wbr/></p></span>
27759 <span class="entry_type_enum_name">UNKNOWN</span>
27760 <span class="entry_type_enum_value">-1</span>
27761 <span class="entry_type_enum_notes"><p>Each new frame has some subset (potentially the entire set)
27762 of the past requests applied to the camera settings.<wbr/></p>
27763 <p>By submitting a series of identical requests,<wbr/> the camera device
27764 will eventually have the camera settings applied,<wbr/> but it is
27765 unknown when that exact point will be.<wbr/></p>
27766 <p>All LEGACY capability devices will have this as their maxLatency.<wbr/></p></span>
27770 </td> <!-- entry_type -->
27772 <td class="entry_description">
27773 <p>The maximum number of frames that can occur after a request
27774 (different than the previous) has been submitted,<wbr/> and before the
27775 result's state becomes synchronized.<wbr/></p>
27778 <td class="entry_units">
27782 <td class="entry_range">
27783 <p>A positive value,<wbr/> PER_<wbr/>FRAME_<wbr/>CONTROL,<wbr/> or UNKNOWN.<wbr/></p>
27786 <td class="entry_hal_version">
27790 <td class="entry_tags">
27791 <ul class="entry_tags">
27792 <li><a href="#tag_V1">V1</a></li>
27797 <tr class="entries_header">
27798 <th class="th_details" colspan="6">Details</th>
27800 <tr class="entry_cont">
27801 <td class="entry_details" colspan="6">
27802 <p>This defines the maximum distance (in number of metadata results),<wbr/>
27803 between the frame number of the request that has new controls to apply
27804 and the frame number of the result that has all the controls applied.<wbr/></p>
27805 <p>In other words this acts as an upper boundary for how many frames
27806 must occur before the camera device knows for a fact that the new
27807 submitted camera settings have been applied in outgoing frames.<wbr/></p>
27811 <tr class="entries_header">
27812 <th class="th_details" colspan="6">HAL Implementation Details</th>
27814 <tr class="entry_cont">
27815 <td class="entry_details" colspan="6">
27816 <p>For example if maxLatency was 2,<wbr/></p>
27817 <pre><code>initial request = X (repeating)
27823 where requestN has frameNumber N,<wbr/> and the first of the repeating
27824 initial request's has frameNumber F (and F < 1).<wbr/>
27826 initial result = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == F }
27827 result1 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == F }
27828 result2 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == CONVERGING }
27829 result3 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == CONVERGING }
27830 result4 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == 2 }
27832 where resultN has frameNumber N.<wbr/>
27834 <p>Since <code>result4</code> has a <code>frameNumber == 4</code> and
27835 <code><a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == 2</code>,<wbr/> the distance is clearly
27836 <code>4 - 2 = 2</code>.<wbr/></p>
27837 <p>Use <code>frame_<wbr/>count</code> from camera3_<wbr/>request_<wbr/>t instead of
27838 <a href="#controls_android.request.frameCount">android.<wbr/>request.<wbr/>frame<wbr/>Count</a> or
27839 <code><a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html#getFrameNumber">CaptureResult#getFrameNumber</a></code>.<wbr/></p>
27840 <p>LIMITED devices are strongly encouraged to use a non-negative
27841 value.<wbr/> If UNKNOWN is used here then app developers do not have a way
27842 to know when sensor settings have been applied.<wbr/></p>
27846 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27847 <!-- end of entry -->
27851 <!-- end of kind -->
27854 <!-- end of section -->
27855 <tr><td colspan="7" id="section_reprocess" class="section">reprocess</td></tr>
27858 <tr><td colspan="7" class="kind">controls</td></tr>
27860 <thead class="entries_header">
27862 <th class="th_name">Property Name</th>
27863 <th class="th_type">Type</th>
27864 <th class="th_description">Description</th>
27865 <th class="th_units">Units</th>
27866 <th class="th_range">Range</th>
27867 <th class="th_hal_version">Initial HIDL HAL version</th>
27868 <th class="th_tags">Tags</th>
27883 <tr class="entry" id="controls_android.reprocess.effectiveExposureFactor">
27884 <td class="entry_name
27886 android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor
27888 <td class="entry_type">
27889 <span class="entry_type_name">float</span>
27891 <span class="entry_type_visibility"> [java_public]</span>
27894 <span class="entry_type_hwlevel">[limited] </span>
27899 </td> <!-- entry_type -->
27901 <td class="entry_description">
27902 <p>The amount of exposure time increase factor applied to the original output
27903 frame by the application processing before sending for reprocessing.<wbr/></p>
27906 <td class="entry_units">
27907 Relative exposure time increase factor.<wbr/>
27910 <td class="entry_range">
27911 <p>>= 1.<wbr/>0</p>
27914 <td class="entry_hal_version">
27918 <td class="entry_tags">
27919 <ul class="entry_tags">
27920 <li><a href="#tag_REPROC">REPROC</a></li>
27925 <tr class="entries_header">
27926 <th class="th_details" colspan="6">Details</th>
27928 <tr class="entry_cont">
27929 <td class="entry_details" colspan="6">
27930 <p>This is optional,<wbr/> and will be supported if the camera device supports YUV_<wbr/>REPROCESSING
27931 capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains YUV_<wbr/>REPROCESSING).<wbr/></p>
27932 <p>For some YUV reprocessing use cases,<wbr/> the application may choose to filter the original
27933 output frames to effectively reduce the noise to the same level as a frame that was
27934 captured with longer exposure time.<wbr/> To be more specific,<wbr/> assuming the original captured
27935 images were captured with a sensitivity of S and an exposure time of T,<wbr/> the model in
27936 the camera device is that the amount of noise in the image would be approximately what
27937 would be expected if the original capture parameters had been a sensitivity of
27938 S/<wbr/>effectiveExposureFactor and an exposure time of T*effectiveExposureFactor,<wbr/> rather
27939 than S and T respectively.<wbr/> If the captured images were processed by the application
27940 before being sent for reprocessing,<wbr/> then the application may have used image processing
27941 algorithms and/<wbr/>or multi-frame image fusion to reduce the noise in the
27942 application-processed images (input images).<wbr/> By using the effectiveExposureFactor
27943 control,<wbr/> the application can communicate to the camera device the actual noise level
27944 improvement in the application-processed image.<wbr/> With this information,<wbr/> the camera
27945 device can select appropriate noise reduction and edge enhancement parameters to avoid
27946 excessive noise reduction (<a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a>) and insufficient edge
27947 enhancement (<a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a>) being applied to the reprocessed frames.<wbr/></p>
27948 <p>For example,<wbr/> for multi-frame image fusion use case,<wbr/> the application may fuse
27949 multiple output frames together to a final frame for reprocessing.<wbr/> When N image are
27950 fused into 1 image for reprocessing,<wbr/> the exposure time increase factor could be up to
27951 square root of N (based on a simple photon shot noise model).<wbr/> The camera device will
27952 adjust the reprocessing noise reduction and edge enhancement parameters accordingly to
27953 produce the best quality images.<wbr/></p>
27954 <p>This is relative factor,<wbr/> 1.<wbr/>0 indicates the application hasn't processed the input
27955 buffer in a way that affects its effective exposure time.<wbr/></p>
27956 <p>This control is only effective for YUV reprocessing capture request.<wbr/> For noise
27957 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/>
27958 Similarly,<wbr/> for edge enhancement reprocessing,<wbr/> it is only effective when
27959 <code><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a> != OFF</code>.<wbr/></p>
27964 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27965 <!-- end of entry -->
27969 <!-- end of kind -->
27971 <tr><td colspan="7" class="kind">dynamic</td></tr>
27973 <thead class="entries_header">
27975 <th class="th_name">Property Name</th>
27976 <th class="th_type">Type</th>
27977 <th class="th_description">Description</th>
27978 <th class="th_units">Units</th>
27979 <th class="th_range">Range</th>
27980 <th class="th_hal_version">Initial HIDL HAL version</th>
27981 <th class="th_tags">Tags</th>
27996 <tr class="entry" id="dynamic_android.reprocess.effectiveExposureFactor">
27997 <td class="entry_name
27999 android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor
28001 <td class="entry_type">
28002 <span class="entry_type_name">float</span>
28004 <span class="entry_type_visibility"> [java_public]</span>
28007 <span class="entry_type_hwlevel">[limited] </span>
28012 </td> <!-- entry_type -->
28014 <td class="entry_description">
28015 <p>The amount of exposure time increase factor applied to the original output
28016 frame by the application processing before sending for reprocessing.<wbr/></p>
28019 <td class="entry_units">
28020 Relative exposure time increase factor.<wbr/>
28023 <td class="entry_range">
28024 <p>>= 1.<wbr/>0</p>
28027 <td class="entry_hal_version">
28031 <td class="entry_tags">
28032 <ul class="entry_tags">
28033 <li><a href="#tag_REPROC">REPROC</a></li>
28038 <tr class="entries_header">
28039 <th class="th_details" colspan="6">Details</th>
28041 <tr class="entry_cont">
28042 <td class="entry_details" colspan="6">
28043 <p>This is optional,<wbr/> and will be supported if the camera device supports YUV_<wbr/>REPROCESSING
28044 capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains YUV_<wbr/>REPROCESSING).<wbr/></p>
28045 <p>For some YUV reprocessing use cases,<wbr/> the application may choose to filter the original
28046 output frames to effectively reduce the noise to the same level as a frame that was
28047 captured with longer exposure time.<wbr/> To be more specific,<wbr/> assuming the original captured
28048 images were captured with a sensitivity of S and an exposure time of T,<wbr/> the model in
28049 the camera device is that the amount of noise in the image would be approximately what
28050 would be expected if the original capture parameters had been a sensitivity of
28051 S/<wbr/>effectiveExposureFactor and an exposure time of T*effectiveExposureFactor,<wbr/> rather
28052 than S and T respectively.<wbr/> If the captured images were processed by the application
28053 before being sent for reprocessing,<wbr/> then the application may have used image processing
28054 algorithms and/<wbr/>or multi-frame image fusion to reduce the noise in the
28055 application-processed images (input images).<wbr/> By using the effectiveExposureFactor
28056 control,<wbr/> the application can communicate to the camera device the actual noise level
28057 improvement in the application-processed image.<wbr/> With this information,<wbr/> the camera
28058 device can select appropriate noise reduction and edge enhancement parameters to avoid
28059 excessive noise reduction (<a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a>) and insufficient edge
28060 enhancement (<a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a>) being applied to the reprocessed frames.<wbr/></p>
28061 <p>For example,<wbr/> for multi-frame image fusion use case,<wbr/> the application may fuse
28062 multiple output frames together to a final frame for reprocessing.<wbr/> When N image are
28063 fused into 1 image for reprocessing,<wbr/> the exposure time increase factor could be up to
28064 square root of N (based on a simple photon shot noise model).<wbr/> The camera device will
28065 adjust the reprocessing noise reduction and edge enhancement parameters accordingly to
28066 produce the best quality images.<wbr/></p>
28067 <p>This is relative factor,<wbr/> 1.<wbr/>0 indicates the application hasn't processed the input
28068 buffer in a way that affects its effective exposure time.<wbr/></p>
28069 <p>This control is only effective for YUV reprocessing capture request.<wbr/> For noise
28070 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/>
28071 Similarly,<wbr/> for edge enhancement reprocessing,<wbr/> it is only effective when
28072 <code><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a> != OFF</code>.<wbr/></p>
28077 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28078 <!-- end of entry -->
28082 <!-- end of kind -->
28084 <tr><td colspan="7" class="kind">static</td></tr>
28086 <thead class="entries_header">
28088 <th class="th_name">Property Name</th>
28089 <th class="th_type">Type</th>
28090 <th class="th_description">Description</th>
28091 <th class="th_units">Units</th>
28092 <th class="th_range">Range</th>
28093 <th class="th_hal_version">Initial HIDL HAL version</th>
28094 <th class="th_tags">Tags</th>
28109 <tr class="entry" id="static_android.reprocess.maxCaptureStall">
28110 <td class="entry_name
28112 android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall
28114 <td class="entry_type">
28115 <span class="entry_type_name">int32</span>
28117 <span class="entry_type_visibility"> [java_public]</span>
28120 <span class="entry_type_hwlevel">[limited] </span>
28125 </td> <!-- entry_type -->
28127 <td class="entry_description">
28128 <p>The maximal camera capture pipeline stall (in unit of frame count) introduced by a
28129 reprocess capture request.<wbr/></p>
28132 <td class="entry_units">
28133 Number of frames.<wbr/>
28136 <td class="entry_range">
28140 <td class="entry_hal_version">
28144 <td class="entry_tags">
28145 <ul class="entry_tags">
28146 <li><a href="#tag_REPROC">REPROC</a></li>
28151 <tr class="entries_header">
28152 <th class="th_details" colspan="6">Details</th>
28154 <tr class="entry_cont">
28155 <td class="entry_details" colspan="6">
28156 <p>The key describes the maximal interference that one reprocess (input) request
28157 can introduce to the camera simultaneous streaming of regular (output) capture
28158 requests,<wbr/> including repeating requests.<wbr/></p>
28159 <p>When a reprocessing capture request is submitted while a camera output repeating request
28160 (e.<wbr/>g.<wbr/> preview) is being served by the camera device,<wbr/> it may preempt the camera capture
28161 pipeline for at least one frame duration so that the camera device is unable to process
28162 the following capture request in time for the next sensor start of exposure boundary.<wbr/>
28163 When this happens,<wbr/> the application may observe a capture time gap (longer than one frame
28164 duration) between adjacent capture output frames,<wbr/> which usually exhibits as preview
28165 glitch if the repeating request output targets include a preview surface.<wbr/> This key gives
28166 the worst-case number of frame stall introduced by one reprocess request with any kind of
28167 formats/<wbr/>sizes combination.<wbr/></p>
28168 <p>If this key reports 0,<wbr/> it means a reprocess request doesn't introduce any glitch to the
28169 ongoing camera repeating request outputs,<wbr/> as if this reprocess request is never issued.<wbr/></p>
28170 <p>This key is supported if the camera device supports PRIVATE or YUV reprocessing (
28171 i.<wbr/>e.<wbr/> <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains PRIVATE_<wbr/>REPROCESSING or
28172 YUV_<wbr/>REPROCESSING).<wbr/></p>
28177 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28178 <!-- end of entry -->
28182 <!-- end of kind -->
28185 <!-- end of section -->
28186 <tr><td colspan="7" id="section_depth" class="section">depth</td></tr>
28189 <tr><td colspan="7" class="kind">static</td></tr>
28191 <thead class="entries_header">
28193 <th class="th_name">Property Name</th>
28194 <th class="th_type">Type</th>
28195 <th class="th_description">Description</th>
28196 <th class="th_units">Units</th>
28197 <th class="th_range">Range</th>
28198 <th class="th_hal_version">Initial HIDL HAL version</th>
28199 <th class="th_tags">Tags</th>
28214 <tr class="entry" id="static_android.depth.maxDepthSamples">
28215 <td class="entry_name
28217 android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples
28219 <td class="entry_type">
28220 <span class="entry_type_name">int32</span>
28222 <span class="entry_type_visibility"> [system]</span>
28225 <span class="entry_type_hwlevel">[limited] </span>
28230 </td> <!-- entry_type -->
28232 <td class="entry_description">
28233 <p>Maximum number of points that a depth point cloud may contain.<wbr/></p>
28236 <td class="entry_units">
28239 <td class="entry_range">
28242 <td class="entry_hal_version">
28246 <td class="entry_tags">
28247 <ul class="entry_tags">
28248 <li><a href="#tag_DEPTH">DEPTH</a></li>
28253 <tr class="entries_header">
28254 <th class="th_details" colspan="6">Details</th>
28256 <tr class="entry_cont">
28257 <td class="entry_details" colspan="6">
28258 <p>If a camera device supports outputting depth range data in the form of a depth point
28259 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
28260 number of points an output buffer may contain.<wbr/></p>
28261 <p>Any given buffer may contain between 0 and maxDepthSamples points,<wbr/> inclusive.<wbr/>
28262 If output in the depth point cloud format is not supported,<wbr/> this entry will
28263 not be defined.<wbr/></p>
28268 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28269 <!-- end of entry -->
28272 <tr class="entry" id="static_android.depth.availableDepthStreamConfigurations">
28273 <td class="entry_name
28275 android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stream<wbr/>Configurations
28277 <td class="entry_type">
28278 <span class="entry_type_name entry_type_name_enum">int32</span>
28279 <span class="entry_type_container">x</span>
28281 <span class="entry_type_array">
28284 <span class="entry_type_visibility"> [ndk_public as streamConfiguration]</span>
28287 <span class="entry_type_hwlevel">[limited] </span>
28291 <ul class="entry_type_enum">
28293 <span class="entry_type_enum_name">OUTPUT</span>
28296 <span class="entry_type_enum_name">INPUT</span>
28300 </td> <!-- entry_type -->
28302 <td class="entry_description">
28303 <p>The available depth dataspace stream
28304 configurations that this camera device supports
28305 (i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p>
28308 <td class="entry_units">
28311 <td class="entry_range">
28314 <td class="entry_hal_version">
28318 <td class="entry_tags">
28319 <ul class="entry_tags">
28320 <li><a href="#tag_DEPTH">DEPTH</a></li>
28325 <tr class="entries_header">
28326 <th class="th_details" colspan="6">Details</th>
28328 <tr class="entry_cont">
28329 <td class="entry_details" colspan="6">
28330 <p>These are output stream configurations for use with
28331 dataSpace HAL_<wbr/>DATASPACE_<wbr/>DEPTH.<wbr/> The configurations are
28332 listed as <code>(format,<wbr/> width,<wbr/> height,<wbr/> input?)</code> tuples.<wbr/></p>
28333 <p>Only devices that support depth output for at least
28334 the HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>Y16 dense depth map may include
28335 this entry.<wbr/></p>
28336 <p>A device that also supports the HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>BLOB
28337 sparse depth point cloud must report a single entry for
28338 the format in this list as <code>(HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>BLOB,<wbr/>
28339 <a href="#static_android.depth.maxDepthSamples">android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples</a>,<wbr/> 1,<wbr/> OUTPUT)</code> in addition to
28340 the entries for HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>Y16.<wbr/></p>
28345 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28346 <!-- end of entry -->
28349 <tr class="entry" id="static_android.depth.availableDepthMinFrameDurations">
28350 <td class="entry_name
28352 android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Min<wbr/>Frame<wbr/>Durations
28354 <td class="entry_type">
28355 <span class="entry_type_name">int64</span>
28356 <span class="entry_type_container">x</span>
28358 <span class="entry_type_array">
28361 <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
28364 <span class="entry_type_hwlevel">[limited] </span>
28369 </td> <!-- entry_type -->
28371 <td class="entry_description">
28372 <p>This lists the minimum frame duration for each
28373 format/<wbr/>size combination for depth output formats.<wbr/></p>
28376 <td class="entry_units">
28377 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
28380 <td class="entry_range">
28383 <td class="entry_hal_version">
28387 <td class="entry_tags">
28388 <ul class="entry_tags">
28389 <li><a href="#tag_DEPTH">DEPTH</a></li>
28394 <tr class="entries_header">
28395 <th class="th_details" colspan="6">Details</th>
28397 <tr class="entry_cont">
28398 <td class="entry_details" colspan="6">
28399 <p>This should correspond to the frame duration when only that
28400 stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode)
28401 set to either OFF or FAST.<wbr/></p>
28402 <p>When multiple streams are used in a request,<wbr/> the minimum frame
28403 duration will be max(individual stream min durations).<wbr/></p>
28404 <p>The minimum frame duration of a stream (of a particular format,<wbr/> size)
28405 is the same regardless of whether the stream is input or output.<wbr/></p>
28406 <p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> and
28407 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for more details about
28408 calculating the max frame rate.<wbr/></p>
28413 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28414 <!-- end of entry -->
28417 <tr class="entry" id="static_android.depth.availableDepthStallDurations">
28418 <td class="entry_name
28420 android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stall<wbr/>Durations
28422 <td class="entry_type">
28423 <span class="entry_type_name">int64</span>
28424 <span class="entry_type_container">x</span>
28426 <span class="entry_type_array">
28429 <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
28432 <span class="entry_type_hwlevel">[limited] </span>
28437 </td> <!-- entry_type -->
28439 <td class="entry_description">
28440 <p>This lists the maximum stall duration for each
28441 output format/<wbr/>size combination for depth streams.<wbr/></p>
28444 <td class="entry_units">
28445 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
28448 <td class="entry_range">
28451 <td class="entry_hal_version">
28455 <td class="entry_tags">
28456 <ul class="entry_tags">
28457 <li><a href="#tag_DEPTH">DEPTH</a></li>
28462 <tr class="entries_header">
28463 <th class="th_details" colspan="6">Details</th>
28465 <tr class="entry_cont">
28466 <td class="entry_details" colspan="6">
28467 <p>A stall duration is how much extra time would get added
28468 to the normal minimum frame duration for a repeating request
28469 that has streams with non-zero stall.<wbr/></p>
28470 <p>This functions similarly to
28471 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for depth
28473 <p>All depth output stream formats may have a nonzero stall
28474 duration.<wbr/></p>
28479 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28480 <!-- end of entry -->
28483 <tr class="entry" id="static_android.depth.depthIsExclusive">
28484 <td class="entry_name
28486 android.<wbr/>depth.<wbr/>depth<wbr/>Is<wbr/>Exclusive
28488 <td class="entry_type">
28489 <span class="entry_type_name entry_type_name_enum">byte</span>
28491 <span class="entry_type_visibility"> [public as boolean]</span>
28494 <span class="entry_type_hwlevel">[limited] </span>
28498 <ul class="entry_type_enum">
28500 <span class="entry_type_enum_name">FALSE</span>
28503 <span class="entry_type_enum_name">TRUE</span>
28507 </td> <!-- entry_type -->
28509 <td class="entry_description">
28510 <p>Indicates whether a capture request may target both a
28511 DEPTH16 /<wbr/> DEPTH_<wbr/>POINT_<wbr/>CLOUD output,<wbr/> and normal color outputs (such as
28512 YUV_<wbr/>420_<wbr/>888,<wbr/> JPEG,<wbr/> or RAW) simultaneously.<wbr/></p>
28515 <td class="entry_units">
28518 <td class="entry_range">
28521 <td class="entry_hal_version">
28525 <td class="entry_tags">
28529 <tr class="entries_header">
28530 <th class="th_details" colspan="6">Details</th>
28532 <tr class="entry_cont">
28533 <td class="entry_details" colspan="6">
28534 <p>If TRUE,<wbr/> including both depth and color outputs in a single
28535 capture request is not supported.<wbr/> An application must interleave color
28536 and depth requests.<wbr/> If FALSE,<wbr/> a single request can target both types
28537 of output.<wbr/></p>
28538 <p>Typically,<wbr/> this restriction exists on camera devices that
28539 need to emit a specific pattern or wavelength of light to
28540 measure depth values,<wbr/> which causes the color image to be
28541 corrupted during depth measurement.<wbr/></p>
28546 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28547 <!-- end of entry -->
28551 <!-- end of kind -->
28554 <!-- end of section -->
28555 <!-- </namespace> -->
28558 <div class="tags" id="tag_index">
28561 <li id="tag_BC">BC -
28562 Needed for backwards compatibility with old Java API
28564 <ul class="tags_entries">
28565 <li><a href="#controls_android.control.aeAntibandingMode">android.control.aeAntibandingMode</a> (controls)</li>
28566 <li><a href="#controls_android.control.aeExposureCompensation">android.control.aeExposureCompensation</a> (controls)</li>
28567 <li><a href="#controls_android.control.aeLock">android.control.aeLock</a> (controls)</li>
28568 <li><a href="#controls_android.control.aeMode">android.control.aeMode</a> (controls)</li>
28569 <li><a href="#controls_android.control.aeRegions">android.control.aeRegions</a> (controls)</li>
28570 <li><a href="#controls_android.control.aeTargetFpsRange">android.control.aeTargetFpsRange</a> (controls)</li>
28571 <li><a href="#controls_android.control.aePrecaptureTrigger">android.control.aePrecaptureTrigger</a> (controls)</li>
28572 <li><a href="#controls_android.control.afMode">android.control.afMode</a> (controls)</li>
28573 <li><a href="#controls_android.control.afRegions">android.control.afRegions</a> (controls)</li>
28574 <li><a href="#controls_android.control.afTrigger">android.control.afTrigger</a> (controls)</li>
28575 <li><a href="#controls_android.control.awbLock">android.control.awbLock</a> (controls)</li>
28576 <li><a href="#controls_android.control.awbMode">android.control.awbMode</a> (controls)</li>
28577 <li><a href="#controls_android.control.awbRegions">android.control.awbRegions</a> (controls)</li>
28578 <li><a href="#controls_android.control.captureIntent">android.control.captureIntent</a> (controls)</li>
28579 <li><a href="#controls_android.control.effectMode">android.control.effectMode</a> (controls)</li>
28580 <li><a href="#controls_android.control.mode">android.control.mode</a> (controls)</li>
28581 <li><a href="#controls_android.control.sceneMode">android.control.sceneMode</a> (controls)</li>
28582 <li><a href="#controls_android.control.videoStabilizationMode">android.control.videoStabilizationMode</a> (controls)</li>
28583 <li><a href="#static_android.control.aeAvailableAntibandingModes">android.control.aeAvailableAntibandingModes</a> (static)</li>
28584 <li><a href="#static_android.control.aeAvailableModes">android.control.aeAvailableModes</a> (static)</li>
28585 <li><a href="#static_android.control.aeAvailableTargetFpsRanges">android.control.aeAvailableTargetFpsRanges</a> (static)</li>
28586 <li><a href="#static_android.control.aeCompensationRange">android.control.aeCompensationRange</a> (static)</li>
28587 <li><a href="#static_android.control.aeCompensationStep">android.control.aeCompensationStep</a> (static)</li>
28588 <li><a href="#static_android.control.afAvailableModes">android.control.afAvailableModes</a> (static)</li>
28589 <li><a href="#static_android.control.availableEffects">android.control.availableEffects</a> (static)</li>
28590 <li><a href="#static_android.control.availableSceneModes">android.control.availableSceneModes</a> (static)</li>
28591 <li><a href="#static_android.control.availableVideoStabilizationModes">android.control.availableVideoStabilizationModes</a> (static)</li>
28592 <li><a href="#static_android.control.awbAvailableModes">android.control.awbAvailableModes</a> (static)</li>
28593 <li><a href="#static_android.control.maxRegions">android.control.maxRegions</a> (static)</li>
28594 <li><a href="#static_android.control.sceneModeOverrides">android.control.sceneModeOverrides</a> (static)</li>
28595 <li><a href="#static_android.control.aeLockAvailable">android.control.aeLockAvailable</a> (static)</li>
28596 <li><a href="#static_android.control.awbLockAvailable">android.control.awbLockAvailable</a> (static)</li>
28597 <li><a href="#controls_android.flash.mode">android.flash.mode</a> (controls)</li>
28598 <li><a href="#static_android.flash.info.available">android.flash.info.available</a> (static)</li>
28599 <li><a href="#controls_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a> (controls)</li>
28600 <li><a href="#controls_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a> (controls)</li>
28601 <li><a href="#controls_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a> (controls)</li>
28602 <li><a href="#controls_android.jpeg.orientation">android.jpeg.orientation</a> (controls)</li>
28603 <li><a href="#controls_android.jpeg.quality">android.jpeg.quality</a> (controls)</li>
28604 <li><a href="#controls_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a> (controls)</li>
28605 <li><a href="#controls_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a> (controls)</li>
28606 <li><a href="#static_android.jpeg.availableThumbnailSizes">android.jpeg.availableThumbnailSizes</a> (static)</li>
28607 <li><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a> (controls)</li>
28608 <li><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a> (static)</li>
28609 <li><a href="#dynamic_android.lens.focusRange">android.lens.focusRange</a> (dynamic)</li>
28610 <li><a href="#static_android.request.maxNumOutputStreams">android.request.maxNumOutputStreams</a> (static)</li>
28611 <li><a href="#controls_android.scaler.cropRegion">android.scaler.cropRegion</a> (controls)</li>
28612 <li><a href="#static_android.scaler.availableFormats">android.scaler.availableFormats</a> (static)</li>
28613 <li><a href="#static_android.scaler.availableJpegMinDurations">android.scaler.availableJpegMinDurations</a> (static)</li>
28614 <li><a href="#static_android.scaler.availableJpegSizes">android.scaler.availableJpegSizes</a> (static)</li>
28615 <li><a href="#static_android.scaler.availableMaxDigitalZoom">android.scaler.availableMaxDigitalZoom</a> (static)</li>
28616 <li><a href="#static_android.scaler.availableProcessedMinDurations">android.scaler.availableProcessedMinDurations</a> (static)</li>
28617 <li><a href="#static_android.scaler.availableProcessedSizes">android.scaler.availableProcessedSizes</a> (static)</li>
28618 <li><a href="#static_android.scaler.availableRawMinDurations">android.scaler.availableRawMinDurations</a> (static)</li>
28619 <li><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a> (static)</li>
28620 <li><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a> (static)</li>
28621 <li><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a> (static)</li>
28622 <li><a href="#static_android.sensor.orientation">android.sensor.orientation</a> (static)</li>
28623 <li><a href="#dynamic_android.sensor.timestamp">android.sensor.timestamp</a> (dynamic)</li>
28624 <li><a href="#controls_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a> (controls)</li>
28625 <li><a href="#static_android.statistics.info.maxFaceCount">android.statistics.info.maxFaceCount</a> (static)</li>
28626 <li><a href="#dynamic_android.statistics.faceIds">android.statistics.faceIds</a> (dynamic)</li>
28627 <li><a href="#dynamic_android.statistics.faceLandmarks">android.statistics.faceLandmarks</a> (dynamic)</li>
28628 <li><a href="#dynamic_android.statistics.faceRectangles">android.statistics.faceRectangles</a> (dynamic)</li>
28629 <li><a href="#dynamic_android.statistics.faceScores">android.statistics.faceScores</a> (dynamic)</li>
28630 <li><a href="#dynamic_android.lens.focalLength">android.lens.focalLength</a> (dynamic)</li>
28631 <li><a href="#dynamic_android.lens.focusDistance">android.lens.focusDistance</a> (dynamic)</li>
28633 </li> <!-- tag_BC -->
28634 <li id="tag_V1">V1 -
28635 New features for first camera 2 release (API1)
28637 <ul class="tags_entries">
28638 <li><a href="#static_android.colorCorrection.availableAberrationModes">android.colorCorrection.availableAberrationModes</a> (static)</li>
28639 <li><a href="#static_android.control.availableHighSpeedVideoConfigurations">android.control.availableHighSpeedVideoConfigurations</a> (static)</li>
28640 <li><a href="#controls_android.edge.mode">android.edge.mode</a> (controls)</li>
28641 <li><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a> (static)</li>
28642 <li><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a> (controls)</li>
28643 <li><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a> (static)</li>
28644 <li><a href="#controls_android.lens.aperture">android.lens.aperture</a> (controls)</li>
28645 <li><a href="#controls_android.lens.filterDensity">android.lens.filterDensity</a> (controls)</li>
28646 <li><a href="#controls_android.lens.focalLength">android.lens.focalLength</a> (controls)</li>
28647 <li><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a> (controls)</li>
28648 <li><a href="#controls_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a> (controls)</li>
28649 <li><a href="#static_android.lens.info.availableApertures">android.lens.info.availableApertures</a> (static)</li>
28650 <li><a href="#static_android.lens.info.availableFilterDensities">android.lens.info.availableFilterDensities</a> (static)</li>
28651 <li><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a> (static)</li>
28652 <li><a href="#static_android.lens.info.availableOpticalStabilization">android.lens.info.availableOpticalStabilization</a> (static)</li>
28653 <li><a href="#static_android.lens.info.minimumFocusDistance">android.lens.info.minimumFocusDistance</a> (static)</li>
28654 <li><a href="#static_android.lens.info.shadingMapSize">android.lens.info.shadingMapSize</a> (static)</li>
28655 <li><a href="#static_android.lens.info.focusDistanceCalibration">android.lens.info.focusDistanceCalibration</a> (static)</li>
28656 <li><a href="#dynamic_android.lens.state">android.lens.state</a> (dynamic)</li>
28657 <li><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a> (controls)</li>
28658 <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a> (static)</li>
28659 <li><a href="#controls_android.request.id">android.request.id</a> (controls)</li>
28660 <li><a href="#static_android.scaler.availableMinFrameDurations">android.scaler.availableMinFrameDurations</a> (static)</li>
28661 <li><a href="#static_android.scaler.availableStallDurations">android.scaler.availableStallDurations</a> (static)</li>
28662 <li><a href="#controls_android.sensor.exposureTime">android.sensor.exposureTime</a> (controls)</li>
28663 <li><a href="#controls_android.sensor.frameDuration">android.sensor.frameDuration</a> (controls)</li>
28664 <li><a href="#controls_android.sensor.sensitivity">android.sensor.sensitivity</a> (controls)</li>
28665 <li><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a> (static)</li>
28666 <li><a href="#static_android.sensor.info.exposureTimeRange">android.sensor.info.exposureTimeRange</a> (static)</li>
28667 <li><a href="#static_android.sensor.info.maxFrameDuration">android.sensor.info.maxFrameDuration</a> (static)</li>
28668 <li><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a> (static)</li>
28669 <li><a href="#static_android.sensor.info.timestampSource">android.sensor.info.timestampSource</a> (static)</li>
28670 <li><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a> (static)</li>
28671 <li><a href="#dynamic_android.sensor.rollingShutterSkew">android.sensor.rollingShutterSkew</a> (dynamic)</li>
28672 <li><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a> (controls)</li>
28673 <li><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a> (static)</li>
28674 <li><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a> (dynamic)</li>
28675 <li><a href="#dynamic_android.sync.frameNumber">android.sync.frameNumber</a> (dynamic)</li>
28676 <li><a href="#static_android.sync.maxLatency">android.sync.maxLatency</a> (static)</li>
28677 <li><a href="#dynamic_android.edge.mode">android.edge.mode</a> (dynamic)</li>
28678 <li><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a> (dynamic)</li>
28679 <li><a href="#dynamic_android.lens.aperture">android.lens.aperture</a> (dynamic)</li>
28680 <li><a href="#dynamic_android.lens.filterDensity">android.lens.filterDensity</a> (dynamic)</li>
28681 <li><a href="#dynamic_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a> (dynamic)</li>
28682 <li><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a> (dynamic)</li>
28684 </li> <!-- tag_V1 -->
28685 <li id="tag_RAW">RAW -
28686 Needed for useful RAW image processing and DNG file support
28688 <ul class="tags_entries">
28689 <li><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a> (controls)</li>
28690 <li><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a> (static)</li>
28691 <li><a href="#static_android.sensor.info.activeArraySize">android.sensor.info.activeArraySize</a> (static)</li>
28692 <li><a href="#static_android.sensor.info.colorFilterArrangement">android.sensor.info.colorFilterArrangement</a> (static)</li>
28693 <li><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a> (static)</li>
28694 <li><a href="#static_android.sensor.info.whiteLevel">android.sensor.info.whiteLevel</a> (static)</li>
28695 <li><a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.sensor.info.preCorrectionActiveArraySize</a> (static)</li>
28696 <li><a href="#static_android.sensor.referenceIlluminant1">android.sensor.referenceIlluminant1</a> (static)</li>
28697 <li><a href="#static_android.sensor.referenceIlluminant2">android.sensor.referenceIlluminant2</a> (static)</li>
28698 <li><a href="#static_android.sensor.calibrationTransform1">android.sensor.calibrationTransform1</a> (static)</li>
28699 <li><a href="#static_android.sensor.calibrationTransform2">android.sensor.calibrationTransform2</a> (static)</li>
28700 <li><a href="#static_android.sensor.colorTransform1">android.sensor.colorTransform1</a> (static)</li>
28701 <li><a href="#static_android.sensor.colorTransform2">android.sensor.colorTransform2</a> (static)</li>
28702 <li><a href="#static_android.sensor.forwardMatrix1">android.sensor.forwardMatrix1</a> (static)</li>
28703 <li><a href="#static_android.sensor.forwardMatrix2">android.sensor.forwardMatrix2</a> (static)</li>
28704 <li><a href="#static_android.sensor.blackLevelPattern">android.sensor.blackLevelPattern</a> (static)</li>
28705 <li><a href="#static_android.sensor.profileHueSatMapDimensions">android.sensor.profileHueSatMapDimensions</a> (static)</li>
28706 <li><a href="#dynamic_android.sensor.neutralColorPoint">android.sensor.neutralColorPoint</a> (dynamic)</li>
28707 <li><a href="#dynamic_android.sensor.noiseProfile">android.sensor.noiseProfile</a> (dynamic)</li>
28708 <li><a href="#dynamic_android.sensor.profileHueSatMap">android.sensor.profileHueSatMap</a> (dynamic)</li>
28709 <li><a href="#dynamic_android.sensor.profileToneCurve">android.sensor.profileToneCurve</a> (dynamic)</li>
28710 <li><a href="#dynamic_android.sensor.greenSplit">android.sensor.greenSplit</a> (dynamic)</li>
28711 <li><a href="#dynamic_android.sensor.dynamicBlackLevel">android.sensor.dynamicBlackLevel</a> (dynamic)</li>
28712 <li><a href="#dynamic_android.sensor.dynamicWhiteLevel">android.sensor.dynamicWhiteLevel</a> (dynamic)</li>
28713 <li><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a> (controls)</li>
28714 <li><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a> (static)</li>
28715 <li><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a> (dynamic)</li>
28716 <li><a href="#controls_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a> (controls)</li>
28717 <li><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a> (dynamic)</li>
28719 </li> <!-- tag_RAW -->
28720 <li id="tag_HAL2">HAL2 -
28721 Entry is only used by camera device legacy HAL 2.x
28723 <ul class="tags_entries">
28724 <li><a href="#controls_android.request.inputStreams">android.request.inputStreams</a> (controls)</li>
28725 <li><a href="#controls_android.request.outputStreams">android.request.outputStreams</a> (controls)</li>
28726 <li><a href="#controls_android.request.type">android.request.type</a> (controls)</li>
28727 <li><a href="#static_android.request.maxNumReprocessStreams">android.request.maxNumReprocessStreams</a> (static)</li>
28728 <li><a href="#controls_android.blackLevel.lock">android.blackLevel.lock</a> (controls)</li>
28730 </li> <!-- tag_HAL2 -->
28731 <li id="tag_FULL">FULL -
28732 Entry is required for full hardware level devices, and optional for other hardware levels
28734 <ul class="tags_entries">
28735 <li><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a> (static)</li>
28737 </li> <!-- tag_FULL -->
28738 <li id="tag_DEPTH">DEPTH -
28739 Entry is required for the depth capability.
28741 <ul class="tags_entries">
28742 <li><a href="#static_android.lens.poseRotation">android.lens.poseRotation</a> (static)</li>
28743 <li><a href="#static_android.lens.poseTranslation">android.lens.poseTranslation</a> (static)</li>
28744 <li><a href="#static_android.lens.intrinsicCalibration">android.lens.intrinsicCalibration</a> (static)</li>
28745 <li><a href="#static_android.lens.radialDistortion">android.lens.radialDistortion</a> (static)</li>
28746 <li><a href="#static_android.depth.maxDepthSamples">android.depth.maxDepthSamples</a> (static)</li>
28747 <li><a href="#static_android.depth.availableDepthStreamConfigurations">android.depth.availableDepthStreamConfigurations</a> (static)</li>
28748 <li><a href="#static_android.depth.availableDepthMinFrameDurations">android.depth.availableDepthMinFrameDurations</a> (static)</li>
28749 <li><a href="#static_android.depth.availableDepthStallDurations">android.depth.availableDepthStallDurations</a> (static)</li>
28751 </li> <!-- tag_DEPTH -->
28752 <li id="tag_REPROC">REPROC -
28753 Entry is required for the YUV or PRIVATE reprocessing capability.
28755 <ul class="tags_entries">
28756 <li><a href="#controls_android.edge.mode">android.edge.mode</a> (controls)</li>
28757 <li><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a> (static)</li>
28758 <li><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a> (controls)</li>
28759 <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a> (static)</li>
28760 <li><a href="#static_android.request.maxNumInputStreams">android.request.maxNumInputStreams</a> (static)</li>
28761 <li><a href="#static_android.scaler.availableInputOutputFormatsMap">android.scaler.availableInputOutputFormatsMap</a> (static)</li>
28762 <li><a href="#controls_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a> (controls)</li>
28763 <li><a href="#static_android.reprocess.maxCaptureStall">android.reprocess.maxCaptureStall</a> (static)</li>
28764 <li><a href="#dynamic_android.edge.mode">android.edge.mode</a> (dynamic)</li>
28765 <li><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a> (dynamic)</li>
28767 </li> <!-- tag_REPROC -->
28768 <li id="tag_FUTURE">FUTURE -
28769 Entry is under-specified and is not required for now. This is for book-keeping purpose,
28770 do not implement or use it, it may be revised for future.
28772 <ul class="tags_entries">
28773 <li><a href="#controls_android.demosaic.mode">android.demosaic.mode</a> (controls)</li>
28774 <li><a href="#controls_android.edge.strength">android.edge.strength</a> (controls)</li>
28775 <li><a href="#controls_android.flash.firingPower">android.flash.firingPower</a> (controls)</li>
28776 <li><a href="#controls_android.flash.firingTime">android.flash.firingTime</a> (controls)</li>
28777 <li><a href="#static_android.flash.info.chargeDuration">android.flash.info.chargeDuration</a> (static)</li>
28778 <li><a href="#static_android.flash.colorTemperature">android.flash.colorTemperature</a> (static)</li>
28779 <li><a href="#static_android.flash.maxEnergy">android.flash.maxEnergy</a> (static)</li>
28780 <li><a href="#dynamic_android.jpeg.size">android.jpeg.size</a> (dynamic)</li>
28781 <li><a href="#controls_android.noiseReduction.strength">android.noiseReduction.strength</a> (controls)</li>
28782 <li><a href="#controls_android.request.metadataMode">android.request.metadataMode</a> (controls)</li>
28783 <li><a href="#static_android.sensor.baseGainFactor">android.sensor.baseGainFactor</a> (static)</li>
28784 <li><a href="#dynamic_android.sensor.temperature">android.sensor.temperature</a> (dynamic)</li>
28785 <li><a href="#controls_android.shading.strength">android.shading.strength</a> (controls)</li>
28786 <li><a href="#controls_android.statistics.histogramMode">android.statistics.histogramMode</a> (controls)</li>
28787 <li><a href="#controls_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a> (controls)</li>
28788 <li><a href="#static_android.statistics.info.histogramBucketCount">android.statistics.info.histogramBucketCount</a> (static)</li>
28789 <li><a href="#static_android.statistics.info.maxHistogramCount">android.statistics.info.maxHistogramCount</a> (static)</li>
28790 <li><a href="#static_android.statistics.info.maxSharpnessMapValue">android.statistics.info.maxSharpnessMapValue</a> (static)</li>
28791 <li><a href="#static_android.statistics.info.sharpnessMapSize">android.statistics.info.sharpnessMapSize</a> (static)</li>
28792 <li><a href="#dynamic_android.statistics.histogram">android.statistics.histogram</a> (dynamic)</li>
28793 <li><a href="#dynamic_android.statistics.sharpnessMap">android.statistics.sharpnessMap</a> (dynamic)</li>
28795 </li> <!-- tag_FUTURE -->
28799 [ <a href="#">top</a> ]