xref: /aosp_15_r20/system/media/camera/docs/docs.html (revision b9df5ad1c9ac98a7fefaac271a55f7ae3db05414)
1<!DOCTYPE html>
2<html>
3<!-- Copyright (C) 2012 The Android Open Source Project
4
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
8
9          http://www.apache.org/licenses/LICENSE-2.0
10
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.
16-->
17<head>
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}
33
34    /* toc style */
35    .toc_section_header { font-size:1.3em;  }
36    .toc_kind_header { font-size:1.2em;  }
37    .toc_deprecated { text-decoration:line-through; }
38
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; }
51
52    /* hide the first thead, we need it there only to enforce column sizes */
53    .thead_dummy { visibility: hidden; }
54
55    /* Entry flair */
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; }
58
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; }
74
75    /* Entry tags flair */
76    .entry_tags ul { list-style-type: none; }
77
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; }
81
82    /* Entry spacer flair */
83    .entry_spacer { background-color: transparent; border-style: none; height: 0.5em; }
84
85    /* TODO: generate abbr element for each tag link? */
86    /* TODO for each x.y.z try to link it to the entry */
87
88  </style>
89
90  <style>
91
92    {
93      /* broken...
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
96         */
97        tr { page-break-after: always; page-break-inside: avoid; }
98    }
99
100  </style>
101</head>
102
103
104
105<body>
106  <h1>Android Camera HAL3.2 Properties</h1>
107
108
109  <h2>Table of Contents</h2>
110  <ul class="toc">
111    <li><a href="#tag_index" class="toc_section_header">Tags</a></li>
112    <li>
113      <span class="toc_section_header"><a href="#section_colorCorrection">colorCorrection</a></span>
114      <ul class="toc_section">
115        <li>
116          <span class="toc_kind_header">controls</span>
117          <ul class="toc_section">
118            <li
119            ><a href="#controls_android.colorCorrection.mode">android.colorCorrection.mode</a></li>
120            <li
121            ><a href="#controls_android.colorCorrection.transform">android.colorCorrection.transform</a></li>
122            <li
123            ><a href="#controls_android.colorCorrection.gains">android.colorCorrection.gains</a></li>
124            <li
125            ><a href="#controls_android.colorCorrection.aberrationMode">android.colorCorrection.aberrationMode</a></li>
126            <li
127            ><a href="#controls_android.colorCorrection.colorTemperature">android.colorCorrection.colorTemperature</a></li>
128            <li
129            ><a href="#controls_android.colorCorrection.colorTint">android.colorCorrection.colorTint</a></li>
130          </ul>
131        </li>
132        <li>
133          <span class="toc_kind_header">dynamic</span>
134          <ul class="toc_section">
135            <li
136            ><a href="#dynamic_android.colorCorrection.mode">android.colorCorrection.mode</a></li>
137            <li
138            ><a href="#dynamic_android.colorCorrection.transform">android.colorCorrection.transform</a></li>
139            <li
140            ><a href="#dynamic_android.colorCorrection.gains">android.colorCorrection.gains</a></li>
141            <li
142            ><a href="#dynamic_android.colorCorrection.aberrationMode">android.colorCorrection.aberrationMode</a></li>
143            <li
144            ><a href="#dynamic_android.colorCorrection.colorTemperature">android.colorCorrection.colorTemperature</a></li>
145            <li
146            ><a href="#dynamic_android.colorCorrection.colorTint">android.colorCorrection.colorTint</a></li>
147          </ul>
148        </li>
149        <li>
150          <span class="toc_kind_header">static</span>
151          <ul class="toc_section">
152            <li
153            ><a href="#static_android.colorCorrection.availableAberrationModes">android.colorCorrection.availableAberrationModes</a></li>
154            <li
155            ><a href="#static_android.colorCorrection.colorTemperatureRange">android.colorCorrection.colorTemperatureRange</a></li>
156            <li
157            ><a href="#static_android.colorCorrection.availableModes">android.colorCorrection.availableModes</a></li>
158          </ul>
159        </li>
160      </ul> <!-- toc_section -->
161    </li>
162    <li>
163      <span class="toc_section_header"><a href="#section_control">control</a></span>
164      <ul class="toc_section">
165        <li>
166          <span class="toc_kind_header">controls</span>
167          <ul class="toc_section">
168            <li
169            ><a href="#controls_android.control.aeAntibandingMode">android.control.aeAntibandingMode</a></li>
170            <li
171            ><a href="#controls_android.control.aeExposureCompensation">android.control.aeExposureCompensation</a></li>
172            <li
173            ><a href="#controls_android.control.aeLock">android.control.aeLock</a></li>
174            <li
175            ><a href="#controls_android.control.aeMode">android.control.aeMode</a></li>
176            <li
177            ><a href="#controls_android.control.aeRegions">android.control.aeRegions</a></li>
178            <li
179            ><a href="#controls_android.control.aeTargetFpsRange">android.control.aeTargetFpsRange</a></li>
180            <li
181            ><a href="#controls_android.control.aePrecaptureTrigger">android.control.aePrecaptureTrigger</a></li>
182            <li
183            ><a href="#controls_android.control.afMode">android.control.afMode</a></li>
184            <li
185            ><a href="#controls_android.control.afRegions">android.control.afRegions</a></li>
186            <li
187            ><a href="#controls_android.control.afTrigger">android.control.afTrigger</a></li>
188            <li
189            ><a href="#controls_android.control.awbLock">android.control.awbLock</a></li>
190            <li
191            ><a href="#controls_android.control.awbMode">android.control.awbMode</a></li>
192            <li
193            ><a href="#controls_android.control.awbRegions">android.control.awbRegions</a></li>
194            <li
195            ><a href="#controls_android.control.captureIntent">android.control.captureIntent</a></li>
196            <li
197            ><a href="#controls_android.control.effectMode">android.control.effectMode</a></li>
198            <li
199            ><a href="#controls_android.control.mode">android.control.mode</a></li>
200            <li
201            ><a href="#controls_android.control.sceneMode">android.control.sceneMode</a></li>
202            <li
203            ><a href="#controls_android.control.videoStabilizationMode">android.control.videoStabilizationMode</a></li>
204            <li
205            ><a href="#controls_android.control.postRawSensitivityBoost">android.control.postRawSensitivityBoost</a></li>
206            <li
207            ><a href="#controls_android.control.enableZsl">android.control.enableZsl</a></li>
208            <li
209            ><a href="#controls_android.control.extendedSceneMode">android.control.extendedSceneMode</a></li>
210            <li
211            ><a href="#controls_android.control.zoomRatio">android.control.zoomRatio</a></li>
212            <li
213            ><a href="#controls_android.control.afRegionsSet">android.control.afRegionsSet</a></li>
214            <li
215            ><a href="#controls_android.control.aeRegionsSet">android.control.aeRegionsSet</a></li>
216            <li
217            ><a href="#controls_android.control.awbRegionsSet">android.control.awbRegionsSet</a></li>
218            <li
219            ><a href="#controls_android.control.settingsOverride">android.control.settingsOverride</a></li>
220            <li
221            ><a href="#controls_android.control.autoframing">android.control.autoframing</a></li>
222            <li
223            ><a href="#controls_android.control.zoomMethod">android.control.zoomMethod</a></li>
224            <li
225            ><a href="#controls_android.control.aePriorityMode">android.control.aePriorityMode</a></li>
226          </ul>
227        </li>
228        <li>
229          <span class="toc_kind_header">static</span>
230          <ul class="toc_section">
231            <li
232            ><a href="#static_android.control.aeAvailableAntibandingModes">android.control.aeAvailableAntibandingModes</a></li>
233            <li
234            ><a href="#static_android.control.aeAvailableModes">android.control.aeAvailableModes</a></li>
235            <li
236            ><a href="#static_android.control.aeAvailableTargetFpsRanges">android.control.aeAvailableTargetFpsRanges</a></li>
237            <li
238            ><a href="#static_android.control.aeCompensationRange">android.control.aeCompensationRange</a></li>
239            <li
240            ><a href="#static_android.control.aeCompensationStep">android.control.aeCompensationStep</a></li>
241            <li
242            ><a href="#static_android.control.afAvailableModes">android.control.afAvailableModes</a></li>
243            <li
244            ><a href="#static_android.control.availableEffects">android.control.availableEffects</a></li>
245            <li
246            ><a href="#static_android.control.availableSceneModes">android.control.availableSceneModes</a></li>
247            <li
248            ><a href="#static_android.control.availableVideoStabilizationModes">android.control.availableVideoStabilizationModes</a></li>
249            <li
250            ><a href="#static_android.control.awbAvailableModes">android.control.awbAvailableModes</a></li>
251            <li
252            ><a href="#static_android.control.maxRegions">android.control.maxRegions</a></li>
253            <li
254            ><a href="#static_android.control.maxRegionsAe">android.control.maxRegionsAe</a></li>
255            <li
256            ><a href="#static_android.control.maxRegionsAwb">android.control.maxRegionsAwb</a></li>
257            <li
258            ><a href="#static_android.control.maxRegionsAf">android.control.maxRegionsAf</a></li>
259            <li
260            ><a href="#static_android.control.sceneModeOverrides">android.control.sceneModeOverrides</a></li>
261            <li
262            ><a href="#static_android.control.availableHighSpeedVideoConfigurations">android.control.availableHighSpeedVideoConfigurations</a></li>
263            <li
264            ><a href="#static_android.control.aeLockAvailable">android.control.aeLockAvailable</a></li>
265            <li
266            ><a href="#static_android.control.awbLockAvailable">android.control.awbLockAvailable</a></li>
267            <li
268            ><a href="#static_android.control.availableModes">android.control.availableModes</a></li>
269            <li
270            ><a href="#static_android.control.postRawSensitivityBoostRange">android.control.postRawSensitivityBoostRange</a></li>
271            <li
272            ><a href="#static_android.control.availableExtendedSceneModeMaxSizes">android.control.availableExtendedSceneModeMaxSizes</a></li>
273            <li
274            ><a href="#static_android.control.availableExtendedSceneModeZoomRatioRanges">android.control.availableExtendedSceneModeZoomRatioRanges</a></li>
275            <li
276            ><a href="#static_android.control.availableExtendedSceneModeCapabilities">android.control.availableExtendedSceneModeCapabilities</a></li>
277            <li
278            ><a href="#static_android.control.zoomRatioRange">android.control.zoomRatioRange</a></li>
279            <li
280            ><a href="#static_android.control.availableHighSpeedVideoConfigurationsMaximumResolution">android.control.availableHighSpeedVideoConfigurationsMaximumResolution</a></li>
281            <li
282            ><a href="#static_android.control.availableSettingsOverrides">android.control.availableSettingsOverrides</a></li>
283            <li
284            ><a href="#static_android.control.autoframingAvailable">android.control.autoframingAvailable</a></li>
285            <li
286            ><a href="#static_android.control.lowLightBoostInfoLuminanceRange">android.control.lowLightBoostInfoLuminanceRange</a></li>
287            <li
288            ><a href="#static_android.control.aeAvailablePriorityModes">android.control.aeAvailablePriorityModes</a></li>
289          </ul>
290        </li>
291        <li>
292          <span class="toc_kind_header">dynamic</span>
293          <ul class="toc_section">
294            <li
295                class="toc_deprecated"
296            ><a href="#dynamic_android.control.aePrecaptureId">android.control.aePrecaptureId</a></li>
297            <li
298            ><a href="#dynamic_android.control.aeAntibandingMode">android.control.aeAntibandingMode</a></li>
299            <li
300            ><a href="#dynamic_android.control.aeExposureCompensation">android.control.aeExposureCompensation</a></li>
301            <li
302            ><a href="#dynamic_android.control.aeLock">android.control.aeLock</a></li>
303            <li
304            ><a href="#dynamic_android.control.aeMode">android.control.aeMode</a></li>
305            <li
306            ><a href="#dynamic_android.control.aeRegions">android.control.aeRegions</a></li>
307            <li
308            ><a href="#dynamic_android.control.aeTargetFpsRange">android.control.aeTargetFpsRange</a></li>
309            <li
310            ><a href="#dynamic_android.control.aePrecaptureTrigger">android.control.aePrecaptureTrigger</a></li>
311            <li
312            ><a href="#dynamic_android.control.aeState">android.control.aeState</a></li>
313            <li
314            ><a href="#dynamic_android.control.afMode">android.control.afMode</a></li>
315            <li
316            ><a href="#dynamic_android.control.afRegions">android.control.afRegions</a></li>
317            <li
318            ><a href="#dynamic_android.control.afTrigger">android.control.afTrigger</a></li>
319            <li
320            ><a href="#dynamic_android.control.afState">android.control.afState</a></li>
321            <li
322                class="toc_deprecated"
323            ><a href="#dynamic_android.control.afTriggerId">android.control.afTriggerId</a></li>
324            <li
325            ><a href="#dynamic_android.control.awbLock">android.control.awbLock</a></li>
326            <li
327            ><a href="#dynamic_android.control.awbMode">android.control.awbMode</a></li>
328            <li
329            ><a href="#dynamic_android.control.awbRegions">android.control.awbRegions</a></li>
330            <li
331            ><a href="#dynamic_android.control.captureIntent">android.control.captureIntent</a></li>
332            <li
333            ><a href="#dynamic_android.control.awbState">android.control.awbState</a></li>
334            <li
335            ><a href="#dynamic_android.control.effectMode">android.control.effectMode</a></li>
336            <li
337            ><a href="#dynamic_android.control.mode">android.control.mode</a></li>
338            <li
339            ><a href="#dynamic_android.control.sceneMode">android.control.sceneMode</a></li>
340            <li
341            ><a href="#dynamic_android.control.videoStabilizationMode">android.control.videoStabilizationMode</a></li>
342            <li
343            ><a href="#dynamic_android.control.postRawSensitivityBoost">android.control.postRawSensitivityBoost</a></li>
344            <li
345            ><a href="#dynamic_android.control.enableZsl">android.control.enableZsl</a></li>
346            <li
347            ><a href="#dynamic_android.control.afSceneChange">android.control.afSceneChange</a></li>
348            <li
349            ><a href="#dynamic_android.control.extendedSceneMode">android.control.extendedSceneMode</a></li>
350            <li
351            ><a href="#dynamic_android.control.zoomRatio">android.control.zoomRatio</a></li>
352            <li
353            ><a href="#dynamic_android.control.settingsOverride">android.control.settingsOverride</a></li>
354            <li
355            ><a href="#dynamic_android.control.settingsOverridingFrameNumber">android.control.settingsOverridingFrameNumber</a></li>
356            <li
357            ><a href="#dynamic_android.control.autoframing">android.control.autoframing</a></li>
358            <li
359            ><a href="#dynamic_android.control.autoframingState">android.control.autoframingState</a></li>
360            <li
361            ><a href="#dynamic_android.control.lowLightBoostState">android.control.lowLightBoostState</a></li>
362            <li
363            ><a href="#dynamic_android.control.zoomMethod">android.control.zoomMethod</a></li>
364            <li
365            ><a href="#dynamic_android.control.aePriorityMode">android.control.aePriorityMode</a></li>
366          </ul>
367        </li>
368      </ul> <!-- toc_section -->
369    </li>
370    <li>
371      <span class="toc_section_header"><a href="#section_demosaic">demosaic</a></span>
372      <ul class="toc_section">
373        <li>
374          <span class="toc_kind_header">controls</span>
375          <ul class="toc_section">
376            <li
377            ><a href="#controls_android.demosaic.mode">android.demosaic.mode</a></li>
378          </ul>
379        </li>
380      </ul> <!-- toc_section -->
381    </li>
382    <li>
383      <span class="toc_section_header"><a href="#section_edge">edge</a></span>
384      <ul class="toc_section">
385        <li>
386          <span class="toc_kind_header">controls</span>
387          <ul class="toc_section">
388            <li
389            ><a href="#controls_android.edge.mode">android.edge.mode</a></li>
390            <li
391            ><a href="#controls_android.edge.strength">android.edge.strength</a></li>
392          </ul>
393        </li>
394        <li>
395          <span class="toc_kind_header">static</span>
396          <ul class="toc_section">
397            <li
398            ><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a></li>
399          </ul>
400        </li>
401        <li>
402          <span class="toc_kind_header">dynamic</span>
403          <ul class="toc_section">
404            <li
405            ><a href="#dynamic_android.edge.mode">android.edge.mode</a></li>
406          </ul>
407        </li>
408      </ul> <!-- toc_section -->
409    </li>
410    <li>
411      <span class="toc_section_header"><a href="#section_flash">flash</a></span>
412      <ul class="toc_section">
413        <li>
414          <span class="toc_kind_header">controls</span>
415          <ul class="toc_section">
416            <li
417            ><a href="#controls_android.flash.firingPower">android.flash.firingPower</a></li>
418            <li
419            ><a href="#controls_android.flash.firingTime">android.flash.firingTime</a></li>
420            <li
421            ><a href="#controls_android.flash.mode">android.flash.mode</a></li>
422            <li
423            ><a href="#controls_android.flash.strengthLevel">android.flash.strengthLevel</a></li>
424          </ul>
425        </li>
426        <li>
427          <span class="toc_kind_header">static</span>
428          <ul class="toc_section">
429
430            <li
431            ><a href="#static_android.flash.info.available">android.flash.info.available</a></li>
432            <li
433            ><a href="#static_android.flash.info.chargeDuration">android.flash.info.chargeDuration</a></li>
434            <li
435            ><a href="#static_android.flash.info.strengthMaximumLevel">android.flash.info.strengthMaximumLevel</a></li>
436            <li
437            ><a href="#static_android.flash.info.strengthDefaultLevel">android.flash.info.strengthDefaultLevel</a></li>
438
439            <li
440            ><a href="#static_android.flash.colorTemperature">android.flash.colorTemperature</a></li>
441            <li
442            ><a href="#static_android.flash.maxEnergy">android.flash.maxEnergy</a></li>
443            <li
444            ><a href="#static_android.flash.singleStrengthMaxLevel">android.flash.singleStrengthMaxLevel</a></li>
445            <li
446            ><a href="#static_android.flash.singleStrengthDefaultLevel">android.flash.singleStrengthDefaultLevel</a></li>
447            <li
448            ><a href="#static_android.flash.torchStrengthMaxLevel">android.flash.torchStrengthMaxLevel</a></li>
449            <li
450            ><a href="#static_android.flash.torchStrengthDefaultLevel">android.flash.torchStrengthDefaultLevel</a></li>
451          </ul>
452        </li>
453        <li>
454          <span class="toc_kind_header">dynamic</span>
455          <ul class="toc_section">
456            <li
457            ><a href="#dynamic_android.flash.firingPower">android.flash.firingPower</a></li>
458            <li
459            ><a href="#dynamic_android.flash.firingTime">android.flash.firingTime</a></li>
460            <li
461            ><a href="#dynamic_android.flash.mode">android.flash.mode</a></li>
462            <li
463            ><a href="#dynamic_android.flash.state">android.flash.state</a></li>
464            <li
465            ><a href="#dynamic_android.flash.strengthLevel">android.flash.strengthLevel</a></li>
466          </ul>
467        </li>
468      </ul> <!-- toc_section -->
469    </li>
470    <li>
471      <span class="toc_section_header"><a href="#section_hotPixel">hotPixel</a></span>
472      <ul class="toc_section">
473        <li>
474          <span class="toc_kind_header">controls</span>
475          <ul class="toc_section">
476            <li
477            ><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a></li>
478          </ul>
479        </li>
480        <li>
481          <span class="toc_kind_header">static</span>
482          <ul class="toc_section">
483            <li
484            ><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a></li>
485          </ul>
486        </li>
487        <li>
488          <span class="toc_kind_header">dynamic</span>
489          <ul class="toc_section">
490            <li
491            ><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a></li>
492          </ul>
493        </li>
494      </ul> <!-- toc_section -->
495    </li>
496    <li>
497      <span class="toc_section_header"><a href="#section_jpeg">jpeg</a></span>
498      <ul class="toc_section">
499        <li>
500          <span class="toc_kind_header">controls</span>
501          <ul class="toc_section">
502            <li
503            ><a href="#controls_android.jpeg.gpsLocation">android.jpeg.gpsLocation</a></li>
504            <li
505            ><a href="#controls_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a></li>
506            <li
507            ><a href="#controls_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a></li>
508            <li
509            ><a href="#controls_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a></li>
510            <li
511            ><a href="#controls_android.jpeg.orientation">android.jpeg.orientation</a></li>
512            <li
513            ><a href="#controls_android.jpeg.quality">android.jpeg.quality</a></li>
514            <li
515            ><a href="#controls_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a></li>
516            <li
517            ><a href="#controls_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a></li>
518          </ul>
519        </li>
520        <li>
521          <span class="toc_kind_header">static</span>
522          <ul class="toc_section">
523            <li
524            ><a href="#static_android.jpeg.availableThumbnailSizes">android.jpeg.availableThumbnailSizes</a></li>
525            <li
526            ><a href="#static_android.jpeg.maxSize">android.jpeg.maxSize</a></li>
527          </ul>
528        </li>
529        <li>
530          <span class="toc_kind_header">dynamic</span>
531          <ul class="toc_section">
532            <li
533            ><a href="#dynamic_android.jpeg.gpsLocation">android.jpeg.gpsLocation</a></li>
534            <li
535            ><a href="#dynamic_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a></li>
536            <li
537            ><a href="#dynamic_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a></li>
538            <li
539            ><a href="#dynamic_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a></li>
540            <li
541            ><a href="#dynamic_android.jpeg.orientation">android.jpeg.orientation</a></li>
542            <li
543            ><a href="#dynamic_android.jpeg.quality">android.jpeg.quality</a></li>
544            <li
545            ><a href="#dynamic_android.jpeg.size">android.jpeg.size</a></li>
546            <li
547            ><a href="#dynamic_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a></li>
548            <li
549            ><a href="#dynamic_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a></li>
550          </ul>
551        </li>
552      </ul> <!-- toc_section -->
553    </li>
554    <li>
555      <span class="toc_section_header"><a href="#section_lens">lens</a></span>
556      <ul class="toc_section">
557        <li>
558          <span class="toc_kind_header">controls</span>
559          <ul class="toc_section">
560            <li
561            ><a href="#controls_android.lens.aperture">android.lens.aperture</a></li>
562            <li
563            ><a href="#controls_android.lens.filterDensity">android.lens.filterDensity</a></li>
564            <li
565            ><a href="#controls_android.lens.focalLength">android.lens.focalLength</a></li>
566            <li
567            ><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a></li>
568            <li
569            ><a href="#controls_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a></li>
570          </ul>
571        </li>
572        <li>
573          <span class="toc_kind_header">static</span>
574          <ul class="toc_section">
575
576            <li
577            ><a href="#static_android.lens.info.availableApertures">android.lens.info.availableApertures</a></li>
578            <li
579            ><a href="#static_android.lens.info.availableFilterDensities">android.lens.info.availableFilterDensities</a></li>
580            <li
581            ><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a></li>
582            <li
583            ><a href="#static_android.lens.info.availableOpticalStabilization">android.lens.info.availableOpticalStabilization</a></li>
584            <li
585            ><a href="#static_android.lens.info.hyperfocalDistance">android.lens.info.hyperfocalDistance</a></li>
586            <li
587            ><a href="#static_android.lens.info.minimumFocusDistance">android.lens.info.minimumFocusDistance</a></li>
588            <li
589            ><a href="#static_android.lens.info.shadingMapSize">android.lens.info.shadingMapSize</a></li>
590            <li
591            ><a href="#static_android.lens.info.focusDistanceCalibration">android.lens.info.focusDistanceCalibration</a></li>
592
593            <li
594            ><a href="#static_android.lens.facing">android.lens.facing</a></li>
595            <li
596            ><a href="#static_android.lens.poseRotation">android.lens.poseRotation</a></li>
597            <li
598            ><a href="#static_android.lens.poseTranslation">android.lens.poseTranslation</a></li>
599            <li
600            ><a href="#static_android.lens.intrinsicCalibration">android.lens.intrinsicCalibration</a></li>
601            <li
602                class="toc_deprecated"
603            ><a href="#static_android.lens.radialDistortion">android.lens.radialDistortion</a></li>
604            <li
605            ><a href="#static_android.lens.poseReference">android.lens.poseReference</a></li>
606            <li
607            ><a href="#static_android.lens.distortion">android.lens.distortion</a></li>
608            <li
609            ><a href="#static_android.lens.distortionMaximumResolution">android.lens.distortionMaximumResolution</a></li>
610            <li
611            ><a href="#static_android.lens.intrinsicCalibrationMaximumResolution">android.lens.intrinsicCalibrationMaximumResolution</a></li>
612          </ul>
613        </li>
614        <li>
615          <span class="toc_kind_header">dynamic</span>
616          <ul class="toc_section">
617            <li
618            ><a href="#dynamic_android.lens.aperture">android.lens.aperture</a></li>
619            <li
620            ><a href="#dynamic_android.lens.filterDensity">android.lens.filterDensity</a></li>
621            <li
622            ><a href="#dynamic_android.lens.focalLength">android.lens.focalLength</a></li>
623            <li
624            ><a href="#dynamic_android.lens.focusDistance">android.lens.focusDistance</a></li>
625            <li
626            ><a href="#dynamic_android.lens.focusRange">android.lens.focusRange</a></li>
627            <li
628            ><a href="#dynamic_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a></li>
629            <li
630            ><a href="#dynamic_android.lens.state">android.lens.state</a></li>
631            <li
632            ><a href="#dynamic_android.lens.poseRotation">android.lens.poseRotation</a></li>
633            <li
634            ><a href="#dynamic_android.lens.poseTranslation">android.lens.poseTranslation</a></li>
635            <li
636            ><a href="#dynamic_android.lens.intrinsicCalibration">android.lens.intrinsicCalibration</a></li>
637            <li
638                class="toc_deprecated"
639            ><a href="#dynamic_android.lens.radialDistortion">android.lens.radialDistortion</a></li>
640            <li
641            ><a href="#dynamic_android.lens.distortion">android.lens.distortion</a></li>
642          </ul>
643        </li>
644      </ul> <!-- toc_section -->
645    </li>
646    <li>
647      <span class="toc_section_header"><a href="#section_noiseReduction">noiseReduction</a></span>
648      <ul class="toc_section">
649        <li>
650          <span class="toc_kind_header">controls</span>
651          <ul class="toc_section">
652            <li
653            ><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a></li>
654            <li
655            ><a href="#controls_android.noiseReduction.strength">android.noiseReduction.strength</a></li>
656          </ul>
657        </li>
658        <li>
659          <span class="toc_kind_header">static</span>
660          <ul class="toc_section">
661            <li
662            ><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a></li>
663          </ul>
664        </li>
665        <li>
666          <span class="toc_kind_header">dynamic</span>
667          <ul class="toc_section">
668            <li
669            ><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a></li>
670          </ul>
671        </li>
672      </ul> <!-- toc_section -->
673    </li>
674    <li>
675      <span class="toc_section_header"><a href="#section_quirks">quirks</a></span>
676      <ul class="toc_section">
677        <li>
678          <span class="toc_kind_header">static</span>
679          <ul class="toc_section">
680            <li
681                class="toc_deprecated"
682            ><a href="#static_android.quirks.meteringCropRegion">android.quirks.meteringCropRegion</a></li>
683            <li
684                class="toc_deprecated"
685            ><a href="#static_android.quirks.triggerAfWithAuto">android.quirks.triggerAfWithAuto</a></li>
686            <li
687                class="toc_deprecated"
688            ><a href="#static_android.quirks.useZslFormat">android.quirks.useZslFormat</a></li>
689            <li
690                class="toc_deprecated"
691            ><a href="#static_android.quirks.usePartialResult">android.quirks.usePartialResult</a></li>
692          </ul>
693        </li>
694        <li>
695          <span class="toc_kind_header">dynamic</span>
696          <ul class="toc_section">
697            <li
698                class="toc_deprecated"
699            ><a href="#dynamic_android.quirks.partialResult">android.quirks.partialResult</a></li>
700          </ul>
701        </li>
702      </ul> <!-- toc_section -->
703    </li>
704    <li>
705      <span class="toc_section_header"><a href="#section_request">request</a></span>
706      <ul class="toc_section">
707        <li>
708          <span class="toc_kind_header">controls</span>
709          <ul class="toc_section">
710            <li
711                class="toc_deprecated"
712            ><a href="#controls_android.request.frameCount">android.request.frameCount</a></li>
713            <li
714            ><a href="#controls_android.request.id">android.request.id</a></li>
715            <li
716                class="toc_deprecated"
717            ><a href="#controls_android.request.inputStreams">android.request.inputStreams</a></li>
718            <li
719            ><a href="#controls_android.request.metadataMode">android.request.metadataMode</a></li>
720            <li
721                class="toc_deprecated"
722            ><a href="#controls_android.request.outputStreams">android.request.outputStreams</a></li>
723            <li
724                class="toc_deprecated"
725            ><a href="#controls_android.request.type">android.request.type</a></li>
726          </ul>
727        </li>
728        <li>
729          <span class="toc_kind_header">static</span>
730          <ul class="toc_section">
731            <li
732            ><a href="#static_android.request.maxNumOutputStreams">android.request.maxNumOutputStreams</a></li>
733            <li
734            ><a href="#static_android.request.maxNumOutputRaw">android.request.maxNumOutputRaw</a></li>
735            <li
736            ><a href="#static_android.request.maxNumOutputProc">android.request.maxNumOutputProc</a></li>
737            <li
738            ><a href="#static_android.request.maxNumOutputProcStalling">android.request.maxNumOutputProcStalling</a></li>
739            <li
740                class="toc_deprecated"
741            ><a href="#static_android.request.maxNumReprocessStreams">android.request.maxNumReprocessStreams</a></li>
742            <li
743            ><a href="#static_android.request.maxNumInputStreams">android.request.maxNumInputStreams</a></li>
744            <li
745            ><a href="#static_android.request.pipelineMaxDepth">android.request.pipelineMaxDepth</a></li>
746            <li
747            ><a href="#static_android.request.partialResultCount">android.request.partialResultCount</a></li>
748            <li
749            ><a href="#static_android.request.availableCapabilities">android.request.availableCapabilities</a></li>
750            <li
751            ><a href="#static_android.request.availableRequestKeys">android.request.availableRequestKeys</a></li>
752            <li
753            ><a href="#static_android.request.availableResultKeys">android.request.availableResultKeys</a></li>
754            <li
755            ><a href="#static_android.request.availableCharacteristicsKeys">android.request.availableCharacteristicsKeys</a></li>
756            <li
757            ><a href="#static_android.request.availableSessionKeys">android.request.availableSessionKeys</a></li>
758            <li
759            ><a href="#static_android.request.availablePhysicalCameraRequestKeys">android.request.availablePhysicalCameraRequestKeys</a></li>
760            <li
761            ><a href="#static_android.request.characteristicKeysNeedingPermission">android.request.characteristicKeysNeedingPermission</a></li>
762            <li
763            ><a href="#static_android.request.availableDynamicRangeProfiles">android.request.availableDynamicRangeProfiles</a></li>
764            <li
765            ><a href="#static_android.request.availableDynamicRangeProfilesMap">android.request.availableDynamicRangeProfilesMap</a></li>
766            <li
767            ><a href="#static_android.request.recommendedTenBitDynamicRangeProfile">android.request.recommendedTenBitDynamicRangeProfile</a></li>
768            <li
769            ><a href="#static_android.request.availableColorSpaceProfiles">android.request.availableColorSpaceProfiles</a></li>
770            <li
771            ><a href="#static_android.request.availableColorSpaceProfilesMap">android.request.availableColorSpaceProfilesMap</a></li>
772          </ul>
773        </li>
774        <li>
775          <span class="toc_kind_header">dynamic</span>
776          <ul class="toc_section">
777            <li
778                class="toc_deprecated"
779            ><a href="#dynamic_android.request.frameCount">android.request.frameCount</a></li>
780            <li
781            ><a href="#dynamic_android.request.id">android.request.id</a></li>
782            <li
783            ><a href="#dynamic_android.request.metadataMode">android.request.metadataMode</a></li>
784            <li
785                class="toc_deprecated"
786            ><a href="#dynamic_android.request.outputStreams">android.request.outputStreams</a></li>
787            <li
788            ><a href="#dynamic_android.request.pipelineDepth">android.request.pipelineDepth</a></li>
789          </ul>
790        </li>
791      </ul> <!-- toc_section -->
792    </li>
793    <li>
794      <span class="toc_section_header"><a href="#section_scaler">scaler</a></span>
795      <ul class="toc_section">
796        <li>
797          <span class="toc_kind_header">controls</span>
798          <ul class="toc_section">
799            <li
800            ><a href="#controls_android.scaler.cropRegion">android.scaler.cropRegion</a></li>
801            <li
802            ><a href="#controls_android.scaler.rotateAndCrop">android.scaler.rotateAndCrop</a></li>
803            <li
804            ><a href="#controls_android.scaler.cropRegionSet">android.scaler.cropRegionSet</a></li>
805          </ul>
806        </li>
807        <li>
808          <span class="toc_kind_header">static</span>
809          <ul class="toc_section">
810            <li
811                class="toc_deprecated"
812            ><a href="#static_android.scaler.availableFormats">android.scaler.availableFormats</a></li>
813            <li
814                class="toc_deprecated"
815            ><a href="#static_android.scaler.availableJpegMinDurations">android.scaler.availableJpegMinDurations</a></li>
816            <li
817                class="toc_deprecated"
818            ><a href="#static_android.scaler.availableJpegSizes">android.scaler.availableJpegSizes</a></li>
819            <li
820            ><a href="#static_android.scaler.availableMaxDigitalZoom">android.scaler.availableMaxDigitalZoom</a></li>
821            <li
822                class="toc_deprecated"
823            ><a href="#static_android.scaler.availableProcessedMinDurations">android.scaler.availableProcessedMinDurations</a></li>
824            <li
825                class="toc_deprecated"
826            ><a href="#static_android.scaler.availableProcessedSizes">android.scaler.availableProcessedSizes</a></li>
827            <li
828                class="toc_deprecated"
829            ><a href="#static_android.scaler.availableRawMinDurations">android.scaler.availableRawMinDurations</a></li>
830            <li
831                class="toc_deprecated"
832            ><a href="#static_android.scaler.availableRawSizes">android.scaler.availableRawSizes</a></li>
833            <li
834            ><a href="#static_android.scaler.availableInputOutputFormatsMap">android.scaler.availableInputOutputFormatsMap</a></li>
835            <li
836            ><a href="#static_android.scaler.availableStreamConfigurations">android.scaler.availableStreamConfigurations</a></li>
837            <li
838            ><a href="#static_android.scaler.availableMinFrameDurations">android.scaler.availableMinFrameDurations</a></li>
839            <li
840            ><a href="#static_android.scaler.availableStallDurations">android.scaler.availableStallDurations</a></li>
841            <li
842            ><a href="#static_android.scaler.streamConfigurationMap">android.scaler.streamConfigurationMap</a></li>
843            <li
844            ><a href="#static_android.scaler.croppingType">android.scaler.croppingType</a></li>
845            <li
846            ><a href="#static_android.scaler.availableRecommendedStreamConfigurations">android.scaler.availableRecommendedStreamConfigurations</a></li>
847            <li
848            ><a href="#static_android.scaler.availableRecommendedInputOutputFormatsMap">android.scaler.availableRecommendedInputOutputFormatsMap</a></li>
849            <li
850            ><a href="#static_android.scaler.mandatoryStreamCombinations">android.scaler.mandatoryStreamCombinations</a></li>
851            <li
852            ><a href="#static_android.scaler.mandatoryConcurrentStreamCombinations">android.scaler.mandatoryConcurrentStreamCombinations</a></li>
853            <li
854            ><a href="#static_android.scaler.availableRotateAndCropModes">android.scaler.availableRotateAndCropModes</a></li>
855            <li
856            ><a href="#static_android.scaler.defaultSecureImageSize">android.scaler.defaultSecureImageSize</a></li>
857            <li
858            ><a href="#static_android.scaler.physicalCameraMultiResolutionStreamConfigurations">android.scaler.physicalCameraMultiResolutionStreamConfigurations</a></li>
859            <li
860            ><a href="#static_android.scaler.multiResolutionStreamConfigurationMap">android.scaler.multiResolutionStreamConfigurationMap</a></li>
861            <li
862            ><a href="#static_android.scaler.availableStreamConfigurationsMaximumResolution">android.scaler.availableStreamConfigurationsMaximumResolution</a></li>
863            <li
864            ><a href="#static_android.scaler.availableMinFrameDurationsMaximumResolution">android.scaler.availableMinFrameDurationsMaximumResolution</a></li>
865            <li
866            ><a href="#static_android.scaler.availableStallDurationsMaximumResolution">android.scaler.availableStallDurationsMaximumResolution</a></li>
867            <li
868            ><a href="#static_android.scaler.streamConfigurationMapMaximumResolution">android.scaler.streamConfigurationMapMaximumResolution</a></li>
869            <li
870            ><a href="#static_android.scaler.availableInputOutputFormatsMapMaximumResolution">android.scaler.availableInputOutputFormatsMapMaximumResolution</a></li>
871            <li
872            ><a href="#static_android.scaler.mandatoryMaximumResolutionStreamCombinations">android.scaler.mandatoryMaximumResolutionStreamCombinations</a></li>
873            <li
874            ><a href="#static_android.scaler.mandatoryTenBitOutputStreamCombinations">android.scaler.mandatoryTenBitOutputStreamCombinations</a></li>
875            <li
876            ><a href="#static_android.scaler.mandatoryPreviewStabilizationOutputStreamCombinations">android.scaler.mandatoryPreviewStabilizationOutputStreamCombinations</a></li>
877            <li
878            ><a href="#static_android.scaler.multiResolutionStreamSupported">android.scaler.multiResolutionStreamSupported</a></li>
879            <li
880            ><a href="#static_android.scaler.availableStreamUseCases">android.scaler.availableStreamUseCases</a></li>
881            <li
882            ><a href="#static_android.scaler.mandatoryUseCaseStreamCombinations">android.scaler.mandatoryUseCaseStreamCombinations</a></li>
883          </ul>
884        </li>
885        <li>
886          <span class="toc_kind_header">dynamic</span>
887          <ul class="toc_section">
888            <li
889            ><a href="#dynamic_android.scaler.cropRegion">android.scaler.cropRegion</a></li>
890            <li
891            ><a href="#dynamic_android.scaler.rotateAndCrop">android.scaler.rotateAndCrop</a></li>
892            <li
893            ><a href="#dynamic_android.scaler.rawCropRegion">android.scaler.rawCropRegion</a></li>
894          </ul>
895        </li>
896      </ul> <!-- toc_section -->
897    </li>
898    <li>
899      <span class="toc_section_header"><a href="#section_sensor">sensor</a></span>
900      <ul class="toc_section">
901        <li>
902          <span class="toc_kind_header">controls</span>
903          <ul class="toc_section">
904            <li
905            ><a href="#controls_android.sensor.exposureTime">android.sensor.exposureTime</a></li>
906            <li
907            ><a href="#controls_android.sensor.frameDuration">android.sensor.frameDuration</a></li>
908            <li
909            ><a href="#controls_android.sensor.sensitivity">android.sensor.sensitivity</a></li>
910            <li
911            ><a href="#controls_android.sensor.testPatternData">android.sensor.testPatternData</a></li>
912            <li
913            ><a href="#controls_android.sensor.testPatternMode">android.sensor.testPatternMode</a></li>
914            <li
915            ><a href="#controls_android.sensor.pixelMode">android.sensor.pixelMode</a></li>
916          </ul>
917        </li>
918        <li>
919          <span class="toc_kind_header">static</span>
920          <ul class="toc_section">
921
922            <li
923            ><a href="#static_android.sensor.info.activeArraySize">android.sensor.info.activeArraySize</a></li>
924            <li
925            ><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a></li>
926            <li
927            ><a href="#static_android.sensor.info.colorFilterArrangement">android.sensor.info.colorFilterArrangement</a></li>
928            <li
929            ><a href="#static_android.sensor.info.exposureTimeRange">android.sensor.info.exposureTimeRange</a></li>
930            <li
931            ><a href="#static_android.sensor.info.maxFrameDuration">android.sensor.info.maxFrameDuration</a></li>
932            <li
933            ><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a></li>
934            <li
935            ><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a></li>
936            <li
937            ><a href="#static_android.sensor.info.whiteLevel">android.sensor.info.whiteLevel</a></li>
938            <li
939            ><a href="#static_android.sensor.info.timestampSource">android.sensor.info.timestampSource</a></li>
940            <li
941            ><a href="#static_android.sensor.info.lensShadingApplied">android.sensor.info.lensShadingApplied</a></li>
942            <li
943            ><a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.sensor.info.preCorrectionActiveArraySize</a></li>
944            <li
945            ><a href="#static_android.sensor.info.activeArraySizeMaximumResolution">android.sensor.info.activeArraySizeMaximumResolution</a></li>
946            <li
947            ><a href="#static_android.sensor.info.pixelArraySizeMaximumResolution">android.sensor.info.pixelArraySizeMaximumResolution</a></li>
948            <li
949            ><a href="#static_android.sensor.info.preCorrectionActiveArraySizeMaximumResolution">android.sensor.info.preCorrectionActiveArraySizeMaximumResolution</a></li>
950            <li
951            ><a href="#static_android.sensor.info.binningFactor">android.sensor.info.binningFactor</a></li>
952
953            <li
954            ><a href="#static_android.sensor.referenceIlluminant1">android.sensor.referenceIlluminant1</a></li>
955            <li
956            ><a href="#static_android.sensor.referenceIlluminant2">android.sensor.referenceIlluminant2</a></li>
957            <li
958            ><a href="#static_android.sensor.calibrationTransform1">android.sensor.calibrationTransform1</a></li>
959            <li
960            ><a href="#static_android.sensor.calibrationTransform2">android.sensor.calibrationTransform2</a></li>
961            <li
962            ><a href="#static_android.sensor.colorTransform1">android.sensor.colorTransform1</a></li>
963            <li
964            ><a href="#static_android.sensor.colorTransform2">android.sensor.colorTransform2</a></li>
965            <li
966            ><a href="#static_android.sensor.forwardMatrix1">android.sensor.forwardMatrix1</a></li>
967            <li
968            ><a href="#static_android.sensor.forwardMatrix2">android.sensor.forwardMatrix2</a></li>
969            <li
970            ><a href="#static_android.sensor.baseGainFactor">android.sensor.baseGainFactor</a></li>
971            <li
972            ><a href="#static_android.sensor.blackLevelPattern">android.sensor.blackLevelPattern</a></li>
973            <li
974            ><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a></li>
975            <li
976            ><a href="#static_android.sensor.orientation">android.sensor.orientation</a></li>
977            <li
978            ><a href="#static_android.sensor.profileHueSatMapDimensions">android.sensor.profileHueSatMapDimensions</a></li>
979            <li
980            ><a href="#static_android.sensor.availableTestPatternModes">android.sensor.availableTestPatternModes</a></li>
981            <li
982            ><a href="#static_android.sensor.opticalBlackRegions">android.sensor.opticalBlackRegions</a></li>
983            <li
984            ><a href="#static_android.sensor.opaqueRawSize">android.sensor.opaqueRawSize</a></li>
985            <li
986            ><a href="#static_android.sensor.opaqueRawSizeMaximumResolution">android.sensor.opaqueRawSizeMaximumResolution</a></li>
987            <li
988            ><a href="#static_android.sensor.readoutTimestamp">android.sensor.readoutTimestamp</a></li>
989          </ul>
990        </li>
991        <li>
992          <span class="toc_kind_header">dynamic</span>
993          <ul class="toc_section">
994            <li
995            ><a href="#dynamic_android.sensor.exposureTime">android.sensor.exposureTime</a></li>
996            <li
997            ><a href="#dynamic_android.sensor.frameDuration">android.sensor.frameDuration</a></li>
998            <li
999            ><a href="#dynamic_android.sensor.sensitivity">android.sensor.sensitivity</a></li>
1000            <li
1001            ><a href="#dynamic_android.sensor.timestamp">android.sensor.timestamp</a></li>
1002            <li
1003            ><a href="#dynamic_android.sensor.temperature">android.sensor.temperature</a></li>
1004            <li
1005            ><a href="#dynamic_android.sensor.neutralColorPoint">android.sensor.neutralColorPoint</a></li>
1006            <li
1007            ><a href="#dynamic_android.sensor.noiseProfile">android.sensor.noiseProfile</a></li>
1008            <li
1009            ><a href="#dynamic_android.sensor.profileHueSatMap">android.sensor.profileHueSatMap</a></li>
1010            <li
1011            ><a href="#dynamic_android.sensor.profileToneCurve">android.sensor.profileToneCurve</a></li>
1012            <li
1013            ><a href="#dynamic_android.sensor.greenSplit">android.sensor.greenSplit</a></li>
1014            <li
1015            ><a href="#dynamic_android.sensor.testPatternData">android.sensor.testPatternData</a></li>
1016            <li
1017            ><a href="#dynamic_android.sensor.testPatternMode">android.sensor.testPatternMode</a></li>
1018            <li
1019            ><a href="#dynamic_android.sensor.rollingShutterSkew">android.sensor.rollingShutterSkew</a></li>
1020            <li
1021            ><a href="#dynamic_android.sensor.dynamicBlackLevel">android.sensor.dynamicBlackLevel</a></li>
1022            <li
1023            ><a href="#dynamic_android.sensor.dynamicWhiteLevel">android.sensor.dynamicWhiteLevel</a></li>
1024            <li
1025            ><a href="#dynamic_android.sensor.pixelMode">android.sensor.pixelMode</a></li>
1026            <li
1027            ><a href="#dynamic_android.sensor.rawBinningFactorUsed">android.sensor.rawBinningFactorUsed</a></li>
1028          </ul>
1029        </li>
1030      </ul> <!-- toc_section -->
1031    </li>
1032    <li>
1033      <span class="toc_section_header"><a href="#section_shading">shading</a></span>
1034      <ul class="toc_section">
1035        <li>
1036          <span class="toc_kind_header">controls</span>
1037          <ul class="toc_section">
1038            <li
1039            ><a href="#controls_android.shading.mode">android.shading.mode</a></li>
1040            <li
1041            ><a href="#controls_android.shading.strength">android.shading.strength</a></li>
1042          </ul>
1043        </li>
1044        <li>
1045          <span class="toc_kind_header">dynamic</span>
1046          <ul class="toc_section">
1047            <li
1048            ><a href="#dynamic_android.shading.mode">android.shading.mode</a></li>
1049          </ul>
1050        </li>
1051        <li>
1052          <span class="toc_kind_header">static</span>
1053          <ul class="toc_section">
1054            <li
1055            ><a href="#static_android.shading.availableModes">android.shading.availableModes</a></li>
1056          </ul>
1057        </li>
1058      </ul> <!-- toc_section -->
1059    </li>
1060    <li>
1061      <span class="toc_section_header"><a href="#section_statistics">statistics</a></span>
1062      <ul class="toc_section">
1063        <li>
1064          <span class="toc_kind_header">controls</span>
1065          <ul class="toc_section">
1066            <li
1067            ><a href="#controls_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a></li>
1068            <li
1069            ><a href="#controls_android.statistics.histogramMode">android.statistics.histogramMode</a></li>
1070            <li
1071            ><a href="#controls_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a></li>
1072            <li
1073            ><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a></li>
1074            <li
1075            ><a href="#controls_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a></li>
1076            <li
1077            ><a href="#controls_android.statistics.oisDataMode">android.statistics.oisDataMode</a></li>
1078          </ul>
1079        </li>
1080        <li>
1081          <span class="toc_kind_header">static</span>
1082          <ul class="toc_section">
1083
1084            <li
1085            ><a href="#static_android.statistics.info.availableFaceDetectModes">android.statistics.info.availableFaceDetectModes</a></li>
1086            <li
1087            ><a href="#static_android.statistics.info.histogramBucketCount">android.statistics.info.histogramBucketCount</a></li>
1088            <li
1089            ><a href="#static_android.statistics.info.maxFaceCount">android.statistics.info.maxFaceCount</a></li>
1090            <li
1091            ><a href="#static_android.statistics.info.maxHistogramCount">android.statistics.info.maxHistogramCount</a></li>
1092            <li
1093            ><a href="#static_android.statistics.info.maxSharpnessMapValue">android.statistics.info.maxSharpnessMapValue</a></li>
1094            <li
1095            ><a href="#static_android.statistics.info.sharpnessMapSize">android.statistics.info.sharpnessMapSize</a></li>
1096            <li
1097            ><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a></li>
1098            <li
1099            ><a href="#static_android.statistics.info.availableLensShadingMapModes">android.statistics.info.availableLensShadingMapModes</a></li>
1100            <li
1101            ><a href="#static_android.statistics.info.availableOisDataModes">android.statistics.info.availableOisDataModes</a></li>
1102
1103          </ul>
1104        </li>
1105        <li>
1106          <span class="toc_kind_header">dynamic</span>
1107          <ul class="toc_section">
1108            <li
1109            ><a href="#dynamic_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a></li>
1110            <li
1111            ><a href="#dynamic_android.statistics.faceIds">android.statistics.faceIds</a></li>
1112            <li
1113            ><a href="#dynamic_android.statistics.faceLandmarks">android.statistics.faceLandmarks</a></li>
1114            <li
1115            ><a href="#dynamic_android.statistics.faceRectangles">android.statistics.faceRectangles</a></li>
1116            <li
1117            ><a href="#dynamic_android.statistics.faceScores">android.statistics.faceScores</a></li>
1118            <li
1119            ><a href="#dynamic_android.statistics.faces">android.statistics.faces</a></li>
1120            <li
1121            ><a href="#dynamic_android.statistics.histogram">android.statistics.histogram</a></li>
1122            <li
1123            ><a href="#dynamic_android.statistics.histogramMode">android.statistics.histogramMode</a></li>
1124            <li
1125            ><a href="#dynamic_android.statistics.sharpnessMap">android.statistics.sharpnessMap</a></li>
1126            <li
1127            ><a href="#dynamic_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a></li>
1128            <li
1129            ><a href="#dynamic_android.statistics.lensShadingCorrectionMap">android.statistics.lensShadingCorrectionMap</a></li>
1130            <li
1131            ><a href="#dynamic_android.statistics.lensShadingMap">android.statistics.lensShadingMap</a></li>
1132            <li
1133                class="toc_deprecated"
1134            ><a href="#dynamic_android.statistics.predictedColorGains">android.statistics.predictedColorGains</a></li>
1135            <li
1136                class="toc_deprecated"
1137            ><a href="#dynamic_android.statistics.predictedColorTransform">android.statistics.predictedColorTransform</a></li>
1138            <li
1139            ><a href="#dynamic_android.statistics.sceneFlicker">android.statistics.sceneFlicker</a></li>
1140            <li
1141            ><a href="#dynamic_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a></li>
1142            <li
1143            ><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a></li>
1144            <li
1145            ><a href="#dynamic_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a></li>
1146            <li
1147            ><a href="#dynamic_android.statistics.oisDataMode">android.statistics.oisDataMode</a></li>
1148            <li
1149            ><a href="#dynamic_android.statistics.oisTimestamps">android.statistics.oisTimestamps</a></li>
1150            <li
1151            ><a href="#dynamic_android.statistics.oisXShifts">android.statistics.oisXShifts</a></li>
1152            <li
1153            ><a href="#dynamic_android.statistics.oisYShifts">android.statistics.oisYShifts</a></li>
1154            <li
1155            ><a href="#dynamic_android.statistics.oisSamples">android.statistics.oisSamples</a></li>
1156            <li
1157            ><a href="#dynamic_android.statistics.lensIntrinsicsSamples">android.statistics.lensIntrinsicsSamples</a></li>
1158            <li
1159            ><a href="#dynamic_android.statistics.lensIntrinsicTimestamps">android.statistics.lensIntrinsicTimestamps</a></li>
1160            <li
1161            ><a href="#dynamic_android.statistics.lensIntrinsicSamples">android.statistics.lensIntrinsicSamples</a></li>
1162          </ul>
1163        </li>
1164      </ul> <!-- toc_section -->
1165    </li>
1166    <li>
1167      <span class="toc_section_header"><a href="#section_tonemap">tonemap</a></span>
1168      <ul class="toc_section">
1169        <li>
1170          <span class="toc_kind_header">controls</span>
1171          <ul class="toc_section">
1172            <li
1173            ><a href="#controls_android.tonemap.curveBlue">android.tonemap.curveBlue</a></li>
1174            <li
1175            ><a href="#controls_android.tonemap.curveGreen">android.tonemap.curveGreen</a></li>
1176            <li
1177            ><a href="#controls_android.tonemap.curveRed">android.tonemap.curveRed</a></li>
1178            <li
1179            ><a href="#controls_android.tonemap.curve">android.tonemap.curve</a></li>
1180            <li
1181            ><a href="#controls_android.tonemap.mode">android.tonemap.mode</a></li>
1182            <li
1183            ><a href="#controls_android.tonemap.gamma">android.tonemap.gamma</a></li>
1184            <li
1185            ><a href="#controls_android.tonemap.presetCurve">android.tonemap.presetCurve</a></li>
1186          </ul>
1187        </li>
1188        <li>
1189          <span class="toc_kind_header">static</span>
1190          <ul class="toc_section">
1191            <li
1192            ><a href="#static_android.tonemap.maxCurvePoints">android.tonemap.maxCurvePoints</a></li>
1193            <li
1194            ><a href="#static_android.tonemap.availableToneMapModes">android.tonemap.availableToneMapModes</a></li>
1195          </ul>
1196        </li>
1197        <li>
1198          <span class="toc_kind_header">dynamic</span>
1199          <ul class="toc_section">
1200            <li
1201            ><a href="#dynamic_android.tonemap.curveBlue">android.tonemap.curveBlue</a></li>
1202            <li
1203            ><a href="#dynamic_android.tonemap.curveGreen">android.tonemap.curveGreen</a></li>
1204            <li
1205            ><a href="#dynamic_android.tonemap.curveRed">android.tonemap.curveRed</a></li>
1206            <li
1207            ><a href="#dynamic_android.tonemap.curve">android.tonemap.curve</a></li>
1208            <li
1209            ><a href="#dynamic_android.tonemap.mode">android.tonemap.mode</a></li>
1210            <li
1211            ><a href="#dynamic_android.tonemap.gamma">android.tonemap.gamma</a></li>
1212            <li
1213            ><a href="#dynamic_android.tonemap.presetCurve">android.tonemap.presetCurve</a></li>
1214          </ul>
1215        </li>
1216      </ul> <!-- toc_section -->
1217    </li>
1218    <li>
1219      <span class="toc_section_header"><a href="#section_led">led</a></span>
1220      <ul class="toc_section">
1221        <li>
1222          <span class="toc_kind_header">controls</span>
1223          <ul class="toc_section">
1224            <li
1225            ><a href="#controls_android.led.transmit">android.led.transmit</a></li>
1226          </ul>
1227        </li>
1228        <li>
1229          <span class="toc_kind_header">dynamic</span>
1230          <ul class="toc_section">
1231            <li
1232            ><a href="#dynamic_android.led.transmit">android.led.transmit</a></li>
1233          </ul>
1234        </li>
1235        <li>
1236          <span class="toc_kind_header">static</span>
1237          <ul class="toc_section">
1238            <li
1239            ><a href="#static_android.led.availableLeds">android.led.availableLeds</a></li>
1240          </ul>
1241        </li>
1242      </ul> <!-- toc_section -->
1243    </li>
1244    <li>
1245      <span class="toc_section_header"><a href="#section_info">info</a></span>
1246      <ul class="toc_section">
1247        <li>
1248          <span class="toc_kind_header">static</span>
1249          <ul class="toc_section">
1250            <li
1251            ><a href="#static_android.info.supportedHardwareLevel">android.info.supportedHardwareLevel</a></li>
1252            <li
1253            ><a href="#static_android.info.version">android.info.version</a></li>
1254            <li
1255            ><a href="#static_android.info.supportedBufferManagementVersion">android.info.supportedBufferManagementVersion</a></li>
1256            <li
1257            ><a href="#static_android.info.deviceStateSensorOrientationMap">android.info.deviceStateSensorOrientationMap</a></li>
1258            <li
1259            ><a href="#static_android.info.deviceStateOrientations">android.info.deviceStateOrientations</a></li>
1260            <li
1261            ><a href="#static_android.info.sessionConfigurationQueryVersion">android.info.sessionConfigurationQueryVersion</a></li>
1262            <li
1263            ><a href="#static_android.info.deviceId">android.info.deviceId</a></li>
1264          </ul>
1265        </li>
1266      </ul> <!-- toc_section -->
1267    </li>
1268    <li>
1269      <span class="toc_section_header"><a href="#section_blackLevel">blackLevel</a></span>
1270      <ul class="toc_section">
1271        <li>
1272          <span class="toc_kind_header">controls</span>
1273          <ul class="toc_section">
1274            <li
1275            ><a href="#controls_android.blackLevel.lock">android.blackLevel.lock</a></li>
1276          </ul>
1277        </li>
1278        <li>
1279          <span class="toc_kind_header">dynamic</span>
1280          <ul class="toc_section">
1281            <li
1282            ><a href="#dynamic_android.blackLevel.lock">android.blackLevel.lock</a></li>
1283          </ul>
1284        </li>
1285      </ul> <!-- toc_section -->
1286    </li>
1287    <li>
1288      <span class="toc_section_header"><a href="#section_sync">sync</a></span>
1289      <ul class="toc_section">
1290        <li>
1291          <span class="toc_kind_header">dynamic</span>
1292          <ul class="toc_section">
1293            <li
1294            ><a href="#dynamic_android.sync.frameNumber">android.sync.frameNumber</a></li>
1295          </ul>
1296        </li>
1297        <li>
1298          <span class="toc_kind_header">static</span>
1299          <ul class="toc_section">
1300            <li
1301            ><a href="#static_android.sync.maxLatency">android.sync.maxLatency</a></li>
1302          </ul>
1303        </li>
1304      </ul> <!-- toc_section -->
1305    </li>
1306    <li>
1307      <span class="toc_section_header"><a href="#section_reprocess">reprocess</a></span>
1308      <ul class="toc_section">
1309        <li>
1310          <span class="toc_kind_header">controls</span>
1311          <ul class="toc_section">
1312            <li
1313            ><a href="#controls_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a></li>
1314          </ul>
1315        </li>
1316        <li>
1317          <span class="toc_kind_header">dynamic</span>
1318          <ul class="toc_section">
1319            <li
1320            ><a href="#dynamic_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a></li>
1321          </ul>
1322        </li>
1323        <li>
1324          <span class="toc_kind_header">static</span>
1325          <ul class="toc_section">
1326            <li
1327            ><a href="#static_android.reprocess.maxCaptureStall">android.reprocess.maxCaptureStall</a></li>
1328          </ul>
1329        </li>
1330      </ul> <!-- toc_section -->
1331    </li>
1332    <li>
1333      <span class="toc_section_header"><a href="#section_depth">depth</a></span>
1334      <ul class="toc_section">
1335        <li>
1336          <span class="toc_kind_header">static</span>
1337          <ul class="toc_section">
1338            <li
1339            ><a href="#static_android.depth.maxDepthSamples">android.depth.maxDepthSamples</a></li>
1340            <li
1341            ><a href="#static_android.depth.availableDepthStreamConfigurations">android.depth.availableDepthStreamConfigurations</a></li>
1342            <li
1343            ><a href="#static_android.depth.availableDepthMinFrameDurations">android.depth.availableDepthMinFrameDurations</a></li>
1344            <li
1345            ><a href="#static_android.depth.availableDepthStallDurations">android.depth.availableDepthStallDurations</a></li>
1346            <li
1347            ><a href="#static_android.depth.depthIsExclusive">android.depth.depthIsExclusive</a></li>
1348            <li
1349            ><a href="#static_android.depth.availableRecommendedDepthStreamConfigurations">android.depth.availableRecommendedDepthStreamConfigurations</a></li>
1350            <li
1351            ><a href="#static_android.depth.availableDynamicDepthStreamConfigurations">android.depth.availableDynamicDepthStreamConfigurations</a></li>
1352            <li
1353            ><a href="#static_android.depth.availableDynamicDepthMinFrameDurations">android.depth.availableDynamicDepthMinFrameDurations</a></li>
1354            <li
1355            ><a href="#static_android.depth.availableDynamicDepthStallDurations">android.depth.availableDynamicDepthStallDurations</a></li>
1356            <li
1357            ><a href="#static_android.depth.availableDepthStreamConfigurationsMaximumResolution">android.depth.availableDepthStreamConfigurationsMaximumResolution</a></li>
1358            <li
1359            ><a href="#static_android.depth.availableDepthMinFrameDurationsMaximumResolution">android.depth.availableDepthMinFrameDurationsMaximumResolution</a></li>
1360            <li
1361            ><a href="#static_android.depth.availableDepthStallDurationsMaximumResolution">android.depth.availableDepthStallDurationsMaximumResolution</a></li>
1362            <li
1363            ><a href="#static_android.depth.availableDynamicDepthStreamConfigurationsMaximumResolution">android.depth.availableDynamicDepthStreamConfigurationsMaximumResolution</a></li>
1364            <li
1365            ><a href="#static_android.depth.availableDynamicDepthMinFrameDurationsMaximumResolution">android.depth.availableDynamicDepthMinFrameDurationsMaximumResolution</a></li>
1366            <li
1367            ><a href="#static_android.depth.availableDynamicDepthStallDurationsMaximumResolution">android.depth.availableDynamicDepthStallDurationsMaximumResolution</a></li>
1368          </ul>
1369        </li>
1370      </ul> <!-- toc_section -->
1371    </li>
1372    <li>
1373      <span class="toc_section_header"><a href="#section_logicalMultiCamera">logicalMultiCamera</a></span>
1374      <ul class="toc_section">
1375        <li>
1376          <span class="toc_kind_header">static</span>
1377          <ul class="toc_section">
1378            <li
1379            ><a href="#static_android.logicalMultiCamera.physicalIds">android.logicalMultiCamera.physicalIds</a></li>
1380            <li
1381            ><a href="#static_android.logicalMultiCamera.sensorSyncType">android.logicalMultiCamera.sensorSyncType</a></li>
1382          </ul>
1383        </li>
1384        <li>
1385          <span class="toc_kind_header">dynamic</span>
1386          <ul class="toc_section">
1387            <li
1388            ><a href="#dynamic_android.logicalMultiCamera.activePhysicalId">android.logicalMultiCamera.activePhysicalId</a></li>
1389            <li
1390            ><a href="#dynamic_android.logicalMultiCamera.activePhysicalSensorCropRegion">android.logicalMultiCamera.activePhysicalSensorCropRegion</a></li>
1391          </ul>
1392        </li>
1393      </ul> <!-- toc_section -->
1394    </li>
1395    <li>
1396      <span class="toc_section_header"><a href="#section_distortionCorrection">distortionCorrection</a></span>
1397      <ul class="toc_section">
1398        <li>
1399          <span class="toc_kind_header">controls</span>
1400          <ul class="toc_section">
1401            <li
1402            ><a href="#controls_android.distortionCorrection.mode">android.distortionCorrection.mode</a></li>
1403          </ul>
1404        </li>
1405        <li>
1406          <span class="toc_kind_header">static</span>
1407          <ul class="toc_section">
1408            <li
1409            ><a href="#static_android.distortionCorrection.availableModes">android.distortionCorrection.availableModes</a></li>
1410          </ul>
1411        </li>
1412        <li>
1413          <span class="toc_kind_header">dynamic</span>
1414          <ul class="toc_section">
1415            <li
1416            ><a href="#dynamic_android.distortionCorrection.mode">android.distortionCorrection.mode</a></li>
1417          </ul>
1418        </li>
1419      </ul> <!-- toc_section -->
1420    </li>
1421    <li>
1422      <span class="toc_section_header"><a href="#section_heic">heic</a></span>
1423      <ul class="toc_section">
1424        <li>
1425          <span class="toc_kind_header">static</span>
1426          <ul class="toc_section">
1427
1428            <li
1429            ><a href="#static_android.heic.info.supported">android.heic.info.supported</a></li>
1430            <li
1431            ><a href="#static_android.heic.info.maxJpegAppSegmentsCount">android.heic.info.maxJpegAppSegmentsCount</a></li>
1432
1433            <li
1434            ><a href="#static_android.heic.availableHeicStreamConfigurations">android.heic.availableHeicStreamConfigurations</a></li>
1435            <li
1436            ><a href="#static_android.heic.availableHeicMinFrameDurations">android.heic.availableHeicMinFrameDurations</a></li>
1437            <li
1438            ><a href="#static_android.heic.availableHeicStallDurations">android.heic.availableHeicStallDurations</a></li>
1439            <li
1440            ><a href="#static_android.heic.availableHeicStreamConfigurationsMaximumResolution">android.heic.availableHeicStreamConfigurationsMaximumResolution</a></li>
1441            <li
1442            ><a href="#static_android.heic.availableHeicMinFrameDurationsMaximumResolution">android.heic.availableHeicMinFrameDurationsMaximumResolution</a></li>
1443            <li
1444            ><a href="#static_android.heic.availableHeicStallDurationsMaximumResolution">android.heic.availableHeicStallDurationsMaximumResolution</a></li>
1445            <li
1446            ><a href="#static_android.heic.availableHeicUltraHdrStreamConfigurations">android.heic.availableHeicUltraHdrStreamConfigurations</a></li>
1447            <li
1448            ><a href="#static_android.heic.availableHeicUltraHdrMinFrameDurations">android.heic.availableHeicUltraHdrMinFrameDurations</a></li>
1449            <li
1450            ><a href="#static_android.heic.availableHeicUltraHdrStallDurations">android.heic.availableHeicUltraHdrStallDurations</a></li>
1451            <li
1452            ><a href="#static_android.heic.availableHeicUltraHdrStreamConfigurationsMaximumResolution">android.heic.availableHeicUltraHdrStreamConfigurationsMaximumResolution</a></li>
1453            <li
1454            ><a href="#static_android.heic.availableHeicUltraHdrMinFrameDurationsMaximumResolution">android.heic.availableHeicUltraHdrMinFrameDurationsMaximumResolution</a></li>
1455            <li
1456            ><a href="#static_android.heic.availableHeicUltraHdrStallDurationsMaximumResolution">android.heic.availableHeicUltraHdrStallDurationsMaximumResolution</a></li>
1457          </ul>
1458        </li>
1459      </ul> <!-- toc_section -->
1460    </li>
1461    <li>
1462      <span class="toc_section_header"><a href="#section_automotive">automotive</a></span>
1463      <ul class="toc_section">
1464        <li>
1465          <span class="toc_kind_header">static</span>
1466          <ul class="toc_section">
1467
1468            <li
1469            ><a href="#static_android.automotive.lens.facing">android.automotive.lens.facing</a></li>
1470
1471            <li
1472            ><a href="#static_android.automotive.location">android.automotive.location</a></li>
1473          </ul>
1474        </li>
1475      </ul> <!-- toc_section -->
1476    </li>
1477    <li>
1478      <span class="toc_section_header"><a href="#section_extension">extension</a></span>
1479      <ul class="toc_section">
1480        <li>
1481          <span class="toc_kind_header">controls</span>
1482          <ul class="toc_section">
1483            <li
1484            ><a href="#controls_android.extension.strength">android.extension.strength</a></li>
1485          </ul>
1486        </li>
1487        <li>
1488          <span class="toc_kind_header">dynamic</span>
1489          <ul class="toc_section">
1490            <li
1491            ><a href="#dynamic_android.extension.currentType">android.extension.currentType</a></li>
1492            <li
1493            ><a href="#dynamic_android.extension.strength">android.extension.strength</a></li>
1494            <li
1495            ><a href="#dynamic_android.extension.nightModeIndicator">android.extension.nightModeIndicator</a></li>
1496          </ul>
1497        </li>
1498      </ul> <!-- toc_section -->
1499    </li>
1500    <li>
1501      <span class="toc_section_header"><a href="#section_jpegr">jpegr</a></span>
1502      <ul class="toc_section">
1503        <li>
1504          <span class="toc_kind_header">static</span>
1505          <ul class="toc_section">
1506            <li
1507            ><a href="#static_android.jpegr.availableJpegRStreamConfigurations">android.jpegr.availableJpegRStreamConfigurations</a></li>
1508            <li
1509            ><a href="#static_android.jpegr.availableJpegRMinFrameDurations">android.jpegr.availableJpegRMinFrameDurations</a></li>
1510            <li
1511            ><a href="#static_android.jpegr.availableJpegRStallDurations">android.jpegr.availableJpegRStallDurations</a></li>
1512            <li
1513            ><a href="#static_android.jpegr.availableJpegRStreamConfigurationsMaximumResolution">android.jpegr.availableJpegRStreamConfigurationsMaximumResolution</a></li>
1514            <li
1515            ><a href="#static_android.jpegr.availableJpegRMinFrameDurationsMaximumResolution">android.jpegr.availableJpegRMinFrameDurationsMaximumResolution</a></li>
1516            <li
1517            ><a href="#static_android.jpegr.availableJpegRStallDurationsMaximumResolution">android.jpegr.availableJpegRStallDurationsMaximumResolution</a></li>
1518          </ul>
1519        </li>
1520      </ul> <!-- toc_section -->
1521    </li>
1522    <li>
1523      <span class="toc_section_header"><a href="#section_sharedSession">sharedSession</a></span>
1524      <ul class="toc_section">
1525        <li>
1526          <span class="toc_kind_header">static</span>
1527          <ul class="toc_section">
1528            <li
1529            ><a href="#static_android.sharedSession.colorSpace">android.sharedSession.colorSpace</a></li>
1530            <li
1531            ><a href="#static_android.sharedSession.outputConfigurations">android.sharedSession.outputConfigurations</a></li>
1532            <li
1533            ><a href="#static_android.sharedSession.configuration">android.sharedSession.configuration</a></li>
1534          </ul>
1535        </li>
1536      </ul> <!-- toc_section -->
1537    </li>
1538    <li>
1539      <span class="toc_section_header"><a href="#section_desktopEffects">desktopEffects</a></span>
1540      <ul class="toc_section">
1541        <li>
1542          <span class="toc_kind_header">static</span>
1543          <ul class="toc_section">
1544            <li
1545            ><a href="#static_android.desktopEffects.capabilities">android.desktopEffects.capabilities</a></li>
1546            <li
1547            ><a href="#static_android.desktopEffects.backgroundBlurModes">android.desktopEffects.backgroundBlurModes</a></li>
1548          </ul>
1549        </li>
1550        <li>
1551          <span class="toc_kind_header">controls</span>
1552          <ul class="toc_section">
1553            <li
1554            ><a href="#controls_android.desktopEffects.backgroundBlurMode">android.desktopEffects.backgroundBlurMode</a></li>
1555            <li
1556            ><a href="#controls_android.desktopEffects.faceRetouchMode">android.desktopEffects.faceRetouchMode</a></li>
1557            <li
1558            ><a href="#controls_android.desktopEffects.faceRetouchStrength">android.desktopEffects.faceRetouchStrength</a></li>
1559            <li
1560            ><a href="#controls_android.desktopEffects.portraitRelightMode">android.desktopEffects.portraitRelightMode</a></li>
1561          </ul>
1562        </li>
1563      </ul> <!-- toc_section -->
1564    </li>
1565  </ul>
1566
1567
1568  <h1>Properties</h1>
1569  <table class="properties">
1570
1571    <thead class="thead_dummy">
1572      <tr>
1573        <th class="th_name">Property Name</th>
1574        <th class="th_type">Type</th>
1575        <th class="th_description">Description</th>
1576        <th class="th_units">Units</th>
1577        <th class="th_range">Range</th>
1578        <th class="th_hal_version">HIDL HAL version</th>
1579        <th class="th_tags">Tags</th>
1580      </tr>
1581    </thead> <!-- so that the first occurrence of thead is not
1582                         above the first occurrence of tr -->
1583<!-- <namespace name="android"> -->
1584  <tr><td colspan="7" id="section_colorCorrection" class="section">colorCorrection</td></tr>
1585
1586
1587      <tr><td colspan="7" class="kind">controls</td></tr>
1588
1589      <thead class="entries_header">
1590        <tr>
1591          <th class="th_name">Property Name</th>
1592          <th class="th_type">Type</th>
1593          <th class="th_description">Description</th>
1594          <th class="th_units">Units</th>
1595          <th class="th_range">Range</th>
1596          <th class="th_hal_version">Initial HIDL HAL version</th>
1597          <th class="th_tags">Tags</th>
1598        </tr>
1599      </thead>
1600
1601      <tbody>
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612          <tr class="entry" id="controls_android.colorCorrection.mode">
1613            <td class="entry_name
1614             " rowspan="5">
1615              android.<wbr/>color<wbr/>Correction.<wbr/>mode
1616            </td>
1617            <td class="entry_type">
1618                <span class="entry_type_name entry_type_name_enum">byte</span>
1619
1620              <span class="entry_type_visibility"> [public]</span>
1621
1622
1623              <span class="entry_type_hwlevel">[full] </span>
1624
1625
1626
1627                <ul class="entry_type_enum">
1628                  <li>
1629                    <span class="entry_type_enum_name">TRANSFORM_MATRIX (v3.2)</span>
1630                    <span class="entry_type_enum_notes"><p>Use the <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> matrix
1631and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> to do color conversion.<wbr/></p>
1632<p>All advanced white balance adjustments (not specified
1633by our white balance pipeline) must be disabled.<wbr/></p>
1634<p>If AWB is enabled with <code><a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> != OFF</code>,<wbr/> then
1635TRANSFORM_<wbr/>MATRIX is ignored.<wbr/> The camera device will override
1636this value to either FAST or HIGH_<wbr/>QUALITY.<wbr/></p></span>
1637                  </li>
1638                  <li>
1639                    <span class="entry_type_enum_name">FAST (v3.2)</span>
1640                    <span class="entry_type_enum_notes"><p>Color correction processing must not slow down
1641capture rate relative to sensor raw output.<wbr/></p>
1642<p>Advanced white balance adjustments above and beyond
1643the specified white balance pipeline may be applied.<wbr/></p>
1644<p>If AWB is enabled with <code><a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> != OFF</code>,<wbr/> then
1645the camera device uses the last frame's AWB values
1646(or defaults if AWB has never been run).<wbr/></p></span>
1647                  </li>
1648                  <li>
1649                    <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
1650                    <span class="entry_type_enum_notes"><p>Color correction processing operates at improved
1651quality but the capture rate might be reduced (relative to sensor
1652raw output rate)</p>
1653<p>Advanced white balance adjustments above and beyond
1654the specified white balance pipeline may be applied.<wbr/></p>
1655<p>If AWB is enabled with <code><a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> != OFF</code>,<wbr/> then
1656the camera device uses the last frame's AWB values
1657(or defaults if AWB has never been run).<wbr/></p></span>
1658                  </li>
1659                  <li>
1660                    <span class="entry_type_enum_name">CCT (v3.11)</span>
1661                    <span class="entry_type_enum_notes"><p>Use
1662<a href="#controls_android.colorCorrection.colorTemperature">android.<wbr/>color<wbr/>Correction.<wbr/>color<wbr/>Temperature</a> and
1663<a href="#controls_android.colorCorrection.colorTint">android.<wbr/>color<wbr/>Correction.<wbr/>color<wbr/>Tint</a> to adjust the white balance based
1664on correlated color temperature.<wbr/></p>
1665<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
1666CCT is ignored.<wbr/></p></span>
1667                  </li>
1668                </ul>
1669
1670            </td> <!-- entry_type -->
1671
1672            <td class="entry_description">
1673              <p>The mode control selects how the image data is converted from the
1674sensor's native color into linear sRGB color.<wbr/></p>
1675            </td>
1676
1677            <td class="entry_units">
1678            </td>
1679
1680            <td class="entry_range">
1681              <p>Starting from API level 36,<wbr/> <a href="#static_android.colorCorrection.availableModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Modes</a>
1682can be used to check the list of supported values.<wbr/> Prior to API level 36,<wbr/>
1683TRANSFORM_<wbr/>MATRIX,<wbr/> HIGH_<wbr/>QUALITY,<wbr/> and FAST are guaranteed to be available
1684as valid modes on devices that support this key.<wbr/></p>
1685            </td>
1686
1687            <td class="entry_hal_version">
1688              <p>3.<wbr/>2</p>
1689            </td>
1690
1691            <td class="entry_tags">
1692            </td>
1693
1694          </tr>
1695          <tr class="entries_header">
1696            <th class="th_details" colspan="6">Details</th>
1697          </tr>
1698          <tr class="entry_cont">
1699            <td class="entry_details" colspan="6">
1700              <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
1701control is overridden by the AWB routine.<wbr/> When AWB is disabled,<wbr/> the
1702application controls how the color mapping is performed.<wbr/></p>
1703<p>We define the expected processing pipeline below.<wbr/> For consistency
1704across devices,<wbr/> this is always the case with TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1705<p>When either FAST or HIGH_<wbr/>QUALITY is used,<wbr/> the camera device may
1706do additional processing but <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
1707<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> will still be provided by the
1708camera device (in the results) and be roughly correct.<wbr/></p>
1709<p>Switching to TRANSFORM_<wbr/>MATRIX and using the data provided from
1710FAST or HIGH_<wbr/>QUALITY will yield a picture with the same white point
1711as what was produced by the camera device in the earlier frame.<wbr/></p>
1712<p>The expected processing pipeline is as follows:</p>
1713<p><img alt="White balance processing pipeline" src="images/camera2/metadata/android.colorCorrection.mode/processing_pipeline.png"/></p>
1714<p>The white balance is encoded by two values,<wbr/> a 4-channel white-balance
1715gain vector (applied in the Bayer domain),<wbr/> and a 3x3 color transform
1716matrix (applied after demosaic).<wbr/></p>
1717<p>The 4-channel white-balance gains are defined as:</p>
1718<pre><code><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> = [ R G_<wbr/>even G_<wbr/>odd B ]
1719</code></pre>
1720<p>where <code>G_<wbr/>even</code> is the gain for green pixels on even rows of the
1721output,<wbr/> and <code>G_<wbr/>odd</code> is the gain for green pixels on the odd rows.<wbr/>
1722These may be identical for a given camera device implementation; if
1723the camera device does not support a separate gain for even/<wbr/>odd green
1724channels,<wbr/> it will use the <code>G_<wbr/>even</code> value,<wbr/> and write <code>G_<wbr/>odd</code> equal to
1725<code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
1726<p>The matrices for color transforms are defined as a 9-entry vector:</p>
1727<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 ]
1728</code></pre>
1729<p>which define a transform from input sensor colors,<wbr/> <code>P_<wbr/>in = [ r g b ]</code>,<wbr/>
1730to output linear sRGB,<wbr/> <code>P_<wbr/>out = [ r' g' b' ]</code>,<wbr/></p>
1731<p>with colors as follows:</p>
1732<pre><code>r' = I0r + I1g + I2b
1733g' = I3r + I4g + I5b
1734b' = I6r + I7g + I8b
1735</code></pre>
1736<p>Both the input and output value ranges must match.<wbr/> Overflow/<wbr/>underflow
1737values are clipped to fit within the range.<wbr/></p>
1738            </td>
1739          </tr>
1740
1741          <tr class="entries_header">
1742            <th class="th_details" colspan="6">HAL Implementation Details</th>
1743          </tr>
1744          <tr class="entry_cont">
1745            <td class="entry_details" colspan="6">
1746              <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if color correction control is available
1747on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
1748That is,<wbr/> if the highest quality implementation on the camera device does not slow down
1749capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY should generate the same output.<wbr/></p>
1750            </td>
1751          </tr>
1752
1753          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
1754           <!-- end of entry -->
1755
1756
1757          <tr class="entry" id="controls_android.colorCorrection.transform">
1758            <td class="entry_name
1759             " rowspan="3">
1760              android.<wbr/>color<wbr/>Correction.<wbr/>transform
1761            </td>
1762            <td class="entry_type">
1763                <span class="entry_type_name">rational</span>
1764                <span class="entry_type_container">x</span>
1765
1766                <span class="entry_type_array">
1767                  3 x 3
1768                </span>
1769              <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
1770
1771
1772              <span class="entry_type_hwlevel">[full] </span>
1773
1774
1775                <div class="entry_type_notes">3x3 rational matrix in row-major order</div>
1776
1777
1778            </td> <!-- entry_type -->
1779
1780            <td class="entry_description">
1781              <p>A color transform matrix to use to transform
1782from sensor RGB color space to output linear sRGB color space.<wbr/></p>
1783            </td>
1784
1785            <td class="entry_units">
1786              Unitless scale factors
1787            </td>
1788
1789            <td class="entry_range">
1790            </td>
1791
1792            <td class="entry_hal_version">
1793              <p>3.<wbr/>2</p>
1794            </td>
1795
1796            <td class="entry_tags">
1797            </td>
1798
1799          </tr>
1800          <tr class="entries_header">
1801            <th class="th_details" colspan="6">Details</th>
1802          </tr>
1803          <tr class="entry_cont">
1804            <td class="entry_details" colspan="6">
1805              <p>This matrix is either set by the camera device when the request
1806<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not TRANSFORM_<wbr/>MATRIX,<wbr/> or
1807directly by the application in the request when the
1808<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1809<p>In the latter case,<wbr/> the camera device may round the matrix to account
1810for precision issues; the final rounded matrix should be reported back
1811in this matrix result metadata.<wbr/> The transform should keep the magnitude
1812of the output color values within <code>[0,<wbr/> 1.<wbr/>0]</code> (assuming input color
1813values is within the normalized range <code>[0,<wbr/> 1.<wbr/>0]</code>),<wbr/> or clipping may occur.<wbr/></p>
1814<p>The valid range of each matrix element varies on different devices,<wbr/> but
1815values within [-1.<wbr/>5,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
1816            </td>
1817          </tr>
1818
1819
1820          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
1821           <!-- end of entry -->
1822
1823
1824          <tr class="entry" id="controls_android.colorCorrection.gains">
1825            <td class="entry_name
1826             " rowspan="5">
1827              android.<wbr/>color<wbr/>Correction.<wbr/>gains
1828            </td>
1829            <td class="entry_type">
1830                <span class="entry_type_name">float</span>
1831                <span class="entry_type_container">x</span>
1832
1833                <span class="entry_type_array">
1834                  4
1835                </span>
1836              <span class="entry_type_visibility"> [public as rggbChannelVector]</span>
1837
1838
1839              <span class="entry_type_hwlevel">[full] </span>
1840
1841
1842                <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div>
1843
1844
1845            </td> <!-- entry_type -->
1846
1847            <td class="entry_description">
1848              <p>Gains applying to Bayer raw color channels for
1849white-balance.<wbr/></p>
1850            </td>
1851
1852            <td class="entry_units">
1853              Unitless gain factors
1854            </td>
1855
1856            <td class="entry_range">
1857            </td>
1858
1859            <td class="entry_hal_version">
1860              <p>3.<wbr/>2</p>
1861            </td>
1862
1863            <td class="entry_tags">
1864            </td>
1865
1866          </tr>
1867          <tr class="entries_header">
1868            <th class="th_details" colspan="6">Details</th>
1869          </tr>
1870          <tr class="entry_cont">
1871            <td class="entry_details" colspan="6">
1872              <p>These per-channel gains are either set by the camera device
1873when the request <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not
1874TRANSFORM_<wbr/>MATRIX,<wbr/> or directly by the application in the
1875request when the <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is
1876TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1877<p>The gains in the result metadata are the gains actually
1878applied by the camera device to the current frame.<wbr/></p>
1879<p>The valid range of gains varies on different devices,<wbr/> but gains
1880between [1.<wbr/>0,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/> Even if a given
1881device allows gains below 1.<wbr/>0,<wbr/> this is usually not recommended because
1882this can create color artifacts.<wbr/></p>
1883            </td>
1884          </tr>
1885
1886          <tr class="entries_header">
1887            <th class="th_details" colspan="6">HAL Implementation Details</th>
1888          </tr>
1889          <tr class="entry_cont">
1890            <td class="entry_details" colspan="6">
1891              <p>The 4-channel white-balance gains are defined in
1892the order of <code>[R G_<wbr/>even G_<wbr/>odd B]</code>,<wbr/> where <code>G_<wbr/>even</code> is the gain
1893for green pixels on even rows of the output,<wbr/> and <code>G_<wbr/>odd</code>
1894is the gain for green pixels on the odd rows.<wbr/></p>
1895<p>If a HAL does not support a separate gain for even/<wbr/>odd green
1896channels,<wbr/> it must use the <code>G_<wbr/>even</code> value,<wbr/> and write
1897<code>G_<wbr/>odd</code> equal to <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
1898            </td>
1899          </tr>
1900
1901          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
1902           <!-- end of entry -->
1903
1904
1905          <tr class="entry" id="controls_android.colorCorrection.aberrationMode">
1906            <td class="entry_name
1907             " rowspan="3">
1908              android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode
1909            </td>
1910            <td class="entry_type">
1911                <span class="entry_type_name entry_type_name_enum">byte</span>
1912
1913              <span class="entry_type_visibility"> [public]</span>
1914
1915
1916              <span class="entry_type_hwlevel">[legacy] </span>
1917
1918
1919
1920                <ul class="entry_type_enum">
1921                  <li>
1922                    <span class="entry_type_enum_name">OFF (v3.2)</span>
1923                    <span class="entry_type_enum_notes"><p>No aberration correction is applied.<wbr/></p></span>
1924                  </li>
1925                  <li>
1926                    <span class="entry_type_enum_name">FAST (v3.2)</span>
1927                    <span class="entry_type_enum_notes"><p>Aberration correction will not slow down capture rate
1928relative to sensor raw output.<wbr/></p></span>
1929                  </li>
1930                  <li>
1931                    <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
1932                    <span class="entry_type_enum_notes"><p>Aberration correction operates at improved quality but the capture rate might be
1933reduced (relative to sensor raw output rate)</p></span>
1934                  </li>
1935                </ul>
1936
1937            </td> <!-- entry_type -->
1938
1939            <td class="entry_description">
1940              <p>Mode of operation for the chromatic aberration correction algorithm.<wbr/></p>
1941            </td>
1942
1943            <td class="entry_units">
1944            </td>
1945
1946            <td class="entry_range">
1947              <p><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></p>
1948            </td>
1949
1950            <td class="entry_hal_version">
1951              <p>3.<wbr/>2</p>
1952            </td>
1953
1954            <td class="entry_tags">
1955            </td>
1956
1957          </tr>
1958          <tr class="entries_header">
1959            <th class="th_details" colspan="6">Details</th>
1960          </tr>
1961          <tr class="entry_cont">
1962            <td class="entry_details" colspan="6">
1963              <p>Chromatic (color) aberration is caused by the fact that different wavelengths of light
1964can not focus on the same point after exiting from the lens.<wbr/> This metadata defines
1965the high level control of chromatic aberration correction algorithm,<wbr/> which aims to
1966minimize the chromatic artifacts that may occur along the object boundaries in an
1967image.<wbr/></p>
1968<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean that camera device determined aberration
1969correction will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device will
1970use the highest-quality aberration correction algorithms,<wbr/> even if it slows down
1971capture rate.<wbr/> FAST means the camera device will not slow down capture rate when
1972applying aberration correction.<wbr/></p>
1973<p>LEGACY devices will always be in FAST mode.<wbr/></p>
1974            </td>
1975          </tr>
1976
1977
1978          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
1979           <!-- end of entry -->
1980
1981
1982          <tr class="entry" id="controls_android.colorCorrection.colorTemperature">
1983            <td class="entry_name
1984             " rowspan="3">
1985              android.<wbr/>color<wbr/>Correction.<wbr/>color<wbr/>Temperature
1986            </td>
1987            <td class="entry_type">
1988                <span class="entry_type_name">int32</span>
1989
1990              <span class="entry_type_visibility"> [public]</span>
1991
1992
1993
1994
1995
1996
1997            </td> <!-- entry_type -->
1998
1999            <td class="entry_description">
2000              <p>Specifies the color temperature for CCT mode in Kelvin
2001to adjust the white balance of the image.<wbr/></p>
2002            </td>
2003
2004            <td class="entry_units">
2005              Kelvin
2006            </td>
2007
2008            <td class="entry_range">
2009              <p><a href="#static_android.colorCorrection.colorTemperatureRange">android.<wbr/>color<wbr/>Correction.<wbr/>color<wbr/>Temperature<wbr/>Range</a></p>
2010            </td>
2011
2012            <td class="entry_hal_version">
2013              <p>3.<wbr/>11</p>
2014            </td>
2015
2016            <td class="entry_tags">
2017            </td>
2018
2019          </tr>
2020          <tr class="entries_header">
2021            <th class="th_details" colspan="6">Details</th>
2022          </tr>
2023          <tr class="entry_cont">
2024            <td class="entry_details" colspan="6">
2025              <p>Sets the color temperature in Kelvin units for when
2026<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is CCT to adjust the
2027white balance of the image.<wbr/></p>
2028<p>If CCT mode is enabled without a requested color temperature,<wbr/>
2029a default value will be set by the camera device.<wbr/> The default value can be
2030retrieved by checking the corresponding capture result.<wbr/> Color temperatures
2031requested outside the advertised <a href="#static_android.colorCorrection.colorTemperatureRange">android.<wbr/>color<wbr/>Correction.<wbr/>color<wbr/>Temperature<wbr/>Range</a>
2032will be clamped.<wbr/></p>
2033            </td>
2034          </tr>
2035
2036
2037          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2038           <!-- end of entry -->
2039
2040
2041          <tr class="entry" id="controls_android.colorCorrection.colorTint">
2042            <td class="entry_name
2043             " rowspan="3">
2044              android.<wbr/>color<wbr/>Correction.<wbr/>color<wbr/>Tint
2045            </td>
2046            <td class="entry_type">
2047                <span class="entry_type_name">int32</span>
2048
2049              <span class="entry_type_visibility"> [public]</span>
2050
2051
2052
2053
2054
2055
2056            </td> <!-- entry_type -->
2057
2058            <td class="entry_description">
2059              <p>Specifies the color tint for CCT mode to adjust the white
2060balance of the image.<wbr/></p>
2061            </td>
2062
2063            <td class="entry_units">
2064              D_<wbr/>uv defined as the distance from the Planckian locus on the CIE 1931 xy
2065          chromaticity diagram,<wbr/> with the range ±50 mapping to ±0.<wbr/>01 D_<wbr/>uv
2066            </td>
2067
2068            <td class="entry_range">
2069              <p>The supported range,<wbr/> -50 to +50,<wbr/> corresponds to a D_<wbr/>uv distance
2070of ±0.<wbr/>01 below and above the Planckian locus.<wbr/> Some camera devices may have
2071limitations to achieving the full ±0.<wbr/>01 D_<wbr/>uv range at some color temperatures
2072(e.<wbr/>g.,<wbr/> below 1500K).<wbr/> In these cases,<wbr/> the applied D_<wbr/>uv value may be clamped and
2073the actual color tint will be reported in the <a href="#controls_android.colorCorrection.colorTint">android.<wbr/>color<wbr/>Correction.<wbr/>color<wbr/>Tint</a>
2074result.<wbr/></p>
2075            </td>
2076
2077            <td class="entry_hal_version">
2078              <p>3.<wbr/>11</p>
2079            </td>
2080
2081            <td class="entry_tags">
2082            </td>
2083
2084          </tr>
2085          <tr class="entries_header">
2086            <th class="th_details" colspan="6">Details</th>
2087          </tr>
2088          <tr class="entry_cont">
2089            <td class="entry_details" colspan="6">
2090              <p>Sets the color tint for when <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>
2091is CCT to adjust the white balance of the image.<wbr/></p>
2092<p>If CCT mode is enabled without a requested color tint,<wbr/>
2093a default value will be set by the camera device.<wbr/> The default value can be
2094retrieved by checking the corresponding capture result.<wbr/> Color tints requested
2095outside the supported range will be clamped to the nearest limit (-50 or +50).<wbr/></p>
2096            </td>
2097          </tr>
2098
2099
2100          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2101           <!-- end of entry -->
2102
2103
2104
2105      <!-- end of kind -->
2106      </tbody>
2107      <tr><td colspan="7" class="kind">dynamic</td></tr>
2108
2109      <thead class="entries_header">
2110        <tr>
2111          <th class="th_name">Property Name</th>
2112          <th class="th_type">Type</th>
2113          <th class="th_description">Description</th>
2114          <th class="th_units">Units</th>
2115          <th class="th_range">Range</th>
2116          <th class="th_hal_version">Initial HIDL HAL version</th>
2117          <th class="th_tags">Tags</th>
2118        </tr>
2119      </thead>
2120
2121      <tbody>
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132          <tr class="entry" id="dynamic_android.colorCorrection.mode">
2133            <td class="entry_name
2134             " rowspan="5">
2135              android.<wbr/>color<wbr/>Correction.<wbr/>mode
2136            </td>
2137            <td class="entry_type">
2138                <span class="entry_type_name entry_type_name_enum">byte</span>
2139
2140              <span class="entry_type_visibility"> [public]</span>
2141
2142
2143              <span class="entry_type_hwlevel">[full] </span>
2144
2145
2146
2147                <ul class="entry_type_enum">
2148                  <li>
2149                    <span class="entry_type_enum_name">TRANSFORM_MATRIX (v3.2)</span>
2150                    <span class="entry_type_enum_notes"><p>Use the <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> matrix
2151and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> to do color conversion.<wbr/></p>
2152<p>All advanced white balance adjustments (not specified
2153by our white balance pipeline) must be disabled.<wbr/></p>
2154<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
2155TRANSFORM_<wbr/>MATRIX is ignored.<wbr/> The camera device will override
2156this value to either FAST or HIGH_<wbr/>QUALITY.<wbr/></p></span>
2157                  </li>
2158                  <li>
2159                    <span class="entry_type_enum_name">FAST (v3.2)</span>
2160                    <span class="entry_type_enum_notes"><p>Color correction processing must not slow down
2161capture rate relative to sensor raw output.<wbr/></p>
2162<p>Advanced white balance adjustments above and beyond
2163the specified white balance pipeline may be applied.<wbr/></p>
2164<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
2165the camera device uses the last frame's AWB values
2166(or defaults if AWB has never been run).<wbr/></p></span>
2167                  </li>
2168                  <li>
2169                    <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
2170                    <span class="entry_type_enum_notes"><p>Color correction processing operates at improved
2171quality but the capture rate might be reduced (relative to sensor
2172raw output rate)</p>
2173<p>Advanced white balance adjustments above and beyond
2174the specified white balance pipeline may be applied.<wbr/></p>
2175<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
2176the camera device uses the last frame's AWB values
2177(or defaults if AWB has never been run).<wbr/></p></span>
2178                  </li>
2179                  <li>
2180                    <span class="entry_type_enum_name">CCT (v3.11)</span>
2181                    <span class="entry_type_enum_notes"><p>Use
2182<a href="#controls_android.colorCorrection.colorTemperature">android.<wbr/>color<wbr/>Correction.<wbr/>color<wbr/>Temperature</a> and
2183<a href="#controls_android.colorCorrection.colorTint">android.<wbr/>color<wbr/>Correction.<wbr/>color<wbr/>Tint</a> to adjust the white balance based
2184on correlated color temperature.<wbr/></p>
2185<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
2186CCT is ignored.<wbr/></p></span>
2187                  </li>
2188                </ul>
2189
2190            </td> <!-- entry_type -->
2191
2192            <td class="entry_description">
2193              <p>The mode control selects how the image data is converted from the
2194sensor's native color into linear sRGB color.<wbr/></p>
2195            </td>
2196
2197            <td class="entry_units">
2198            </td>
2199
2200            <td class="entry_range">
2201              <p>Starting from API level 36,<wbr/> <a href="#static_android.colorCorrection.availableModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Modes</a>
2202can be used to check the list of supported values.<wbr/> Prior to API level 36,<wbr/>
2203TRANSFORM_<wbr/>MATRIX,<wbr/> HIGH_<wbr/>QUALITY,<wbr/> and FAST are guaranteed to be available
2204as valid modes on devices that support this key.<wbr/></p>
2205            </td>
2206
2207            <td class="entry_hal_version">
2208              <p>3.<wbr/>2</p>
2209            </td>
2210
2211            <td class="entry_tags">
2212            </td>
2213
2214          </tr>
2215          <tr class="entries_header">
2216            <th class="th_details" colspan="6">Details</th>
2217          </tr>
2218          <tr class="entry_cont">
2219            <td class="entry_details" colspan="6">
2220              <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
2221control is overridden by the AWB routine.<wbr/> When AWB is disabled,<wbr/> the
2222application controls how the color mapping is performed.<wbr/></p>
2223<p>We define the expected processing pipeline below.<wbr/> For consistency
2224across devices,<wbr/> this is always the case with TRANSFORM_<wbr/>MATRIX.<wbr/></p>
2225<p>When either FAST or HIGH_<wbr/>QUALITY is used,<wbr/> the camera device may
2226do additional processing but <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
2227<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> will still be provided by the
2228camera device (in the results) and be roughly correct.<wbr/></p>
2229<p>Switching to TRANSFORM_<wbr/>MATRIX and using the data provided from
2230FAST or HIGH_<wbr/>QUALITY will yield a picture with the same white point
2231as what was produced by the camera device in the earlier frame.<wbr/></p>
2232<p>The expected processing pipeline is as follows:</p>
2233<p><img alt="White balance processing pipeline" src="images/camera2/metadata/android.colorCorrection.mode/processing_pipeline.png"/></p>
2234<p>The white balance is encoded by two values,<wbr/> a 4-channel white-balance
2235gain vector (applied in the Bayer domain),<wbr/> and a 3x3 color transform
2236matrix (applied after demosaic).<wbr/></p>
2237<p>The 4-channel white-balance gains are defined as:</p>
2238<pre><code><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> = [ R G_<wbr/>even G_<wbr/>odd B ]
2239</code></pre>
2240<p>where <code>G_<wbr/>even</code> is the gain for green pixels on even rows of the
2241output,<wbr/> and <code>G_<wbr/>odd</code> is the gain for green pixels on the odd rows.<wbr/>
2242These may be identical for a given camera device implementation; if
2243the camera device does not support a separate gain for even/<wbr/>odd green
2244channels,<wbr/> it will use the <code>G_<wbr/>even</code> value,<wbr/> and write <code>G_<wbr/>odd</code> equal to
2245<code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
2246<p>The matrices for color transforms are defined as a 9-entry vector:</p>
2247<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 ]
2248</code></pre>
2249<p>which define a transform from input sensor colors,<wbr/> <code>P_<wbr/>in = [ r g b ]</code>,<wbr/>
2250to output linear sRGB,<wbr/> <code>P_<wbr/>out = [ r' g' b' ]</code>,<wbr/></p>
2251<p>with colors as follows:</p>
2252<pre><code>r' = I0r + I1g + I2b
2253g' = I3r + I4g + I5b
2254b' = I6r + I7g + I8b
2255</code></pre>
2256<p>Both the input and output value ranges must match.<wbr/> Overflow/<wbr/>underflow
2257values are clipped to fit within the range.<wbr/></p>
2258            </td>
2259          </tr>
2260
2261          <tr class="entries_header">
2262            <th class="th_details" colspan="6">HAL Implementation Details</th>
2263          </tr>
2264          <tr class="entry_cont">
2265            <td class="entry_details" colspan="6">
2266              <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if color correction control is available
2267on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
2268That is,<wbr/> if the highest quality implementation on the camera device does not slow down
2269capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY should generate the same output.<wbr/></p>
2270            </td>
2271          </tr>
2272
2273          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2274           <!-- end of entry -->
2275
2276
2277          <tr class="entry" id="dynamic_android.colorCorrection.transform">
2278            <td class="entry_name
2279             " rowspan="3">
2280              android.<wbr/>color<wbr/>Correction.<wbr/>transform
2281            </td>
2282            <td class="entry_type">
2283                <span class="entry_type_name">rational</span>
2284                <span class="entry_type_container">x</span>
2285
2286                <span class="entry_type_array">
2287                  3 x 3
2288                </span>
2289              <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
2290
2291
2292              <span class="entry_type_hwlevel">[full] </span>
2293
2294
2295                <div class="entry_type_notes">3x3 rational matrix in row-major order</div>
2296
2297
2298            </td> <!-- entry_type -->
2299
2300            <td class="entry_description">
2301              <p>A color transform matrix to use to transform
2302from sensor RGB color space to output linear sRGB color space.<wbr/></p>
2303            </td>
2304
2305            <td class="entry_units">
2306              Unitless scale factors
2307            </td>
2308
2309            <td class="entry_range">
2310            </td>
2311
2312            <td class="entry_hal_version">
2313              <p>3.<wbr/>2</p>
2314            </td>
2315
2316            <td class="entry_tags">
2317            </td>
2318
2319          </tr>
2320          <tr class="entries_header">
2321            <th class="th_details" colspan="6">Details</th>
2322          </tr>
2323          <tr class="entry_cont">
2324            <td class="entry_details" colspan="6">
2325              <p>This matrix is either set by the camera device when the request
2326<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not TRANSFORM_<wbr/>MATRIX,<wbr/> or
2327directly by the application in the request when the
2328<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is TRANSFORM_<wbr/>MATRIX.<wbr/></p>
2329<p>In the latter case,<wbr/> the camera device may round the matrix to account
2330for precision issues; the final rounded matrix should be reported back
2331in this matrix result metadata.<wbr/> The transform should keep the magnitude
2332of the output color values within <code>[0,<wbr/> 1.<wbr/>0]</code> (assuming input color
2333values is within the normalized range <code>[0,<wbr/> 1.<wbr/>0]</code>),<wbr/> or clipping may occur.<wbr/></p>
2334<p>The valid range of each matrix element varies on different devices,<wbr/> but
2335values within [-1.<wbr/>5,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
2336            </td>
2337          </tr>
2338
2339
2340          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2341           <!-- end of entry -->
2342
2343
2344          <tr class="entry" id="dynamic_android.colorCorrection.gains">
2345            <td class="entry_name
2346             " rowspan="5">
2347              android.<wbr/>color<wbr/>Correction.<wbr/>gains
2348            </td>
2349            <td class="entry_type">
2350                <span class="entry_type_name">float</span>
2351                <span class="entry_type_container">x</span>
2352
2353                <span class="entry_type_array">
2354                  4
2355                </span>
2356              <span class="entry_type_visibility"> [public as rggbChannelVector]</span>
2357
2358
2359              <span class="entry_type_hwlevel">[full] </span>
2360
2361
2362                <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div>
2363
2364
2365            </td> <!-- entry_type -->
2366
2367            <td class="entry_description">
2368              <p>Gains applying to Bayer raw color channels for
2369white-balance.<wbr/></p>
2370            </td>
2371
2372            <td class="entry_units">
2373              Unitless gain factors
2374            </td>
2375
2376            <td class="entry_range">
2377            </td>
2378
2379            <td class="entry_hal_version">
2380              <p>3.<wbr/>2</p>
2381            </td>
2382
2383            <td class="entry_tags">
2384            </td>
2385
2386          </tr>
2387          <tr class="entries_header">
2388            <th class="th_details" colspan="6">Details</th>
2389          </tr>
2390          <tr class="entry_cont">
2391            <td class="entry_details" colspan="6">
2392              <p>These per-channel gains are either set by the camera device
2393when the request <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not
2394TRANSFORM_<wbr/>MATRIX,<wbr/> or directly by the application in the
2395request when the <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is
2396TRANSFORM_<wbr/>MATRIX.<wbr/></p>
2397<p>The gains in the result metadata are the gains actually
2398applied by the camera device to the current frame.<wbr/></p>
2399<p>The valid range of gains varies on different devices,<wbr/> but gains
2400between [1.<wbr/>0,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/> Even if a given
2401device allows gains below 1.<wbr/>0,<wbr/> this is usually not recommended because
2402this can create color artifacts.<wbr/></p>
2403            </td>
2404          </tr>
2405
2406          <tr class="entries_header">
2407            <th class="th_details" colspan="6">HAL Implementation Details</th>
2408          </tr>
2409          <tr class="entry_cont">
2410            <td class="entry_details" colspan="6">
2411              <p>The 4-channel white-balance gains are defined in
2412the order of <code>[R G_<wbr/>even G_<wbr/>odd B]</code>,<wbr/> where <code>G_<wbr/>even</code> is the gain
2413for green pixels on even rows of the output,<wbr/> and <code>G_<wbr/>odd</code>
2414is the gain for green pixels on the odd rows.<wbr/></p>
2415<p>If a HAL does not support a separate gain for even/<wbr/>odd green
2416channels,<wbr/> it must use the <code>G_<wbr/>even</code> value,<wbr/> and write
2417<code>G_<wbr/>odd</code> equal to <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
2418            </td>
2419          </tr>
2420
2421          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2422           <!-- end of entry -->
2423
2424
2425          <tr class="entry" id="dynamic_android.colorCorrection.aberrationMode">
2426            <td class="entry_name
2427             " rowspan="3">
2428              android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode
2429            </td>
2430            <td class="entry_type">
2431                <span class="entry_type_name entry_type_name_enum">byte</span>
2432
2433              <span class="entry_type_visibility"> [public]</span>
2434
2435
2436              <span class="entry_type_hwlevel">[legacy] </span>
2437
2438
2439
2440                <ul class="entry_type_enum">
2441                  <li>
2442                    <span class="entry_type_enum_name">OFF (v3.2)</span>
2443                    <span class="entry_type_enum_notes"><p>No aberration correction is applied.<wbr/></p></span>
2444                  </li>
2445                  <li>
2446                    <span class="entry_type_enum_name">FAST (v3.2)</span>
2447                    <span class="entry_type_enum_notes"><p>Aberration correction will not slow down capture rate
2448relative to sensor raw output.<wbr/></p></span>
2449                  </li>
2450                  <li>
2451                    <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
2452                    <span class="entry_type_enum_notes"><p>Aberration correction operates at improved quality but the capture rate might be
2453reduced (relative to sensor raw output rate)</p></span>
2454                  </li>
2455                </ul>
2456
2457            </td> <!-- entry_type -->
2458
2459            <td class="entry_description">
2460              <p>Mode of operation for the chromatic aberration correction algorithm.<wbr/></p>
2461            </td>
2462
2463            <td class="entry_units">
2464            </td>
2465
2466            <td class="entry_range">
2467              <p><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></p>
2468            </td>
2469
2470            <td class="entry_hal_version">
2471              <p>3.<wbr/>2</p>
2472            </td>
2473
2474            <td class="entry_tags">
2475            </td>
2476
2477          </tr>
2478          <tr class="entries_header">
2479            <th class="th_details" colspan="6">Details</th>
2480          </tr>
2481          <tr class="entry_cont">
2482            <td class="entry_details" colspan="6">
2483              <p>Chromatic (color) aberration is caused by the fact that different wavelengths of light
2484can not focus on the same point after exiting from the lens.<wbr/> This metadata defines
2485the high level control of chromatic aberration correction algorithm,<wbr/> which aims to
2486minimize the chromatic artifacts that may occur along the object boundaries in an
2487image.<wbr/></p>
2488<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean that camera device determined aberration
2489correction will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device will
2490use the highest-quality aberration correction algorithms,<wbr/> even if it slows down
2491capture rate.<wbr/> FAST means the camera device will not slow down capture rate when
2492applying aberration correction.<wbr/></p>
2493<p>LEGACY devices will always be in FAST mode.<wbr/></p>
2494            </td>
2495          </tr>
2496
2497
2498          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2499           <!-- end of entry -->
2500
2501
2502          <tr class="entry" id="dynamic_android.colorCorrection.colorTemperature">
2503            <td class="entry_name
2504             " rowspan="3">
2505              android.<wbr/>color<wbr/>Correction.<wbr/>color<wbr/>Temperature
2506            </td>
2507            <td class="entry_type">
2508                <span class="entry_type_name">int32</span>
2509
2510              <span class="entry_type_visibility"> [public]</span>
2511
2512
2513
2514
2515
2516
2517            </td> <!-- entry_type -->
2518
2519            <td class="entry_description">
2520              <p>Specifies the color temperature for CCT mode in Kelvin
2521to adjust the white balance of the image.<wbr/></p>
2522            </td>
2523
2524            <td class="entry_units">
2525              Kelvin
2526            </td>
2527
2528            <td class="entry_range">
2529              <p><a href="#static_android.colorCorrection.colorTemperatureRange">android.<wbr/>color<wbr/>Correction.<wbr/>color<wbr/>Temperature<wbr/>Range</a></p>
2530            </td>
2531
2532            <td class="entry_hal_version">
2533              <p>3.<wbr/>11</p>
2534            </td>
2535
2536            <td class="entry_tags">
2537            </td>
2538
2539          </tr>
2540          <tr class="entries_header">
2541            <th class="th_details" colspan="6">Details</th>
2542          </tr>
2543          <tr class="entry_cont">
2544            <td class="entry_details" colspan="6">
2545              <p>Sets the color temperature in Kelvin units for when
2546<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is CCT to adjust the
2547white balance of the image.<wbr/></p>
2548<p>If CCT mode is enabled without a requested color temperature,<wbr/>
2549a default value will be set by the camera device.<wbr/> The default value can be
2550retrieved by checking the corresponding capture result.<wbr/> Color temperatures
2551requested outside the advertised <a href="#static_android.colorCorrection.colorTemperatureRange">android.<wbr/>color<wbr/>Correction.<wbr/>color<wbr/>Temperature<wbr/>Range</a>
2552will be clamped.<wbr/></p>
2553            </td>
2554          </tr>
2555
2556
2557          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2558           <!-- end of entry -->
2559
2560
2561          <tr class="entry" id="dynamic_android.colorCorrection.colorTint">
2562            <td class="entry_name
2563             " rowspan="3">
2564              android.<wbr/>color<wbr/>Correction.<wbr/>color<wbr/>Tint
2565            </td>
2566            <td class="entry_type">
2567                <span class="entry_type_name">int32</span>
2568
2569              <span class="entry_type_visibility"> [public]</span>
2570
2571
2572
2573
2574
2575
2576            </td> <!-- entry_type -->
2577
2578            <td class="entry_description">
2579              <p>Specifies the color tint for CCT mode to adjust the white
2580balance of the image.<wbr/></p>
2581            </td>
2582
2583            <td class="entry_units">
2584              D_<wbr/>uv defined as the distance from the Planckian locus on the CIE 1931 xy
2585          chromaticity diagram,<wbr/> with the range ±50 mapping to ±0.<wbr/>01 D_<wbr/>uv
2586            </td>
2587
2588            <td class="entry_range">
2589              <p>The supported range,<wbr/> -50 to +50,<wbr/> corresponds to a D_<wbr/>uv distance
2590of ±0.<wbr/>01 below and above the Planckian locus.<wbr/> Some camera devices may have
2591limitations to achieving the full ±0.<wbr/>01 D_<wbr/>uv range at some color temperatures
2592(e.<wbr/>g.,<wbr/> below 1500K).<wbr/> In these cases,<wbr/> the applied D_<wbr/>uv value may be clamped and
2593the actual color tint will be reported in the <a href="#controls_android.colorCorrection.colorTint">android.<wbr/>color<wbr/>Correction.<wbr/>color<wbr/>Tint</a>
2594result.<wbr/></p>
2595            </td>
2596
2597            <td class="entry_hal_version">
2598              <p>3.<wbr/>11</p>
2599            </td>
2600
2601            <td class="entry_tags">
2602            </td>
2603
2604          </tr>
2605          <tr class="entries_header">
2606            <th class="th_details" colspan="6">Details</th>
2607          </tr>
2608          <tr class="entry_cont">
2609            <td class="entry_details" colspan="6">
2610              <p>Sets the color tint for when <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>
2611is CCT to adjust the white balance of the image.<wbr/></p>
2612<p>If CCT mode is enabled without a requested color tint,<wbr/>
2613a default value will be set by the camera device.<wbr/> The default value can be
2614retrieved by checking the corresponding capture result.<wbr/> Color tints requested
2615outside the supported range will be clamped to the nearest limit (-50 or +50).<wbr/></p>
2616            </td>
2617          </tr>
2618
2619
2620          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2621           <!-- end of entry -->
2622
2623
2624
2625      <!-- end of kind -->
2626      </tbody>
2627      <tr><td colspan="7" class="kind">static</td></tr>
2628
2629      <thead class="entries_header">
2630        <tr>
2631          <th class="th_name">Property Name</th>
2632          <th class="th_type">Type</th>
2633          <th class="th_description">Description</th>
2634          <th class="th_units">Units</th>
2635          <th class="th_range">Range</th>
2636          <th class="th_hal_version">Initial HIDL HAL version</th>
2637          <th class="th_tags">Tags</th>
2638        </tr>
2639      </thead>
2640
2641      <tbody>
2642
2643
2644
2645
2646
2647
2648
2649
2650
2651
2652          <tr class="entry" id="static_android.colorCorrection.availableAberrationModes">
2653            <td class="entry_name
2654             " rowspan="5">
2655              android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes
2656            </td>
2657            <td class="entry_type">
2658                <span class="entry_type_name">byte</span>
2659                <span class="entry_type_container">x</span>
2660
2661                <span class="entry_type_array">
2662                  n
2663                </span>
2664              <span class="entry_type_visibility"> [public as enumList]</span>
2665
2666
2667              <span class="entry_type_hwlevel">[legacy] </span>
2668
2669
2670                <div class="entry_type_notes">list of enums</div>
2671
2672
2673            </td> <!-- entry_type -->
2674
2675            <td class="entry_description">
2676              <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
2677supported by this camera device.<wbr/></p>
2678            </td>
2679
2680            <td class="entry_units">
2681            </td>
2682
2683            <td class="entry_range">
2684              <p>Any value listed in <a href="#controls_android.colorCorrection.aberrationMode">android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode</a></p>
2685            </td>
2686
2687            <td class="entry_hal_version">
2688              <p>3.<wbr/>2</p>
2689            </td>
2690
2691            <td class="entry_tags">
2692              <ul class="entry_tags">
2693                  <li><a href="#tag_V1">V1</a></li>
2694              </ul>
2695            </td>
2696
2697          </tr>
2698          <tr class="entries_header">
2699            <th class="th_details" colspan="6">Details</th>
2700          </tr>
2701          <tr class="entry_cont">
2702            <td class="entry_details" colspan="6">
2703              <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
2704aberration correction modes are available for a device,<wbr/> this list will solely include
2705OFF mode.<wbr/> All camera devices will support either OFF or FAST mode.<wbr/></p>
2706<p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always list
2707OFF mode.<wbr/> This includes all FULL level devices.<wbr/></p>
2708<p>LEGACY devices will always only support FAST mode.<wbr/></p>
2709            </td>
2710          </tr>
2711
2712          <tr class="entries_header">
2713            <th class="th_details" colspan="6">HAL Implementation Details</th>
2714          </tr>
2715          <tr class="entry_cont">
2716            <td class="entry_details" colspan="6">
2717              <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if chromatic aberration control is available
2718on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
2719That is,<wbr/> if the highest quality implementation on the camera device does not slow down
2720capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
2721            </td>
2722          </tr>
2723
2724          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2725           <!-- end of entry -->
2726
2727
2728          <tr class="entry" id="static_android.colorCorrection.colorTemperatureRange">
2729            <td class="entry_name
2730             " rowspan="3">
2731              android.<wbr/>color<wbr/>Correction.<wbr/>color<wbr/>Temperature<wbr/>Range
2732            </td>
2733            <td class="entry_type">
2734                <span class="entry_type_name">int32</span>
2735                <span class="entry_type_container">x</span>
2736
2737                <span class="entry_type_array">
2738                  2
2739                </span>
2740              <span class="entry_type_visibility"> [public as rangeInt]</span>
2741
2742
2743
2744
2745
2746
2747            </td> <!-- entry_type -->
2748
2749            <td class="entry_description">
2750              <p>The range of supported color temperature values for
2751<a href="#controls_android.colorCorrection.colorTemperature">android.<wbr/>color<wbr/>Correction.<wbr/>color<wbr/>Temperature</a>.<wbr/></p>
2752            </td>
2753
2754            <td class="entry_units">
2755            </td>
2756
2757            <td class="entry_range">
2758              <p>The minimum supported range will be [2856K,<wbr/>6500K].<wbr/> The maximum supported
2759range will be [1000K,<wbr/>40000K].<wbr/></p>
2760            </td>
2761
2762            <td class="entry_hal_version">
2763              <p>3.<wbr/>11</p>
2764            </td>
2765
2766            <td class="entry_tags">
2767            </td>
2768
2769          </tr>
2770          <tr class="entries_header">
2771            <th class="th_details" colspan="6">Details</th>
2772          </tr>
2773          <tr class="entry_cont">
2774            <td class="entry_details" colspan="6">
2775              <p>This key lists the valid range of color temperature values for
2776<a href="#controls_android.colorCorrection.colorTemperature">android.<wbr/>color<wbr/>Correction.<wbr/>color<wbr/>Temperature</a> supported by this camera device.<wbr/></p>
2777<p>This key will be null on devices that do not support CCT mode for
2778<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/></p>
2779            </td>
2780          </tr>
2781
2782
2783          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2784           <!-- end of entry -->
2785
2786
2787          <tr class="entry" id="static_android.colorCorrection.availableModes">
2788            <td class="entry_name
2789             " rowspan="3">
2790              android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Modes
2791            </td>
2792            <td class="entry_type">
2793                <span class="entry_type_name">byte</span>
2794                <span class="entry_type_container">x</span>
2795
2796                <span class="entry_type_array">
2797                  n
2798                </span>
2799              <span class="entry_type_visibility"> [public as enumList]</span>
2800
2801
2802
2803
2804                <div class="entry_type_notes">list of enums</div>
2805
2806
2807            </td> <!-- entry_type -->
2808
2809            <td class="entry_description">
2810              <p>List of color correction modes for <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> that are
2811supported by this camera device.<wbr/></p>
2812            </td>
2813
2814            <td class="entry_units">
2815            </td>
2816
2817            <td class="entry_range">
2818              <p>Any value listed in <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a></p>
2819            </td>
2820
2821            <td class="entry_hal_version">
2822              <p>3.<wbr/>11</p>
2823            </td>
2824
2825            <td class="entry_tags">
2826            </td>
2827
2828          </tr>
2829          <tr class="entries_header">
2830            <th class="th_details" colspan="6">Details</th>
2831          </tr>
2832          <tr class="entry_cont">
2833            <td class="entry_details" colspan="6">
2834              <p>This key lists the valid modes for <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/> If no
2835color correction modes are available for a device,<wbr/> this key will be null.<wbr/></p>
2836<p>Camera devices that have a FULL hardware level will always include at least
2837FAST,<wbr/> HIGH_<wbr/>QUALITY,<wbr/> and TRANSFORM_<wbr/>MATRIX modes.<wbr/></p>
2838            </td>
2839          </tr>
2840
2841
2842          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2843           <!-- end of entry -->
2844
2845
2846
2847      <!-- end of kind -->
2848      </tbody>
2849
2850  <!-- end of section -->
2851  <tr><td colspan="7" id="section_control" class="section">control</td></tr>
2852
2853
2854      <tr><td colspan="7" class="kind">controls</td></tr>
2855
2856      <thead class="entries_header">
2857        <tr>
2858          <th class="th_name">Property Name</th>
2859          <th class="th_type">Type</th>
2860          <th class="th_description">Description</th>
2861          <th class="th_units">Units</th>
2862          <th class="th_range">Range</th>
2863          <th class="th_hal_version">Initial HIDL HAL version</th>
2864          <th class="th_tags">Tags</th>
2865        </tr>
2866      </thead>
2867
2868      <tbody>
2869
2870
2871
2872
2873
2874
2875
2876
2877
2878
2879          <tr class="entry" id="controls_android.control.aeAntibandingMode">
2880            <td class="entry_name
2881             " rowspan="5">
2882              android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode
2883            </td>
2884            <td class="entry_type">
2885                <span class="entry_type_name entry_type_name_enum">byte</span>
2886
2887              <span class="entry_type_visibility"> [public]</span>
2888
2889
2890              <span class="entry_type_hwlevel">[legacy] </span>
2891
2892
2893
2894                <ul class="entry_type_enum">
2895                  <li>
2896                    <span class="entry_type_enum_name">OFF (v3.2)</span>
2897                    <span class="entry_type_enum_notes"><p>The camera device will not adjust exposure duration to
2898avoid banding problems.<wbr/></p></span>
2899                  </li>
2900                  <li>
2901                    <span class="entry_type_enum_name">50HZ (v3.2)</span>
2902                    <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
2903avoid banding problems with 50Hz illumination sources.<wbr/></p></span>
2904                  </li>
2905                  <li>
2906                    <span class="entry_type_enum_name">60HZ (v3.2)</span>
2907                    <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
2908avoid banding problems with 60Hz illumination
2909sources.<wbr/></p></span>
2910                  </li>
2911                  <li>
2912                    <span class="entry_type_enum_name">AUTO (v3.2)</span>
2913                    <span class="entry_type_enum_notes"><p>The camera device will automatically adapt its
2914antibanding routine to the current illumination
2915condition.<wbr/> This is the default mode if AUTO is
2916available on given camera device.<wbr/></p></span>
2917                  </li>
2918                </ul>
2919
2920            </td> <!-- entry_type -->
2921
2922            <td class="entry_description">
2923              <p>The desired setting for the camera device's auto-exposure
2924algorithm's antibanding compensation.<wbr/></p>
2925            </td>
2926
2927            <td class="entry_units">
2928            </td>
2929
2930            <td class="entry_range">
2931              <p><a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a></p>
2932            </td>
2933
2934            <td class="entry_hal_version">
2935              <p>3.<wbr/>2</p>
2936            </td>
2937
2938            <td class="entry_tags">
2939              <ul class="entry_tags">
2940                  <li><a href="#tag_BC">BC</a></li>
2941              </ul>
2942            </td>
2943
2944          </tr>
2945          <tr class="entries_header">
2946            <th class="th_details" colspan="6">Details</th>
2947          </tr>
2948          <tr class="entry_cont">
2949            <td class="entry_details" colspan="6">
2950              <p>Some kinds of lighting fixtures,<wbr/> such as some fluorescent
2951lights,<wbr/> flicker at the rate of the power supply frequency
2952(60Hz or 50Hz,<wbr/> depending on country).<wbr/> While this is
2953typically not noticeable to a person,<wbr/> it can be visible to
2954a camera device.<wbr/> If a camera sets its exposure time to the
2955wrong value,<wbr/> the flicker may become visible in the
2956viewfinder as flicker or in a final captured image,<wbr/> as a
2957set of variable-brightness bands across the image.<wbr/></p>
2958<p>Therefore,<wbr/> the auto-exposure routines of camera devices
2959include antibanding routines that ensure that the chosen
2960exposure value will not cause such banding.<wbr/> The choice of
2961exposure time depends on the rate of flicker,<wbr/> which the
2962camera device can detect automatically,<wbr/> or the expected
2963rate can be selected by the application using this
2964control.<wbr/></p>
2965<p>A given camera device may not support all of the possible
2966options for the antibanding mode.<wbr/> The
2967<a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a> key contains
2968the available modes for a given camera device.<wbr/></p>
2969<p>AUTO mode is the default if it is available on given
2970camera device.<wbr/> When AUTO mode is not available,<wbr/> the
2971default will be either 50HZ or 60HZ,<wbr/> and both 50HZ
2972and 60HZ will be available.<wbr/></p>
2973<p>If manual exposure control is enabled (by setting
2974<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/>
2975then this setting has no effect,<wbr/> and the application must
2976ensure it selects exposure times that do not cause banding
2977issues.<wbr/> The <a href="#dynamic_android.statistics.sceneFlicker">android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker</a> key can assist
2978the application in this.<wbr/></p>
2979            </td>
2980          </tr>
2981
2982          <tr class="entries_header">
2983            <th class="th_details" colspan="6">HAL Implementation Details</th>
2984          </tr>
2985          <tr class="entry_cont">
2986            <td class="entry_details" colspan="6">
2987              <p>For all capture request templates,<wbr/> this field must be set
2988to AUTO if AUTO mode is available.<wbr/> If AUTO is not available,<wbr/>
2989the default must be either 50HZ or 60HZ,<wbr/> and both 50HZ and
299060HZ must be available.<wbr/></p>
2991<p>If manual exposure control is enabled (by setting
2992<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/>
2993then the exposure values provided by the application must not be
2994adjusted for antibanding.<wbr/></p>
2995            </td>
2996          </tr>
2997
2998          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2999           <!-- end of entry -->
3000
3001
3002          <tr class="entry" id="controls_android.control.aeExposureCompensation">
3003            <td class="entry_name
3004             " rowspan="3">
3005              android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation
3006            </td>
3007            <td class="entry_type">
3008                <span class="entry_type_name">int32</span>
3009
3010              <span class="entry_type_visibility"> [public]</span>
3011
3012
3013              <span class="entry_type_hwlevel">[legacy] </span>
3014
3015
3016
3017
3018            </td> <!-- entry_type -->
3019
3020            <td class="entry_description">
3021              <p>Adjustment to auto-exposure (AE) target image
3022brightness.<wbr/></p>
3023            </td>
3024
3025            <td class="entry_units">
3026              Compensation steps
3027            </td>
3028
3029            <td class="entry_range">
3030              <p><a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a></p>
3031            </td>
3032
3033            <td class="entry_hal_version">
3034              <p>3.<wbr/>2</p>
3035            </td>
3036
3037            <td class="entry_tags">
3038              <ul class="entry_tags">
3039                  <li><a href="#tag_BC">BC</a></li>
3040              </ul>
3041            </td>
3042
3043          </tr>
3044          <tr class="entries_header">
3045            <th class="th_details" colspan="6">Details</th>
3046          </tr>
3047          <tr class="entry_cont">
3048            <td class="entry_details" colspan="6">
3049              <p>The adjustment is measured as a count of steps,<wbr/> with the
3050step size defined by <a href="#static_android.control.aeCompensationStep">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step</a> and the
3051allowed range by <a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a>.<wbr/></p>
3052<p>For example,<wbr/> if the exposure value (EV) step is 0.<wbr/>333,<wbr/> '6'
3053will mean an exposure compensation of +2 EV; -3 will mean an
3054exposure compensation of -1 EV.<wbr/> One EV represents a doubling
3055of image brightness.<wbr/> Note that this control will only be
3056effective if <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>!=</code> OFF.<wbr/> This control
3057will take effect even when <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> <code>== true</code>.<wbr/></p>
3058<p>In the event of exposure compensation value being changed,<wbr/> camera device
3059may take several frames to reach the newly requested exposure target.<wbr/>
3060During that time,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> field will be in the SEARCHING
3061state.<wbr/> Once the new exposure target is reached,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> will
3062change from SEARCHING to either CONVERGED,<wbr/> LOCKED (if AE lock is enabled),<wbr/> or
3063FLASH_<wbr/>REQUIRED (if the scene is too dark for still capture).<wbr/></p>
3064            </td>
3065          </tr>
3066
3067
3068          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3069           <!-- end of entry -->
3070
3071
3072          <tr class="entry" id="controls_android.control.aeLock">
3073            <td class="entry_name
3074             " rowspan="3">
3075              android.<wbr/>control.<wbr/>ae<wbr/>Lock
3076            </td>
3077            <td class="entry_type">
3078                <span class="entry_type_name entry_type_name_enum">byte</span>
3079
3080              <span class="entry_type_visibility"> [public as boolean]</span>
3081
3082
3083              <span class="entry_type_hwlevel">[legacy] </span>
3084
3085
3086
3087                <ul class="entry_type_enum">
3088                  <li>
3089                    <span class="entry_type_enum_name">OFF (v3.2)</span>
3090                    <span class="entry_type_enum_notes"><p>Auto-exposure lock is disabled; the AE algorithm
3091is free to update its parameters.<wbr/></p></span>
3092                  </li>
3093                  <li>
3094                    <span class="entry_type_enum_name">ON (v3.2)</span>
3095                    <span class="entry_type_enum_notes"><p>Auto-exposure lock is enabled; the AE algorithm
3096must not update the exposure and sensitivity parameters
3097while the lock is active.<wbr/></p>
3098<p><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a> setting changes
3099will still take effect while auto-exposure is locked.<wbr/></p>
3100<p>Some rare LEGACY devices may not support
3101this,<wbr/> in which case the value will always be overridden to OFF.<wbr/></p></span>
3102                  </li>
3103                </ul>
3104
3105            </td> <!-- entry_type -->
3106
3107            <td class="entry_description">
3108              <p>Whether auto-exposure (AE) is currently locked to its latest
3109calculated values.<wbr/></p>
3110            </td>
3111
3112            <td class="entry_units">
3113            </td>
3114
3115            <td class="entry_range">
3116            </td>
3117
3118            <td class="entry_hal_version">
3119              <p>3.<wbr/>2</p>
3120            </td>
3121
3122            <td class="entry_tags">
3123              <ul class="entry_tags">
3124                  <li><a href="#tag_BC">BC</a></li>
3125              </ul>
3126            </td>
3127
3128          </tr>
3129          <tr class="entries_header">
3130            <th class="th_details" colspan="6">Details</th>
3131          </tr>
3132          <tr class="entry_cont">
3133            <td class="entry_details" colspan="6">
3134              <p>When set to <code>true</code> (ON),<wbr/> the AE algorithm is locked to its latest parameters,<wbr/>
3135and will not change exposure settings until the lock is set to <code>false</code> (OFF).<wbr/></p>
3136<p>Note that even when AE is locked,<wbr/> the flash may be fired if
3137the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is ON_<wbr/>AUTO_<wbr/>FLASH /<wbr/>
3138ON_<wbr/>ALWAYS_<wbr/>FLASH /<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE.<wbr/></p>
3139<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
3140is ON,<wbr/> the camera device will still adjust its exposure value.<wbr/></p>
3141<p>If AE precapture is triggered (see <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>)
3142when AE is already locked,<wbr/> the camera device will not change the exposure time
3143(<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>)
3144parameters.<wbr/> The flash may be fired if the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>
3145is ON_<wbr/>AUTO_<wbr/>FLASH/<wbr/>ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE and the scene is too dark.<wbr/> If the
3146<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/>
3147Similarly,<wbr/> AE precapture trigger CANCEL has no effect when AE is already locked.<wbr/></p>
3148<p>When an AE precapture sequence is triggered,<wbr/> AE unlock will not be able to unlock
3149the AE if AE is locked by the camera device internally during precapture metering
3150sequence In other words,<wbr/> submitting requests with AE unlock has no effect for an
3151ongoing precapture metering sequence.<wbr/> Otherwise,<wbr/> the precapture metering sequence
3152will never succeed in a sequence of preview requests where AE lock is always set
3153to <code>false</code>.<wbr/></p>
3154<p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that
3155get locked do not necessarily correspond to the settings that were present in the
3156latest capture result received from the camera device,<wbr/> since additional captures
3157and AE updates may have occurred even before the result was sent out.<wbr/> If an
3158application is switching between automatic and manual control and wishes to eliminate
3159any flicker during the switch,<wbr/> the following procedure is recommended:</p>
3160<ol>
3161<li>Starting in auto-AE mode:</li>
3162<li>Lock AE</li>
3163<li>Wait for the first result to be output that has the AE locked</li>
3164<li>Copy exposure settings from that result into a request,<wbr/> set the request to manual AE</li>
3165<li>Submit the capture request,<wbr/> proceed to run manual AE as desired.<wbr/></li>
3166</ol>
3167<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>
3168            </td>
3169          </tr>
3170
3171
3172          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3173           <!-- end of entry -->
3174
3175
3176          <tr class="entry" id="controls_android.control.aeMode">
3177            <td class="entry_name
3178             " rowspan="3">
3179              android.<wbr/>control.<wbr/>ae<wbr/>Mode
3180            </td>
3181            <td class="entry_type">
3182                <span class="entry_type_name entry_type_name_enum">byte</span>
3183
3184              <span class="entry_type_visibility"> [public]</span>
3185
3186
3187              <span class="entry_type_hwlevel">[legacy] </span>
3188
3189
3190
3191                <ul class="entry_type_enum">
3192                  <li>
3193                    <span class="entry_type_enum_name">OFF (v3.2)</span>
3194                    <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is disabled.<wbr/></p>
3195<p>The application-selected <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
3196<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> and
3197<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are used by the camera
3198device,<wbr/> along with android.<wbr/>flash.<wbr/>* fields,<wbr/> if there's
3199a flash unit for this camera device.<wbr/></p>
3200<p>Note that auto-white balance (AWB) and auto-focus (AF)
3201behavior is device dependent when AE is in OFF mode.<wbr/>
3202To have consistent behavior across different devices,<wbr/>
3203it is recommended to either set AWB and AF to OFF mode
3204or lock AWB and AF before setting AE to OFF.<wbr/>
3205See <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/>
3206<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>
3207for more details.<wbr/></p>
3208<p>LEGACY devices do not support the OFF mode and will
3209override attempts to use this value to ON.<wbr/></p></span>
3210                  </li>
3211                  <li>
3212                    <span class="entry_type_enum_name">ON (v3.2)</span>
3213                    <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is active,<wbr/>
3214with no flash control.<wbr/></p>
3215<p>The application's values for
3216<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
3217<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
3218<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are ignored.<wbr/> The
3219application has control over the various
3220android.<wbr/>flash.<wbr/>* fields.<wbr/></p>
3221<p>If the device supports manual flash strength control,<wbr/> i.<wbr/>e.,<wbr/>
3222if <a href="#static_android.flash.singleStrengthMaxLevel">android.<wbr/>flash.<wbr/>single<wbr/>Strength<wbr/>Max<wbr/>Level</a> and
3223<a href="#static_android.flash.torchStrengthMaxLevel">android.<wbr/>flash.<wbr/>torch<wbr/>Strength<wbr/>Max<wbr/>Level</a> are greater than 1,<wbr/> then
3224the auto-exposure (AE) precapture metering sequence should be
3225triggered for the configured flash mode and strength to avoid
3226the image being incorrectly exposed at different
3227<a href="#controls_android.flash.strengthLevel">android.<wbr/>flash.<wbr/>strength<wbr/>Level</a>.<wbr/></p></span>
3228                  </li>
3229                  <li>
3230                    <span class="entry_type_enum_name">ON_AUTO_FLASH (v3.2)</span>
3231                    <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
3232the camera's flash unit,<wbr/> firing it in low-light
3233conditions.<wbr/></p>
3234<p>The flash may be fired during a precapture sequence
3235(triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and
3236may be fired for captures for which the
3237<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to
3238STILL_<wbr/>CAPTURE</p></span>
3239                  </li>
3240                  <li>
3241                    <span class="entry_type_enum_name">ON_ALWAYS_FLASH (v3.2)</span>
3242                    <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
3243the camera's flash unit,<wbr/> always firing it for still
3244captures.<wbr/></p>
3245<p>The flash may be fired during a precapture sequence
3246(triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and
3247will always be fired for captures for which the
3248<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to
3249STILL_<wbr/>CAPTURE</p></span>
3250                  </li>
3251                  <li>
3252                    <span class="entry_type_enum_name">ON_AUTO_FLASH_REDEYE (v3.2)</span>
3253                    <span class="entry_type_enum_notes"><p>Like ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> but with automatic red eye
3254reduction.<wbr/></p>
3255<p>If deemed necessary by the camera device,<wbr/> a red eye
3256reduction flash will fire during the precapture
3257sequence.<wbr/></p></span>
3258                  </li>
3259                  <li>
3260                    <span class="entry_type_enum_name">ON_EXTERNAL_FLASH (v3.3)</span>
3261                    <span class="entry_type_enum_notes"><p>An external flash has been turned on.<wbr/></p>
3262<p>It informs the camera device that an external flash has been turned on,<wbr/> and that
3263metering (and continuous focus if active) should be quickly recalculated to account
3264for the external flash.<wbr/> Otherwise,<wbr/> this mode acts like ON.<wbr/></p>
3265<p>When the external flash is turned off,<wbr/> AE mode should be changed to one of the
3266other available AE modes.<wbr/></p>
3267<p>If the camera device supports AE external flash mode,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> must
3268be FLASH_<wbr/>REQUIRED after the camera device finishes AE scan and it's too dark without
3269flash.<wbr/></p></span>
3270                  </li>
3271                  <li>
3272                    <span class="entry_type_enum_name">ON_LOW_LIGHT_BOOST_BRIGHTNESS_PRIORITY (v3.10)</span>
3273                    <span class="entry_type_enum_optional">[optional]</span>
3274                    <span class="entry_type_enum_notes"><p>Like 'ON' but applies additional brightness boost in low light scenes.<wbr/></p>
3275<p>When the scene lighting conditions are within the range defined by
3276<a href="#static_android.control.lowLightBoostInfoLuminanceRange">android.<wbr/>control.<wbr/>low<wbr/>Light<wbr/>Boost<wbr/>Info<wbr/>Luminance<wbr/>Range</a> this mode will apply additional
3277brightness boost.<wbr/></p>
3278<p>This mode will automatically adjust the intensity of low light boost applied
3279according to the scene lighting conditions.<wbr/> A darker scene will receive more boost
3280while a brighter scene will receive less boost.<wbr/></p>
3281<p>This mode can ignore the set target frame rate to allow more light to be captured
3282which can result in choppier motion.<wbr/> The frame rate can extend to lower than the
3283<a href="#static_android.control.aeAvailableTargetFpsRanges">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Target<wbr/>Fps<wbr/>Ranges</a> but will not go below 10 FPS.<wbr/> This mode
3284can also increase the sensor sensitivity gain which can result in increased luma
3285and chroma noise.<wbr/> The sensor sensitivity gain can extend to higher values beyond
3286<a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a>.<wbr/> This mode may also apply additional
3287processing to recover details in dark and bright areas of the image,<wbr/>and noise
3288reduction at high sensitivity gain settings to manage the trade-off between light
3289sensitivity and capture noise.<wbr/></p>
3290<p>This mode is restricted to two output surfaces.<wbr/> One output surface type can either
3291be SurfaceView or TextureView.<wbr/> Another output surface type can either be MediaCodec
3292or MediaRecorder.<wbr/> This mode cannot be used with a target FPS range higher than 30
3293FPS.<wbr/></p>
3294<p>If the session configuration is not supported,<wbr/> the AE mode reported in the
3295CaptureResult will be 'ON' instead of 'ON_<wbr/>LOW_<wbr/>LIGHT_<wbr/>BOOST_<wbr/>BRIGHTNESS_<wbr/>PRIORITY'.<wbr/></p>
3296<p>When this AE mode is enabled,<wbr/> the CaptureResult field
3297<a href="#dynamic_android.control.lowLightBoostState">android.<wbr/>control.<wbr/>low<wbr/>Light<wbr/>Boost<wbr/>State</a> will indicate when low light boost is 'ACTIVE'
3298or 'INACTIVE'.<wbr/> By default <a href="#dynamic_android.control.lowLightBoostState">android.<wbr/>control.<wbr/>low<wbr/>Light<wbr/>Boost<wbr/>State</a> will be 'INACTIVE'.<wbr/></p>
3299<p>The low light boost is 'ACTIVE' once the scene lighting condition is less than the
3300upper bound lux value defined by <a href="#static_android.control.lowLightBoostInfoLuminanceRange">android.<wbr/>control.<wbr/>low<wbr/>Light<wbr/>Boost<wbr/>Info<wbr/>Luminance<wbr/>Range</a>.<wbr/>
3301This mode will be 'INACTIVE' once the scene lighting condition is greater than the
3302upper bound lux value defined by <a href="#static_android.control.lowLightBoostInfoLuminanceRange">android.<wbr/>control.<wbr/>low<wbr/>Light<wbr/>Boost<wbr/>Info<wbr/>Luminance<wbr/>Range</a>.<wbr/></p></span>
3303                  </li>
3304                </ul>
3305
3306            </td> <!-- entry_type -->
3307
3308            <td class="entry_description">
3309              <p>The desired mode for the camera device's
3310auto-exposure routine.<wbr/></p>
3311            </td>
3312
3313            <td class="entry_units">
3314            </td>
3315
3316            <td class="entry_range">
3317              <p><a href="#static_android.control.aeAvailableModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes</a></p>
3318            </td>
3319
3320            <td class="entry_hal_version">
3321              <p>3.<wbr/>2</p>
3322            </td>
3323
3324            <td class="entry_tags">
3325              <ul class="entry_tags">
3326                  <li><a href="#tag_BC">BC</a></li>
3327              </ul>
3328            </td>
3329
3330          </tr>
3331          <tr class="entries_header">
3332            <th class="th_details" colspan="6">Details</th>
3333          </tr>
3334          <tr class="entry_cont">
3335            <td class="entry_details" colspan="6">
3336              <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is
3337AUTO.<wbr/></p>
3338<p>When set to any of the ON modes,<wbr/> the camera device's
3339auto-exposure routine is enabled,<wbr/> overriding the
3340application's selected exposure time,<wbr/> sensor sensitivity,<wbr/>
3341and frame duration (<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
3342<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
3343<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>).<wbr/> If <a href="#controls_android.control.aePriorityMode">android.<wbr/>control.<wbr/>ae<wbr/>Priority<wbr/>Mode</a> is
3344enabled,<wbr/> the relevant priority CaptureRequest settings will not be overridden.<wbr/>
3345See <a href="#controls_android.control.aePriorityMode">android.<wbr/>control.<wbr/>ae<wbr/>Priority<wbr/>Mode</a> for more details.<wbr/> If one of the FLASH modes
3346is selected,<wbr/> the camera device's flash unit controls are
3347also overridden.<wbr/></p>
3348<p>The FLASH modes are only available if the camera device
3349has a flash unit (<a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> is <code>true</code>).<wbr/></p>
3350<p>If flash TORCH mode is desired,<wbr/> this field must be set to
3351ON or OFF,<wbr/> and <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> set to TORCH.<wbr/></p>
3352<p>When set to any of the ON modes,<wbr/> the values chosen by the
3353camera device auto-exposure routine for the overridden
3354fields for a given capture will be available in its
3355CaptureResult.<wbr/></p>
3356<p>When <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is AE_<wbr/>MODE_<wbr/>ON and if the device
3357supports manual flash strength control,<wbr/> i.<wbr/>e.,<wbr/>
3358if <a href="#static_android.flash.singleStrengthMaxLevel">android.<wbr/>flash.<wbr/>single<wbr/>Strength<wbr/>Max<wbr/>Level</a> and
3359<a href="#static_android.flash.torchStrengthMaxLevel">android.<wbr/>flash.<wbr/>torch<wbr/>Strength<wbr/>Max<wbr/>Level</a> are greater than 1,<wbr/> then
3360the auto-exposure (AE) precapture metering sequence should be
3361triggered to avoid the image being incorrectly exposed at
3362different <a href="#controls_android.flash.strengthLevel">android.<wbr/>flash.<wbr/>strength<wbr/>Level</a>.<wbr/></p>
3363            </td>
3364          </tr>
3365
3366
3367          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3368           <!-- end of entry -->
3369
3370
3371          <tr class="entry" id="controls_android.control.aeRegions">
3372            <td class="entry_name
3373             " rowspan="5">
3374              android.<wbr/>control.<wbr/>ae<wbr/>Regions
3375            </td>
3376            <td class="entry_type">
3377                <span class="entry_type_name">int32</span>
3378                <span class="entry_type_container">x</span>
3379
3380                <span class="entry_type_array">
3381                  5 x area_count
3382                </span>
3383              <span class="entry_type_visibility"> [public as meteringRectangle]</span>
3384
3385
3386
3387
3388
3389
3390            </td> <!-- entry_type -->
3391
3392            <td class="entry_description">
3393              <p>List of metering areas to use for auto-exposure adjustment.<wbr/></p>
3394            </td>
3395
3396            <td class="entry_units">
3397              Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size or
3398            android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size depending on
3399            distortion correction capability and mode
3400            </td>
3401
3402            <td class="entry_range">
3403              <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
3404<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> or <a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>
3405depending on distortion correction capability and mode</p>
3406            </td>
3407
3408            <td class="entry_hal_version">
3409              <p>3.<wbr/>2</p>
3410            </td>
3411
3412            <td class="entry_tags">
3413              <ul class="entry_tags">
3414                  <li><a href="#tag_BC">BC</a></li>
3415              </ul>
3416            </td>
3417
3418          </tr>
3419          <tr class="entries_header">
3420            <th class="th_details" colspan="6">Details</th>
3421          </tr>
3422          <tr class="entry_cont">
3423            <td class="entry_details" colspan="6">
3424              <p>Not available if <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a> is 0.<wbr/>
3425Otherwise will always be present.<wbr/></p>
3426<p>The maximum number of regions supported by the device is determined by the value
3427of <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a>.<wbr/></p>
3428<p>For devices not supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate
3429system always follows that of <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> with (0,<wbr/>0) being
3430the top-left pixel in the active pixel array,<wbr/> and
3431(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
3432<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the bottom-right pixel in the
3433active pixel array.<wbr/></p>
3434<p>For devices supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate
3435system depends on the mode being set.<wbr/>
3436When the distortion correction mode is OFF,<wbr/> the coordinate system follows
3437<a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>,<wbr/> with
3438<code>(0,<wbr/> 0)</code> being the top-left pixel of the pre-correction active array,<wbr/> and
3439(<a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
3440<a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the bottom-right
3441pixel in the pre-correction active pixel array.<wbr/>
3442When the distortion correction mode is not OFF,<wbr/> the coordinate system follows
3443<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> with
3444<code>(0,<wbr/> 0)</code> being the top-left pixel of the active array,<wbr/> and
3445(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
3446<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the bottom-right pixel in the
3447active pixel array.<wbr/></p>
3448<p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight
3449for every pixel in the area.<wbr/> This means that a large metering area
3450with the same weight as a smaller area will have more effect in
3451the metering result.<wbr/> Metering areas can partially overlap and the
3452camera device will add the weights in the overlap region.<wbr/></p>
3453<p>The weights are relative to weights of other exposure metering regions,<wbr/> so if only one
3454region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0
3455weight is ignored.<wbr/></p>
3456<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
3457camera device.<wbr/></p>
3458<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
3459capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
3460region and output only the intersection rectangle as the metering region in the result
3461metadata.<wbr/>  If the region is entirely outside the crop region,<wbr/> it will be ignored and
3462not reported in the result metadata.<wbr/></p>
3463<p>When setting the AE metering regions,<wbr/> the application must consider the additional
3464crop resulted from the aspect ratio differences between the preview stream and
3465<a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/> For example,<wbr/> if the <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> is the full
3466active array size with 4:3 aspect ratio,<wbr/> and the preview stream is 16:9,<wbr/>
3467the boundary of AE regions will be [0,<wbr/> y_<wbr/>crop] and
3468[active_<wbr/>width,<wbr/> active_<wbr/>height - 2 * y_<wbr/>crop] rather than [0,<wbr/> 0] and
3469[active_<wbr/>width,<wbr/> active_<wbr/>height],<wbr/> where y_<wbr/>crop is the additional crop due to aspect ratio
3470mismatch.<wbr/></p>
3471<p>Starting from API level 30,<wbr/> the coordinate system of activeArraySize or
3472preCorrectionActiveArraySize is used to represent post-zoomRatio field of view,<wbr/> not
3473pre-zoom field of view.<wbr/> This means that the same aeRegions values at different
3474<a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> represent different parts of the scene.<wbr/> The aeRegions
3475coordinates are relative to the activeArray/<wbr/>preCorrectionActiveArray representing the
3476zoomed field of view.<wbr/> If <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> is set to 1.<wbr/>0 (default),<wbr/> the same
3477aeRegions at different <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> still represent the same parts of the
3478scene as they do before.<wbr/> See <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> for details.<wbr/> Whether to use
3479activeArraySize or preCorrectionActiveArraySize still depends on distortion correction
3480mode.<wbr/></p>
3481<p>For camera devices with the
3482<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR">Camera<wbr/>Metadata#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>ULTRA_<wbr/>HIGH_<wbr/>RESOLUTION_<wbr/>SENSOR</a>
3483capability or devices where
3484<a href="https://developer.android.com/reference/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a>
3485lists <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a>,<wbr/>
3486<a href="#static_android.sensor.info.activeArraySizeMaximumResolution">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution</a> /<wbr/>
3487<a href="#static_android.sensor.info.preCorrectionActiveArraySizeMaximumResolution">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution</a> must be used as the
3488coordinate system for requests where <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to
3489<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p>
3490            </td>
3491          </tr>
3492
3493          <tr class="entries_header">
3494            <th class="th_details" colspan="6">HAL Implementation Details</th>
3495          </tr>
3496          <tr class="entry_cont">
3497            <td class="entry_details" colspan="6">
3498              <p>The HAL level representation of MeteringRectangle[] is a
3499int[5 * area_<wbr/>count].<wbr/>
3500Every five elements represent a metering region of
3501(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
3502The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
3503exclusive on xmax and ymax.<wbr/>
3504HAL must always report metering regions in the coordinate system of pre-correction
3505active array.<wbr/></p>
3506            </td>
3507          </tr>
3508
3509          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3510           <!-- end of entry -->
3511
3512
3513          <tr class="entry" id="controls_android.control.aeTargetFpsRange">
3514            <td class="entry_name
3515             " rowspan="3">
3516              android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range
3517            </td>
3518            <td class="entry_type">
3519                <span class="entry_type_name">int32</span>
3520                <span class="entry_type_container">x</span>
3521
3522                <span class="entry_type_array">
3523                  2
3524                </span>
3525              <span class="entry_type_visibility"> [public as rangeInt]</span>
3526
3527
3528              <span class="entry_type_hwlevel">[legacy] </span>
3529
3530
3531
3532
3533            </td> <!-- entry_type -->
3534
3535            <td class="entry_description">
3536              <p>Range over which the auto-exposure routine can
3537adjust the capture frame rate to maintain good
3538exposure.<wbr/></p>
3539            </td>
3540
3541            <td class="entry_units">
3542              Frames per second (FPS)
3543            </td>
3544
3545            <td class="entry_range">
3546              <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>
3547            </td>
3548
3549            <td class="entry_hal_version">
3550              <p>3.<wbr/>2</p>
3551            </td>
3552
3553            <td class="entry_tags">
3554              <ul class="entry_tags">
3555                  <li><a href="#tag_BC">BC</a></li>
3556              </ul>
3557            </td>
3558
3559          </tr>
3560          <tr class="entries_header">
3561            <th class="th_details" colspan="6">Details</th>
3562          </tr>
3563          <tr class="entry_cont">
3564            <td class="entry_details" colspan="6">
3565              <p>Only constrains auto-exposure (AE) algorithm,<wbr/> not
3566manual control of <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> and
3567<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>.<wbr/></p>
3568<p>Note that the actual achievable max framerate also depends on the minimum frame
3569duration of the output streams.<wbr/> The max frame rate will be
3570<code>min(aeTargetFpsRange.<wbr/>maxFps,<wbr/> 1 /<wbr/> max(individual stream min durations))</code>.<wbr/> For example,<wbr/>
3571if the application sets this key to <code>{60,<wbr/> 60}</code>,<wbr/> but the maximum minFrameDuration among
3572all configured streams is 33ms,<wbr/> the maximum framerate won't be 60fps,<wbr/> but will be
357330fps.<wbr/></p>
3574<p>To start a CaptureSession with a target FPS range different from the
3575capture request template's default value,<wbr/> the application
3576is strongly recommended to call
3577<a href="https://developer.android.com/reference/android/hardware/camera2/params/SessionConfiguration.html#setSessionParameters">SessionConfiguration#setSessionParameters</a>
3578with the target fps range before creating the capture session.<wbr/> The aeTargetFpsRange is
3579typically a session parameter.<wbr/> Specifying it at session creation time helps avoid
3580session reconfiguration delays in cases like 60fps or high speed recording.<wbr/></p>
3581            </td>
3582          </tr>
3583
3584
3585          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3586           <!-- end of entry -->
3587
3588
3589          <tr class="entry" id="controls_android.control.aePrecaptureTrigger">
3590            <td class="entry_name
3591             " rowspan="5">
3592              android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger
3593            </td>
3594            <td class="entry_type">
3595                <span class="entry_type_name entry_type_name_enum">byte</span>
3596
3597              <span class="entry_type_visibility"> [public]</span>
3598
3599
3600              <span class="entry_type_hwlevel">[limited] </span>
3601
3602
3603
3604                <ul class="entry_type_enum">
3605                  <li>
3606                    <span class="entry_type_enum_name">IDLE (v3.2)</span>
3607                    <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
3608                  </li>
3609                  <li>
3610                    <span class="entry_type_enum_name">START (v3.2)</span>
3611                    <span class="entry_type_enum_notes"><p>The precapture metering sequence will be started
3612by the camera device.<wbr/></p>
3613<p>The exact effect of the precapture trigger depends on
3614the current AE mode and state.<wbr/></p></span>
3615                  </li>
3616                  <li>
3617                    <span class="entry_type_enum_name">CANCEL (v3.2)</span>
3618                    <span class="entry_type_enum_notes"><p>The camera device will cancel any currently active or completed
3619precapture metering sequence,<wbr/> the auto-exposure routine will return to its
3620initial state.<wbr/></p></span>
3621                  </li>
3622                </ul>
3623
3624            </td> <!-- entry_type -->
3625
3626            <td class="entry_description">
3627              <p>Whether the camera device will trigger a precapture
3628metering sequence when it processes this request.<wbr/></p>
3629            </td>
3630
3631            <td class="entry_units">
3632            </td>
3633
3634            <td class="entry_range">
3635            </td>
3636
3637            <td class="entry_hal_version">
3638              <p>3.<wbr/>2</p>
3639            </td>
3640
3641            <td class="entry_tags">
3642              <ul class="entry_tags">
3643                  <li><a href="#tag_BC">BC</a></li>
3644              </ul>
3645            </td>
3646
3647          </tr>
3648          <tr class="entries_header">
3649            <th class="th_details" colspan="6">Details</th>
3650          </tr>
3651          <tr class="entry_cont">
3652            <td class="entry_details" colspan="6">
3653              <p>This entry is normally set to IDLE,<wbr/> or is not
3654included at all in the request settings.<wbr/> When included and
3655set to START,<wbr/> the camera device will trigger the auto-exposure (AE)
3656precapture metering sequence.<wbr/></p>
3657<p>When set to CANCEL,<wbr/> the camera device will cancel any active
3658precapture metering trigger,<wbr/> and return to its initial AE state.<wbr/>
3659If a precapture metering sequence is already completed,<wbr/> and the camera
3660device has implicitly locked the AE for subsequent still capture,<wbr/> the
3661CANCEL trigger will unlock the AE and return to its initial AE state.<wbr/></p>
3662<p>The precapture sequence should be triggered before starting a
3663high-quality still capture for final metering decisions to
3664be made,<wbr/> and for firing pre-capture flash pulses to estimate
3665scene brightness and required final capture flash power,<wbr/> when
3666the flash is enabled.<wbr/></p>
3667<p>Flash is enabled during precapture sequence when:</p>
3668<ul>
3669<li>AE mode is ON_<wbr/>ALWAYS_<wbr/>FLASH</li>
3670<li>AE mode is ON_<wbr/>AUTO_<wbr/>FLASH and the scene is deemed too dark without flash,<wbr/> or</li>
3671<li>AE mode is ON and flash mode is TORCH or SINGLE</li>
3672</ul>
3673<p>Normally,<wbr/> this entry should be set to START for only single request,<wbr/> and the
3674application should wait until the sequence completes before starting a new one.<wbr/></p>
3675<p>When a precapture metering sequence is finished,<wbr/> the camera device
3676may lock the auto-exposure routine internally to be able to accurately expose the
3677subsequent still capture image (<code><a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE</code>).<wbr/>
3678For this case,<wbr/> the AE may not resume normal scan if no subsequent still capture is
3679submitted.<wbr/> To ensure that the AE routine restarts normal scan,<wbr/> the application should
3680submit 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
3681with <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
3682still capture request after the precapture sequence completes.<wbr/> Alternatively,<wbr/> for
3683API level 23 or newer devices,<wbr/> the CANCEL can be used to unlock the camera device
3684internally locked AE if the application doesn't submit a still capture request after
3685the AE precapture trigger.<wbr/> Note that,<wbr/> the CANCEL was added in API level 23,<wbr/> and must not
3686be used in devices that have earlier API levels.<wbr/></p>
3687<p>The exact effect of auto-exposure (AE) precapture trigger
3688depends on the current AE mode and state; see
3689<a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> for AE precapture state transition
3690details.<wbr/></p>
3691<p>On LEGACY-level devices,<wbr/> the precapture trigger is not supported;
3692capturing a high-resolution JPEG image will automatically trigger a
3693precapture sequence before the high-resolution capture,<wbr/> including
3694potentially firing a pre-capture flash.<wbr/></p>
3695<p>Using the precapture trigger and the auto-focus trigger <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>
3696simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between
3697the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a
3698focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous
3699trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and
3700changes to <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> indicating the start of the precapture sequence,<wbr/> for
3701example.<wbr/></p>
3702<p>If both the precapture and the auto-focus trigger are activated on the same request,<wbr/> then
3703the camera device will complete them in the optimal order for that device.<wbr/></p>
3704            </td>
3705          </tr>
3706
3707          <tr class="entries_header">
3708            <th class="th_details" colspan="6">HAL Implementation Details</th>
3709          </tr>
3710          <tr class="entry_cont">
3711            <td class="entry_details" colspan="6">
3712              <p>The HAL must support triggering the AE precapture trigger while an AF trigger is active
3713(and vice versa),<wbr/> or at the same time as the AF trigger.<wbr/>  It is acceptable for the HAL to
3714treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the
3715AE trigger.<wbr/>  Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/>
3716to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p>
3717            </td>
3718          </tr>
3719
3720          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3721           <!-- end of entry -->
3722
3723
3724          <tr class="entry" id="controls_android.control.afMode">
3725            <td class="entry_name
3726             " rowspan="5">
3727              android.<wbr/>control.<wbr/>af<wbr/>Mode
3728            </td>
3729            <td class="entry_type">
3730                <span class="entry_type_name entry_type_name_enum">byte</span>
3731
3732              <span class="entry_type_visibility"> [public]</span>
3733
3734
3735              <span class="entry_type_hwlevel">[legacy] </span>
3736
3737
3738
3739                <ul class="entry_type_enum">
3740                  <li>
3741                    <span class="entry_type_enum_name">OFF (v3.2)</span>
3742                    <span class="entry_type_enum_notes"><p>The auto-focus routine does not control the lens;
3743<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> is controlled by the
3744application.<wbr/></p></span>
3745                  </li>
3746                  <li>
3747                    <span class="entry_type_enum_name">AUTO (v3.2)</span>
3748                    <span class="entry_type_enum_notes"><p>Basic automatic focus mode.<wbr/></p>
3749<p>In this mode,<wbr/> the lens does not move unless
3750the autofocus trigger action is called.<wbr/> When that trigger
3751is activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
3752the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/></p>
3753<p>Always supported if lens is not fixed focus.<wbr/></p>
3754<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
3755is fixed-focus.<wbr/></p>
3756<p>Triggering AF_<wbr/>CANCEL resets the lens position to default,<wbr/>
3757and sets the AF state to INACTIVE.<wbr/></p></span>
3758                  </li>
3759                  <li>
3760                    <span class="entry_type_enum_name">MACRO (v3.2)</span>
3761                    <span class="entry_type_enum_notes"><p>Close-up focusing mode.<wbr/></p>
3762<p>In this mode,<wbr/> the lens does not move unless the
3763autofocus trigger action is called.<wbr/> When that trigger is
3764activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
3765the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/> This
3766mode is optimized for focusing on objects very close to
3767the camera.<wbr/></p>
3768<p>When that trigger is activated,<wbr/> AF will transition to
3769ACTIVE_<wbr/>SCAN,<wbr/> then to the outcome of the scan (FOCUSED or
3770NOT_<wbr/>FOCUSED).<wbr/> Triggering cancel AF resets the lens
3771position to default,<wbr/> and sets the AF state to
3772INACTIVE.<wbr/></p></span>
3773                  </li>
3774                  <li>
3775                    <span class="entry_type_enum_name">CONTINUOUS_VIDEO (v3.2)</span>
3776                    <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
3777position continually to attempt to provide a
3778constantly-in-focus image stream.<wbr/></p>
3779<p>The focusing behavior should be suitable for good quality
3780video recording; typically this means slower focus
3781movement and no overshoots.<wbr/> When the AF trigger is not
3782involved,<wbr/> the AF algorithm should start in INACTIVE state,<wbr/>
3783and then transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED
3784states as appropriate.<wbr/> When the AF trigger is activated,<wbr/>
3785the algorithm should immediately transition into
3786AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the
3787lens position until a cancel AF trigger is received.<wbr/></p>
3788<p>Once cancel is received,<wbr/> the algorithm should transition
3789back to INACTIVE and resume passive scan.<wbr/> Note that this
3790behavior is not identical to CONTINUOUS_<wbr/>PICTURE,<wbr/> since an
3791ongoing PASSIVE_<wbr/>SCAN must immediately be
3792canceled.<wbr/></p></span>
3793                  </li>
3794                  <li>
3795                    <span class="entry_type_enum_name">CONTINUOUS_PICTURE (v3.2)</span>
3796                    <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
3797position continually to attempt to provide a
3798constantly-in-focus image stream.<wbr/></p>
3799<p>The focusing behavior should be suitable for still image
3800capture; typically this means focusing as fast as
3801possible.<wbr/> When the AF trigger is not involved,<wbr/> the AF
3802algorithm should start in INACTIVE state,<wbr/> and then
3803transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED states as
3804appropriate as it attempts to maintain focus.<wbr/> When the AF
3805trigger is activated,<wbr/> the algorithm should finish its
3806PASSIVE_<wbr/>SCAN if active,<wbr/> and then transition into
3807AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the
3808lens position until a cancel AF trigger is received.<wbr/></p>
3809<p>When the AF cancel trigger is activated,<wbr/> the algorithm
3810should transition back to INACTIVE and then act as if it
3811has just been started.<wbr/></p></span>
3812                  </li>
3813                  <li>
3814                    <span class="entry_type_enum_name">EDOF (v3.2)</span>
3815                    <span class="entry_type_enum_notes"><p>Extended depth of field (digital focus) mode.<wbr/></p>
3816<p>The camera device will produce images with an extended
3817depth of field automatically; no special focusing
3818operations need to be done before taking a picture.<wbr/></p>
3819<p>AF triggers are ignored,<wbr/> and the AF state will always be
3820INACTIVE.<wbr/></p></span>
3821                  </li>
3822                </ul>
3823
3824            </td> <!-- entry_type -->
3825
3826            <td class="entry_description">
3827              <p>Whether auto-focus (AF) is currently enabled,<wbr/> and what
3828mode it is set to.<wbr/></p>
3829            </td>
3830
3831            <td class="entry_units">
3832            </td>
3833
3834            <td class="entry_range">
3835              <p><a href="#static_android.control.afAvailableModes">android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes</a></p>
3836            </td>
3837
3838            <td class="entry_hal_version">
3839              <p>3.<wbr/>2</p>
3840            </td>
3841
3842            <td class="entry_tags">
3843              <ul class="entry_tags">
3844                  <li><a href="#tag_BC">BC</a></li>
3845              </ul>
3846            </td>
3847
3848          </tr>
3849          <tr class="entries_header">
3850            <th class="th_details" colspan="6">Details</th>
3851          </tr>
3852          <tr class="entry_cont">
3853            <td class="entry_details" colspan="6">
3854              <p>Only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> = AUTO and the lens is not fixed focus
3855(i.<wbr/>e.<wbr/> <code><a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a> &gt; 0</code>).<wbr/> Also note that
3856when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> the behavior of AF is device
3857dependent.<wbr/> It is recommended to lock AF by using <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a> before
3858setting <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>
3859<p>If the lens is controlled by the camera device auto-focus algorithm,<wbr/>
3860the camera device will report the current AF status in <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>
3861in result metadata.<wbr/></p>
3862            </td>
3863          </tr>
3864
3865          <tr class="entries_header">
3866            <th class="th_details" colspan="6">HAL Implementation Details</th>
3867          </tr>
3868          <tr class="entry_cont">
3869            <td class="entry_details" colspan="6">
3870              <p>When afMode is AUTO or MACRO,<wbr/> the lens must not move until an AF trigger is sent in a
3871request (<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
3872up with either FOCUSED_<wbr/>LOCKED or NOT_<wbr/>FOCUSED_<wbr/>LOCKED state (see
3873<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
3874locked and will not move.<wbr/> If camera movement (e.<wbr/>g.<wbr/> tilting camera) causes the lens to move
3875after the lens is locked,<wbr/> the HAL must compensate this movement appropriately such that
3876the same focal plane remains in focus.<wbr/></p>
3877<p>When afMode is one of the continuous auto focus modes,<wbr/> the HAL is free to start a AF
3878scan whenever it's not locked.<wbr/> When the lens is locked after an AF trigger
3879(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
3880same lock behavior as above.<wbr/></p>
3881<p>When afMode is OFF,<wbr/> the application controls focus manually.<wbr/> The accuracy of the
3882focus 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/>
3883However,<wbr/> the lens must not move regardless of the camera movement for any focus distance
3884manual control.<wbr/></p>
3885<p>To put this in concrete terms,<wbr/> if the camera has lens elements which may move based on
3886camera orientation or motion (e.<wbr/>g.<wbr/> due to gravity),<wbr/> then the HAL must drive the lens to
3887remain in a fixed position invariant to the camera's orientation or motion,<wbr/> for example,<wbr/>
3888by using accelerometer measurements in the lens control logic.<wbr/> This is a typical issue
3889that will arise on camera modules with open-loop VCMs.<wbr/></p>
3890            </td>
3891          </tr>
3892
3893          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3894           <!-- end of entry -->
3895
3896
3897          <tr class="entry" id="controls_android.control.afRegions">
3898            <td class="entry_name
3899             " rowspan="5">
3900              android.<wbr/>control.<wbr/>af<wbr/>Regions
3901            </td>
3902            <td class="entry_type">
3903                <span class="entry_type_name">int32</span>
3904                <span class="entry_type_container">x</span>
3905
3906                <span class="entry_type_array">
3907                  5 x area_count
3908                </span>
3909              <span class="entry_type_visibility"> [public as meteringRectangle]</span>
3910
3911
3912
3913
3914
3915
3916            </td> <!-- entry_type -->
3917
3918            <td class="entry_description">
3919              <p>List of metering areas to use for auto-focus.<wbr/></p>
3920            </td>
3921
3922            <td class="entry_units">
3923              Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size or
3924            android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size depending on
3925            distortion correction capability and mode
3926            </td>
3927
3928            <td class="entry_range">
3929              <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
3930<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> or <a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>
3931depending on distortion correction capability and mode</p>
3932            </td>
3933
3934            <td class="entry_hal_version">
3935              <p>3.<wbr/>2</p>
3936            </td>
3937
3938            <td class="entry_tags">
3939              <ul class="entry_tags">
3940                  <li><a href="#tag_BC">BC</a></li>
3941              </ul>
3942            </td>
3943
3944          </tr>
3945          <tr class="entries_header">
3946            <th class="th_details" colspan="6">Details</th>
3947          </tr>
3948          <tr class="entry_cont">
3949            <td class="entry_details" colspan="6">
3950              <p>Not available if <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a> is 0.<wbr/>
3951Otherwise will always be present.<wbr/></p>
3952<p>The maximum number of focus areas supported by the device is determined by the value
3953of <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a>.<wbr/></p>
3954<p>For devices not supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate
3955system always follows that of <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> with (0,<wbr/>0) being
3956the top-left pixel in the active pixel array,<wbr/> and
3957(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
3958<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the bottom-right pixel in the
3959active pixel array.<wbr/></p>
3960<p>For devices supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate
3961system depends on the mode being set.<wbr/>
3962When the distortion correction mode is OFF,<wbr/> the coordinate system follows
3963<a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>,<wbr/> with
3964<code>(0,<wbr/> 0)</code> being the top-left pixel of the pre-correction active array,<wbr/> and
3965(<a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
3966<a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the bottom-right
3967pixel in the pre-correction active pixel array.<wbr/>
3968When the distortion correction mode is not OFF,<wbr/> the coordinate system follows
3969<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> with
3970<code>(0,<wbr/> 0)</code> being the top-left pixel of the active array,<wbr/> and
3971(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
3972<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the bottom-right pixel in the
3973active pixel array.<wbr/></p>
3974<p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight
3975for every pixel in the area.<wbr/> This means that a large metering area
3976with the same weight as a smaller area will have more effect in
3977the metering result.<wbr/> Metering areas can partially overlap and the
3978camera device will add the weights in the overlap region.<wbr/></p>
3979<p>The weights are relative to weights of other metering regions,<wbr/> so if only one region
3980is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0 weight is
3981ignored.<wbr/></p>
3982<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
3983camera device.<wbr/> The capture result will either be a zero weight region as well,<wbr/> or
3984the region selected by the camera device as the focus area of interest.<wbr/></p>
3985<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
3986capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
3987region and output only the intersection rectangle as the metering region in the result
3988metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and
3989not reported in the result metadata.<wbr/></p>
3990<p>When setting the AF metering regions,<wbr/> the application must consider the additional
3991crop resulted from the aspect ratio differences between the preview stream and
3992<a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/> For example,<wbr/> if the <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> is the full
3993active array size with 4:3 aspect ratio,<wbr/> and the preview stream is 16:9,<wbr/>
3994the boundary of AF regions will be [0,<wbr/> y_<wbr/>crop] and
3995[active_<wbr/>width,<wbr/> active_<wbr/>height - 2 * y_<wbr/>crop] rather than [0,<wbr/> 0] and
3996[active_<wbr/>width,<wbr/> active_<wbr/>height],<wbr/> where y_<wbr/>crop is the additional crop due to aspect ratio
3997mismatch.<wbr/></p>
3998<p>Starting from API level 30,<wbr/> the coordinate system of activeArraySize or
3999preCorrectionActiveArraySize is used to represent post-zoomRatio field of view,<wbr/> not
4000pre-zoom field of view.<wbr/> This means that the same afRegions values at different
4001<a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> represent different parts of the scene.<wbr/> The afRegions
4002coordinates are relative to the activeArray/<wbr/>preCorrectionActiveArray representing the
4003zoomed field of view.<wbr/> If <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> is set to 1.<wbr/>0 (default),<wbr/> the same
4004afRegions at different <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> still represent the same parts of the
4005scene as they do before.<wbr/> See <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> for details.<wbr/> Whether to use
4006activeArraySize or preCorrectionActiveArraySize still depends on distortion correction
4007mode.<wbr/></p>
4008<p>For camera devices with the
4009<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR">Camera<wbr/>Metadata#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>ULTRA_<wbr/>HIGH_<wbr/>RESOLUTION_<wbr/>SENSOR</a>
4010capability or devices where
4011<a href="https://developer.android.com/reference/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a>
4012lists <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a>,<wbr/>
4013<a href="#static_android.sensor.info.activeArraySizeMaximumResolution">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution</a> /<wbr/>
4014<a href="#static_android.sensor.info.preCorrectionActiveArraySizeMaximumResolution">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution</a> must be used as the
4015coordinate system for requests where <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to
4016<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p>
4017            </td>
4018          </tr>
4019
4020          <tr class="entries_header">
4021            <th class="th_details" colspan="6">HAL Implementation Details</th>
4022          </tr>
4023          <tr class="entry_cont">
4024            <td class="entry_details" colspan="6">
4025              <p>The HAL level representation of MeteringRectangle[] is a
4026int[5 * area_<wbr/>count].<wbr/>
4027Every five elements represent a metering region of
4028(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
4029The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
4030exclusive on xmax and ymax.<wbr/>
4031HAL must always report metering regions in the coordinate system of pre-correction
4032active array.<wbr/></p>
4033            </td>
4034          </tr>
4035
4036          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4037           <!-- end of entry -->
4038
4039
4040          <tr class="entry" id="controls_android.control.afTrigger">
4041            <td class="entry_name
4042             " rowspan="5">
4043              android.<wbr/>control.<wbr/>af<wbr/>Trigger
4044            </td>
4045            <td class="entry_type">
4046                <span class="entry_type_name entry_type_name_enum">byte</span>
4047
4048              <span class="entry_type_visibility"> [public]</span>
4049
4050
4051              <span class="entry_type_hwlevel">[legacy] </span>
4052
4053
4054
4055                <ul class="entry_type_enum">
4056                  <li>
4057                    <span class="entry_type_enum_name">IDLE (v3.2)</span>
4058                    <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
4059                  </li>
4060                  <li>
4061                    <span class="entry_type_enum_name">START (v3.2)</span>
4062                    <span class="entry_type_enum_notes"><p>Autofocus will trigger now.<wbr/></p></span>
4063                  </li>
4064                  <li>
4065                    <span class="entry_type_enum_name">CANCEL (v3.2)</span>
4066                    <span class="entry_type_enum_notes"><p>Autofocus will return to its initial
4067state,<wbr/> and cancel any currently active trigger.<wbr/></p></span>
4068                  </li>
4069                </ul>
4070
4071            </td> <!-- entry_type -->
4072
4073            <td class="entry_description">
4074              <p>Whether the camera device will trigger autofocus for this request.<wbr/></p>
4075            </td>
4076
4077            <td class="entry_units">
4078            </td>
4079
4080            <td class="entry_range">
4081            </td>
4082
4083            <td class="entry_hal_version">
4084              <p>3.<wbr/>2</p>
4085            </td>
4086
4087            <td class="entry_tags">
4088              <ul class="entry_tags">
4089                  <li><a href="#tag_BC">BC</a></li>
4090              </ul>
4091            </td>
4092
4093          </tr>
4094          <tr class="entries_header">
4095            <th class="th_details" colspan="6">Details</th>
4096          </tr>
4097          <tr class="entry_cont">
4098            <td class="entry_details" colspan="6">
4099              <p>This entry is normally set to IDLE,<wbr/> or is not
4100included at all in the request settings.<wbr/></p>
4101<p>When included and set to START,<wbr/> the camera device will trigger the
4102autofocus algorithm.<wbr/> If autofocus is disabled,<wbr/> this trigger has no effect.<wbr/></p>
4103<p>When set to CANCEL,<wbr/> the camera device will cancel any active trigger,<wbr/>
4104and return to its initial AF state.<wbr/></p>
4105<p>Generally,<wbr/> applications should set this entry to START or CANCEL for only a
4106single capture,<wbr/> and then return it to IDLE (or not set at all).<wbr/> Specifying
4107START for multiple captures in a row means restarting the AF operation over
4108and over again.<wbr/></p>
4109<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>
4110<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>
4111simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between
4112the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a
4113focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous
4114trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and
4115changes to <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>,<wbr/> for example.<wbr/></p>
4116            </td>
4117          </tr>
4118
4119          <tr class="entries_header">
4120            <th class="th_details" colspan="6">HAL Implementation Details</th>
4121          </tr>
4122          <tr class="entry_cont">
4123            <td class="entry_details" colspan="6">
4124              <p>The HAL must support triggering the AF trigger while an AE precapture trigger is active
4125(and vice versa),<wbr/> or at the same time as the AE trigger.<wbr/>  It is acceptable for the HAL to
4126treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the
4127AE trigger.<wbr/>  Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/>
4128to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p>
4129            </td>
4130          </tr>
4131
4132          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4133           <!-- end of entry -->
4134
4135
4136          <tr class="entry" id="controls_android.control.awbLock">
4137            <td class="entry_name
4138             " rowspan="3">
4139              android.<wbr/>control.<wbr/>awb<wbr/>Lock
4140            </td>
4141            <td class="entry_type">
4142                <span class="entry_type_name entry_type_name_enum">byte</span>
4143
4144              <span class="entry_type_visibility"> [public as boolean]</span>
4145
4146
4147              <span class="entry_type_hwlevel">[legacy] </span>
4148
4149
4150
4151                <ul class="entry_type_enum">
4152                  <li>
4153                    <span class="entry_type_enum_name">OFF (v3.2)</span>
4154                    <span class="entry_type_enum_notes"><p>Auto-white balance lock is disabled; the AWB
4155algorithm is free to update its parameters if in AUTO
4156mode.<wbr/></p></span>
4157                  </li>
4158                  <li>
4159                    <span class="entry_type_enum_name">ON (v3.2)</span>
4160                    <span class="entry_type_enum_notes"><p>Auto-white balance lock is enabled; the AWB
4161algorithm will not update its parameters while the lock
4162is active.<wbr/></p></span>
4163                  </li>
4164                </ul>
4165
4166            </td> <!-- entry_type -->
4167
4168            <td class="entry_description">
4169              <p>Whether auto-white balance (AWB) is currently locked to its
4170latest calculated values.<wbr/></p>
4171            </td>
4172
4173            <td class="entry_units">
4174            </td>
4175
4176            <td class="entry_range">
4177            </td>
4178
4179            <td class="entry_hal_version">
4180              <p>3.<wbr/>2</p>
4181            </td>
4182
4183            <td class="entry_tags">
4184              <ul class="entry_tags">
4185                  <li><a href="#tag_BC">BC</a></li>
4186              </ul>
4187            </td>
4188
4189          </tr>
4190          <tr class="entries_header">
4191            <th class="th_details" colspan="6">Details</th>
4192          </tr>
4193          <tr class="entry_cont">
4194            <td class="entry_details" colspan="6">
4195              <p>When set to <code>true</code> (ON),<wbr/> the AWB algorithm is locked to its latest parameters,<wbr/>
4196and will not change color balance settings until the lock is set to <code>false</code> (OFF).<wbr/></p>
4197<p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that
4198get locked do not necessarily correspond to the settings that were present in the
4199latest capture result received from the camera device,<wbr/> since additional captures
4200and AWB updates may have occurred even before the result was sent out.<wbr/> If an
4201application is switching between automatic and manual control and wishes to eliminate
4202any flicker during the switch,<wbr/> the following procedure is recommended:</p>
4203<ol>
4204<li>Starting in auto-AWB mode:</li>
4205<li>Lock AWB</li>
4206<li>Wait for the first result to be output that has the AWB locked</li>
4207<li>Copy AWB settings from that result into a request,<wbr/> set the request to manual AWB</li>
4208<li>Submit the capture request,<wbr/> proceed to run manual AWB as desired.<wbr/></li>
4209</ol>
4210<p>Note that AWB lock is only meaningful when
4211<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is in the AUTO mode; in other modes,<wbr/>
4212AWB is already fixed to a specific setting.<wbr/></p>
4213<p>Some LEGACY devices may not support ON; the value is then overridden to OFF.<wbr/></p>
4214            </td>
4215          </tr>
4216
4217
4218          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4219           <!-- end of entry -->
4220
4221
4222          <tr class="entry" id="controls_android.control.awbMode">
4223            <td class="entry_name
4224             " rowspan="3">
4225              android.<wbr/>control.<wbr/>awb<wbr/>Mode
4226            </td>
4227            <td class="entry_type">
4228                <span class="entry_type_name entry_type_name_enum">byte</span>
4229
4230              <span class="entry_type_visibility"> [public]</span>
4231
4232
4233              <span class="entry_type_hwlevel">[legacy] </span>
4234
4235
4236
4237                <ul class="entry_type_enum">
4238                  <li>
4239                    <span class="entry_type_enum_name">OFF (v3.2)</span>
4240                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled.<wbr/></p>
4241<p>The application-selected color transform matrix
4242(<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>) and gains
4243(<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a>) are used by the camera
4244device for manual white balance control.<wbr/></p></span>
4245                  </li>
4246                  <li>
4247                    <span class="entry_type_enum_name">AUTO (v3.2)</span>
4248                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is active.<wbr/></p>
4249<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
4250and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
4251For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
4252values used by the camera device for the transform and gains
4253will be available in the capture result for this request.<wbr/></p></span>
4254                  </li>
4255                  <li>
4256                    <span class="entry_type_enum_name">INCANDESCENT (v3.2)</span>
4257                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
4258the camera device uses incandescent light as the assumed scene
4259illumination for white balance.<wbr/></p>
4260<p>While the exact white balance transforms are up to the
4261camera device,<wbr/> they will approximately match the CIE
4262standard illuminant A.<wbr/></p>
4263<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
4264and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
4265For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
4266values used by the camera device for the transform and gains
4267will be available in the capture result for this request.<wbr/></p></span>
4268                  </li>
4269                  <li>
4270                    <span class="entry_type_enum_name">FLUORESCENT (v3.2)</span>
4271                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
4272the camera device uses fluorescent light as the assumed scene
4273illumination for white balance.<wbr/></p>
4274<p>While the exact white balance transforms are up to the
4275camera device,<wbr/> they will approximately match the CIE
4276standard illuminant F2.<wbr/></p>
4277<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
4278and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
4279For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
4280values used by the camera device for the transform and gains
4281will be available in the capture result for this request.<wbr/></p></span>
4282                  </li>
4283                  <li>
4284                    <span class="entry_type_enum_name">WARM_FLUORESCENT (v3.2)</span>
4285                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
4286the camera device uses warm fluorescent light as the assumed scene
4287illumination for white balance.<wbr/></p>
4288<p>While the exact white balance transforms are up to the
4289camera device,<wbr/> they will approximately match the CIE
4290standard illuminant F4.<wbr/></p>
4291<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
4292and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
4293For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
4294values used by the camera device for the transform and gains
4295will be available in the capture result for this request.<wbr/></p></span>
4296                  </li>
4297                  <li>
4298                    <span class="entry_type_enum_name">DAYLIGHT (v3.2)</span>
4299                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
4300the camera device uses daylight light as the assumed scene
4301illumination for white balance.<wbr/></p>
4302<p>While the exact white balance transforms are up to the
4303camera device,<wbr/> they will approximately match the CIE
4304standard illuminant D65.<wbr/></p>
4305<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
4306and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
4307For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
4308values used by the camera device for the transform and gains
4309will be available in the capture result for this request.<wbr/></p></span>
4310                  </li>
4311                  <li>
4312                    <span class="entry_type_enum_name">CLOUDY_DAYLIGHT (v3.2)</span>
4313                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
4314the camera device uses cloudy daylight light as the assumed scene
4315illumination for white balance.<wbr/></p>
4316<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
4317and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
4318For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
4319values used by the camera device for the transform and gains
4320will be available in the capture result for this request.<wbr/></p></span>
4321                  </li>
4322                  <li>
4323                    <span class="entry_type_enum_name">TWILIGHT (v3.2)</span>
4324                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
4325the camera device uses twilight light as the assumed scene
4326illumination for white balance.<wbr/></p>
4327<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
4328and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
4329For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
4330values used by the camera device for the transform and gains
4331will be available in the capture result for this request.<wbr/></p></span>
4332                  </li>
4333                  <li>
4334                    <span class="entry_type_enum_name">SHADE (v3.2)</span>
4335                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
4336the camera device uses shade light as the assumed scene
4337illumination for white balance.<wbr/></p>
4338<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
4339and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
4340For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
4341values used by the camera device for the transform and gains
4342will be available in the capture result for this request.<wbr/></p></span>
4343                  </li>
4344                </ul>
4345
4346            </td> <!-- entry_type -->
4347
4348            <td class="entry_description">
4349              <p>Whether auto-white balance (AWB) is currently setting the color
4350transform fields,<wbr/> and what its illumination target
4351is.<wbr/></p>
4352            </td>
4353
4354            <td class="entry_units">
4355            </td>
4356
4357            <td class="entry_range">
4358              <p><a href="#static_android.control.awbAvailableModes">android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes</a></p>
4359            </td>
4360
4361            <td class="entry_hal_version">
4362              <p>3.<wbr/>2</p>
4363            </td>
4364
4365            <td class="entry_tags">
4366              <ul class="entry_tags">
4367                  <li><a href="#tag_BC">BC</a></li>
4368              </ul>
4369            </td>
4370
4371          </tr>
4372          <tr class="entries_header">
4373            <th class="th_details" colspan="6">Details</th>
4374          </tr>
4375          <tr class="entry_cont">
4376            <td class="entry_details" colspan="6">
4377              <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is AUTO.<wbr/></p>
4378<p>When set to the AUTO mode,<wbr/> the camera device's auto-white balance
4379routine is enabled,<wbr/> overriding the application's selected
4380<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
4381<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>
4382is OFF,<wbr/> the behavior of AWB is device dependent.<wbr/> It is recommended to
4383also 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
4384setting AE mode to OFF.<wbr/></p>
4385<p>When set to the OFF mode,<wbr/> the camera device's auto-white balance
4386routine is disabled.<wbr/> The application manually controls the white
4387balance 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>
4388and <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/></p>
4389<p>When set to any other modes,<wbr/> the camera device's auto-white
4390balance routine is disabled.<wbr/> The camera device uses each
4391particular illumination target for white balance
4392adjustment.<wbr/> The application's values for
4393<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>,<wbr/>
4394<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
4395<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> are ignored.<wbr/></p>
4396            </td>
4397          </tr>
4398
4399
4400          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4401           <!-- end of entry -->
4402
4403
4404          <tr class="entry" id="controls_android.control.awbRegions">
4405            <td class="entry_name
4406             " rowspan="5">
4407              android.<wbr/>control.<wbr/>awb<wbr/>Regions
4408            </td>
4409            <td class="entry_type">
4410                <span class="entry_type_name">int32</span>
4411                <span class="entry_type_container">x</span>
4412
4413                <span class="entry_type_array">
4414                  5 x area_count
4415                </span>
4416              <span class="entry_type_visibility"> [public as meteringRectangle]</span>
4417
4418
4419
4420
4421
4422
4423            </td> <!-- entry_type -->
4424
4425            <td class="entry_description">
4426              <p>List of metering areas to use for auto-white-balance illuminant
4427estimation.<wbr/></p>
4428            </td>
4429
4430            <td class="entry_units">
4431              Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size or
4432            android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size depending on
4433            distortion correction capability and mode
4434            </td>
4435
4436            <td class="entry_range">
4437              <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
4438<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> or <a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>
4439depending on distortion correction capability and mode</p>
4440            </td>
4441
4442            <td class="entry_hal_version">
4443              <p>3.<wbr/>2</p>
4444            </td>
4445
4446            <td class="entry_tags">
4447              <ul class="entry_tags">
4448                  <li><a href="#tag_BC">BC</a></li>
4449              </ul>
4450            </td>
4451
4452          </tr>
4453          <tr class="entries_header">
4454            <th class="th_details" colspan="6">Details</th>
4455          </tr>
4456          <tr class="entry_cont">
4457            <td class="entry_details" colspan="6">
4458              <p>Not available if <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a> is 0.<wbr/>
4459Otherwise will always be present.<wbr/></p>
4460<p>The maximum number of regions supported by the device is determined by the value
4461of <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a>.<wbr/></p>
4462<p>For devices not supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate
4463system always follows that of <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> with (0,<wbr/>0) being
4464the top-left pixel in the active pixel array,<wbr/> and
4465(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
4466<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the bottom-right pixel in the
4467active pixel array.<wbr/></p>
4468<p>For devices supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate
4469system depends on the mode being set.<wbr/>
4470When the distortion correction mode is OFF,<wbr/> the coordinate system follows
4471<a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>,<wbr/> with
4472<code>(0,<wbr/> 0)</code> being the top-left pixel of the pre-correction active array,<wbr/> and
4473(<a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
4474<a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the bottom-right
4475pixel in the pre-correction active pixel array.<wbr/>
4476When the distortion correction mode is not OFF,<wbr/> the coordinate system follows
4477<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> with
4478<code>(0,<wbr/> 0)</code> being the top-left pixel of the active array,<wbr/> and
4479(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
4480<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the bottom-right pixel in the
4481active pixel array.<wbr/></p>
4482<p>The weight must range from 0 to 1000,<wbr/> and represents a weight
4483for every pixel in the area.<wbr/> This means that a large metering area
4484with the same weight as a smaller area will have more effect in
4485the metering result.<wbr/> Metering areas can partially overlap and the
4486camera device will add the weights in the overlap region.<wbr/></p>
4487<p>The weights are relative to weights of other white balance metering regions,<wbr/> so if
4488only one region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with
44890 weight is ignored.<wbr/></p>
4490<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
4491camera device.<wbr/></p>
4492<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
4493capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
4494region and output only the intersection rectangle as the metering region in the result
4495metadata.<wbr/>  If the region is entirely outside the crop region,<wbr/> it will be ignored and
4496not reported in the result metadata.<wbr/></p>
4497<p>When setting the AWB metering regions,<wbr/> the application must consider the additional
4498crop resulted from the aspect ratio differences between the preview stream and
4499<a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/> For example,<wbr/> if the <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> is the full
4500active array size with 4:3 aspect ratio,<wbr/> and the preview stream is 16:9,<wbr/>
4501the boundary of AWB regions will be [0,<wbr/> y_<wbr/>crop] and
4502[active_<wbr/>width,<wbr/> active_<wbr/>height - 2 * y_<wbr/>crop] rather than [0,<wbr/> 0] and
4503[active_<wbr/>width,<wbr/> active_<wbr/>height],<wbr/> where y_<wbr/>crop is the additional crop due to aspect ratio
4504mismatch.<wbr/></p>
4505<p>Starting from API level 30,<wbr/> the coordinate system of activeArraySize or
4506preCorrectionActiveArraySize is used to represent post-zoomRatio field of view,<wbr/> not
4507pre-zoom field of view.<wbr/> This means that the same awbRegions values at different
4508<a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> represent different parts of the scene.<wbr/> The awbRegions
4509coordinates are relative to the activeArray/<wbr/>preCorrectionActiveArray representing the
4510zoomed field of view.<wbr/> If <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> is set to 1.<wbr/>0 (default),<wbr/> the same
4511awbRegions at different <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> still represent the same parts of
4512the scene as they do before.<wbr/> See <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> for details.<wbr/> Whether to use
4513activeArraySize or preCorrectionActiveArraySize still depends on distortion correction
4514mode.<wbr/></p>
4515<p>For camera devices with the
4516<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR">Camera<wbr/>Metadata#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>ULTRA_<wbr/>HIGH_<wbr/>RESOLUTION_<wbr/>SENSOR</a>
4517capability or devices where
4518<a href="https://developer.android.com/reference/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a>
4519lists <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a>,<wbr/>
4520<a href="#static_android.sensor.info.activeArraySizeMaximumResolution">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution</a> /<wbr/>
4521<a href="#static_android.sensor.info.preCorrectionActiveArraySizeMaximumResolution">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution</a> must be used as the
4522coordinate system for requests where <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to
4523<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p>
4524            </td>
4525          </tr>
4526
4527          <tr class="entries_header">
4528            <th class="th_details" colspan="6">HAL Implementation Details</th>
4529          </tr>
4530          <tr class="entry_cont">
4531            <td class="entry_details" colspan="6">
4532              <p>The HAL level representation of MeteringRectangle[] is a
4533int[5 * area_<wbr/>count].<wbr/>
4534Every five elements represent a metering region of
4535(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
4536The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
4537exclusive on xmax and ymax.<wbr/>
4538HAL must always report metering regions in the coordinate system of pre-correction
4539active array.<wbr/></p>
4540            </td>
4541          </tr>
4542
4543          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4544           <!-- end of entry -->
4545
4546
4547          <tr class="entry" id="controls_android.control.captureIntent">
4548            <td class="entry_name
4549             " rowspan="3">
4550              android.<wbr/>control.<wbr/>capture<wbr/>Intent
4551            </td>
4552            <td class="entry_type">
4553                <span class="entry_type_name entry_type_name_enum">byte</span>
4554
4555              <span class="entry_type_visibility"> [public]</span>
4556
4557
4558              <span class="entry_type_hwlevel">[legacy] </span>
4559
4560
4561
4562                <ul class="entry_type_enum">
4563                  <li>
4564                    <span class="entry_type_enum_name">CUSTOM (v3.2)</span>
4565                    <span class="entry_type_enum_notes"><p>The goal of this request doesn't fall into the other
4566categories.<wbr/> The camera device will default to preview-like
4567behavior.<wbr/></p></span>
4568                  </li>
4569                  <li>
4570                    <span class="entry_type_enum_name">PREVIEW (v3.2)</span>
4571                    <span class="entry_type_enum_notes"><p>This request is for a preview-like use case.<wbr/></p>
4572<p>The precapture trigger may be used to start off a metering
4573w/<wbr/>flash sequence.<wbr/></p></span>
4574                  </li>
4575                  <li>
4576                    <span class="entry_type_enum_name">STILL_CAPTURE (v3.2)</span>
4577                    <span class="entry_type_enum_notes"><p>This request is for a still capture-type
4578use case.<wbr/></p>
4579<p>If the flash unit is under automatic control,<wbr/> it may fire as needed.<wbr/></p></span>
4580                  </li>
4581                  <li>
4582                    <span class="entry_type_enum_name">VIDEO_RECORD (v3.2)</span>
4583                    <span class="entry_type_enum_notes"><p>This request is for a video recording
4584use case.<wbr/></p></span>
4585                  </li>
4586                  <li>
4587                    <span class="entry_type_enum_name">VIDEO_SNAPSHOT (v3.2)</span>
4588                    <span class="entry_type_enum_notes"><p>This request is for a video snapshot (still
4589image while recording video) use case.<wbr/></p>
4590<p>The camera device should take the highest-quality image
4591possible (given the other settings) without disrupting the
4592frame rate of video recording.<wbr/>  </p></span>
4593                  </li>
4594                  <li>
4595                    <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span>
4596                    <span class="entry_type_enum_notes"><p>This request is for a ZSL usecase; the
4597application will stream full-resolution images and
4598reprocess one or several later for a final
4599capture.<wbr/></p></span>
4600                  </li>
4601                  <li>
4602                    <span class="entry_type_enum_name">MANUAL (v3.2)</span>
4603                    <span class="entry_type_enum_notes"><p>This request is for manual capture use case where
4604the applications want to directly control the capture parameters.<wbr/></p>
4605<p>For example,<wbr/> the application may wish to manually control
4606<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>
4607                  </li>
4608                  <li>
4609                    <span class="entry_type_enum_name">MOTION_TRACKING (v3.3)</span>
4610                    <span class="entry_type_enum_notes"><p>This request is for a motion tracking use case,<wbr/> where
4611the application will use camera and inertial sensor data to
4612locate and track objects in the world.<wbr/></p>
4613<p>The camera device auto-exposure routine will limit the exposure time
4614of the camera to no more than 20 milliseconds,<wbr/> to minimize motion blur.<wbr/></p></span>
4615                  </li>
4616                </ul>
4617
4618            </td> <!-- entry_type -->
4619
4620            <td class="entry_description">
4621              <p>Information to the camera device 3A (auto-exposure,<wbr/>
4622auto-focus,<wbr/> auto-white balance) routines about the purpose
4623of this capture,<wbr/> to help the camera device to decide optimal 3A
4624strategy.<wbr/></p>
4625            </td>
4626
4627            <td class="entry_units">
4628            </td>
4629
4630            <td class="entry_range">
4631            </td>
4632
4633            <td class="entry_hal_version">
4634              <p>3.<wbr/>2</p>
4635            </td>
4636
4637            <td class="entry_tags">
4638              <ul class="entry_tags">
4639                  <li><a href="#tag_BC">BC</a></li>
4640              </ul>
4641            </td>
4642
4643          </tr>
4644          <tr class="entries_header">
4645            <th class="th_details" colspan="6">Details</th>
4646          </tr>
4647          <tr class="entry_cont">
4648            <td class="entry_details" colspan="6">
4649              <p>This control (except for MANUAL) is only effective if
4650<code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF</code> and any 3A routine is active.<wbr/></p>
4651<p>All intents are supported by all devices,<wbr/> except that:</p>
4652<ul>
4653<li>ZERO_<wbr/>SHUTTER_<wbr/>LAG will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
4654PRIVATE_<wbr/>REPROCESSING or YUV_<wbr/>REPROCESSING.<wbr/></li>
4655<li>MANUAL will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
4656MANUAL_<wbr/>SENSOR.<wbr/></li>
4657<li>MOTION_<wbr/>TRACKING will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
4658MOTION_<wbr/>TRACKING.<wbr/></li>
4659</ul>
4660            </td>
4661          </tr>
4662
4663
4664          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4665           <!-- end of entry -->
4666
4667
4668          <tr class="entry" id="controls_android.control.effectMode">
4669            <td class="entry_name
4670             " rowspan="3">
4671              android.<wbr/>control.<wbr/>effect<wbr/>Mode
4672            </td>
4673            <td class="entry_type">
4674                <span class="entry_type_name entry_type_name_enum">byte</span>
4675
4676              <span class="entry_type_visibility"> [public]</span>
4677
4678
4679              <span class="entry_type_hwlevel">[legacy] </span>
4680
4681
4682
4683                <ul class="entry_type_enum">
4684                  <li>
4685                    <span class="entry_type_enum_name">OFF (v3.2)</span>
4686                    <span class="entry_type_enum_notes"><p>No color effect will be applied.<wbr/></p></span>
4687                  </li>
4688                  <li>
4689                    <span class="entry_type_enum_name">MONO (v3.2)</span>
4690                    <span class="entry_type_enum_optional">[optional]</span>
4691                    <span class="entry_type_enum_notes"><p>A "monocolor" effect where the image is mapped into
4692a single color.<wbr/></p>
4693<p>This will typically be grayscale.<wbr/></p></span>
4694                  </li>
4695                  <li>
4696                    <span class="entry_type_enum_name">NEGATIVE (v3.2)</span>
4697                    <span class="entry_type_enum_optional">[optional]</span>
4698                    <span class="entry_type_enum_notes"><p>A "photo-negative" effect where the image's colors
4699are inverted.<wbr/></p></span>
4700                  </li>
4701                  <li>
4702                    <span class="entry_type_enum_name">SOLARIZE (v3.2)</span>
4703                    <span class="entry_type_enum_optional">[optional]</span>
4704                    <span class="entry_type_enum_notes"><p>A "solarisation" effect (Sabattier effect) where the
4705image is wholly or partially reversed in
4706tone.<wbr/></p></span>
4707                  </li>
4708                  <li>
4709                    <span class="entry_type_enum_name">SEPIA (v3.2)</span>
4710                    <span class="entry_type_enum_optional">[optional]</span>
4711                    <span class="entry_type_enum_notes"><p>A "sepia" effect where the image is mapped into warm
4712gray,<wbr/> red,<wbr/> and brown tones.<wbr/></p></span>
4713                  </li>
4714                  <li>
4715                    <span class="entry_type_enum_name">POSTERIZE (v3.2)</span>
4716                    <span class="entry_type_enum_optional">[optional]</span>
4717                    <span class="entry_type_enum_notes"><p>A "posterization" effect where the image uses
4718discrete regions of tone rather than a continuous
4719gradient of tones.<wbr/></p></span>
4720                  </li>
4721                  <li>
4722                    <span class="entry_type_enum_name">WHITEBOARD (v3.2)</span>
4723                    <span class="entry_type_enum_optional">[optional]</span>
4724                    <span class="entry_type_enum_notes"><p>A "whiteboard" effect where the image is typically displayed
4725as regions of white,<wbr/> with black or grey details.<wbr/></p></span>
4726                  </li>
4727                  <li>
4728                    <span class="entry_type_enum_name">BLACKBOARD (v3.2)</span>
4729                    <span class="entry_type_enum_optional">[optional]</span>
4730                    <span class="entry_type_enum_notes"><p>A "blackboard" effect where the image is typically displayed
4731as regions of black,<wbr/> with white or grey details.<wbr/></p></span>
4732                  </li>
4733                  <li>
4734                    <span class="entry_type_enum_name">AQUA (v3.2)</span>
4735                    <span class="entry_type_enum_optional">[optional]</span>
4736                    <span class="entry_type_enum_notes"><p>An "aqua" effect where a blue hue is added to the image.<wbr/></p></span>
4737                  </li>
4738                </ul>
4739
4740            </td> <!-- entry_type -->
4741
4742            <td class="entry_description">
4743              <p>A special color effect to apply.<wbr/></p>
4744            </td>
4745
4746            <td class="entry_units">
4747            </td>
4748
4749            <td class="entry_range">
4750              <p><a href="#static_android.control.availableEffects">android.<wbr/>control.<wbr/>available<wbr/>Effects</a></p>
4751            </td>
4752
4753            <td class="entry_hal_version">
4754              <p>3.<wbr/>2</p>
4755            </td>
4756
4757            <td class="entry_tags">
4758              <ul class="entry_tags">
4759                  <li><a href="#tag_BC">BC</a></li>
4760              </ul>
4761            </td>
4762
4763          </tr>
4764          <tr class="entries_header">
4765            <th class="th_details" colspan="6">Details</th>
4766          </tr>
4767          <tr class="entry_cont">
4768            <td class="entry_details" colspan="6">
4769              <p>When this mode is set,<wbr/> a color effect will be applied
4770to images produced by the camera device.<wbr/> The interpretation
4771and implementation of these color effects is left to the
4772implementor of the camera device,<wbr/> and should not be
4773depended on to be consistent (or present) across all
4774devices.<wbr/></p>
4775            </td>
4776          </tr>
4777
4778
4779          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4780           <!-- end of entry -->
4781
4782
4783          <tr class="entry" id="controls_android.control.mode">
4784            <td class="entry_name
4785             " rowspan="3">
4786              android.<wbr/>control.<wbr/>mode
4787            </td>
4788            <td class="entry_type">
4789                <span class="entry_type_name entry_type_name_enum">byte</span>
4790
4791              <span class="entry_type_visibility"> [public]</span>
4792
4793
4794              <span class="entry_type_hwlevel">[legacy] </span>
4795
4796
4797
4798                <ul class="entry_type_enum">
4799                  <li>
4800                    <span class="entry_type_enum_name">OFF (v3.2)</span>
4801                    <span class="entry_type_enum_notes"><p>Full application control of pipeline.<wbr/></p>
4802<p>All control by the device's metering and focusing (3A)
4803routines is disabled,<wbr/> and no other settings in
4804android.<wbr/>control.<wbr/>* have any effect,<wbr/> except that
4805<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> may be used by the camera
4806device to select post-processing values for processing
4807blocks that do not allow for manual control,<wbr/> or are not
4808exposed by the camera API.<wbr/></p>
4809<p>However,<wbr/> the camera device's 3A routines may continue to
4810collect statistics and update their internal state so that
4811when control is switched to AUTO mode,<wbr/> good control values
4812can be immediately applied.<wbr/></p></span>
4813                  </li>
4814                  <li>
4815                    <span class="entry_type_enum_name">AUTO (v3.2)</span>
4816                    <span class="entry_type_enum_notes"><p>Use settings for each individual 3A routine.<wbr/></p>
4817<p>Manual control of capture parameters is disabled.<wbr/> All
4818controls in android.<wbr/>control.<wbr/>* besides sceneMode take
4819effect.<wbr/></p></span>
4820                  </li>
4821                  <li>
4822                    <span class="entry_type_enum_name">USE_SCENE_MODE (v3.2)</span>
4823                    <span class="entry_type_enum_optional">[optional]</span>
4824                    <span class="entry_type_enum_notes"><p>Use a specific scene mode.<wbr/></p>
4825<p>Enabling this disables control.<wbr/>aeMode,<wbr/> control.<wbr/>awbMode and
4826control.<wbr/>afMode controls; the camera device will ignore
4827those settings while USE_<wbr/>SCENE_<wbr/>MODE is active (except for
4828FACE_<wbr/>PRIORITY scene mode).<wbr/> Other control entries are still active.<wbr/>
4829This setting can only be used if scene mode is supported (i.<wbr/>e.<wbr/>
4830<a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a>
4831contain some modes other than DISABLED).<wbr/></p>
4832<p>For extended scene modes such as BOKEH,<wbr/> please use USE_<wbr/>EXTENDED_<wbr/>SCENE_<wbr/>MODE instead.<wbr/></p></span>
4833                  </li>
4834                  <li>
4835                    <span class="entry_type_enum_name">OFF_KEEP_STATE (v3.2)</span>
4836                    <span class="entry_type_enum_optional">[optional]</span>
4837                    <span class="entry_type_enum_notes"><p>Same as OFF mode,<wbr/> except that this capture will not be
4838used by camera device background auto-exposure,<wbr/> auto-white balance and
4839auto-focus algorithms (3A) to update their statistics.<wbr/></p>
4840<p>Specifically,<wbr/> the 3A routines are locked to the last
4841values set from a request with AUTO,<wbr/> OFF,<wbr/> or
4842USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> and any statistics or state updates
4843collected from manual captures with OFF_<wbr/>KEEP_<wbr/>STATE will be
4844discarded by the camera device.<wbr/></p></span>
4845                  </li>
4846                  <li>
4847                    <span class="entry_type_enum_name">USE_EXTENDED_SCENE_MODE (v3.5)</span>
4848                    <span class="entry_type_enum_optional">[optional]</span>
4849                    <span class="entry_type_enum_notes"><p>Use a specific extended scene mode.<wbr/></p>
4850<p>When extended scene mode is on,<wbr/> the camera device may override certain control
4851parameters,<wbr/> such as targetFpsRange,<wbr/> AE,<wbr/> AWB,<wbr/> and AF modes,<wbr/> to achieve best power and
4852quality tradeoffs.<wbr/> Only the mandatory stream combinations of LIMITED hardware level
4853are guaranteed.<wbr/></p>
4854<p>This setting can only be used if extended scene mode is supported (i.<wbr/>e.<wbr/>
4855android.<wbr/>control.<wbr/>available<wbr/>Extended<wbr/>Scene<wbr/>Modes
4856contains some modes other than DISABLED).<wbr/></p></span>
4857                  </li>
4858                </ul>
4859
4860            </td> <!-- entry_type -->
4861
4862            <td class="entry_description">
4863              <p>Overall mode of 3A (auto-exposure,<wbr/> auto-white-balance,<wbr/> auto-focus) control
4864routines.<wbr/></p>
4865            </td>
4866
4867            <td class="entry_units">
4868            </td>
4869
4870            <td class="entry_range">
4871              <p><a href="#static_android.control.availableModes">android.<wbr/>control.<wbr/>available<wbr/>Modes</a></p>
4872            </td>
4873
4874            <td class="entry_hal_version">
4875              <p>3.<wbr/>2</p>
4876            </td>
4877
4878            <td class="entry_tags">
4879              <ul class="entry_tags">
4880                  <li><a href="#tag_BC">BC</a></li>
4881              </ul>
4882            </td>
4883
4884          </tr>
4885          <tr class="entries_header">
4886            <th class="th_details" colspan="6">Details</th>
4887          </tr>
4888          <tr class="entry_cont">
4889            <td class="entry_details" colspan="6">
4890              <p>This is a top-level 3A control switch.<wbr/> When set to OFF,<wbr/> all 3A control
4891by the camera device is disabled.<wbr/> The application must set the fields for
4892capture parameters itself.<wbr/></p>
4893<p>When set to AUTO,<wbr/> the individual algorithm controls in
4894android.<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>
4895<p>When set to USE_<wbr/>SCENE_<wbr/>MODE or USE_<wbr/>EXTENDED_<wbr/>SCENE_<wbr/>MODE,<wbr/> the individual controls in
4896android.<wbr/>control.<wbr/>* are mostly disabled,<wbr/> and the camera device
4897implements one of the scene mode or extended scene mode settings (such as ACTION,<wbr/>
4898SUNSET,<wbr/> PARTY,<wbr/> or BOKEH) as it wishes.<wbr/> The camera device scene mode
48993A settings are provided by <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">capture results</a>.<wbr/></p>
4900<p>When set to OFF_<wbr/>KEEP_<wbr/>STATE,<wbr/> it is similar to OFF mode,<wbr/> the only difference
4901is that this frame will not be used by camera device background 3A statistics
4902update,<wbr/> as if this frame is never captured.<wbr/> This mode can be used in the scenario
4903where the application doesn't want a 3A manual control capture to affect
4904the subsequent auto 3A capture results.<wbr/></p>
4905            </td>
4906          </tr>
4907
4908
4909          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4910           <!-- end of entry -->
4911
4912
4913          <tr class="entry" id="controls_android.control.sceneMode">
4914            <td class="entry_name
4915             " rowspan="5">
4916              android.<wbr/>control.<wbr/>scene<wbr/>Mode
4917            </td>
4918            <td class="entry_type">
4919                <span class="entry_type_name entry_type_name_enum">byte</span>
4920
4921              <span class="entry_type_visibility"> [public]</span>
4922
4923
4924              <span class="entry_type_hwlevel">[legacy] </span>
4925
4926
4927
4928                <ul class="entry_type_enum">
4929                  <li>
4930                    <span class="entry_type_enum_name">DISABLED (v3.2)</span>
4931                    <span class="entry_type_enum_value">0</span>
4932                    <span class="entry_type_enum_notes"><p>Indicates that no scene modes are set for a given capture request.<wbr/></p></span>
4933                  </li>
4934                  <li>
4935                    <span class="entry_type_enum_name">FACE_PRIORITY (v3.2)</span>
4936                    <span class="entry_type_enum_notes"><p>If face detection support exists,<wbr/> use face
4937detection data for auto-focus,<wbr/> auto-white balance,<wbr/> and
4938auto-exposure routines.<wbr/></p>
4939<p>If face detection statistics are disabled
4940(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/>
4941this should still operate correctly (but will not return
4942face detection statistics to the framework).<wbr/></p>
4943<p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
4944<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>
4945remain active when FACE_<wbr/>PRIORITY is set.<wbr/></p></span>
4946                  </li>
4947                  <li>
4948                    <span class="entry_type_enum_name">ACTION (v3.2)</span>
4949                    <span class="entry_type_enum_optional">[optional]</span>
4950                    <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving objects.<wbr/></p>
4951<p>Similar to SPORTS.<wbr/></p></span>
4952                  </li>
4953                  <li>
4954                    <span class="entry_type_enum_name">PORTRAIT (v3.2)</span>
4955                    <span class="entry_type_enum_optional">[optional]</span>
4956                    <span class="entry_type_enum_notes"><p>Optimized for still photos of people.<wbr/></p></span>
4957                  </li>
4958                  <li>
4959                    <span class="entry_type_enum_name">LANDSCAPE (v3.2)</span>
4960                    <span class="entry_type_enum_optional">[optional]</span>
4961                    <span class="entry_type_enum_notes"><p>Optimized for photos of distant macroscopic objects.<wbr/></p></span>
4962                  </li>
4963                  <li>
4964                    <span class="entry_type_enum_name">NIGHT (v3.2)</span>
4965                    <span class="entry_type_enum_optional">[optional]</span>
4966                    <span class="entry_type_enum_notes"><p>Optimized for low-light settings.<wbr/></p></span>
4967                  </li>
4968                  <li>
4969                    <span class="entry_type_enum_name">NIGHT_PORTRAIT (v3.2)</span>
4970                    <span class="entry_type_enum_optional">[optional]</span>
4971                    <span class="entry_type_enum_notes"><p>Optimized for still photos of people in low-light
4972settings.<wbr/></p></span>
4973                  </li>
4974                  <li>
4975                    <span class="entry_type_enum_name">THEATRE (v3.2)</span>
4976                    <span class="entry_type_enum_optional">[optional]</span>
4977                    <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings where flash must
4978remain off.<wbr/></p></span>
4979                  </li>
4980                  <li>
4981                    <span class="entry_type_enum_name">BEACH (v3.2)</span>
4982                    <span class="entry_type_enum_optional">[optional]</span>
4983                    <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor beach settings.<wbr/></p></span>
4984                  </li>
4985                  <li>
4986                    <span class="entry_type_enum_name">SNOW (v3.2)</span>
4987                    <span class="entry_type_enum_optional">[optional]</span>
4988                    <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor settings containing snow.<wbr/></p></span>
4989                  </li>
4990                  <li>
4991                    <span class="entry_type_enum_name">SUNSET (v3.2)</span>
4992                    <span class="entry_type_enum_optional">[optional]</span>
4993                    <span class="entry_type_enum_notes"><p>Optimized for scenes of the setting sun.<wbr/></p></span>
4994                  </li>
4995                  <li>
4996                    <span class="entry_type_enum_name">STEADYPHOTO (v3.2)</span>
4997                    <span class="entry_type_enum_optional">[optional]</span>
4998                    <span class="entry_type_enum_notes"><p>Optimized to avoid blurry photos due to small amounts of
4999device motion (for example: due to hand shake).<wbr/></p></span>
5000                  </li>
5001                  <li>
5002                    <span class="entry_type_enum_name">FIREWORKS (v3.2)</span>
5003                    <span class="entry_type_enum_optional">[optional]</span>
5004                    <span class="entry_type_enum_notes"><p>Optimized for nighttime photos of fireworks.<wbr/></p></span>
5005                  </li>
5006                  <li>
5007                    <span class="entry_type_enum_name">SPORTS (v3.2)</span>
5008                    <span class="entry_type_enum_optional">[optional]</span>
5009                    <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving people.<wbr/></p>
5010<p>Similar to ACTION.<wbr/></p></span>
5011                  </li>
5012                  <li>
5013                    <span class="entry_type_enum_name">PARTY (v3.2)</span>
5014                    <span class="entry_type_enum_optional">[optional]</span>
5015                    <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings with multiple moving
5016people.<wbr/></p></span>
5017                  </li>
5018                  <li>
5019                    <span class="entry_type_enum_name">CANDLELIGHT (v3.2)</span>
5020                    <span class="entry_type_enum_optional">[optional]</span>
5021                    <span class="entry_type_enum_notes"><p>Optimized for dim settings where the main light source
5022is a candle.<wbr/></p></span>
5023                  </li>
5024                  <li>
5025                    <span class="entry_type_enum_name">BARCODE (v3.2)</span>
5026                    <span class="entry_type_enum_optional">[optional]</span>
5027                    <span class="entry_type_enum_notes"><p>Optimized for accurately capturing a photo of barcode
5028for use by camera applications that wish to read the
5029barcode value.<wbr/></p></span>
5030                  </li>
5031                  <li>
5032                    <span class="entry_type_enum_name">HIGH_SPEED_VIDEO (v3.2)</span>
5033                    <span class="entry_type_enum_deprecated">[deprecated]</span>
5034                    <span class="entry_type_enum_optional">[optional]</span>
5035                    <span class="entry_type_enum_hidden">[java_public]</span>
5036                    <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>
5037and <a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a>
5038for high speed video recording.<wbr/></p>
5039<p>Optimized for high speed video recording (frame rate &gt;=60fps) use case.<wbr/></p>
5040<p>The supported high speed video sizes and fps ranges are specified in
5041<a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/> To get desired
5042output frame rates,<wbr/> the application is only allowed to select video size
5043and fps range combinations listed in this static metadata.<wbr/> The fps range
5044can be control via <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a>.<wbr/></p>
5045<p>In this mode,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to
5046ON,<wbr/> ON,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode
5047controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture
5048and post-processing parameters is possible.<wbr/> All other controls operate the
5049same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other
5050android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p>
5051<ul>
5052<li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li>
5053<li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li>
5054<li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li>
5055<li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li>
5056<li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li>
5057<li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li>
5058<li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li>
5059<li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li>
5060<li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li>
5061<li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li>
5062<li><a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a></li>
5063</ul>
5064<p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p>
5065<ul>
5066<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>
5067<li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li>
5068<li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li>
5069<li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></li>
5070</ul>
5071<p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may
5072be lower than what camera can output,<wbr/> depending on the destination Surfaces for
5073the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/>
5074the application need check if the video encoder is capable of supporting the
5075high frame rate for a given video size,<wbr/> or it will end up with lower recording
5076frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the preview frame
5077rate will be bounded by the screen refresh rate.<wbr/></p>
5078<p>The camera device will only support up to 2 output high speed streams
5079(processed non-stalling format defined in <a href="#static_android.request.maxNumOutputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams</a>)
5080in this mode.<wbr/> This control will be effective only if all of below conditions are true:</p>
5081<ul>
5082<li>The application created no more than maxNumHighSpeedStreams processed non-stalling
5083format output streams,<wbr/> where maxNumHighSpeedStreams is calculated as
5084min(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>
5085<li>The stream sizes are selected from the sizes reported by
5086<a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/></li>
5087<li>No processed non-stalling or raw streams are configured.<wbr/></li>
5088</ul>
5089<p>When above conditions are NOT satisfied,<wbr/> the controls of this mode and
5090<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/>
5091the camera device will fall back to <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> <code>==</code> AUTO,<wbr/>
5092and the returned capture result metadata will give the fps range chosen
5093by the camera device.<wbr/></p>
5094<p>Switching into or out of this mode may trigger some camera ISP/<wbr/>sensor
5095reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that
5096the application avoids unnecessary scene mode switch as much as possible.<wbr/></p></span>
5097                  </li>
5098                  <li>
5099                    <span class="entry_type_enum_name">HDR (v3.2)</span>
5100                    <span class="entry_type_enum_optional">[optional]</span>
5101                    <span class="entry_type_enum_notes"><p>Turn on a device-specific high dynamic range (HDR) mode.<wbr/></p>
5102<p>In this scene mode,<wbr/> the camera device captures images
5103that keep a larger range of scene illumination levels
5104visible in the final image.<wbr/> For example,<wbr/> when taking a
5105picture of a object in front of a bright window,<wbr/> both
5106the object and the scene through the window may be
5107visible when using HDR mode,<wbr/> while in normal AUTO mode,<wbr/>
5108one or the other may be poorly exposed.<wbr/> As a tradeoff,<wbr/>
5109HDR mode generally takes much longer to capture a single
5110image,<wbr/> has no user control,<wbr/> and may have other artifacts
5111depending on the HDR method used.<wbr/></p>
5112<p>Therefore,<wbr/> HDR captures operate at a much slower rate
5113than regular captures.<wbr/></p>
5114<p>In this mode,<wbr/> on LIMITED or FULL devices,<wbr/> when a request
5115is made with a <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> of
5116STILL_<wbr/>CAPTURE,<wbr/> the camera device will capture an image
5117using a high dynamic range capture technique.<wbr/>  On LEGACY
5118devices,<wbr/> captures that target a JPEG-format output will
5119be captured with HDR,<wbr/> and the capture intent is not
5120relevant.<wbr/></p>
5121<p>The HDR capture may involve the device capturing a burst
5122of images internally and combining them into one,<wbr/> or it
5123may involve the device using specialized high dynamic
5124range capture hardware.<wbr/> In all cases,<wbr/> a single image is
5125produced in response to a capture request submitted
5126while in HDR mode.<wbr/></p>
5127<p>Since substantial post-processing is generally needed to
5128produce an HDR image,<wbr/> only YUV,<wbr/> PRIVATE,<wbr/> and JPEG
5129outputs are supported for LIMITED/<wbr/>FULL device HDR
5130captures,<wbr/> and only JPEG outputs are supported for LEGACY
5131HDR captures.<wbr/> Using a RAW output for HDR capture is not
5132supported.<wbr/></p>
5133<p>Some devices may also support always-on HDR,<wbr/> which
5134applies HDR processing at full frame rate.<wbr/>  For these
5135devices,<wbr/> intents other than STILL_<wbr/>CAPTURE will also
5136produce an HDR output with no frame rate impact compared
5137to normal operation,<wbr/> though the quality may be lower
5138than for STILL_<wbr/>CAPTURE intents.<wbr/></p>
5139<p>If SCENE_<wbr/>MODE_<wbr/>HDR is used with unsupported output types
5140or capture intents,<wbr/> the images captured will be as if
5141the SCENE_<wbr/>MODE was not enabled at all.<wbr/></p></span>
5142                  </li>
5143                  <li>
5144                    <span class="entry_type_enum_name">FACE_PRIORITY_LOW_LIGHT (v3.2)</span>
5145                    <span class="entry_type_enum_optional">[optional]</span>
5146                    <span class="entry_type_enum_hidden">[hidden]</span>
5147                    <span class="entry_type_enum_notes"><p>Same as FACE_<wbr/>PRIORITY scene mode,<wbr/> except that the camera
5148device will choose higher sensitivity values (<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>)
5149under low light conditions.<wbr/></p>
5150<p>The camera device may be tuned to expose the images in a reduced
5151sensitivity range to produce the best quality images.<wbr/> For example,<wbr/>
5152if 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/>
5153the camera device auto-exposure routine tuning process may limit the actual
5154exposure sensitivity range to [100,<wbr/> 1200] to ensure that the noise level isn't
5155excessive in order to preserve the image quality.<wbr/> Under this situation,<wbr/> the image under
5156low light may be under-exposed when the sensor max exposure time (bounded by the
5157<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
5158ON_<wbr/>* modes) and effective max sensitivity are reached.<wbr/> This scene mode allows the
5159camera device auto-exposure routine to increase the sensitivity up to the max
5160sensitivity specified by <a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a> when the scene is too
5161dark and the max exposure time is reached.<wbr/> The captured images may be noisier
5162compared with the images captured in normal FACE_<wbr/>PRIORITY mode; therefore,<wbr/> it is
5163recommended that the application only use this scene mode when it is capable of
5164reducing the noise level of the captured images.<wbr/></p>
5165<p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
5166<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>
5167remain active when FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT is set.<wbr/></p></span>
5168                  </li>
5169                  <li>
5170                    <span class="entry_type_enum_name">DEVICE_CUSTOM_START (v3.2)</span>
5171                    <span class="entry_type_enum_optional">[optional]</span>
5172                    <span class="entry_type_enum_hidden">[hidden]</span>
5173                    <span class="entry_type_enum_value">100</span>
5174                    <span class="entry_type_enum_notes"><p>Scene mode values within the range of
5175<code>[DEVICE_<wbr/>CUSTOM_<wbr/>START,<wbr/> DEVICE_<wbr/>CUSTOM_<wbr/>END]</code> are reserved for device specific
5176customized scene modes.<wbr/></p></span>
5177                  </li>
5178                  <li>
5179                    <span class="entry_type_enum_name">DEVICE_CUSTOM_END (v3.2)</span>
5180                    <span class="entry_type_enum_optional">[optional]</span>
5181                    <span class="entry_type_enum_hidden">[hidden]</span>
5182                    <span class="entry_type_enum_value">127</span>
5183                    <span class="entry_type_enum_notes"><p>Scene mode values within the range of
5184<code>[DEVICE_<wbr/>CUSTOM_<wbr/>START,<wbr/> DEVICE_<wbr/>CUSTOM_<wbr/>END]</code> are reserved for device specific
5185customized scene modes.<wbr/></p></span>
5186                  </li>
5187                </ul>
5188
5189            </td> <!-- entry_type -->
5190
5191            <td class="entry_description">
5192              <p>Control for which scene mode is currently active.<wbr/></p>
5193            </td>
5194
5195            <td class="entry_units">
5196            </td>
5197
5198            <td class="entry_range">
5199              <p><a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a></p>
5200            </td>
5201
5202            <td class="entry_hal_version">
5203              <p>3.<wbr/>2</p>
5204            </td>
5205
5206            <td class="entry_tags">
5207              <ul class="entry_tags">
5208                  <li><a href="#tag_BC">BC</a></li>
5209              </ul>
5210            </td>
5211
5212          </tr>
5213          <tr class="entries_header">
5214            <th class="th_details" colspan="6">Details</th>
5215          </tr>
5216          <tr class="entry_cont">
5217            <td class="entry_details" colspan="6">
5218              <p>Scene modes are custom camera modes optimized for a certain set of conditions and
5219capture settings.<wbr/></p>
5220<p>This is the mode that that is active when
5221<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
5222disable <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>
5223while in use.<wbr/></p>
5224<p>The interpretation and implementation of these scene modes is left
5225to the implementor of the camera device.<wbr/> Their behavior will not be
5226consistent across all devices,<wbr/> and any given device may only implement
5227a subset of these modes.<wbr/></p>
5228            </td>
5229          </tr>
5230
5231          <tr class="entries_header">
5232            <th class="th_details" colspan="6">HAL Implementation Details</th>
5233          </tr>
5234          <tr class="entry_cont">
5235            <td class="entry_details" colspan="6">
5236              <p>HAL implementations that include scene modes are expected to provide
5237the per-scene settings to use for <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
5238<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
5239<a href="#static_android.control.sceneModeOverrides">android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides</a>.<wbr/></p>
5240<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
5241HAL must list supported video size and fps range in
5242<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/>
5243if the HAL has two different sensor configurations for normal streaming mode and high
5244speed streaming,<wbr/> when this scene mode is set/<wbr/>reset in a sequence of capture requests,<wbr/> the
5245HAL may have to switch between different sensor modes.<wbr/>  This mode is deprecated in legacy
5246HAL3.<wbr/>3,<wbr/> to support high speed video recording,<wbr/> please implement
5247<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
5248capability defined in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
5249            </td>
5250          </tr>
5251
5252          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5253           <!-- end of entry -->
5254
5255
5256          <tr class="entry" id="controls_android.control.videoStabilizationMode">
5257            <td class="entry_name
5258             " rowspan="5">
5259              android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode
5260            </td>
5261            <td class="entry_type">
5262                <span class="entry_type_name entry_type_name_enum">byte</span>
5263
5264              <span class="entry_type_visibility"> [public]</span>
5265
5266
5267              <span class="entry_type_hwlevel">[legacy] </span>
5268
5269
5270
5271                <ul class="entry_type_enum">
5272                  <li>
5273                    <span class="entry_type_enum_name">OFF (v3.2)</span>
5274                    <span class="entry_type_enum_notes"><p>Video stabilization is disabled.<wbr/></p></span>
5275                  </li>
5276                  <li>
5277                    <span class="entry_type_enum_name">ON (v3.2)</span>
5278                    <span class="entry_type_enum_notes"><p>Video stabilization is enabled.<wbr/></p></span>
5279                  </li>
5280                  <li>
5281                    <span class="entry_type_enum_name">PREVIEW_STABILIZATION (v3.8)</span>
5282                    <span class="entry_type_enum_optional">[optional]</span>
5283                    <span class="entry_type_enum_notes"><p>Preview stabilization,<wbr/> where the preview in addition to all other non-RAW streams are
5284stabilized with the same quality of stabilization,<wbr/> is enabled.<wbr/> This mode aims to give
5285clients a 'what you see is what you get' effect.<wbr/> In this mode,<wbr/> the FoV reduction will
5286be a maximum of 20 % both horizontally and vertically
5287(10% from left,<wbr/> right,<wbr/> top,<wbr/> bottom) for the given zoom ratio /<wbr/> crop region.<wbr/>
5288The resultant FoV will also be the same across all processed streams
5289(that have the same aspect ratio).<wbr/></p></span>
5290                  </li>
5291                </ul>
5292
5293            </td> <!-- entry_type -->
5294
5295            <td class="entry_description">
5296              <p>Whether video stabilization is
5297active.<wbr/></p>
5298            </td>
5299
5300            <td class="entry_units">
5301            </td>
5302
5303            <td class="entry_range">
5304            </td>
5305
5306            <td class="entry_hal_version">
5307              <p>3.<wbr/>2</p>
5308            </td>
5309
5310            <td class="entry_tags">
5311              <ul class="entry_tags">
5312                  <li><a href="#tag_BC">BC</a></li>
5313              </ul>
5314            </td>
5315
5316          </tr>
5317          <tr class="entries_header">
5318            <th class="th_details" colspan="6">Details</th>
5319          </tr>
5320          <tr class="entry_cont">
5321            <td class="entry_details" colspan="6">
5322              <p>Video stabilization automatically warps images from
5323the camera in order to stabilize motion between consecutive frames.<wbr/></p>
5324<p>If enabled,<wbr/> video stabilization can modify the
5325<a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> to keep the video stream stabilized.<wbr/></p>
5326<p>Switching between different video stabilization modes may take several
5327frames to initialize,<wbr/> the camera device will report the current mode
5328in capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/>
5329the video stabilization modes in the first several capture results may
5330still be "OFF",<wbr/> and it will become "ON" when the initialization is
5331done.<wbr/></p>
5332<p>In addition,<wbr/> not all recording sizes or frame rates may be supported for
5333stabilization by a device that reports stabilization support.<wbr/> It is guaranteed
5334that an output targeting a MediaRecorder or MediaCodec will be stabilized if
5335the recording resolution is less than or equal to 1920 x 1080 (width less than
5336or equal to 1920,<wbr/> height less than or equal to 1080),<wbr/> and the recording
5337frame rate is less than or equal to 30fps.<wbr/>  At other sizes,<wbr/> the CaptureResult
5338<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a> field will return
5339OFF if the recording output is not stabilized,<wbr/> or if there are no output
5340Surface types that can be stabilized.<wbr/></p>
5341<p>The application is strongly recommended to call
5342<a href="https://developer.android.com/reference/android/hardware/camera2/params/SessionConfiguration.html#setSessionParameters">SessionConfiguration#setSessionParameters</a>
5343with the desired video stabilization mode before creating the capture session.<wbr/>
5344Video stabilization mode is a session parameter on many devices.<wbr/> Specifying
5345it at session creation time helps avoid reconfiguration delay caused by difference
5346between the default value and the first CaptureRequest.<wbr/></p>
5347<p>If a camera device supports both this mode and OIS
5348(<a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may
5349produce undesirable interaction,<wbr/> so it is recommended not to enable
5350both at the same time.<wbr/></p>
5351<p>If video stabilization is set to "PREVIEW_<wbr/>STABILIZATION",<wbr/>
5352<a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> is overridden.<wbr/> The camera sub-system may choose
5353to turn on hardware based image stabilization in addition to software based stabilization
5354if it deems that appropriate.<wbr/>
5355This key may be a part of the available session keys,<wbr/> which camera clients may
5356query via
5357<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableSessionKeys">CameraCharacteristics#getAvailableSessionKeys</a>.<wbr/>
5358If this is the case,<wbr/> changing this key over the life-time of a capture session may
5359cause delays /<wbr/> glitches.<wbr/></p>
5360            </td>
5361          </tr>
5362
5363          <tr class="entries_header">
5364            <th class="th_details" colspan="6">HAL Implementation Details</th>
5365          </tr>
5366          <tr class="entry_cont">
5367            <td class="entry_details" colspan="6">
5368              <p>When this key is set to "PREVIEW_<wbr/>STABILIZATION",<wbr/>
5369for non-stalling buffers returned without errors,<wbr/> the time interval between notify readout
5370timestamp and when buffers are returned to the camera framework,<wbr/> must be no more than 1
5371extra frame interval,<wbr/> relative to the case where this key is set to "OFF".<wbr/></p>
5372<p>This is in order for look-ahead time period to be short enough
5373for preview to match video recording for real-time usage.<wbr/></p>
5374            </td>
5375          </tr>
5376
5377          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5378           <!-- end of entry -->
5379
5380
5381          <tr class="entry" id="controls_android.control.postRawSensitivityBoost">
5382            <td class="entry_name
5383             " rowspan="3">
5384              android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost
5385            </td>
5386            <td class="entry_type">
5387                <span class="entry_type_name">int32</span>
5388
5389              <span class="entry_type_visibility"> [public]</span>
5390
5391
5392
5393
5394
5395
5396            </td> <!-- entry_type -->
5397
5398            <td class="entry_description">
5399              <p>The amount of additional sensitivity boost applied to output images
5400after RAW sensor data is captured.<wbr/></p>
5401            </td>
5402
5403            <td class="entry_units">
5404              ISO arithmetic units,<wbr/> the same as android.<wbr/>sensor.<wbr/>sensitivity
5405            </td>
5406
5407            <td class="entry_range">
5408              <p><a href="#static_android.control.postRawSensitivityBoostRange">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost<wbr/>Range</a></p>
5409            </td>
5410
5411            <td class="entry_hal_version">
5412              <p>3.<wbr/>2</p>
5413            </td>
5414
5415            <td class="entry_tags">
5416            </td>
5417
5418          </tr>
5419          <tr class="entries_header">
5420            <th class="th_details" colspan="6">Details</th>
5421          </tr>
5422          <tr class="entry_cont">
5423            <td class="entry_details" colspan="6">
5424              <p>Some camera devices support additional digital sensitivity boosting in the
5425camera processing pipeline after sensor RAW image is captured.<wbr/>
5426Such a boost will be applied to YUV/<wbr/>JPEG format output images but will not
5427have effect on RAW output formats like RAW_<wbr/>SENSOR,<wbr/> RAW10,<wbr/> RAW12 or RAW_<wbr/>OPAQUE.<wbr/></p>
5428<p>This key will be <code>null</code> for devices that do not support any RAW format
5429outputs.<wbr/> For devices that do support RAW format outputs,<wbr/> this key will always
5430present,<wbr/> and if a device does not support post RAW sensitivity boost,<wbr/> it will
5431list <code>100</code> in this key.<wbr/></p>
5432<p>If the camera device cannot apply the exact boost requested,<wbr/> it will reduce the
5433boost to the nearest supported value.<wbr/>
5434The final boost value used will be available in the output capture result.<wbr/></p>
5435<p>For devices that support post RAW sensitivity boost,<wbr/> the YUV/<wbr/>JPEG output images
5436of such device will have the total sensitivity of
5437<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>
5438The sensitivity of RAW format images will always be <code><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></code></p>
5439<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
5440OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
5441            </td>
5442          </tr>
5443
5444
5445          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5446           <!-- end of entry -->
5447
5448
5449          <tr class="entry" id="controls_android.control.enableZsl">
5450            <td class="entry_name
5451             " rowspan="5">
5452              android.<wbr/>control.<wbr/>enable<wbr/>Zsl
5453            </td>
5454            <td class="entry_type">
5455                <span class="entry_type_name entry_type_name_enum">byte</span>
5456
5457              <span class="entry_type_visibility"> [public as boolean]</span>
5458
5459
5460
5461
5462
5463                <ul class="entry_type_enum">
5464                  <li>
5465                    <span class="entry_type_enum_name">FALSE (v3.2)</span>
5466                    <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
5467after previous requests.<wbr/></p></span>
5468                  </li>
5469                  <li>
5470                    <span class="entry_type_enum_name">TRUE (v3.2)</span>
5471                    <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
5472captured before previous requests.<wbr/></p></span>
5473                  </li>
5474                </ul>
5475
5476            </td> <!-- entry_type -->
5477
5478            <td class="entry_description">
5479              <p>Allow camera device to enable zero-shutter-lag mode for requests with
5480<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE.<wbr/></p>
5481            </td>
5482
5483            <td class="entry_units">
5484            </td>
5485
5486            <td class="entry_range">
5487            </td>
5488
5489            <td class="entry_hal_version">
5490              <p>3.<wbr/>2</p>
5491            </td>
5492
5493            <td class="entry_tags">
5494            </td>
5495
5496          </tr>
5497          <tr class="entries_header">
5498            <th class="th_details" colspan="6">Details</th>
5499          </tr>
5500          <tr class="entry_cont">
5501            <td class="entry_details" colspan="6">
5502              <p>If enableZsl is <code>true</code>,<wbr/> the camera device may enable zero-shutter-lag mode for requests with
5503STILL_<wbr/>CAPTURE capture intent.<wbr/> The camera device may use images captured in the past to
5504produce output images for a zero-shutter-lag request.<wbr/> The result metadata including the
5505<a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a> reflects the source frames used to produce output images.<wbr/>
5506Therefore,<wbr/> the contents of the output images and the result metadata may be out of order
5507compared to previous regular requests.<wbr/> enableZsl does not affect requests with other
5508capture intents.<wbr/></p>
5509<p>For example,<wbr/> when requests are submitted in the following order:
5510  Request A: enableZsl is ON,<wbr/> <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> is PREVIEW
5511  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>
5512<p>The output images for request B may have contents captured before the output images for
5513request A,<wbr/> and the result metadata for request B may be older than the result metadata for
5514request A.<wbr/></p>
5515<p>Note that when enableZsl is <code>true</code>,<wbr/> it is not guaranteed to get output images captured in
5516the past for requests with STILL_<wbr/>CAPTURE capture intent.<wbr/></p>
5517<p>For applications targeting SDK versions O and newer,<wbr/> the value of enableZsl in
5518TEMPLATE_<wbr/>STILL_<wbr/>CAPTURE template may be <code>true</code>.<wbr/> The value in other templates is always
5519<code>false</code> if present.<wbr/></p>
5520<p>For applications targeting SDK versions older than O,<wbr/> the value of enableZsl in all
5521capture templates is always <code>false</code> if present.<wbr/></p>
5522<p>For application-operated ZSL,<wbr/> use CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p>
5523            </td>
5524          </tr>
5525
5526          <tr class="entries_header">
5527            <th class="th_details" colspan="6">HAL Implementation Details</th>
5528          </tr>
5529          <tr class="entry_cont">
5530            <td class="entry_details" colspan="6">
5531              <p>It is valid for HAL to produce regular output images for requests with STILL_<wbr/>CAPTURE
5532capture intent.<wbr/></p>
5533            </td>
5534          </tr>
5535
5536          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5537           <!-- end of entry -->
5538
5539
5540          <tr class="entry" id="controls_android.control.extendedSceneMode">
5541            <td class="entry_name
5542             " rowspan="3">
5543              android.<wbr/>control.<wbr/>extended<wbr/>Scene<wbr/>Mode
5544            </td>
5545            <td class="entry_type">
5546                <span class="entry_type_name entry_type_name_enum">byte</span>
5547
5548              <span class="entry_type_visibility"> [public]</span>
5549
5550
5551
5552
5553
5554                <ul class="entry_type_enum">
5555                  <li>
5556                    <span class="entry_type_enum_name">DISABLED (v3.5)</span>
5557                    <span class="entry_type_enum_value">0</span>
5558                    <span class="entry_type_enum_notes"><p>Extended scene mode is disabled.<wbr/></p></span>
5559                  </li>
5560                  <li>
5561                    <span class="entry_type_enum_name">BOKEH_STILL_CAPTURE (v3.5)</span>
5562                    <span class="entry_type_enum_notes"><p>High quality bokeh mode is enabled for all non-raw streams (including YUV,<wbr/>
5563JPEG,<wbr/> and IMPLEMENTATION_<wbr/>DEFINED) when capture intent is STILL_<wbr/>CAPTURE.<wbr/> Due to the
5564extra image processing,<wbr/> this mode may introduce additional stall to non-raw streams.<wbr/>
5565This mode should be used in high quality still capture use case.<wbr/></p></span>
5566                  </li>
5567                  <li>
5568                    <span class="entry_type_enum_name">BOKEH_CONTINUOUS (v3.5)</span>
5569                    <span class="entry_type_enum_notes"><p>Bokeh effect must not slow down capture rate relative to sensor raw output,<wbr/>
5570and the effect is applied to all processed streams no larger than the maximum
5571streaming dimension.<wbr/> This mode should be used if performance and power are a
5572priority,<wbr/> such as video recording.<wbr/></p></span>
5573                  </li>
5574                  <li>
5575                    <span class="entry_type_enum_name">VENDOR_START (v3.5)</span>
5576                    <span class="entry_type_enum_hidden">[hidden]</span>
5577                    <span class="entry_type_enum_value">0x40</span>
5578                    <span class="entry_type_enum_notes"><p>Vendor defined extended scene modes.<wbr/> These depend on vendor implementation.<wbr/></p></span>
5579                  </li>
5580                </ul>
5581
5582            </td> <!-- entry_type -->
5583
5584            <td class="entry_description">
5585              <p>Whether extended scene mode is enabled for a particular capture request.<wbr/></p>
5586            </td>
5587
5588            <td class="entry_units">
5589            </td>
5590
5591            <td class="entry_range">
5592            </td>
5593
5594            <td class="entry_hal_version">
5595              <p>3.<wbr/>5</p>
5596            </td>
5597
5598            <td class="entry_tags">
5599            </td>
5600
5601          </tr>
5602          <tr class="entries_header">
5603            <th class="th_details" colspan="6">Details</th>
5604          </tr>
5605          <tr class="entry_cont">
5606            <td class="entry_details" colspan="6">
5607              <p>With bokeh mode,<wbr/> the camera device may blur out the parts of scene that are not in
5608focus,<wbr/> creating a bokeh (or shallow depth of field) effect for people or objects.<wbr/></p>
5609<p>When set to BOKEH_<wbr/>STILL_<wbr/>CAPTURE mode with STILL_<wbr/>CAPTURE capture intent,<wbr/> due to the extra
5610processing needed for high quality bokeh effect,<wbr/> the stall may be longer than when
5611capture intent is not STILL_<wbr/>CAPTURE.<wbr/></p>
5612<p>When set to BOKEH_<wbr/>STILL_<wbr/>CAPTURE mode with PREVIEW capture intent,<wbr/></p>
5613<ul>
5614<li>If the camera device has BURST_<wbr/>CAPTURE capability,<wbr/> the frame rate requirement of
5615BURST_<wbr/>CAPTURE must still be met.<wbr/></li>
5616<li>All streams not larger than the maximum streaming dimension for BOKEH_<wbr/>STILL_<wbr/>CAPTURE mode
5617(queried via <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#CONTROL_AVAILABLE_EXTENDED_SCENE_MODE_CAPABILITIES">Camera<wbr/>Characteristics#CONTROL_<wbr/>AVAILABLE_<wbr/>EXTENDED_<wbr/>SCENE_<wbr/>MODE_<wbr/>CAPABILITIES</a>)
5618will have preview bokeh effect applied.<wbr/></li>
5619</ul>
5620<p>When set to BOKEH_<wbr/>CONTINUOUS mode,<wbr/> configured streams dimension should not exceed this mode's
5621maximum streaming dimension in order to have bokeh effect applied.<wbr/> Bokeh effect may not
5622be available for streams larger than the maximum streaming dimension.<wbr/></p>
5623<p>Switching between different extended scene modes may involve reconfiguration of the camera
5624pipeline,<wbr/> resulting in long latency.<wbr/> The application should check this key against the
5625available session keys queried via
5626<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableSessionKeys">CameraCharacteristics#getAvailableSessionKeys</a>.<wbr/></p>
5627<p>For a logical multi-camera,<wbr/> bokeh may be implemented by stereo vision from sub-cameras
5628with different field of view.<wbr/> As a result,<wbr/> when bokeh mode is enabled,<wbr/> the camera device
5629may override <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> or <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a>,<wbr/> and the field of
5630view may be smaller than when bokeh mode is off.<wbr/></p>
5631            </td>
5632          </tr>
5633
5634
5635          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5636           <!-- end of entry -->
5637
5638
5639          <tr class="entry" id="controls_android.control.zoomRatio">
5640            <td class="entry_name
5641             " rowspan="5">
5642              android.<wbr/>control.<wbr/>zoom<wbr/>Ratio
5643            </td>
5644            <td class="entry_type">
5645                <span class="entry_type_name">float</span>
5646
5647              <span class="entry_type_visibility"> [public]</span>
5648
5649
5650              <span class="entry_type_hwlevel">[limited] </span>
5651
5652
5653
5654
5655            </td> <!-- entry_type -->
5656
5657            <td class="entry_description">
5658              <p>The desired zoom ratio</p>
5659            </td>
5660
5661            <td class="entry_units">
5662            </td>
5663
5664            <td class="entry_range">
5665              <p><a href="#static_android.control.zoomRatioRange">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio<wbr/>Range</a></p>
5666            </td>
5667
5668            <td class="entry_hal_version">
5669              <p>3.<wbr/>5</p>
5670            </td>
5671
5672            <td class="entry_tags">
5673            </td>
5674
5675          </tr>
5676          <tr class="entries_header">
5677            <th class="th_details" colspan="6">Details</th>
5678          </tr>
5679          <tr class="entry_cont">
5680            <td class="entry_details" colspan="6">
5681              <p>Instead of using <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> for zoom,<wbr/> the application can now choose to
5682use this tag to specify the desired zoom level.<wbr/></p>
5683<p>By using this control,<wbr/> the application gains a simpler way to control zoom,<wbr/> which can
5684be a combination of optical and digital zoom.<wbr/> For example,<wbr/> a multi-camera system may
5685contain more than one lens with different focal lengths,<wbr/> and the user can use optical
5686zoom by switching between lenses.<wbr/> Using zoomRatio has benefits in the scenarios below:</p>
5687<ul>
5688<li>Zooming in from a wide-angle lens to a telephoto lens: A floating-point ratio provides
5689  better precision compared to an integer value of <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></li>
5690<li>Zooming out from a wide lens to an ultrawide lens: zoomRatio supports zoom-out whereas
5691  <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> doesn't.<wbr/></li>
5692</ul>
5693<p>To illustrate,<wbr/> here are several scenarios of different zoom ratios,<wbr/> crop regions,<wbr/>
5694and output streams,<wbr/> for a hypothetical camera device with an active array of size
5695<code>(2000,<wbr/>1500)</code>.<wbr/></p>
5696<ul>
5697<li>Camera Configuration:<ul>
5698<li>Active array size: <code>2000x1500</code> (3 MP,<wbr/> 4:3 aspect ratio)</li>
5699<li>Output stream #1: <code>640x480</code> (VGA,<wbr/> 4:3 aspect ratio)</li>
5700<li>Output stream #2: <code>1280x720</code> (720p,<wbr/> 16:9 aspect ratio)</li>
5701</ul>
5702</li>
5703<li>Case #1: 4:3 crop region with 2.<wbr/>0x zoom ratio<ul>
5704<li>Zoomed field of view: 1/<wbr/>4 of original field of view</li>
5705<li>Crop region: <code>Rect(0,<wbr/> 0,<wbr/> 2000,<wbr/> 1500) //<wbr/> (left,<wbr/> top,<wbr/> right,<wbr/> bottom)</code> (post zoom)</li>
5706</ul>
5707</li>
5708<li><img alt="4:3 aspect ratio crop diagram" src="images/camera2/metadata/android.control.zoomRatio/zoom-ratio-2-crop-43.png"/><ul>
5709<li><code>640x480</code> stream source area: <code>(0,<wbr/> 0,<wbr/> 2000,<wbr/> 1500)</code> (equal to crop region)</li>
5710<li><code>1280x720</code> stream source area: <code>(0,<wbr/> 187,<wbr/> 2000,<wbr/> 1312)</code> (letterboxed)</li>
5711</ul>
5712</li>
5713<li>Case #2: 16:9 crop region with 2.<wbr/>0x zoom.<wbr/><ul>
5714<li>Zoomed field of view: 1/<wbr/>4 of original field of view</li>
5715<li>Crop region: <code>Rect(0,<wbr/> 187,<wbr/> 2000,<wbr/> 1312)</code></li>
5716<li><img alt="16:9 aspect ratio crop diagram" src="images/camera2/metadata/android.control.zoomRatio/zoom-ratio-2-crop-169.png"/></li>
5717<li><code>640x480</code> stream source area: <code>(250,<wbr/> 187,<wbr/> 1750,<wbr/> 1312)</code> (pillarboxed)</li>
5718<li><code>1280x720</code> stream source area: <code>(0,<wbr/> 187,<wbr/> 2000,<wbr/> 1312)</code> (equal to crop region)</li>
5719</ul>
5720</li>
5721<li>Case #3: 1:1 crop region with 0.<wbr/>5x zoom out to ultrawide lens.<wbr/><ul>
5722<li>Zoomed field of view: 4x of original field of view (switched from wide lens to ultrawide lens)</li>
5723<li>Crop region: <code>Rect(250,<wbr/> 0,<wbr/> 1750,<wbr/> 1500)</code></li>
5724<li><img alt="1:1 aspect ratio crop diagram" src="images/camera2/metadata/android.control.zoomRatio/zoom-ratio-0.5-crop-11.png"/></li>
5725<li><code>640x480</code> stream source area: <code>(250,<wbr/> 187,<wbr/> 1750,<wbr/> 1312)</code> (letterboxed)</li>
5726<li><code>1280x720</code> stream source area: <code>(250,<wbr/> 328,<wbr/> 1750,<wbr/> 1172)</code> (letterboxed)</li>
5727</ul>
5728</li>
5729</ul>
5730<p>As seen from the graphs above,<wbr/> the coordinate system of cropRegion now changes to the
5731effective after-zoom field-of-view,<wbr/> and is represented by the rectangle of (0,<wbr/> 0,<wbr/>
5732activeArrayWith,<wbr/> activeArrayHeight).<wbr/> The same applies to AE/<wbr/>AWB/<wbr/>AF regions,<wbr/> and faces.<wbr/>
5733This coordinate system change isn't applicable to RAW capture and its related
5734metadata such as intrinsicCalibration and lensShadingMap.<wbr/></p>
5735<p>Using the same hypothetical example above,<wbr/> and assuming output stream #1 (640x480) is
5736the viewfinder stream,<wbr/> the application can achieve 2.<wbr/>0x zoom in one of two ways:</p>
5737<ul>
5738<li>zoomRatio = 2.<wbr/>0,<wbr/> scaler.<wbr/>cropRegion = (0,<wbr/> 0,<wbr/> 2000,<wbr/> 1500)</li>
5739<li>zoomRatio = 1.<wbr/>0 (default),<wbr/> scaler.<wbr/>cropRegion = (500,<wbr/> 375,<wbr/> 1500,<wbr/> 1125)</li>
5740</ul>
5741<p>If the application intends to set aeRegions to be top-left quarter of the viewfinder
5742field-of-view,<wbr/> the <a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a> should be set to (0,<wbr/> 0,<wbr/> 1000,<wbr/> 750) with
5743zoomRatio set to 2.<wbr/>0.<wbr/> Alternatively,<wbr/> the application can set aeRegions to the equivalent
5744region of (500,<wbr/> 375,<wbr/> 1000,<wbr/> 750) for zoomRatio of 1.<wbr/>0.<wbr/> If the application doesn't
5745explicitly set <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a>,<wbr/> its value defaults to 1.<wbr/>0.<wbr/></p>
5746<p>One limitation of controlling zoom using zoomRatio is that the <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>
5747must only be used for letterboxing or pillarboxing of the sensor active array,<wbr/> and no
5748FREEFORM cropping can be used with <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> other than 1.<wbr/>0.<wbr/> If
5749<a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> is not 1.<wbr/>0,<wbr/> and <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> is set to be
5750windowboxing,<wbr/> the camera framework will override the <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> to be
5751the active array.<wbr/></p>
5752<p>In the capture request,<wbr/> if the application sets <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> to a
5753value != 1.<wbr/>0,<wbr/> the <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> tag in the capture result reflects the
5754effective zoom ratio achieved by the camera device,<wbr/> and the <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>
5755adjusts for additional crops that are not zoom related.<wbr/> Otherwise,<wbr/> if the application
5756sets <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> to 1.<wbr/>0,<wbr/> or does not set it at all,<wbr/> the
5757<a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> tag in the result metadata will also be 1.<wbr/>0.<wbr/></p>
5758<p>When the application requests a physical stream for a logical multi-camera,<wbr/> the
5759<a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> in the physical camera result metadata will be 1.<wbr/>0,<wbr/> and
5760the <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> tag reflects the amount of zoom and crop done by the
5761physical camera device.<wbr/></p>
5762            </td>
5763          </tr>
5764
5765          <tr class="entries_header">
5766            <th class="th_details" colspan="6">HAL Implementation Details</th>
5767          </tr>
5768          <tr class="entry_cont">
5769            <td class="entry_details" colspan="6">
5770              <p>For all capture request templates,<wbr/> this field must be set to 1.<wbr/>0 in order to have
5771consistent field of views between different modes.<wbr/></p>
5772            </td>
5773          </tr>
5774
5775          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5776           <!-- end of entry -->
5777
5778
5779          <tr class="entry" id="controls_android.control.afRegionsSet">
5780            <td class="entry_name
5781             " rowspan="3">
5782              android.<wbr/>control.<wbr/>af<wbr/>Regions<wbr/>Set
5783            </td>
5784            <td class="entry_type">
5785                <span class="entry_type_name entry_type_name_enum">byte</span>
5786
5787              <span class="entry_type_visibility"> [fwk_only as boolean]</span>
5788
5789
5790
5791
5792
5793                <ul class="entry_type_enum">
5794                  <li>
5795                    <span class="entry_type_enum_name">FALSE (v3.2)</span>
5796                    <span class="entry_type_enum_notes"><p>AF regions (<a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a>) have not been set by the camera client.<wbr/></p></span>
5797                  </li>
5798                  <li>
5799                    <span class="entry_type_enum_name">TRUE (v3.2)</span>
5800                    <span class="entry_type_enum_notes"><p>AF regions (<a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a>) have been set by the camera client.<wbr/></p></span>
5801                  </li>
5802                </ul>
5803
5804            </td> <!-- entry_type -->
5805
5806            <td class="entry_description">
5807              <p>Framework-only private key which informs camera fwk that the AF regions has been set
5808by the client and those regions need not be corrected when <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is
5809set to MAXIMUM_<wbr/>RESOLUTION.<wbr/></p>
5810            </td>
5811
5812            <td class="entry_units">
5813            </td>
5814
5815            <td class="entry_range">
5816            </td>
5817
5818            <td class="entry_hal_version">
5819              <p>3.<wbr/>2</p>
5820            </td>
5821
5822            <td class="entry_tags">
5823            </td>
5824
5825          </tr>
5826          <tr class="entries_header">
5827            <th class="th_details" colspan="6">Details</th>
5828          </tr>
5829          <tr class="entry_cont">
5830            <td class="entry_details" colspan="6">
5831              <p>This must be set to TRUE by the camera2 java fwk when the camera client sets
5832<a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a>.<wbr/></p>
5833            </td>
5834          </tr>
5835
5836
5837          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5838           <!-- end of entry -->
5839
5840
5841          <tr class="entry" id="controls_android.control.aeRegionsSet">
5842            <td class="entry_name
5843             " rowspan="3">
5844              android.<wbr/>control.<wbr/>ae<wbr/>Regions<wbr/>Set
5845            </td>
5846            <td class="entry_type">
5847                <span class="entry_type_name entry_type_name_enum">byte</span>
5848
5849              <span class="entry_type_visibility"> [fwk_only as boolean]</span>
5850
5851
5852
5853
5854
5855                <ul class="entry_type_enum">
5856                  <li>
5857                    <span class="entry_type_enum_name">FALSE (v3.2)</span>
5858                    <span class="entry_type_enum_notes"><p>AE regions (<a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a>) have not been set by the camera client.<wbr/></p></span>
5859                  </li>
5860                  <li>
5861                    <span class="entry_type_enum_name">TRUE (v3.2)</span>
5862                    <span class="entry_type_enum_notes"><p>AE regions (<a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a>) have been set by the camera client.<wbr/></p></span>
5863                  </li>
5864                </ul>
5865
5866            </td> <!-- entry_type -->
5867
5868            <td class="entry_description">
5869              <p>Framework-only private key which informs camera fwk that the AE regions has been set
5870by the client and those regions need not be corrected when <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is
5871set to MAXIMUM_<wbr/>RESOLUTION.<wbr/></p>
5872            </td>
5873
5874            <td class="entry_units">
5875            </td>
5876
5877            <td class="entry_range">
5878            </td>
5879
5880            <td class="entry_hal_version">
5881              <p>3.<wbr/>2</p>
5882            </td>
5883
5884            <td class="entry_tags">
5885            </td>
5886
5887          </tr>
5888          <tr class="entries_header">
5889            <th class="th_details" colspan="6">Details</th>
5890          </tr>
5891          <tr class="entry_cont">
5892            <td class="entry_details" colspan="6">
5893              <p>This must be set to TRUE by the camera2 java fwk when the camera client sets
5894<a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a>.<wbr/></p>
5895            </td>
5896          </tr>
5897
5898
5899          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5900           <!-- end of entry -->
5901
5902
5903          <tr class="entry" id="controls_android.control.awbRegionsSet">
5904            <td class="entry_name
5905             " rowspan="3">
5906              android.<wbr/>control.<wbr/>awb<wbr/>Regions<wbr/>Set
5907            </td>
5908            <td class="entry_type">
5909                <span class="entry_type_name entry_type_name_enum">byte</span>
5910
5911              <span class="entry_type_visibility"> [fwk_only as boolean]</span>
5912
5913
5914
5915
5916
5917                <ul class="entry_type_enum">
5918                  <li>
5919                    <span class="entry_type_enum_name">FALSE (v3.2)</span>
5920                    <span class="entry_type_enum_notes"><p>AWB regions (<a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a>) have not been set by the camera client.<wbr/></p></span>
5921                  </li>
5922                  <li>
5923                    <span class="entry_type_enum_name">TRUE (v3.2)</span>
5924                    <span class="entry_type_enum_notes"><p>AWB regions (<a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a>) have been set by the camera client.<wbr/></p></span>
5925                  </li>
5926                </ul>
5927
5928            </td> <!-- entry_type -->
5929
5930            <td class="entry_description">
5931              <p>Framework-only private key which informs camera fwk that the AF regions has been set
5932by the client and those regions need not be corrected when <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is
5933set to MAXIMUM_<wbr/>RESOLUTION.<wbr/></p>
5934            </td>
5935
5936            <td class="entry_units">
5937            </td>
5938
5939            <td class="entry_range">
5940            </td>
5941
5942            <td class="entry_hal_version">
5943              <p>3.<wbr/>2</p>
5944            </td>
5945
5946            <td class="entry_tags">
5947            </td>
5948
5949          </tr>
5950          <tr class="entries_header">
5951            <th class="th_details" colspan="6">Details</th>
5952          </tr>
5953          <tr class="entry_cont">
5954            <td class="entry_details" colspan="6">
5955              <p>This must be set to TRUE by the camera2 java fwk when the camera client sets
5956<a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a>.<wbr/></p>
5957            </td>
5958          </tr>
5959
5960
5961          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5962           <!-- end of entry -->
5963
5964
5965          <tr class="entry" id="controls_android.control.settingsOverride">
5966            <td class="entry_name
5967             " rowspan="5">
5968              android.<wbr/>control.<wbr/>settings<wbr/>Override
5969            </td>
5970            <td class="entry_type">
5971                <span class="entry_type_name entry_type_name_enum">int32</span>
5972
5973              <span class="entry_type_visibility"> [public]</span>
5974
5975
5976
5977
5978
5979                <ul class="entry_type_enum">
5980                  <li>
5981                    <span class="entry_type_enum_name">OFF (v3.9)</span>
5982                    <span class="entry_type_enum_notes"><p>No keys are applied sooner than the other keys when applying CaptureRequest
5983settings to the camera device.<wbr/> This is the default value.<wbr/></p></span>
5984                  </li>
5985                  <li>
5986                    <span class="entry_type_enum_name">ZOOM (v3.9)</span>
5987                    <span class="entry_type_enum_notes"><p>Zoom related keys are applied sooner than the other keys in the CaptureRequest.<wbr/> The
5988zoom related keys are:</p>
5989<ul>
5990<li><a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a></li>
5991<li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li>
5992<li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li>
5993<li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li>
5994<li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li>
5995</ul>
5996<p>Even though <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/>
5997and <a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a> are not directly zoom related,<wbr/> applications
5998typically scale these regions together with <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> to have a
5999consistent mapping within the current field of view.<wbr/> In this aspect,<wbr/> they are
6000related to <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> and <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a>.<wbr/></p></span>
6001                  </li>
6002                  <li>
6003                    <span class="entry_type_enum_name">VENDOR_START (v3.9)</span>
6004                    <span class="entry_type_enum_hidden">[hidden]</span>
6005                    <span class="entry_type_enum_value">0x4000</span>
6006                    <span class="entry_type_enum_notes"><p>Vendor defined settingsOverride.<wbr/> These depend on vendor implementation.<wbr/></p></span>
6007                  </li>
6008                </ul>
6009
6010            </td> <!-- entry_type -->
6011
6012            <td class="entry_description">
6013              <p>The desired CaptureRequest settings override with which certain keys are
6014applied earlier so that they can take effect sooner.<wbr/></p>
6015            </td>
6016
6017            <td class="entry_units">
6018            </td>
6019
6020            <td class="entry_range">
6021              <p><a href="#static_android.control.availableSettingsOverrides">android.<wbr/>control.<wbr/>available<wbr/>Settings<wbr/>Overrides</a></p>
6022            </td>
6023
6024            <td class="entry_hal_version">
6025              <p>3.<wbr/>9</p>
6026            </td>
6027
6028            <td class="entry_tags">
6029            </td>
6030
6031          </tr>
6032          <tr class="entries_header">
6033            <th class="th_details" colspan="6">Details</th>
6034          </tr>
6035          <tr class="entry_cont">
6036            <td class="entry_details" colspan="6">
6037              <p>There are some CaptureRequest keys which can be applied earlier than others
6038when controls within a CaptureRequest aren't required to take effect at the same time.<wbr/>
6039One such example is zoom.<wbr/> Zoom can be applied at a later stage of the camera pipeline.<wbr/>
6040As soon as the camera device receives the CaptureRequest,<wbr/> it can apply the requested
6041zoom value onto an earlier request that's already in the pipeline,<wbr/> thus improves zoom
6042latency.<wbr/></p>
6043<p>This key's value in the capture result reflects whether the controls for this capture
6044are overridden "by" a newer request.<wbr/> This means that if a capture request turns on
6045settings override,<wbr/> the capture result of an earlier request will contain the key value
6046of ZOOM.<wbr/> On the other hand,<wbr/> if a capture request has settings override turned on,<wbr/>
6047but all newer requests have it turned off,<wbr/> the key's value in the capture result will
6048be OFF because this capture isn't overridden by a newer capture.<wbr/> In the two examples
6049below,<wbr/> the capture results columns illustrate the settingsOverride values in different
6050scenarios.<wbr/></p>
6051<p>Assuming the zoom settings override can speed up by 1 frame,<wbr/> below example illustrates
6052the speed-up at the start of capture session:</p>
6053<pre><code>Camera session created
6054Request 1 (zoom=1.<wbr/>0x,<wbr/> override=ZOOM) -&gt;
6055Request 2 (zoom=1.<wbr/>2x,<wbr/> override=ZOOM) -&gt;
6056Request 3 (zoom=1.<wbr/>4x,<wbr/> override=ZOOM) -&gt;  Result 1 (zoom=1.<wbr/>2x,<wbr/> override=ZOOM)
6057Request 4 (zoom=1.<wbr/>6x,<wbr/> override=ZOOM) -&gt;  Result 2 (zoom=1.<wbr/>4x,<wbr/> override=ZOOM)
6058Request 5 (zoom=1.<wbr/>8x,<wbr/> override=ZOOM) -&gt;  Result 3 (zoom=1.<wbr/>6x,<wbr/> override=ZOOM)
6059                                     -&gt;  Result 4 (zoom=1.<wbr/>8x,<wbr/> override=ZOOM)
6060                                     -&gt;  Result 5 (zoom=1.<wbr/>8x,<wbr/> override=OFF)
6061</code></pre>
6062<p>The application can turn on settings override and use zoom as normal.<wbr/> The example
6063shows that the later zoom values (1.<wbr/>2x,<wbr/> 1.<wbr/>4x,<wbr/> 1.<wbr/>6x,<wbr/> and 1.<wbr/>8x) overwrite the zoom
6064values (1.<wbr/>0x,<wbr/> 1.<wbr/>2x,<wbr/> 1.<wbr/>4x,<wbr/> and 1.<wbr/>8x) of earlier requests (#1,<wbr/> #2,<wbr/> #3,<wbr/> and #4).<wbr/></p>
6065<p>The application must make sure the settings override doesn't interfere with user
6066journeys requiring simultaneous application of all controls in CaptureRequest on the
6067requested output targets.<wbr/> For example,<wbr/> if the application takes a still capture using
6068CameraCaptureSession#capture,<wbr/> and the repeating request immediately sets a different
6069zoom value using override,<wbr/> the inflight still capture could have its zoom value
6070overwritten unexpectedly.<wbr/></p>
6071<p>So the application is strongly recommended to turn off settingsOverride when taking
6072still/<wbr/>burst captures,<wbr/> and turn it back on when there is only repeating viewfinder
6073request and no inflight still/<wbr/>burst captures.<wbr/></p>
6074<p>Below is the example demonstrating the transitions in and out of the
6075settings override:</p>
6076<pre><code>Request 1 (zoom=1.<wbr/>0x,<wbr/> override=OFF)
6077Request 2 (zoom=1.<wbr/>2x,<wbr/> override=OFF)
6078Request 3 (zoom=1.<wbr/>4x,<wbr/> override=ZOOM)  -&gt; Result 1 (zoom=1.<wbr/>0x,<wbr/> override=OFF)
6079Request 4 (zoom=1.<wbr/>6x,<wbr/> override=ZOOM)  -&gt; Result 2 (zoom=1.<wbr/>4x,<wbr/> override=ZOOM)
6080Request 5 (zoom=1.<wbr/>8x,<wbr/> override=OFF)   -&gt; Result 3 (zoom=1.<wbr/>6x,<wbr/> override=ZOOM)
6081                                      -&gt; Result 4 (zoom=1.<wbr/>6x,<wbr/> override=OFF)
6082                                      -&gt; Result 5 (zoom=1.<wbr/>8x,<wbr/> override=OFF)
6083</code></pre>
6084<p>This example shows that:</p>
6085<ul>
6086<li>The application "ramps in" settings override by setting the control to ZOOM.<wbr/>
6087In the example,<wbr/> request #3 enables zoom settings override.<wbr/> Because the camera device
6088can speed up applying zoom by 1 frame,<wbr/> the outputs of request #2 has 1.<wbr/>4x zoom,<wbr/> the
6089value specified in request #3.<wbr/></li>
6090<li>The application "ramps out" of settings override by setting the control to OFF.<wbr/> In
6091the example,<wbr/> request #5 changes the override to OFF.<wbr/> Because request #4's zoom
6092takes effect in result #3,<wbr/> result #4's zoom remains the same until new value takes
6093effect in result #5.<wbr/></li>
6094</ul>
6095            </td>
6096          </tr>
6097
6098          <tr class="entries_header">
6099            <th class="th_details" colspan="6">HAL Implementation Details</th>
6100          </tr>
6101          <tr class="entry_cont">
6102            <td class="entry_details" colspan="6">
6103              <p>The HAL must set this value to OFF in all of the Capture templates.<wbr/></p>
6104<p>Typically the HAL unblocks processCaptureRequest at the same rate as the sensor capture,<wbr/>
6105and the HAL queues the capture settings in its pipeline when processCaptureRequest
6106returns.<wbr/> However,<wbr/> when the settings override is enabled,<wbr/> the HAL can optimize the
6107overridden controls' latency by applying them as soon as processCaptureRequest is
6108called,<wbr/> rather than when it's unblocked.<wbr/></p>
6109<p>For devices launching with API level 35 or newer,<wbr/> to avoid regression on zoom
6110smoothness,<wbr/> when zoom settings override is on during pinch zoom (zoom value gradually
6111changes),<wbr/> the zoom effect in the camera output must not become more jittery.<wbr/> More
6112specifically,<wbr/> the variation of zoom pipeline latency must not increase.<wbr/> The latency
6113improvement must be at least 1 frame regardless of zoom in or zoom out.<wbr/></p>
6114<p>For devices launched before API level 35,<wbr/> if zoom settings override is on,<wbr/> when
6115zooming in,<wbr/> the HAL must be able to apply the zoom related settings at least 1
6116frame ahead.<wbr/></p>
6117            </td>
6118          </tr>
6119
6120          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6121           <!-- end of entry -->
6122
6123
6124          <tr class="entry" id="controls_android.control.autoframing">
6125            <td class="entry_name
6126             " rowspan="5">
6127              android.<wbr/>control.<wbr/>autoframing
6128            </td>
6129            <td class="entry_type">
6130                <span class="entry_type_name entry_type_name_enum">byte</span>
6131
6132              <span class="entry_type_visibility"> [public]</span>
6133
6134
6135              <span class="entry_type_hwlevel">[limited] </span>
6136
6137
6138
6139                <ul class="entry_type_enum">
6140                  <li>
6141                    <span class="entry_type_enum_name">OFF (v3.9)</span>
6142                    <span class="entry_type_enum_notes"><p>Disable autoframing.<wbr/></p></span>
6143                  </li>
6144                  <li>
6145                    <span class="entry_type_enum_name">ON (v3.9)</span>
6146                    <span class="entry_type_enum_notes"><p>Enable autoframing to keep people in the frame's field of view.<wbr/></p></span>
6147                  </li>
6148                  <li>
6149                    <span class="entry_type_enum_name">AUTO (v3.9)</span>
6150                    <span class="entry_type_enum_hidden">[hidden]</span>
6151                    <span class="entry_type_enum_notes"><p>Automatically select ON or OFF based on the system level preferences.<wbr/></p></span>
6152                  </li>
6153                </ul>
6154
6155            </td> <!-- entry_type -->
6156
6157            <td class="entry_description">
6158              <p>Automatic crop,<wbr/> pan and zoom to keep objects in the center of the frame.<wbr/></p>
6159            </td>
6160
6161            <td class="entry_units">
6162            </td>
6163
6164            <td class="entry_range">
6165            </td>
6166
6167            <td class="entry_hal_version">
6168              <p>3.<wbr/>9</p>
6169            </td>
6170
6171            <td class="entry_tags">
6172            </td>
6173
6174          </tr>
6175          <tr class="entries_header">
6176            <th class="th_details" colspan="6">Details</th>
6177          </tr>
6178          <tr class="entry_cont">
6179            <td class="entry_details" colspan="6">
6180              <p>Auto-framing is a special mode provided by the camera device to dynamically crop,<wbr/> zoom
6181or pan the camera feed to try to ensure that the people in a scene occupy a reasonable
6182portion of the viewport.<wbr/> It is primarily designed to support video calling in
6183situations where the user isn't directly in front of the device,<wbr/> especially for
6184wide-angle cameras.<wbr/>
6185<a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> and <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> in CaptureResult will be used
6186to denote the coordinates of the auto-framed region.<wbr/>
6187Zoom and video stabilization controls are disabled when auto-framing is enabled.<wbr/> The 3A
6188regions must map the screen coordinates into the scaler crop returned from the capture
6189result instead of using the active array sensor.<wbr/></p>
6190            </td>
6191          </tr>
6192
6193          <tr class="entries_header">
6194            <th class="th_details" colspan="6">HAL Implementation Details</th>
6195          </tr>
6196          <tr class="entry_cont">
6197            <td class="entry_details" colspan="6">
6198              <p>While auto-framing is ON,<wbr/> the aspect ratio of the auto-framed region must match the
6199aspect ratio of the configured output stream.<wbr/>
6200When reporting CaptureResult,<wbr/> SCALER_<wbr/>CROP_<wbr/>REGION might not adequately describe the
6201actual sensor pixels.<wbr/> In this case,<wbr/> it is acceptable for the returned parameters to only
6202be an approximation of the image sensor region that is actually used.<wbr/>
6203When auto-framing is turned off,<wbr/> the transition should be immediate,<wbr/> with no panning or
6204zooming to transition to the settings requested by the app.<wbr/> When it is turned on,<wbr/> the
6205transition can be immediate or smooth.<wbr/></p>
6206            </td>
6207          </tr>
6208
6209          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6210           <!-- end of entry -->
6211
6212
6213          <tr class="entry" id="controls_android.control.zoomMethod">
6214            <td class="entry_name
6215             " rowspan="5">
6216              android.<wbr/>control.<wbr/>zoom<wbr/>Method
6217            </td>
6218            <td class="entry_type">
6219                <span class="entry_type_name entry_type_name_enum">byte</span>
6220
6221              <span class="entry_type_visibility"> [fwk_public]</span>
6222
6223
6224              <span class="entry_type_hwlevel">[limited] </span>
6225
6226
6227
6228                <ul class="entry_type_enum">
6229                  <li>
6230                    <span class="entry_type_enum_name">AUTO (v3.11)</span>
6231                    <span class="entry_type_enum_value">0</span>
6232                    <span class="entry_type_enum_notes"><p>The camera device automatically detects whether the application does zoom with
6233<a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> or <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a>,<wbr/> and in turn decides which
6234metadata tag reflects the effective zoom level.<wbr/></p></span>
6235                  </li>
6236                  <li>
6237                    <span class="entry_type_enum_name">ZOOM_RATIO (v3.11)</span>
6238                    <span class="entry_type_enum_value">1</span>
6239                    <span class="entry_type_enum_notes"><p>The application intends to control zoom via <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a>,<wbr/> and
6240the effective zoom level is reflected by <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> in capture results.<wbr/></p></span>
6241                  </li>
6242                </ul>
6243
6244            </td> <!-- entry_type -->
6245
6246            <td class="entry_description">
6247              <p>Whether the application uses <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> or <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a>
6248to control zoom levels.<wbr/></p>
6249            </td>
6250
6251            <td class="entry_units">
6252            </td>
6253
6254            <td class="entry_range">
6255            </td>
6256
6257            <td class="entry_hal_version">
6258              <p>3.<wbr/>11</p>
6259            </td>
6260
6261            <td class="entry_tags">
6262            </td>
6263
6264          </tr>
6265          <tr class="entries_header">
6266            <th class="th_details" colspan="6">Details</th>
6267          </tr>
6268          <tr class="entry_cont">
6269            <td class="entry_details" colspan="6">
6270              <p>If set to AUTO,<wbr/> the camera device detects which capture request key the application uses
6271to do zoom,<wbr/> <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> or <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a>.<wbr/> If
6272the application doesn't set android.<wbr/>scaler.<wbr/>zoom<wbr/>Ratio or sets it to 1.<wbr/>0 in the capture
6273request,<wbr/> the effective zoom level is reflected in <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> in capture
6274results.<wbr/> If <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> is set to values other than 1.<wbr/>0,<wbr/> the effective
6275zoom level is reflected in <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a>.<wbr/> AUTO is the default value
6276for this control,<wbr/> and also the behavior of the OS before Android version
6277<a href="https://developer.android.com/reference/android/os/Build.VERSION_CODES.html#BAKLAVA">BAKLAVA</a>.<wbr/></p>
6278<p>If set to ZOOM_<wbr/>RATIO,<wbr/> the application explicitly specifies zoom level be controlled
6279by <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a>,<wbr/> and the effective zoom level is reflected in
6280<a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> in capture results.<wbr/> This addresses an ambiguity with AUTO,<wbr/>
6281with which the camera device cannot know if the application is using cropRegion or
6282zoomRatio at 1.<wbr/>0x.<wbr/></p>
6283            </td>
6284          </tr>
6285
6286          <tr class="entries_header">
6287            <th class="th_details" colspan="6">HAL Implementation Details</th>
6288          </tr>
6289          <tr class="entry_cont">
6290            <td class="entry_details" colspan="6">
6291              <p>Do not use this key directly.<wbr/> It's for camera framework usage,<wbr/>
6292and not for HAL consumption.<wbr/></p>
6293            </td>
6294          </tr>
6295
6296          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6297           <!-- end of entry -->
6298
6299
6300          <tr class="entry" id="controls_android.control.aePriorityMode">
6301            <td class="entry_name
6302             " rowspan="5">
6303              android.<wbr/>control.<wbr/>ae<wbr/>Priority<wbr/>Mode
6304            </td>
6305            <td class="entry_type">
6306                <span class="entry_type_name entry_type_name_enum">byte</span>
6307
6308              <span class="entry_type_visibility"> [public]</span>
6309
6310
6311
6312
6313
6314                <ul class="entry_type_enum">
6315                  <li>
6316                    <span class="entry_type_enum_name">OFF (v3.11)</span>
6317                    <span class="entry_type_enum_notes"><p>Disable AE priority mode.<wbr/> This is the default value.<wbr/></p></span>
6318                  </li>
6319                  <li>
6320                    <span class="entry_type_enum_name">SENSOR_SENSITIVITY_PRIORITY (v3.11)</span>
6321                    <span class="entry_type_enum_notes"><p>The camera device's auto-exposure routine is active and
6322prioritizes the application-selected ISO (<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>).<wbr/></p>
6323<p>The application has control over <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> while
6324the application's values for <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> and
6325<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are ignored.<wbr/></p></span>
6326                  </li>
6327                  <li>
6328                    <span class="entry_type_enum_name">SENSOR_EXPOSURE_TIME_PRIORITY (v3.11)</span>
6329                    <span class="entry_type_enum_notes"><p>The camera device's auto-exposure routine is active and
6330prioritizes the application-selected exposure time
6331(<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>).<wbr/></p>
6332<p>The application has control over <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> while
6333the application's values for <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> and
6334<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are ignored.<wbr/></p></span>
6335                  </li>
6336                </ul>
6337
6338            </td> <!-- entry_type -->
6339
6340            <td class="entry_description">
6341              <p>Turn on AE priority mode.<wbr/></p>
6342            </td>
6343
6344            <td class="entry_units">
6345            </td>
6346
6347            <td class="entry_range">
6348            </td>
6349
6350            <td class="entry_hal_version">
6351              <p>3.<wbr/>11</p>
6352            </td>
6353
6354            <td class="entry_tags">
6355            </td>
6356
6357          </tr>
6358          <tr class="entries_header">
6359            <th class="th_details" colspan="6">Details</th>
6360          </tr>
6361          <tr class="entry_cont">
6362            <td class="entry_details" colspan="6">
6363              <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is
6364AUTO and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is set to one of its
6365ON modes,<wbr/> with the exception of ON_<wbr/>LOW_<wbr/>LIGHT_<wbr/>BOOST_<wbr/>BRIGHTNESS_<wbr/>PRIORITY.<wbr/></p>
6366<p>When a priority mode is enabled,<wbr/> the camera device's
6367auto-exposure routine will maintain the application's
6368selected parameters relevant to the priority mode while overriding
6369the remaining exposure parameters
6370(<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/> and
6371<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>).<wbr/> For example,<wbr/> if
6372SENSOR_<wbr/>SENSITIVITY_<wbr/>PRIORITY mode is enabled,<wbr/> the camera device will
6373maintain the application-selected <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>
6374while adjusting <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>
6375and <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>.<wbr/> The overridden fields for a
6376given capture will be available in its CaptureResult.<wbr/></p>
6377            </td>
6378          </tr>
6379
6380          <tr class="entries_header">
6381            <th class="th_details" colspan="6">HAL Implementation Details</th>
6382          </tr>
6383          <tr class="entry_cont">
6384            <td class="entry_details" colspan="6">
6385              <p>The total sensitivity applied for SENSOR_<wbr/>SENSITIVITY_<wbr/>PRIORITY should not be
6386adjusted by any HAL applied <a href="#controls_android.control.postRawSensitivityBoost">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost</a>.<wbr/></p>
6387            </td>
6388          </tr>
6389
6390          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6391           <!-- end of entry -->
6392
6393
6394
6395      <!-- end of kind -->
6396      </tbody>
6397      <tr><td colspan="7" class="kind">static</td></tr>
6398
6399      <thead class="entries_header">
6400        <tr>
6401          <th class="th_name">Property Name</th>
6402          <th class="th_type">Type</th>
6403          <th class="th_description">Description</th>
6404          <th class="th_units">Units</th>
6405          <th class="th_range">Range</th>
6406          <th class="th_hal_version">Initial HIDL HAL version</th>
6407          <th class="th_tags">Tags</th>
6408        </tr>
6409      </thead>
6410
6411      <tbody>
6412
6413
6414
6415
6416
6417
6418
6419
6420
6421
6422          <tr class="entry" id="static_android.control.aeAvailableAntibandingModes">
6423            <td class="entry_name
6424             " rowspan="3">
6425              android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes
6426            </td>
6427            <td class="entry_type">
6428                <span class="entry_type_name">byte</span>
6429                <span class="entry_type_container">x</span>
6430
6431                <span class="entry_type_array">
6432                  n
6433                </span>
6434              <span class="entry_type_visibility"> [public as enumList]</span>
6435
6436
6437              <span class="entry_type_hwlevel">[legacy] </span>
6438
6439
6440                <div class="entry_type_notes">list of enums</div>
6441
6442
6443            </td> <!-- entry_type -->
6444
6445            <td class="entry_description">
6446              <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
6447supported by this camera device.<wbr/></p>
6448            </td>
6449
6450            <td class="entry_units">
6451            </td>
6452
6453            <td class="entry_range">
6454              <p>Any value listed in <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a></p>
6455            </td>
6456
6457            <td class="entry_hal_version">
6458              <p>3.<wbr/>2</p>
6459            </td>
6460
6461            <td class="entry_tags">
6462              <ul class="entry_tags">
6463                  <li><a href="#tag_BC">BC</a></li>
6464              </ul>
6465            </td>
6466
6467          </tr>
6468          <tr class="entries_header">
6469            <th class="th_details" colspan="6">Details</th>
6470          </tr>
6471          <tr class="entry_cont">
6472            <td class="entry_details" colspan="6">
6473              <p>Not all of the auto-exposure anti-banding modes may be
6474supported by a given camera device.<wbr/> This field lists the
6475valid anti-banding modes that the application may request
6476for this camera device with the
6477<a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> control.<wbr/></p>
6478            </td>
6479          </tr>
6480
6481
6482          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6483           <!-- end of entry -->
6484
6485
6486          <tr class="entry" id="static_android.control.aeAvailableModes">
6487            <td class="entry_name
6488             " rowspan="3">
6489              android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes
6490            </td>
6491            <td class="entry_type">
6492                <span class="entry_type_name">byte</span>
6493                <span class="entry_type_container">x</span>
6494
6495                <span class="entry_type_array">
6496                  n
6497                </span>
6498              <span class="entry_type_visibility"> [public as enumList]</span>
6499
6500
6501              <span class="entry_type_hwlevel">[legacy] </span>
6502
6503
6504                <div class="entry_type_notes">list of enums</div>
6505
6506
6507            </td> <!-- entry_type -->
6508
6509            <td class="entry_description">
6510              <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
6511device.<wbr/></p>
6512            </td>
6513
6514            <td class="entry_units">
6515            </td>
6516
6517            <td class="entry_range">
6518              <p>Any value listed in <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a></p>
6519            </td>
6520
6521            <td class="entry_hal_version">
6522              <p>3.<wbr/>2</p>
6523            </td>
6524
6525            <td class="entry_tags">
6526              <ul class="entry_tags">
6527                  <li><a href="#tag_BC">BC</a></li>
6528              </ul>
6529            </td>
6530
6531          </tr>
6532          <tr class="entries_header">
6533            <th class="th_details" colspan="6">Details</th>
6534          </tr>
6535          <tr class="entry_cont">
6536            <td class="entry_details" colspan="6">
6537              <p>Not all the auto-exposure modes may be supported by a
6538given camera device,<wbr/> especially if no flash unit is
6539available.<wbr/> This entry lists the valid modes for
6540<a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> for this camera device.<wbr/></p>
6541<p>All camera devices support ON,<wbr/> and all camera devices with flash
6542units support ON_<wbr/>AUTO_<wbr/>FLASH and ON_<wbr/>ALWAYS_<wbr/>FLASH.<wbr/></p>
6543<p>FULL mode camera devices always support OFF mode,<wbr/>
6544which enables application control of camera exposure time,<wbr/>
6545sensitivity,<wbr/> and frame duration.<wbr/></p>
6546<p>LEGACY mode camera devices never support OFF mode.<wbr/>
6547LIMITED mode devices support OFF if they support the MANUAL_<wbr/>SENSOR
6548capability.<wbr/></p>
6549            </td>
6550          </tr>
6551
6552
6553          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6554           <!-- end of entry -->
6555
6556
6557          <tr class="entry" id="static_android.control.aeAvailableTargetFpsRanges">
6558            <td class="entry_name
6559             " rowspan="5">
6560              android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Target<wbr/>Fps<wbr/>Ranges
6561            </td>
6562            <td class="entry_type">
6563                <span class="entry_type_name">int32</span>
6564                <span class="entry_type_container">x</span>
6565
6566                <span class="entry_type_array">
6567                  2 x n
6568                </span>
6569              <span class="entry_type_visibility"> [public as rangeInt]</span>
6570
6571
6572              <span class="entry_type_hwlevel">[legacy] </span>
6573
6574
6575                <div class="entry_type_notes">list of pairs of frame rates</div>
6576
6577
6578            </td> <!-- entry_type -->
6579
6580            <td class="entry_description">
6581              <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
6582this camera device.<wbr/></p>
6583            </td>
6584
6585            <td class="entry_units">
6586              Frames per second (FPS)
6587            </td>
6588
6589            <td class="entry_range">
6590            </td>
6591
6592            <td class="entry_hal_version">
6593              <p>3.<wbr/>2</p>
6594            </td>
6595
6596            <td class="entry_tags">
6597              <ul class="entry_tags">
6598                  <li><a href="#tag_BC">BC</a></li>
6599              </ul>
6600            </td>
6601
6602          </tr>
6603          <tr class="entries_header">
6604            <th class="th_details" colspan="6">Details</th>
6605          </tr>
6606          <tr class="entry_cont">
6607            <td class="entry_details" colspan="6">
6608              <p>For devices at the LEGACY level or above:</p>
6609<ul>
6610<li>
6611<p>For constant-framerate recording,<wbr/> for each normal
6612<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a>,<wbr/> that is,<wbr/> a
6613<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a> that has
6614<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#quality">quality</a> in
6615the range [<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#QUALITY_LOW">QUALITY_<wbr/>LOW</a>,<wbr/>
6616<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#QUALITY_2160P">QUALITY_<wbr/>2160P</a>],<wbr/> if the profile is
6617supported by the device and has
6618<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#videoFrameRate">videoFrameRate</a> <code>x</code>,<wbr/> this list will
6619always include (<code>x</code>,<wbr/><code>x</code>).<wbr/></p>
6620</li>
6621<li>
6622<p>Also,<wbr/> a camera device must either not support any
6623<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a>,<wbr/>
6624or support at least one
6625normal <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a> that has
6626<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#videoFrameRate">videoFrameRate</a> <code>x</code> &gt;= 24.<wbr/></p>
6627</li>
6628</ul>
6629<p>For devices at the LIMITED level or above:</p>
6630<ul>
6631<li>For devices that advertise NIR color filter arrangement in
6632<a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a>,<wbr/> this list will always include
6633(<code>max</code>,<wbr/> <code>max</code>) where <code>max</code> = the maximum output frame rate of the maximum YUV_<wbr/>420_<wbr/>888
6634output size.<wbr/></li>
6635<li>For devices advertising any color filter arrangement other than NIR,<wbr/> or devices not
6636advertising color filter arrangement,<wbr/> this list will always include (<code>min</code>,<wbr/> <code>max</code>) and
6637(<code>max</code>,<wbr/> <code>max</code>) where <code>min</code> &lt;= 15 and <code>max</code> = the maximum output frame rate of the
6638maximum YUV_<wbr/>420_<wbr/>888 output size.<wbr/></li>
6639</ul>
6640            </td>
6641          </tr>
6642
6643          <tr class="entries_header">
6644            <th class="th_details" colspan="6">HAL Implementation Details</th>
6645          </tr>
6646          <tr class="entry_cont">
6647            <td class="entry_details" colspan="6">
6648              <p>HAL must make sure the lower bound and upper bound of each supported targetFpsRange can
6649be reached.<wbr/> For example,<wbr/> if HAL supports an aeTargetFpsRange of (15,<wbr/> 30),<wbr/> when set by the
6650application,<wbr/> the camera must be able to reach 15fps in sufficient dark scenes.<wbr/> This way
6651the application knows the exact range of frame rate it can expect.<wbr/></p>
6652            </td>
6653          </tr>
6654
6655          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6656           <!-- end of entry -->
6657
6658
6659          <tr class="entry" id="static_android.control.aeCompensationRange">
6660            <td class="entry_name
6661             " rowspan="1">
6662              android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range
6663            </td>
6664            <td class="entry_type">
6665                <span class="entry_type_name">int32</span>
6666                <span class="entry_type_container">x</span>
6667
6668                <span class="entry_type_array">
6669                  2
6670                </span>
6671              <span class="entry_type_visibility"> [public as rangeInt]</span>
6672
6673
6674              <span class="entry_type_hwlevel">[legacy] </span>
6675
6676
6677
6678
6679            </td> <!-- entry_type -->
6680
6681            <td class="entry_description">
6682              <p>Maximum and minimum exposure compensation values for
6683<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/>
6684that are supported by this camera device.<wbr/></p>
6685            </td>
6686
6687            <td class="entry_units">
6688            </td>
6689
6690            <td class="entry_range">
6691              <p>Range [0,<wbr/>0] indicates that exposure compensation is not supported.<wbr/></p>
6692<p>For LIMITED and FULL devices,<wbr/> range must follow below requirements if exposure
6693compensation is supported (<code>range != [0,<wbr/> 0]</code>):</p>
6694<p><code>Min.<wbr/>exposure compensation * <a href="#static_android.control.aeCompensationStep">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step</a> &lt;= -2 EV</code></p>
6695<p><code>Max.<wbr/>exposure compensation * <a href="#static_android.control.aeCompensationStep">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step</a> &gt;= 2 EV</code></p>
6696<p>LEGACY devices may support a smaller range than this.<wbr/></p>
6697            </td>
6698
6699            <td class="entry_hal_version">
6700              <p>3.<wbr/>2</p>
6701            </td>
6702
6703            <td class="entry_tags">
6704              <ul class="entry_tags">
6705                  <li><a href="#tag_BC">BC</a></li>
6706              </ul>
6707            </td>
6708
6709          </tr>
6710
6711
6712          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6713           <!-- end of entry -->
6714
6715
6716          <tr class="entry" id="static_android.control.aeCompensationStep">
6717            <td class="entry_name
6718             " rowspan="5">
6719              android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step
6720            </td>
6721            <td class="entry_type">
6722                <span class="entry_type_name">rational</span>
6723
6724              <span class="entry_type_visibility"> [public]</span>
6725
6726
6727              <span class="entry_type_hwlevel">[legacy] </span>
6728
6729
6730
6731
6732            </td> <!-- entry_type -->
6733
6734            <td class="entry_description">
6735              <p>Smallest step by which the exposure compensation
6736can be changed.<wbr/></p>
6737            </td>
6738
6739            <td class="entry_units">
6740              Exposure Value (EV)
6741            </td>
6742
6743            <td class="entry_range">
6744            </td>
6745
6746            <td class="entry_hal_version">
6747              <p>3.<wbr/>2</p>
6748            </td>
6749
6750            <td class="entry_tags">
6751              <ul class="entry_tags">
6752                  <li><a href="#tag_BC">BC</a></li>
6753              </ul>
6754            </td>
6755
6756          </tr>
6757          <tr class="entries_header">
6758            <th class="th_details" colspan="6">Details</th>
6759          </tr>
6760          <tr class="entry_cont">
6761            <td class="entry_details" colspan="6">
6762              <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
6763a 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
6764that the target EV offset for the auto-exposure routine is -1 EV.<wbr/></p>
6765<p>One unit of EV compensation changes the brightness of the captured image by a factor
6766of two.<wbr/> +1 EV doubles the image brightness,<wbr/> while -1 EV halves the image brightness.<wbr/></p>
6767            </td>
6768          </tr>
6769
6770          <tr class="entries_header">
6771            <th class="th_details" colspan="6">HAL Implementation Details</th>
6772          </tr>
6773          <tr class="entry_cont">
6774            <td class="entry_details" colspan="6">
6775              <p>This must be less than or equal to 1/<wbr/>2.<wbr/></p>
6776            </td>
6777          </tr>
6778
6779          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6780           <!-- end of entry -->
6781
6782
6783          <tr class="entry" id="static_android.control.afAvailableModes">
6784            <td class="entry_name
6785             " rowspan="3">
6786              android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes
6787            </td>
6788            <td class="entry_type">
6789                <span class="entry_type_name">byte</span>
6790                <span class="entry_type_container">x</span>
6791
6792                <span class="entry_type_array">
6793                  n
6794                </span>
6795              <span class="entry_type_visibility"> [public as enumList]</span>
6796
6797
6798              <span class="entry_type_hwlevel">[legacy] </span>
6799
6800
6801                <div class="entry_type_notes">List of enums</div>
6802
6803
6804            </td> <!-- entry_type -->
6805
6806            <td class="entry_description">
6807              <p>List of auto-focus (AF) modes for <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> that are
6808supported by this camera device.<wbr/></p>
6809            </td>
6810
6811            <td class="entry_units">
6812            </td>
6813
6814            <td class="entry_range">
6815              <p>Any value listed in <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a></p>
6816            </td>
6817
6818            <td class="entry_hal_version">
6819              <p>3.<wbr/>2</p>
6820            </td>
6821
6822            <td class="entry_tags">
6823              <ul class="entry_tags">
6824                  <li><a href="#tag_BC">BC</a></li>
6825              </ul>
6826            </td>
6827
6828          </tr>
6829          <tr class="entries_header">
6830            <th class="th_details" colspan="6">Details</th>
6831          </tr>
6832          <tr class="entry_cont">
6833            <td class="entry_details" colspan="6">
6834              <p>Not all the auto-focus modes may be supported by a
6835given camera device.<wbr/> This entry lists the valid modes for
6836<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> for this camera device.<wbr/></p>
6837<p>All LIMITED and FULL mode camera devices will support OFF mode,<wbr/> and all
6838camera devices with adjustable focuser units
6839(<code><a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a> &gt; 0</code>) will support AUTO mode.<wbr/></p>
6840<p>LEGACY devices will support OFF mode only if they support
6841focusing to infinity (by also setting <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> to
6842<code>0.<wbr/>0f</code>).<wbr/></p>
6843            </td>
6844          </tr>
6845
6846
6847          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6848           <!-- end of entry -->
6849
6850
6851          <tr class="entry" id="static_android.control.availableEffects">
6852            <td class="entry_name
6853             " rowspan="3">
6854              android.<wbr/>control.<wbr/>available<wbr/>Effects
6855            </td>
6856            <td class="entry_type">
6857                <span class="entry_type_name">byte</span>
6858                <span class="entry_type_container">x</span>
6859
6860                <span class="entry_type_array">
6861                  n
6862                </span>
6863              <span class="entry_type_visibility"> [public as enumList]</span>
6864
6865
6866              <span class="entry_type_hwlevel">[legacy] </span>
6867
6868
6869                <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>effect<wbr/>Mode).<wbr/></div>
6870
6871
6872            </td> <!-- entry_type -->
6873
6874            <td class="entry_description">
6875              <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
6876device.<wbr/></p>
6877            </td>
6878
6879            <td class="entry_units">
6880            </td>
6881
6882            <td class="entry_range">
6883              <p>Any value listed in <a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></p>
6884            </td>
6885
6886            <td class="entry_hal_version">
6887              <p>3.<wbr/>2</p>
6888            </td>
6889
6890            <td class="entry_tags">
6891              <ul class="entry_tags">
6892                  <li><a href="#tag_BC">BC</a></li>
6893              </ul>
6894            </td>
6895
6896          </tr>
6897          <tr class="entries_header">
6898            <th class="th_details" colspan="6">Details</th>
6899          </tr>
6900          <tr class="entry_cont">
6901            <td class="entry_details" colspan="6">
6902              <p>This list contains the color effect modes that can be applied to
6903images produced by the camera device.<wbr/>
6904Implementations are not expected to be consistent across all devices.<wbr/>
6905If no color effect modes are available for a device,<wbr/> this will only list
6906OFF.<wbr/></p>
6907<p>A color effect will only be applied if
6908<a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF.<wbr/>  OFF is always included in this list.<wbr/></p>
6909<p>This control has no effect on the operation of other control routines such
6910as auto-exposure,<wbr/> white balance,<wbr/> or focus.<wbr/></p>
6911            </td>
6912          </tr>
6913
6914
6915          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6916           <!-- end of entry -->
6917
6918
6919          <tr class="entry" id="static_android.control.availableSceneModes">
6920            <td class="entry_name
6921             " rowspan="3">
6922              android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes
6923            </td>
6924            <td class="entry_type">
6925                <span class="entry_type_name">byte</span>
6926                <span class="entry_type_container">x</span>
6927
6928                <span class="entry_type_array">
6929                  n
6930                </span>
6931              <span class="entry_type_visibility"> [public as enumList]</span>
6932
6933
6934              <span class="entry_type_hwlevel">[legacy] </span>
6935
6936
6937                <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>scene<wbr/>Mode).<wbr/></div>
6938
6939
6940            </td> <!-- entry_type -->
6941
6942            <td class="entry_description">
6943              <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
6944device.<wbr/></p>
6945            </td>
6946
6947            <td class="entry_units">
6948            </td>
6949
6950            <td class="entry_range">
6951              <p>Any value listed in <a href="#controls_android.control.sceneMode">android.<wbr/>control.<wbr/>scene<wbr/>Mode</a></p>
6952            </td>
6953
6954            <td class="entry_hal_version">
6955              <p>3.<wbr/>2</p>
6956            </td>
6957
6958            <td class="entry_tags">
6959              <ul class="entry_tags">
6960                  <li><a href="#tag_BC">BC</a></li>
6961              </ul>
6962            </td>
6963
6964          </tr>
6965          <tr class="entries_header">
6966            <th class="th_details" colspan="6">Details</th>
6967          </tr>
6968          <tr class="entry_cont">
6969            <td class="entry_details" colspan="6">
6970              <p>This list contains scene modes that can be set for the camera device.<wbr/>
6971Only scene modes that have been fully implemented for the
6972camera device may be included here.<wbr/> Implementations are not expected
6973to be consistent across all devices.<wbr/></p>
6974<p>If no scene modes are supported by the camera device,<wbr/> this
6975will be set to DISABLED.<wbr/> Otherwise DISABLED will not be listed.<wbr/></p>
6976<p>FACE_<wbr/>PRIORITY is always listed if face detection is
6977supported (i.<wbr/>e.<wbr/><code><a href="#static_android.statistics.info.maxFaceCount">android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Face<wbr/>Count</a> &gt;
69780</code>).<wbr/></p>
6979            </td>
6980          </tr>
6981
6982
6983          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6984           <!-- end of entry -->
6985
6986
6987          <tr class="entry" id="static_android.control.availableVideoStabilizationModes">
6988            <td class="entry_name
6989             " rowspan="3">
6990              android.<wbr/>control.<wbr/>available<wbr/>Video<wbr/>Stabilization<wbr/>Modes
6991            </td>
6992            <td class="entry_type">
6993                <span class="entry_type_name">byte</span>
6994                <span class="entry_type_container">x</span>
6995
6996                <span class="entry_type_array">
6997                  n
6998                </span>
6999              <span class="entry_type_visibility"> [public as enumList]</span>
7000
7001
7002              <span class="entry_type_hwlevel">[legacy] </span>
7003
7004
7005                <div class="entry_type_notes">List of enums.<wbr/></div>
7006
7007
7008            </td> <!-- entry_type -->
7009
7010            <td class="entry_description">
7011              <p>List of video stabilization modes for <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>
7012that are supported by this camera device.<wbr/></p>
7013            </td>
7014
7015            <td class="entry_units">
7016            </td>
7017
7018            <td class="entry_range">
7019              <p>Any value listed in <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a></p>
7020            </td>
7021
7022            <td class="entry_hal_version">
7023              <p>3.<wbr/>2</p>
7024            </td>
7025
7026            <td class="entry_tags">
7027              <ul class="entry_tags">
7028                  <li><a href="#tag_BC">BC</a></li>
7029              </ul>
7030            </td>
7031
7032          </tr>
7033          <tr class="entries_header">
7034            <th class="th_details" colspan="6">Details</th>
7035          </tr>
7036          <tr class="entry_cont">
7037            <td class="entry_details" colspan="6">
7038              <p>OFF will always be listed.<wbr/></p>
7039            </td>
7040          </tr>
7041
7042
7043          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
7044           <!-- end of entry -->
7045
7046
7047          <tr class="entry" id="static_android.control.awbAvailableModes">
7048            <td class="entry_name
7049             " rowspan="3">
7050              android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes
7051            </td>
7052            <td class="entry_type">
7053                <span class="entry_type_name">byte</span>
7054                <span class="entry_type_container">x</span>
7055
7056                <span class="entry_type_array">
7057                  n
7058                </span>
7059              <span class="entry_type_visibility"> [public as enumList]</span>
7060
7061
7062              <span class="entry_type_hwlevel">[legacy] </span>
7063
7064
7065                <div class="entry_type_notes">List of enums</div>
7066
7067
7068            </td> <!-- entry_type -->
7069
7070            <td class="entry_description">
7071              <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
7072camera device.<wbr/></p>
7073            </td>
7074
7075            <td class="entry_units">
7076            </td>
7077
7078            <td class="entry_range">
7079              <p>Any value listed in <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a></p>
7080            </td>
7081
7082            <td class="entry_hal_version">
7083              <p>3.<wbr/>2</p>
7084            </td>
7085
7086            <td class="entry_tags">
7087              <ul class="entry_tags">
7088                  <li><a href="#tag_BC">BC</a></li>
7089              </ul>
7090            </td>
7091
7092          </tr>
7093          <tr class="entries_header">
7094            <th class="th_details" colspan="6">Details</th>
7095          </tr>
7096          <tr class="entry_cont">
7097            <td class="entry_details" colspan="6">
7098              <p>Not all the auto-white-balance modes may be supported by a
7099given camera device.<wbr/> This entry lists the valid modes for
7100<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> for this camera device.<wbr/></p>
7101<p>All camera devices will support ON mode.<wbr/></p>
7102<p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always support OFF
7103mode,<wbr/> which enables application control of white balance,<wbr/> by using
7104<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
7105mode camera devices.<wbr/></p>
7106            </td>
7107          </tr>
7108
7109
7110          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
7111           <!-- end of entry -->
7112
7113
7114          <tr class="entry" id="static_android.control.maxRegions">
7115            <td class="entry_name
7116             " rowspan="1">
7117              android.<wbr/>control.<wbr/>max<wbr/>Regions
7118            </td>
7119            <td class="entry_type">
7120                <span class="entry_type_name">int32</span>
7121                <span class="entry_type_container">x</span>
7122
7123                <span class="entry_type_array">
7124                  3
7125                </span>
7126              <span class="entry_type_visibility"> [ndk_public]</span>
7127
7128
7129              <span class="entry_type_hwlevel">[legacy] </span>
7130
7131
7132
7133
7134            </td> <!-- entry_type -->
7135
7136            <td class="entry_description">
7137              <p>List of the maximum number of regions that can be used for metering in
7138auto-exposure (AE),<wbr/> auto-white balance (AWB),<wbr/> and auto-focus (AF);
7139this corresponds to the maximum number of elements in
7140<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/>
7141and <a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a>.<wbr/></p>
7142            </td>
7143
7144            <td class="entry_units">
7145            </td>
7146
7147            <td class="entry_range">
7148              <p>Value must be &gt;= 0 for each element.<wbr/> For full-capability devices
7149this value must be &gt;= 1 for AE and AF.<wbr/> The order of the elements is:
7150<code>(AE,<wbr/> AWB,<wbr/> AF)</code>.<wbr/></p>
7151            </td>
7152
7153            <td class="entry_hal_version">
7154              <p>3.<wbr/>2</p>
7155            </td>
7156
7157            <td class="entry_tags">
7158              <ul class="entry_tags">
7159                  <li><a href="#tag_BC">BC</a></li>
7160              </ul>
7161            </td>
7162
7163          </tr>
7164
7165
7166          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
7167           <!-- end of entry -->
7168
7169
7170          <tr class="entry" id="static_android.control.maxRegionsAe">
7171            <td class="entry_name
7172             " rowspan="5">
7173              android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae
7174            </td>
7175            <td class="entry_type">
7176                <span class="entry_type_name">int32</span>
7177
7178              <span class="entry_type_visibility"> [java_public]</span>
7179
7180              <span class="entry_type_synthetic">[synthetic] </span>
7181
7182              <span class="entry_type_hwlevel">[legacy] </span>
7183
7184
7185
7186
7187            </td> <!-- entry_type -->
7188
7189            <td class="entry_description">
7190              <p>The maximum number of metering regions that can be used by the auto-exposure (AE)
7191routine.<wbr/></p>
7192            </td>
7193
7194            <td class="entry_units">
7195            </td>
7196
7197            <td class="entry_range">
7198              <p>Value will be &gt;= 0.<wbr/> For FULL-capability devices,<wbr/> this
7199value will be &gt;= 1.<wbr/></p>
7200            </td>
7201
7202            <td class="entry_hal_version">
7203              <p>3.<wbr/>2</p>
7204            </td>
7205
7206            <td class="entry_tags">
7207            </td>
7208
7209          </tr>
7210          <tr class="entries_header">
7211            <th class="th_details" colspan="6">Details</th>
7212          </tr>
7213          <tr class="entry_cont">
7214            <td class="entry_details" colspan="6">
7215              <p>This corresponds to the maximum allowed number of elements in
7216<a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a>.<wbr/></p>
7217            </td>
7218          </tr>
7219
7220          <tr class="entries_header">
7221            <th class="th_details" colspan="6">HAL Implementation Details</th>
7222          </tr>
7223          <tr class="entry_cont">
7224            <td class="entry_details" colspan="6">
7225              <p>This entry is private to the framework.<wbr/> Fill in
7226maxRegions to have this entry be automatically populated.<wbr/></p>
7227            </td>
7228          </tr>
7229
7230          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
7231           <!-- end of entry -->
7232
7233
7234          <tr class="entry" id="static_android.control.maxRegionsAwb">
7235            <td class="entry_name
7236             " rowspan="5">
7237              android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb
7238            </td>
7239            <td class="entry_type">
7240                <span class="entry_type_name">int32</span>
7241
7242              <span class="entry_type_visibility"> [java_public]</span>
7243
7244              <span class="entry_type_synthetic">[synthetic] </span>
7245
7246              <span class="entry_type_hwlevel">[legacy] </span>
7247
7248
7249
7250
7251            </td> <!-- entry_type -->
7252
7253            <td class="entry_description">
7254              <p>The maximum number of metering regions that can be used by the auto-white balance (AWB)
7255routine.<wbr/></p>
7256            </td>
7257
7258            <td class="entry_units">
7259            </td>
7260
7261            <td class="entry_range">
7262              <p>Value will be &gt;= 0.<wbr/></p>
7263            </td>
7264
7265            <td class="entry_hal_version">
7266              <p>3.<wbr/>2</p>
7267            </td>
7268
7269            <td class="entry_tags">
7270            </td>
7271
7272          </tr>
7273          <tr class="entries_header">
7274            <th class="th_details" colspan="6">Details</th>
7275          </tr>
7276          <tr class="entry_cont">
7277            <td class="entry_details" colspan="6">
7278              <p>This corresponds to the maximum allowed number of elements in
7279<a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a>.<wbr/></p>
7280            </td>
7281          </tr>
7282
7283          <tr class="entries_header">
7284            <th class="th_details" colspan="6">HAL Implementation Details</th>
7285          </tr>
7286          <tr class="entry_cont">
7287            <td class="entry_details" colspan="6">
7288              <p>This entry is private to the framework.<wbr/> Fill in
7289maxRegions to have this entry be automatically populated.<wbr/></p>
7290            </td>
7291          </tr>
7292
7293          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
7294           <!-- end of entry -->
7295
7296
7297          <tr class="entry" id="static_android.control.maxRegionsAf">
7298            <td class="entry_name
7299             " rowspan="5">
7300              android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af
7301            </td>
7302            <td class="entry_type">
7303                <span class="entry_type_name">int32</span>
7304
7305              <span class="entry_type_visibility"> [java_public]</span>
7306
7307              <span class="entry_type_synthetic">[synthetic] </span>
7308
7309              <span class="entry_type_hwlevel">[legacy] </span>
7310
7311
7312
7313
7314            </td> <!-- entry_type -->
7315
7316            <td class="entry_description">
7317              <p>The maximum number of metering regions that can be used by the auto-focus (AF) routine.<wbr/></p>
7318            </td>
7319
7320            <td class="entry_units">
7321            </td>
7322
7323            <td class="entry_range">
7324              <p>Value will be &gt;= 0.<wbr/> For FULL-capability devices,<wbr/> this
7325value will be &gt;= 1.<wbr/></p>
7326            </td>
7327
7328            <td class="entry_hal_version">
7329              <p>3.<wbr/>2</p>
7330            </td>
7331
7332            <td class="entry_tags">
7333            </td>
7334
7335          </tr>
7336          <tr class="entries_header">
7337            <th class="th_details" colspan="6">Details</th>
7338          </tr>
7339          <tr class="entry_cont">
7340            <td class="entry_details" colspan="6">
7341              <p>This corresponds to the maximum allowed number of elements in
7342<a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a>.<wbr/></p>
7343            </td>
7344          </tr>
7345
7346          <tr class="entries_header">
7347            <th class="th_details" colspan="6">HAL Implementation Details</th>
7348          </tr>
7349          <tr class="entry_cont">
7350            <td class="entry_details" colspan="6">
7351              <p>This entry is private to the framework.<wbr/> Fill in
7352maxRegions to have this entry be automatically populated.<wbr/></p>
7353            </td>
7354          </tr>
7355
7356          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
7357           <!-- end of entry -->
7358
7359
7360          <tr class="entry" id="static_android.control.sceneModeOverrides">
7361            <td class="entry_name
7362             " rowspan="5">
7363              android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides
7364            </td>
7365            <td class="entry_type">
7366                <span class="entry_type_name">byte</span>
7367                <span class="entry_type_container">x</span>
7368
7369                <span class="entry_type_array">
7370                  3 x length(availableSceneModes)
7371                </span>
7372              <span class="entry_type_visibility"> [system]</span>
7373
7374
7375              <span class="entry_type_hwlevel">[limited] </span>
7376
7377
7378
7379
7380            </td> <!-- entry_type -->
7381
7382            <td class="entry_description">
7383              <p>Ordered list of auto-exposure,<wbr/> auto-white balance,<wbr/> and auto-focus
7384settings to use with each available scene mode.<wbr/></p>
7385            </td>
7386
7387            <td class="entry_units">
7388            </td>
7389
7390            <td class="entry_range">
7391              <p>For each available scene mode,<wbr/> the list must contain three
7392entries containing the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
7393<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
7394by the camera device.<wbr/> The entry order is <code>(aeMode,<wbr/> awbMode,<wbr/> afMode)</code>
7395where aeMode has the lowest index position.<wbr/></p>
7396            </td>
7397
7398            <td class="entry_hal_version">
7399              <p>3.<wbr/>2</p>
7400            </td>
7401
7402            <td class="entry_tags">
7403              <ul class="entry_tags">
7404                  <li><a href="#tag_BC">BC</a></li>
7405              </ul>
7406            </td>
7407
7408          </tr>
7409          <tr class="entries_header">
7410            <th class="th_details" colspan="6">Details</th>
7411          </tr>
7412          <tr class="entry_cont">
7413            <td class="entry_details" colspan="6">
7414              <p>When a scene mode is enabled,<wbr/> the camera device is expected
7415to 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/>
7416and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> with its preferred settings for
7417that scene mode.<wbr/></p>
7418<p>The order of this list matches that of availableSceneModes,<wbr/>
7419with 3 entries for each mode.<wbr/>  The overrides listed
7420for FACE_<wbr/>PRIORITY and FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT (if supported) are ignored,<wbr/>
7421since for that mode the application-set <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
7422<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
7423used instead,<wbr/> matching the behavior when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>
7424is set to AUTO.<wbr/> It is recommended that the FACE_<wbr/>PRIORITY and
7425FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT (if supported) overrides should be set to 0.<wbr/></p>
7426<p>For example,<wbr/> if availableSceneModes contains
7427<code>(FACE_<wbr/>PRIORITY,<wbr/> ACTION,<wbr/> NIGHT)</code>,<wbr/>  then the camera framework
7428expects sceneModeOverrides to have 9 entries formatted like:
7429<code>(0,<wbr/> 0,<wbr/> 0,<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> AUTO,<wbr/> CONTINUOUS_<wbr/>PICTURE,<wbr/>
7430ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> INCANDESCENT,<wbr/> AUTO)</code>.<wbr/></p>
7431            </td>
7432          </tr>
7433
7434          <tr class="entries_header">
7435            <th class="th_details" colspan="6">HAL Implementation Details</th>
7436          </tr>
7437          <tr class="entry_cont">
7438            <td class="entry_details" colspan="6">
7439              <p>To maintain backward compatibility,<wbr/> this list will be made available
7440in the static metadata of the camera service.<wbr/>  The camera service will
7441use these values to set <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
7442<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
7443mode other than FACE_<wbr/>PRIORITY and FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT (if supported).<wbr/></p>
7444            </td>
7445          </tr>
7446
7447          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
7448           <!-- end of entry -->
7449
7450
7451          <tr class="entry" id="static_android.control.availableHighSpeedVideoConfigurations">
7452            <td class="entry_name
7453             " rowspan="5">
7454              android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations
7455            </td>
7456            <td class="entry_type">
7457                <span class="entry_type_name">int32</span>
7458                <span class="entry_type_container">x</span>
7459
7460                <span class="entry_type_array">
7461                  5 x n
7462                </span>
7463              <span class="entry_type_visibility"> [hidden as highSpeedVideoConfiguration]</span>
7464
7465
7466              <span class="entry_type_hwlevel">[limited] </span>
7467
7468
7469
7470
7471            </td> <!-- entry_type -->
7472
7473            <td class="entry_description">
7474              <p>List of available high speed video size,<wbr/> fps range and max batch size configurations
7475supported 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>
7476            </td>
7477
7478            <td class="entry_units">
7479            </td>
7480
7481            <td class="entry_range">
7482              <p>For each configuration,<wbr/> the fps_<wbr/>max &gt;= 120fps.<wbr/></p>
7483            </td>
7484
7485            <td class="entry_hal_version">
7486              <p>3.<wbr/>2</p>
7487            </td>
7488
7489            <td class="entry_tags">
7490              <ul class="entry_tags">
7491                  <li><a href="#tag_V1">V1</a></li>
7492              </ul>
7493            </td>
7494
7495          </tr>
7496          <tr class="entries_header">
7497            <th class="th_details" colspan="6">Details</th>
7498          </tr>
7499          <tr class="entry_cont">
7500            <td class="entry_details" colspan="6">
7501              <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/>
7502this metadata will list the supported high speed video size,<wbr/> fps range and max batch size
7503configurations.<wbr/> All the sizes listed in this configuration will be a subset of the sizes
7504reported by <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputSizes">StreamConfigurationMap#getOutputSizes</a>
7505for processed non-stalling formats.<wbr/></p>
7506<p>For the high speed video use case,<wbr/> the application must
7507select the video size and fps range from this metadata to configure the recording and
7508preview streams and setup the recording requests.<wbr/> For example,<wbr/> if the application intends
7509to do high speed recording,<wbr/> it can select the maximum size reported by this metadata to
7510configure output streams.<wbr/> Once the size is selected,<wbr/> application can filter this metadata
7511by selected size and get the supported fps ranges,<wbr/> and use these fps ranges to setup the
7512recording requests.<wbr/> Note that for the use case of multiple output streams,<wbr/> application
7513must select one unique size from this metadata to use (e.<wbr/>g.,<wbr/> preview and recording streams
7514must have the same size).<wbr/> Otherwise,<wbr/> the high speed capture session creation will fail.<wbr/></p>
7515<p>The min and max fps will be multiple times of 30fps.<wbr/></p>
7516<p>High speed video streaming extends significant performance pressure to camera hardware,<wbr/>
7517to achieve efficient high speed streaming,<wbr/> the camera device may have to aggregate
7518multiple frames together and send to camera device for processing where the request
7519controls are same for all the frames in this batch.<wbr/> Max batch size indicates
7520the max possible number of frames the camera device will group together for this high
7521speed stream configuration.<wbr/> This max batch size will be used to generate a high speed
7522recording request list by
7523<a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a>.<wbr/>
7524The max batch size for each configuration will satisfy below conditions:</p>
7525<ul>
7526<li>Each max batch size will be a divisor of its corresponding fps_<wbr/>max /<wbr/> 30.<wbr/> For example,<wbr/>
7527if max_<wbr/>fps is 300,<wbr/> max batch size will only be 1,<wbr/> 2,<wbr/> 5,<wbr/> or 10.<wbr/></li>
7528<li>The camera device may choose smaller internal batch size for each configuration,<wbr/> but
7529the actual batch size will be a divisor of max batch size.<wbr/> For example,<wbr/> if the max batch
7530size is 8,<wbr/> the actual batch size used by camera device will only be 1,<wbr/> 2,<wbr/> 4,<wbr/> or 8.<wbr/></li>
7531<li>The max batch size in each configuration entry must be no larger than 32.<wbr/></li>
7532</ul>
7533<p>The camera device doesn't have to support batch mode to achieve high speed video recording,<wbr/>
7534in such case,<wbr/> batch_<wbr/>size_<wbr/>max will be reported as 1 in each configuration entry.<wbr/></p>
7535<p>This fps ranges in this configuration list can only be used to create requests
7536that are submitted to a high speed camera capture session created by
7537<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>.<wbr/>
7538The fps ranges reported in this metadata must not be used to setup capture requests for
7539normal capture session,<wbr/> or it will cause request error.<wbr/></p>
7540            </td>
7541          </tr>
7542
7543          <tr class="entries_header">
7544            <th class="th_details" colspan="6">HAL Implementation Details</th>
7545          </tr>
7546          <tr class="entry_cont">
7547            <td class="entry_details" colspan="6">
7548              <p>All the sizes listed in this configuration will be a subset of the sizes reported by
7549<a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> for processed non-stalling output formats.<wbr/>
7550Note that for all high speed video configurations,<wbr/> HAL must be able to support a minimum
7551of two streams,<wbr/> though the application might choose to configure just one stream.<wbr/></p>
7552<p>The HAL may support multiple sensor modes for high speed outputs,<wbr/> for example,<wbr/> 120fps
7553sensor mode and 120fps recording,<wbr/> 240fps sensor mode for 240fps recording.<wbr/> The application
7554usually starts preview first,<wbr/> then starts recording.<wbr/> To avoid sensor mode switch caused
7555stutter when starting recording as much as possible,<wbr/> the application may want to ensure
7556the same sensor mode is used for preview and recording.<wbr/> Therefore,<wbr/> The HAL must advertise
7557the variable fps range [30,<wbr/> fps_<wbr/>max] for each fixed fps range in this configuration list.<wbr/>
7558For example,<wbr/> if the HAL advertises [120,<wbr/> 120] and [240,<wbr/> 240],<wbr/> the HAL must also advertise
7559[30,<wbr/> 120] and [30,<wbr/> 240] for each configuration.<wbr/> In doing so,<wbr/> if the application intends to
7560do 120fps recording,<wbr/> it can select [30,<wbr/> 120] to start preview,<wbr/> and [120,<wbr/> 120] to start
7561recording.<wbr/> For these variable fps ranges,<wbr/> it's up to the HAL to decide the actual fps
7562values that are suitable for smooth preview streaming.<wbr/>
7563If the HAL sees different max_<wbr/>fps values that fall into different sensor modes in a
7564sequence of requests,<wbr/> the HAL must switch the sensor mode as quick as possible to minimize
7565the mode switch caused stutter.<wbr/></p>
7566<p>HAL can also support 60fps preview during high speed recording session by advertising
7567[60,<wbr/> max_<wbr/>fps] for preview and [max_<wbr/>fps,<wbr/> max_<wbr/>fps] for recording.<wbr/> However,<wbr/> HAL must not
7568advertise both 30fps preview and 60fps preview for the same recording frame rate.<wbr/></p>
7569<p>Starting from AIDL ICameraDevice V2,<wbr/> camera HAL must report the valid batch_<wbr/>size_<wbr/>max.<wbr/> The
7570field will actually be used to generate a high speed recording request list.<wbr/></p>
7571            </td>
7572          </tr>
7573
7574          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
7575           <!-- end of entry -->
7576
7577
7578          <tr class="entry" id="static_android.control.aeLockAvailable">
7579            <td class="entry_name
7580             " rowspan="3">
7581              android.<wbr/>control.<wbr/>ae<wbr/>Lock<wbr/>Available
7582            </td>
7583            <td class="entry_type">
7584                <span class="entry_type_name entry_type_name_enum">byte</span>
7585
7586              <span class="entry_type_visibility"> [public as boolean]</span>
7587
7588
7589              <span class="entry_type_hwlevel">[legacy] </span>
7590
7591
7592
7593                <ul class="entry_type_enum">
7594                  <li>
7595                    <span class="entry_type_enum_name">FALSE (v3.2)</span>
7596                  </li>
7597                  <li>
7598                    <span class="entry_type_enum_name">TRUE (v3.2)</span>
7599                  </li>
7600                </ul>
7601
7602            </td> <!-- entry_type -->
7603
7604            <td class="entry_description">
7605              <p>Whether the camera device supports <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></p>
7606            </td>
7607
7608            <td class="entry_units">
7609            </td>
7610
7611            <td class="entry_range">
7612            </td>
7613
7614            <td class="entry_hal_version">
7615              <p>3.<wbr/>2</p>
7616            </td>
7617
7618            <td class="entry_tags">
7619              <ul class="entry_tags">
7620                  <li><a href="#tag_BC">BC</a></li>
7621              </ul>
7622            </td>
7623
7624          </tr>
7625          <tr class="entries_header">
7626            <th class="th_details" colspan="6">Details</th>
7627          </tr>
7628          <tr class="entry_cont">
7629            <td class="entry_details" colspan="6">
7630              <p>Devices with MANUAL_<wbr/>SENSOR capability or BURST_<wbr/>CAPTURE capability will always
7631list <code>true</code>.<wbr/> This includes FULL devices.<wbr/></p>
7632            </td>
7633          </tr>
7634
7635
7636          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
7637           <!-- end of entry -->
7638
7639
7640          <tr class="entry" id="static_android.control.awbLockAvailable">
7641            <td class="entry_name
7642             " rowspan="3">
7643              android.<wbr/>control.<wbr/>awb<wbr/>Lock<wbr/>Available
7644            </td>
7645            <td class="entry_type">
7646                <span class="entry_type_name entry_type_name_enum">byte</span>
7647
7648              <span class="entry_type_visibility"> [public as boolean]</span>
7649
7650
7651              <span class="entry_type_hwlevel">[legacy] </span>
7652
7653
7654
7655                <ul class="entry_type_enum">
7656                  <li>
7657                    <span class="entry_type_enum_name">FALSE (v3.2)</span>
7658                  </li>
7659                  <li>
7660                    <span class="entry_type_enum_name">TRUE (v3.2)</span>
7661                  </li>
7662                </ul>
7663
7664            </td> <!-- entry_type -->
7665
7666            <td class="entry_description">
7667              <p>Whether the camera device supports <a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></p>
7668            </td>
7669
7670            <td class="entry_units">
7671            </td>
7672
7673            <td class="entry_range">
7674            </td>
7675
7676            <td class="entry_hal_version">
7677              <p>3.<wbr/>2</p>
7678            </td>
7679
7680            <td class="entry_tags">
7681              <ul class="entry_tags">
7682                  <li><a href="#tag_BC">BC</a></li>
7683              </ul>
7684            </td>
7685
7686          </tr>
7687          <tr class="entries_header">
7688            <th class="th_details" colspan="6">Details</th>
7689          </tr>
7690          <tr class="entry_cont">
7691            <td class="entry_details" colspan="6">
7692              <p>Devices with MANUAL_<wbr/>POST_<wbr/>PROCESSING capability or BURST_<wbr/>CAPTURE capability will
7693always list <code>true</code>.<wbr/> This includes FULL devices.<wbr/></p>
7694            </td>
7695          </tr>
7696
7697
7698          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
7699           <!-- end of entry -->
7700
7701
7702          <tr class="entry" id="static_android.control.availableModes">
7703            <td class="entry_name
7704             " rowspan="3">
7705              android.<wbr/>control.<wbr/>available<wbr/>Modes
7706            </td>
7707            <td class="entry_type">
7708                <span class="entry_type_name">byte</span>
7709                <span class="entry_type_container">x</span>
7710
7711                <span class="entry_type_array">
7712                  n
7713                </span>
7714              <span class="entry_type_visibility"> [public as enumList]</span>
7715
7716
7717              <span class="entry_type_hwlevel">[legacy] </span>
7718
7719
7720                <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>mode).<wbr/></div>
7721
7722
7723            </td> <!-- entry_type -->
7724
7725            <td class="entry_description">
7726              <p>List of control modes for <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> that are supported by this camera
7727device.<wbr/></p>
7728            </td>
7729
7730            <td class="entry_units">
7731            </td>
7732
7733            <td class="entry_range">
7734              <p>Any value listed in <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a></p>
7735            </td>
7736
7737            <td class="entry_hal_version">
7738              <p>3.<wbr/>2</p>
7739            </td>
7740
7741            <td class="entry_tags">
7742            </td>
7743
7744          </tr>
7745          <tr class="entries_header">
7746            <th class="th_details" colspan="6">Details</th>
7747          </tr>
7748          <tr class="entry_cont">
7749            <td class="entry_details" colspan="6">
7750              <p>This list contains control modes that can be set for the camera device.<wbr/>
7751LEGACY mode devices will always support AUTO mode.<wbr/> LIMITED and FULL
7752devices will always support OFF,<wbr/> AUTO modes.<wbr/></p>
7753            </td>
7754          </tr>
7755
7756
7757          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
7758           <!-- end of entry -->
7759
7760
7761          <tr class="entry" id="static_android.control.postRawSensitivityBoostRange">
7762            <td class="entry_name
7763             " rowspan="5">
7764              android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost<wbr/>Range
7765            </td>
7766            <td class="entry_type">
7767                <span class="entry_type_name">int32</span>
7768                <span class="entry_type_container">x</span>
7769
7770                <span class="entry_type_array">
7771                  2
7772                </span>
7773              <span class="entry_type_visibility"> [public as rangeInt]</span>
7774
7775
7776
7777
7778                <div class="entry_type_notes">Range of supported post RAW sensitivity boosts</div>
7779
7780
7781            </td> <!-- entry_type -->
7782
7783            <td class="entry_description">
7784              <p>Range of boosts for <a href="#controls_android.control.postRawSensitivityBoost">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost</a> supported
7785by this camera device.<wbr/></p>
7786            </td>
7787
7788            <td class="entry_units">
7789              ISO arithmetic units,<wbr/> the same as android.<wbr/>sensor.<wbr/>sensitivity
7790            </td>
7791
7792            <td class="entry_range">
7793            </td>
7794
7795            <td class="entry_hal_version">
7796              <p>3.<wbr/>2</p>
7797            </td>
7798
7799            <td class="entry_tags">
7800            </td>
7801
7802          </tr>
7803          <tr class="entries_header">
7804            <th class="th_details" colspan="6">Details</th>
7805          </tr>
7806          <tr class="entry_cont">
7807            <td class="entry_details" colspan="6">
7808              <p>Devices support post RAW sensitivity boost  will advertise
7809<a href="#controls_android.control.postRawSensitivityBoost">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost</a> key for controlling
7810post RAW sensitivity boost.<wbr/></p>
7811<p>This key will be <code>null</code> for devices that do not support any RAW format
7812outputs.<wbr/> For devices that do support RAW format outputs,<wbr/> this key will always
7813present,<wbr/> and if a device does not support post RAW sensitivity boost,<wbr/> it will
7814list <code>(100,<wbr/> 100)</code> in this key.<wbr/></p>
7815            </td>
7816          </tr>
7817
7818          <tr class="entries_header">
7819            <th class="th_details" colspan="6">HAL Implementation Details</th>
7820          </tr>
7821          <tr class="entry_cont">
7822            <td class="entry_details" colspan="6">
7823              <p>This key is added in legacy HAL3.<wbr/>4.<wbr/> For legacy HAL3.<wbr/>3 or earlier devices,<wbr/> camera
7824framework will generate this key as <code>(100,<wbr/> 100)</code> if device supports any of RAW output
7825formats.<wbr/>  All legacy HAL3.<wbr/>4 and above devices should list this key if device supports
7826any of RAW output formats.<wbr/></p>
7827            </td>
7828          </tr>
7829
7830          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
7831           <!-- end of entry -->
7832
7833
7834          <tr class="entry" id="static_android.control.availableExtendedSceneModeMaxSizes">
7835            <td class="entry_name
7836             " rowspan="5">
7837              android.<wbr/>control.<wbr/>available<wbr/>Extended<wbr/>Scene<wbr/>Mode<wbr/>Max<wbr/>Sizes
7838            </td>
7839            <td class="entry_type">
7840                <span class="entry_type_name">int32</span>
7841                <span class="entry_type_container">x</span>
7842
7843                <span class="entry_type_array">
7844                  3 x n
7845                </span>
7846              <span class="entry_type_visibility"> [ndk_public]</span>
7847
7848
7849              <span class="entry_type_hwlevel">[limited] </span>
7850
7851
7852                <div class="entry_type_notes">List of extended scene modes and the corresponding max streaming sizes.<wbr/></div>
7853
7854
7855            </td> <!-- entry_type -->
7856
7857            <td class="entry_description">
7858              <p>The list of extended scene modes for <a href="#controls_android.control.extendedSceneMode">android.<wbr/>control.<wbr/>extended<wbr/>Scene<wbr/>Mode</a> that are supported
7859by this camera device,<wbr/> and each extended scene mode's maximum streaming (non-stall) size
7860with  effect.<wbr/></p>
7861            </td>
7862
7863            <td class="entry_units">
7864              (mode,<wbr/> width,<wbr/> height)
7865            </td>
7866
7867            <td class="entry_range">
7868            </td>
7869
7870            <td class="entry_hal_version">
7871              <p>3.<wbr/>5</p>
7872            </td>
7873
7874            <td class="entry_tags">
7875            </td>
7876
7877          </tr>
7878          <tr class="entries_header">
7879            <th class="th_details" colspan="6">Details</th>
7880          </tr>
7881          <tr class="entry_cont">
7882            <td class="entry_details" colspan="6">
7883              <p>For DISABLED mode,<wbr/> the camera behaves normally with no extended scene mode enabled.<wbr/></p>
7884<p>For BOKEH_<wbr/>STILL_<wbr/>CAPTURE mode,<wbr/> the maximum streaming dimension specifies the limit
7885under which bokeh is effective when capture intent is PREVIEW.<wbr/> Note that when capture
7886intent is PREVIEW,<wbr/> the bokeh effect may not be as high in quality compared to
7887STILL_<wbr/>CAPTURE intent in order to maintain reasonable frame rate.<wbr/> The maximum streaming
7888dimension must be one of the YUV_<wbr/>420_<wbr/>888 or PRIVATE resolutions in
7889availableStreamConfigurations,<wbr/> or (0,<wbr/> 0) if preview bokeh is not supported.<wbr/> If the
7890application configures a stream larger than the maximum streaming dimension,<wbr/> bokeh
7891effect may not be applied for this stream for PREVIEW intent.<wbr/></p>
7892<p>For BOKEH_<wbr/>CONTINUOUS mode,<wbr/> the maximum streaming dimension specifies the limit under
7893which bokeh is effective.<wbr/> This dimension must be one of the YUV_<wbr/>420_<wbr/>888 or PRIVATE
7894resolutions in availableStreamConfigurations,<wbr/> and if the sensor maximum resolution is
7895larger than or equal to 1080p,<wbr/> the maximum streaming dimension must be at least 1080p.<wbr/>
7896If the application configures a stream with larger dimension,<wbr/> the stream may not have
7897bokeh effect applied.<wbr/></p>
7898            </td>
7899          </tr>
7900
7901          <tr class="entries_header">
7902            <th class="th_details" colspan="6">HAL Implementation Details</th>
7903          </tr>
7904          <tr class="entry_cont">
7905            <td class="entry_details" colspan="6">
7906              <p>For available extended scene modes,<wbr/> DISABLED will always be listed.<wbr/></p>
7907<p>HAL must support at list one non-OFF extended scene mode if extendedSceneMode control is
7908available on the camera device.<wbr/> For DISABLED mode,<wbr/> the maximum streaming resolution must
7909be set to (0,<wbr/> 0).<wbr/></p>
7910            </td>
7911          </tr>
7912
7913          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
7914           <!-- end of entry -->
7915
7916
7917          <tr class="entry" id="static_android.control.availableExtendedSceneModeZoomRatioRanges">
7918            <td class="entry_name
7919             " rowspan="3">
7920              android.<wbr/>control.<wbr/>available<wbr/>Extended<wbr/>Scene<wbr/>Mode<wbr/>Zoom<wbr/>Ratio<wbr/>Ranges
7921            </td>
7922            <td class="entry_type">
7923                <span class="entry_type_name">float</span>
7924                <span class="entry_type_container">x</span>
7925
7926                <span class="entry_type_array">
7927                  2 x n
7928                </span>
7929              <span class="entry_type_visibility"> [ndk_public]</span>
7930
7931
7932              <span class="entry_type_hwlevel">[limited] </span>
7933
7934
7935                <div class="entry_type_notes">Zoom ranges for all supported non-OFF extended scene modes.<wbr/></div>
7936
7937
7938            </td> <!-- entry_type -->
7939
7940            <td class="entry_description">
7941              <p>The ranges of supported zoom ratio for non-DISABLED <a href="#controls_android.control.extendedSceneMode">android.<wbr/>control.<wbr/>extended<wbr/>Scene<wbr/>Mode</a>.<wbr/></p>
7942            </td>
7943
7944            <td class="entry_units">
7945              (minZoom,<wbr/> maxZoom)
7946            </td>
7947
7948            <td class="entry_range">
7949            </td>
7950
7951            <td class="entry_hal_version">
7952              <p>3.<wbr/>5</p>
7953            </td>
7954
7955            <td class="entry_tags">
7956            </td>
7957
7958          </tr>
7959          <tr class="entries_header">
7960            <th class="th_details" colspan="6">Details</th>
7961          </tr>
7962          <tr class="entry_cont">
7963            <td class="entry_details" colspan="6">
7964              <p>When extended scene mode is set,<wbr/> the camera device may have limited range of zoom ratios
7965compared to when extended scene mode is DISABLED.<wbr/> This tag lists the zoom ratio ranges
7966for all supported non-DISABLED extended scene modes,<wbr/> in the same order as in
7967android.<wbr/>control.<wbr/>available<wbr/>Extended.<wbr/></p>
7968<p>Range [1.<wbr/>0,<wbr/> 1.<wbr/>0] means that no zoom (optical or digital) is supported.<wbr/></p>
7969            </td>
7970          </tr>
7971
7972
7973          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
7974           <!-- end of entry -->
7975
7976
7977          <tr class="entry" id="static_android.control.availableExtendedSceneModeCapabilities">
7978            <td class="entry_name
7979             " rowspan="3">
7980              android.<wbr/>control.<wbr/>available<wbr/>Extended<wbr/>Scene<wbr/>Mode<wbr/>Capabilities
7981            </td>
7982            <td class="entry_type">
7983                <span class="entry_type_name">int32</span>
7984                <span class="entry_type_container">x</span>
7985
7986                <span class="entry_type_array">
7987                  n
7988                </span>
7989              <span class="entry_type_visibility"> [public as capability]</span>
7990
7991              <span class="entry_type_synthetic">[synthetic] </span>
7992
7993
7994
7995
7996
7997            </td> <!-- entry_type -->
7998
7999            <td class="entry_description">
8000              <p>The list of extended scene modes for <a href="#controls_android.control.extendedSceneMode">android.<wbr/>control.<wbr/>extended<wbr/>Scene<wbr/>Mode</a> that
8001are supported by this camera device,<wbr/> and each extended scene mode's capabilities such
8002as maximum streaming size,<wbr/> and supported zoom ratio ranges.<wbr/></p>
8003            </td>
8004
8005            <td class="entry_units">
8006            </td>
8007
8008            <td class="entry_range">
8009            </td>
8010
8011            <td class="entry_hal_version">
8012              <p>3.<wbr/>5</p>
8013            </td>
8014
8015            <td class="entry_tags">
8016            </td>
8017
8018          </tr>
8019          <tr class="entries_header">
8020            <th class="th_details" colspan="6">Details</th>
8021          </tr>
8022          <tr class="entry_cont">
8023            <td class="entry_details" colspan="6">
8024              <p>For DISABLED mode,<wbr/> the camera behaves normally with no extended scene mode enabled.<wbr/></p>
8025<p>For BOKEH_<wbr/>STILL_<wbr/>CAPTURE mode,<wbr/> the maximum streaming dimension specifies the limit
8026under which bokeh is effective when capture intent is PREVIEW.<wbr/> Note that when capture
8027intent is PREVIEW,<wbr/> the bokeh effect may not be as high quality compared to STILL_<wbr/>CAPTURE
8028intent in order to maintain reasonable frame rate.<wbr/> The maximum streaming dimension must
8029be one of the YUV_<wbr/>420_<wbr/>888 or PRIVATE resolutions in availableStreamConfigurations,<wbr/> or
8030(0,<wbr/> 0) if preview bokeh is not supported.<wbr/> If the application configures a stream
8031larger than the maximum streaming dimension,<wbr/> bokeh effect may not be applied for this
8032stream for PREVIEW intent.<wbr/></p>
8033<p>For BOKEH_<wbr/>CONTINUOUS mode,<wbr/> the maximum streaming dimension specifies the limit under
8034which bokeh is effective.<wbr/> This dimension must be one of the YUV_<wbr/>420_<wbr/>888 or PRIVATE
8035resolutions in availableStreamConfigurations,<wbr/> and if the sensor maximum resolution is
8036larger than or equal to 1080p,<wbr/> the maximum streaming dimension must be at least 1080p.<wbr/>
8037If the application configures a stream with larger dimension,<wbr/> the stream may not have
8038bokeh effect applied.<wbr/></p>
8039<p>When extended scene mode is set,<wbr/> the camera device may have limited range of zoom ratios
8040compared to when the mode is DISABLED.<wbr/> availableExtendedSceneModeCapabilities lists the
8041zoom ranges for all supported extended modes.<wbr/> A range of (1.<wbr/>0,<wbr/> 1.<wbr/>0) means that no zoom
8042(optical or digital) is supported.<wbr/></p>
8043            </td>
8044          </tr>
8045
8046
8047          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
8048           <!-- end of entry -->
8049
8050
8051          <tr class="entry" id="static_android.control.zoomRatioRange">
8052            <td class="entry_name
8053             " rowspan="5">
8054              android.<wbr/>control.<wbr/>zoom<wbr/>Ratio<wbr/>Range
8055            </td>
8056            <td class="entry_type">
8057                <span class="entry_type_name">float</span>
8058                <span class="entry_type_container">x</span>
8059
8060                <span class="entry_type_array">
8061                  2
8062                </span>
8063              <span class="entry_type_visibility"> [public as rangeFloat]</span>
8064
8065
8066              <span class="entry_type_hwlevel">[limited] </span>
8067
8068
8069                <div class="entry_type_notes">The range of zoom ratios that this camera device supports.<wbr/></div>
8070
8071
8072            </td> <!-- entry_type -->
8073
8074            <td class="entry_description">
8075              <p>Minimum and maximum zoom ratios supported by this camera device.<wbr/></p>
8076            </td>
8077
8078            <td class="entry_units">
8079              A pair of zoom ratio in floating-points: (minZoom,<wbr/> maxZoom)
8080            </td>
8081
8082            <td class="entry_range">
8083              <p>maxZoom &gt;= 1.<wbr/>0 &gt;= minZoom</p>
8084            </td>
8085
8086            <td class="entry_hal_version">
8087              <p>3.<wbr/>5</p>
8088            </td>
8089
8090            <td class="entry_tags">
8091            </td>
8092
8093          </tr>
8094          <tr class="entries_header">
8095            <th class="th_details" colspan="6">Details</th>
8096          </tr>
8097          <tr class="entry_cont">
8098            <td class="entry_details" colspan="6">
8099              <p>If the camera device supports zoom-out from 1x zoom,<wbr/> minZoom will be less than 1.<wbr/>0,<wbr/> and
8100setting <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> to values less than 1.<wbr/>0 increases the camera's field
8101of view.<wbr/></p>
8102            </td>
8103          </tr>
8104
8105          <tr class="entries_header">
8106            <th class="th_details" colspan="6">HAL Implementation Details</th>
8107          </tr>
8108          <tr class="entry_cont">
8109            <td class="entry_details" colspan="6">
8110              <p>When the key is reported,<wbr/> the camera device's <a href="#static_android.scaler.availableMaxDigitalZoom">android.<wbr/>scaler.<wbr/>available<wbr/>Max<wbr/>Digital<wbr/>Zoom</a>
8111must be less than or equal to maxZoom.<wbr/> The camera framework makes sure to always
8112control zoom via <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a>.<wbr/> The <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> tag is only
8113used to do horizontal or vertical cropping (but not both) to achieve aspect ratio
8114different than the camera sensor's native aspect ratio.<wbr/></p>
8115<p>For a logical multi-camera device,<wbr/> this key must either be reported for both the logical
8116camera device and all its physical sub-cameras,<wbr/> or none of them.<wbr/></p>
8117<p>When the key is not reported,<wbr/> camera framework derives the application-facing
8118zoomRatioRange to be (1,<wbr/> <a href="#static_android.scaler.availableMaxDigitalZoom">android.<wbr/>scaler.<wbr/>available<wbr/>Max<wbr/>Digital<wbr/>Zoom</a>).<wbr/></p>
8119            </td>
8120          </tr>
8121
8122          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
8123           <!-- end of entry -->
8124
8125
8126          <tr class="entry" id="static_android.control.availableHighSpeedVideoConfigurationsMaximumResolution">
8127            <td class="entry_name
8128             " rowspan="5">
8129              android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations<wbr/>Maximum<wbr/>Resolution
8130            </td>
8131            <td class="entry_type">
8132                <span class="entry_type_name">int32</span>
8133                <span class="entry_type_container">x</span>
8134
8135                <span class="entry_type_array">
8136                  5 x n
8137                </span>
8138              <span class="entry_type_visibility"> [hidden as highSpeedVideoConfiguration]</span>
8139
8140
8141
8142
8143
8144
8145            </td> <!-- entry_type -->
8146
8147            <td class="entry_description">
8148              <p>List of available high speed video size,<wbr/> fps range and max batch size configurations
8149supported by the camera device,<wbr/> in the format of
8150(width,<wbr/> height,<wbr/> fps_<wbr/>min,<wbr/> fps_<wbr/>max,<wbr/> batch_<wbr/>size_<wbr/>max),<wbr/>
8151when <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to
8152<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p>
8153            </td>
8154
8155            <td class="entry_units">
8156            </td>
8157
8158            <td class="entry_range">
8159              <p>For each configuration,<wbr/> the fps_<wbr/>max &gt;= 120fps.<wbr/></p>
8160            </td>
8161
8162            <td class="entry_hal_version">
8163              <p>3.<wbr/>6</p>
8164            </td>
8165
8166            <td class="entry_tags">
8167              <ul class="entry_tags">
8168                  <li><a href="#tag_V1">V1</a></li>
8169              </ul>
8170            </td>
8171
8172          </tr>
8173          <tr class="entries_header">
8174            <th class="th_details" colspan="6">Details</th>
8175          </tr>
8176          <tr class="entry_cont">
8177            <td class="entry_details" colspan="6">
8178              <p>Analogous to <a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>,<wbr/> for configurations
8179which are applicable when <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to
8180<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p>
8181            </td>
8182          </tr>
8183
8184          <tr class="entries_header">
8185            <th class="th_details" colspan="6">HAL Implementation Details</th>
8186          </tr>
8187          <tr class="entry_cont">
8188            <td class="entry_details" colspan="6">
8189              <p>Refer to hal details for <a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/></p>
8190            </td>
8191          </tr>
8192
8193          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
8194           <!-- end of entry -->
8195
8196
8197          <tr class="entry" id="static_android.control.availableSettingsOverrides">
8198            <td class="entry_name
8199             " rowspan="3">
8200              android.<wbr/>control.<wbr/>available<wbr/>Settings<wbr/>Overrides
8201            </td>
8202            <td class="entry_type">
8203                <span class="entry_type_name">int32</span>
8204                <span class="entry_type_container">x</span>
8205
8206                <span class="entry_type_array">
8207                  n
8208                </span>
8209              <span class="entry_type_visibility"> [public as enumList]</span>
8210
8211
8212
8213
8214                <div class="entry_type_notes">list of enums</div>
8215
8216
8217            </td> <!-- entry_type -->
8218
8219            <td class="entry_description">
8220              <p>List of available settings overrides supported by the camera device that can
8221be used to speed up certain controls.<wbr/></p>
8222            </td>
8223
8224            <td class="entry_units">
8225            </td>
8226
8227            <td class="entry_range">
8228              <p>Any value listed in <a href="#controls_android.control.settingsOverride">android.<wbr/>control.<wbr/>settings<wbr/>Override</a></p>
8229            </td>
8230
8231            <td class="entry_hal_version">
8232              <p>3.<wbr/>9</p>
8233            </td>
8234
8235            <td class="entry_tags">
8236            </td>
8237
8238          </tr>
8239          <tr class="entries_header">
8240            <th class="th_details" colspan="6">Details</th>
8241          </tr>
8242          <tr class="entry_cont">
8243            <td class="entry_details" colspan="6">
8244              <p>When not all controls within a CaptureRequest are required to take effect
8245at the same time on the outputs,<wbr/> the camera device may apply certain request keys sooner
8246to improve latency.<wbr/> This list contains such supported settings overrides.<wbr/> Each settings
8247override corresponds to a set of CaptureRequest keys that can be sped up when applying.<wbr/></p>
8248<p>A supported settings override can be passed in via
8249<a href="https://developer.android.com/reference/android/hardware/camera2/CaptureRequest.html#CONTROL_SETTINGS_OVERRIDE">Capture<wbr/>Request#CONTROL_<wbr/>SETTINGS_<wbr/>OVERRIDE</a>,<wbr/> and the
8250CaptureRequest keys corresponding to the override are applied as soon as possible,<wbr/> not
8251bound by per-frame synchronization.<wbr/> See <a href="#controls_android.control.settingsOverride">android.<wbr/>control.<wbr/>settings<wbr/>Override</a> for the
8252CaptureRequest keys for each override.<wbr/></p>
8253<p>OFF is always included in this list.<wbr/></p>
8254            </td>
8255          </tr>
8256
8257
8258          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
8259           <!-- end of entry -->
8260
8261
8262          <tr class="entry" id="static_android.control.autoframingAvailable">
8263            <td class="entry_name
8264             " rowspan="3">
8265              android.<wbr/>control.<wbr/>autoframing<wbr/>Available
8266            </td>
8267            <td class="entry_type">
8268                <span class="entry_type_name entry_type_name_enum">byte</span>
8269
8270              <span class="entry_type_visibility"> [public as boolean]</span>
8271
8272
8273              <span class="entry_type_hwlevel">[limited] </span>
8274
8275
8276
8277                <ul class="entry_type_enum">
8278                  <li>
8279                    <span class="entry_type_enum_name">FALSE (v3.9)</span>
8280                  </li>
8281                  <li>
8282                    <span class="entry_type_enum_name">TRUE (v3.9)</span>
8283                  </li>
8284                </ul>
8285
8286            </td> <!-- entry_type -->
8287
8288            <td class="entry_description">
8289              <p>Whether the camera device supports <a href="#controls_android.control.autoframing">android.<wbr/>control.<wbr/>autoframing</a>.<wbr/></p>
8290            </td>
8291
8292            <td class="entry_units">
8293            </td>
8294
8295            <td class="entry_range">
8296            </td>
8297
8298            <td class="entry_hal_version">
8299              <p>3.<wbr/>9</p>
8300            </td>
8301
8302            <td class="entry_tags">
8303            </td>
8304
8305          </tr>
8306          <tr class="entries_header">
8307            <th class="th_details" colspan="6">Details</th>
8308          </tr>
8309          <tr class="entry_cont">
8310            <td class="entry_details" colspan="6">
8311              <p>Will be <code>false</code> if auto-framing is not available.<wbr/></p>
8312            </td>
8313          </tr>
8314
8315
8316          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
8317           <!-- end of entry -->
8318
8319
8320          <tr class="entry" id="static_android.control.lowLightBoostInfoLuminanceRange">
8321            <td class="entry_name
8322             " rowspan="1">
8323              android.<wbr/>control.<wbr/>low<wbr/>Light<wbr/>Boost<wbr/>Info<wbr/>Luminance<wbr/>Range
8324            </td>
8325            <td class="entry_type">
8326                <span class="entry_type_name">float</span>
8327                <span class="entry_type_container">x</span>
8328
8329                <span class="entry_type_array">
8330                  2
8331                </span>
8332              <span class="entry_type_visibility"> [public as rangeFloat]</span>
8333
8334
8335
8336
8337
8338
8339            </td> <!-- entry_type -->
8340
8341            <td class="entry_description">
8342              <p>The operating luminance range of low light boost measured in lux (lx).<wbr/></p>
8343            </td>
8344
8345            <td class="entry_units">
8346            </td>
8347
8348            <td class="entry_range">
8349              <p>The lower bound indicates the lowest scene luminance value the AE mode
8350'ON_<wbr/>LOW_<wbr/>LIGHT_<wbr/>BOOST_<wbr/>BRIGHTNESS_<wbr/>PRIORITY' can operate within.<wbr/> Scenes of lower luminance
8351than this may receive less brightening,<wbr/> increased noise,<wbr/> or artifacts.<wbr/></p>
8352<p>The upper bound indicates the luminance threshold at the point when the mode is enabled.<wbr/>
8353For example,<wbr/> 'Range[0.<wbr/>3,<wbr/> 30.<wbr/>0]' defines 0.<wbr/>3 lux being the lowest scene luminance the
8354mode can reliably support.<wbr/> 30.<wbr/>0 lux represents the threshold when this mode is
8355activated.<wbr/> Scenes measured at less than or equal to 30 lux will activate low light
8356boost.<wbr/></p>
8357<p>If this key is defined,<wbr/> then the AE mode 'ON_<wbr/>LOW_<wbr/>LIGHT_<wbr/>BOOST_<wbr/>BRIGHTNESS_<wbr/>PRIORITY' will
8358also be present.<wbr/></p>
8359            </td>
8360
8361            <td class="entry_hal_version">
8362              <p>3.<wbr/>10</p>
8363            </td>
8364
8365            <td class="entry_tags">
8366            </td>
8367
8368          </tr>
8369
8370
8371          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
8372           <!-- end of entry -->
8373
8374
8375          <tr class="entry" id="static_android.control.aeAvailablePriorityModes">
8376            <td class="entry_name
8377             " rowspan="3">
8378              android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Priority<wbr/>Modes
8379            </td>
8380            <td class="entry_type">
8381                <span class="entry_type_name">byte</span>
8382                <span class="entry_type_container">x</span>
8383
8384                <span class="entry_type_array">
8385                  n
8386                </span>
8387              <span class="entry_type_visibility"> [public as enumList]</span>
8388
8389
8390
8391
8392                <div class="entry_type_notes">list of enums</div>
8393
8394
8395            </td> <!-- entry_type -->
8396
8397            <td class="entry_description">
8398              <p>List of auto-exposure priority modes for <a href="#controls_android.control.aePriorityMode">android.<wbr/>control.<wbr/>ae<wbr/>Priority<wbr/>Mode</a>
8399that are supported by this camera device.<wbr/></p>
8400            </td>
8401
8402            <td class="entry_units">
8403            </td>
8404
8405            <td class="entry_range">
8406              <p>Any value listed in <a href="#controls_android.control.aePriorityMode">android.<wbr/>control.<wbr/>ae<wbr/>Priority<wbr/>Mode</a></p>
8407            </td>
8408
8409            <td class="entry_hal_version">
8410              <p>3.<wbr/>11</p>
8411            </td>
8412
8413            <td class="entry_tags">
8414            </td>
8415
8416          </tr>
8417          <tr class="entries_header">
8418            <th class="th_details" colspan="6">Details</th>
8419          </tr>
8420          <tr class="entry_cont">
8421            <td class="entry_details" colspan="6">
8422              <p>This entry lists the valid modes for
8423<a href="#controls_android.control.aePriorityMode">android.<wbr/>control.<wbr/>ae<wbr/>Priority<wbr/>Mode</a> for this camera device.<wbr/>
8424If no AE priority modes are available for a device,<wbr/> this will only list OFF.<wbr/></p>
8425            </td>
8426          </tr>
8427
8428
8429          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
8430           <!-- end of entry -->
8431
8432
8433
8434      <!-- end of kind -->
8435      </tbody>
8436      <tr><td colspan="7" class="kind">dynamic</td></tr>
8437
8438      <thead class="entries_header">
8439        <tr>
8440          <th class="th_name">Property Name</th>
8441          <th class="th_type">Type</th>
8442          <th class="th_description">Description</th>
8443          <th class="th_units">Units</th>
8444          <th class="th_range">Range</th>
8445          <th class="th_hal_version">Initial HIDL HAL version</th>
8446          <th class="th_tags">Tags</th>
8447        </tr>
8448      </thead>
8449
8450      <tbody>
8451
8452
8453
8454
8455
8456
8457
8458
8459
8460
8461          <tr class="entry" id="dynamic_android.control.aePrecaptureId">
8462            <td class="entry_name
8463                entry_name_deprecated
8464             " rowspan="3">
8465              android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Id
8466            </td>
8467            <td class="entry_type">
8468                <span class="entry_type_name">int32</span>
8469
8470              <span class="entry_type_visibility"> [system]</span>
8471
8472
8473
8474              <span class="entry_type_deprecated">[deprecated] </span>
8475
8476
8477
8478            </td> <!-- entry_type -->
8479
8480            <td class="entry_description">
8481              <p>The ID sent with the latest
8482CAMERA2_<wbr/>TRIGGER_<wbr/>PRECAPTURE_<wbr/>METERING call</p>
8483            </td>
8484
8485            <td class="entry_units">
8486            </td>
8487
8488            <td class="entry_range">
8489              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
8490            </td>
8491
8492            <td class="entry_hal_version">
8493              <p>3.<wbr/>2</p>
8494            </td>
8495
8496            <td class="entry_tags">
8497            </td>
8498
8499          </tr>
8500          <tr class="entries_header">
8501            <th class="th_details" colspan="6">Details</th>
8502          </tr>
8503          <tr class="entry_cont">
8504            <td class="entry_details" colspan="6">
8505              <p>Must be 0 if no
8506CAMERA2_<wbr/>TRIGGER_<wbr/>PRECAPTURE_<wbr/>METERING trigger received yet
8507by HAL.<wbr/> Always updated even if AE algorithm ignores the
8508trigger</p>
8509            </td>
8510          </tr>
8511
8512
8513          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
8514           <!-- end of entry -->
8515
8516
8517          <tr class="entry" id="dynamic_android.control.aeAntibandingMode">
8518            <td class="entry_name
8519             " rowspan="5">
8520              android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode
8521            </td>
8522            <td class="entry_type">
8523                <span class="entry_type_name entry_type_name_enum">byte</span>
8524
8525              <span class="entry_type_visibility"> [public]</span>
8526
8527
8528              <span class="entry_type_hwlevel">[legacy] </span>
8529
8530
8531
8532                <ul class="entry_type_enum">
8533                  <li>
8534                    <span class="entry_type_enum_name">OFF (v3.2)</span>
8535                    <span class="entry_type_enum_notes"><p>The camera device will not adjust exposure duration to
8536avoid banding problems.<wbr/></p></span>
8537                  </li>
8538                  <li>
8539                    <span class="entry_type_enum_name">50HZ (v3.2)</span>
8540                    <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
8541avoid banding problems with 50Hz illumination sources.<wbr/></p></span>
8542                  </li>
8543                  <li>
8544                    <span class="entry_type_enum_name">60HZ (v3.2)</span>
8545                    <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
8546avoid banding problems with 60Hz illumination
8547sources.<wbr/></p></span>
8548                  </li>
8549                  <li>
8550                    <span class="entry_type_enum_name">AUTO (v3.2)</span>
8551                    <span class="entry_type_enum_notes"><p>The camera device will automatically adapt its
8552antibanding routine to the current illumination
8553condition.<wbr/> This is the default mode if AUTO is
8554available on given camera device.<wbr/></p></span>
8555                  </li>
8556                </ul>
8557
8558            </td> <!-- entry_type -->
8559
8560            <td class="entry_description">
8561              <p>The desired setting for the camera device's auto-exposure
8562algorithm's antibanding compensation.<wbr/></p>
8563            </td>
8564
8565            <td class="entry_units">
8566            </td>
8567
8568            <td class="entry_range">
8569              <p><a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a></p>
8570            </td>
8571
8572            <td class="entry_hal_version">
8573              <p>3.<wbr/>2</p>
8574            </td>
8575
8576            <td class="entry_tags">
8577              <ul class="entry_tags">
8578                  <li><a href="#tag_BC">BC</a></li>
8579              </ul>
8580            </td>
8581
8582          </tr>
8583          <tr class="entries_header">
8584            <th class="th_details" colspan="6">Details</th>
8585          </tr>
8586          <tr class="entry_cont">
8587            <td class="entry_details" colspan="6">
8588              <p>Some kinds of lighting fixtures,<wbr/> such as some fluorescent
8589lights,<wbr/> flicker at the rate of the power supply frequency
8590(60Hz or 50Hz,<wbr/> depending on country).<wbr/> While this is
8591typically not noticeable to a person,<wbr/> it can be visible to
8592a camera device.<wbr/> If a camera sets its exposure time to the
8593wrong value,<wbr/> the flicker may become visible in the
8594viewfinder as flicker or in a final captured image,<wbr/> as a
8595set of variable-brightness bands across the image.<wbr/></p>
8596<p>Therefore,<wbr/> the auto-exposure routines of camera devices
8597include antibanding routines that ensure that the chosen
8598exposure value will not cause such banding.<wbr/> The choice of
8599exposure time depends on the rate of flicker,<wbr/> which the
8600camera device can detect automatically,<wbr/> or the expected
8601rate can be selected by the application using this
8602control.<wbr/></p>
8603<p>A given camera device may not support all of the possible
8604options for the antibanding mode.<wbr/> The
8605<a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a> key contains
8606the available modes for a given camera device.<wbr/></p>
8607<p>AUTO mode is the default if it is available on given
8608camera device.<wbr/> When AUTO mode is not available,<wbr/> the
8609default will be either 50HZ or 60HZ,<wbr/> and both 50HZ
8610and 60HZ will be available.<wbr/></p>
8611<p>If manual exposure control is enabled (by setting
8612<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/>
8613then this setting has no effect,<wbr/> and the application must
8614ensure it selects exposure times that do not cause banding
8615issues.<wbr/> The <a href="#dynamic_android.statistics.sceneFlicker">android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker</a> key can assist
8616the application in this.<wbr/></p>
8617            </td>
8618          </tr>
8619
8620          <tr class="entries_header">
8621            <th class="th_details" colspan="6">HAL Implementation Details</th>
8622          </tr>
8623          <tr class="entry_cont">
8624            <td class="entry_details" colspan="6">
8625              <p>For all capture request templates,<wbr/> this field must be set
8626to AUTO if AUTO mode is available.<wbr/> If AUTO is not available,<wbr/>
8627the default must be either 50HZ or 60HZ,<wbr/> and both 50HZ and
862860HZ must be available.<wbr/></p>
8629<p>If manual exposure control is enabled (by setting
8630<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/>
8631then the exposure values provided by the application must not be
8632adjusted for antibanding.<wbr/></p>
8633            </td>
8634          </tr>
8635
8636          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
8637           <!-- end of entry -->
8638
8639
8640          <tr class="entry" id="dynamic_android.control.aeExposureCompensation">
8641            <td class="entry_name
8642             " rowspan="3">
8643              android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation
8644            </td>
8645            <td class="entry_type">
8646                <span class="entry_type_name">int32</span>
8647
8648              <span class="entry_type_visibility"> [public]</span>
8649
8650
8651              <span class="entry_type_hwlevel">[legacy] </span>
8652
8653
8654
8655
8656            </td> <!-- entry_type -->
8657
8658            <td class="entry_description">
8659              <p>Adjustment to auto-exposure (AE) target image
8660brightness.<wbr/></p>
8661            </td>
8662
8663            <td class="entry_units">
8664              Compensation steps
8665            </td>
8666
8667            <td class="entry_range">
8668              <p><a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a></p>
8669            </td>
8670
8671            <td class="entry_hal_version">
8672              <p>3.<wbr/>2</p>
8673            </td>
8674
8675            <td class="entry_tags">
8676              <ul class="entry_tags">
8677                  <li><a href="#tag_BC">BC</a></li>
8678              </ul>
8679            </td>
8680
8681          </tr>
8682          <tr class="entries_header">
8683            <th class="th_details" colspan="6">Details</th>
8684          </tr>
8685          <tr class="entry_cont">
8686            <td class="entry_details" colspan="6">
8687              <p>The adjustment is measured as a count of steps,<wbr/> with the
8688step size defined by <a href="#static_android.control.aeCompensationStep">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step</a> and the
8689allowed range by <a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a>.<wbr/></p>
8690<p>For example,<wbr/> if the exposure value (EV) step is 0.<wbr/>333,<wbr/> '6'
8691will mean an exposure compensation of +2 EV; -3 will mean an
8692exposure compensation of -1 EV.<wbr/> One EV represents a doubling
8693of image brightness.<wbr/> Note that this control will only be
8694effective if <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>!=</code> OFF.<wbr/> This control
8695will take effect even when <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> <code>== true</code>.<wbr/></p>
8696<p>In the event of exposure compensation value being changed,<wbr/> camera device
8697may take several frames to reach the newly requested exposure target.<wbr/>
8698During that time,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> field will be in the SEARCHING
8699state.<wbr/> Once the new exposure target is reached,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> will
8700change from SEARCHING to either CONVERGED,<wbr/> LOCKED (if AE lock is enabled),<wbr/> or
8701FLASH_<wbr/>REQUIRED (if the scene is too dark for still capture).<wbr/></p>
8702            </td>
8703          </tr>
8704
8705
8706          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
8707           <!-- end of entry -->
8708
8709
8710          <tr class="entry" id="dynamic_android.control.aeLock">
8711            <td class="entry_name
8712             " rowspan="3">
8713              android.<wbr/>control.<wbr/>ae<wbr/>Lock
8714            </td>
8715            <td class="entry_type">
8716                <span class="entry_type_name entry_type_name_enum">byte</span>
8717
8718              <span class="entry_type_visibility"> [public as boolean]</span>
8719
8720
8721              <span class="entry_type_hwlevel">[legacy] </span>
8722
8723
8724
8725                <ul class="entry_type_enum">
8726                  <li>
8727                    <span class="entry_type_enum_name">OFF (v3.2)</span>
8728                    <span class="entry_type_enum_notes"><p>Auto-exposure lock is disabled; the AE algorithm
8729is free to update its parameters.<wbr/></p></span>
8730                  </li>
8731                  <li>
8732                    <span class="entry_type_enum_name">ON (v3.2)</span>
8733                    <span class="entry_type_enum_notes"><p>Auto-exposure lock is enabled; the AE algorithm
8734must not update the exposure and sensitivity parameters
8735while the lock is active.<wbr/></p>
8736<p><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a> setting changes
8737will still take effect while auto-exposure is locked.<wbr/></p>
8738<p>Some rare LEGACY devices may not support
8739this,<wbr/> in which case the value will always be overridden to OFF.<wbr/></p></span>
8740                  </li>
8741                </ul>
8742
8743            </td> <!-- entry_type -->
8744
8745            <td class="entry_description">
8746              <p>Whether auto-exposure (AE) is currently locked to its latest
8747calculated values.<wbr/></p>
8748            </td>
8749
8750            <td class="entry_units">
8751            </td>
8752
8753            <td class="entry_range">
8754            </td>
8755
8756            <td class="entry_hal_version">
8757              <p>3.<wbr/>2</p>
8758            </td>
8759
8760            <td class="entry_tags">
8761              <ul class="entry_tags">
8762                  <li><a href="#tag_BC">BC</a></li>
8763              </ul>
8764            </td>
8765
8766          </tr>
8767          <tr class="entries_header">
8768            <th class="th_details" colspan="6">Details</th>
8769          </tr>
8770          <tr class="entry_cont">
8771            <td class="entry_details" colspan="6">
8772              <p>When set to <code>true</code> (ON),<wbr/> the AE algorithm is locked to its latest parameters,<wbr/>
8773and will not change exposure settings until the lock is set to <code>false</code> (OFF).<wbr/></p>
8774<p>Note that even when AE is locked,<wbr/> the flash may be fired if
8775the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is ON_<wbr/>AUTO_<wbr/>FLASH /<wbr/>
8776ON_<wbr/>ALWAYS_<wbr/>FLASH /<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE.<wbr/></p>
8777<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
8778is ON,<wbr/> the camera device will still adjust its exposure value.<wbr/></p>
8779<p>If AE precapture is triggered (see <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>)
8780when AE is already locked,<wbr/> the camera device will not change the exposure time
8781(<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>)
8782parameters.<wbr/> The flash may be fired if the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>
8783is ON_<wbr/>AUTO_<wbr/>FLASH/<wbr/>ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE and the scene is too dark.<wbr/> If the
8784<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/>
8785Similarly,<wbr/> AE precapture trigger CANCEL has no effect when AE is already locked.<wbr/></p>
8786<p>When an AE precapture sequence is triggered,<wbr/> AE unlock will not be able to unlock
8787the AE if AE is locked by the camera device internally during precapture metering
8788sequence In other words,<wbr/> submitting requests with AE unlock has no effect for an
8789ongoing precapture metering sequence.<wbr/> Otherwise,<wbr/> the precapture metering sequence
8790will never succeed in a sequence of preview requests where AE lock is always set
8791to <code>false</code>.<wbr/></p>
8792<p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that
8793get locked do not necessarily correspond to the settings that were present in the
8794latest capture result received from the camera device,<wbr/> since additional captures
8795and AE updates may have occurred even before the result was sent out.<wbr/> If an
8796application is switching between automatic and manual control and wishes to eliminate
8797any flicker during the switch,<wbr/> the following procedure is recommended:</p>
8798<ol>
8799<li>Starting in auto-AE mode:</li>
8800<li>Lock AE</li>
8801<li>Wait for the first result to be output that has the AE locked</li>
8802<li>Copy exposure settings from that result into a request,<wbr/> set the request to manual AE</li>
8803<li>Submit the capture request,<wbr/> proceed to run manual AE as desired.<wbr/></li>
8804</ol>
8805<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>
8806            </td>
8807          </tr>
8808
8809
8810          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
8811           <!-- end of entry -->
8812
8813
8814          <tr class="entry" id="dynamic_android.control.aeMode">
8815            <td class="entry_name
8816             " rowspan="3">
8817              android.<wbr/>control.<wbr/>ae<wbr/>Mode
8818            </td>
8819            <td class="entry_type">
8820                <span class="entry_type_name entry_type_name_enum">byte</span>
8821
8822              <span class="entry_type_visibility"> [public]</span>
8823
8824
8825              <span class="entry_type_hwlevel">[legacy] </span>
8826
8827
8828
8829                <ul class="entry_type_enum">
8830                  <li>
8831                    <span class="entry_type_enum_name">OFF (v3.2)</span>
8832                    <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is disabled.<wbr/></p>
8833<p>The application-selected <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
8834<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> and
8835<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are used by the camera
8836device,<wbr/> along with android.<wbr/>flash.<wbr/>* fields,<wbr/> if there's
8837a flash unit for this camera device.<wbr/></p>
8838<p>Note that auto-white balance (AWB) and auto-focus (AF)
8839behavior is device dependent when AE is in OFF mode.<wbr/>
8840To have consistent behavior across different devices,<wbr/>
8841it is recommended to either set AWB and AF to OFF mode
8842or lock AWB and AF before setting AE to OFF.<wbr/>
8843See <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/>
8844<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>
8845for more details.<wbr/></p>
8846<p>LEGACY devices do not support the OFF mode and will
8847override attempts to use this value to ON.<wbr/></p></span>
8848                  </li>
8849                  <li>
8850                    <span class="entry_type_enum_name">ON (v3.2)</span>
8851                    <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is active,<wbr/>
8852with no flash control.<wbr/></p>
8853<p>The application's values for
8854<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
8855<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
8856<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are ignored.<wbr/> The
8857application has control over the various
8858android.<wbr/>flash.<wbr/>* fields.<wbr/></p>
8859<p>If the device supports manual flash strength control,<wbr/> i.<wbr/>e.,<wbr/>
8860if <a href="#static_android.flash.singleStrengthMaxLevel">android.<wbr/>flash.<wbr/>single<wbr/>Strength<wbr/>Max<wbr/>Level</a> and
8861<a href="#static_android.flash.torchStrengthMaxLevel">android.<wbr/>flash.<wbr/>torch<wbr/>Strength<wbr/>Max<wbr/>Level</a> are greater than 1,<wbr/> then
8862the auto-exposure (AE) precapture metering sequence should be
8863triggered for the configured flash mode and strength to avoid
8864the image being incorrectly exposed at different
8865<a href="#controls_android.flash.strengthLevel">android.<wbr/>flash.<wbr/>strength<wbr/>Level</a>.<wbr/></p></span>
8866                  </li>
8867                  <li>
8868                    <span class="entry_type_enum_name">ON_AUTO_FLASH (v3.2)</span>
8869                    <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
8870the camera's flash unit,<wbr/> firing it in low-light
8871conditions.<wbr/></p>
8872<p>The flash may be fired during a precapture sequence
8873(triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and
8874may be fired for captures for which the
8875<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to
8876STILL_<wbr/>CAPTURE</p></span>
8877                  </li>
8878                  <li>
8879                    <span class="entry_type_enum_name">ON_ALWAYS_FLASH (v3.2)</span>
8880                    <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
8881the camera's flash unit,<wbr/> always firing it for still
8882captures.<wbr/></p>
8883<p>The flash may be fired during a precapture sequence
8884(triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and
8885will always be fired for captures for which the
8886<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to
8887STILL_<wbr/>CAPTURE</p></span>
8888                  </li>
8889                  <li>
8890                    <span class="entry_type_enum_name">ON_AUTO_FLASH_REDEYE (v3.2)</span>
8891                    <span class="entry_type_enum_notes"><p>Like ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> but with automatic red eye
8892reduction.<wbr/></p>
8893<p>If deemed necessary by the camera device,<wbr/> a red eye
8894reduction flash will fire during the precapture
8895sequence.<wbr/></p></span>
8896                  </li>
8897                  <li>
8898                    <span class="entry_type_enum_name">ON_EXTERNAL_FLASH (v3.3)</span>
8899                    <span class="entry_type_enum_notes"><p>An external flash has been turned on.<wbr/></p>
8900<p>It informs the camera device that an external flash has been turned on,<wbr/> and that
8901metering (and continuous focus if active) should be quickly recalculated to account
8902for the external flash.<wbr/> Otherwise,<wbr/> this mode acts like ON.<wbr/></p>
8903<p>When the external flash is turned off,<wbr/> AE mode should be changed to one of the
8904other available AE modes.<wbr/></p>
8905<p>If the camera device supports AE external flash mode,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> must
8906be FLASH_<wbr/>REQUIRED after the camera device finishes AE scan and it's too dark without
8907flash.<wbr/></p></span>
8908                  </li>
8909                  <li>
8910                    <span class="entry_type_enum_name">ON_LOW_LIGHT_BOOST_BRIGHTNESS_PRIORITY (v3.10)</span>
8911                    <span class="entry_type_enum_optional">[optional]</span>
8912                    <span class="entry_type_enum_notes"><p>Like 'ON' but applies additional brightness boost in low light scenes.<wbr/></p>
8913<p>When the scene lighting conditions are within the range defined by
8914<a href="#static_android.control.lowLightBoostInfoLuminanceRange">android.<wbr/>control.<wbr/>low<wbr/>Light<wbr/>Boost<wbr/>Info<wbr/>Luminance<wbr/>Range</a> this mode will apply additional
8915brightness boost.<wbr/></p>
8916<p>This mode will automatically adjust the intensity of low light boost applied
8917according to the scene lighting conditions.<wbr/> A darker scene will receive more boost
8918while a brighter scene will receive less boost.<wbr/></p>
8919<p>This mode can ignore the set target frame rate to allow more light to be captured
8920which can result in choppier motion.<wbr/> The frame rate can extend to lower than the
8921<a href="#static_android.control.aeAvailableTargetFpsRanges">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Target<wbr/>Fps<wbr/>Ranges</a> but will not go below 10 FPS.<wbr/> This mode
8922can also increase the sensor sensitivity gain which can result in increased luma
8923and chroma noise.<wbr/> The sensor sensitivity gain can extend to higher values beyond
8924<a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a>.<wbr/> This mode may also apply additional
8925processing to recover details in dark and bright areas of the image,<wbr/>and noise
8926reduction at high sensitivity gain settings to manage the trade-off between light
8927sensitivity and capture noise.<wbr/></p>
8928<p>This mode is restricted to two output surfaces.<wbr/> One output surface type can either
8929be SurfaceView or TextureView.<wbr/> Another output surface type can either be MediaCodec
8930or MediaRecorder.<wbr/> This mode cannot be used with a target FPS range higher than 30
8931FPS.<wbr/></p>
8932<p>If the session configuration is not supported,<wbr/> the AE mode reported in the
8933CaptureResult will be 'ON' instead of 'ON_<wbr/>LOW_<wbr/>LIGHT_<wbr/>BOOST_<wbr/>BRIGHTNESS_<wbr/>PRIORITY'.<wbr/></p>
8934<p>When this AE mode is enabled,<wbr/> the CaptureResult field
8935<a href="#dynamic_android.control.lowLightBoostState">android.<wbr/>control.<wbr/>low<wbr/>Light<wbr/>Boost<wbr/>State</a> will indicate when low light boost is 'ACTIVE'
8936or 'INACTIVE'.<wbr/> By default <a href="#dynamic_android.control.lowLightBoostState">android.<wbr/>control.<wbr/>low<wbr/>Light<wbr/>Boost<wbr/>State</a> will be 'INACTIVE'.<wbr/></p>
8937<p>The low light boost is 'ACTIVE' once the scene lighting condition is less than the
8938upper bound lux value defined by <a href="#static_android.control.lowLightBoostInfoLuminanceRange">android.<wbr/>control.<wbr/>low<wbr/>Light<wbr/>Boost<wbr/>Info<wbr/>Luminance<wbr/>Range</a>.<wbr/>
8939This mode will be 'INACTIVE' once the scene lighting condition is greater than the
8940upper bound lux value defined by <a href="#static_android.control.lowLightBoostInfoLuminanceRange">android.<wbr/>control.<wbr/>low<wbr/>Light<wbr/>Boost<wbr/>Info<wbr/>Luminance<wbr/>Range</a>.<wbr/></p></span>
8941                  </li>
8942                </ul>
8943
8944            </td> <!-- entry_type -->
8945
8946            <td class="entry_description">
8947              <p>The desired mode for the camera device's
8948auto-exposure routine.<wbr/></p>
8949            </td>
8950
8951            <td class="entry_units">
8952            </td>
8953
8954            <td class="entry_range">
8955              <p><a href="#static_android.control.aeAvailableModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes</a></p>
8956            </td>
8957
8958            <td class="entry_hal_version">
8959              <p>3.<wbr/>2</p>
8960            </td>
8961
8962            <td class="entry_tags">
8963              <ul class="entry_tags">
8964                  <li><a href="#tag_BC">BC</a></li>
8965              </ul>
8966            </td>
8967
8968          </tr>
8969          <tr class="entries_header">
8970            <th class="th_details" colspan="6">Details</th>
8971          </tr>
8972          <tr class="entry_cont">
8973            <td class="entry_details" colspan="6">
8974              <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is
8975AUTO.<wbr/></p>
8976<p>When set to any of the ON modes,<wbr/> the camera device's
8977auto-exposure routine is enabled,<wbr/> overriding the
8978application's selected exposure time,<wbr/> sensor sensitivity,<wbr/>
8979and frame duration (<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
8980<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
8981<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>).<wbr/> If <a href="#controls_android.control.aePriorityMode">android.<wbr/>control.<wbr/>ae<wbr/>Priority<wbr/>Mode</a> is
8982enabled,<wbr/> the relevant priority CaptureRequest settings will not be overridden.<wbr/>
8983See <a href="#controls_android.control.aePriorityMode">android.<wbr/>control.<wbr/>ae<wbr/>Priority<wbr/>Mode</a> for more details.<wbr/> If one of the FLASH modes
8984is selected,<wbr/> the camera device's flash unit controls are
8985also overridden.<wbr/></p>
8986<p>The FLASH modes are only available if the camera device
8987has a flash unit (<a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> is <code>true</code>).<wbr/></p>
8988<p>If flash TORCH mode is desired,<wbr/> this field must be set to
8989ON or OFF,<wbr/> and <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> set to TORCH.<wbr/></p>
8990<p>When set to any of the ON modes,<wbr/> the values chosen by the
8991camera device auto-exposure routine for the overridden
8992fields for a given capture will be available in its
8993CaptureResult.<wbr/></p>
8994<p>When <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is AE_<wbr/>MODE_<wbr/>ON and if the device
8995supports manual flash strength control,<wbr/> i.<wbr/>e.,<wbr/>
8996if <a href="#static_android.flash.singleStrengthMaxLevel">android.<wbr/>flash.<wbr/>single<wbr/>Strength<wbr/>Max<wbr/>Level</a> and
8997<a href="#static_android.flash.torchStrengthMaxLevel">android.<wbr/>flash.<wbr/>torch<wbr/>Strength<wbr/>Max<wbr/>Level</a> are greater than 1,<wbr/> then
8998the auto-exposure (AE) precapture metering sequence should be
8999triggered to avoid the image being incorrectly exposed at
9000different <a href="#controls_android.flash.strengthLevel">android.<wbr/>flash.<wbr/>strength<wbr/>Level</a>.<wbr/></p>
9001            </td>
9002          </tr>
9003
9004
9005          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9006           <!-- end of entry -->
9007
9008
9009          <tr class="entry" id="dynamic_android.control.aeRegions">
9010            <td class="entry_name
9011             " rowspan="5">
9012              android.<wbr/>control.<wbr/>ae<wbr/>Regions
9013            </td>
9014            <td class="entry_type">
9015                <span class="entry_type_name">int32</span>
9016                <span class="entry_type_container">x</span>
9017
9018                <span class="entry_type_array">
9019                  5 x area_count
9020                </span>
9021              <span class="entry_type_visibility"> [public as meteringRectangle]</span>
9022
9023
9024
9025
9026
9027
9028            </td> <!-- entry_type -->
9029
9030            <td class="entry_description">
9031              <p>List of metering areas to use for auto-exposure adjustment.<wbr/></p>
9032            </td>
9033
9034            <td class="entry_units">
9035              Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size or
9036            android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size depending on
9037            distortion correction capability and mode
9038            </td>
9039
9040            <td class="entry_range">
9041              <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
9042<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> or <a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>
9043depending on distortion correction capability and mode</p>
9044            </td>
9045
9046            <td class="entry_hal_version">
9047              <p>3.<wbr/>2</p>
9048            </td>
9049
9050            <td class="entry_tags">
9051              <ul class="entry_tags">
9052                  <li><a href="#tag_BC">BC</a></li>
9053              </ul>
9054            </td>
9055
9056          </tr>
9057          <tr class="entries_header">
9058            <th class="th_details" colspan="6">Details</th>
9059          </tr>
9060          <tr class="entry_cont">
9061            <td class="entry_details" colspan="6">
9062              <p>Not available if <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a> is 0.<wbr/>
9063Otherwise will always be present.<wbr/></p>
9064<p>The maximum number of regions supported by the device is determined by the value
9065of <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a>.<wbr/></p>
9066<p>For devices not supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate
9067system always follows that of <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> with (0,<wbr/>0) being
9068the top-left pixel in the active pixel array,<wbr/> and
9069(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
9070<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the bottom-right pixel in the
9071active pixel array.<wbr/></p>
9072<p>For devices supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate
9073system depends on the mode being set.<wbr/>
9074When the distortion correction mode is OFF,<wbr/> the coordinate system follows
9075<a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>,<wbr/> with
9076<code>(0,<wbr/> 0)</code> being the top-left pixel of the pre-correction active array,<wbr/> and
9077(<a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
9078<a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the bottom-right
9079pixel in the pre-correction active pixel array.<wbr/>
9080When the distortion correction mode is not OFF,<wbr/> the coordinate system follows
9081<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> with
9082<code>(0,<wbr/> 0)</code> being the top-left pixel of the active array,<wbr/> and
9083(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
9084<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the bottom-right pixel in the
9085active pixel array.<wbr/></p>
9086<p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight
9087for every pixel in the area.<wbr/> This means that a large metering area
9088with the same weight as a smaller area will have more effect in
9089the metering result.<wbr/> Metering areas can partially overlap and the
9090camera device will add the weights in the overlap region.<wbr/></p>
9091<p>The weights are relative to weights of other exposure metering regions,<wbr/> so if only one
9092region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0
9093weight is ignored.<wbr/></p>
9094<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
9095camera device.<wbr/></p>
9096<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
9097capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
9098region and output only the intersection rectangle as the metering region in the result
9099metadata.<wbr/>  If the region is entirely outside the crop region,<wbr/> it will be ignored and
9100not reported in the result metadata.<wbr/></p>
9101<p>When setting the AE metering regions,<wbr/> the application must consider the additional
9102crop resulted from the aspect ratio differences between the preview stream and
9103<a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/> For example,<wbr/> if the <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> is the full
9104active array size with 4:3 aspect ratio,<wbr/> and the preview stream is 16:9,<wbr/>
9105the boundary of AE regions will be [0,<wbr/> y_<wbr/>crop] and
9106[active_<wbr/>width,<wbr/> active_<wbr/>height - 2 * y_<wbr/>crop] rather than [0,<wbr/> 0] and
9107[active_<wbr/>width,<wbr/> active_<wbr/>height],<wbr/> where y_<wbr/>crop is the additional crop due to aspect ratio
9108mismatch.<wbr/></p>
9109<p>Starting from API level 30,<wbr/> the coordinate system of activeArraySize or
9110preCorrectionActiveArraySize is used to represent post-zoomRatio field of view,<wbr/> not
9111pre-zoom field of view.<wbr/> This means that the same aeRegions values at different
9112<a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> represent different parts of the scene.<wbr/> The aeRegions
9113coordinates are relative to the activeArray/<wbr/>preCorrectionActiveArray representing the
9114zoomed field of view.<wbr/> If <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> is set to 1.<wbr/>0 (default),<wbr/> the same
9115aeRegions at different <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> still represent the same parts of the
9116scene as they do before.<wbr/> See <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> for details.<wbr/> Whether to use
9117activeArraySize or preCorrectionActiveArraySize still depends on distortion correction
9118mode.<wbr/></p>
9119<p>For camera devices with the
9120<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR">Camera<wbr/>Metadata#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>ULTRA_<wbr/>HIGH_<wbr/>RESOLUTION_<wbr/>SENSOR</a>
9121capability or devices where
9122<a href="https://developer.android.com/reference/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a>
9123lists <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a>,<wbr/>
9124<a href="#static_android.sensor.info.activeArraySizeMaximumResolution">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution</a> /<wbr/>
9125<a href="#static_android.sensor.info.preCorrectionActiveArraySizeMaximumResolution">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution</a> must be used as the
9126coordinate system for requests where <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to
9127<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p>
9128            </td>
9129          </tr>
9130
9131          <tr class="entries_header">
9132            <th class="th_details" colspan="6">HAL Implementation Details</th>
9133          </tr>
9134          <tr class="entry_cont">
9135            <td class="entry_details" colspan="6">
9136              <p>The HAL level representation of MeteringRectangle[] is a
9137int[5 * area_<wbr/>count].<wbr/>
9138Every five elements represent a metering region of
9139(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
9140The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
9141exclusive on xmax and ymax.<wbr/>
9142HAL must always report metering regions in the coordinate system of pre-correction
9143active array.<wbr/></p>
9144            </td>
9145          </tr>
9146
9147          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9148           <!-- end of entry -->
9149
9150
9151          <tr class="entry" id="dynamic_android.control.aeTargetFpsRange">
9152            <td class="entry_name
9153             " rowspan="3">
9154              android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range
9155            </td>
9156            <td class="entry_type">
9157                <span class="entry_type_name">int32</span>
9158                <span class="entry_type_container">x</span>
9159
9160                <span class="entry_type_array">
9161                  2
9162                </span>
9163              <span class="entry_type_visibility"> [public as rangeInt]</span>
9164
9165
9166              <span class="entry_type_hwlevel">[legacy] </span>
9167
9168
9169
9170
9171            </td> <!-- entry_type -->
9172
9173            <td class="entry_description">
9174              <p>Range over which the auto-exposure routine can
9175adjust the capture frame rate to maintain good
9176exposure.<wbr/></p>
9177            </td>
9178
9179            <td class="entry_units">
9180              Frames per second (FPS)
9181            </td>
9182
9183            <td class="entry_range">
9184              <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>
9185            </td>
9186
9187            <td class="entry_hal_version">
9188              <p>3.<wbr/>2</p>
9189            </td>
9190
9191            <td class="entry_tags">
9192              <ul class="entry_tags">
9193                  <li><a href="#tag_BC">BC</a></li>
9194              </ul>
9195            </td>
9196
9197          </tr>
9198          <tr class="entries_header">
9199            <th class="th_details" colspan="6">Details</th>
9200          </tr>
9201          <tr class="entry_cont">
9202            <td class="entry_details" colspan="6">
9203              <p>Only constrains auto-exposure (AE) algorithm,<wbr/> not
9204manual control of <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> and
9205<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>.<wbr/></p>
9206<p>Note that the actual achievable max framerate also depends on the minimum frame
9207duration of the output streams.<wbr/> The max frame rate will be
9208<code>min(aeTargetFpsRange.<wbr/>maxFps,<wbr/> 1 /<wbr/> max(individual stream min durations))</code>.<wbr/> For example,<wbr/>
9209if the application sets this key to <code>{60,<wbr/> 60}</code>,<wbr/> but the maximum minFrameDuration among
9210all configured streams is 33ms,<wbr/> the maximum framerate won't be 60fps,<wbr/> but will be
921130fps.<wbr/></p>
9212<p>To start a CaptureSession with a target FPS range different from the
9213capture request template's default value,<wbr/> the application
9214is strongly recommended to call
9215<a href="https://developer.android.com/reference/android/hardware/camera2/params/SessionConfiguration.html#setSessionParameters">SessionConfiguration#setSessionParameters</a>
9216with the target fps range before creating the capture session.<wbr/> The aeTargetFpsRange is
9217typically a session parameter.<wbr/> Specifying it at session creation time helps avoid
9218session reconfiguration delays in cases like 60fps or high speed recording.<wbr/></p>
9219            </td>
9220          </tr>
9221
9222
9223          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9224           <!-- end of entry -->
9225
9226
9227          <tr class="entry" id="dynamic_android.control.aePrecaptureTrigger">
9228            <td class="entry_name
9229             " rowspan="5">
9230              android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger
9231            </td>
9232            <td class="entry_type">
9233                <span class="entry_type_name entry_type_name_enum">byte</span>
9234
9235              <span class="entry_type_visibility"> [public]</span>
9236
9237
9238              <span class="entry_type_hwlevel">[limited] </span>
9239
9240
9241
9242                <ul class="entry_type_enum">
9243                  <li>
9244                    <span class="entry_type_enum_name">IDLE (v3.2)</span>
9245                    <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
9246                  </li>
9247                  <li>
9248                    <span class="entry_type_enum_name">START (v3.2)</span>
9249                    <span class="entry_type_enum_notes"><p>The precapture metering sequence will be started
9250by the camera device.<wbr/></p>
9251<p>The exact effect of the precapture trigger depends on
9252the current AE mode and state.<wbr/></p></span>
9253                  </li>
9254                  <li>
9255                    <span class="entry_type_enum_name">CANCEL (v3.2)</span>
9256                    <span class="entry_type_enum_notes"><p>The camera device will cancel any currently active or completed
9257precapture metering sequence,<wbr/> the auto-exposure routine will return to its
9258initial state.<wbr/></p></span>
9259                  </li>
9260                </ul>
9261
9262            </td> <!-- entry_type -->
9263
9264            <td class="entry_description">
9265              <p>Whether the camera device will trigger a precapture
9266metering sequence when it processes this request.<wbr/></p>
9267            </td>
9268
9269            <td class="entry_units">
9270            </td>
9271
9272            <td class="entry_range">
9273            </td>
9274
9275            <td class="entry_hal_version">
9276              <p>3.<wbr/>2</p>
9277            </td>
9278
9279            <td class="entry_tags">
9280              <ul class="entry_tags">
9281                  <li><a href="#tag_BC">BC</a></li>
9282              </ul>
9283            </td>
9284
9285          </tr>
9286          <tr class="entries_header">
9287            <th class="th_details" colspan="6">Details</th>
9288          </tr>
9289          <tr class="entry_cont">
9290            <td class="entry_details" colspan="6">
9291              <p>This entry is normally set to IDLE,<wbr/> or is not
9292included at all in the request settings.<wbr/> When included and
9293set to START,<wbr/> the camera device will trigger the auto-exposure (AE)
9294precapture metering sequence.<wbr/></p>
9295<p>When set to CANCEL,<wbr/> the camera device will cancel any active
9296precapture metering trigger,<wbr/> and return to its initial AE state.<wbr/>
9297If a precapture metering sequence is already completed,<wbr/> and the camera
9298device has implicitly locked the AE for subsequent still capture,<wbr/> the
9299CANCEL trigger will unlock the AE and return to its initial AE state.<wbr/></p>
9300<p>The precapture sequence should be triggered before starting a
9301high-quality still capture for final metering decisions to
9302be made,<wbr/> and for firing pre-capture flash pulses to estimate
9303scene brightness and required final capture flash power,<wbr/> when
9304the flash is enabled.<wbr/></p>
9305<p>Flash is enabled during precapture sequence when:</p>
9306<ul>
9307<li>AE mode is ON_<wbr/>ALWAYS_<wbr/>FLASH</li>
9308<li>AE mode is ON_<wbr/>AUTO_<wbr/>FLASH and the scene is deemed too dark without flash,<wbr/> or</li>
9309<li>AE mode is ON and flash mode is TORCH or SINGLE</li>
9310</ul>
9311<p>Normally,<wbr/> this entry should be set to START for only single request,<wbr/> and the
9312application should wait until the sequence completes before starting a new one.<wbr/></p>
9313<p>When a precapture metering sequence is finished,<wbr/> the camera device
9314may lock the auto-exposure routine internally to be able to accurately expose the
9315subsequent still capture image (<code><a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE</code>).<wbr/>
9316For this case,<wbr/> the AE may not resume normal scan if no subsequent still capture is
9317submitted.<wbr/> To ensure that the AE routine restarts normal scan,<wbr/> the application should
9318submit 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
9319with <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
9320still capture request after the precapture sequence completes.<wbr/> Alternatively,<wbr/> for
9321API level 23 or newer devices,<wbr/> the CANCEL can be used to unlock the camera device
9322internally locked AE if the application doesn't submit a still capture request after
9323the AE precapture trigger.<wbr/> Note that,<wbr/> the CANCEL was added in API level 23,<wbr/> and must not
9324be used in devices that have earlier API levels.<wbr/></p>
9325<p>The exact effect of auto-exposure (AE) precapture trigger
9326depends on the current AE mode and state; see
9327<a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> for AE precapture state transition
9328details.<wbr/></p>
9329<p>On LEGACY-level devices,<wbr/> the precapture trigger is not supported;
9330capturing a high-resolution JPEG image will automatically trigger a
9331precapture sequence before the high-resolution capture,<wbr/> including
9332potentially firing a pre-capture flash.<wbr/></p>
9333<p>Using the precapture trigger and the auto-focus trigger <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>
9334simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between
9335the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a
9336focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous
9337trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and
9338changes to <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> indicating the start of the precapture sequence,<wbr/> for
9339example.<wbr/></p>
9340<p>If both the precapture and the auto-focus trigger are activated on the same request,<wbr/> then
9341the camera device will complete them in the optimal order for that device.<wbr/></p>
9342            </td>
9343          </tr>
9344
9345          <tr class="entries_header">
9346            <th class="th_details" colspan="6">HAL Implementation Details</th>
9347          </tr>
9348          <tr class="entry_cont">
9349            <td class="entry_details" colspan="6">
9350              <p>The HAL must support triggering the AE precapture trigger while an AF trigger is active
9351(and vice versa),<wbr/> or at the same time as the AF trigger.<wbr/>  It is acceptable for the HAL to
9352treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the
9353AE trigger.<wbr/>  Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/>
9354to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p>
9355            </td>
9356          </tr>
9357
9358          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9359           <!-- end of entry -->
9360
9361
9362          <tr class="entry" id="dynamic_android.control.aeState">
9363            <td class="entry_name
9364             " rowspan="3">
9365              android.<wbr/>control.<wbr/>ae<wbr/>State
9366            </td>
9367            <td class="entry_type">
9368                <span class="entry_type_name entry_type_name_enum">byte</span>
9369
9370              <span class="entry_type_visibility"> [public]</span>
9371
9372
9373              <span class="entry_type_hwlevel">[limited] </span>
9374
9375
9376
9377                <ul class="entry_type_enum">
9378                  <li>
9379                    <span class="entry_type_enum_name">INACTIVE (v3.2)</span>
9380                    <span class="entry_type_enum_notes"><p>AE is off or recently reset.<wbr/></p>
9381<p>When a camera device is opened,<wbr/> it starts in
9382this state.<wbr/> This is a transient state,<wbr/> the camera device may skip reporting
9383this state in capture result.<wbr/></p></span>
9384                  </li>
9385                  <li>
9386                    <span class="entry_type_enum_name">SEARCHING (v3.2)</span>
9387                    <span class="entry_type_enum_notes"><p>AE doesn't yet have a good set of control values
9388for the current scene.<wbr/></p>
9389<p>This is a transient state,<wbr/> the camera device may skip
9390reporting this state in capture result.<wbr/></p></span>
9391                  </li>
9392                  <li>
9393                    <span class="entry_type_enum_name">CONVERGED (v3.2)</span>
9394                    <span class="entry_type_enum_notes"><p>AE has a good set of control values for the
9395current scene.<wbr/></p></span>
9396                  </li>
9397                  <li>
9398                    <span class="entry_type_enum_name">LOCKED (v3.2)</span>
9399                    <span class="entry_type_enum_notes"><p>AE has been locked.<wbr/></p></span>
9400                  </li>
9401                  <li>
9402                    <span class="entry_type_enum_name">FLASH_REQUIRED (v3.2)</span>
9403                    <span class="entry_type_enum_notes"><p>AE has a good set of control values,<wbr/> but flash
9404needs to be fired for good quality still
9405capture.<wbr/></p></span>
9406                  </li>
9407                  <li>
9408                    <span class="entry_type_enum_name">PRECAPTURE (v3.2)</span>
9409                    <span class="entry_type_enum_notes"><p>AE has been asked to do a precapture sequence
9410and is currently executing it.<wbr/></p>
9411<p>Precapture can be triggered through setting
9412<a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> to START.<wbr/> Currently
9413active and completed (if it causes camera device internal AE lock) precapture
9414metering sequence can be canceled through setting
9415<a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> to CANCEL.<wbr/></p>
9416<p>Once PRECAPTURE completes,<wbr/> AE will transition to CONVERGED
9417or FLASH_<wbr/>REQUIRED as appropriate.<wbr/> This is a transient
9418state,<wbr/> the camera device may skip reporting this state in
9419capture result.<wbr/></p></span>
9420                  </li>
9421                </ul>
9422
9423            </td> <!-- entry_type -->
9424
9425            <td class="entry_description">
9426              <p>Current state of the auto-exposure (AE) algorithm.<wbr/></p>
9427            </td>
9428
9429            <td class="entry_units">
9430            </td>
9431
9432            <td class="entry_range">
9433            </td>
9434
9435            <td class="entry_hal_version">
9436              <p>3.<wbr/>2</p>
9437            </td>
9438
9439            <td class="entry_tags">
9440            </td>
9441
9442          </tr>
9443          <tr class="entries_header">
9444            <th class="th_details" colspan="6">Details</th>
9445          </tr>
9446          <tr class="entry_cont">
9447            <td class="entry_details" colspan="6">
9448              <p>Switching between or enabling AE modes (<a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>) always
9449resets the AE state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/>
9450or <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
9451the algorithm states to INACTIVE.<wbr/></p>
9452<p>The camera device can do several state transitions between two results,<wbr/> if it is
9453allowed by the state transition table.<wbr/> For example: INACTIVE may never actually be
9454seen in a result.<wbr/></p>
9455<p>The state in the result is the state for this image (in sync with this image): if
9456AE state becomes CONVERGED,<wbr/> then the image data associated with this result should
9457be good to use.<wbr/></p>
9458<p>Below are state transition tables for different AE modes.<wbr/></p>
9459<table>
9460<thead>
9461<tr>
9462<th style="text-align: center;">State</th>
9463<th style="text-align: center;">Transition Cause</th>
9464<th style="text-align: center;">New State</th>
9465<th style="text-align: center;">Notes</th>
9466</tr>
9467</thead>
9468<tbody>
9469<tr>
9470<td style="text-align: center;">INACTIVE</td>
9471<td style="text-align: center;"></td>
9472<td style="text-align: center;">INACTIVE</td>
9473<td style="text-align: center;">Camera device auto exposure algorithm is disabled</td>
9474</tr>
9475</tbody>
9476</table>
9477<p>When <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is AE_<wbr/>MODE_<wbr/>ON*:</p>
9478<table>
9479<thead>
9480<tr>
9481<th style="text-align: center;">State</th>
9482<th style="text-align: center;">Transition Cause</th>
9483<th style="text-align: center;">New State</th>
9484<th style="text-align: center;">Notes</th>
9485</tr>
9486</thead>
9487<tbody>
9488<tr>
9489<td style="text-align: center;">INACTIVE</td>
9490<td style="text-align: center;">Camera device initiates AE scan</td>
9491<td style="text-align: center;">SEARCHING</td>
9492<td style="text-align: center;">Values changing</td>
9493</tr>
9494<tr>
9495<td style="text-align: center;">INACTIVE</td>
9496<td style="text-align: center;"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
9497<td style="text-align: center;">LOCKED</td>
9498<td style="text-align: center;">Values locked</td>
9499</tr>
9500<tr>
9501<td style="text-align: center;">SEARCHING</td>
9502<td style="text-align: center;">Camera device finishes AE scan</td>
9503<td style="text-align: center;">CONVERGED</td>
9504<td style="text-align: center;">Good values,<wbr/> not changing</td>
9505</tr>
9506<tr>
9507<td style="text-align: center;">SEARCHING</td>
9508<td style="text-align: center;">Camera device finishes AE scan</td>
9509<td style="text-align: center;">FLASH_<wbr/>REQUIRED</td>
9510<td style="text-align: center;">Converged but too dark w/<wbr/>o flash</td>
9511</tr>
9512<tr>
9513<td style="text-align: center;">SEARCHING</td>
9514<td style="text-align: center;"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
9515<td style="text-align: center;">LOCKED</td>
9516<td style="text-align: center;">Values locked</td>
9517</tr>
9518<tr>
9519<td style="text-align: center;">CONVERGED</td>
9520<td style="text-align: center;">Camera device initiates AE scan</td>
9521<td style="text-align: center;">SEARCHING</td>
9522<td style="text-align: center;">Values changing</td>
9523</tr>
9524<tr>
9525<td style="text-align: center;">CONVERGED</td>
9526<td style="text-align: center;"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
9527<td style="text-align: center;">LOCKED</td>
9528<td style="text-align: center;">Values locked</td>
9529</tr>
9530<tr>
9531<td style="text-align: center;">FLASH_<wbr/>REQUIRED</td>
9532<td style="text-align: center;">Camera device initiates AE scan</td>
9533<td style="text-align: center;">SEARCHING</td>
9534<td style="text-align: center;">Values changing</td>
9535</tr>
9536<tr>
9537<td style="text-align: center;">FLASH_<wbr/>REQUIRED</td>
9538<td style="text-align: center;"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
9539<td style="text-align: center;">LOCKED</td>
9540<td style="text-align: center;">Values locked</td>
9541</tr>
9542<tr>
9543<td style="text-align: center;">LOCKED</td>
9544<td style="text-align: center;"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td>
9545<td style="text-align: center;">SEARCHING</td>
9546<td style="text-align: center;">Values not good after unlock</td>
9547</tr>
9548<tr>
9549<td style="text-align: center;">LOCKED</td>
9550<td style="text-align: center;"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td>
9551<td style="text-align: center;">CONVERGED</td>
9552<td style="text-align: center;">Values good after unlock</td>
9553</tr>
9554<tr>
9555<td style="text-align: center;">LOCKED</td>
9556<td style="text-align: center;"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td>
9557<td style="text-align: center;">FLASH_<wbr/>REQUIRED</td>
9558<td style="text-align: center;">Exposure good,<wbr/> but too dark</td>
9559</tr>
9560<tr>
9561<td style="text-align: center;">PRECAPTURE</td>
9562<td style="text-align: center;">Sequence done.<wbr/> <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td>
9563<td style="text-align: center;">CONVERGED</td>
9564<td style="text-align: center;">Ready for high-quality capture</td>
9565</tr>
9566<tr>
9567<td style="text-align: center;">PRECAPTURE</td>
9568<td style="text-align: center;">Sequence done.<wbr/> <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
9569<td style="text-align: center;">LOCKED</td>
9570<td style="text-align: center;">Ready for high-quality capture</td>
9571</tr>
9572<tr>
9573<td style="text-align: center;">LOCKED</td>
9574<td style="text-align: center;">aeLock is ON and aePrecaptureTrigger is START</td>
9575<td style="text-align: center;">LOCKED</td>
9576<td style="text-align: center;">Precapture trigger is ignored when AE is already locked</td>
9577</tr>
9578<tr>
9579<td style="text-align: center;">LOCKED</td>
9580<td style="text-align: center;">aeLock is ON and aePrecaptureTrigger is CANCEL</td>
9581<td style="text-align: center;">LOCKED</td>
9582<td style="text-align: center;">Precapture trigger is ignored when AE is already locked</td>
9583</tr>
9584<tr>
9585<td style="text-align: center;">Any state (excluding LOCKED)</td>
9586<td style="text-align: center;"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is START</td>
9587<td style="text-align: center;">PRECAPTURE</td>
9588<td style="text-align: center;">Start AE precapture metering sequence</td>
9589</tr>
9590<tr>
9591<td style="text-align: center;">Any state (excluding LOCKED)</td>
9592<td style="text-align: center;"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL</td>
9593<td style="text-align: center;">INACTIVE</td>
9594<td style="text-align: center;">Currently active precapture metering sequence is canceled</td>
9595</tr>
9596</tbody>
9597</table>
9598<p>If the camera device supports AE external flash mode (ON_<wbr/>EXTERNAL_<wbr/>FLASH is included in
9599<a href="#static_android.control.aeAvailableModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes</a>),<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> must be FLASH_<wbr/>REQUIRED after
9600the camera device finishes AE scan and it's too dark without flash.<wbr/></p>
9601<p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen
9602without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that
9603can be skipped in that manner is called a transient state.<wbr/></p>
9604<p>For example,<wbr/> for above AE modes (AE_<wbr/>MODE_<wbr/>ON*),<wbr/> in addition to the state transitions
9605listed in above table,<wbr/> it is also legal for the camera device to skip one or more
9606transient states between two results.<wbr/> See below table for examples:</p>
9607<table>
9608<thead>
9609<tr>
9610<th style="text-align: center;">State</th>
9611<th style="text-align: center;">Transition Cause</th>
9612<th style="text-align: center;">New State</th>
9613<th style="text-align: center;">Notes</th>
9614</tr>
9615</thead>
9616<tbody>
9617<tr>
9618<td style="text-align: center;">INACTIVE</td>
9619<td style="text-align: center;">Camera device finished AE scan</td>
9620<td style="text-align: center;">CONVERGED</td>
9621<td style="text-align: center;">Values are already good,<wbr/> transient states are skipped by camera device.<wbr/></td>
9622</tr>
9623<tr>
9624<td style="text-align: center;">Any state (excluding LOCKED)</td>
9625<td style="text-align: center;"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is START,<wbr/> sequence done</td>
9626<td style="text-align: center;">FLASH_<wbr/>REQUIRED</td>
9627<td style="text-align: center;">Converged but too dark w/<wbr/>o flash after a precapture sequence,<wbr/> transient states are skipped by camera device.<wbr/></td>
9628</tr>
9629<tr>
9630<td style="text-align: center;">Any state (excluding LOCKED)</td>
9631<td style="text-align: center;"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is START,<wbr/> sequence done</td>
9632<td style="text-align: center;">CONVERGED</td>
9633<td style="text-align: center;">Converged after a precapture sequence,<wbr/> transient states are skipped by camera device.<wbr/></td>
9634</tr>
9635<tr>
9636<td style="text-align: center;">Any state (excluding LOCKED)</td>
9637<td style="text-align: center;"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL,<wbr/> converged</td>
9638<td style="text-align: center;">FLASH_<wbr/>REQUIRED</td>
9639<td style="text-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>
9640</tr>
9641<tr>
9642<td style="text-align: center;">Any state (excluding LOCKED)</td>
9643<td style="text-align: center;"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL,<wbr/> converged</td>
9644<td style="text-align: center;">CONVERGED</td>
9645<td style="text-align: center;">Converged after a precapture sequences canceled,<wbr/> transient states are skipped by camera device.<wbr/></td>
9646</tr>
9647<tr>
9648<td style="text-align: center;">CONVERGED</td>
9649<td style="text-align: center;">Camera device finished AE scan</td>
9650<td style="text-align: center;">FLASH_<wbr/>REQUIRED</td>
9651<td style="text-align: center;">Converged but too dark w/<wbr/>o flash after a new scan,<wbr/> transient states are skipped by camera device.<wbr/></td>
9652</tr>
9653<tr>
9654<td style="text-align: center;">FLASH_<wbr/>REQUIRED</td>
9655<td style="text-align: center;">Camera device finished AE scan</td>
9656<td style="text-align: center;">CONVERGED</td>
9657<td style="text-align: center;">Converged after a new scan,<wbr/> transient states are skipped by camera device.<wbr/></td>
9658</tr>
9659</tbody>
9660</table>
9661            </td>
9662          </tr>
9663
9664
9665          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9666           <!-- end of entry -->
9667
9668
9669          <tr class="entry" id="dynamic_android.control.afMode">
9670            <td class="entry_name
9671             " rowspan="5">
9672              android.<wbr/>control.<wbr/>af<wbr/>Mode
9673            </td>
9674            <td class="entry_type">
9675                <span class="entry_type_name entry_type_name_enum">byte</span>
9676
9677              <span class="entry_type_visibility"> [public]</span>
9678
9679
9680              <span class="entry_type_hwlevel">[legacy] </span>
9681
9682
9683
9684                <ul class="entry_type_enum">
9685                  <li>
9686                    <span class="entry_type_enum_name">OFF (v3.2)</span>
9687                    <span class="entry_type_enum_notes"><p>The auto-focus routine does not control the lens;
9688<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> is controlled by the
9689application.<wbr/></p></span>
9690                  </li>
9691                  <li>
9692                    <span class="entry_type_enum_name">AUTO (v3.2)</span>
9693                    <span class="entry_type_enum_notes"><p>Basic automatic focus mode.<wbr/></p>
9694<p>In this mode,<wbr/> the lens does not move unless
9695the autofocus trigger action is called.<wbr/> When that trigger
9696is activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
9697the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/></p>
9698<p>Always supported if lens is not fixed focus.<wbr/></p>
9699<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
9700is fixed-focus.<wbr/></p>
9701<p>Triggering AF_<wbr/>CANCEL resets the lens position to default,<wbr/>
9702and sets the AF state to INACTIVE.<wbr/></p></span>
9703                  </li>
9704                  <li>
9705                    <span class="entry_type_enum_name">MACRO (v3.2)</span>
9706                    <span class="entry_type_enum_notes"><p>Close-up focusing mode.<wbr/></p>
9707<p>In this mode,<wbr/> the lens does not move unless the
9708autofocus trigger action is called.<wbr/> When that trigger is
9709activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
9710the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/> This
9711mode is optimized for focusing on objects very close to
9712the camera.<wbr/></p>
9713<p>When that trigger is activated,<wbr/> AF will transition to
9714ACTIVE_<wbr/>SCAN,<wbr/> then to the outcome of the scan (FOCUSED or
9715NOT_<wbr/>FOCUSED).<wbr/> Triggering cancel AF resets the lens
9716position to default,<wbr/> and sets the AF state to
9717INACTIVE.<wbr/></p></span>
9718                  </li>
9719                  <li>
9720                    <span class="entry_type_enum_name">CONTINUOUS_VIDEO (v3.2)</span>
9721                    <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
9722position continually to attempt to provide a
9723constantly-in-focus image stream.<wbr/></p>
9724<p>The focusing behavior should be suitable for good quality
9725video recording; typically this means slower focus
9726movement and no overshoots.<wbr/> When the AF trigger is not
9727involved,<wbr/> the AF algorithm should start in INACTIVE state,<wbr/>
9728and then transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED
9729states as appropriate.<wbr/> When the AF trigger is activated,<wbr/>
9730the algorithm should immediately transition into
9731AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the
9732lens position until a cancel AF trigger is received.<wbr/></p>
9733<p>Once cancel is received,<wbr/> the algorithm should transition
9734back to INACTIVE and resume passive scan.<wbr/> Note that this
9735behavior is not identical to CONTINUOUS_<wbr/>PICTURE,<wbr/> since an
9736ongoing PASSIVE_<wbr/>SCAN must immediately be
9737canceled.<wbr/></p></span>
9738                  </li>
9739                  <li>
9740                    <span class="entry_type_enum_name">CONTINUOUS_PICTURE (v3.2)</span>
9741                    <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
9742position continually to attempt to provide a
9743constantly-in-focus image stream.<wbr/></p>
9744<p>The focusing behavior should be suitable for still image
9745capture; typically this means focusing as fast as
9746possible.<wbr/> When the AF trigger is not involved,<wbr/> the AF
9747algorithm should start in INACTIVE state,<wbr/> and then
9748transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED states as
9749appropriate as it attempts to maintain focus.<wbr/> When the AF
9750trigger is activated,<wbr/> the algorithm should finish its
9751PASSIVE_<wbr/>SCAN if active,<wbr/> and then transition into
9752AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the
9753lens position until a cancel AF trigger is received.<wbr/></p>
9754<p>When the AF cancel trigger is activated,<wbr/> the algorithm
9755should transition back to INACTIVE and then act as if it
9756has just been started.<wbr/></p></span>
9757                  </li>
9758                  <li>
9759                    <span class="entry_type_enum_name">EDOF (v3.2)</span>
9760                    <span class="entry_type_enum_notes"><p>Extended depth of field (digital focus) mode.<wbr/></p>
9761<p>The camera device will produce images with an extended
9762depth of field automatically; no special focusing
9763operations need to be done before taking a picture.<wbr/></p>
9764<p>AF triggers are ignored,<wbr/> and the AF state will always be
9765INACTIVE.<wbr/></p></span>
9766                  </li>
9767                </ul>
9768
9769            </td> <!-- entry_type -->
9770
9771            <td class="entry_description">
9772              <p>Whether auto-focus (AF) is currently enabled,<wbr/> and what
9773mode it is set to.<wbr/></p>
9774            </td>
9775
9776            <td class="entry_units">
9777            </td>
9778
9779            <td class="entry_range">
9780              <p><a href="#static_android.control.afAvailableModes">android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes</a></p>
9781            </td>
9782
9783            <td class="entry_hal_version">
9784              <p>3.<wbr/>2</p>
9785            </td>
9786
9787            <td class="entry_tags">
9788              <ul class="entry_tags">
9789                  <li><a href="#tag_BC">BC</a></li>
9790              </ul>
9791            </td>
9792
9793          </tr>
9794          <tr class="entries_header">
9795            <th class="th_details" colspan="6">Details</th>
9796          </tr>
9797          <tr class="entry_cont">
9798            <td class="entry_details" colspan="6">
9799              <p>Only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> = AUTO and the lens is not fixed focus
9800(i.<wbr/>e.<wbr/> <code><a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a> &gt; 0</code>).<wbr/> Also note that
9801when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> the behavior of AF is device
9802dependent.<wbr/> It is recommended to lock AF by using <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a> before
9803setting <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>
9804<p>If the lens is controlled by the camera device auto-focus algorithm,<wbr/>
9805the camera device will report the current AF status in <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>
9806in result metadata.<wbr/></p>
9807            </td>
9808          </tr>
9809
9810          <tr class="entries_header">
9811            <th class="th_details" colspan="6">HAL Implementation Details</th>
9812          </tr>
9813          <tr class="entry_cont">
9814            <td class="entry_details" colspan="6">
9815              <p>When afMode is AUTO or MACRO,<wbr/> the lens must not move until an AF trigger is sent in a
9816request (<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
9817up with either FOCUSED_<wbr/>LOCKED or NOT_<wbr/>FOCUSED_<wbr/>LOCKED state (see
9818<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
9819locked and will not move.<wbr/> If camera movement (e.<wbr/>g.<wbr/> tilting camera) causes the lens to move
9820after the lens is locked,<wbr/> the HAL must compensate this movement appropriately such that
9821the same focal plane remains in focus.<wbr/></p>
9822<p>When afMode is one of the continuous auto focus modes,<wbr/> the HAL is free to start a AF
9823scan whenever it's not locked.<wbr/> When the lens is locked after an AF trigger
9824(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
9825same lock behavior as above.<wbr/></p>
9826<p>When afMode is OFF,<wbr/> the application controls focus manually.<wbr/> The accuracy of the
9827focus 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/>
9828However,<wbr/> the lens must not move regardless of the camera movement for any focus distance
9829manual control.<wbr/></p>
9830<p>To put this in concrete terms,<wbr/> if the camera has lens elements which may move based on
9831camera orientation or motion (e.<wbr/>g.<wbr/> due to gravity),<wbr/> then the HAL must drive the lens to
9832remain in a fixed position invariant to the camera's orientation or motion,<wbr/> for example,<wbr/>
9833by using accelerometer measurements in the lens control logic.<wbr/> This is a typical issue
9834that will arise on camera modules with open-loop VCMs.<wbr/></p>
9835            </td>
9836          </tr>
9837
9838          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9839           <!-- end of entry -->
9840
9841
9842          <tr class="entry" id="dynamic_android.control.afRegions">
9843            <td class="entry_name
9844             " rowspan="5">
9845              android.<wbr/>control.<wbr/>af<wbr/>Regions
9846            </td>
9847            <td class="entry_type">
9848                <span class="entry_type_name">int32</span>
9849                <span class="entry_type_container">x</span>
9850
9851                <span class="entry_type_array">
9852                  5 x area_count
9853                </span>
9854              <span class="entry_type_visibility"> [public as meteringRectangle]</span>
9855
9856
9857
9858
9859
9860
9861            </td> <!-- entry_type -->
9862
9863            <td class="entry_description">
9864              <p>List of metering areas to use for auto-focus.<wbr/></p>
9865            </td>
9866
9867            <td class="entry_units">
9868              Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size or
9869            android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size depending on
9870            distortion correction capability and mode
9871            </td>
9872
9873            <td class="entry_range">
9874              <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
9875<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> or <a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>
9876depending on distortion correction capability and mode</p>
9877            </td>
9878
9879            <td class="entry_hal_version">
9880              <p>3.<wbr/>2</p>
9881            </td>
9882
9883            <td class="entry_tags">
9884              <ul class="entry_tags">
9885                  <li><a href="#tag_BC">BC</a></li>
9886              </ul>
9887            </td>
9888
9889          </tr>
9890          <tr class="entries_header">
9891            <th class="th_details" colspan="6">Details</th>
9892          </tr>
9893          <tr class="entry_cont">
9894            <td class="entry_details" colspan="6">
9895              <p>Not available if <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a> is 0.<wbr/>
9896Otherwise will always be present.<wbr/></p>
9897<p>The maximum number of focus areas supported by the device is determined by the value
9898of <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a>.<wbr/></p>
9899<p>For devices not supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate
9900system always follows that of <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> with (0,<wbr/>0) being
9901the top-left pixel in the active pixel array,<wbr/> and
9902(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
9903<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the bottom-right pixel in the
9904active pixel array.<wbr/></p>
9905<p>For devices supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate
9906system depends on the mode being set.<wbr/>
9907When the distortion correction mode is OFF,<wbr/> the coordinate system follows
9908<a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>,<wbr/> with
9909<code>(0,<wbr/> 0)</code> being the top-left pixel of the pre-correction active array,<wbr/> and
9910(<a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
9911<a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the bottom-right
9912pixel in the pre-correction active pixel array.<wbr/>
9913When the distortion correction mode is not OFF,<wbr/> the coordinate system follows
9914<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> with
9915<code>(0,<wbr/> 0)</code> being the top-left pixel of the active array,<wbr/> and
9916(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
9917<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the bottom-right pixel in the
9918active pixel array.<wbr/></p>
9919<p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight
9920for every pixel in the area.<wbr/> This means that a large metering area
9921with the same weight as a smaller area will have more effect in
9922the metering result.<wbr/> Metering areas can partially overlap and the
9923camera device will add the weights in the overlap region.<wbr/></p>
9924<p>The weights are relative to weights of other metering regions,<wbr/> so if only one region
9925is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0 weight is
9926ignored.<wbr/></p>
9927<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
9928camera device.<wbr/> The capture result will either be a zero weight region as well,<wbr/> or
9929the region selected by the camera device as the focus area of interest.<wbr/></p>
9930<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
9931capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
9932region and output only the intersection rectangle as the metering region in the result
9933metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and
9934not reported in the result metadata.<wbr/></p>
9935<p>When setting the AF metering regions,<wbr/> the application must consider the additional
9936crop resulted from the aspect ratio differences between the preview stream and
9937<a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/> For example,<wbr/> if the <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> is the full
9938active array size with 4:3 aspect ratio,<wbr/> and the preview stream is 16:9,<wbr/>
9939the boundary of AF regions will be [0,<wbr/> y_<wbr/>crop] and
9940[active_<wbr/>width,<wbr/> active_<wbr/>height - 2 * y_<wbr/>crop] rather than [0,<wbr/> 0] and
9941[active_<wbr/>width,<wbr/> active_<wbr/>height],<wbr/> where y_<wbr/>crop is the additional crop due to aspect ratio
9942mismatch.<wbr/></p>
9943<p>Starting from API level 30,<wbr/> the coordinate system of activeArraySize or
9944preCorrectionActiveArraySize is used to represent post-zoomRatio field of view,<wbr/> not
9945pre-zoom field of view.<wbr/> This means that the same afRegions values at different
9946<a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> represent different parts of the scene.<wbr/> The afRegions
9947coordinates are relative to the activeArray/<wbr/>preCorrectionActiveArray representing the
9948zoomed field of view.<wbr/> If <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> is set to 1.<wbr/>0 (default),<wbr/> the same
9949afRegions at different <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> still represent the same parts of the
9950scene as they do before.<wbr/> See <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> for details.<wbr/> Whether to use
9951activeArraySize or preCorrectionActiveArraySize still depends on distortion correction
9952mode.<wbr/></p>
9953<p>For camera devices with the
9954<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR">Camera<wbr/>Metadata#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>ULTRA_<wbr/>HIGH_<wbr/>RESOLUTION_<wbr/>SENSOR</a>
9955capability or devices where
9956<a href="https://developer.android.com/reference/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a>
9957lists <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a>,<wbr/>
9958<a href="#static_android.sensor.info.activeArraySizeMaximumResolution">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution</a> /<wbr/>
9959<a href="#static_android.sensor.info.preCorrectionActiveArraySizeMaximumResolution">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution</a> must be used as the
9960coordinate system for requests where <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to
9961<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p>
9962            </td>
9963          </tr>
9964
9965          <tr class="entries_header">
9966            <th class="th_details" colspan="6">HAL Implementation Details</th>
9967          </tr>
9968          <tr class="entry_cont">
9969            <td class="entry_details" colspan="6">
9970              <p>The HAL level representation of MeteringRectangle[] is a
9971int[5 * area_<wbr/>count].<wbr/>
9972Every five elements represent a metering region of
9973(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
9974The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
9975exclusive on xmax and ymax.<wbr/>
9976HAL must always report metering regions in the coordinate system of pre-correction
9977active array.<wbr/></p>
9978            </td>
9979          </tr>
9980
9981          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9982           <!-- end of entry -->
9983
9984
9985          <tr class="entry" id="dynamic_android.control.afTrigger">
9986            <td class="entry_name
9987             " rowspan="5">
9988              android.<wbr/>control.<wbr/>af<wbr/>Trigger
9989            </td>
9990            <td class="entry_type">
9991                <span class="entry_type_name entry_type_name_enum">byte</span>
9992
9993              <span class="entry_type_visibility"> [public]</span>
9994
9995
9996              <span class="entry_type_hwlevel">[legacy] </span>
9997
9998
9999
10000                <ul class="entry_type_enum">
10001                  <li>
10002                    <span class="entry_type_enum_name">IDLE (v3.2)</span>
10003                    <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
10004                  </li>
10005                  <li>
10006                    <span class="entry_type_enum_name">START (v3.2)</span>
10007                    <span class="entry_type_enum_notes"><p>Autofocus will trigger now.<wbr/></p></span>
10008                  </li>
10009                  <li>
10010                    <span class="entry_type_enum_name">CANCEL (v3.2)</span>
10011                    <span class="entry_type_enum_notes"><p>Autofocus will return to its initial
10012state,<wbr/> and cancel any currently active trigger.<wbr/></p></span>
10013                  </li>
10014                </ul>
10015
10016            </td> <!-- entry_type -->
10017
10018            <td class="entry_description">
10019              <p>Whether the camera device will trigger autofocus for this request.<wbr/></p>
10020            </td>
10021
10022            <td class="entry_units">
10023            </td>
10024
10025            <td class="entry_range">
10026            </td>
10027
10028            <td class="entry_hal_version">
10029              <p>3.<wbr/>2</p>
10030            </td>
10031
10032            <td class="entry_tags">
10033              <ul class="entry_tags">
10034                  <li><a href="#tag_BC">BC</a></li>
10035              </ul>
10036            </td>
10037
10038          </tr>
10039          <tr class="entries_header">
10040            <th class="th_details" colspan="6">Details</th>
10041          </tr>
10042          <tr class="entry_cont">
10043            <td class="entry_details" colspan="6">
10044              <p>This entry is normally set to IDLE,<wbr/> or is not
10045included at all in the request settings.<wbr/></p>
10046<p>When included and set to START,<wbr/> the camera device will trigger the
10047autofocus algorithm.<wbr/> If autofocus is disabled,<wbr/> this trigger has no effect.<wbr/></p>
10048<p>When set to CANCEL,<wbr/> the camera device will cancel any active trigger,<wbr/>
10049and return to its initial AF state.<wbr/></p>
10050<p>Generally,<wbr/> applications should set this entry to START or CANCEL for only a
10051single capture,<wbr/> and then return it to IDLE (or not set at all).<wbr/> Specifying
10052START for multiple captures in a row means restarting the AF operation over
10053and over again.<wbr/></p>
10054<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>
10055<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>
10056simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between
10057the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a
10058focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous
10059trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and
10060changes to <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>,<wbr/> for example.<wbr/></p>
10061            </td>
10062          </tr>
10063
10064          <tr class="entries_header">
10065            <th class="th_details" colspan="6">HAL Implementation Details</th>
10066          </tr>
10067          <tr class="entry_cont">
10068            <td class="entry_details" colspan="6">
10069              <p>The HAL must support triggering the AF trigger while an AE precapture trigger is active
10070(and vice versa),<wbr/> or at the same time as the AE trigger.<wbr/>  It is acceptable for the HAL to
10071treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the
10072AE trigger.<wbr/>  Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/>
10073to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p>
10074            </td>
10075          </tr>
10076
10077          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10078           <!-- end of entry -->
10079
10080
10081          <tr class="entry" id="dynamic_android.control.afState">
10082            <td class="entry_name
10083             " rowspan="3">
10084              android.<wbr/>control.<wbr/>af<wbr/>State
10085            </td>
10086            <td class="entry_type">
10087                <span class="entry_type_name entry_type_name_enum">byte</span>
10088
10089              <span class="entry_type_visibility"> [public]</span>
10090
10091
10092              <span class="entry_type_hwlevel">[legacy] </span>
10093
10094
10095
10096                <ul class="entry_type_enum">
10097                  <li>
10098                    <span class="entry_type_enum_name">INACTIVE (v3.2)</span>
10099                    <span class="entry_type_enum_notes"><p>AF is off or has not yet tried to scan/<wbr/>been asked
10100to scan.<wbr/></p>
10101<p>When a camera device is opened,<wbr/> it starts in this
10102state.<wbr/> This is a transient state,<wbr/> the camera device may
10103skip reporting this state in capture
10104result.<wbr/></p></span>
10105                  </li>
10106                  <li>
10107                    <span class="entry_type_enum_name">PASSIVE_SCAN (v3.2)</span>
10108                    <span class="entry_type_enum_notes"><p>AF is currently performing an AF scan initiated the
10109camera device in a continuous autofocus mode.<wbr/></p>
10110<p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient
10111state,<wbr/> the camera device may skip reporting this state in
10112capture result.<wbr/></p></span>
10113                  </li>
10114                  <li>
10115                    <span class="entry_type_enum_name">PASSIVE_FOCUSED (v3.2)</span>
10116                    <span class="entry_type_enum_notes"><p>AF currently believes it is in focus,<wbr/> but may
10117restart scanning at any time.<wbr/></p>
10118<p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient
10119state,<wbr/> the camera device may skip reporting this state in
10120capture result.<wbr/></p></span>
10121                  </li>
10122                  <li>
10123                    <span class="entry_type_enum_name">ACTIVE_SCAN (v3.2)</span>
10124                    <span class="entry_type_enum_notes"><p>AF is performing an AF scan because it was
10125triggered by AF trigger.<wbr/></p>
10126<p>Only used by AUTO or MACRO AF modes.<wbr/> This is a transient
10127state,<wbr/> the camera device may skip reporting this state in
10128capture result.<wbr/></p></span>
10129                  </li>
10130                  <li>
10131                    <span class="entry_type_enum_name">FOCUSED_LOCKED (v3.2)</span>
10132                    <span class="entry_type_enum_notes"><p>AF believes it is focused correctly and has locked
10133focus.<wbr/></p>
10134<p>This state is reached only after an explicit START AF trigger has been
10135sent (<a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>),<wbr/> when good focus has been obtained.<wbr/></p>
10136<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
10137a 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>
10138                  </li>
10139                  <li>
10140                    <span class="entry_type_enum_name">NOT_FOCUSED_LOCKED (v3.2)</span>
10141                    <span class="entry_type_enum_notes"><p>AF has failed to focus successfully and has locked
10142focus.<wbr/></p>
10143<p>This state is reached only after an explicit START AF trigger has been
10144sent (<a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>),<wbr/> when good focus cannot be obtained.<wbr/></p>
10145<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
10146a 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>
10147                  </li>
10148                  <li>
10149                    <span class="entry_type_enum_name">PASSIVE_UNFOCUSED (v3.2)</span>
10150                    <span class="entry_type_enum_notes"><p>AF finished a passive scan without finding focus,<wbr/>
10151and may restart scanning at any time.<wbr/></p>
10152<p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient state,<wbr/> the camera
10153device may skip reporting this state in capture result.<wbr/></p>
10154<p>LEGACY camera devices do not support this state.<wbr/> When a passive
10155scan has finished,<wbr/> it will always go to PASSIVE_<wbr/>FOCUSED.<wbr/></p></span>
10156                  </li>
10157                </ul>
10158
10159            </td> <!-- entry_type -->
10160
10161            <td class="entry_description">
10162              <p>Current state of auto-focus (AF) algorithm.<wbr/></p>
10163            </td>
10164
10165            <td class="entry_units">
10166            </td>
10167
10168            <td class="entry_range">
10169            </td>
10170
10171            <td class="entry_hal_version">
10172              <p>3.<wbr/>2</p>
10173            </td>
10174
10175            <td class="entry_tags">
10176            </td>
10177
10178          </tr>
10179          <tr class="entries_header">
10180            <th class="th_details" colspan="6">Details</th>
10181          </tr>
10182          <tr class="entry_cont">
10183            <td class="entry_details" colspan="6">
10184              <p>Switching between or enabling AF modes (<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>) always
10185resets the AF state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/>
10186or <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
10187the algorithm states to INACTIVE.<wbr/></p>
10188<p>The camera device can do several state transitions between two results,<wbr/> if it is
10189allowed by the state transition table.<wbr/> For example: INACTIVE may never actually be
10190seen in a result.<wbr/></p>
10191<p>The state in the result is the state for this image (in sync with this image): if
10192AF state becomes FOCUSED,<wbr/> then the image data associated with this result should
10193be sharp.<wbr/></p>
10194<p>Below are state transition tables for different AF modes.<wbr/></p>
10195<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>
10196<table>
10197<thead>
10198<tr>
10199<th style="text-align: center;">State</th>
10200<th style="text-align: center;">Transition Cause</th>
10201<th style="text-align: center;">New State</th>
10202<th style="text-align: center;">Notes</th>
10203</tr>
10204</thead>
10205<tbody>
10206<tr>
10207<td style="text-align: center;">INACTIVE</td>
10208<td style="text-align: center;"></td>
10209<td style="text-align: center;">INACTIVE</td>
10210<td style="text-align: center;">Never changes</td>
10211</tr>
10212</tbody>
10213</table>
10214<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>
10215<table>
10216<thead>
10217<tr>
10218<th style="text-align: center;">State</th>
10219<th style="text-align: center;">Transition Cause</th>
10220<th style="text-align: center;">New State</th>
10221<th style="text-align: center;">Notes</th>
10222</tr>
10223</thead>
10224<tbody>
10225<tr>
10226<td style="text-align: center;">INACTIVE</td>
10227<td style="text-align: center;">AF_<wbr/>TRIGGER</td>
10228<td style="text-align: center;">ACTIVE_<wbr/>SCAN</td>
10229<td style="text-align: center;">Start AF sweep,<wbr/> Lens now moving</td>
10230</tr>
10231<tr>
10232<td style="text-align: center;">ACTIVE_<wbr/>SCAN</td>
10233<td style="text-align: center;">AF sweep done</td>
10234<td style="text-align: center;">FOCUSED_<wbr/>LOCKED</td>
10235<td style="text-align: center;">Focused,<wbr/> Lens now locked</td>
10236</tr>
10237<tr>
10238<td style="text-align: center;">ACTIVE_<wbr/>SCAN</td>
10239<td style="text-align: center;">AF sweep done</td>
10240<td style="text-align: center;">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
10241<td style="text-align: center;">Not focused,<wbr/> Lens now locked</td>
10242</tr>
10243<tr>
10244<td style="text-align: center;">ACTIVE_<wbr/>SCAN</td>
10245<td style="text-align: center;">AF_<wbr/>CANCEL</td>
10246<td style="text-align: center;">INACTIVE</td>
10247<td style="text-align: center;">Cancel/<wbr/>reset AF,<wbr/> Lens now locked</td>
10248</tr>
10249<tr>
10250<td style="text-align: center;">FOCUSED_<wbr/>LOCKED</td>
10251<td style="text-align: center;">AF_<wbr/>CANCEL</td>
10252<td style="text-align: center;">INACTIVE</td>
10253<td style="text-align: center;">Cancel/<wbr/>reset AF</td>
10254</tr>
10255<tr>
10256<td style="text-align: center;">FOCUSED_<wbr/>LOCKED</td>
10257<td style="text-align: center;">AF_<wbr/>TRIGGER</td>
10258<td style="text-align: center;">ACTIVE_<wbr/>SCAN</td>
10259<td style="text-align: center;">Start new sweep,<wbr/> Lens now moving</td>
10260</tr>
10261<tr>
10262<td style="text-align: center;">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
10263<td style="text-align: center;">AF_<wbr/>CANCEL</td>
10264<td style="text-align: center;">INACTIVE</td>
10265<td style="text-align: center;">Cancel/<wbr/>reset AF</td>
10266</tr>
10267<tr>
10268<td style="text-align: center;">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
10269<td style="text-align: center;">AF_<wbr/>TRIGGER</td>
10270<td style="text-align: center;">ACTIVE_<wbr/>SCAN</td>
10271<td style="text-align: center;">Start new sweep,<wbr/> Lens now moving</td>
10272</tr>
10273<tr>
10274<td style="text-align: center;">Any state</td>
10275<td style="text-align: center;">Mode change</td>
10276<td style="text-align: center;">INACTIVE</td>
10277<td style="text-align: center;"></td>
10278</tr>
10279</tbody>
10280</table>
10281<p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen
10282without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that
10283can be skipped in that manner is called a transient state.<wbr/></p>
10284<p>For example,<wbr/> for these AF modes (AF_<wbr/>MODE_<wbr/>AUTO and AF_<wbr/>MODE_<wbr/>MACRO),<wbr/> in addition to the
10285state transitions listed in above table,<wbr/> it is also legal for the camera device to skip
10286one or more transient states between two results.<wbr/> See below table for examples:</p>
10287<table>
10288<thead>
10289<tr>
10290<th style="text-align: center;">State</th>
10291<th style="text-align: center;">Transition Cause</th>
10292<th style="text-align: center;">New State</th>
10293<th style="text-align: center;">Notes</th>
10294</tr>
10295</thead>
10296<tbody>
10297<tr>
10298<td style="text-align: center;">INACTIVE</td>
10299<td style="text-align: center;">AF_<wbr/>TRIGGER</td>
10300<td style="text-align: center;">FOCUSED_<wbr/>LOCKED</td>
10301<td style="text-align: center;">Focus is already good or good after a scan,<wbr/> lens is now locked.<wbr/></td>
10302</tr>
10303<tr>
10304<td style="text-align: center;">INACTIVE</td>
10305<td style="text-align: center;">AF_<wbr/>TRIGGER</td>
10306<td style="text-align: center;">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
10307<td style="text-align: center;">Focus failed after a scan,<wbr/> lens is now locked.<wbr/></td>
10308</tr>
10309<tr>
10310<td style="text-align: center;">FOCUSED_<wbr/>LOCKED</td>
10311<td style="text-align: center;">AF_<wbr/>TRIGGER</td>
10312<td style="text-align: center;">FOCUSED_<wbr/>LOCKED</td>
10313<td style="text-align: center;">Focus is already good or good after a scan,<wbr/> lens is now locked.<wbr/></td>
10314</tr>
10315<tr>
10316<td style="text-align: center;">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
10317<td style="text-align: center;">AF_<wbr/>TRIGGER</td>
10318<td style="text-align: center;">FOCUSED_<wbr/>LOCKED</td>
10319<td style="text-align: center;">Focus is good after a scan,<wbr/> lens is not locked.<wbr/></td>
10320</tr>
10321</tbody>
10322</table>
10323<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>
10324<table>
10325<thead>
10326<tr>
10327<th style="text-align: center;">State</th>
10328<th style="text-align: center;">Transition Cause</th>
10329<th style="text-align: center;">New State</th>
10330<th style="text-align: center;">Notes</th>
10331</tr>
10332</thead>
10333<tbody>
10334<tr>
10335<td style="text-align: center;">INACTIVE</td>
10336<td style="text-align: center;">Camera device initiates new scan</td>
10337<td style="text-align: center;">PASSIVE_<wbr/>SCAN</td>
10338<td style="text-align: center;">Start AF scan,<wbr/> Lens now moving</td>
10339</tr>
10340<tr>
10341<td style="text-align: center;">INACTIVE</td>
10342<td style="text-align: center;">AF_<wbr/>TRIGGER</td>
10343<td style="text-align: center;">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
10344<td style="text-align: center;">AF state query,<wbr/> Lens now locked</td>
10345</tr>
10346<tr>
10347<td style="text-align: center;">PASSIVE_<wbr/>SCAN</td>
10348<td style="text-align: center;">Camera device completes current scan</td>
10349<td style="text-align: center;">PASSIVE_<wbr/>FOCUSED</td>
10350<td style="text-align: center;">End AF scan,<wbr/> Lens now locked</td>
10351</tr>
10352<tr>
10353<td style="text-align: center;">PASSIVE_<wbr/>SCAN</td>
10354<td style="text-align: center;">Camera device fails current scan</td>
10355<td style="text-align: center;">PASSIVE_<wbr/>UNFOCUSED</td>
10356<td style="text-align: center;">End AF scan,<wbr/> Lens now locked</td>
10357</tr>
10358<tr>
10359<td style="text-align: center;">PASSIVE_<wbr/>SCAN</td>
10360<td style="text-align: center;">AF_<wbr/>TRIGGER</td>
10361<td style="text-align: center;">FOCUSED_<wbr/>LOCKED</td>
10362<td style="text-align: center;">Immediate transition,<wbr/> if focus is good.<wbr/> Lens now locked</td>
10363</tr>
10364<tr>
10365<td style="text-align: center;">PASSIVE_<wbr/>SCAN</td>
10366<td style="text-align: center;">AF_<wbr/>TRIGGER</td>
10367<td style="text-align: center;">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
10368<td style="text-align: center;">Immediate transition,<wbr/> if focus is bad.<wbr/> Lens now locked</td>
10369</tr>
10370<tr>
10371<td style="text-align: center;">PASSIVE_<wbr/>SCAN</td>
10372<td style="text-align: center;">AF_<wbr/>CANCEL</td>
10373<td style="text-align: center;">INACTIVE</td>
10374<td style="text-align: center;">Reset lens position,<wbr/> Lens now locked</td>
10375</tr>
10376<tr>
10377<td style="text-align: center;">PASSIVE_<wbr/>FOCUSED</td>
10378<td style="text-align: center;">Camera device initiates new scan</td>
10379<td style="text-align: center;">PASSIVE_<wbr/>SCAN</td>
10380<td style="text-align: center;">Start AF scan,<wbr/> Lens now moving</td>
10381</tr>
10382<tr>
10383<td style="text-align: center;">PASSIVE_<wbr/>UNFOCUSED</td>
10384<td style="text-align: center;">Camera device initiates new scan</td>
10385<td style="text-align: center;">PASSIVE_<wbr/>SCAN</td>
10386<td style="text-align: center;">Start AF scan,<wbr/> Lens now moving</td>
10387</tr>
10388<tr>
10389<td style="text-align: center;">PASSIVE_<wbr/>FOCUSED</td>
10390<td style="text-align: center;">AF_<wbr/>TRIGGER</td>
10391<td style="text-align: center;">FOCUSED_<wbr/>LOCKED</td>
10392<td style="text-align: center;">Immediate transition,<wbr/> lens now locked</td>
10393</tr>
10394<tr>
10395<td style="text-align: center;">PASSIVE_<wbr/>UNFOCUSED</td>
10396<td style="text-align: center;">AF_<wbr/>TRIGGER</td>
10397<td style="text-align: center;">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
10398<td style="text-align: center;">Immediate transition,<wbr/> lens now locked</td>
10399</tr>
10400<tr>
10401<td style="text-align: center;">FOCUSED_<wbr/>LOCKED</td>
10402<td style="text-align: center;">AF_<wbr/>TRIGGER</td>
10403<td style="text-align: center;">FOCUSED_<wbr/>LOCKED</td>
10404<td style="text-align: center;">No effect</td>
10405</tr>
10406<tr>
10407<td style="text-align: center;">FOCUSED_<wbr/>LOCKED</td>
10408<td style="text-align: center;">AF_<wbr/>CANCEL</td>
10409<td style="text-align: center;">INACTIVE</td>
10410<td style="text-align: center;">Restart AF scan</td>
10411</tr>
10412<tr>
10413<td style="text-align: center;">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
10414<td style="text-align: center;">AF_<wbr/>TRIGGER</td>
10415<td style="text-align: center;">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
10416<td style="text-align: center;">No effect</td>
10417</tr>
10418<tr>
10419<td style="text-align: center;">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
10420<td style="text-align: center;">AF_<wbr/>CANCEL</td>
10421<td style="text-align: center;">INACTIVE</td>
10422<td style="text-align: center;">Restart AF scan</td>
10423</tr>
10424</tbody>
10425</table>
10426<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>
10427<table>
10428<thead>
10429<tr>
10430<th style="text-align: center;">State</th>
10431<th style="text-align: center;">Transition Cause</th>
10432<th style="text-align: center;">New State</th>
10433<th style="text-align: center;">Notes</th>
10434</tr>
10435</thead>
10436<tbody>
10437<tr>
10438<td style="text-align: center;">INACTIVE</td>
10439<td style="text-align: center;">Camera device initiates new scan</td>
10440<td style="text-align: center;">PASSIVE_<wbr/>SCAN</td>
10441<td style="text-align: center;">Start AF scan,<wbr/> Lens now moving</td>
10442</tr>
10443<tr>
10444<td style="text-align: center;">INACTIVE</td>
10445<td style="text-align: center;">AF_<wbr/>TRIGGER</td>
10446<td style="text-align: center;">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
10447<td style="text-align: center;">AF state query,<wbr/> Lens now locked</td>
10448</tr>
10449<tr>
10450<td style="text-align: center;">PASSIVE_<wbr/>SCAN</td>
10451<td style="text-align: center;">Camera device completes current scan</td>
10452<td style="text-align: center;">PASSIVE_<wbr/>FOCUSED</td>
10453<td style="text-align: center;">End AF scan,<wbr/> Lens now locked</td>
10454</tr>
10455<tr>
10456<td style="text-align: center;">PASSIVE_<wbr/>SCAN</td>
10457<td style="text-align: center;">Camera device fails current scan</td>
10458<td style="text-align: center;">PASSIVE_<wbr/>UNFOCUSED</td>
10459<td style="text-align: center;">End AF scan,<wbr/> Lens now locked</td>
10460</tr>
10461<tr>
10462<td style="text-align: center;">PASSIVE_<wbr/>SCAN</td>
10463<td style="text-align: center;">AF_<wbr/>TRIGGER</td>
10464<td style="text-align: center;">FOCUSED_<wbr/>LOCKED</td>
10465<td style="text-align: center;">Eventual transition once the focus is good.<wbr/> Lens now locked</td>
10466</tr>
10467<tr>
10468<td style="text-align: center;">PASSIVE_<wbr/>SCAN</td>
10469<td style="text-align: center;">AF_<wbr/>TRIGGER</td>
10470<td style="text-align: center;">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
10471<td style="text-align: center;">Eventual transition if cannot find focus.<wbr/> Lens now locked</td>
10472</tr>
10473<tr>
10474<td style="text-align: center;">PASSIVE_<wbr/>SCAN</td>
10475<td style="text-align: center;">AF_<wbr/>CANCEL</td>
10476<td style="text-align: center;">INACTIVE</td>
10477<td style="text-align: center;">Reset lens position,<wbr/> Lens now locked</td>
10478</tr>
10479<tr>
10480<td style="text-align: center;">PASSIVE_<wbr/>FOCUSED</td>
10481<td style="text-align: center;">Camera device initiates new scan</td>
10482<td style="text-align: center;">PASSIVE_<wbr/>SCAN</td>
10483<td style="text-align: center;">Start AF scan,<wbr/> Lens now moving</td>
10484</tr>
10485<tr>
10486<td style="text-align: center;">PASSIVE_<wbr/>UNFOCUSED</td>
10487<td style="text-align: center;">Camera device initiates new scan</td>
10488<td style="text-align: center;">PASSIVE_<wbr/>SCAN</td>
10489<td style="text-align: center;">Start AF scan,<wbr/> Lens now moving</td>
10490</tr>
10491<tr>
10492<td style="text-align: center;">PASSIVE_<wbr/>FOCUSED</td>
10493<td style="text-align: center;">AF_<wbr/>TRIGGER</td>
10494<td style="text-align: center;">FOCUSED_<wbr/>LOCKED</td>
10495<td style="text-align: center;">Immediate trans.<wbr/> Lens now locked</td>
10496</tr>
10497<tr>
10498<td style="text-align: center;">PASSIVE_<wbr/>UNFOCUSED</td>
10499<td style="text-align: center;">AF_<wbr/>TRIGGER</td>
10500<td style="text-align: center;">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
10501<td style="text-align: center;">Immediate trans.<wbr/> Lens now locked</td>
10502</tr>
10503<tr>
10504<td style="text-align: center;">FOCUSED_<wbr/>LOCKED</td>
10505<td style="text-align: center;">AF_<wbr/>TRIGGER</td>
10506<td style="text-align: center;">FOCUSED_<wbr/>LOCKED</td>
10507<td style="text-align: center;">No effect</td>
10508</tr>
10509<tr>
10510<td style="text-align: center;">FOCUSED_<wbr/>LOCKED</td>
10511<td style="text-align: center;">AF_<wbr/>CANCEL</td>
10512<td style="text-align: center;">INACTIVE</td>
10513<td style="text-align: center;">Restart AF scan</td>
10514</tr>
10515<tr>
10516<td style="text-align: center;">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
10517<td style="text-align: center;">AF_<wbr/>TRIGGER</td>
10518<td style="text-align: center;">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
10519<td style="text-align: center;">No effect</td>
10520</tr>
10521<tr>
10522<td style="text-align: center;">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
10523<td style="text-align: center;">AF_<wbr/>CANCEL</td>
10524<td style="text-align: center;">INACTIVE</td>
10525<td style="text-align: center;">Restart AF scan</td>
10526</tr>
10527</tbody>
10528</table>
10529<p>When switch between AF_<wbr/>MODE_<wbr/>CONTINUOUS_<wbr/>* (CAF modes) and AF_<wbr/>MODE_<wbr/>AUTO/<wbr/>AF_<wbr/>MODE_<wbr/>MACRO
10530(AUTO modes),<wbr/> the initial INACTIVE or PASSIVE_<wbr/>SCAN states may be skipped by the
10531camera device.<wbr/> When a trigger is included in a mode switch request,<wbr/> the trigger
10532will be evaluated in the context of the new mode in the request.<wbr/>
10533See below table for examples:</p>
10534<table>
10535<thead>
10536<tr>
10537<th style="text-align: center;">State</th>
10538<th style="text-align: center;">Transition Cause</th>
10539<th style="text-align: center;">New State</th>
10540<th style="text-align: center;">Notes</th>
10541</tr>
10542</thead>
10543<tbody>
10544<tr>
10545<td style="text-align: center;">any state</td>
10546<td style="text-align: center;">CAF--&gt;AUTO mode switch</td>
10547<td style="text-align: center;">INACTIVE</td>
10548<td style="text-align: center;">Mode switch without trigger,<wbr/> initial state must be INACTIVE</td>
10549</tr>
10550<tr>
10551<td style="text-align: center;">any state</td>
10552<td style="text-align: center;">CAF--&gt;AUTO mode switch with AF_<wbr/>TRIGGER</td>
10553<td style="text-align: center;">trigger-reachable states from INACTIVE</td>
10554<td style="text-align: center;">Mode switch with trigger,<wbr/> INACTIVE is skipped</td>
10555</tr>
10556<tr>
10557<td style="text-align: center;">any state</td>
10558<td style="text-align: center;">AUTO--&gt;CAF mode switch</td>
10559<td style="text-align: center;">passively reachable states from INACTIVE</td>
10560<td style="text-align: center;">Mode switch without trigger,<wbr/> passive transient state is skipped</td>
10561</tr>
10562</tbody>
10563</table>
10564            </td>
10565          </tr>
10566
10567
10568          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10569           <!-- end of entry -->
10570
10571
10572          <tr class="entry" id="dynamic_android.control.afTriggerId">
10573            <td class="entry_name
10574                entry_name_deprecated
10575             " rowspan="3">
10576              android.<wbr/>control.<wbr/>af<wbr/>Trigger<wbr/>Id
10577            </td>
10578            <td class="entry_type">
10579                <span class="entry_type_name">int32</span>
10580
10581              <span class="entry_type_visibility"> [system]</span>
10582
10583
10584
10585              <span class="entry_type_deprecated">[deprecated] </span>
10586
10587
10588
10589            </td> <!-- entry_type -->
10590
10591            <td class="entry_description">
10592              <p>The ID sent with the latest
10593CAMERA2_<wbr/>TRIGGER_<wbr/>AUTOFOCUS call</p>
10594            </td>
10595
10596            <td class="entry_units">
10597            </td>
10598
10599            <td class="entry_range">
10600              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
10601            </td>
10602
10603            <td class="entry_hal_version">
10604              <p>3.<wbr/>2</p>
10605            </td>
10606
10607            <td class="entry_tags">
10608            </td>
10609
10610          </tr>
10611          <tr class="entries_header">
10612            <th class="th_details" colspan="6">Details</th>
10613          </tr>
10614          <tr class="entry_cont">
10615            <td class="entry_details" colspan="6">
10616              <p>Must be 0 if no CAMERA2_<wbr/>TRIGGER_<wbr/>AUTOFOCUS trigger
10617received yet by HAL.<wbr/> Always updated even if AF algorithm
10618ignores the trigger</p>
10619            </td>
10620          </tr>
10621
10622
10623          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10624           <!-- end of entry -->
10625
10626
10627          <tr class="entry" id="dynamic_android.control.awbLock">
10628            <td class="entry_name
10629             " rowspan="3">
10630              android.<wbr/>control.<wbr/>awb<wbr/>Lock
10631            </td>
10632            <td class="entry_type">
10633                <span class="entry_type_name entry_type_name_enum">byte</span>
10634
10635              <span class="entry_type_visibility"> [public as boolean]</span>
10636
10637
10638              <span class="entry_type_hwlevel">[legacy] </span>
10639
10640
10641
10642                <ul class="entry_type_enum">
10643                  <li>
10644                    <span class="entry_type_enum_name">OFF (v3.2)</span>
10645                    <span class="entry_type_enum_notes"><p>Auto-white balance lock is disabled; the AWB
10646algorithm is free to update its parameters if in AUTO
10647mode.<wbr/></p></span>
10648                  </li>
10649                  <li>
10650                    <span class="entry_type_enum_name">ON (v3.2)</span>
10651                    <span class="entry_type_enum_notes"><p>Auto-white balance lock is enabled; the AWB
10652algorithm will not update its parameters while the lock
10653is active.<wbr/></p></span>
10654                  </li>
10655                </ul>
10656
10657            </td> <!-- entry_type -->
10658
10659            <td class="entry_description">
10660              <p>Whether auto-white balance (AWB) is currently locked to its
10661latest calculated values.<wbr/></p>
10662            </td>
10663
10664            <td class="entry_units">
10665            </td>
10666
10667            <td class="entry_range">
10668            </td>
10669
10670            <td class="entry_hal_version">
10671              <p>3.<wbr/>2</p>
10672            </td>
10673
10674            <td class="entry_tags">
10675              <ul class="entry_tags">
10676                  <li><a href="#tag_BC">BC</a></li>
10677              </ul>
10678            </td>
10679
10680          </tr>
10681          <tr class="entries_header">
10682            <th class="th_details" colspan="6">Details</th>
10683          </tr>
10684          <tr class="entry_cont">
10685            <td class="entry_details" colspan="6">
10686              <p>When set to <code>true</code> (ON),<wbr/> the AWB algorithm is locked to its latest parameters,<wbr/>
10687and will not change color balance settings until the lock is set to <code>false</code> (OFF).<wbr/></p>
10688<p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that
10689get locked do not necessarily correspond to the settings that were present in the
10690latest capture result received from the camera device,<wbr/> since additional captures
10691and AWB updates may have occurred even before the result was sent out.<wbr/> If an
10692application is switching between automatic and manual control and wishes to eliminate
10693any flicker during the switch,<wbr/> the following procedure is recommended:</p>
10694<ol>
10695<li>Starting in auto-AWB mode:</li>
10696<li>Lock AWB</li>
10697<li>Wait for the first result to be output that has the AWB locked</li>
10698<li>Copy AWB settings from that result into a request,<wbr/> set the request to manual AWB</li>
10699<li>Submit the capture request,<wbr/> proceed to run manual AWB as desired.<wbr/></li>
10700</ol>
10701<p>Note that AWB lock is only meaningful when
10702<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is in the AUTO mode; in other modes,<wbr/>
10703AWB is already fixed to a specific setting.<wbr/></p>
10704<p>Some LEGACY devices may not support ON; the value is then overridden to OFF.<wbr/></p>
10705            </td>
10706          </tr>
10707
10708
10709          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10710           <!-- end of entry -->
10711
10712
10713          <tr class="entry" id="dynamic_android.control.awbMode">
10714            <td class="entry_name
10715             " rowspan="3">
10716              android.<wbr/>control.<wbr/>awb<wbr/>Mode
10717            </td>
10718            <td class="entry_type">
10719                <span class="entry_type_name entry_type_name_enum">byte</span>
10720
10721              <span class="entry_type_visibility"> [public]</span>
10722
10723
10724              <span class="entry_type_hwlevel">[legacy] </span>
10725
10726
10727
10728                <ul class="entry_type_enum">
10729                  <li>
10730                    <span class="entry_type_enum_name">OFF (v3.2)</span>
10731                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled.<wbr/></p>
10732<p>The application-selected color transform matrix
10733(<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>) and gains
10734(<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a>) are used by the camera
10735device for manual white balance control.<wbr/></p></span>
10736                  </li>
10737                  <li>
10738                    <span class="entry_type_enum_name">AUTO (v3.2)</span>
10739                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is active.<wbr/></p>
10740<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
10741and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
10742For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
10743values used by the camera device for the transform and gains
10744will be available in the capture result for this request.<wbr/></p></span>
10745                  </li>
10746                  <li>
10747                    <span class="entry_type_enum_name">INCANDESCENT (v3.2)</span>
10748                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
10749the camera device uses incandescent light as the assumed scene
10750illumination for white balance.<wbr/></p>
10751<p>While the exact white balance transforms are up to the
10752camera device,<wbr/> they will approximately match the CIE
10753standard illuminant A.<wbr/></p>
10754<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
10755and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
10756For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
10757values used by the camera device for the transform and gains
10758will be available in the capture result for this request.<wbr/></p></span>
10759                  </li>
10760                  <li>
10761                    <span class="entry_type_enum_name">FLUORESCENT (v3.2)</span>
10762                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
10763the camera device uses fluorescent light as the assumed scene
10764illumination for white balance.<wbr/></p>
10765<p>While the exact white balance transforms are up to the
10766camera device,<wbr/> they will approximately match the CIE
10767standard illuminant F2.<wbr/></p>
10768<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
10769and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
10770For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
10771values used by the camera device for the transform and gains
10772will be available in the capture result for this request.<wbr/></p></span>
10773                  </li>
10774                  <li>
10775                    <span class="entry_type_enum_name">WARM_FLUORESCENT (v3.2)</span>
10776                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
10777the camera device uses warm fluorescent light as the assumed scene
10778illumination for white balance.<wbr/></p>
10779<p>While the exact white balance transforms are up to the
10780camera device,<wbr/> they will approximately match the CIE
10781standard illuminant F4.<wbr/></p>
10782<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
10783and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
10784For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
10785values used by the camera device for the transform and gains
10786will be available in the capture result for this request.<wbr/></p></span>
10787                  </li>
10788                  <li>
10789                    <span class="entry_type_enum_name">DAYLIGHT (v3.2)</span>
10790                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
10791the camera device uses daylight light as the assumed scene
10792illumination for white balance.<wbr/></p>
10793<p>While the exact white balance transforms are up to the
10794camera device,<wbr/> they will approximately match the CIE
10795standard illuminant D65.<wbr/></p>
10796<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
10797and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
10798For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
10799values used by the camera device for the transform and gains
10800will be available in the capture result for this request.<wbr/></p></span>
10801                  </li>
10802                  <li>
10803                    <span class="entry_type_enum_name">CLOUDY_DAYLIGHT (v3.2)</span>
10804                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
10805the camera device uses cloudy daylight light as the assumed scene
10806illumination for white balance.<wbr/></p>
10807<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
10808and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
10809For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
10810values used by the camera device for the transform and gains
10811will be available in the capture result for this request.<wbr/></p></span>
10812                  </li>
10813                  <li>
10814                    <span class="entry_type_enum_name">TWILIGHT (v3.2)</span>
10815                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
10816the camera device uses twilight light as the assumed scene
10817illumination for white balance.<wbr/></p>
10818<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
10819and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
10820For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
10821values used by the camera device for the transform and gains
10822will be available in the capture result for this request.<wbr/></p></span>
10823                  </li>
10824                  <li>
10825                    <span class="entry_type_enum_name">SHADE (v3.2)</span>
10826                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
10827the camera device uses shade light as the assumed scene
10828illumination for white balance.<wbr/></p>
10829<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
10830and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
10831For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
10832values used by the camera device for the transform and gains
10833will be available in the capture result for this request.<wbr/></p></span>
10834                  </li>
10835                </ul>
10836
10837            </td> <!-- entry_type -->
10838
10839            <td class="entry_description">
10840              <p>Whether auto-white balance (AWB) is currently setting the color
10841transform fields,<wbr/> and what its illumination target
10842is.<wbr/></p>
10843            </td>
10844
10845            <td class="entry_units">
10846            </td>
10847
10848            <td class="entry_range">
10849              <p><a href="#static_android.control.awbAvailableModes">android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes</a></p>
10850            </td>
10851
10852            <td class="entry_hal_version">
10853              <p>3.<wbr/>2</p>
10854            </td>
10855
10856            <td class="entry_tags">
10857              <ul class="entry_tags">
10858                  <li><a href="#tag_BC">BC</a></li>
10859              </ul>
10860            </td>
10861
10862          </tr>
10863          <tr class="entries_header">
10864            <th class="th_details" colspan="6">Details</th>
10865          </tr>
10866          <tr class="entry_cont">
10867            <td class="entry_details" colspan="6">
10868              <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is AUTO.<wbr/></p>
10869<p>When set to the AUTO mode,<wbr/> the camera device's auto-white balance
10870routine is enabled,<wbr/> overriding the application's selected
10871<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
10872<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>
10873is OFF,<wbr/> the behavior of AWB is device dependent.<wbr/> It is recommended to
10874also 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
10875setting AE mode to OFF.<wbr/></p>
10876<p>When set to the OFF mode,<wbr/> the camera device's auto-white balance
10877routine is disabled.<wbr/> The application manually controls the white
10878balance 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>
10879and <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/></p>
10880<p>When set to any other modes,<wbr/> the camera device's auto-white
10881balance routine is disabled.<wbr/> The camera device uses each
10882particular illumination target for white balance
10883adjustment.<wbr/> The application's values for
10884<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>,<wbr/>
10885<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
10886<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> are ignored.<wbr/></p>
10887            </td>
10888          </tr>
10889
10890
10891          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10892           <!-- end of entry -->
10893
10894
10895          <tr class="entry" id="dynamic_android.control.awbRegions">
10896            <td class="entry_name
10897             " rowspan="5">
10898              android.<wbr/>control.<wbr/>awb<wbr/>Regions
10899            </td>
10900            <td class="entry_type">
10901                <span class="entry_type_name">int32</span>
10902                <span class="entry_type_container">x</span>
10903
10904                <span class="entry_type_array">
10905                  5 x area_count
10906                </span>
10907              <span class="entry_type_visibility"> [public as meteringRectangle]</span>
10908
10909
10910
10911
10912
10913
10914            </td> <!-- entry_type -->
10915
10916            <td class="entry_description">
10917              <p>List of metering areas to use for auto-white-balance illuminant
10918estimation.<wbr/></p>
10919            </td>
10920
10921            <td class="entry_units">
10922              Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size or
10923            android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size depending on
10924            distortion correction capability and mode
10925            </td>
10926
10927            <td class="entry_range">
10928              <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
10929<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> or <a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>
10930depending on distortion correction capability and mode</p>
10931            </td>
10932
10933            <td class="entry_hal_version">
10934              <p>3.<wbr/>2</p>
10935            </td>
10936
10937            <td class="entry_tags">
10938              <ul class="entry_tags">
10939                  <li><a href="#tag_BC">BC</a></li>
10940              </ul>
10941            </td>
10942
10943          </tr>
10944          <tr class="entries_header">
10945            <th class="th_details" colspan="6">Details</th>
10946          </tr>
10947          <tr class="entry_cont">
10948            <td class="entry_details" colspan="6">
10949              <p>Not available if <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a> is 0.<wbr/>
10950Otherwise will always be present.<wbr/></p>
10951<p>The maximum number of regions supported by the device is determined by the value
10952of <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a>.<wbr/></p>
10953<p>For devices not supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate
10954system always follows that of <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> with (0,<wbr/>0) being
10955the top-left pixel in the active pixel array,<wbr/> and
10956(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
10957<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the bottom-right pixel in the
10958active pixel array.<wbr/></p>
10959<p>For devices supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate
10960system depends on the mode being set.<wbr/>
10961When the distortion correction mode is OFF,<wbr/> the coordinate system follows
10962<a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>,<wbr/> with
10963<code>(0,<wbr/> 0)</code> being the top-left pixel of the pre-correction active array,<wbr/> and
10964(<a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
10965<a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the bottom-right
10966pixel in the pre-correction active pixel array.<wbr/>
10967When the distortion correction mode is not OFF,<wbr/> the coordinate system follows
10968<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> with
10969<code>(0,<wbr/> 0)</code> being the top-left pixel of the active array,<wbr/> and
10970(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
10971<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the bottom-right pixel in the
10972active pixel array.<wbr/></p>
10973<p>The weight must range from 0 to 1000,<wbr/> and represents a weight
10974for every pixel in the area.<wbr/> This means that a large metering area
10975with the same weight as a smaller area will have more effect in
10976the metering result.<wbr/> Metering areas can partially overlap and the
10977camera device will add the weights in the overlap region.<wbr/></p>
10978<p>The weights are relative to weights of other white balance metering regions,<wbr/> so if
10979only one region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with
109800 weight is ignored.<wbr/></p>
10981<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
10982camera device.<wbr/></p>
10983<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
10984capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
10985region and output only the intersection rectangle as the metering region in the result
10986metadata.<wbr/>  If the region is entirely outside the crop region,<wbr/> it will be ignored and
10987not reported in the result metadata.<wbr/></p>
10988<p>When setting the AWB metering regions,<wbr/> the application must consider the additional
10989crop resulted from the aspect ratio differences between the preview stream and
10990<a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/> For example,<wbr/> if the <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> is the full
10991active array size with 4:3 aspect ratio,<wbr/> and the preview stream is 16:9,<wbr/>
10992the boundary of AWB regions will be [0,<wbr/> y_<wbr/>crop] and
10993[active_<wbr/>width,<wbr/> active_<wbr/>height - 2 * y_<wbr/>crop] rather than [0,<wbr/> 0] and
10994[active_<wbr/>width,<wbr/> active_<wbr/>height],<wbr/> where y_<wbr/>crop is the additional crop due to aspect ratio
10995mismatch.<wbr/></p>
10996<p>Starting from API level 30,<wbr/> the coordinate system of activeArraySize or
10997preCorrectionActiveArraySize is used to represent post-zoomRatio field of view,<wbr/> not
10998pre-zoom field of view.<wbr/> This means that the same awbRegions values at different
10999<a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> represent different parts of the scene.<wbr/> The awbRegions
11000coordinates are relative to the activeArray/<wbr/>preCorrectionActiveArray representing the
11001zoomed field of view.<wbr/> If <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> is set to 1.<wbr/>0 (default),<wbr/> the same
11002awbRegions at different <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> still represent the same parts of
11003the scene as they do before.<wbr/> See <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> for details.<wbr/> Whether to use
11004activeArraySize or preCorrectionActiveArraySize still depends on distortion correction
11005mode.<wbr/></p>
11006<p>For camera devices with the
11007<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR">Camera<wbr/>Metadata#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>ULTRA_<wbr/>HIGH_<wbr/>RESOLUTION_<wbr/>SENSOR</a>
11008capability or devices where
11009<a href="https://developer.android.com/reference/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a>
11010lists <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a>,<wbr/>
11011<a href="#static_android.sensor.info.activeArraySizeMaximumResolution">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution</a> /<wbr/>
11012<a href="#static_android.sensor.info.preCorrectionActiveArraySizeMaximumResolution">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution</a> must be used as the
11013coordinate system for requests where <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to
11014<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p>
11015            </td>
11016          </tr>
11017
11018          <tr class="entries_header">
11019            <th class="th_details" colspan="6">HAL Implementation Details</th>
11020          </tr>
11021          <tr class="entry_cont">
11022            <td class="entry_details" colspan="6">
11023              <p>The HAL level representation of MeteringRectangle[] is a
11024int[5 * area_<wbr/>count].<wbr/>
11025Every five elements represent a metering region of
11026(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
11027The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
11028exclusive on xmax and ymax.<wbr/>
11029HAL must always report metering regions in the coordinate system of pre-correction
11030active array.<wbr/></p>
11031            </td>
11032          </tr>
11033
11034          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11035           <!-- end of entry -->
11036
11037
11038          <tr class="entry" id="dynamic_android.control.captureIntent">
11039            <td class="entry_name
11040             " rowspan="3">
11041              android.<wbr/>control.<wbr/>capture<wbr/>Intent
11042            </td>
11043            <td class="entry_type">
11044                <span class="entry_type_name entry_type_name_enum">byte</span>
11045
11046              <span class="entry_type_visibility"> [public]</span>
11047
11048
11049              <span class="entry_type_hwlevel">[legacy] </span>
11050
11051
11052
11053                <ul class="entry_type_enum">
11054                  <li>
11055                    <span class="entry_type_enum_name">CUSTOM (v3.2)</span>
11056                    <span class="entry_type_enum_notes"><p>The goal of this request doesn't fall into the other
11057categories.<wbr/> The camera device will default to preview-like
11058behavior.<wbr/></p></span>
11059                  </li>
11060                  <li>
11061                    <span class="entry_type_enum_name">PREVIEW (v3.2)</span>
11062                    <span class="entry_type_enum_notes"><p>This request is for a preview-like use case.<wbr/></p>
11063<p>The precapture trigger may be used to start off a metering
11064w/<wbr/>flash sequence.<wbr/></p></span>
11065                  </li>
11066                  <li>
11067                    <span class="entry_type_enum_name">STILL_CAPTURE (v3.2)</span>
11068                    <span class="entry_type_enum_notes"><p>This request is for a still capture-type
11069use case.<wbr/></p>
11070<p>If the flash unit is under automatic control,<wbr/> it may fire as needed.<wbr/></p></span>
11071                  </li>
11072                  <li>
11073                    <span class="entry_type_enum_name">VIDEO_RECORD (v3.2)</span>
11074                    <span class="entry_type_enum_notes"><p>This request is for a video recording
11075use case.<wbr/></p></span>
11076                  </li>
11077                  <li>
11078                    <span class="entry_type_enum_name">VIDEO_SNAPSHOT (v3.2)</span>
11079                    <span class="entry_type_enum_notes"><p>This request is for a video snapshot (still
11080image while recording video) use case.<wbr/></p>
11081<p>The camera device should take the highest-quality image
11082possible (given the other settings) without disrupting the
11083frame rate of video recording.<wbr/>  </p></span>
11084                  </li>
11085                  <li>
11086                    <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span>
11087                    <span class="entry_type_enum_notes"><p>This request is for a ZSL usecase; the
11088application will stream full-resolution images and
11089reprocess one or several later for a final
11090capture.<wbr/></p></span>
11091                  </li>
11092                  <li>
11093                    <span class="entry_type_enum_name">MANUAL (v3.2)</span>
11094                    <span class="entry_type_enum_notes"><p>This request is for manual capture use case where
11095the applications want to directly control the capture parameters.<wbr/></p>
11096<p>For example,<wbr/> the application may wish to manually control
11097<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>
11098                  </li>
11099                  <li>
11100                    <span class="entry_type_enum_name">MOTION_TRACKING (v3.3)</span>
11101                    <span class="entry_type_enum_notes"><p>This request is for a motion tracking use case,<wbr/> where
11102the application will use camera and inertial sensor data to
11103locate and track objects in the world.<wbr/></p>
11104<p>The camera device auto-exposure routine will limit the exposure time
11105of the camera to no more than 20 milliseconds,<wbr/> to minimize motion blur.<wbr/></p></span>
11106                  </li>
11107                </ul>
11108
11109            </td> <!-- entry_type -->
11110
11111            <td class="entry_description">
11112              <p>Information to the camera device 3A (auto-exposure,<wbr/>
11113auto-focus,<wbr/> auto-white balance) routines about the purpose
11114of this capture,<wbr/> to help the camera device to decide optimal 3A
11115strategy.<wbr/></p>
11116            </td>
11117
11118            <td class="entry_units">
11119            </td>
11120
11121            <td class="entry_range">
11122            </td>
11123
11124            <td class="entry_hal_version">
11125              <p>3.<wbr/>2</p>
11126            </td>
11127
11128            <td class="entry_tags">
11129              <ul class="entry_tags">
11130                  <li><a href="#tag_BC">BC</a></li>
11131              </ul>
11132            </td>
11133
11134          </tr>
11135          <tr class="entries_header">
11136            <th class="th_details" colspan="6">Details</th>
11137          </tr>
11138          <tr class="entry_cont">
11139            <td class="entry_details" colspan="6">
11140              <p>This control (except for MANUAL) is only effective if
11141<code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF</code> and any 3A routine is active.<wbr/></p>
11142<p>All intents are supported by all devices,<wbr/> except that:</p>
11143<ul>
11144<li>ZERO_<wbr/>SHUTTER_<wbr/>LAG will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
11145PRIVATE_<wbr/>REPROCESSING or YUV_<wbr/>REPROCESSING.<wbr/></li>
11146<li>MANUAL will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
11147MANUAL_<wbr/>SENSOR.<wbr/></li>
11148<li>MOTION_<wbr/>TRACKING will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
11149MOTION_<wbr/>TRACKING.<wbr/></li>
11150</ul>
11151            </td>
11152          </tr>
11153
11154
11155          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11156           <!-- end of entry -->
11157
11158
11159          <tr class="entry" id="dynamic_android.control.awbState">
11160            <td class="entry_name
11161             " rowspan="3">
11162              android.<wbr/>control.<wbr/>awb<wbr/>State
11163            </td>
11164            <td class="entry_type">
11165                <span class="entry_type_name entry_type_name_enum">byte</span>
11166
11167              <span class="entry_type_visibility"> [public]</span>
11168
11169
11170              <span class="entry_type_hwlevel">[limited] </span>
11171
11172
11173
11174                <ul class="entry_type_enum">
11175                  <li>
11176                    <span class="entry_type_enum_name">INACTIVE (v3.2)</span>
11177                    <span class="entry_type_enum_notes"><p>AWB is not in auto mode,<wbr/> or has not yet started metering.<wbr/></p>
11178<p>When a camera device is opened,<wbr/> it starts in this
11179state.<wbr/> This is a transient state,<wbr/> the camera device may
11180skip reporting this state in capture
11181result.<wbr/></p></span>
11182                  </li>
11183                  <li>
11184                    <span class="entry_type_enum_name">SEARCHING (v3.2)</span>
11185                    <span class="entry_type_enum_notes"><p>AWB doesn't yet have a good set of control
11186values for the current scene.<wbr/></p>
11187<p>This is a transient state,<wbr/> the camera device
11188may skip reporting this state in capture result.<wbr/></p></span>
11189                  </li>
11190                  <li>
11191                    <span class="entry_type_enum_name">CONVERGED (v3.2)</span>
11192                    <span class="entry_type_enum_notes"><p>AWB has a good set of control values for the
11193current scene.<wbr/></p></span>
11194                  </li>
11195                  <li>
11196                    <span class="entry_type_enum_name">LOCKED (v3.2)</span>
11197                    <span class="entry_type_enum_notes"><p>AWB has been locked.<wbr/></p></span>
11198                  </li>
11199                </ul>
11200
11201            </td> <!-- entry_type -->
11202
11203            <td class="entry_description">
11204              <p>Current state of auto-white balance (AWB) algorithm.<wbr/></p>
11205            </td>
11206
11207            <td class="entry_units">
11208            </td>
11209
11210            <td class="entry_range">
11211            </td>
11212
11213            <td class="entry_hal_version">
11214              <p>3.<wbr/>2</p>
11215            </td>
11216
11217            <td class="entry_tags">
11218            </td>
11219
11220          </tr>
11221          <tr class="entries_header">
11222            <th class="th_details" colspan="6">Details</th>
11223          </tr>
11224          <tr class="entry_cont">
11225            <td class="entry_details" colspan="6">
11226              <p>Switching between or enabling AWB modes (<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>) always
11227resets the AWB state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/>
11228or <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
11229the algorithm states to INACTIVE.<wbr/></p>
11230<p>The camera device can do several state transitions between two results,<wbr/> if it is
11231allowed by the state transition table.<wbr/> So INACTIVE may never actually be seen in
11232a result.<wbr/></p>
11233<p>The state in the result is the state for this image (in sync with this image): if
11234AWB state becomes CONVERGED,<wbr/> then the image data associated with this result should
11235be good to use.<wbr/></p>
11236<p>Below are state transition tables for different AWB modes.<wbr/></p>
11237<p>When <code><a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> != AWB_<wbr/>MODE_<wbr/>AUTO</code>:</p>
11238<table>
11239<thead>
11240<tr>
11241<th style="text-align: center;">State</th>
11242<th style="text-align: center;">Transition Cause</th>
11243<th style="text-align: center;">New State</th>
11244<th style="text-align: center;">Notes</th>
11245</tr>
11246</thead>
11247<tbody>
11248<tr>
11249<td style="text-align: center;">INACTIVE</td>
11250<td style="text-align: center;"></td>
11251<td style="text-align: center;">INACTIVE</td>
11252<td style="text-align: center;">Camera device auto white balance algorithm is disabled</td>
11253</tr>
11254</tbody>
11255</table>
11256<p>When <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is AWB_<wbr/>MODE_<wbr/>AUTO:</p>
11257<table>
11258<thead>
11259<tr>
11260<th style="text-align: center;">State</th>
11261<th style="text-align: center;">Transition Cause</th>
11262<th style="text-align: center;">New State</th>
11263<th style="text-align: center;">Notes</th>
11264</tr>
11265</thead>
11266<tbody>
11267<tr>
11268<td style="text-align: center;">INACTIVE</td>
11269<td style="text-align: center;">Camera device initiates AWB scan</td>
11270<td style="text-align: center;">SEARCHING</td>
11271<td style="text-align: center;">Values changing</td>
11272</tr>
11273<tr>
11274<td style="text-align: center;">INACTIVE</td>
11275<td style="text-align: center;"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td>
11276<td style="text-align: center;">LOCKED</td>
11277<td style="text-align: center;">Values locked</td>
11278</tr>
11279<tr>
11280<td style="text-align: center;">SEARCHING</td>
11281<td style="text-align: center;">Camera device finishes AWB scan</td>
11282<td style="text-align: center;">CONVERGED</td>
11283<td style="text-align: center;">Good values,<wbr/> not changing</td>
11284</tr>
11285<tr>
11286<td style="text-align: center;">SEARCHING</td>
11287<td style="text-align: center;"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td>
11288<td style="text-align: center;">LOCKED</td>
11289<td style="text-align: center;">Values locked</td>
11290</tr>
11291<tr>
11292<td style="text-align: center;">CONVERGED</td>
11293<td style="text-align: center;">Camera device initiates AWB scan</td>
11294<td style="text-align: center;">SEARCHING</td>
11295<td style="text-align: center;">Values changing</td>
11296</tr>
11297<tr>
11298<td style="text-align: center;">CONVERGED</td>
11299<td style="text-align: center;"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td>
11300<td style="text-align: center;">LOCKED</td>
11301<td style="text-align: center;">Values locked</td>
11302</tr>
11303<tr>
11304<td style="text-align: center;">LOCKED</td>
11305<td style="text-align: center;"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is OFF</td>
11306<td style="text-align: center;">SEARCHING</td>
11307<td style="text-align: center;">Values not good after unlock</td>
11308</tr>
11309</tbody>
11310</table>
11311<p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen
11312without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that
11313can be skipped in that manner is called a transient state.<wbr/></p>
11314<p>For example,<wbr/> for this AWB mode (AWB_<wbr/>MODE_<wbr/>AUTO),<wbr/> in addition to the state transitions
11315listed in above table,<wbr/> it is also legal for the camera device to skip one or more
11316transient states between two results.<wbr/> See below table for examples:</p>
11317<table>
11318<thead>
11319<tr>
11320<th style="text-align: center;">State</th>
11321<th style="text-align: center;">Transition Cause</th>
11322<th style="text-align: center;">New State</th>
11323<th style="text-align: center;">Notes</th>
11324</tr>
11325</thead>
11326<tbody>
11327<tr>
11328<td style="text-align: center;">INACTIVE</td>
11329<td style="text-align: center;">Camera device finished AWB scan</td>
11330<td style="text-align: center;">CONVERGED</td>
11331<td style="text-align: center;">Values are already good,<wbr/> transient states are skipped by camera device.<wbr/></td>
11332</tr>
11333<tr>
11334<td style="text-align: center;">LOCKED</td>
11335<td style="text-align: center;"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is OFF</td>
11336<td style="text-align: center;">CONVERGED</td>
11337<td style="text-align: center;">Values good after unlock,<wbr/> transient states are skipped by camera device.<wbr/></td>
11338</tr>
11339</tbody>
11340</table>
11341            </td>
11342          </tr>
11343
11344
11345          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11346           <!-- end of entry -->
11347
11348
11349          <tr class="entry" id="dynamic_android.control.effectMode">
11350            <td class="entry_name
11351             " rowspan="3">
11352              android.<wbr/>control.<wbr/>effect<wbr/>Mode
11353            </td>
11354            <td class="entry_type">
11355                <span class="entry_type_name entry_type_name_enum">byte</span>
11356
11357              <span class="entry_type_visibility"> [public]</span>
11358
11359
11360              <span class="entry_type_hwlevel">[legacy] </span>
11361
11362
11363
11364                <ul class="entry_type_enum">
11365                  <li>
11366                    <span class="entry_type_enum_name">OFF (v3.2)</span>
11367                    <span class="entry_type_enum_notes"><p>No color effect will be applied.<wbr/></p></span>
11368                  </li>
11369                  <li>
11370                    <span class="entry_type_enum_name">MONO (v3.2)</span>
11371                    <span class="entry_type_enum_optional">[optional]</span>
11372                    <span class="entry_type_enum_notes"><p>A "monocolor" effect where the image is mapped into
11373a single color.<wbr/></p>
11374<p>This will typically be grayscale.<wbr/></p></span>
11375                  </li>
11376                  <li>
11377                    <span class="entry_type_enum_name">NEGATIVE (v3.2)</span>
11378                    <span class="entry_type_enum_optional">[optional]</span>
11379                    <span class="entry_type_enum_notes"><p>A "photo-negative" effect where the image's colors
11380are inverted.<wbr/></p></span>
11381                  </li>
11382                  <li>
11383                    <span class="entry_type_enum_name">SOLARIZE (v3.2)</span>
11384                    <span class="entry_type_enum_optional">[optional]</span>
11385                    <span class="entry_type_enum_notes"><p>A "solarisation" effect (Sabattier effect) where the
11386image is wholly or partially reversed in
11387tone.<wbr/></p></span>
11388                  </li>
11389                  <li>
11390                    <span class="entry_type_enum_name">SEPIA (v3.2)</span>
11391                    <span class="entry_type_enum_optional">[optional]</span>
11392                    <span class="entry_type_enum_notes"><p>A "sepia" effect where the image is mapped into warm
11393gray,<wbr/> red,<wbr/> and brown tones.<wbr/></p></span>
11394                  </li>
11395                  <li>
11396                    <span class="entry_type_enum_name">POSTERIZE (v3.2)</span>
11397                    <span class="entry_type_enum_optional">[optional]</span>
11398                    <span class="entry_type_enum_notes"><p>A "posterization" effect where the image uses
11399discrete regions of tone rather than a continuous
11400gradient of tones.<wbr/></p></span>
11401                  </li>
11402                  <li>
11403                    <span class="entry_type_enum_name">WHITEBOARD (v3.2)</span>
11404                    <span class="entry_type_enum_optional">[optional]</span>
11405                    <span class="entry_type_enum_notes"><p>A "whiteboard" effect where the image is typically displayed
11406as regions of white,<wbr/> with black or grey details.<wbr/></p></span>
11407                  </li>
11408                  <li>
11409                    <span class="entry_type_enum_name">BLACKBOARD (v3.2)</span>
11410                    <span class="entry_type_enum_optional">[optional]</span>
11411                    <span class="entry_type_enum_notes"><p>A "blackboard" effect where the image is typically displayed
11412as regions of black,<wbr/> with white or grey details.<wbr/></p></span>
11413                  </li>
11414                  <li>
11415                    <span class="entry_type_enum_name">AQUA (v3.2)</span>
11416                    <span class="entry_type_enum_optional">[optional]</span>
11417                    <span class="entry_type_enum_notes"><p>An "aqua" effect where a blue hue is added to the image.<wbr/></p></span>
11418                  </li>
11419                </ul>
11420
11421            </td> <!-- entry_type -->
11422
11423            <td class="entry_description">
11424              <p>A special color effect to apply.<wbr/></p>
11425            </td>
11426
11427            <td class="entry_units">
11428            </td>
11429
11430            <td class="entry_range">
11431              <p><a href="#static_android.control.availableEffects">android.<wbr/>control.<wbr/>available<wbr/>Effects</a></p>
11432            </td>
11433
11434            <td class="entry_hal_version">
11435              <p>3.<wbr/>2</p>
11436            </td>
11437
11438            <td class="entry_tags">
11439              <ul class="entry_tags">
11440                  <li><a href="#tag_BC">BC</a></li>
11441              </ul>
11442            </td>
11443
11444          </tr>
11445          <tr class="entries_header">
11446            <th class="th_details" colspan="6">Details</th>
11447          </tr>
11448          <tr class="entry_cont">
11449            <td class="entry_details" colspan="6">
11450              <p>When this mode is set,<wbr/> a color effect will be applied
11451to images produced by the camera device.<wbr/> The interpretation
11452and implementation of these color effects is left to the
11453implementor of the camera device,<wbr/> and should not be
11454depended on to be consistent (or present) across all
11455devices.<wbr/></p>
11456            </td>
11457          </tr>
11458
11459
11460          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11461           <!-- end of entry -->
11462
11463
11464          <tr class="entry" id="dynamic_android.control.mode">
11465            <td class="entry_name
11466             " rowspan="3">
11467              android.<wbr/>control.<wbr/>mode
11468            </td>
11469            <td class="entry_type">
11470                <span class="entry_type_name entry_type_name_enum">byte</span>
11471
11472              <span class="entry_type_visibility"> [public]</span>
11473
11474
11475              <span class="entry_type_hwlevel">[legacy] </span>
11476
11477
11478
11479                <ul class="entry_type_enum">
11480                  <li>
11481                    <span class="entry_type_enum_name">OFF (v3.2)</span>
11482                    <span class="entry_type_enum_notes"><p>Full application control of pipeline.<wbr/></p>
11483<p>All control by the device's metering and focusing (3A)
11484routines is disabled,<wbr/> and no other settings in
11485android.<wbr/>control.<wbr/>* have any effect,<wbr/> except that
11486<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> may be used by the camera
11487device to select post-processing values for processing
11488blocks that do not allow for manual control,<wbr/> or are not
11489exposed by the camera API.<wbr/></p>
11490<p>However,<wbr/> the camera device's 3A routines may continue to
11491collect statistics and update their internal state so that
11492when control is switched to AUTO mode,<wbr/> good control values
11493can be immediately applied.<wbr/></p></span>
11494                  </li>
11495                  <li>
11496                    <span class="entry_type_enum_name">AUTO (v3.2)</span>
11497                    <span class="entry_type_enum_notes"><p>Use settings for each individual 3A routine.<wbr/></p>
11498<p>Manual control of capture parameters is disabled.<wbr/> All
11499controls in android.<wbr/>control.<wbr/>* besides sceneMode take
11500effect.<wbr/></p></span>
11501                  </li>
11502                  <li>
11503                    <span class="entry_type_enum_name">USE_SCENE_MODE (v3.2)</span>
11504                    <span class="entry_type_enum_optional">[optional]</span>
11505                    <span class="entry_type_enum_notes"><p>Use a specific scene mode.<wbr/></p>
11506<p>Enabling this disables control.<wbr/>aeMode,<wbr/> control.<wbr/>awbMode and
11507control.<wbr/>afMode controls; the camera device will ignore
11508those settings while USE_<wbr/>SCENE_<wbr/>MODE is active (except for
11509FACE_<wbr/>PRIORITY scene mode).<wbr/> Other control entries are still active.<wbr/>
11510This setting can only be used if scene mode is supported (i.<wbr/>e.<wbr/>
11511<a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a>
11512contain some modes other than DISABLED).<wbr/></p>
11513<p>For extended scene modes such as BOKEH,<wbr/> please use USE_<wbr/>EXTENDED_<wbr/>SCENE_<wbr/>MODE instead.<wbr/></p></span>
11514                  </li>
11515                  <li>
11516                    <span class="entry_type_enum_name">OFF_KEEP_STATE (v3.2)</span>
11517                    <span class="entry_type_enum_optional">[optional]</span>
11518                    <span class="entry_type_enum_notes"><p>Same as OFF mode,<wbr/> except that this capture will not be
11519used by camera device background auto-exposure,<wbr/> auto-white balance and
11520auto-focus algorithms (3A) to update their statistics.<wbr/></p>
11521<p>Specifically,<wbr/> the 3A routines are locked to the last
11522values set from a request with AUTO,<wbr/> OFF,<wbr/> or
11523USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> and any statistics or state updates
11524collected from manual captures with OFF_<wbr/>KEEP_<wbr/>STATE will be
11525discarded by the camera device.<wbr/></p></span>
11526                  </li>
11527                  <li>
11528                    <span class="entry_type_enum_name">USE_EXTENDED_SCENE_MODE (v3.5)</span>
11529                    <span class="entry_type_enum_optional">[optional]</span>
11530                    <span class="entry_type_enum_notes"><p>Use a specific extended scene mode.<wbr/></p>
11531<p>When extended scene mode is on,<wbr/> the camera device may override certain control
11532parameters,<wbr/> such as targetFpsRange,<wbr/> AE,<wbr/> AWB,<wbr/> and AF modes,<wbr/> to achieve best power and
11533quality tradeoffs.<wbr/> Only the mandatory stream combinations of LIMITED hardware level
11534are guaranteed.<wbr/></p>
11535<p>This setting can only be used if extended scene mode is supported (i.<wbr/>e.<wbr/>
11536android.<wbr/>control.<wbr/>available<wbr/>Extended<wbr/>Scene<wbr/>Modes
11537contains some modes other than DISABLED).<wbr/></p></span>
11538                  </li>
11539                </ul>
11540
11541            </td> <!-- entry_type -->
11542
11543            <td class="entry_description">
11544              <p>Overall mode of 3A (auto-exposure,<wbr/> auto-white-balance,<wbr/> auto-focus) control
11545routines.<wbr/></p>
11546            </td>
11547
11548            <td class="entry_units">
11549            </td>
11550
11551            <td class="entry_range">
11552              <p><a href="#static_android.control.availableModes">android.<wbr/>control.<wbr/>available<wbr/>Modes</a></p>
11553            </td>
11554
11555            <td class="entry_hal_version">
11556              <p>3.<wbr/>2</p>
11557            </td>
11558
11559            <td class="entry_tags">
11560              <ul class="entry_tags">
11561                  <li><a href="#tag_BC">BC</a></li>
11562              </ul>
11563            </td>
11564
11565          </tr>
11566          <tr class="entries_header">
11567            <th class="th_details" colspan="6">Details</th>
11568          </tr>
11569          <tr class="entry_cont">
11570            <td class="entry_details" colspan="6">
11571              <p>This is a top-level 3A control switch.<wbr/> When set to OFF,<wbr/> all 3A control
11572by the camera device is disabled.<wbr/> The application must set the fields for
11573capture parameters itself.<wbr/></p>
11574<p>When set to AUTO,<wbr/> the individual algorithm controls in
11575android.<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>
11576<p>When set to USE_<wbr/>SCENE_<wbr/>MODE or USE_<wbr/>EXTENDED_<wbr/>SCENE_<wbr/>MODE,<wbr/> the individual controls in
11577android.<wbr/>control.<wbr/>* are mostly disabled,<wbr/> and the camera device
11578implements one of the scene mode or extended scene mode settings (such as ACTION,<wbr/>
11579SUNSET,<wbr/> PARTY,<wbr/> or BOKEH) as it wishes.<wbr/> The camera device scene mode
115803A settings are provided by <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">capture results</a>.<wbr/></p>
11581<p>When set to OFF_<wbr/>KEEP_<wbr/>STATE,<wbr/> it is similar to OFF mode,<wbr/> the only difference
11582is that this frame will not be used by camera device background 3A statistics
11583update,<wbr/> as if this frame is never captured.<wbr/> This mode can be used in the scenario
11584where the application doesn't want a 3A manual control capture to affect
11585the subsequent auto 3A capture results.<wbr/></p>
11586            </td>
11587          </tr>
11588
11589
11590          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11591           <!-- end of entry -->
11592
11593
11594          <tr class="entry" id="dynamic_android.control.sceneMode">
11595            <td class="entry_name
11596             " rowspan="5">
11597              android.<wbr/>control.<wbr/>scene<wbr/>Mode
11598            </td>
11599            <td class="entry_type">
11600                <span class="entry_type_name entry_type_name_enum">byte</span>
11601
11602              <span class="entry_type_visibility"> [public]</span>
11603
11604
11605              <span class="entry_type_hwlevel">[legacy] </span>
11606
11607
11608
11609                <ul class="entry_type_enum">
11610                  <li>
11611                    <span class="entry_type_enum_name">DISABLED (v3.2)</span>
11612                    <span class="entry_type_enum_value">0</span>
11613                    <span class="entry_type_enum_notes"><p>Indicates that no scene modes are set for a given capture request.<wbr/></p></span>
11614                  </li>
11615                  <li>
11616                    <span class="entry_type_enum_name">FACE_PRIORITY (v3.2)</span>
11617                    <span class="entry_type_enum_notes"><p>If face detection support exists,<wbr/> use face
11618detection data for auto-focus,<wbr/> auto-white balance,<wbr/> and
11619auto-exposure routines.<wbr/></p>
11620<p>If face detection statistics are disabled
11621(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/>
11622this should still operate correctly (but will not return
11623face detection statistics to the framework).<wbr/></p>
11624<p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
11625<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>
11626remain active when FACE_<wbr/>PRIORITY is set.<wbr/></p></span>
11627                  </li>
11628                  <li>
11629                    <span class="entry_type_enum_name">ACTION (v3.2)</span>
11630                    <span class="entry_type_enum_optional">[optional]</span>
11631                    <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving objects.<wbr/></p>
11632<p>Similar to SPORTS.<wbr/></p></span>
11633                  </li>
11634                  <li>
11635                    <span class="entry_type_enum_name">PORTRAIT (v3.2)</span>
11636                    <span class="entry_type_enum_optional">[optional]</span>
11637                    <span class="entry_type_enum_notes"><p>Optimized for still photos of people.<wbr/></p></span>
11638                  </li>
11639                  <li>
11640                    <span class="entry_type_enum_name">LANDSCAPE (v3.2)</span>
11641                    <span class="entry_type_enum_optional">[optional]</span>
11642                    <span class="entry_type_enum_notes"><p>Optimized for photos of distant macroscopic objects.<wbr/></p></span>
11643                  </li>
11644                  <li>
11645                    <span class="entry_type_enum_name">NIGHT (v3.2)</span>
11646                    <span class="entry_type_enum_optional">[optional]</span>
11647                    <span class="entry_type_enum_notes"><p>Optimized for low-light settings.<wbr/></p></span>
11648                  </li>
11649                  <li>
11650                    <span class="entry_type_enum_name">NIGHT_PORTRAIT (v3.2)</span>
11651                    <span class="entry_type_enum_optional">[optional]</span>
11652                    <span class="entry_type_enum_notes"><p>Optimized for still photos of people in low-light
11653settings.<wbr/></p></span>
11654                  </li>
11655                  <li>
11656                    <span class="entry_type_enum_name">THEATRE (v3.2)</span>
11657                    <span class="entry_type_enum_optional">[optional]</span>
11658                    <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings where flash must
11659remain off.<wbr/></p></span>
11660                  </li>
11661                  <li>
11662                    <span class="entry_type_enum_name">BEACH (v3.2)</span>
11663                    <span class="entry_type_enum_optional">[optional]</span>
11664                    <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor beach settings.<wbr/></p></span>
11665                  </li>
11666                  <li>
11667                    <span class="entry_type_enum_name">SNOW (v3.2)</span>
11668                    <span class="entry_type_enum_optional">[optional]</span>
11669                    <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor settings containing snow.<wbr/></p></span>
11670                  </li>
11671                  <li>
11672                    <span class="entry_type_enum_name">SUNSET (v3.2)</span>
11673                    <span class="entry_type_enum_optional">[optional]</span>
11674                    <span class="entry_type_enum_notes"><p>Optimized for scenes of the setting sun.<wbr/></p></span>
11675                  </li>
11676                  <li>
11677                    <span class="entry_type_enum_name">STEADYPHOTO (v3.2)</span>
11678                    <span class="entry_type_enum_optional">[optional]</span>
11679                    <span class="entry_type_enum_notes"><p>Optimized to avoid blurry photos due to small amounts of
11680device motion (for example: due to hand shake).<wbr/></p></span>
11681                  </li>
11682                  <li>
11683                    <span class="entry_type_enum_name">FIREWORKS (v3.2)</span>
11684                    <span class="entry_type_enum_optional">[optional]</span>
11685                    <span class="entry_type_enum_notes"><p>Optimized for nighttime photos of fireworks.<wbr/></p></span>
11686                  </li>
11687                  <li>
11688                    <span class="entry_type_enum_name">SPORTS (v3.2)</span>
11689                    <span class="entry_type_enum_optional">[optional]</span>
11690                    <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving people.<wbr/></p>
11691<p>Similar to ACTION.<wbr/></p></span>
11692                  </li>
11693                  <li>
11694                    <span class="entry_type_enum_name">PARTY (v3.2)</span>
11695                    <span class="entry_type_enum_optional">[optional]</span>
11696                    <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings with multiple moving
11697people.<wbr/></p></span>
11698                  </li>
11699                  <li>
11700                    <span class="entry_type_enum_name">CANDLELIGHT (v3.2)</span>
11701                    <span class="entry_type_enum_optional">[optional]</span>
11702                    <span class="entry_type_enum_notes"><p>Optimized for dim settings where the main light source
11703is a candle.<wbr/></p></span>
11704                  </li>
11705                  <li>
11706                    <span class="entry_type_enum_name">BARCODE (v3.2)</span>
11707                    <span class="entry_type_enum_optional">[optional]</span>
11708                    <span class="entry_type_enum_notes"><p>Optimized for accurately capturing a photo of barcode
11709for use by camera applications that wish to read the
11710barcode value.<wbr/></p></span>
11711                  </li>
11712                  <li>
11713                    <span class="entry_type_enum_name">HIGH_SPEED_VIDEO (v3.2)</span>
11714                    <span class="entry_type_enum_deprecated">[deprecated]</span>
11715                    <span class="entry_type_enum_optional">[optional]</span>
11716                    <span class="entry_type_enum_hidden">[java_public]</span>
11717                    <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>
11718and <a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a>
11719for high speed video recording.<wbr/></p>
11720<p>Optimized for high speed video recording (frame rate &gt;=60fps) use case.<wbr/></p>
11721<p>The supported high speed video sizes and fps ranges are specified in
11722<a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/> To get desired
11723output frame rates,<wbr/> the application is only allowed to select video size
11724and fps range combinations listed in this static metadata.<wbr/> The fps range
11725can be control via <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a>.<wbr/></p>
11726<p>In this mode,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to
11727ON,<wbr/> ON,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode
11728controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture
11729and post-processing parameters is possible.<wbr/> All other controls operate the
11730same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other
11731android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p>
11732<ul>
11733<li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li>
11734<li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li>
11735<li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li>
11736<li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li>
11737<li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li>
11738<li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li>
11739<li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li>
11740<li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li>
11741<li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li>
11742<li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li>
11743<li><a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a></li>
11744</ul>
11745<p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p>
11746<ul>
11747<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>
11748<li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li>
11749<li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li>
11750<li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></li>
11751</ul>
11752<p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may
11753be lower than what camera can output,<wbr/> depending on the destination Surfaces for
11754the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/>
11755the application need check if the video encoder is capable of supporting the
11756high frame rate for a given video size,<wbr/> or it will end up with lower recording
11757frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the preview frame
11758rate will be bounded by the screen refresh rate.<wbr/></p>
11759<p>The camera device will only support up to 2 output high speed streams
11760(processed non-stalling format defined in <a href="#static_android.request.maxNumOutputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams</a>)
11761in this mode.<wbr/> This control will be effective only if all of below conditions are true:</p>
11762<ul>
11763<li>The application created no more than maxNumHighSpeedStreams processed non-stalling
11764format output streams,<wbr/> where maxNumHighSpeedStreams is calculated as
11765min(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>
11766<li>The stream sizes are selected from the sizes reported by
11767<a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/></li>
11768<li>No processed non-stalling or raw streams are configured.<wbr/></li>
11769</ul>
11770<p>When above conditions are NOT satisfied,<wbr/> the controls of this mode and
11771<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/>
11772the camera device will fall back to <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> <code>==</code> AUTO,<wbr/>
11773and the returned capture result metadata will give the fps range chosen
11774by the camera device.<wbr/></p>
11775<p>Switching into or out of this mode may trigger some camera ISP/<wbr/>sensor
11776reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that
11777the application avoids unnecessary scene mode switch as much as possible.<wbr/></p></span>
11778                  </li>
11779                  <li>
11780                    <span class="entry_type_enum_name">HDR (v3.2)</span>
11781                    <span class="entry_type_enum_optional">[optional]</span>
11782                    <span class="entry_type_enum_notes"><p>Turn on a device-specific high dynamic range (HDR) mode.<wbr/></p>
11783<p>In this scene mode,<wbr/> the camera device captures images
11784that keep a larger range of scene illumination levels
11785visible in the final image.<wbr/> For example,<wbr/> when taking a
11786picture of a object in front of a bright window,<wbr/> both
11787the object and the scene through the window may be
11788visible when using HDR mode,<wbr/> while in normal AUTO mode,<wbr/>
11789one or the other may be poorly exposed.<wbr/> As a tradeoff,<wbr/>
11790HDR mode generally takes much longer to capture a single
11791image,<wbr/> has no user control,<wbr/> and may have other artifacts
11792depending on the HDR method used.<wbr/></p>
11793<p>Therefore,<wbr/> HDR captures operate at a much slower rate
11794than regular captures.<wbr/></p>
11795<p>In this mode,<wbr/> on LIMITED or FULL devices,<wbr/> when a request
11796is made with a <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> of
11797STILL_<wbr/>CAPTURE,<wbr/> the camera device will capture an image
11798using a high dynamic range capture technique.<wbr/>  On LEGACY
11799devices,<wbr/> captures that target a JPEG-format output will
11800be captured with HDR,<wbr/> and the capture intent is not
11801relevant.<wbr/></p>
11802<p>The HDR capture may involve the device capturing a burst
11803of images internally and combining them into one,<wbr/> or it
11804may involve the device using specialized high dynamic
11805range capture hardware.<wbr/> In all cases,<wbr/> a single image is
11806produced in response to a capture request submitted
11807while in HDR mode.<wbr/></p>
11808<p>Since substantial post-processing is generally needed to
11809produce an HDR image,<wbr/> only YUV,<wbr/> PRIVATE,<wbr/> and JPEG
11810outputs are supported for LIMITED/<wbr/>FULL device HDR
11811captures,<wbr/> and only JPEG outputs are supported for LEGACY
11812HDR captures.<wbr/> Using a RAW output for HDR capture is not
11813supported.<wbr/></p>
11814<p>Some devices may also support always-on HDR,<wbr/> which
11815applies HDR processing at full frame rate.<wbr/>  For these
11816devices,<wbr/> intents other than STILL_<wbr/>CAPTURE will also
11817produce an HDR output with no frame rate impact compared
11818to normal operation,<wbr/> though the quality may be lower
11819than for STILL_<wbr/>CAPTURE intents.<wbr/></p>
11820<p>If SCENE_<wbr/>MODE_<wbr/>HDR is used with unsupported output types
11821or capture intents,<wbr/> the images captured will be as if
11822the SCENE_<wbr/>MODE was not enabled at all.<wbr/></p></span>
11823                  </li>
11824                  <li>
11825                    <span class="entry_type_enum_name">FACE_PRIORITY_LOW_LIGHT (v3.2)</span>
11826                    <span class="entry_type_enum_optional">[optional]</span>
11827                    <span class="entry_type_enum_hidden">[hidden]</span>
11828                    <span class="entry_type_enum_notes"><p>Same as FACE_<wbr/>PRIORITY scene mode,<wbr/> except that the camera
11829device will choose higher sensitivity values (<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>)
11830under low light conditions.<wbr/></p>
11831<p>The camera device may be tuned to expose the images in a reduced
11832sensitivity range to produce the best quality images.<wbr/> For example,<wbr/>
11833if 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/>
11834the camera device auto-exposure routine tuning process may limit the actual
11835exposure sensitivity range to [100,<wbr/> 1200] to ensure that the noise level isn't
11836excessive in order to preserve the image quality.<wbr/> Under this situation,<wbr/> the image under
11837low light may be under-exposed when the sensor max exposure time (bounded by the
11838<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
11839ON_<wbr/>* modes) and effective max sensitivity are reached.<wbr/> This scene mode allows the
11840camera device auto-exposure routine to increase the sensitivity up to the max
11841sensitivity specified by <a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a> when the scene is too
11842dark and the max exposure time is reached.<wbr/> The captured images may be noisier
11843compared with the images captured in normal FACE_<wbr/>PRIORITY mode; therefore,<wbr/> it is
11844recommended that the application only use this scene mode when it is capable of
11845reducing the noise level of the captured images.<wbr/></p>
11846<p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
11847<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>
11848remain active when FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT is set.<wbr/></p></span>
11849                  </li>
11850                  <li>
11851                    <span class="entry_type_enum_name">DEVICE_CUSTOM_START (v3.2)</span>
11852                    <span class="entry_type_enum_optional">[optional]</span>
11853                    <span class="entry_type_enum_hidden">[hidden]</span>
11854                    <span class="entry_type_enum_value">100</span>
11855                    <span class="entry_type_enum_notes"><p>Scene mode values within the range of
11856<code>[DEVICE_<wbr/>CUSTOM_<wbr/>START,<wbr/> DEVICE_<wbr/>CUSTOM_<wbr/>END]</code> are reserved for device specific
11857customized scene modes.<wbr/></p></span>
11858                  </li>
11859                  <li>
11860                    <span class="entry_type_enum_name">DEVICE_CUSTOM_END (v3.2)</span>
11861                    <span class="entry_type_enum_optional">[optional]</span>
11862                    <span class="entry_type_enum_hidden">[hidden]</span>
11863                    <span class="entry_type_enum_value">127</span>
11864                    <span class="entry_type_enum_notes"><p>Scene mode values within the range of
11865<code>[DEVICE_<wbr/>CUSTOM_<wbr/>START,<wbr/> DEVICE_<wbr/>CUSTOM_<wbr/>END]</code> are reserved for device specific
11866customized scene modes.<wbr/></p></span>
11867                  </li>
11868                </ul>
11869
11870            </td> <!-- entry_type -->
11871
11872            <td class="entry_description">
11873              <p>Control for which scene mode is currently active.<wbr/></p>
11874            </td>
11875
11876            <td class="entry_units">
11877            </td>
11878
11879            <td class="entry_range">
11880              <p><a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a></p>
11881            </td>
11882
11883            <td class="entry_hal_version">
11884              <p>3.<wbr/>2</p>
11885            </td>
11886
11887            <td class="entry_tags">
11888              <ul class="entry_tags">
11889                  <li><a href="#tag_BC">BC</a></li>
11890              </ul>
11891            </td>
11892
11893          </tr>
11894          <tr class="entries_header">
11895            <th class="th_details" colspan="6">Details</th>
11896          </tr>
11897          <tr class="entry_cont">
11898            <td class="entry_details" colspan="6">
11899              <p>Scene modes are custom camera modes optimized for a certain set of conditions and
11900capture settings.<wbr/></p>
11901<p>This is the mode that that is active when
11902<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
11903disable <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>
11904while in use.<wbr/></p>
11905<p>The interpretation and implementation of these scene modes is left
11906to the implementor of the camera device.<wbr/> Their behavior will not be
11907consistent across all devices,<wbr/> and any given device may only implement
11908a subset of these modes.<wbr/></p>
11909            </td>
11910          </tr>
11911
11912          <tr class="entries_header">
11913            <th class="th_details" colspan="6">HAL Implementation Details</th>
11914          </tr>
11915          <tr class="entry_cont">
11916            <td class="entry_details" colspan="6">
11917              <p>HAL implementations that include scene modes are expected to provide
11918the per-scene settings to use for <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
11919<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
11920<a href="#static_android.control.sceneModeOverrides">android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides</a>.<wbr/></p>
11921<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
11922HAL must list supported video size and fps range in
11923<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/>
11924if the HAL has two different sensor configurations for normal streaming mode and high
11925speed streaming,<wbr/> when this scene mode is set/<wbr/>reset in a sequence of capture requests,<wbr/> the
11926HAL may have to switch between different sensor modes.<wbr/>  This mode is deprecated in legacy
11927HAL3.<wbr/>3,<wbr/> to support high speed video recording,<wbr/> please implement
11928<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
11929capability defined in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
11930            </td>
11931          </tr>
11932
11933          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11934           <!-- end of entry -->
11935
11936
11937          <tr class="entry" id="dynamic_android.control.videoStabilizationMode">
11938            <td class="entry_name
11939             " rowspan="5">
11940              android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode
11941            </td>
11942            <td class="entry_type">
11943                <span class="entry_type_name entry_type_name_enum">byte</span>
11944
11945              <span class="entry_type_visibility"> [public]</span>
11946
11947
11948              <span class="entry_type_hwlevel">[legacy] </span>
11949
11950
11951
11952                <ul class="entry_type_enum">
11953                  <li>
11954                    <span class="entry_type_enum_name">OFF (v3.2)</span>
11955                    <span class="entry_type_enum_notes"><p>Video stabilization is disabled.<wbr/></p></span>
11956                  </li>
11957                  <li>
11958                    <span class="entry_type_enum_name">ON (v3.2)</span>
11959                    <span class="entry_type_enum_notes"><p>Video stabilization is enabled.<wbr/></p></span>
11960                  </li>
11961                  <li>
11962                    <span class="entry_type_enum_name">PREVIEW_STABILIZATION (v3.8)</span>
11963                    <span class="entry_type_enum_optional">[optional]</span>
11964                    <span class="entry_type_enum_notes"><p>Preview stabilization,<wbr/> where the preview in addition to all other non-RAW streams are
11965stabilized with the same quality of stabilization,<wbr/> is enabled.<wbr/> This mode aims to give
11966clients a 'what you see is what you get' effect.<wbr/> In this mode,<wbr/> the FoV reduction will
11967be a maximum of 20 % both horizontally and vertically
11968(10% from left,<wbr/> right,<wbr/> top,<wbr/> bottom) for the given zoom ratio /<wbr/> crop region.<wbr/>
11969The resultant FoV will also be the same across all processed streams
11970(that have the same aspect ratio).<wbr/></p></span>
11971                  </li>
11972                </ul>
11973
11974            </td> <!-- entry_type -->
11975
11976            <td class="entry_description">
11977              <p>Whether video stabilization is
11978active.<wbr/></p>
11979            </td>
11980
11981            <td class="entry_units">
11982            </td>
11983
11984            <td class="entry_range">
11985            </td>
11986
11987            <td class="entry_hal_version">
11988              <p>3.<wbr/>2</p>
11989            </td>
11990
11991            <td class="entry_tags">
11992              <ul class="entry_tags">
11993                  <li><a href="#tag_BC">BC</a></li>
11994              </ul>
11995            </td>
11996
11997          </tr>
11998          <tr class="entries_header">
11999            <th class="th_details" colspan="6">Details</th>
12000          </tr>
12001          <tr class="entry_cont">
12002            <td class="entry_details" colspan="6">
12003              <p>Video stabilization automatically warps images from
12004the camera in order to stabilize motion between consecutive frames.<wbr/></p>
12005<p>If enabled,<wbr/> video stabilization can modify the
12006<a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> to keep the video stream stabilized.<wbr/></p>
12007<p>Switching between different video stabilization modes may take several
12008frames to initialize,<wbr/> the camera device will report the current mode
12009in capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/>
12010the video stabilization modes in the first several capture results may
12011still be "OFF",<wbr/> and it will become "ON" when the initialization is
12012done.<wbr/></p>
12013<p>In addition,<wbr/> not all recording sizes or frame rates may be supported for
12014stabilization by a device that reports stabilization support.<wbr/> It is guaranteed
12015that an output targeting a MediaRecorder or MediaCodec will be stabilized if
12016the recording resolution is less than or equal to 1920 x 1080 (width less than
12017or equal to 1920,<wbr/> height less than or equal to 1080),<wbr/> and the recording
12018frame rate is less than or equal to 30fps.<wbr/>  At other sizes,<wbr/> the CaptureResult
12019<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a> field will return
12020OFF if the recording output is not stabilized,<wbr/> or if there are no output
12021Surface types that can be stabilized.<wbr/></p>
12022<p>The application is strongly recommended to call
12023<a href="https://developer.android.com/reference/android/hardware/camera2/params/SessionConfiguration.html#setSessionParameters">SessionConfiguration#setSessionParameters</a>
12024with the desired video stabilization mode before creating the capture session.<wbr/>
12025Video stabilization mode is a session parameter on many devices.<wbr/> Specifying
12026it at session creation time helps avoid reconfiguration delay caused by difference
12027between the default value and the first CaptureRequest.<wbr/></p>
12028<p>If a camera device supports both this mode and OIS
12029(<a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may
12030produce undesirable interaction,<wbr/> so it is recommended not to enable
12031both at the same time.<wbr/></p>
12032<p>If video stabilization is set to "PREVIEW_<wbr/>STABILIZATION",<wbr/>
12033<a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> is overridden.<wbr/> The camera sub-system may choose
12034to turn on hardware based image stabilization in addition to software based stabilization
12035if it deems that appropriate.<wbr/>
12036This key may be a part of the available session keys,<wbr/> which camera clients may
12037query via
12038<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableSessionKeys">CameraCharacteristics#getAvailableSessionKeys</a>.<wbr/>
12039If this is the case,<wbr/> changing this key over the life-time of a capture session may
12040cause delays /<wbr/> glitches.<wbr/></p>
12041            </td>
12042          </tr>
12043
12044          <tr class="entries_header">
12045            <th class="th_details" colspan="6">HAL Implementation Details</th>
12046          </tr>
12047          <tr class="entry_cont">
12048            <td class="entry_details" colspan="6">
12049              <p>When this key is set to "PREVIEW_<wbr/>STABILIZATION",<wbr/>
12050for non-stalling buffers returned without errors,<wbr/> the time interval between notify readout
12051timestamp and when buffers are returned to the camera framework,<wbr/> must be no more than 1
12052extra frame interval,<wbr/> relative to the case where this key is set to "OFF".<wbr/></p>
12053<p>This is in order for look-ahead time period to be short enough
12054for preview to match video recording for real-time usage.<wbr/></p>
12055            </td>
12056          </tr>
12057
12058          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12059           <!-- end of entry -->
12060
12061
12062          <tr class="entry" id="dynamic_android.control.postRawSensitivityBoost">
12063            <td class="entry_name
12064             " rowspan="3">
12065              android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost
12066            </td>
12067            <td class="entry_type">
12068                <span class="entry_type_name">int32</span>
12069
12070              <span class="entry_type_visibility"> [public]</span>
12071
12072
12073
12074
12075
12076
12077            </td> <!-- entry_type -->
12078
12079            <td class="entry_description">
12080              <p>The amount of additional sensitivity boost applied to output images
12081after RAW sensor data is captured.<wbr/></p>
12082            </td>
12083
12084            <td class="entry_units">
12085              ISO arithmetic units,<wbr/> the same as android.<wbr/>sensor.<wbr/>sensitivity
12086            </td>
12087
12088            <td class="entry_range">
12089              <p><a href="#static_android.control.postRawSensitivityBoostRange">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost<wbr/>Range</a></p>
12090            </td>
12091
12092            <td class="entry_hal_version">
12093              <p>3.<wbr/>2</p>
12094            </td>
12095
12096            <td class="entry_tags">
12097            </td>
12098
12099          </tr>
12100          <tr class="entries_header">
12101            <th class="th_details" colspan="6">Details</th>
12102          </tr>
12103          <tr class="entry_cont">
12104            <td class="entry_details" colspan="6">
12105              <p>Some camera devices support additional digital sensitivity boosting in the
12106camera processing pipeline after sensor RAW image is captured.<wbr/>
12107Such a boost will be applied to YUV/<wbr/>JPEG format output images but will not
12108have effect on RAW output formats like RAW_<wbr/>SENSOR,<wbr/> RAW10,<wbr/> RAW12 or RAW_<wbr/>OPAQUE.<wbr/></p>
12109<p>This key will be <code>null</code> for devices that do not support any RAW format
12110outputs.<wbr/> For devices that do support RAW format outputs,<wbr/> this key will always
12111present,<wbr/> and if a device does not support post RAW sensitivity boost,<wbr/> it will
12112list <code>100</code> in this key.<wbr/></p>
12113<p>If the camera device cannot apply the exact boost requested,<wbr/> it will reduce the
12114boost to the nearest supported value.<wbr/>
12115The final boost value used will be available in the output capture result.<wbr/></p>
12116<p>For devices that support post RAW sensitivity boost,<wbr/> the YUV/<wbr/>JPEG output images
12117of such device will have the total sensitivity of
12118<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>
12119The sensitivity of RAW format images will always be <code><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></code></p>
12120<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
12121OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
12122            </td>
12123          </tr>
12124
12125
12126          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12127           <!-- end of entry -->
12128
12129
12130          <tr class="entry" id="dynamic_android.control.enableZsl">
12131            <td class="entry_name
12132             " rowspan="5">
12133              android.<wbr/>control.<wbr/>enable<wbr/>Zsl
12134            </td>
12135            <td class="entry_type">
12136                <span class="entry_type_name entry_type_name_enum">byte</span>
12137
12138              <span class="entry_type_visibility"> [public as boolean]</span>
12139
12140
12141
12142
12143
12144                <ul class="entry_type_enum">
12145                  <li>
12146                    <span class="entry_type_enum_name">FALSE (v3.2)</span>
12147                    <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
12148after previous requests.<wbr/></p></span>
12149                  </li>
12150                  <li>
12151                    <span class="entry_type_enum_name">TRUE (v3.2)</span>
12152                    <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
12153captured before previous requests.<wbr/></p></span>
12154                  </li>
12155                </ul>
12156
12157            </td> <!-- entry_type -->
12158
12159            <td class="entry_description">
12160              <p>Allow camera device to enable zero-shutter-lag mode for requests with
12161<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE.<wbr/></p>
12162            </td>
12163
12164            <td class="entry_units">
12165            </td>
12166
12167            <td class="entry_range">
12168            </td>
12169
12170            <td class="entry_hal_version">
12171              <p>3.<wbr/>2</p>
12172            </td>
12173
12174            <td class="entry_tags">
12175            </td>
12176
12177          </tr>
12178          <tr class="entries_header">
12179            <th class="th_details" colspan="6">Details</th>
12180          </tr>
12181          <tr class="entry_cont">
12182            <td class="entry_details" colspan="6">
12183              <p>If enableZsl is <code>true</code>,<wbr/> the camera device may enable zero-shutter-lag mode for requests with
12184STILL_<wbr/>CAPTURE capture intent.<wbr/> The camera device may use images captured in the past to
12185produce output images for a zero-shutter-lag request.<wbr/> The result metadata including the
12186<a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a> reflects the source frames used to produce output images.<wbr/>
12187Therefore,<wbr/> the contents of the output images and the result metadata may be out of order
12188compared to previous regular requests.<wbr/> enableZsl does not affect requests with other
12189capture intents.<wbr/></p>
12190<p>For example,<wbr/> when requests are submitted in the following order:
12191  Request A: enableZsl is ON,<wbr/> <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> is PREVIEW
12192  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>
12193<p>The output images for request B may have contents captured before the output images for
12194request A,<wbr/> and the result metadata for request B may be older than the result metadata for
12195request A.<wbr/></p>
12196<p>Note that when enableZsl is <code>true</code>,<wbr/> it is not guaranteed to get output images captured in
12197the past for requests with STILL_<wbr/>CAPTURE capture intent.<wbr/></p>
12198<p>For applications targeting SDK versions O and newer,<wbr/> the value of enableZsl in
12199TEMPLATE_<wbr/>STILL_<wbr/>CAPTURE template may be <code>true</code>.<wbr/> The value in other templates is always
12200<code>false</code> if present.<wbr/></p>
12201<p>For applications targeting SDK versions older than O,<wbr/> the value of enableZsl in all
12202capture templates is always <code>false</code> if present.<wbr/></p>
12203<p>For application-operated ZSL,<wbr/> use CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p>
12204            </td>
12205          </tr>
12206
12207          <tr class="entries_header">
12208            <th class="th_details" colspan="6">HAL Implementation Details</th>
12209          </tr>
12210          <tr class="entry_cont">
12211            <td class="entry_details" colspan="6">
12212              <p>It is valid for HAL to produce regular output images for requests with STILL_<wbr/>CAPTURE
12213capture intent.<wbr/></p>
12214            </td>
12215          </tr>
12216
12217          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12218           <!-- end of entry -->
12219
12220
12221          <tr class="entry" id="dynamic_android.control.afSceneChange">
12222            <td class="entry_name
12223             " rowspan="3">
12224              android.<wbr/>control.<wbr/>af<wbr/>Scene<wbr/>Change
12225            </td>
12226            <td class="entry_type">
12227                <span class="entry_type_name entry_type_name_enum">byte</span>
12228
12229              <span class="entry_type_visibility"> [public]</span>
12230
12231
12232
12233
12234
12235                <ul class="entry_type_enum">
12236                  <li>
12237                    <span class="entry_type_enum_name">NOT_DETECTED (v3.3)</span>
12238                    <span class="entry_type_enum_notes"><p>Scene change is not detected within the AF region(s).<wbr/></p></span>
12239                  </li>
12240                  <li>
12241                    <span class="entry_type_enum_name">DETECTED (v3.3)</span>
12242                    <span class="entry_type_enum_notes"><p>Scene change is detected within the AF region(s).<wbr/></p></span>
12243                  </li>
12244                </ul>
12245
12246            </td> <!-- entry_type -->
12247
12248            <td class="entry_description">
12249              <p>Whether a significant scene change is detected within the currently-set AF
12250region(s).<wbr/></p>
12251            </td>
12252
12253            <td class="entry_units">
12254            </td>
12255
12256            <td class="entry_range">
12257            </td>
12258
12259            <td class="entry_hal_version">
12260              <p>3.<wbr/>3</p>
12261            </td>
12262
12263            <td class="entry_tags">
12264            </td>
12265
12266          </tr>
12267          <tr class="entries_header">
12268            <th class="th_details" colspan="6">Details</th>
12269          </tr>
12270          <tr class="entry_cont">
12271            <td class="entry_details" colspan="6">
12272              <p>When the camera focus routine detects a change in the scene it is looking at,<wbr/>
12273such as a large shift in camera viewpoint,<wbr/> significant motion in the scene,<wbr/> or a
12274significant illumination change,<wbr/> this value will be set to DETECTED for a single capture
12275result.<wbr/> Otherwise the value will be NOT_<wbr/>DETECTED.<wbr/> The threshold for detection is similar
12276to what would trigger a new passive focus scan to begin in CONTINUOUS autofocus modes.<wbr/></p>
12277<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>
12278            </td>
12279          </tr>
12280
12281
12282          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12283           <!-- end of entry -->
12284
12285
12286          <tr class="entry" id="dynamic_android.control.extendedSceneMode">
12287            <td class="entry_name
12288             " rowspan="3">
12289              android.<wbr/>control.<wbr/>extended<wbr/>Scene<wbr/>Mode
12290            </td>
12291            <td class="entry_type">
12292                <span class="entry_type_name entry_type_name_enum">byte</span>
12293
12294              <span class="entry_type_visibility"> [public]</span>
12295
12296
12297
12298
12299
12300                <ul class="entry_type_enum">
12301                  <li>
12302                    <span class="entry_type_enum_name">DISABLED (v3.5)</span>
12303                    <span class="entry_type_enum_value">0</span>
12304                    <span class="entry_type_enum_notes"><p>Extended scene mode is disabled.<wbr/></p></span>
12305                  </li>
12306                  <li>
12307                    <span class="entry_type_enum_name">BOKEH_STILL_CAPTURE (v3.5)</span>
12308                    <span class="entry_type_enum_notes"><p>High quality bokeh mode is enabled for all non-raw streams (including YUV,<wbr/>
12309JPEG,<wbr/> and IMPLEMENTATION_<wbr/>DEFINED) when capture intent is STILL_<wbr/>CAPTURE.<wbr/> Due to the
12310extra image processing,<wbr/> this mode may introduce additional stall to non-raw streams.<wbr/>
12311This mode should be used in high quality still capture use case.<wbr/></p></span>
12312                  </li>
12313                  <li>
12314                    <span class="entry_type_enum_name">BOKEH_CONTINUOUS (v3.5)</span>
12315                    <span class="entry_type_enum_notes"><p>Bokeh effect must not slow down capture rate relative to sensor raw output,<wbr/>
12316and the effect is applied to all processed streams no larger than the maximum
12317streaming dimension.<wbr/> This mode should be used if performance and power are a
12318priority,<wbr/> such as video recording.<wbr/></p></span>
12319                  </li>
12320                  <li>
12321                    <span class="entry_type_enum_name">VENDOR_START (v3.5)</span>
12322                    <span class="entry_type_enum_hidden">[hidden]</span>
12323                    <span class="entry_type_enum_value">0x40</span>
12324                    <span class="entry_type_enum_notes"><p>Vendor defined extended scene modes.<wbr/> These depend on vendor implementation.<wbr/></p></span>
12325                  </li>
12326                </ul>
12327
12328            </td> <!-- entry_type -->
12329
12330            <td class="entry_description">
12331              <p>Whether extended scene mode is enabled for a particular capture request.<wbr/></p>
12332            </td>
12333
12334            <td class="entry_units">
12335            </td>
12336
12337            <td class="entry_range">
12338            </td>
12339
12340            <td class="entry_hal_version">
12341              <p>3.<wbr/>5</p>
12342            </td>
12343
12344            <td class="entry_tags">
12345            </td>
12346
12347          </tr>
12348          <tr class="entries_header">
12349            <th class="th_details" colspan="6">Details</th>
12350          </tr>
12351          <tr class="entry_cont">
12352            <td class="entry_details" colspan="6">
12353              <p>With bokeh mode,<wbr/> the camera device may blur out the parts of scene that are not in
12354focus,<wbr/> creating a bokeh (or shallow depth of field) effect for people or objects.<wbr/></p>
12355<p>When set to BOKEH_<wbr/>STILL_<wbr/>CAPTURE mode with STILL_<wbr/>CAPTURE capture intent,<wbr/> due to the extra
12356processing needed for high quality bokeh effect,<wbr/> the stall may be longer than when
12357capture intent is not STILL_<wbr/>CAPTURE.<wbr/></p>
12358<p>When set to BOKEH_<wbr/>STILL_<wbr/>CAPTURE mode with PREVIEW capture intent,<wbr/></p>
12359<ul>
12360<li>If the camera device has BURST_<wbr/>CAPTURE capability,<wbr/> the frame rate requirement of
12361BURST_<wbr/>CAPTURE must still be met.<wbr/></li>
12362<li>All streams not larger than the maximum streaming dimension for BOKEH_<wbr/>STILL_<wbr/>CAPTURE mode
12363(queried via <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#CONTROL_AVAILABLE_EXTENDED_SCENE_MODE_CAPABILITIES">Camera<wbr/>Characteristics#CONTROL_<wbr/>AVAILABLE_<wbr/>EXTENDED_<wbr/>SCENE_<wbr/>MODE_<wbr/>CAPABILITIES</a>)
12364will have preview bokeh effect applied.<wbr/></li>
12365</ul>
12366<p>When set to BOKEH_<wbr/>CONTINUOUS mode,<wbr/> configured streams dimension should not exceed this mode's
12367maximum streaming dimension in order to have bokeh effect applied.<wbr/> Bokeh effect may not
12368be available for streams larger than the maximum streaming dimension.<wbr/></p>
12369<p>Switching between different extended scene modes may involve reconfiguration of the camera
12370pipeline,<wbr/> resulting in long latency.<wbr/> The application should check this key against the
12371available session keys queried via
12372<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableSessionKeys">CameraCharacteristics#getAvailableSessionKeys</a>.<wbr/></p>
12373<p>For a logical multi-camera,<wbr/> bokeh may be implemented by stereo vision from sub-cameras
12374with different field of view.<wbr/> As a result,<wbr/> when bokeh mode is enabled,<wbr/> the camera device
12375may override <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> or <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a>,<wbr/> and the field of
12376view may be smaller than when bokeh mode is off.<wbr/></p>
12377            </td>
12378          </tr>
12379
12380
12381          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12382           <!-- end of entry -->
12383
12384
12385          <tr class="entry" id="dynamic_android.control.zoomRatio">
12386            <td class="entry_name
12387             " rowspan="5">
12388              android.<wbr/>control.<wbr/>zoom<wbr/>Ratio
12389            </td>
12390            <td class="entry_type">
12391                <span class="entry_type_name">float</span>
12392
12393              <span class="entry_type_visibility"> [public]</span>
12394
12395
12396              <span class="entry_type_hwlevel">[limited] </span>
12397
12398
12399
12400
12401            </td> <!-- entry_type -->
12402
12403            <td class="entry_description">
12404              <p>The desired zoom ratio</p>
12405            </td>
12406
12407            <td class="entry_units">
12408            </td>
12409
12410            <td class="entry_range">
12411              <p><a href="#static_android.control.zoomRatioRange">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio<wbr/>Range</a></p>
12412            </td>
12413
12414            <td class="entry_hal_version">
12415              <p>3.<wbr/>5</p>
12416            </td>
12417
12418            <td class="entry_tags">
12419            </td>
12420
12421          </tr>
12422          <tr class="entries_header">
12423            <th class="th_details" colspan="6">Details</th>
12424          </tr>
12425          <tr class="entry_cont">
12426            <td class="entry_details" colspan="6">
12427              <p>Instead of using <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> for zoom,<wbr/> the application can now choose to
12428use this tag to specify the desired zoom level.<wbr/></p>
12429<p>By using this control,<wbr/> the application gains a simpler way to control zoom,<wbr/> which can
12430be a combination of optical and digital zoom.<wbr/> For example,<wbr/> a multi-camera system may
12431contain more than one lens with different focal lengths,<wbr/> and the user can use optical
12432zoom by switching between lenses.<wbr/> Using zoomRatio has benefits in the scenarios below:</p>
12433<ul>
12434<li>Zooming in from a wide-angle lens to a telephoto lens: A floating-point ratio provides
12435  better precision compared to an integer value of <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></li>
12436<li>Zooming out from a wide lens to an ultrawide lens: zoomRatio supports zoom-out whereas
12437  <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> doesn't.<wbr/></li>
12438</ul>
12439<p>To illustrate,<wbr/> here are several scenarios of different zoom ratios,<wbr/> crop regions,<wbr/>
12440and output streams,<wbr/> for a hypothetical camera device with an active array of size
12441<code>(2000,<wbr/>1500)</code>.<wbr/></p>
12442<ul>
12443<li>Camera Configuration:<ul>
12444<li>Active array size: <code>2000x1500</code> (3 MP,<wbr/> 4:3 aspect ratio)</li>
12445<li>Output stream #1: <code>640x480</code> (VGA,<wbr/> 4:3 aspect ratio)</li>
12446<li>Output stream #2: <code>1280x720</code> (720p,<wbr/> 16:9 aspect ratio)</li>
12447</ul>
12448</li>
12449<li>Case #1: 4:3 crop region with 2.<wbr/>0x zoom ratio<ul>
12450<li>Zoomed field of view: 1/<wbr/>4 of original field of view</li>
12451<li>Crop region: <code>Rect(0,<wbr/> 0,<wbr/> 2000,<wbr/> 1500) //<wbr/> (left,<wbr/> top,<wbr/> right,<wbr/> bottom)</code> (post zoom)</li>
12452</ul>
12453</li>
12454<li><img alt="4:3 aspect ratio crop diagram" src="images/camera2/metadata/android.control.zoomRatio/zoom-ratio-2-crop-43.png"/><ul>
12455<li><code>640x480</code> stream source area: <code>(0,<wbr/> 0,<wbr/> 2000,<wbr/> 1500)</code> (equal to crop region)</li>
12456<li><code>1280x720</code> stream source area: <code>(0,<wbr/> 187,<wbr/> 2000,<wbr/> 1312)</code> (letterboxed)</li>
12457</ul>
12458</li>
12459<li>Case #2: 16:9 crop region with 2.<wbr/>0x zoom.<wbr/><ul>
12460<li>Zoomed field of view: 1/<wbr/>4 of original field of view</li>
12461<li>Crop region: <code>Rect(0,<wbr/> 187,<wbr/> 2000,<wbr/> 1312)</code></li>
12462<li><img alt="16:9 aspect ratio crop diagram" src="images/camera2/metadata/android.control.zoomRatio/zoom-ratio-2-crop-169.png"/></li>
12463<li><code>640x480</code> stream source area: <code>(250,<wbr/> 187,<wbr/> 1750,<wbr/> 1312)</code> (pillarboxed)</li>
12464<li><code>1280x720</code> stream source area: <code>(0,<wbr/> 187,<wbr/> 2000,<wbr/> 1312)</code> (equal to crop region)</li>
12465</ul>
12466</li>
12467<li>Case #3: 1:1 crop region with 0.<wbr/>5x zoom out to ultrawide lens.<wbr/><ul>
12468<li>Zoomed field of view: 4x of original field of view (switched from wide lens to ultrawide lens)</li>
12469<li>Crop region: <code>Rect(250,<wbr/> 0,<wbr/> 1750,<wbr/> 1500)</code></li>
12470<li><img alt="1:1 aspect ratio crop diagram" src="images/camera2/metadata/android.control.zoomRatio/zoom-ratio-0.5-crop-11.png"/></li>
12471<li><code>640x480</code> stream source area: <code>(250,<wbr/> 187,<wbr/> 1750,<wbr/> 1312)</code> (letterboxed)</li>
12472<li><code>1280x720</code> stream source area: <code>(250,<wbr/> 328,<wbr/> 1750,<wbr/> 1172)</code> (letterboxed)</li>
12473</ul>
12474</li>
12475</ul>
12476<p>As seen from the graphs above,<wbr/> the coordinate system of cropRegion now changes to the
12477effective after-zoom field-of-view,<wbr/> and is represented by the rectangle of (0,<wbr/> 0,<wbr/>
12478activeArrayWith,<wbr/> activeArrayHeight).<wbr/> The same applies to AE/<wbr/>AWB/<wbr/>AF regions,<wbr/> and faces.<wbr/>
12479This coordinate system change isn't applicable to RAW capture and its related
12480metadata such as intrinsicCalibration and lensShadingMap.<wbr/></p>
12481<p>Using the same hypothetical example above,<wbr/> and assuming output stream #1 (640x480) is
12482the viewfinder stream,<wbr/> the application can achieve 2.<wbr/>0x zoom in one of two ways:</p>
12483<ul>
12484<li>zoomRatio = 2.<wbr/>0,<wbr/> scaler.<wbr/>cropRegion = (0,<wbr/> 0,<wbr/> 2000,<wbr/> 1500)</li>
12485<li>zoomRatio = 1.<wbr/>0 (default),<wbr/> scaler.<wbr/>cropRegion = (500,<wbr/> 375,<wbr/> 1500,<wbr/> 1125)</li>
12486</ul>
12487<p>If the application intends to set aeRegions to be top-left quarter of the viewfinder
12488field-of-view,<wbr/> the <a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a> should be set to (0,<wbr/> 0,<wbr/> 1000,<wbr/> 750) with
12489zoomRatio set to 2.<wbr/>0.<wbr/> Alternatively,<wbr/> the application can set aeRegions to the equivalent
12490region of (500,<wbr/> 375,<wbr/> 1000,<wbr/> 750) for zoomRatio of 1.<wbr/>0.<wbr/> If the application doesn't
12491explicitly set <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a>,<wbr/> its value defaults to 1.<wbr/>0.<wbr/></p>
12492<p>One limitation of controlling zoom using zoomRatio is that the <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>
12493must only be used for letterboxing or pillarboxing of the sensor active array,<wbr/> and no
12494FREEFORM cropping can be used with <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> other than 1.<wbr/>0.<wbr/> If
12495<a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> is not 1.<wbr/>0,<wbr/> and <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> is set to be
12496windowboxing,<wbr/> the camera framework will override the <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> to be
12497the active array.<wbr/></p>
12498<p>In the capture request,<wbr/> if the application sets <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> to a
12499value != 1.<wbr/>0,<wbr/> the <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> tag in the capture result reflects the
12500effective zoom ratio achieved by the camera device,<wbr/> and the <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>
12501adjusts for additional crops that are not zoom related.<wbr/> Otherwise,<wbr/> if the application
12502sets <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> to 1.<wbr/>0,<wbr/> or does not set it at all,<wbr/> the
12503<a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> tag in the result metadata will also be 1.<wbr/>0.<wbr/></p>
12504<p>When the application requests a physical stream for a logical multi-camera,<wbr/> the
12505<a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> in the physical camera result metadata will be 1.<wbr/>0,<wbr/> and
12506the <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> tag reflects the amount of zoom and crop done by the
12507physical camera device.<wbr/></p>
12508            </td>
12509          </tr>
12510
12511          <tr class="entries_header">
12512            <th class="th_details" colspan="6">HAL Implementation Details</th>
12513          </tr>
12514          <tr class="entry_cont">
12515            <td class="entry_details" colspan="6">
12516              <p>For all capture request templates,<wbr/> this field must be set to 1.<wbr/>0 in order to have
12517consistent field of views between different modes.<wbr/></p>
12518            </td>
12519          </tr>
12520
12521          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12522           <!-- end of entry -->
12523
12524
12525          <tr class="entry" id="dynamic_android.control.settingsOverride">
12526            <td class="entry_name
12527             " rowspan="5">
12528              android.<wbr/>control.<wbr/>settings<wbr/>Override
12529            </td>
12530            <td class="entry_type">
12531                <span class="entry_type_name entry_type_name_enum">int32</span>
12532
12533              <span class="entry_type_visibility"> [public]</span>
12534
12535
12536
12537
12538
12539                <ul class="entry_type_enum">
12540                  <li>
12541                    <span class="entry_type_enum_name">OFF (v3.9)</span>
12542                    <span class="entry_type_enum_notes"><p>No keys are applied sooner than the other keys when applying CaptureRequest
12543settings to the camera device.<wbr/> This is the default value.<wbr/></p></span>
12544                  </li>
12545                  <li>
12546                    <span class="entry_type_enum_name">ZOOM (v3.9)</span>
12547                    <span class="entry_type_enum_notes"><p>Zoom related keys are applied sooner than the other keys in the CaptureRequest.<wbr/> The
12548zoom related keys are:</p>
12549<ul>
12550<li><a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a></li>
12551<li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li>
12552<li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li>
12553<li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li>
12554<li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li>
12555</ul>
12556<p>Even though <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/>
12557and <a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a> are not directly zoom related,<wbr/> applications
12558typically scale these regions together with <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> to have a
12559consistent mapping within the current field of view.<wbr/> In this aspect,<wbr/> they are
12560related to <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> and <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a>.<wbr/></p></span>
12561                  </li>
12562                  <li>
12563                    <span class="entry_type_enum_name">VENDOR_START (v3.9)</span>
12564                    <span class="entry_type_enum_hidden">[hidden]</span>
12565                    <span class="entry_type_enum_value">0x4000</span>
12566                    <span class="entry_type_enum_notes"><p>Vendor defined settingsOverride.<wbr/> These depend on vendor implementation.<wbr/></p></span>
12567                  </li>
12568                </ul>
12569
12570            </td> <!-- entry_type -->
12571
12572            <td class="entry_description">
12573              <p>The desired CaptureRequest settings override with which certain keys are
12574applied earlier so that they can take effect sooner.<wbr/></p>
12575            </td>
12576
12577            <td class="entry_units">
12578            </td>
12579
12580            <td class="entry_range">
12581              <p><a href="#static_android.control.availableSettingsOverrides">android.<wbr/>control.<wbr/>available<wbr/>Settings<wbr/>Overrides</a></p>
12582            </td>
12583
12584            <td class="entry_hal_version">
12585              <p>3.<wbr/>9</p>
12586            </td>
12587
12588            <td class="entry_tags">
12589            </td>
12590
12591          </tr>
12592          <tr class="entries_header">
12593            <th class="th_details" colspan="6">Details</th>
12594          </tr>
12595          <tr class="entry_cont">
12596            <td class="entry_details" colspan="6">
12597              <p>There are some CaptureRequest keys which can be applied earlier than others
12598when controls within a CaptureRequest aren't required to take effect at the same time.<wbr/>
12599One such example is zoom.<wbr/> Zoom can be applied at a later stage of the camera pipeline.<wbr/>
12600As soon as the camera device receives the CaptureRequest,<wbr/> it can apply the requested
12601zoom value onto an earlier request that's already in the pipeline,<wbr/> thus improves zoom
12602latency.<wbr/></p>
12603<p>This key's value in the capture result reflects whether the controls for this capture
12604are overridden "by" a newer request.<wbr/> This means that if a capture request turns on
12605settings override,<wbr/> the capture result of an earlier request will contain the key value
12606of ZOOM.<wbr/> On the other hand,<wbr/> if a capture request has settings override turned on,<wbr/>
12607but all newer requests have it turned off,<wbr/> the key's value in the capture result will
12608be OFF because this capture isn't overridden by a newer capture.<wbr/> In the two examples
12609below,<wbr/> the capture results columns illustrate the settingsOverride values in different
12610scenarios.<wbr/></p>
12611<p>Assuming the zoom settings override can speed up by 1 frame,<wbr/> below example illustrates
12612the speed-up at the start of capture session:</p>
12613<pre><code>Camera session created
12614Request 1 (zoom=1.<wbr/>0x,<wbr/> override=ZOOM) -&gt;
12615Request 2 (zoom=1.<wbr/>2x,<wbr/> override=ZOOM) -&gt;
12616Request 3 (zoom=1.<wbr/>4x,<wbr/> override=ZOOM) -&gt;  Result 1 (zoom=1.<wbr/>2x,<wbr/> override=ZOOM)
12617Request 4 (zoom=1.<wbr/>6x,<wbr/> override=ZOOM) -&gt;  Result 2 (zoom=1.<wbr/>4x,<wbr/> override=ZOOM)
12618Request 5 (zoom=1.<wbr/>8x,<wbr/> override=ZOOM) -&gt;  Result 3 (zoom=1.<wbr/>6x,<wbr/> override=ZOOM)
12619                                     -&gt;  Result 4 (zoom=1.<wbr/>8x,<wbr/> override=ZOOM)
12620                                     -&gt;  Result 5 (zoom=1.<wbr/>8x,<wbr/> override=OFF)
12621</code></pre>
12622<p>The application can turn on settings override and use zoom as normal.<wbr/> The example
12623shows that the later zoom values (1.<wbr/>2x,<wbr/> 1.<wbr/>4x,<wbr/> 1.<wbr/>6x,<wbr/> and 1.<wbr/>8x) overwrite the zoom
12624values (1.<wbr/>0x,<wbr/> 1.<wbr/>2x,<wbr/> 1.<wbr/>4x,<wbr/> and 1.<wbr/>8x) of earlier requests (#1,<wbr/> #2,<wbr/> #3,<wbr/> and #4).<wbr/></p>
12625<p>The application must make sure the settings override doesn't interfere with user
12626journeys requiring simultaneous application of all controls in CaptureRequest on the
12627requested output targets.<wbr/> For example,<wbr/> if the application takes a still capture using
12628CameraCaptureSession#capture,<wbr/> and the repeating request immediately sets a different
12629zoom value using override,<wbr/> the inflight still capture could have its zoom value
12630overwritten unexpectedly.<wbr/></p>
12631<p>So the application is strongly recommended to turn off settingsOverride when taking
12632still/<wbr/>burst captures,<wbr/> and turn it back on when there is only repeating viewfinder
12633request and no inflight still/<wbr/>burst captures.<wbr/></p>
12634<p>Below is the example demonstrating the transitions in and out of the
12635settings override:</p>
12636<pre><code>Request 1 (zoom=1.<wbr/>0x,<wbr/> override=OFF)
12637Request 2 (zoom=1.<wbr/>2x,<wbr/> override=OFF)
12638Request 3 (zoom=1.<wbr/>4x,<wbr/> override=ZOOM)  -&gt; Result 1 (zoom=1.<wbr/>0x,<wbr/> override=OFF)
12639Request 4 (zoom=1.<wbr/>6x,<wbr/> override=ZOOM)  -&gt; Result 2 (zoom=1.<wbr/>4x,<wbr/> override=ZOOM)
12640Request 5 (zoom=1.<wbr/>8x,<wbr/> override=OFF)   -&gt; Result 3 (zoom=1.<wbr/>6x,<wbr/> override=ZOOM)
12641                                      -&gt; Result 4 (zoom=1.<wbr/>6x,<wbr/> override=OFF)
12642                                      -&gt; Result 5 (zoom=1.<wbr/>8x,<wbr/> override=OFF)
12643</code></pre>
12644<p>This example shows that:</p>
12645<ul>
12646<li>The application "ramps in" settings override by setting the control to ZOOM.<wbr/>
12647In the example,<wbr/> request #3 enables zoom settings override.<wbr/> Because the camera device
12648can speed up applying zoom by 1 frame,<wbr/> the outputs of request #2 has 1.<wbr/>4x zoom,<wbr/> the
12649value specified in request #3.<wbr/></li>
12650<li>The application "ramps out" of settings override by setting the control to OFF.<wbr/> In
12651the example,<wbr/> request #5 changes the override to OFF.<wbr/> Because request #4's zoom
12652takes effect in result #3,<wbr/> result #4's zoom remains the same until new value takes
12653effect in result #5.<wbr/></li>
12654</ul>
12655            </td>
12656          </tr>
12657
12658          <tr class="entries_header">
12659            <th class="th_details" colspan="6">HAL Implementation Details</th>
12660          </tr>
12661          <tr class="entry_cont">
12662            <td class="entry_details" colspan="6">
12663              <p>The HAL must set this value to OFF in all of the Capture templates.<wbr/></p>
12664<p>Typically the HAL unblocks processCaptureRequest at the same rate as the sensor capture,<wbr/>
12665and the HAL queues the capture settings in its pipeline when processCaptureRequest
12666returns.<wbr/> However,<wbr/> when the settings override is enabled,<wbr/> the HAL can optimize the
12667overridden controls' latency by applying them as soon as processCaptureRequest is
12668called,<wbr/> rather than when it's unblocked.<wbr/></p>
12669<p>For devices launching with API level 35 or newer,<wbr/> to avoid regression on zoom
12670smoothness,<wbr/> when zoom settings override is on during pinch zoom (zoom value gradually
12671changes),<wbr/> the zoom effect in the camera output must not become more jittery.<wbr/> More
12672specifically,<wbr/> the variation of zoom pipeline latency must not increase.<wbr/> The latency
12673improvement must be at least 1 frame regardless of zoom in or zoom out.<wbr/></p>
12674<p>For devices launched before API level 35,<wbr/> if zoom settings override is on,<wbr/> when
12675zooming in,<wbr/> the HAL must be able to apply the zoom related settings at least 1
12676frame ahead.<wbr/></p>
12677            </td>
12678          </tr>
12679
12680          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12681           <!-- end of entry -->
12682
12683
12684          <tr class="entry" id="dynamic_android.control.settingsOverridingFrameNumber">
12685            <td class="entry_name
12686             " rowspan="3">
12687              android.<wbr/>control.<wbr/>settings<wbr/>Overriding<wbr/>Frame<wbr/>Number
12688            </td>
12689            <td class="entry_type">
12690                <span class="entry_type_name">int32</span>
12691
12692              <span class="entry_type_visibility"> [system]</span>
12693
12694
12695
12696
12697
12698
12699            </td> <!-- entry_type -->
12700
12701            <td class="entry_description">
12702              <p>The frame number of the newer request overriding this capture.<wbr/></p>
12703            </td>
12704
12705            <td class="entry_units">
12706            </td>
12707
12708            <td class="entry_range">
12709            </td>
12710
12711            <td class="entry_hal_version">
12712              <p>3.<wbr/>9</p>
12713            </td>
12714
12715            <td class="entry_tags">
12716            </td>
12717
12718          </tr>
12719          <tr class="entries_header">
12720            <th class="th_details" colspan="6">Details</th>
12721          </tr>
12722          <tr class="entry_cont">
12723            <td class="entry_details" colspan="6">
12724              <p>Must be equal to the frame number of the result if this capture isn't
12725overridden by a newer request,<wbr/> i.<wbr/>e.<wbr/> if <a href="#controls_android.control.settingsOverride">android.<wbr/>control.<wbr/>settings<wbr/>Override</a> is OFF
12726in the capture result.<wbr/> On the other hand,<wbr/> if the capture is overridden by a newer
12727request,<wbr/> the value of this tag (unsigned) must be larger than the frame number of
12728the capture result.<wbr/></p>
12729            </td>
12730          </tr>
12731
12732
12733          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12734           <!-- end of entry -->
12735
12736
12737          <tr class="entry" id="dynamic_android.control.autoframing">
12738            <td class="entry_name
12739             " rowspan="5">
12740              android.<wbr/>control.<wbr/>autoframing
12741            </td>
12742            <td class="entry_type">
12743                <span class="entry_type_name entry_type_name_enum">byte</span>
12744
12745              <span class="entry_type_visibility"> [public]</span>
12746
12747
12748              <span class="entry_type_hwlevel">[limited] </span>
12749
12750
12751
12752                <ul class="entry_type_enum">
12753                  <li>
12754                    <span class="entry_type_enum_name">OFF (v3.9)</span>
12755                    <span class="entry_type_enum_notes"><p>Disable autoframing.<wbr/></p></span>
12756                  </li>
12757                  <li>
12758                    <span class="entry_type_enum_name">ON (v3.9)</span>
12759                    <span class="entry_type_enum_notes"><p>Enable autoframing to keep people in the frame's field of view.<wbr/></p></span>
12760                  </li>
12761                  <li>
12762                    <span class="entry_type_enum_name">AUTO (v3.9)</span>
12763                    <span class="entry_type_enum_hidden">[hidden]</span>
12764                    <span class="entry_type_enum_notes"><p>Automatically select ON or OFF based on the system level preferences.<wbr/></p></span>
12765                  </li>
12766                </ul>
12767
12768            </td> <!-- entry_type -->
12769
12770            <td class="entry_description">
12771              <p>Automatic crop,<wbr/> pan and zoom to keep objects in the center of the frame.<wbr/></p>
12772            </td>
12773
12774            <td class="entry_units">
12775            </td>
12776
12777            <td class="entry_range">
12778            </td>
12779
12780            <td class="entry_hal_version">
12781              <p>3.<wbr/>9</p>
12782            </td>
12783
12784            <td class="entry_tags">
12785            </td>
12786
12787          </tr>
12788          <tr class="entries_header">
12789            <th class="th_details" colspan="6">Details</th>
12790          </tr>
12791          <tr class="entry_cont">
12792            <td class="entry_details" colspan="6">
12793              <p>Auto-framing is a special mode provided by the camera device to dynamically crop,<wbr/> zoom
12794or pan the camera feed to try to ensure that the people in a scene occupy a reasonable
12795portion of the viewport.<wbr/> It is primarily designed to support video calling in
12796situations where the user isn't directly in front of the device,<wbr/> especially for
12797wide-angle cameras.<wbr/>
12798<a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> and <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> in CaptureResult will be used
12799to denote the coordinates of the auto-framed region.<wbr/>
12800Zoom and video stabilization controls are disabled when auto-framing is enabled.<wbr/> The 3A
12801regions must map the screen coordinates into the scaler crop returned from the capture
12802result instead of using the active array sensor.<wbr/></p>
12803            </td>
12804          </tr>
12805
12806          <tr class="entries_header">
12807            <th class="th_details" colspan="6">HAL Implementation Details</th>
12808          </tr>
12809          <tr class="entry_cont">
12810            <td class="entry_details" colspan="6">
12811              <p>While auto-framing is ON,<wbr/> the aspect ratio of the auto-framed region must match the
12812aspect ratio of the configured output stream.<wbr/>
12813When reporting CaptureResult,<wbr/> SCALER_<wbr/>CROP_<wbr/>REGION might not adequately describe the
12814actual sensor pixels.<wbr/> In this case,<wbr/> it is acceptable for the returned parameters to only
12815be an approximation of the image sensor region that is actually used.<wbr/>
12816When auto-framing is turned off,<wbr/> the transition should be immediate,<wbr/> with no panning or
12817zooming to transition to the settings requested by the app.<wbr/> When it is turned on,<wbr/> the
12818transition can be immediate or smooth.<wbr/></p>
12819            </td>
12820          </tr>
12821
12822          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12823           <!-- end of entry -->
12824
12825
12826          <tr class="entry" id="dynamic_android.control.autoframingState">
12827            <td class="entry_name
12828             " rowspan="3">
12829              android.<wbr/>control.<wbr/>autoframing<wbr/>State
12830            </td>
12831            <td class="entry_type">
12832                <span class="entry_type_name entry_type_name_enum">byte</span>
12833
12834              <span class="entry_type_visibility"> [public]</span>
12835
12836
12837              <span class="entry_type_hwlevel">[limited] </span>
12838
12839
12840
12841                <ul class="entry_type_enum">
12842                  <li>
12843                    <span class="entry_type_enum_name">INACTIVE (v3.9)</span>
12844                    <span class="entry_type_enum_notes"><p>Auto-framing is inactive.<wbr/></p></span>
12845                  </li>
12846                  <li>
12847                    <span class="entry_type_enum_name">FRAMING (v3.9)</span>
12848                    <span class="entry_type_enum_notes"><p>Auto-framing is in process - either zooming in,<wbr/> zooming out or pan is taking place.<wbr/></p></span>
12849                  </li>
12850                  <li>
12851                    <span class="entry_type_enum_name">CONVERGED (v3.9)</span>
12852                    <span class="entry_type_enum_notes"><p>Auto-framing has reached a stable state (frame/<wbr/>fov is not being adjusted).<wbr/> The state
12853may transition back to FRAMING if the scene changes.<wbr/></p></span>
12854                  </li>
12855                </ul>
12856
12857            </td> <!-- entry_type -->
12858
12859            <td class="entry_description">
12860              <p>Current state of auto-framing.<wbr/></p>
12861            </td>
12862
12863            <td class="entry_units">
12864            </td>
12865
12866            <td class="entry_range">
12867            </td>
12868
12869            <td class="entry_hal_version">
12870              <p>3.<wbr/>9</p>
12871            </td>
12872
12873            <td class="entry_tags">
12874            </td>
12875
12876          </tr>
12877          <tr class="entries_header">
12878            <th class="th_details" colspan="6">Details</th>
12879          </tr>
12880          <tr class="entry_cont">
12881            <td class="entry_details" colspan="6">
12882              <p>When the camera doesn't have auto-framing available (i.<wbr/>e
12883<code><a href="#static_android.control.autoframingAvailable">android.<wbr/>control.<wbr/>autoframing<wbr/>Available</a></code> == false) or it is not enabled (i.<wbr/>e
12884<code><a href="#controls_android.control.autoframing">android.<wbr/>control.<wbr/>autoframing</a></code> == OFF),<wbr/> the state will always be INACTIVE.<wbr/>
12885Other states indicate the current auto-framing state:</p>
12886<ul>
12887<li>When <code><a href="#controls_android.control.autoframing">android.<wbr/>control.<wbr/>autoframing</a></code> is set to ON,<wbr/> auto-framing will take
12888place.<wbr/> While the frame is aligning itself to center the object (doing things like
12889zooming in,<wbr/> zooming out or pan),<wbr/> the state will be FRAMING.<wbr/></li>
12890<li>When field of view is not being adjusted anymore and has reached a stable state,<wbr/> the
12891state will be CONVERGED.<wbr/></li>
12892</ul>
12893            </td>
12894          </tr>
12895
12896
12897          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12898           <!-- end of entry -->
12899
12900
12901          <tr class="entry" id="dynamic_android.control.lowLightBoostState">
12902            <td class="entry_name
12903             " rowspan="3">
12904              android.<wbr/>control.<wbr/>low<wbr/>Light<wbr/>Boost<wbr/>State
12905            </td>
12906            <td class="entry_type">
12907                <span class="entry_type_name entry_type_name_enum">byte</span>
12908
12909              <span class="entry_type_visibility"> [public]</span>
12910
12911
12912
12913
12914
12915                <ul class="entry_type_enum">
12916                  <li>
12917                    <span class="entry_type_enum_name">INACTIVE (v3.10)</span>
12918                    <span class="entry_type_enum_notes"><p>The AE mode 'ON_<wbr/>LOW_<wbr/>LIGHT_<wbr/>BOOST_<wbr/>BRIGHTNESS_<wbr/>PRIORITY' is enabled but not applied.<wbr/></p></span>
12919                  </li>
12920                  <li>
12921                    <span class="entry_type_enum_name">ACTIVE (v3.10)</span>
12922                    <span class="entry_type_enum_notes"><p>The AE mode 'ON_<wbr/>LOW_<wbr/>LIGHT_<wbr/>BOOST_<wbr/>BRIGHTNESS_<wbr/>PRIORITY' is enabled and applied.<wbr/></p></span>
12923                  </li>
12924                </ul>
12925
12926            </td> <!-- entry_type -->
12927
12928            <td class="entry_description">
12929              <p>Current state of the low light boost AE mode.<wbr/></p>
12930            </td>
12931
12932            <td class="entry_units">
12933            </td>
12934
12935            <td class="entry_range">
12936            </td>
12937
12938            <td class="entry_hal_version">
12939              <p>3.<wbr/>10</p>
12940            </td>
12941
12942            <td class="entry_tags">
12943            </td>
12944
12945          </tr>
12946          <tr class="entries_header">
12947            <th class="th_details" colspan="6">Details</th>
12948          </tr>
12949          <tr class="entry_cont">
12950            <td class="entry_details" colspan="6">
12951              <p>When low light boost is enabled by setting the AE mode to
12952'ON_<wbr/>LOW_<wbr/>LIGHT_<wbr/>BOOST_<wbr/>BRIGHTNESS_<wbr/>PRIORITY',<wbr/> it can dynamically apply a low light
12953boost when the light level threshold is exceeded.<wbr/></p>
12954<p>This state indicates when low light boost is 'ACTIVE' and applied.<wbr/> Similarly,<wbr/> it can
12955indicate when it is not being applied by returning 'INACTIVE'.<wbr/></p>
12956<p>The default value will always be 'INACTIVE'.<wbr/></p>
12957            </td>
12958          </tr>
12959
12960
12961          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12962           <!-- end of entry -->
12963
12964
12965          <tr class="entry" id="dynamic_android.control.zoomMethod">
12966            <td class="entry_name
12967             " rowspan="5">
12968              android.<wbr/>control.<wbr/>zoom<wbr/>Method
12969            </td>
12970            <td class="entry_type">
12971                <span class="entry_type_name entry_type_name_enum">byte</span>
12972
12973              <span class="entry_type_visibility"> [fwk_public]</span>
12974
12975
12976              <span class="entry_type_hwlevel">[limited] </span>
12977
12978
12979
12980                <ul class="entry_type_enum">
12981                  <li>
12982                    <span class="entry_type_enum_name">AUTO (v3.11)</span>
12983                    <span class="entry_type_enum_value">0</span>
12984                    <span class="entry_type_enum_notes"><p>The camera device automatically detects whether the application does zoom with
12985<a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> or <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a>,<wbr/> and in turn decides which
12986metadata tag reflects the effective zoom level.<wbr/></p></span>
12987                  </li>
12988                  <li>
12989                    <span class="entry_type_enum_name">ZOOM_RATIO (v3.11)</span>
12990                    <span class="entry_type_enum_value">1</span>
12991                    <span class="entry_type_enum_notes"><p>The application intends to control zoom via <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a>,<wbr/> and
12992the effective zoom level is reflected by <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> in capture results.<wbr/></p></span>
12993                  </li>
12994                </ul>
12995
12996            </td> <!-- entry_type -->
12997
12998            <td class="entry_description">
12999              <p>Whether the application uses <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> or <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a>
13000to control zoom levels.<wbr/></p>
13001            </td>
13002
13003            <td class="entry_units">
13004            </td>
13005
13006            <td class="entry_range">
13007            </td>
13008
13009            <td class="entry_hal_version">
13010              <p>3.<wbr/>11</p>
13011            </td>
13012
13013            <td class="entry_tags">
13014            </td>
13015
13016          </tr>
13017          <tr class="entries_header">
13018            <th class="th_details" colspan="6">Details</th>
13019          </tr>
13020          <tr class="entry_cont">
13021            <td class="entry_details" colspan="6">
13022              <p>If set to AUTO,<wbr/> the camera device detects which capture request key the application uses
13023to do zoom,<wbr/> <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> or <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a>.<wbr/> If
13024the application doesn't set android.<wbr/>scaler.<wbr/>zoom<wbr/>Ratio or sets it to 1.<wbr/>0 in the capture
13025request,<wbr/> the effective zoom level is reflected in <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> in capture
13026results.<wbr/> If <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> is set to values other than 1.<wbr/>0,<wbr/> the effective
13027zoom level is reflected in <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a>.<wbr/> AUTO is the default value
13028for this control,<wbr/> and also the behavior of the OS before Android version
13029<a href="https://developer.android.com/reference/android/os/Build.VERSION_CODES.html#BAKLAVA">BAKLAVA</a>.<wbr/></p>
13030<p>If set to ZOOM_<wbr/>RATIO,<wbr/> the application explicitly specifies zoom level be controlled
13031by <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a>,<wbr/> and the effective zoom level is reflected in
13032<a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> in capture results.<wbr/> This addresses an ambiguity with AUTO,<wbr/>
13033with which the camera device cannot know if the application is using cropRegion or
13034zoomRatio at 1.<wbr/>0x.<wbr/></p>
13035            </td>
13036          </tr>
13037
13038          <tr class="entries_header">
13039            <th class="th_details" colspan="6">HAL Implementation Details</th>
13040          </tr>
13041          <tr class="entry_cont">
13042            <td class="entry_details" colspan="6">
13043              <p>Do not use this key directly.<wbr/> It's for camera framework usage,<wbr/>
13044and not for HAL consumption.<wbr/></p>
13045            </td>
13046          </tr>
13047
13048          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13049           <!-- end of entry -->
13050
13051
13052          <tr class="entry" id="dynamic_android.control.aePriorityMode">
13053            <td class="entry_name
13054             " rowspan="5">
13055              android.<wbr/>control.<wbr/>ae<wbr/>Priority<wbr/>Mode
13056            </td>
13057            <td class="entry_type">
13058                <span class="entry_type_name entry_type_name_enum">byte</span>
13059
13060              <span class="entry_type_visibility"> [public]</span>
13061
13062
13063
13064
13065
13066                <ul class="entry_type_enum">
13067                  <li>
13068                    <span class="entry_type_enum_name">OFF (v3.11)</span>
13069                    <span class="entry_type_enum_notes"><p>Disable AE priority mode.<wbr/> This is the default value.<wbr/></p></span>
13070                  </li>
13071                  <li>
13072                    <span class="entry_type_enum_name">SENSOR_SENSITIVITY_PRIORITY (v3.11)</span>
13073                    <span class="entry_type_enum_notes"><p>The camera device's auto-exposure routine is active and
13074prioritizes the application-selected ISO (<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>).<wbr/></p>
13075<p>The application has control over <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> while
13076the application's values for <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> and
13077<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are ignored.<wbr/></p></span>
13078                  </li>
13079                  <li>
13080                    <span class="entry_type_enum_name">SENSOR_EXPOSURE_TIME_PRIORITY (v3.11)</span>
13081                    <span class="entry_type_enum_notes"><p>The camera device's auto-exposure routine is active and
13082prioritizes the application-selected exposure time
13083(<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>).<wbr/></p>
13084<p>The application has control over <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> while
13085the application's values for <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> and
13086<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are ignored.<wbr/></p></span>
13087                  </li>
13088                </ul>
13089
13090            </td> <!-- entry_type -->
13091
13092            <td class="entry_description">
13093              <p>Turn on AE priority mode.<wbr/></p>
13094            </td>
13095
13096            <td class="entry_units">
13097            </td>
13098
13099            <td class="entry_range">
13100            </td>
13101
13102            <td class="entry_hal_version">
13103              <p>3.<wbr/>11</p>
13104            </td>
13105
13106            <td class="entry_tags">
13107            </td>
13108
13109          </tr>
13110          <tr class="entries_header">
13111            <th class="th_details" colspan="6">Details</th>
13112          </tr>
13113          <tr class="entry_cont">
13114            <td class="entry_details" colspan="6">
13115              <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is
13116AUTO and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is set to one of its
13117ON modes,<wbr/> with the exception of ON_<wbr/>LOW_<wbr/>LIGHT_<wbr/>BOOST_<wbr/>BRIGHTNESS_<wbr/>PRIORITY.<wbr/></p>
13118<p>When a priority mode is enabled,<wbr/> the camera device's
13119auto-exposure routine will maintain the application's
13120selected parameters relevant to the priority mode while overriding
13121the remaining exposure parameters
13122(<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/> and
13123<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>).<wbr/> For example,<wbr/> if
13124SENSOR_<wbr/>SENSITIVITY_<wbr/>PRIORITY mode is enabled,<wbr/> the camera device will
13125maintain the application-selected <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>
13126while adjusting <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>
13127and <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>.<wbr/> The overridden fields for a
13128given capture will be available in its CaptureResult.<wbr/></p>
13129            </td>
13130          </tr>
13131
13132          <tr class="entries_header">
13133            <th class="th_details" colspan="6">HAL Implementation Details</th>
13134          </tr>
13135          <tr class="entry_cont">
13136            <td class="entry_details" colspan="6">
13137              <p>The total sensitivity applied for SENSOR_<wbr/>SENSITIVITY_<wbr/>PRIORITY should not be
13138adjusted by any HAL applied <a href="#controls_android.control.postRawSensitivityBoost">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost</a>.<wbr/></p>
13139            </td>
13140          </tr>
13141
13142          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13143           <!-- end of entry -->
13144
13145
13146
13147      <!-- end of kind -->
13148      </tbody>
13149
13150  <!-- end of section -->
13151  <tr><td colspan="7" id="section_demosaic" class="section">demosaic</td></tr>
13152
13153
13154      <tr><td colspan="7" class="kind">controls</td></tr>
13155
13156      <thead class="entries_header">
13157        <tr>
13158          <th class="th_name">Property Name</th>
13159          <th class="th_type">Type</th>
13160          <th class="th_description">Description</th>
13161          <th class="th_units">Units</th>
13162          <th class="th_range">Range</th>
13163          <th class="th_hal_version">Initial HIDL HAL version</th>
13164          <th class="th_tags">Tags</th>
13165        </tr>
13166      </thead>
13167
13168      <tbody>
13169
13170
13171
13172
13173
13174
13175
13176
13177
13178
13179          <tr class="entry" id="controls_android.demosaic.mode">
13180            <td class="entry_name
13181             " rowspan="1">
13182              android.<wbr/>demosaic.<wbr/>mode
13183            </td>
13184            <td class="entry_type">
13185                <span class="entry_type_name entry_type_name_enum">byte</span>
13186
13187              <span class="entry_type_visibility"> [system]</span>
13188
13189
13190
13191
13192
13193                <ul class="entry_type_enum">
13194                  <li>
13195                    <span class="entry_type_enum_name">FAST (v3.2)</span>
13196                    <span class="entry_type_enum_notes"><p>Minimal or no slowdown of frame rate compared to
13197Bayer RAW output.<wbr/></p></span>
13198                  </li>
13199                  <li>
13200                    <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
13201                    <span class="entry_type_enum_notes"><p>Improved processing quality but the frame rate might be slowed down
13202relative to raw output.<wbr/></p></span>
13203                  </li>
13204                </ul>
13205
13206            </td> <!-- entry_type -->
13207
13208            <td class="entry_description">
13209              <p>Controls the quality of the demosaicing
13210processing.<wbr/></p>
13211            </td>
13212
13213            <td class="entry_units">
13214            </td>
13215
13216            <td class="entry_range">
13217            </td>
13218
13219            <td class="entry_hal_version">
13220              <p>3.<wbr/>2</p>
13221            </td>
13222
13223            <td class="entry_tags">
13224              <ul class="entry_tags">
13225                  <li><a href="#tag_FUTURE">FUTURE</a></li>
13226              </ul>
13227            </td>
13228
13229          </tr>
13230
13231
13232          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13233           <!-- end of entry -->
13234
13235
13236
13237      <!-- end of kind -->
13238      </tbody>
13239
13240  <!-- end of section -->
13241  <tr><td colspan="7" id="section_edge" class="section">edge</td></tr>
13242
13243
13244      <tr><td colspan="7" class="kind">controls</td></tr>
13245
13246      <thead class="entries_header">
13247        <tr>
13248          <th class="th_name">Property Name</th>
13249          <th class="th_type">Type</th>
13250          <th class="th_description">Description</th>
13251          <th class="th_units">Units</th>
13252          <th class="th_range">Range</th>
13253          <th class="th_hal_version">Initial HIDL HAL version</th>
13254          <th class="th_tags">Tags</th>
13255        </tr>
13256      </thead>
13257
13258      <tbody>
13259
13260
13261
13262
13263
13264
13265
13266
13267
13268
13269          <tr class="entry" id="controls_android.edge.mode">
13270            <td class="entry_name
13271             " rowspan="5">
13272              android.<wbr/>edge.<wbr/>mode
13273            </td>
13274            <td class="entry_type">
13275                <span class="entry_type_name entry_type_name_enum">byte</span>
13276
13277              <span class="entry_type_visibility"> [public]</span>
13278
13279
13280              <span class="entry_type_hwlevel">[full] </span>
13281
13282
13283
13284                <ul class="entry_type_enum">
13285                  <li>
13286                    <span class="entry_type_enum_name">OFF (v3.2)</span>
13287                    <span class="entry_type_enum_notes"><p>No edge enhancement is applied.<wbr/></p></span>
13288                  </li>
13289                  <li>
13290                    <span class="entry_type_enum_name">FAST (v3.2)</span>
13291                    <span class="entry_type_enum_notes"><p>Apply edge enhancement at a quality level that does not slow down frame rate
13292relative to sensor output.<wbr/> It may be the same as OFF if edge enhancement will
13293slow down frame rate relative to sensor.<wbr/></p></span>
13294                  </li>
13295                  <li>
13296                    <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
13297                    <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>
13298                  </li>
13299                  <li>
13300                    <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span>
13301                    <span class="entry_type_enum_optional">[optional]</span>
13302                    <span class="entry_type_enum_notes"><p>Edge enhancement is applied at different
13303levels for different output streams,<wbr/> based on resolution.<wbr/> Streams at maximum recording
13304resolution (see <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">CameraDevice#createCaptureSession</a>)
13305or below have edge enhancement applied,<wbr/> while higher-resolution streams have no edge
13306enhancement applied.<wbr/> The level of edge enhancement for low-resolution streams is tuned
13307so that frame rate is not impacted,<wbr/> and the quality is equal to or better than FAST
13308(since it is only applied to lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p>
13309<p>This mode is intended to be used by applications operating in a zero-shutter-lag mode
13310with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures
13311high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is
13312produced via reprocessing when a user takes a picture.<wbr/>  For such a use case,<wbr/> the
13313high-resolution buffers must not have edge enhancement applied to maximize efficiency of
13314preview and to avoid double-applying enhancement when reprocessed,<wbr/> while low-resolution
13315buffers (used for recording or preview,<wbr/> generally) need edge enhancement applied for
13316reasonable preview quality.<wbr/></p>
13317<p>This mode is guaranteed to be supported by devices that support either the
13318YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities
13319(<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will
13320be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span>
13321                  </li>
13322                </ul>
13323
13324            </td> <!-- entry_type -->
13325
13326            <td class="entry_description">
13327              <p>Operation mode for edge
13328enhancement.<wbr/></p>
13329            </td>
13330
13331            <td class="entry_units">
13332            </td>
13333
13334            <td class="entry_range">
13335              <p><a href="#static_android.edge.availableEdgeModes">android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes</a></p>
13336            </td>
13337
13338            <td class="entry_hal_version">
13339              <p>3.<wbr/>2</p>
13340            </td>
13341
13342            <td class="entry_tags">
13343              <ul class="entry_tags">
13344                  <li><a href="#tag_V1">V1</a></li>
13345                  <li><a href="#tag_REPROC">REPROC</a></li>
13346              </ul>
13347            </td>
13348
13349          </tr>
13350          <tr class="entries_header">
13351            <th class="th_details" colspan="6">Details</th>
13352          </tr>
13353          <tr class="entry_cont">
13354            <td class="entry_details" colspan="6">
13355              <p>Edge enhancement improves sharpness and details in the captured image.<wbr/> OFF means
13356no enhancement will be applied by the camera device.<wbr/></p>
13357<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined enhancement
13358will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the
13359camera device will use the highest-quality enhancement algorithms,<wbr/>
13360even if it slows down capture rate.<wbr/> FAST means the camera device will
13361not slow down capture rate when applying edge enhancement.<wbr/> FAST may be the same as OFF if
13362edge enhancement will slow down capture rate.<wbr/> Every output stream will have a similar
13363amount of enhancement applied.<wbr/></p>
13364<p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular
13365buffer of high-resolution images during preview and reprocess image(s) from that buffer
13366into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies
13367edge enhancement to low-resolution streams (below maximum recording resolution) to
13368maximize preview quality,<wbr/> but does not apply edge enhancement to high-resolution streams,<wbr/>
13369since those will be reprocessed later if necessary.<wbr/></p>
13370<p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera
13371device will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV-domain edge enhancement,<wbr/> respectively.<wbr/>
13372The camera device may adjust its internal edge enhancement parameters for best
13373image 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>
13374            </td>
13375          </tr>
13376
13377          <tr class="entries_header">
13378            <th class="th_details" colspan="6">HAL Implementation Details</th>
13379          </tr>
13380          <tr class="entry_cont">
13381            <td class="entry_details" colspan="6">
13382              <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
13383adjust the internal edge enhancement reduction parameters appropriately to get the best
13384quality images.<wbr/></p>
13385            </td>
13386          </tr>
13387
13388          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13389           <!-- end of entry -->
13390
13391
13392          <tr class="entry" id="controls_android.edge.strength">
13393            <td class="entry_name
13394             " rowspan="1">
13395              android.<wbr/>edge.<wbr/>strength
13396            </td>
13397            <td class="entry_type">
13398                <span class="entry_type_name">byte</span>
13399
13400              <span class="entry_type_visibility"> [system]</span>
13401
13402
13403
13404
13405
13406
13407            </td> <!-- entry_type -->
13408
13409            <td class="entry_description">
13410              <p>Control the amount of edge enhancement
13411applied to the images</p>
13412            </td>
13413
13414            <td class="entry_units">
13415              1-10; 10 is maximum sharpening
13416            </td>
13417
13418            <td class="entry_range">
13419            </td>
13420
13421            <td class="entry_hal_version">
13422              <p>3.<wbr/>2</p>
13423            </td>
13424
13425            <td class="entry_tags">
13426              <ul class="entry_tags">
13427                  <li><a href="#tag_FUTURE">FUTURE</a></li>
13428              </ul>
13429            </td>
13430
13431          </tr>
13432
13433
13434          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13435           <!-- end of entry -->
13436
13437
13438
13439      <!-- end of kind -->
13440      </tbody>
13441      <tr><td colspan="7" class="kind">static</td></tr>
13442
13443      <thead class="entries_header">
13444        <tr>
13445          <th class="th_name">Property Name</th>
13446          <th class="th_type">Type</th>
13447          <th class="th_description">Description</th>
13448          <th class="th_units">Units</th>
13449          <th class="th_range">Range</th>
13450          <th class="th_hal_version">Initial HIDL HAL version</th>
13451          <th class="th_tags">Tags</th>
13452        </tr>
13453      </thead>
13454
13455      <tbody>
13456
13457
13458
13459
13460
13461
13462
13463
13464
13465
13466          <tr class="entry" id="static_android.edge.availableEdgeModes">
13467            <td class="entry_name
13468             " rowspan="5">
13469              android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes
13470            </td>
13471            <td class="entry_type">
13472                <span class="entry_type_name">byte</span>
13473                <span class="entry_type_container">x</span>
13474
13475                <span class="entry_type_array">
13476                  n
13477                </span>
13478              <span class="entry_type_visibility"> [public as enumList]</span>
13479
13480
13481              <span class="entry_type_hwlevel">[full] </span>
13482
13483
13484                <div class="entry_type_notes">list of enums</div>
13485
13486
13487            </td> <!-- entry_type -->
13488
13489            <td class="entry_description">
13490              <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
13491device.<wbr/></p>
13492            </td>
13493
13494            <td class="entry_units">
13495            </td>
13496
13497            <td class="entry_range">
13498              <p>Any value listed in <a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></p>
13499            </td>
13500
13501            <td class="entry_hal_version">
13502              <p>3.<wbr/>2</p>
13503            </td>
13504
13505            <td class="entry_tags">
13506              <ul class="entry_tags">
13507                  <li><a href="#tag_V1">V1</a></li>
13508                  <li><a href="#tag_REPROC">REPROC</a></li>
13509              </ul>
13510            </td>
13511
13512          </tr>
13513          <tr class="entries_header">
13514            <th class="th_details" colspan="6">Details</th>
13515          </tr>
13516          <tr class="entry_cont">
13517            <td class="entry_details" colspan="6">
13518              <p>Full-capability camera devices must always support OFF; camera devices that support
13519YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING will list ZERO_<wbr/>SHUTTER_<wbr/>LAG; all devices will
13520list FAST.<wbr/></p>
13521            </td>
13522          </tr>
13523
13524          <tr class="entries_header">
13525            <th class="th_details" colspan="6">HAL Implementation Details</th>
13526          </tr>
13527          <tr class="entry_cont">
13528            <td class="entry_details" colspan="6">
13529              <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if edge enhancement control is available
13530on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
13531That is,<wbr/> if the highest quality implementation on the camera device does not slow down
13532capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
13533            </td>
13534          </tr>
13535
13536          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13537           <!-- end of entry -->
13538
13539
13540
13541      <!-- end of kind -->
13542      </tbody>
13543      <tr><td colspan="7" class="kind">dynamic</td></tr>
13544
13545      <thead class="entries_header">
13546        <tr>
13547          <th class="th_name">Property Name</th>
13548          <th class="th_type">Type</th>
13549          <th class="th_description">Description</th>
13550          <th class="th_units">Units</th>
13551          <th class="th_range">Range</th>
13552          <th class="th_hal_version">Initial HIDL HAL version</th>
13553          <th class="th_tags">Tags</th>
13554        </tr>
13555      </thead>
13556
13557      <tbody>
13558
13559
13560
13561
13562
13563
13564
13565
13566
13567
13568          <tr class="entry" id="dynamic_android.edge.mode">
13569            <td class="entry_name
13570             " rowspan="5">
13571              android.<wbr/>edge.<wbr/>mode
13572            </td>
13573            <td class="entry_type">
13574                <span class="entry_type_name entry_type_name_enum">byte</span>
13575
13576              <span class="entry_type_visibility"> [public]</span>
13577
13578
13579              <span class="entry_type_hwlevel">[full] </span>
13580
13581
13582
13583                <ul class="entry_type_enum">
13584                  <li>
13585                    <span class="entry_type_enum_name">OFF (v3.2)</span>
13586                    <span class="entry_type_enum_notes"><p>No edge enhancement is applied.<wbr/></p></span>
13587                  </li>
13588                  <li>
13589                    <span class="entry_type_enum_name">FAST (v3.2)</span>
13590                    <span class="entry_type_enum_notes"><p>Apply edge enhancement at a quality level that does not slow down frame rate
13591relative to sensor output.<wbr/> It may be the same as OFF if edge enhancement will
13592slow down frame rate relative to sensor.<wbr/></p></span>
13593                  </li>
13594                  <li>
13595                    <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
13596                    <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>
13597                  </li>
13598                  <li>
13599                    <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span>
13600                    <span class="entry_type_enum_optional">[optional]</span>
13601                    <span class="entry_type_enum_notes"><p>Edge enhancement is applied at different
13602levels for different output streams,<wbr/> based on resolution.<wbr/> Streams at maximum recording
13603resolution (see <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">CameraDevice#createCaptureSession</a>)
13604or below have edge enhancement applied,<wbr/> while higher-resolution streams have no edge
13605enhancement applied.<wbr/> The level of edge enhancement for low-resolution streams is tuned
13606so that frame rate is not impacted,<wbr/> and the quality is equal to or better than FAST
13607(since it is only applied to lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p>
13608<p>This mode is intended to be used by applications operating in a zero-shutter-lag mode
13609with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures
13610high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is
13611produced via reprocessing when a user takes a picture.<wbr/>  For such a use case,<wbr/> the
13612high-resolution buffers must not have edge enhancement applied to maximize efficiency of
13613preview and to avoid double-applying enhancement when reprocessed,<wbr/> while low-resolution
13614buffers (used for recording or preview,<wbr/> generally) need edge enhancement applied for
13615reasonable preview quality.<wbr/></p>
13616<p>This mode is guaranteed to be supported by devices that support either the
13617YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities
13618(<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will
13619be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span>
13620                  </li>
13621                </ul>
13622
13623            </td> <!-- entry_type -->
13624
13625            <td class="entry_description">
13626              <p>Operation mode for edge
13627enhancement.<wbr/></p>
13628            </td>
13629
13630            <td class="entry_units">
13631            </td>
13632
13633            <td class="entry_range">
13634              <p><a href="#static_android.edge.availableEdgeModes">android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes</a></p>
13635            </td>
13636
13637            <td class="entry_hal_version">
13638              <p>3.<wbr/>2</p>
13639            </td>
13640
13641            <td class="entry_tags">
13642              <ul class="entry_tags">
13643                  <li><a href="#tag_V1">V1</a></li>
13644                  <li><a href="#tag_REPROC">REPROC</a></li>
13645              </ul>
13646            </td>
13647
13648          </tr>
13649          <tr class="entries_header">
13650            <th class="th_details" colspan="6">Details</th>
13651          </tr>
13652          <tr class="entry_cont">
13653            <td class="entry_details" colspan="6">
13654              <p>Edge enhancement improves sharpness and details in the captured image.<wbr/> OFF means
13655no enhancement will be applied by the camera device.<wbr/></p>
13656<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined enhancement
13657will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the
13658camera device will use the highest-quality enhancement algorithms,<wbr/>
13659even if it slows down capture rate.<wbr/> FAST means the camera device will
13660not slow down capture rate when applying edge enhancement.<wbr/> FAST may be the same as OFF if
13661edge enhancement will slow down capture rate.<wbr/> Every output stream will have a similar
13662amount of enhancement applied.<wbr/></p>
13663<p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular
13664buffer of high-resolution images during preview and reprocess image(s) from that buffer
13665into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies
13666edge enhancement to low-resolution streams (below maximum recording resolution) to
13667maximize preview quality,<wbr/> but does not apply edge enhancement to high-resolution streams,<wbr/>
13668since those will be reprocessed later if necessary.<wbr/></p>
13669<p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera
13670device will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV-domain edge enhancement,<wbr/> respectively.<wbr/>
13671The camera device may adjust its internal edge enhancement parameters for best
13672image 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>
13673            </td>
13674          </tr>
13675
13676          <tr class="entries_header">
13677            <th class="th_details" colspan="6">HAL Implementation Details</th>
13678          </tr>
13679          <tr class="entry_cont">
13680            <td class="entry_details" colspan="6">
13681              <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
13682adjust the internal edge enhancement reduction parameters appropriately to get the best
13683quality images.<wbr/></p>
13684            </td>
13685          </tr>
13686
13687          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13688           <!-- end of entry -->
13689
13690
13691
13692      <!-- end of kind -->
13693      </tbody>
13694
13695  <!-- end of section -->
13696  <tr><td colspan="7" id="section_flash" class="section">flash</td></tr>
13697
13698
13699      <tr><td colspan="7" class="kind">controls</td></tr>
13700
13701      <thead class="entries_header">
13702        <tr>
13703          <th class="th_name">Property Name</th>
13704          <th class="th_type">Type</th>
13705          <th class="th_description">Description</th>
13706          <th class="th_units">Units</th>
13707          <th class="th_range">Range</th>
13708          <th class="th_hal_version">Initial HIDL HAL version</th>
13709          <th class="th_tags">Tags</th>
13710        </tr>
13711      </thead>
13712
13713      <tbody>
13714
13715
13716
13717
13718
13719
13720
13721
13722
13723
13724          <tr class="entry" id="controls_android.flash.firingPower">
13725            <td class="entry_name
13726             " rowspan="3">
13727              android.<wbr/>flash.<wbr/>firing<wbr/>Power
13728            </td>
13729            <td class="entry_type">
13730                <span class="entry_type_name">byte</span>
13731
13732              <span class="entry_type_visibility"> [system]</span>
13733
13734
13735
13736
13737
13738
13739            </td> <!-- entry_type -->
13740
13741            <td class="entry_description">
13742              <p>Power for flash firing/<wbr/>torch</p>
13743            </td>
13744
13745            <td class="entry_units">
13746              10 is max power; 0 is no flash.<wbr/> Linear
13747            </td>
13748
13749            <td class="entry_range">
13750              <p>0 - 10</p>
13751            </td>
13752
13753            <td class="entry_hal_version">
13754              <p>3.<wbr/>2</p>
13755            </td>
13756
13757            <td class="entry_tags">
13758              <ul class="entry_tags">
13759                  <li><a href="#tag_FUTURE">FUTURE</a></li>
13760              </ul>
13761            </td>
13762
13763          </tr>
13764          <tr class="entries_header">
13765            <th class="th_details" colspan="6">Details</th>
13766          </tr>
13767          <tr class="entry_cont">
13768            <td class="entry_details" colspan="6">
13769              <p>Power for snapshot may use a different scale than
13770for torch mode.<wbr/> Only one entry for torch mode will be
13771used</p>
13772            </td>
13773          </tr>
13774
13775
13776          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13777           <!-- end of entry -->
13778
13779
13780          <tr class="entry" id="controls_android.flash.firingTime">
13781            <td class="entry_name
13782             " rowspan="3">
13783              android.<wbr/>flash.<wbr/>firing<wbr/>Time
13784            </td>
13785            <td class="entry_type">
13786                <span class="entry_type_name">int64</span>
13787
13788              <span class="entry_type_visibility"> [system]</span>
13789
13790
13791
13792
13793
13794
13795            </td> <!-- entry_type -->
13796
13797            <td class="entry_description">
13798              <p>Firing time of flash relative to start of
13799exposure</p>
13800            </td>
13801
13802            <td class="entry_units">
13803              nanoseconds
13804            </td>
13805
13806            <td class="entry_range">
13807              <p>0-(exposure time-flash duration)</p>
13808            </td>
13809
13810            <td class="entry_hal_version">
13811              <p>3.<wbr/>2</p>
13812            </td>
13813
13814            <td class="entry_tags">
13815              <ul class="entry_tags">
13816                  <li><a href="#tag_FUTURE">FUTURE</a></li>
13817              </ul>
13818            </td>
13819
13820          </tr>
13821          <tr class="entries_header">
13822            <th class="th_details" colspan="6">Details</th>
13823          </tr>
13824          <tr class="entry_cont">
13825            <td class="entry_details" colspan="6">
13826              <p>Clamped to (0,<wbr/> exposure time - flash
13827duration).<wbr/></p>
13828            </td>
13829          </tr>
13830
13831
13832          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13833           <!-- end of entry -->
13834
13835
13836          <tr class="entry" id="controls_android.flash.mode">
13837            <td class="entry_name
13838             " rowspan="3">
13839              android.<wbr/>flash.<wbr/>mode
13840            </td>
13841            <td class="entry_type">
13842                <span class="entry_type_name entry_type_name_enum">byte</span>
13843
13844              <span class="entry_type_visibility"> [public]</span>
13845
13846
13847              <span class="entry_type_hwlevel">[legacy] </span>
13848
13849
13850
13851                <ul class="entry_type_enum">
13852                  <li>
13853                    <span class="entry_type_enum_name">OFF (v3.2)</span>
13854                    <span class="entry_type_enum_notes"><p>Do not fire the flash for this capture.<wbr/></p></span>
13855                  </li>
13856                  <li>
13857                    <span class="entry_type_enum_name">SINGLE (v3.2)</span>
13858                    <span class="entry_type_enum_notes"><p>If the flash is available and charged,<wbr/> fire flash
13859for this capture.<wbr/></p></span>
13860                  </li>
13861                  <li>
13862                    <span class="entry_type_enum_name">TORCH (v3.2)</span>
13863                    <span class="entry_type_enum_notes"><p>Transition flash to continuously on.<wbr/></p></span>
13864                  </li>
13865                </ul>
13866
13867            </td> <!-- entry_type -->
13868
13869            <td class="entry_description">
13870              <p>The desired mode for for the camera device's flash control.<wbr/></p>
13871            </td>
13872
13873            <td class="entry_units">
13874            </td>
13875
13876            <td class="entry_range">
13877            </td>
13878
13879            <td class="entry_hal_version">
13880              <p>3.<wbr/>2</p>
13881            </td>
13882
13883            <td class="entry_tags">
13884              <ul class="entry_tags">
13885                  <li><a href="#tag_BC">BC</a></li>
13886              </ul>
13887            </td>
13888
13889          </tr>
13890          <tr class="entries_header">
13891            <th class="th_details" colspan="6">Details</th>
13892          </tr>
13893          <tr class="entry_cont">
13894            <td class="entry_details" colspan="6">
13895              <p>This control is only effective when flash unit is available
13896(<code><a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> == true</code>).<wbr/></p>
13897<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/>
13898Otherwise,<wbr/> the camera device auto-exposure related flash control (ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/>
13899ON_<wbr/>ALWAYS_<wbr/>FLASH,<wbr/> or ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE) will override this control.<wbr/></p>
13900<p>When set to OFF,<wbr/> the camera device will not fire flash for this capture.<wbr/></p>
13901<p>When set to SINGLE,<wbr/> the camera device will fire flash regardless of the camera
13902device's auto-exposure routine's result.<wbr/> When used in still capture case,<wbr/> this
13903control should be used along with auto-exposure (AE) precapture metering sequence
13904(<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>
13905<p>When set to TORCH,<wbr/> the flash will be on continuously.<wbr/> This mode can be used
13906for use cases such as preview,<wbr/> auto-focus assist,<wbr/> still capture,<wbr/> or video recording.<wbr/></p>
13907<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>
13908            </td>
13909          </tr>
13910
13911
13912          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13913           <!-- end of entry -->
13914
13915
13916          <tr class="entry" id="controls_android.flash.strengthLevel">
13917            <td class="entry_name
13918             " rowspan="3">
13919              android.<wbr/>flash.<wbr/>strength<wbr/>Level
13920            </td>
13921            <td class="entry_type">
13922                <span class="entry_type_name">int32</span>
13923
13924              <span class="entry_type_visibility"> [public]</span>
13925
13926
13927              <span class="entry_type_hwlevel">[legacy] </span>
13928
13929
13930
13931
13932            </td> <!-- entry_type -->
13933
13934            <td class="entry_description">
13935              <p>Flash strength level to be used when manual flash control is active.<wbr/></p>
13936            </td>
13937
13938            <td class="entry_units">
13939            </td>
13940
13941            <td class="entry_range">
13942              <p><code>[1-<a href="#static_android.flash.torchStrengthMaxLevel">android.<wbr/>flash.<wbr/>torch<wbr/>Strength<wbr/>Max<wbr/>Level</a>]</code> when the <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> is
13943set to TORCH;
13944<code>[1-<a href="#static_android.flash.singleStrengthMaxLevel">android.<wbr/>flash.<wbr/>single<wbr/>Strength<wbr/>Max<wbr/>Level</a>]</code> when the <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> is
13945set to SINGLE</p>
13946            </td>
13947
13948            <td class="entry_hal_version">
13949              <p>3.<wbr/>10</p>
13950            </td>
13951
13952            <td class="entry_tags">
13953            </td>
13954
13955          </tr>
13956          <tr class="entries_header">
13957            <th class="th_details" colspan="6">Details</th>
13958          </tr>
13959          <tr class="entry_cont">
13960            <td class="entry_details" colspan="6">
13961              <p>Flash strength level to use in capture mode i.<wbr/>e.<wbr/> when the applications control
13962flash with either <code>SINGLE</code> or <code>TORCH</code> mode.<wbr/></p>
13963<p>Use <a href="#static_android.flash.singleStrengthMaxLevel">android.<wbr/>flash.<wbr/>single<wbr/>Strength<wbr/>Max<wbr/>Level</a> and
13964<a href="#static_android.flash.torchStrengthMaxLevel">android.<wbr/>flash.<wbr/>torch<wbr/>Strength<wbr/>Max<wbr/>Level</a> to check whether the device supports
13965flash strength control or not.<wbr/>
13966If the values of <a href="#static_android.flash.singleStrengthMaxLevel">android.<wbr/>flash.<wbr/>single<wbr/>Strength<wbr/>Max<wbr/>Level</a> and
13967<a href="#static_android.flash.torchStrengthMaxLevel">android.<wbr/>flash.<wbr/>torch<wbr/>Strength<wbr/>Max<wbr/>Level</a> are greater than 1,<wbr/>
13968then the device supports manual flash strength control.<wbr/></p>
13969<p>If the <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> <code>==</code> <code>TORCH</code> the value must be &gt;= 1
13970and &lt;= <a href="#static_android.flash.torchStrengthMaxLevel">android.<wbr/>flash.<wbr/>torch<wbr/>Strength<wbr/>Max<wbr/>Level</a>.<wbr/>
13971If the application doesn't set the key and
13972<a href="#static_android.flash.torchStrengthMaxLevel">android.<wbr/>flash.<wbr/>torch<wbr/>Strength<wbr/>Max<wbr/>Level</a> &gt; 1,<wbr/>
13973then the flash will be fired at the default level set by HAL in
13974<a href="#static_android.flash.torchStrengthDefaultLevel">android.<wbr/>flash.<wbr/>torch<wbr/>Strength<wbr/>Default<wbr/>Level</a>.<wbr/>
13975If the <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> <code>==</code> <code>SINGLE</code>,<wbr/> then the value must be &gt;= 1
13976and &lt;= <a href="#static_android.flash.singleStrengthMaxLevel">android.<wbr/>flash.<wbr/>single<wbr/>Strength<wbr/>Max<wbr/>Level</a>.<wbr/>
13977If the application does not set this key and
13978<a href="#static_android.flash.singleStrengthMaxLevel">android.<wbr/>flash.<wbr/>single<wbr/>Strength<wbr/>Max<wbr/>Level</a> &gt; 1,<wbr/>
13979then the flash will be fired at the default level set by HAL
13980in <a href="#static_android.flash.singleStrengthDefaultLevel">android.<wbr/>flash.<wbr/>single<wbr/>Strength<wbr/>Default<wbr/>Level</a>.<wbr/>
13981If <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is set to any of <code>ON_<wbr/>AUTO_<wbr/>FLASH</code>,<wbr/> <code>ON_<wbr/>ALWAYS_<wbr/>FLASH</code>,<wbr/>
13982<code>ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE</code>,<wbr/> <code>ON_<wbr/>EXTERNAL_<wbr/>FLASH</code> values,<wbr/> then the strengthLevel will be ignored.<wbr/></p>
13983<p>When AE mode is ON and flash mode is TORCH or SINGLE,<wbr/> the application should make sure
13984the AE mode,<wbr/> flash mode,<wbr/> and flash strength level remain the same between precapture
13985trigger request and final capture request.<wbr/> The flash strength level being set during
13986precapture sequence is used by the camera device as a reference.<wbr/> The actual strength
13987may be less,<wbr/> and the auto-exposure routine makes sure proper conversions of sensor
13988exposure time and sensitivities between precapture and final capture for the specified
13989strength level.<wbr/></p>
13990            </td>
13991          </tr>
13992
13993
13994          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13995           <!-- end of entry -->
13996
13997
13998
13999      <!-- end of kind -->
14000      </tbody>
14001      <tr><td colspan="7" class="kind">static</td></tr>
14002
14003      <thead class="entries_header">
14004        <tr>
14005          <th class="th_name">Property Name</th>
14006          <th class="th_type">Type</th>
14007          <th class="th_description">Description</th>
14008          <th class="th_units">Units</th>
14009          <th class="th_range">Range</th>
14010          <th class="th_hal_version">Initial HIDL HAL version</th>
14011          <th class="th_tags">Tags</th>
14012        </tr>
14013      </thead>
14014
14015      <tbody>
14016
14017
14018
14019
14020
14021
14022
14023
14024
14025
14026
14027
14028          <tr class="entry" id="static_android.flash.info.available">
14029            <td class="entry_name
14030             " rowspan="3">
14031              android.<wbr/>flash.<wbr/>info.<wbr/>available
14032            </td>
14033            <td class="entry_type">
14034                <span class="entry_type_name entry_type_name_enum">byte</span>
14035
14036              <span class="entry_type_visibility"> [public as boolean]</span>
14037
14038
14039              <span class="entry_type_hwlevel">[legacy] </span>
14040
14041
14042
14043                <ul class="entry_type_enum">
14044                  <li>
14045                    <span class="entry_type_enum_name">FALSE (v3.2)</span>
14046                  </li>
14047                  <li>
14048                    <span class="entry_type_enum_name">TRUE (v3.2)</span>
14049                  </li>
14050                </ul>
14051
14052            </td> <!-- entry_type -->
14053
14054            <td class="entry_description">
14055              <p>Whether this camera device has a
14056flash unit.<wbr/></p>
14057            </td>
14058
14059            <td class="entry_units">
14060            </td>
14061
14062            <td class="entry_range">
14063            </td>
14064
14065            <td class="entry_hal_version">
14066              <p>3.<wbr/>2</p>
14067            </td>
14068
14069            <td class="entry_tags">
14070              <ul class="entry_tags">
14071                  <li><a href="#tag_BC">BC</a></li>
14072              </ul>
14073            </td>
14074
14075          </tr>
14076          <tr class="entries_header">
14077            <th class="th_details" colspan="6">Details</th>
14078          </tr>
14079          <tr class="entry_cont">
14080            <td class="entry_details" colspan="6">
14081              <p>Will be <code>false</code> if no flash is available.<wbr/></p>
14082<p>If there is no flash unit,<wbr/> none of the flash controls do
14083anything.<wbr/></p>
14084            </td>
14085          </tr>
14086
14087
14088          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14089           <!-- end of entry -->
14090
14091
14092          <tr class="entry" id="static_android.flash.info.chargeDuration">
14093            <td class="entry_name
14094             " rowspan="3">
14095              android.<wbr/>flash.<wbr/>info.<wbr/>charge<wbr/>Duration
14096            </td>
14097            <td class="entry_type">
14098                <span class="entry_type_name">int64</span>
14099
14100              <span class="entry_type_visibility"> [system]</span>
14101
14102
14103
14104
14105
14106
14107            </td> <!-- entry_type -->
14108
14109            <td class="entry_description">
14110              <p>Time taken before flash can fire
14111again</p>
14112            </td>
14113
14114            <td class="entry_units">
14115              nanoseconds
14116            </td>
14117
14118            <td class="entry_range">
14119              <p>0-1e9</p>
14120            </td>
14121
14122            <td class="entry_hal_version">
14123              <p>3.<wbr/>2</p>
14124            </td>
14125
14126            <td class="entry_tags">
14127              <ul class="entry_tags">
14128                  <li><a href="#tag_FUTURE">FUTURE</a></li>
14129              </ul>
14130            </td>
14131
14132          </tr>
14133          <tr class="entries_header">
14134            <th class="th_details" colspan="6">Details</th>
14135          </tr>
14136          <tr class="entry_cont">
14137            <td class="entry_details" colspan="6">
14138              <p>1 second too long/<wbr/>too short for recharge? Should
14139this be power-dependent?</p>
14140            </td>
14141          </tr>
14142
14143
14144          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14145           <!-- end of entry -->
14146
14147
14148          <tr class="entry" id="static_android.flash.info.strengthMaximumLevel">
14149            <td class="entry_name
14150             " rowspan="3">
14151              android.<wbr/>flash.<wbr/>info.<wbr/>strength<wbr/>Maximum<wbr/>Level
14152            </td>
14153            <td class="entry_type">
14154                <span class="entry_type_name">int32</span>
14155
14156              <span class="entry_type_visibility"> [public]</span>
14157
14158
14159
14160
14161
14162
14163            </td> <!-- entry_type -->
14164
14165            <td class="entry_description">
14166              <p>Maximum flashlight brightness level.<wbr/></p>
14167            </td>
14168
14169            <td class="entry_units">
14170            </td>
14171
14172            <td class="entry_range">
14173            </td>
14174
14175            <td class="entry_hal_version">
14176              <p>3.<wbr/>8</p>
14177            </td>
14178
14179            <td class="entry_tags">
14180            </td>
14181
14182          </tr>
14183          <tr class="entries_header">
14184            <th class="th_details" colspan="6">Details</th>
14185          </tr>
14186          <tr class="entry_cont">
14187            <td class="entry_details" colspan="6">
14188              <p>If this value is greater than 1,<wbr/> then the device supports controlling the
14189flashlight brightness level via
14190<a href="https://developer.android.com/reference/android/hardware/camera2/CameraManager.html#turnOnTorchWithStrengthLevel">CameraManager#turnOnTorchWithStrengthLevel</a>.<wbr/>
14191If this value is equal to 1,<wbr/> flashlight brightness control is not supported.<wbr/>
14192The value for this key will be null for devices with no flash unit.<wbr/></p>
14193<p>The maximum value is guaranteed to be safe to use for an indefinite duration in
14194terms of device flashlight lifespan,<wbr/> but may be too bright for comfort for many
14195use cases.<wbr/> Use the default torch brightness value to avoid problems with an
14196over-bright flashlight.<wbr/></p>
14197            </td>
14198          </tr>
14199
14200
14201          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14202           <!-- end of entry -->
14203
14204
14205          <tr class="entry" id="static_android.flash.info.strengthDefaultLevel">
14206            <td class="entry_name
14207             " rowspan="3">
14208              android.<wbr/>flash.<wbr/>info.<wbr/>strength<wbr/>Default<wbr/>Level
14209            </td>
14210            <td class="entry_type">
14211                <span class="entry_type_name">int32</span>
14212
14213              <span class="entry_type_visibility"> [public]</span>
14214
14215
14216
14217
14218
14219
14220            </td> <!-- entry_type -->
14221
14222            <td class="entry_description">
14223              <p>Default flashlight brightness level to be set via
14224<a href="https://developer.android.com/reference/android/hardware/camera2/CameraManager.html#turnOnTorchWithStrengthLevel">CameraManager#turnOnTorchWithStrengthLevel</a>.<wbr/></p>
14225            </td>
14226
14227            <td class="entry_units">
14228            </td>
14229
14230            <td class="entry_range">
14231            </td>
14232
14233            <td class="entry_hal_version">
14234              <p>3.<wbr/>8</p>
14235            </td>
14236
14237            <td class="entry_tags">
14238            </td>
14239
14240          </tr>
14241          <tr class="entries_header">
14242            <th class="th_details" colspan="6">Details</th>
14243          </tr>
14244          <tr class="entry_cont">
14245            <td class="entry_details" colspan="6">
14246              <p>If flash unit is available this will be greater than or equal to 1 and less
14247or equal to <code><a href="#static_android.flash.info.strengthMaximumLevel">android.<wbr/>flash.<wbr/>info.<wbr/>strength<wbr/>Maximum<wbr/>Level</a></code>.<wbr/></p>
14248<p>Setting flashlight brightness above the default level
14249(i.<wbr/>e.<wbr/><code><a href="#static_android.flash.info.strengthDefaultLevel">android.<wbr/>flash.<wbr/>info.<wbr/>strength<wbr/>Default<wbr/>Level</a></code>) may make the device more
14250likely to reach thermal throttling conditions and slow down,<wbr/> or drain the
14251battery quicker than normal.<wbr/> To minimize such issues,<wbr/> it is recommended to
14252start the flashlight at this default brightness until a user explicitly requests
14253a brighter level.<wbr/>
14254Note that the value for this key will be null for devices with no flash unit.<wbr/>
14255The default level should always be &gt; 0.<wbr/></p>
14256            </td>
14257          </tr>
14258
14259
14260          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14261           <!-- end of entry -->
14262
14263
14264
14265
14266
14267          <tr class="entry" id="static_android.flash.colorTemperature">
14268            <td class="entry_name
14269             " rowspan="1">
14270              android.<wbr/>flash.<wbr/>color<wbr/>Temperature
14271            </td>
14272            <td class="entry_type">
14273                <span class="entry_type_name">byte</span>
14274
14275              <span class="entry_type_visibility"> [system]</span>
14276
14277
14278
14279
14280
14281
14282            </td> <!-- entry_type -->
14283
14284            <td class="entry_description">
14285              <p>The x,<wbr/>y whitepoint of the
14286flash</p>
14287            </td>
14288
14289            <td class="entry_units">
14290              pair of floats
14291            </td>
14292
14293            <td class="entry_range">
14294              <p>0-1 for both</p>
14295            </td>
14296
14297            <td class="entry_hal_version">
14298              <p>3.<wbr/>2</p>
14299            </td>
14300
14301            <td class="entry_tags">
14302              <ul class="entry_tags">
14303                  <li><a href="#tag_FUTURE">FUTURE</a></li>
14304              </ul>
14305            </td>
14306
14307          </tr>
14308
14309
14310          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14311           <!-- end of entry -->
14312
14313
14314          <tr class="entry" id="static_android.flash.maxEnergy">
14315            <td class="entry_name
14316             " rowspan="1">
14317              android.<wbr/>flash.<wbr/>max<wbr/>Energy
14318            </td>
14319            <td class="entry_type">
14320                <span class="entry_type_name">byte</span>
14321
14322              <span class="entry_type_visibility"> [system]</span>
14323
14324
14325
14326
14327
14328
14329            </td> <!-- entry_type -->
14330
14331            <td class="entry_description">
14332              <p>Max energy output of the flash for a full
14333power single flash</p>
14334            </td>
14335
14336            <td class="entry_units">
14337              lumen-seconds
14338            </td>
14339
14340            <td class="entry_range">
14341              <p>&gt;= 0</p>
14342            </td>
14343
14344            <td class="entry_hal_version">
14345              <p>3.<wbr/>2</p>
14346            </td>
14347
14348            <td class="entry_tags">
14349              <ul class="entry_tags">
14350                  <li><a href="#tag_FUTURE">FUTURE</a></li>
14351              </ul>
14352            </td>
14353
14354          </tr>
14355
14356
14357          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14358           <!-- end of entry -->
14359
14360
14361          <tr class="entry" id="static_android.flash.singleStrengthMaxLevel">
14362            <td class="entry_name
14363             " rowspan="3">
14364              android.<wbr/>flash.<wbr/>single<wbr/>Strength<wbr/>Max<wbr/>Level
14365            </td>
14366            <td class="entry_type">
14367                <span class="entry_type_name">int32</span>
14368
14369              <span class="entry_type_visibility"> [public]</span>
14370
14371
14372              <span class="entry_type_hwlevel">[legacy] </span>
14373
14374
14375
14376
14377            </td> <!-- entry_type -->
14378
14379            <td class="entry_description">
14380              <p>Maximum flash brightness level for manual flash control in <code>SINGLE</code> mode.<wbr/></p>
14381            </td>
14382
14383            <td class="entry_units">
14384            </td>
14385
14386            <td class="entry_range">
14387            </td>
14388
14389            <td class="entry_hal_version">
14390              <p>3.<wbr/>10</p>
14391            </td>
14392
14393            <td class="entry_tags">
14394            </td>
14395
14396          </tr>
14397          <tr class="entries_header">
14398            <th class="th_details" colspan="6">Details</th>
14399          </tr>
14400          <tr class="entry_cont">
14401            <td class="entry_details" colspan="6">
14402              <p>Maximum flash brightness level in camera capture mode and
14403<a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> set to <code>SINGLE</code>.<wbr/>
14404Value will be &gt; 1 if the manual flash strength control feature is supported,<wbr/>
14405otherwise the value will be equal to 1.<wbr/>
14406Note that this level is just a number of supported levels (the granularity of control).<wbr/>
14407There is no actual physical power units tied to this level.<wbr/></p>
14408            </td>
14409          </tr>
14410
14411
14412          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14413           <!-- end of entry -->
14414
14415
14416          <tr class="entry" id="static_android.flash.singleStrengthDefaultLevel">
14417            <td class="entry_name
14418             " rowspan="3">
14419              android.<wbr/>flash.<wbr/>single<wbr/>Strength<wbr/>Default<wbr/>Level
14420            </td>
14421            <td class="entry_type">
14422                <span class="entry_type_name">int32</span>
14423
14424              <span class="entry_type_visibility"> [public]</span>
14425
14426
14427              <span class="entry_type_hwlevel">[legacy] </span>
14428
14429
14430
14431
14432            </td> <!-- entry_type -->
14433
14434            <td class="entry_description">
14435              <p>Default flash brightness level for manual flash control in <code>SINGLE</code> mode.<wbr/></p>
14436            </td>
14437
14438            <td class="entry_units">
14439            </td>
14440
14441            <td class="entry_range">
14442            </td>
14443
14444            <td class="entry_hal_version">
14445              <p>3.<wbr/>10</p>
14446            </td>
14447
14448            <td class="entry_tags">
14449            </td>
14450
14451          </tr>
14452          <tr class="entries_header">
14453            <th class="th_details" colspan="6">Details</th>
14454          </tr>
14455          <tr class="entry_cont">
14456            <td class="entry_details" colspan="6">
14457              <p>If flash unit is available this will be greater than or equal to 1 and less
14458or equal to <a href="#static_android.flash.singleStrengthMaxLevel">android.<wbr/>flash.<wbr/>single<wbr/>Strength<wbr/>Max<wbr/>Level</a>.<wbr/>
14459Note for devices that do not support the manual flash strength control
14460feature,<wbr/> this level will always be equal to 1.<wbr/></p>
14461            </td>
14462          </tr>
14463
14464
14465          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14466           <!-- end of entry -->
14467
14468
14469          <tr class="entry" id="static_android.flash.torchStrengthMaxLevel">
14470            <td class="entry_name
14471             " rowspan="3">
14472              android.<wbr/>flash.<wbr/>torch<wbr/>Strength<wbr/>Max<wbr/>Level
14473            </td>
14474            <td class="entry_type">
14475                <span class="entry_type_name">int32</span>
14476
14477              <span class="entry_type_visibility"> [public]</span>
14478
14479
14480              <span class="entry_type_hwlevel">[legacy] </span>
14481
14482
14483
14484
14485            </td> <!-- entry_type -->
14486
14487            <td class="entry_description">
14488              <p>Maximum flash brightness level for manual flash control in <code>TORCH</code> mode</p>
14489            </td>
14490
14491            <td class="entry_units">
14492            </td>
14493
14494            <td class="entry_range">
14495            </td>
14496
14497            <td class="entry_hal_version">
14498              <p>3.<wbr/>10</p>
14499            </td>
14500
14501            <td class="entry_tags">
14502            </td>
14503
14504          </tr>
14505          <tr class="entries_header">
14506            <th class="th_details" colspan="6">Details</th>
14507          </tr>
14508          <tr class="entry_cont">
14509            <td class="entry_details" colspan="6">
14510              <p>Maximum flash brightness level in camera capture mode and
14511<a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> set to <code>TORCH</code>.<wbr/>
14512Value will be &gt; 1 if the manual flash strength control feature is supported,<wbr/>
14513otherwise the value will be equal to 1.<wbr/></p>
14514<p>Note that this level is just a number of supported levels(the granularity of control).<wbr/>
14515There is no actual physical power units tied to this level.<wbr/>
14516There is no relation between <a href="#static_android.flash.torchStrengthMaxLevel">android.<wbr/>flash.<wbr/>torch<wbr/>Strength<wbr/>Max<wbr/>Level</a> and
14517<a href="#static_android.flash.singleStrengthMaxLevel">android.<wbr/>flash.<wbr/>single<wbr/>Strength<wbr/>Max<wbr/>Level</a> i.<wbr/>e.<wbr/> the ratio of
14518<a href="#static_android.flash.torchStrengthMaxLevel">android.<wbr/>flash.<wbr/>torch<wbr/>Strength<wbr/>Max<wbr/>Level</a>:<a href="#static_android.flash.singleStrengthMaxLevel">android.<wbr/>flash.<wbr/>single<wbr/>Strength<wbr/>Max<wbr/>Level</a>
14519is not guaranteed to be the ratio of actual brightness.<wbr/></p>
14520            </td>
14521          </tr>
14522
14523
14524          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14525           <!-- end of entry -->
14526
14527
14528          <tr class="entry" id="static_android.flash.torchStrengthDefaultLevel">
14529            <td class="entry_name
14530             " rowspan="3">
14531              android.<wbr/>flash.<wbr/>torch<wbr/>Strength<wbr/>Default<wbr/>Level
14532            </td>
14533            <td class="entry_type">
14534                <span class="entry_type_name">int32</span>
14535
14536              <span class="entry_type_visibility"> [public]</span>
14537
14538
14539              <span class="entry_type_hwlevel">[legacy] </span>
14540
14541
14542
14543
14544            </td> <!-- entry_type -->
14545
14546            <td class="entry_description">
14547              <p>Default flash brightness level for manual flash control in <code>TORCH</code> mode</p>
14548            </td>
14549
14550            <td class="entry_units">
14551            </td>
14552
14553            <td class="entry_range">
14554            </td>
14555
14556            <td class="entry_hal_version">
14557              <p>3.<wbr/>10</p>
14558            </td>
14559
14560            <td class="entry_tags">
14561            </td>
14562
14563          </tr>
14564          <tr class="entries_header">
14565            <th class="th_details" colspan="6">Details</th>
14566          </tr>
14567          <tr class="entry_cont">
14568            <td class="entry_details" colspan="6">
14569              <p>If flash unit is available this will be greater than or equal to 1 and less
14570or equal to <a href="#static_android.flash.torchStrengthMaxLevel">android.<wbr/>flash.<wbr/>torch<wbr/>Strength<wbr/>Max<wbr/>Level</a>.<wbr/>
14571Note for the devices that do not support the manual flash strength control feature,<wbr/>
14572this level will always be equal to 1.<wbr/></p>
14573            </td>
14574          </tr>
14575
14576
14577          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14578           <!-- end of entry -->
14579
14580
14581
14582      <!-- end of kind -->
14583      </tbody>
14584      <tr><td colspan="7" class="kind">dynamic</td></tr>
14585
14586      <thead class="entries_header">
14587        <tr>
14588          <th class="th_name">Property Name</th>
14589          <th class="th_type">Type</th>
14590          <th class="th_description">Description</th>
14591          <th class="th_units">Units</th>
14592          <th class="th_range">Range</th>
14593          <th class="th_hal_version">Initial HIDL HAL version</th>
14594          <th class="th_tags">Tags</th>
14595        </tr>
14596      </thead>
14597
14598      <tbody>
14599
14600
14601
14602
14603
14604
14605
14606
14607
14608
14609          <tr class="entry" id="dynamic_android.flash.firingPower">
14610            <td class="entry_name
14611             " rowspan="3">
14612              android.<wbr/>flash.<wbr/>firing<wbr/>Power
14613            </td>
14614            <td class="entry_type">
14615                <span class="entry_type_name">byte</span>
14616
14617              <span class="entry_type_visibility"> [system]</span>
14618
14619
14620
14621
14622
14623
14624            </td> <!-- entry_type -->
14625
14626            <td class="entry_description">
14627              <p>Power for flash firing/<wbr/>torch</p>
14628            </td>
14629
14630            <td class="entry_units">
14631              10 is max power; 0 is no flash.<wbr/> Linear
14632            </td>
14633
14634            <td class="entry_range">
14635              <p>0 - 10</p>
14636            </td>
14637
14638            <td class="entry_hal_version">
14639              <p>3.<wbr/>2</p>
14640            </td>
14641
14642            <td class="entry_tags">
14643              <ul class="entry_tags">
14644                  <li><a href="#tag_FUTURE">FUTURE</a></li>
14645              </ul>
14646            </td>
14647
14648          </tr>
14649          <tr class="entries_header">
14650            <th class="th_details" colspan="6">Details</th>
14651          </tr>
14652          <tr class="entry_cont">
14653            <td class="entry_details" colspan="6">
14654              <p>Power for snapshot may use a different scale than
14655for torch mode.<wbr/> Only one entry for torch mode will be
14656used</p>
14657            </td>
14658          </tr>
14659
14660
14661          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14662           <!-- end of entry -->
14663
14664
14665          <tr class="entry" id="dynamic_android.flash.firingTime">
14666            <td class="entry_name
14667             " rowspan="3">
14668              android.<wbr/>flash.<wbr/>firing<wbr/>Time
14669            </td>
14670            <td class="entry_type">
14671                <span class="entry_type_name">int64</span>
14672
14673              <span class="entry_type_visibility"> [system]</span>
14674
14675
14676
14677
14678
14679
14680            </td> <!-- entry_type -->
14681
14682            <td class="entry_description">
14683              <p>Firing time of flash relative to start of
14684exposure</p>
14685            </td>
14686
14687            <td class="entry_units">
14688              nanoseconds
14689            </td>
14690
14691            <td class="entry_range">
14692              <p>0-(exposure time-flash duration)</p>
14693            </td>
14694
14695            <td class="entry_hal_version">
14696              <p>3.<wbr/>2</p>
14697            </td>
14698
14699            <td class="entry_tags">
14700              <ul class="entry_tags">
14701                  <li><a href="#tag_FUTURE">FUTURE</a></li>
14702              </ul>
14703            </td>
14704
14705          </tr>
14706          <tr class="entries_header">
14707            <th class="th_details" colspan="6">Details</th>
14708          </tr>
14709          <tr class="entry_cont">
14710            <td class="entry_details" colspan="6">
14711              <p>Clamped to (0,<wbr/> exposure time - flash
14712duration).<wbr/></p>
14713            </td>
14714          </tr>
14715
14716
14717          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14718           <!-- end of entry -->
14719
14720
14721          <tr class="entry" id="dynamic_android.flash.mode">
14722            <td class="entry_name
14723             " rowspan="3">
14724              android.<wbr/>flash.<wbr/>mode
14725            </td>
14726            <td class="entry_type">
14727                <span class="entry_type_name entry_type_name_enum">byte</span>
14728
14729              <span class="entry_type_visibility"> [public]</span>
14730
14731
14732              <span class="entry_type_hwlevel">[legacy] </span>
14733
14734
14735
14736                <ul class="entry_type_enum">
14737                  <li>
14738                    <span class="entry_type_enum_name">OFF (v3.2)</span>
14739                    <span class="entry_type_enum_notes"><p>Do not fire the flash for this capture.<wbr/></p></span>
14740                  </li>
14741                  <li>
14742                    <span class="entry_type_enum_name">SINGLE (v3.2)</span>
14743                    <span class="entry_type_enum_notes"><p>If the flash is available and charged,<wbr/> fire flash
14744for this capture.<wbr/></p></span>
14745                  </li>
14746                  <li>
14747                    <span class="entry_type_enum_name">TORCH (v3.2)</span>
14748                    <span class="entry_type_enum_notes"><p>Transition flash to continuously on.<wbr/></p></span>
14749                  </li>
14750                </ul>
14751
14752            </td> <!-- entry_type -->
14753
14754            <td class="entry_description">
14755              <p>The desired mode for for the camera device's flash control.<wbr/></p>
14756            </td>
14757
14758            <td class="entry_units">
14759            </td>
14760
14761            <td class="entry_range">
14762            </td>
14763
14764            <td class="entry_hal_version">
14765              <p>3.<wbr/>2</p>
14766            </td>
14767
14768            <td class="entry_tags">
14769              <ul class="entry_tags">
14770                  <li><a href="#tag_BC">BC</a></li>
14771              </ul>
14772            </td>
14773
14774          </tr>
14775          <tr class="entries_header">
14776            <th class="th_details" colspan="6">Details</th>
14777          </tr>
14778          <tr class="entry_cont">
14779            <td class="entry_details" colspan="6">
14780              <p>This control is only effective when flash unit is available
14781(<code><a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> == true</code>).<wbr/></p>
14782<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/>
14783Otherwise,<wbr/> the camera device auto-exposure related flash control (ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/>
14784ON_<wbr/>ALWAYS_<wbr/>FLASH,<wbr/> or ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE) will override this control.<wbr/></p>
14785<p>When set to OFF,<wbr/> the camera device will not fire flash for this capture.<wbr/></p>
14786<p>When set to SINGLE,<wbr/> the camera device will fire flash regardless of the camera
14787device's auto-exposure routine's result.<wbr/> When used in still capture case,<wbr/> this
14788control should be used along with auto-exposure (AE) precapture metering sequence
14789(<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>
14790<p>When set to TORCH,<wbr/> the flash will be on continuously.<wbr/> This mode can be used
14791for use cases such as preview,<wbr/> auto-focus assist,<wbr/> still capture,<wbr/> or video recording.<wbr/></p>
14792<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>
14793            </td>
14794          </tr>
14795
14796
14797          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14798           <!-- end of entry -->
14799
14800
14801          <tr class="entry" id="dynamic_android.flash.state">
14802            <td class="entry_name
14803             " rowspan="3">
14804              android.<wbr/>flash.<wbr/>state
14805            </td>
14806            <td class="entry_type">
14807                <span class="entry_type_name entry_type_name_enum">byte</span>
14808
14809              <span class="entry_type_visibility"> [public]</span>
14810
14811
14812              <span class="entry_type_hwlevel">[limited] </span>
14813
14814
14815
14816                <ul class="entry_type_enum">
14817                  <li>
14818                    <span class="entry_type_enum_name">UNAVAILABLE (v3.2)</span>
14819                    <span class="entry_type_enum_notes"><p>No flash on camera.<wbr/></p></span>
14820                  </li>
14821                  <li>
14822                    <span class="entry_type_enum_name">CHARGING (v3.2)</span>
14823                    <span class="entry_type_enum_notes"><p>Flash is charging and cannot be fired.<wbr/></p></span>
14824                  </li>
14825                  <li>
14826                    <span class="entry_type_enum_name">READY (v3.2)</span>
14827                    <span class="entry_type_enum_notes"><p>Flash is ready to fire.<wbr/></p></span>
14828                  </li>
14829                  <li>
14830                    <span class="entry_type_enum_name">FIRED (v3.2)</span>
14831                    <span class="entry_type_enum_notes"><p>Flash fired for this capture.<wbr/></p></span>
14832                  </li>
14833                  <li>
14834                    <span class="entry_type_enum_name">PARTIAL (v3.2)</span>
14835                    <span class="entry_type_enum_notes"><p>Flash partially illuminated this frame.<wbr/></p>
14836<p>This is usually due to the next or previous frame having
14837the flash fire,<wbr/> and the flash spilling into this capture
14838due to hardware limitations.<wbr/></p></span>
14839                  </li>
14840                </ul>
14841
14842            </td> <!-- entry_type -->
14843
14844            <td class="entry_description">
14845              <p>Current state of the flash
14846unit.<wbr/></p>
14847            </td>
14848
14849            <td class="entry_units">
14850            </td>
14851
14852            <td class="entry_range">
14853            </td>
14854
14855            <td class="entry_hal_version">
14856              <p>3.<wbr/>2</p>
14857            </td>
14858
14859            <td class="entry_tags">
14860            </td>
14861
14862          </tr>
14863          <tr class="entries_header">
14864            <th class="th_details" colspan="6">Details</th>
14865          </tr>
14866          <tr class="entry_cont">
14867            <td class="entry_details" colspan="6">
14868              <p>When the camera device doesn't have flash unit
14869(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/>
14870Other states indicate the current flash status.<wbr/></p>
14871<p>In certain conditions,<wbr/> this will be available on LEGACY devices:</p>
14872<ul>
14873<li>Flash-less cameras always return UNAVAILABLE.<wbr/></li>
14874<li>Using <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>==</code> ON_<wbr/>ALWAYS_<wbr/>FLASH
14875   will always return FIRED.<wbr/></li>
14876<li>Using <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> <code>==</code> TORCH
14877   will always return FIRED.<wbr/></li>
14878</ul>
14879<p>In all other conditions the state will not be available on
14880LEGACY devices (i.<wbr/>e.<wbr/> it will be <code>null</code>).<wbr/></p>
14881            </td>
14882          </tr>
14883
14884
14885          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14886           <!-- end of entry -->
14887
14888
14889          <tr class="entry" id="dynamic_android.flash.strengthLevel">
14890            <td class="entry_name
14891             " rowspan="3">
14892              android.<wbr/>flash.<wbr/>strength<wbr/>Level
14893            </td>
14894            <td class="entry_type">
14895                <span class="entry_type_name">int32</span>
14896
14897              <span class="entry_type_visibility"> [public]</span>
14898
14899
14900              <span class="entry_type_hwlevel">[legacy] </span>
14901
14902
14903
14904
14905            </td> <!-- entry_type -->
14906
14907            <td class="entry_description">
14908              <p>Flash strength level to be used when manual flash control is active.<wbr/></p>
14909            </td>
14910
14911            <td class="entry_units">
14912            </td>
14913
14914            <td class="entry_range">
14915              <p><code>[1-<a href="#static_android.flash.torchStrengthMaxLevel">android.<wbr/>flash.<wbr/>torch<wbr/>Strength<wbr/>Max<wbr/>Level</a>]</code> when the <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> is
14916set to TORCH;
14917<code>[1-<a href="#static_android.flash.singleStrengthMaxLevel">android.<wbr/>flash.<wbr/>single<wbr/>Strength<wbr/>Max<wbr/>Level</a>]</code> when the <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> is
14918set to SINGLE</p>
14919            </td>
14920
14921            <td class="entry_hal_version">
14922              <p>3.<wbr/>10</p>
14923            </td>
14924
14925            <td class="entry_tags">
14926            </td>
14927
14928          </tr>
14929          <tr class="entries_header">
14930            <th class="th_details" colspan="6">Details</th>
14931          </tr>
14932          <tr class="entry_cont">
14933            <td class="entry_details" colspan="6">
14934              <p>Flash strength level to use in capture mode i.<wbr/>e.<wbr/> when the applications control
14935flash with either <code>SINGLE</code> or <code>TORCH</code> mode.<wbr/></p>
14936<p>Use <a href="#static_android.flash.singleStrengthMaxLevel">android.<wbr/>flash.<wbr/>single<wbr/>Strength<wbr/>Max<wbr/>Level</a> and
14937<a href="#static_android.flash.torchStrengthMaxLevel">android.<wbr/>flash.<wbr/>torch<wbr/>Strength<wbr/>Max<wbr/>Level</a> to check whether the device supports
14938flash strength control or not.<wbr/>
14939If the values of <a href="#static_android.flash.singleStrengthMaxLevel">android.<wbr/>flash.<wbr/>single<wbr/>Strength<wbr/>Max<wbr/>Level</a> and
14940<a href="#static_android.flash.torchStrengthMaxLevel">android.<wbr/>flash.<wbr/>torch<wbr/>Strength<wbr/>Max<wbr/>Level</a> are greater than 1,<wbr/>
14941then the device supports manual flash strength control.<wbr/></p>
14942<p>If the <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> <code>==</code> <code>TORCH</code> the value must be &gt;= 1
14943and &lt;= <a href="#static_android.flash.torchStrengthMaxLevel">android.<wbr/>flash.<wbr/>torch<wbr/>Strength<wbr/>Max<wbr/>Level</a>.<wbr/>
14944If the application doesn't set the key and
14945<a href="#static_android.flash.torchStrengthMaxLevel">android.<wbr/>flash.<wbr/>torch<wbr/>Strength<wbr/>Max<wbr/>Level</a> &gt; 1,<wbr/>
14946then the flash will be fired at the default level set by HAL in
14947<a href="#static_android.flash.torchStrengthDefaultLevel">android.<wbr/>flash.<wbr/>torch<wbr/>Strength<wbr/>Default<wbr/>Level</a>.<wbr/>
14948If the <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> <code>==</code> <code>SINGLE</code>,<wbr/> then the value must be &gt;= 1
14949and &lt;= <a href="#static_android.flash.singleStrengthMaxLevel">android.<wbr/>flash.<wbr/>single<wbr/>Strength<wbr/>Max<wbr/>Level</a>.<wbr/>
14950If the application does not set this key and
14951<a href="#static_android.flash.singleStrengthMaxLevel">android.<wbr/>flash.<wbr/>single<wbr/>Strength<wbr/>Max<wbr/>Level</a> &gt; 1,<wbr/>
14952then the flash will be fired at the default level set by HAL
14953in <a href="#static_android.flash.singleStrengthDefaultLevel">android.<wbr/>flash.<wbr/>single<wbr/>Strength<wbr/>Default<wbr/>Level</a>.<wbr/>
14954If <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is set to any of <code>ON_<wbr/>AUTO_<wbr/>FLASH</code>,<wbr/> <code>ON_<wbr/>ALWAYS_<wbr/>FLASH</code>,<wbr/>
14955<code>ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE</code>,<wbr/> <code>ON_<wbr/>EXTERNAL_<wbr/>FLASH</code> values,<wbr/> then the strengthLevel will be ignored.<wbr/></p>
14956<p>When AE mode is ON and flash mode is TORCH or SINGLE,<wbr/> the application should make sure
14957the AE mode,<wbr/> flash mode,<wbr/> and flash strength level remain the same between precapture
14958trigger request and final capture request.<wbr/> The flash strength level being set during
14959precapture sequence is used by the camera device as a reference.<wbr/> The actual strength
14960may be less,<wbr/> and the auto-exposure routine makes sure proper conversions of sensor
14961exposure time and sensitivities between precapture and final capture for the specified
14962strength level.<wbr/></p>
14963            </td>
14964          </tr>
14965
14966
14967          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14968           <!-- end of entry -->
14969
14970
14971
14972      <!-- end of kind -->
14973      </tbody>
14974
14975  <!-- end of section -->
14976  <tr><td colspan="7" id="section_hotPixel" class="section">hotPixel</td></tr>
14977
14978
14979      <tr><td colspan="7" class="kind">controls</td></tr>
14980
14981      <thead class="entries_header">
14982        <tr>
14983          <th class="th_name">Property Name</th>
14984          <th class="th_type">Type</th>
14985          <th class="th_description">Description</th>
14986          <th class="th_units">Units</th>
14987          <th class="th_range">Range</th>
14988          <th class="th_hal_version">Initial HIDL HAL version</th>
14989          <th class="th_tags">Tags</th>
14990        </tr>
14991      </thead>
14992
14993      <tbody>
14994
14995
14996
14997
14998
14999
15000
15001
15002
15003
15004          <tr class="entry" id="controls_android.hotPixel.mode">
15005            <td class="entry_name
15006             " rowspan="3">
15007              android.<wbr/>hot<wbr/>Pixel.<wbr/>mode
15008            </td>
15009            <td class="entry_type">
15010                <span class="entry_type_name entry_type_name_enum">byte</span>
15011
15012              <span class="entry_type_visibility"> [public]</span>
15013
15014
15015
15016
15017
15018                <ul class="entry_type_enum">
15019                  <li>
15020                    <span class="entry_type_enum_name">OFF (v3.2)</span>
15021                    <span class="entry_type_enum_notes"><p>No hot pixel correction is applied.<wbr/></p>
15022<p>The frame rate must not be reduced relative to sensor raw output
15023for this option.<wbr/></p>
15024<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>
15025                  </li>
15026                  <li>
15027                    <span class="entry_type_enum_name">FAST (v3.2)</span>
15028                    <span class="entry_type_enum_notes"><p>Hot pixel correction is applied,<wbr/> without reducing frame
15029rate relative to sensor raw output.<wbr/></p>
15030<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>
15031                  </li>
15032                  <li>
15033                    <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
15034                    <span class="entry_type_enum_notes"><p>High-quality hot pixel correction is applied,<wbr/> at a cost
15035of possibly reduced frame rate relative to sensor raw output.<wbr/></p>
15036<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>
15037                  </li>
15038                </ul>
15039
15040            </td> <!-- entry_type -->
15041
15042            <td class="entry_description">
15043              <p>Operational mode for hot pixel correction.<wbr/></p>
15044            </td>
15045
15046            <td class="entry_units">
15047            </td>
15048
15049            <td class="entry_range">
15050              <p><a href="#static_android.hotPixel.availableHotPixelModes">android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes</a></p>
15051            </td>
15052
15053            <td class="entry_hal_version">
15054              <p>3.<wbr/>2</p>
15055            </td>
15056
15057            <td class="entry_tags">
15058              <ul class="entry_tags">
15059                  <li><a href="#tag_V1">V1</a></li>
15060                  <li><a href="#tag_RAW">RAW</a></li>
15061              </ul>
15062            </td>
15063
15064          </tr>
15065          <tr class="entries_header">
15066            <th class="th_details" colspan="6">Details</th>
15067          </tr>
15068          <tr class="entry_cont">
15069            <td class="entry_details" colspan="6">
15070              <p>Hotpixel correction interpolates out,<wbr/> or otherwise removes,<wbr/> pixels
15071that do not accurately measure the incoming light (i.<wbr/>e.<wbr/> pixels that
15072are stuck at an arbitrary value or are oversensitive).<wbr/></p>
15073            </td>
15074          </tr>
15075
15076
15077          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15078           <!-- end of entry -->
15079
15080
15081
15082      <!-- end of kind -->
15083      </tbody>
15084      <tr><td colspan="7" class="kind">static</td></tr>
15085
15086      <thead class="entries_header">
15087        <tr>
15088          <th class="th_name">Property Name</th>
15089          <th class="th_type">Type</th>
15090          <th class="th_description">Description</th>
15091          <th class="th_units">Units</th>
15092          <th class="th_range">Range</th>
15093          <th class="th_hal_version">Initial HIDL HAL version</th>
15094          <th class="th_tags">Tags</th>
15095        </tr>
15096      </thead>
15097
15098      <tbody>
15099
15100
15101
15102
15103
15104
15105
15106
15107
15108
15109          <tr class="entry" id="static_android.hotPixel.availableHotPixelModes">
15110            <td class="entry_name
15111             " rowspan="5">
15112              android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes
15113            </td>
15114            <td class="entry_type">
15115                <span class="entry_type_name">byte</span>
15116                <span class="entry_type_container">x</span>
15117
15118                <span class="entry_type_array">
15119                  n
15120                </span>
15121              <span class="entry_type_visibility"> [public as enumList]</span>
15122
15123
15124
15125
15126                <div class="entry_type_notes">list of enums</div>
15127
15128
15129            </td> <!-- entry_type -->
15130
15131            <td class="entry_description">
15132              <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
15133camera device.<wbr/></p>
15134            </td>
15135
15136            <td class="entry_units">
15137            </td>
15138
15139            <td class="entry_range">
15140              <p>Any value listed in <a href="#controls_android.hotPixel.mode">android.<wbr/>hot<wbr/>Pixel.<wbr/>mode</a></p>
15141            </td>
15142
15143            <td class="entry_hal_version">
15144              <p>3.<wbr/>2</p>
15145            </td>
15146
15147            <td class="entry_tags">
15148              <ul class="entry_tags">
15149                  <li><a href="#tag_V1">V1</a></li>
15150                  <li><a href="#tag_RAW">RAW</a></li>
15151              </ul>
15152            </td>
15153
15154          </tr>
15155          <tr class="entries_header">
15156            <th class="th_details" colspan="6">Details</th>
15157          </tr>
15158          <tr class="entry_cont">
15159            <td class="entry_details" colspan="6">
15160              <p>FULL mode camera devices will always support FAST.<wbr/></p>
15161            </td>
15162          </tr>
15163
15164          <tr class="entries_header">
15165            <th class="th_details" colspan="6">HAL Implementation Details</th>
15166          </tr>
15167          <tr class="entry_cont">
15168            <td class="entry_details" colspan="6">
15169              <p>To avoid performance issues,<wbr/> there will be significantly fewer hot
15170pixels than actual pixels on the camera sensor.<wbr/>
15171HAL must support both FAST and HIGH_<wbr/>QUALITY if hot pixel correction control is available
15172on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
15173That is,<wbr/> if the highest quality implementation on the camera device does not slow down
15174capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
15175            </td>
15176          </tr>
15177
15178          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15179           <!-- end of entry -->
15180
15181
15182
15183      <!-- end of kind -->
15184      </tbody>
15185      <tr><td colspan="7" class="kind">dynamic</td></tr>
15186
15187      <thead class="entries_header">
15188        <tr>
15189          <th class="th_name">Property Name</th>
15190          <th class="th_type">Type</th>
15191          <th class="th_description">Description</th>
15192          <th class="th_units">Units</th>
15193          <th class="th_range">Range</th>
15194          <th class="th_hal_version">Initial HIDL HAL version</th>
15195          <th class="th_tags">Tags</th>
15196        </tr>
15197      </thead>
15198
15199      <tbody>
15200
15201
15202
15203
15204
15205
15206
15207
15208
15209
15210          <tr class="entry" id="dynamic_android.hotPixel.mode">
15211            <td class="entry_name
15212             " rowspan="3">
15213              android.<wbr/>hot<wbr/>Pixel.<wbr/>mode
15214            </td>
15215            <td class="entry_type">
15216                <span class="entry_type_name entry_type_name_enum">byte</span>
15217
15218              <span class="entry_type_visibility"> [public]</span>
15219
15220
15221
15222
15223
15224                <ul class="entry_type_enum">
15225                  <li>
15226                    <span class="entry_type_enum_name">OFF (v3.2)</span>
15227                    <span class="entry_type_enum_notes"><p>No hot pixel correction is applied.<wbr/></p>
15228<p>The frame rate must not be reduced relative to sensor raw output
15229for this option.<wbr/></p>
15230<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>
15231                  </li>
15232                  <li>
15233                    <span class="entry_type_enum_name">FAST (v3.2)</span>
15234                    <span class="entry_type_enum_notes"><p>Hot pixel correction is applied,<wbr/> without reducing frame
15235rate relative to sensor raw output.<wbr/></p>
15236<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>
15237                  </li>
15238                  <li>
15239                    <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
15240                    <span class="entry_type_enum_notes"><p>High-quality hot pixel correction is applied,<wbr/> at a cost
15241of possibly reduced frame rate relative to sensor raw output.<wbr/></p>
15242<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>
15243                  </li>
15244                </ul>
15245
15246            </td> <!-- entry_type -->
15247
15248            <td class="entry_description">
15249              <p>Operational mode for hot pixel correction.<wbr/></p>
15250            </td>
15251
15252            <td class="entry_units">
15253            </td>
15254
15255            <td class="entry_range">
15256              <p><a href="#static_android.hotPixel.availableHotPixelModes">android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes</a></p>
15257            </td>
15258
15259            <td class="entry_hal_version">
15260              <p>3.<wbr/>2</p>
15261            </td>
15262
15263            <td class="entry_tags">
15264              <ul class="entry_tags">
15265                  <li><a href="#tag_V1">V1</a></li>
15266                  <li><a href="#tag_RAW">RAW</a></li>
15267              </ul>
15268            </td>
15269
15270          </tr>
15271          <tr class="entries_header">
15272            <th class="th_details" colspan="6">Details</th>
15273          </tr>
15274          <tr class="entry_cont">
15275            <td class="entry_details" colspan="6">
15276              <p>Hotpixel correction interpolates out,<wbr/> or otherwise removes,<wbr/> pixels
15277that do not accurately measure the incoming light (i.<wbr/>e.<wbr/> pixels that
15278are stuck at an arbitrary value or are oversensitive).<wbr/></p>
15279            </td>
15280          </tr>
15281
15282
15283          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15284           <!-- end of entry -->
15285
15286
15287
15288      <!-- end of kind -->
15289      </tbody>
15290
15291  <!-- end of section -->
15292  <tr><td colspan="7" id="section_jpeg" class="section">jpeg</td></tr>
15293
15294
15295      <tr><td colspan="7" class="kind">controls</td></tr>
15296
15297      <thead class="entries_header">
15298        <tr>
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>
15306        </tr>
15307      </thead>
15308
15309      <tbody>
15310
15311
15312
15313
15314
15315
15316
15317
15318
15319
15320          <tr class="entry" id="controls_android.jpeg.gpsLocation">
15321            <td class="entry_name
15322             " rowspan="3">
15323              android.<wbr/>jpeg.<wbr/>gps<wbr/>Location
15324            </td>
15325            <td class="entry_type">
15326                <span class="entry_type_name">byte</span>
15327
15328              <span class="entry_type_visibility"> [java_public as location]</span>
15329
15330              <span class="entry_type_synthetic">[synthetic] </span>
15331
15332              <span class="entry_type_hwlevel">[legacy] </span>
15333
15334
15335
15336
15337            </td> <!-- entry_type -->
15338
15339            <td class="entry_description">
15340              <p>A location object to use when generating image GPS metadata.<wbr/></p>
15341            </td>
15342
15343            <td class="entry_units">
15344            </td>
15345
15346            <td class="entry_range">
15347            </td>
15348
15349            <td class="entry_hal_version">
15350              <p>3.<wbr/>2</p>
15351            </td>
15352
15353            <td class="entry_tags">
15354            </td>
15355
15356          </tr>
15357          <tr class="entries_header">
15358            <th class="th_details" colspan="6">Details</th>
15359          </tr>
15360          <tr class="entry_cont">
15361            <td class="entry_details" colspan="6">
15362              <p>Setting a location object in a request will include the GPS coordinates of the location
15363into any JPEG images captured based on the request.<wbr/> These coordinates can then be
15364viewed by anyone who receives the JPEG image.<wbr/></p>
15365<p>This tag is also used for HEIC image capture.<wbr/></p>
15366            </td>
15367          </tr>
15368
15369
15370          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15371           <!-- end of entry -->
15372
15373
15374          <tr class="entry" id="controls_android.jpeg.gpsCoordinates">
15375            <td class="entry_name
15376             " rowspan="3">
15377              android.<wbr/>jpeg.<wbr/>gps<wbr/>Coordinates
15378            </td>
15379            <td class="entry_type">
15380                <span class="entry_type_name">double</span>
15381                <span class="entry_type_container">x</span>
15382
15383                <span class="entry_type_array">
15384                  3
15385                </span>
15386              <span class="entry_type_visibility"> [ndk_public]</span>
15387
15388
15389              <span class="entry_type_hwlevel">[legacy] </span>
15390
15391
15392                <div class="entry_type_notes">latitude,<wbr/> longitude,<wbr/> altitude.<wbr/> First two in degrees,<wbr/> the third in meters</div>
15393
15394
15395            </td> <!-- entry_type -->
15396
15397            <td class="entry_description">
15398              <p>GPS coordinates to include in output JPEG
15399EXIF.<wbr/></p>
15400            </td>
15401
15402            <td class="entry_units">
15403            </td>
15404
15405            <td class="entry_range">
15406              <p>(-180 - 180],<wbr/> [-90,<wbr/>90],<wbr/> [-inf,<wbr/> inf]</p>
15407            </td>
15408
15409            <td class="entry_hal_version">
15410              <p>3.<wbr/>2</p>
15411            </td>
15412
15413            <td class="entry_tags">
15414              <ul class="entry_tags">
15415                  <li><a href="#tag_BC">BC</a></li>
15416              </ul>
15417            </td>
15418
15419          </tr>
15420          <tr class="entries_header">
15421            <th class="th_details" colspan="6">Details</th>
15422          </tr>
15423          <tr class="entry_cont">
15424            <td class="entry_details" colspan="6">
15425              <p>This tag is also used for HEIC image capture.<wbr/></p>
15426            </td>
15427          </tr>
15428
15429
15430          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15431           <!-- end of entry -->
15432
15433
15434          <tr class="entry" id="controls_android.jpeg.gpsProcessingMethod">
15435            <td class="entry_name
15436             " rowspan="3">
15437              android.<wbr/>jpeg.<wbr/>gps<wbr/>Processing<wbr/>Method
15438            </td>
15439            <td class="entry_type">
15440                <span class="entry_type_name">byte</span>
15441
15442              <span class="entry_type_visibility"> [ndk_public as string]</span>
15443
15444
15445              <span class="entry_type_hwlevel">[legacy] </span>
15446
15447
15448
15449
15450            </td> <!-- entry_type -->
15451
15452            <td class="entry_description">
15453              <p>32 characters describing GPS algorithm to
15454include in EXIF.<wbr/></p>
15455            </td>
15456
15457            <td class="entry_units">
15458              UTF-8 null-terminated string
15459            </td>
15460
15461            <td class="entry_range">
15462            </td>
15463
15464            <td class="entry_hal_version">
15465              <p>3.<wbr/>2</p>
15466            </td>
15467
15468            <td class="entry_tags">
15469              <ul class="entry_tags">
15470                  <li><a href="#tag_BC">BC</a></li>
15471              </ul>
15472            </td>
15473
15474          </tr>
15475          <tr class="entries_header">
15476            <th class="th_details" colspan="6">Details</th>
15477          </tr>
15478          <tr class="entry_cont">
15479            <td class="entry_details" colspan="6">
15480              <p>This tag is also used for HEIC image capture.<wbr/></p>
15481            </td>
15482          </tr>
15483
15484
15485          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15486           <!-- end of entry -->
15487
15488
15489          <tr class="entry" id="controls_android.jpeg.gpsTimestamp">
15490            <td class="entry_name
15491             " rowspan="3">
15492              android.<wbr/>jpeg.<wbr/>gps<wbr/>Timestamp
15493            </td>
15494            <td class="entry_type">
15495                <span class="entry_type_name">int64</span>
15496
15497              <span class="entry_type_visibility"> [ndk_public]</span>
15498
15499
15500              <span class="entry_type_hwlevel">[legacy] </span>
15501
15502
15503
15504
15505            </td> <!-- entry_type -->
15506
15507            <td class="entry_description">
15508              <p>Time GPS fix was made to include in
15509EXIF.<wbr/></p>
15510            </td>
15511
15512            <td class="entry_units">
15513              UTC in seconds since January 1,<wbr/> 1970
15514            </td>
15515
15516            <td class="entry_range">
15517            </td>
15518
15519            <td class="entry_hal_version">
15520              <p>3.<wbr/>2</p>
15521            </td>
15522
15523            <td class="entry_tags">
15524              <ul class="entry_tags">
15525                  <li><a href="#tag_BC">BC</a></li>
15526              </ul>
15527            </td>
15528
15529          </tr>
15530          <tr class="entries_header">
15531            <th class="th_details" colspan="6">Details</th>
15532          </tr>
15533          <tr class="entry_cont">
15534            <td class="entry_details" colspan="6">
15535              <p>This tag is also used for HEIC image capture.<wbr/></p>
15536            </td>
15537          </tr>
15538
15539
15540          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15541           <!-- end of entry -->
15542
15543
15544          <tr class="entry" id="controls_android.jpeg.orientation">
15545            <td class="entry_name
15546             " rowspan="3">
15547              android.<wbr/>jpeg.<wbr/>orientation
15548            </td>
15549            <td class="entry_type">
15550                <span class="entry_type_name">int32</span>
15551
15552              <span class="entry_type_visibility"> [public]</span>
15553
15554
15555              <span class="entry_type_hwlevel">[legacy] </span>
15556
15557
15558
15559
15560            </td> <!-- entry_type -->
15561
15562            <td class="entry_description">
15563              <p>The orientation for a JPEG image.<wbr/></p>
15564            </td>
15565
15566            <td class="entry_units">
15567              Degrees in multiples of 90
15568            </td>
15569
15570            <td class="entry_range">
15571              <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p>
15572            </td>
15573
15574            <td class="entry_hal_version">
15575              <p>3.<wbr/>2</p>
15576            </td>
15577
15578            <td class="entry_tags">
15579              <ul class="entry_tags">
15580                  <li><a href="#tag_BC">BC</a></li>
15581              </ul>
15582            </td>
15583
15584          </tr>
15585          <tr class="entries_header">
15586            <th class="th_details" colspan="6">Details</th>
15587          </tr>
15588          <tr class="entry_cont">
15589            <td class="entry_details" colspan="6">
15590              <p>The clockwise rotation angle in degrees,<wbr/> relative to the orientation
15591to the camera,<wbr/> that the JPEG picture needs to be rotated by,<wbr/> to be viewed
15592upright.<wbr/></p>
15593<p>Camera devices may either encode this value into the JPEG EXIF header,<wbr/> or
15594rotate the image data to match this orientation.<wbr/> When the image data is rotated,<wbr/>
15595the thumbnail data will also be rotated.<wbr/> Additionally,<wbr/> in the case where the image data
15596is rotated,<wbr/> <a href="https://developer.android.com/reference/android/media/Image.html#getWidth">Image#getWidth</a> and <a href="https://developer.android.com/reference/android/media/Image.html#getHeight">Image#getHeight</a>
15597will not be updated to reflect the height and width of the rotated image.<wbr/></p>
15598<p>Note that this orientation is relative to the orientation of the camera sensor,<wbr/> given
15599by <a href="#static_android.sensor.orientation">android.<wbr/>sensor.<wbr/>orientation</a>.<wbr/></p>
15600<p>To translate from the device orientation given by the Android sensor APIs for camera
15601sensors which are not EXTERNAL,<wbr/> the following sample code may be used:</p>
15602<pre><code>private int getJpegOrientation(CameraCharacteristics c,<wbr/> int deviceOrientation) {
15603    if (deviceOrientation == android.<wbr/>view.<wbr/>Orientation<wbr/>Event<wbr/>Listener.<wbr/>ORIENTATION_<wbr/>UNKNOWN) return 0;
15604    int sensorOrientation = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>SENSOR_<wbr/>ORIENTATION);
15605
15606    //<wbr/> Round device orientation to a multiple of 90
15607    deviceOrientation = (deviceOrientation + 45) /<wbr/> 90 * 90;
15608
15609    //<wbr/> Reverse device orientation for front-facing cameras
15610    boolean facingFront = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING) == Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING_<wbr/>FRONT;
15611    if (facingFront) deviceOrientation = -deviceOrientation;
15612
15613    //<wbr/> Calculate desired JPEG orientation relative to camera orientation to make
15614    //<wbr/> the image upright relative to the device orientation
15615    int jpegOrientation = (sensorOrientation + deviceOrientation + 360) % 360;
15616
15617    return jpegOrientation;
15618}
15619</code></pre>
15620<p>For EXTERNAL cameras the sensor orientation will always be set to 0 and the facing will
15621also be set to EXTERNAL.<wbr/> The above code is not relevant in such case.<wbr/></p>
15622<p>This tag is also used to describe the orientation of the HEIC image capture,<wbr/> in which
15623case the rotation is reflected by
15624<a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>,<wbr/> and not by
15625rotating the image data itself.<wbr/></p>
15626            </td>
15627          </tr>
15628
15629
15630          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15631           <!-- end of entry -->
15632
15633
15634          <tr class="entry" id="controls_android.jpeg.quality">
15635            <td class="entry_name
15636             " rowspan="3">
15637              android.<wbr/>jpeg.<wbr/>quality
15638            </td>
15639            <td class="entry_type">
15640                <span class="entry_type_name">byte</span>
15641
15642              <span class="entry_type_visibility"> [public]</span>
15643
15644
15645              <span class="entry_type_hwlevel">[legacy] </span>
15646
15647
15648
15649
15650            </td> <!-- entry_type -->
15651
15652            <td class="entry_description">
15653              <p>Compression quality of the final JPEG
15654image.<wbr/></p>
15655            </td>
15656
15657            <td class="entry_units">
15658            </td>
15659
15660            <td class="entry_range">
15661              <p>1-100; larger is higher quality</p>
15662            </td>
15663
15664            <td class="entry_hal_version">
15665              <p>3.<wbr/>2</p>
15666            </td>
15667
15668            <td class="entry_tags">
15669              <ul class="entry_tags">
15670                  <li><a href="#tag_BC">BC</a></li>
15671              </ul>
15672            </td>
15673
15674          </tr>
15675          <tr class="entries_header">
15676            <th class="th_details" colspan="6">Details</th>
15677          </tr>
15678          <tr class="entry_cont">
15679            <td class="entry_details" colspan="6">
15680              <p>85-95 is typical usage range.<wbr/> This tag is also used to describe the quality
15681of the HEIC image capture.<wbr/></p>
15682            </td>
15683          </tr>
15684
15685
15686          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15687           <!-- end of entry -->
15688
15689
15690          <tr class="entry" id="controls_android.jpeg.thumbnailQuality">
15691            <td class="entry_name
15692             " rowspan="3">
15693              android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Quality
15694            </td>
15695            <td class="entry_type">
15696                <span class="entry_type_name">byte</span>
15697
15698              <span class="entry_type_visibility"> [public]</span>
15699
15700
15701              <span class="entry_type_hwlevel">[legacy] </span>
15702
15703
15704
15705
15706            </td> <!-- entry_type -->
15707
15708            <td class="entry_description">
15709              <p>Compression quality of JPEG
15710thumbnail.<wbr/></p>
15711            </td>
15712
15713            <td class="entry_units">
15714            </td>
15715
15716            <td class="entry_range">
15717              <p>1-100; larger is higher quality</p>
15718            </td>
15719
15720            <td class="entry_hal_version">
15721              <p>3.<wbr/>2</p>
15722            </td>
15723
15724            <td class="entry_tags">
15725              <ul class="entry_tags">
15726                  <li><a href="#tag_BC">BC</a></li>
15727              </ul>
15728            </td>
15729
15730          </tr>
15731          <tr class="entries_header">
15732            <th class="th_details" colspan="6">Details</th>
15733          </tr>
15734          <tr class="entry_cont">
15735            <td class="entry_details" colspan="6">
15736              <p>This tag is also used to describe the quality of the HEIC image capture.<wbr/></p>
15737            </td>
15738          </tr>
15739
15740
15741          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15742           <!-- end of entry -->
15743
15744
15745          <tr class="entry" id="controls_android.jpeg.thumbnailSize">
15746            <td class="entry_name
15747             " rowspan="5">
15748              android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size
15749            </td>
15750            <td class="entry_type">
15751                <span class="entry_type_name">int32</span>
15752                <span class="entry_type_container">x</span>
15753
15754                <span class="entry_type_array">
15755                  2
15756                </span>
15757              <span class="entry_type_visibility"> [public as size]</span>
15758
15759
15760              <span class="entry_type_hwlevel">[legacy] </span>
15761
15762
15763
15764
15765            </td> <!-- entry_type -->
15766
15767            <td class="entry_description">
15768              <p>Resolution of embedded JPEG thumbnail.<wbr/></p>
15769            </td>
15770
15771            <td class="entry_units">
15772            </td>
15773
15774            <td class="entry_range">
15775              <p><a href="#static_android.jpeg.availableThumbnailSizes">android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes</a></p>
15776            </td>
15777
15778            <td class="entry_hal_version">
15779              <p>3.<wbr/>2</p>
15780            </td>
15781
15782            <td class="entry_tags">
15783              <ul class="entry_tags">
15784                  <li><a href="#tag_BC">BC</a></li>
15785              </ul>
15786            </td>
15787
15788          </tr>
15789          <tr class="entries_header">
15790            <th class="th_details" colspan="6">Details</th>
15791          </tr>
15792          <tr class="entry_cont">
15793            <td class="entry_details" colspan="6">
15794              <p>When set to (0,<wbr/> 0) value,<wbr/> the JPEG EXIF will not contain thumbnail,<wbr/>
15795but the captured JPEG will still be a valid image.<wbr/></p>
15796<p>For best results,<wbr/> when issuing a request for a JPEG image,<wbr/> the thumbnail size selected
15797should have the same aspect ratio as the main JPEG output.<wbr/></p>
15798<p>If the thumbnail image aspect ratio differs from the JPEG primary image aspect
15799ratio,<wbr/> the camera device creates the thumbnail by cropping it from the primary image.<wbr/>
15800For example,<wbr/> if the primary image has 4:3 aspect ratio,<wbr/> the thumbnail image has
1580116:9 aspect ratio,<wbr/> the primary image will be cropped vertically (letterbox) to
15802generate the thumbnail image.<wbr/> The thumbnail image will always have a smaller Field
15803Of View (FOV) than the primary image when aspect ratios differ.<wbr/></p>
15804<p>When an <a href="#controls_android.jpeg.orientation">android.<wbr/>jpeg.<wbr/>orientation</a> of non-zero degree is requested,<wbr/>
15805the camera device will handle thumbnail rotation in one of the following ways:</p>
15806<ul>
15807<li>Set the <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>
15808  and keep jpeg and thumbnail image data unrotated.<wbr/></li>
15809<li>Rotate the jpeg and thumbnail image data and not set
15810  <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>.<wbr/> In this
15811  case,<wbr/> LIMITED or FULL hardware level devices will report rotated thumbnail size in
15812  capture result,<wbr/> so the width and height will be interchanged if 90 or 270 degree
15813  orientation is requested.<wbr/> LEGACY device will always report unrotated thumbnail
15814  size.<wbr/></li>
15815</ul>
15816<p>The tag is also used as thumbnail size for HEIC image format capture,<wbr/> in which case the
15817the thumbnail rotation is reflected by
15818<a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>,<wbr/> and not by
15819rotating the thumbnail data itself.<wbr/></p>
15820            </td>
15821          </tr>
15822
15823          <tr class="entries_header">
15824            <th class="th_details" colspan="6">HAL Implementation Details</th>
15825          </tr>
15826          <tr class="entry_cont">
15827            <td class="entry_details" colspan="6">
15828              <p>The HAL must not squeeze or stretch the downscaled primary image to generate thumbnail.<wbr/>
15829The cropping must be done on the primary jpeg image rather than the sensor pre-correction
15830active array.<wbr/> The stream cropping rule specified by "S5.<wbr/> Cropping" in camera3.<wbr/>h doesn't
15831apply to the thumbnail image cropping.<wbr/></p>
15832            </td>
15833          </tr>
15834
15835          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15836           <!-- end of entry -->
15837
15838
15839
15840      <!-- end of kind -->
15841      </tbody>
15842      <tr><td colspan="7" class="kind">static</td></tr>
15843
15844      <thead class="entries_header">
15845        <tr>
15846          <th class="th_name">Property Name</th>
15847          <th class="th_type">Type</th>
15848          <th class="th_description">Description</th>
15849          <th class="th_units">Units</th>
15850          <th class="th_range">Range</th>
15851          <th class="th_hal_version">Initial HIDL HAL version</th>
15852          <th class="th_tags">Tags</th>
15853        </tr>
15854      </thead>
15855
15856      <tbody>
15857
15858
15859
15860
15861
15862
15863
15864
15865
15866
15867          <tr class="entry" id="static_android.jpeg.availableThumbnailSizes">
15868            <td class="entry_name
15869             " rowspan="3">
15870              android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes
15871            </td>
15872            <td class="entry_type">
15873                <span class="entry_type_name">int32</span>
15874                <span class="entry_type_container">x</span>
15875
15876                <span class="entry_type_array">
15877                  2 x n
15878                </span>
15879              <span class="entry_type_visibility"> [public as size]</span>
15880
15881
15882              <span class="entry_type_hwlevel">[legacy] </span>
15883
15884
15885
15886
15887            </td> <!-- entry_type -->
15888
15889            <td class="entry_description">
15890              <p>List of JPEG thumbnail sizes for <a href="#controls_android.jpeg.thumbnailSize">android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size</a> supported by this
15891camera device.<wbr/></p>
15892            </td>
15893
15894            <td class="entry_units">
15895            </td>
15896
15897            <td class="entry_range">
15898            </td>
15899
15900            <td class="entry_hal_version">
15901              <p>3.<wbr/>2</p>
15902            </td>
15903
15904            <td class="entry_tags">
15905              <ul class="entry_tags">
15906                  <li><a href="#tag_BC">BC</a></li>
15907              </ul>
15908            </td>
15909
15910          </tr>
15911          <tr class="entries_header">
15912            <th class="th_details" colspan="6">Details</th>
15913          </tr>
15914          <tr class="entry_cont">
15915            <td class="entry_details" colspan="6">
15916              <p>This list will include at least one non-zero resolution,<wbr/> plus <code>(0,<wbr/>0)</code> for indicating no
15917thumbnail should be generated.<wbr/></p>
15918<p>Below conditions will be satisfied for this size list:</p>
15919<ul>
15920<li>The sizes will be sorted by increasing pixel area (width x height).<wbr/>
15921If several resolutions have the same area,<wbr/> they will be sorted by increasing width.<wbr/></li>
15922<li>The aspect ratio of the largest thumbnail size will be same as the
15923aspect ratio of largest JPEG output size in <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a>.<wbr/>
15924The largest size is defined as the size that has the largest pixel area
15925in a given size list.<wbr/></li>
15926<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
15927one corresponding size that has the same aspect ratio in availableThumbnailSizes,<wbr/>
15928and vice versa.<wbr/></li>
15929<li>All non-<code>(0,<wbr/> 0)</code> sizes will have non-zero widths and heights.<wbr/></li>
15930</ul>
15931<p>This list is also used as supported thumbnail sizes for HEIC image format capture.<wbr/></p>
15932            </td>
15933          </tr>
15934
15935
15936          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15937           <!-- end of entry -->
15938
15939
15940          <tr class="entry" id="static_android.jpeg.maxSize">
15941            <td class="entry_name
15942             " rowspan="3">
15943              android.<wbr/>jpeg.<wbr/>max<wbr/>Size
15944            </td>
15945            <td class="entry_type">
15946                <span class="entry_type_name">int32</span>
15947
15948              <span class="entry_type_visibility"> [system]</span>
15949
15950
15951
15952
15953
15954
15955            </td> <!-- entry_type -->
15956
15957            <td class="entry_description">
15958              <p>Maximum size in bytes for the compressed
15959JPEG buffer,<wbr/> in default sensor pixel mode (see <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a>)</p>
15960            </td>
15961
15962            <td class="entry_units">
15963            </td>
15964
15965            <td class="entry_range">
15966              <p>Must be large enough to fit any JPEG produced by
15967the camera</p>
15968            </td>
15969
15970            <td class="entry_hal_version">
15971              <p>3.<wbr/>2</p>
15972            </td>
15973
15974            <td class="entry_tags">
15975            </td>
15976
15977          </tr>
15978          <tr class="entries_header">
15979            <th class="th_details" colspan="6">Details</th>
15980          </tr>
15981          <tr class="entry_cont">
15982            <td class="entry_details" colspan="6">
15983              <p>This is used for sizing the gralloc buffers for
15984JPEG</p>
15985            </td>
15986          </tr>
15987
15988
15989          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15990           <!-- end of entry -->
15991
15992
15993
15994      <!-- end of kind -->
15995      </tbody>
15996      <tr><td colspan="7" class="kind">dynamic</td></tr>
15997
15998      <thead class="entries_header">
15999        <tr>
16000          <th class="th_name">Property Name</th>
16001          <th class="th_type">Type</th>
16002          <th class="th_description">Description</th>
16003          <th class="th_units">Units</th>
16004          <th class="th_range">Range</th>
16005          <th class="th_hal_version">Initial HIDL HAL version</th>
16006          <th class="th_tags">Tags</th>
16007        </tr>
16008      </thead>
16009
16010      <tbody>
16011
16012
16013
16014
16015
16016
16017
16018
16019
16020
16021          <tr class="entry" id="dynamic_android.jpeg.gpsLocation">
16022            <td class="entry_name
16023             " rowspan="3">
16024              android.<wbr/>jpeg.<wbr/>gps<wbr/>Location
16025            </td>
16026            <td class="entry_type">
16027                <span class="entry_type_name">byte</span>
16028
16029              <span class="entry_type_visibility"> [java_public as location]</span>
16030
16031              <span class="entry_type_synthetic">[synthetic] </span>
16032
16033              <span class="entry_type_hwlevel">[legacy] </span>
16034
16035
16036
16037
16038            </td> <!-- entry_type -->
16039
16040            <td class="entry_description">
16041              <p>A location object to use when generating image GPS metadata.<wbr/></p>
16042            </td>
16043
16044            <td class="entry_units">
16045            </td>
16046
16047            <td class="entry_range">
16048            </td>
16049
16050            <td class="entry_hal_version">
16051              <p>3.<wbr/>2</p>
16052            </td>
16053
16054            <td class="entry_tags">
16055            </td>
16056
16057          </tr>
16058          <tr class="entries_header">
16059            <th class="th_details" colspan="6">Details</th>
16060          </tr>
16061          <tr class="entry_cont">
16062            <td class="entry_details" colspan="6">
16063              <p>Setting a location object in a request will include the GPS coordinates of the location
16064into any JPEG images captured based on the request.<wbr/> These coordinates can then be
16065viewed by anyone who receives the JPEG image.<wbr/></p>
16066<p>This tag is also used for HEIC image capture.<wbr/></p>
16067            </td>
16068          </tr>
16069
16070
16071          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16072           <!-- end of entry -->
16073
16074
16075          <tr class="entry" id="dynamic_android.jpeg.gpsCoordinates">
16076            <td class="entry_name
16077             " rowspan="3">
16078              android.<wbr/>jpeg.<wbr/>gps<wbr/>Coordinates
16079            </td>
16080            <td class="entry_type">
16081                <span class="entry_type_name">double</span>
16082                <span class="entry_type_container">x</span>
16083
16084                <span class="entry_type_array">
16085                  3
16086                </span>
16087              <span class="entry_type_visibility"> [ndk_public]</span>
16088
16089
16090              <span class="entry_type_hwlevel">[legacy] </span>
16091
16092
16093                <div class="entry_type_notes">latitude,<wbr/> longitude,<wbr/> altitude.<wbr/> First two in degrees,<wbr/> the third in meters</div>
16094
16095
16096            </td> <!-- entry_type -->
16097
16098            <td class="entry_description">
16099              <p>GPS coordinates to include in output JPEG
16100EXIF.<wbr/></p>
16101            </td>
16102
16103            <td class="entry_units">
16104            </td>
16105
16106            <td class="entry_range">
16107              <p>(-180 - 180],<wbr/> [-90,<wbr/>90],<wbr/> [-inf,<wbr/> inf]</p>
16108            </td>
16109
16110            <td class="entry_hal_version">
16111              <p>3.<wbr/>2</p>
16112            </td>
16113
16114            <td class="entry_tags">
16115              <ul class="entry_tags">
16116                  <li><a href="#tag_BC">BC</a></li>
16117              </ul>
16118            </td>
16119
16120          </tr>
16121          <tr class="entries_header">
16122            <th class="th_details" colspan="6">Details</th>
16123          </tr>
16124          <tr class="entry_cont">
16125            <td class="entry_details" colspan="6">
16126              <p>This tag is also used for HEIC image capture.<wbr/></p>
16127            </td>
16128          </tr>
16129
16130
16131          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16132           <!-- end of entry -->
16133
16134
16135          <tr class="entry" id="dynamic_android.jpeg.gpsProcessingMethod">
16136            <td class="entry_name
16137             " rowspan="3">
16138              android.<wbr/>jpeg.<wbr/>gps<wbr/>Processing<wbr/>Method
16139            </td>
16140            <td class="entry_type">
16141                <span class="entry_type_name">byte</span>
16142
16143              <span class="entry_type_visibility"> [ndk_public as string]</span>
16144
16145
16146              <span class="entry_type_hwlevel">[legacy] </span>
16147
16148
16149
16150
16151            </td> <!-- entry_type -->
16152
16153            <td class="entry_description">
16154              <p>32 characters describing GPS algorithm to
16155include in EXIF.<wbr/></p>
16156            </td>
16157
16158            <td class="entry_units">
16159              UTF-8 null-terminated string
16160            </td>
16161
16162            <td class="entry_range">
16163            </td>
16164
16165            <td class="entry_hal_version">
16166              <p>3.<wbr/>2</p>
16167            </td>
16168
16169            <td class="entry_tags">
16170              <ul class="entry_tags">
16171                  <li><a href="#tag_BC">BC</a></li>
16172              </ul>
16173            </td>
16174
16175          </tr>
16176          <tr class="entries_header">
16177            <th class="th_details" colspan="6">Details</th>
16178          </tr>
16179          <tr class="entry_cont">
16180            <td class="entry_details" colspan="6">
16181              <p>This tag is also used for HEIC image capture.<wbr/></p>
16182            </td>
16183          </tr>
16184
16185
16186          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16187           <!-- end of entry -->
16188
16189
16190          <tr class="entry" id="dynamic_android.jpeg.gpsTimestamp">
16191            <td class="entry_name
16192             " rowspan="3">
16193              android.<wbr/>jpeg.<wbr/>gps<wbr/>Timestamp
16194            </td>
16195            <td class="entry_type">
16196                <span class="entry_type_name">int64</span>
16197
16198              <span class="entry_type_visibility"> [ndk_public]</span>
16199
16200
16201              <span class="entry_type_hwlevel">[legacy] </span>
16202
16203
16204
16205
16206            </td> <!-- entry_type -->
16207
16208            <td class="entry_description">
16209              <p>Time GPS fix was made to include in
16210EXIF.<wbr/></p>
16211            </td>
16212
16213            <td class="entry_units">
16214              UTC in seconds since January 1,<wbr/> 1970
16215            </td>
16216
16217            <td class="entry_range">
16218            </td>
16219
16220            <td class="entry_hal_version">
16221              <p>3.<wbr/>2</p>
16222            </td>
16223
16224            <td class="entry_tags">
16225              <ul class="entry_tags">
16226                  <li><a href="#tag_BC">BC</a></li>
16227              </ul>
16228            </td>
16229
16230          </tr>
16231          <tr class="entries_header">
16232            <th class="th_details" colspan="6">Details</th>
16233          </tr>
16234          <tr class="entry_cont">
16235            <td class="entry_details" colspan="6">
16236              <p>This tag is also used for HEIC image capture.<wbr/></p>
16237            </td>
16238          </tr>
16239
16240
16241          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16242           <!-- end of entry -->
16243
16244
16245          <tr class="entry" id="dynamic_android.jpeg.orientation">
16246            <td class="entry_name
16247             " rowspan="3">
16248              android.<wbr/>jpeg.<wbr/>orientation
16249            </td>
16250            <td class="entry_type">
16251                <span class="entry_type_name">int32</span>
16252
16253              <span class="entry_type_visibility"> [public]</span>
16254
16255
16256              <span class="entry_type_hwlevel">[legacy] </span>
16257
16258
16259
16260
16261            </td> <!-- entry_type -->
16262
16263            <td class="entry_description">
16264              <p>The orientation for a JPEG image.<wbr/></p>
16265            </td>
16266
16267            <td class="entry_units">
16268              Degrees in multiples of 90
16269            </td>
16270
16271            <td class="entry_range">
16272              <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p>
16273            </td>
16274
16275            <td class="entry_hal_version">
16276              <p>3.<wbr/>2</p>
16277            </td>
16278
16279            <td class="entry_tags">
16280              <ul class="entry_tags">
16281                  <li><a href="#tag_BC">BC</a></li>
16282              </ul>
16283            </td>
16284
16285          </tr>
16286          <tr class="entries_header">
16287            <th class="th_details" colspan="6">Details</th>
16288          </tr>
16289          <tr class="entry_cont">
16290            <td class="entry_details" colspan="6">
16291              <p>The clockwise rotation angle in degrees,<wbr/> relative to the orientation
16292to the camera,<wbr/> that the JPEG picture needs to be rotated by,<wbr/> to be viewed
16293upright.<wbr/></p>
16294<p>Camera devices may either encode this value into the JPEG EXIF header,<wbr/> or
16295rotate the image data to match this orientation.<wbr/> When the image data is rotated,<wbr/>
16296the thumbnail data will also be rotated.<wbr/> Additionally,<wbr/> in the case where the image data
16297is rotated,<wbr/> <a href="https://developer.android.com/reference/android/media/Image.html#getWidth">Image#getWidth</a> and <a href="https://developer.android.com/reference/android/media/Image.html#getHeight">Image#getHeight</a>
16298will not be updated to reflect the height and width of the rotated image.<wbr/></p>
16299<p>Note that this orientation is relative to the orientation of the camera sensor,<wbr/> given
16300by <a href="#static_android.sensor.orientation">android.<wbr/>sensor.<wbr/>orientation</a>.<wbr/></p>
16301<p>To translate from the device orientation given by the Android sensor APIs for camera
16302sensors which are not EXTERNAL,<wbr/> the following sample code may be used:</p>
16303<pre><code>private int getJpegOrientation(CameraCharacteristics c,<wbr/> int deviceOrientation) {
16304    if (deviceOrientation == android.<wbr/>view.<wbr/>Orientation<wbr/>Event<wbr/>Listener.<wbr/>ORIENTATION_<wbr/>UNKNOWN) return 0;
16305    int sensorOrientation = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>SENSOR_<wbr/>ORIENTATION);
16306
16307    //<wbr/> Round device orientation to a multiple of 90
16308    deviceOrientation = (deviceOrientation + 45) /<wbr/> 90 * 90;
16309
16310    //<wbr/> Reverse device orientation for front-facing cameras
16311    boolean facingFront = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING) == Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING_<wbr/>FRONT;
16312    if (facingFront) deviceOrientation = -deviceOrientation;
16313
16314    //<wbr/> Calculate desired JPEG orientation relative to camera orientation to make
16315    //<wbr/> the image upright relative to the device orientation
16316    int jpegOrientation = (sensorOrientation + deviceOrientation + 360) % 360;
16317
16318    return jpegOrientation;
16319}
16320</code></pre>
16321<p>For EXTERNAL cameras the sensor orientation will always be set to 0 and the facing will
16322also be set to EXTERNAL.<wbr/> The above code is not relevant in such case.<wbr/></p>
16323<p>This tag is also used to describe the orientation of the HEIC image capture,<wbr/> in which
16324case the rotation is reflected by
16325<a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>,<wbr/> and not by
16326rotating the image data itself.<wbr/></p>
16327            </td>
16328          </tr>
16329
16330
16331          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16332           <!-- end of entry -->
16333
16334
16335          <tr class="entry" id="dynamic_android.jpeg.quality">
16336            <td class="entry_name
16337             " rowspan="3">
16338              android.<wbr/>jpeg.<wbr/>quality
16339            </td>
16340            <td class="entry_type">
16341                <span class="entry_type_name">byte</span>
16342
16343              <span class="entry_type_visibility"> [public]</span>
16344
16345
16346              <span class="entry_type_hwlevel">[legacy] </span>
16347
16348
16349
16350
16351            </td> <!-- entry_type -->
16352
16353            <td class="entry_description">
16354              <p>Compression quality of the final JPEG
16355image.<wbr/></p>
16356            </td>
16357
16358            <td class="entry_units">
16359            </td>
16360
16361            <td class="entry_range">
16362              <p>1-100; larger is higher quality</p>
16363            </td>
16364
16365            <td class="entry_hal_version">
16366              <p>3.<wbr/>2</p>
16367            </td>
16368
16369            <td class="entry_tags">
16370              <ul class="entry_tags">
16371                  <li><a href="#tag_BC">BC</a></li>
16372              </ul>
16373            </td>
16374
16375          </tr>
16376          <tr class="entries_header">
16377            <th class="th_details" colspan="6">Details</th>
16378          </tr>
16379          <tr class="entry_cont">
16380            <td class="entry_details" colspan="6">
16381              <p>85-95 is typical usage range.<wbr/> This tag is also used to describe the quality
16382of the HEIC image capture.<wbr/></p>
16383            </td>
16384          </tr>
16385
16386
16387          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16388           <!-- end of entry -->
16389
16390
16391          <tr class="entry" id="dynamic_android.jpeg.size">
16392            <td class="entry_name
16393             " rowspan="3">
16394              android.<wbr/>jpeg.<wbr/>size
16395            </td>
16396            <td class="entry_type">
16397                <span class="entry_type_name">int32</span>
16398
16399              <span class="entry_type_visibility"> [system]</span>
16400
16401
16402
16403
16404
16405
16406            </td> <!-- entry_type -->
16407
16408            <td class="entry_description">
16409              <p>The size of the compressed JPEG image,<wbr/> in
16410bytes</p>
16411            </td>
16412
16413            <td class="entry_units">
16414            </td>
16415
16416            <td class="entry_range">
16417              <p>&gt;= 0</p>
16418            </td>
16419
16420            <td class="entry_hal_version">
16421              <p>3.<wbr/>2</p>
16422            </td>
16423
16424            <td class="entry_tags">
16425              <ul class="entry_tags">
16426                  <li><a href="#tag_FUTURE">FUTURE</a></li>
16427              </ul>
16428            </td>
16429
16430          </tr>
16431          <tr class="entries_header">
16432            <th class="th_details" colspan="6">Details</th>
16433          </tr>
16434          <tr class="entry_cont">
16435            <td class="entry_details" colspan="6">
16436              <p>If no JPEG output is produced for the request,<wbr/>
16437this must be 0.<wbr/></p>
16438<p>Otherwise,<wbr/> this describes the real size of the compressed
16439JPEG image placed in the output stream.<wbr/>  More specifically,<wbr/>
16440if <a href="#static_android.jpeg.maxSize">android.<wbr/>jpeg.<wbr/>max<wbr/>Size</a> = 1000000,<wbr/> and a specific capture
16441has <a href="#dynamic_android.jpeg.size">android.<wbr/>jpeg.<wbr/>size</a> = 500000,<wbr/> then the output buffer from
16442the JPEG stream will be 1000000 bytes,<wbr/> of which the first
16443500000 make up the real data.<wbr/></p>
16444            </td>
16445          </tr>
16446
16447
16448          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16449           <!-- end of entry -->
16450
16451
16452          <tr class="entry" id="dynamic_android.jpeg.thumbnailQuality">
16453            <td class="entry_name
16454             " rowspan="3">
16455              android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Quality
16456            </td>
16457            <td class="entry_type">
16458                <span class="entry_type_name">byte</span>
16459
16460              <span class="entry_type_visibility"> [public]</span>
16461
16462
16463              <span class="entry_type_hwlevel">[legacy] </span>
16464
16465
16466
16467
16468            </td> <!-- entry_type -->
16469
16470            <td class="entry_description">
16471              <p>Compression quality of JPEG
16472thumbnail.<wbr/></p>
16473            </td>
16474
16475            <td class="entry_units">
16476            </td>
16477
16478            <td class="entry_range">
16479              <p>1-100; larger is higher quality</p>
16480            </td>
16481
16482            <td class="entry_hal_version">
16483              <p>3.<wbr/>2</p>
16484            </td>
16485
16486            <td class="entry_tags">
16487              <ul class="entry_tags">
16488                  <li><a href="#tag_BC">BC</a></li>
16489              </ul>
16490            </td>
16491
16492          </tr>
16493          <tr class="entries_header">
16494            <th class="th_details" colspan="6">Details</th>
16495          </tr>
16496          <tr class="entry_cont">
16497            <td class="entry_details" colspan="6">
16498              <p>This tag is also used to describe the quality of the HEIC image capture.<wbr/></p>
16499            </td>
16500          </tr>
16501
16502
16503          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16504           <!-- end of entry -->
16505
16506
16507          <tr class="entry" id="dynamic_android.jpeg.thumbnailSize">
16508            <td class="entry_name
16509             " rowspan="5">
16510              android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size
16511            </td>
16512            <td class="entry_type">
16513                <span class="entry_type_name">int32</span>
16514                <span class="entry_type_container">x</span>
16515
16516                <span class="entry_type_array">
16517                  2
16518                </span>
16519              <span class="entry_type_visibility"> [public as size]</span>
16520
16521
16522              <span class="entry_type_hwlevel">[legacy] </span>
16523
16524
16525
16526
16527            </td> <!-- entry_type -->
16528
16529            <td class="entry_description">
16530              <p>Resolution of embedded JPEG thumbnail.<wbr/></p>
16531            </td>
16532
16533            <td class="entry_units">
16534            </td>
16535
16536            <td class="entry_range">
16537              <p><a href="#static_android.jpeg.availableThumbnailSizes">android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes</a></p>
16538            </td>
16539
16540            <td class="entry_hal_version">
16541              <p>3.<wbr/>2</p>
16542            </td>
16543
16544            <td class="entry_tags">
16545              <ul class="entry_tags">
16546                  <li><a href="#tag_BC">BC</a></li>
16547              </ul>
16548            </td>
16549
16550          </tr>
16551          <tr class="entries_header">
16552            <th class="th_details" colspan="6">Details</th>
16553          </tr>
16554          <tr class="entry_cont">
16555            <td class="entry_details" colspan="6">
16556              <p>When set to (0,<wbr/> 0) value,<wbr/> the JPEG EXIF will not contain thumbnail,<wbr/>
16557but the captured JPEG will still be a valid image.<wbr/></p>
16558<p>For best results,<wbr/> when issuing a request for a JPEG image,<wbr/> the thumbnail size selected
16559should have the same aspect ratio as the main JPEG output.<wbr/></p>
16560<p>If the thumbnail image aspect ratio differs from the JPEG primary image aspect
16561ratio,<wbr/> the camera device creates the thumbnail by cropping it from the primary image.<wbr/>
16562For example,<wbr/> if the primary image has 4:3 aspect ratio,<wbr/> the thumbnail image has
1656316:9 aspect ratio,<wbr/> the primary image will be cropped vertically (letterbox) to
16564generate the thumbnail image.<wbr/> The thumbnail image will always have a smaller Field
16565Of View (FOV) than the primary image when aspect ratios differ.<wbr/></p>
16566<p>When an <a href="#controls_android.jpeg.orientation">android.<wbr/>jpeg.<wbr/>orientation</a> of non-zero degree is requested,<wbr/>
16567the camera device will handle thumbnail rotation in one of the following ways:</p>
16568<ul>
16569<li>Set the <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>
16570  and keep jpeg and thumbnail image data unrotated.<wbr/></li>
16571<li>Rotate the jpeg and thumbnail image data and not set
16572  <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>.<wbr/> In this
16573  case,<wbr/> LIMITED or FULL hardware level devices will report rotated thumbnail size in
16574  capture result,<wbr/> so the width and height will be interchanged if 90 or 270 degree
16575  orientation is requested.<wbr/> LEGACY device will always report unrotated thumbnail
16576  size.<wbr/></li>
16577</ul>
16578<p>The tag is also used as thumbnail size for HEIC image format capture,<wbr/> in which case the
16579the thumbnail rotation is reflected by
16580<a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>,<wbr/> and not by
16581rotating the thumbnail data itself.<wbr/></p>
16582            </td>
16583          </tr>
16584
16585          <tr class="entries_header">
16586            <th class="th_details" colspan="6">HAL Implementation Details</th>
16587          </tr>
16588          <tr class="entry_cont">
16589            <td class="entry_details" colspan="6">
16590              <p>The HAL must not squeeze or stretch the downscaled primary image to generate thumbnail.<wbr/>
16591The cropping must be done on the primary jpeg image rather than the sensor pre-correction
16592active array.<wbr/> The stream cropping rule specified by "S5.<wbr/> Cropping" in camera3.<wbr/>h doesn't
16593apply to the thumbnail image cropping.<wbr/></p>
16594            </td>
16595          </tr>
16596
16597          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16598           <!-- end of entry -->
16599
16600
16601
16602      <!-- end of kind -->
16603      </tbody>
16604
16605  <!-- end of section -->
16606  <tr><td colspan="7" id="section_lens" class="section">lens</td></tr>
16607
16608
16609      <tr><td colspan="7" class="kind">controls</td></tr>
16610
16611      <thead class="entries_header">
16612        <tr>
16613          <th class="th_name">Property Name</th>
16614          <th class="th_type">Type</th>
16615          <th class="th_description">Description</th>
16616          <th class="th_units">Units</th>
16617          <th class="th_range">Range</th>
16618          <th class="th_hal_version">Initial HIDL HAL version</th>
16619          <th class="th_tags">Tags</th>
16620        </tr>
16621      </thead>
16622
16623      <tbody>
16624
16625
16626
16627
16628
16629
16630
16631
16632
16633
16634          <tr class="entry" id="controls_android.lens.aperture">
16635            <td class="entry_name
16636             " rowspan="3">
16637              android.<wbr/>lens.<wbr/>aperture
16638            </td>
16639            <td class="entry_type">
16640                <span class="entry_type_name">float</span>
16641
16642              <span class="entry_type_visibility"> [public]</span>
16643
16644
16645              <span class="entry_type_hwlevel">[full] </span>
16646
16647
16648
16649
16650            </td> <!-- entry_type -->
16651
16652            <td class="entry_description">
16653              <p>The desired lens aperture size,<wbr/> as a ratio of lens focal length to the
16654effective aperture diameter.<wbr/></p>
16655            </td>
16656
16657            <td class="entry_units">
16658              The f-number (f/<wbr/>N)
16659            </td>
16660
16661            <td class="entry_range">
16662              <p><a href="#static_android.lens.info.availableApertures">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures</a></p>
16663            </td>
16664
16665            <td class="entry_hal_version">
16666              <p>3.<wbr/>2</p>
16667            </td>
16668
16669            <td class="entry_tags">
16670              <ul class="entry_tags">
16671                  <li><a href="#tag_V1">V1</a></li>
16672              </ul>
16673            </td>
16674
16675          </tr>
16676          <tr class="entries_header">
16677            <th class="th_details" colspan="6">Details</th>
16678          </tr>
16679          <tr class="entry_cont">
16680            <td class="entry_details" colspan="6">
16681              <p>Setting this value is only supported on the camera devices that have a variable
16682aperture lens.<wbr/></p>
16683<p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/>
16684this can be set along with <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
16685<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>
16686to achieve manual exposure control.<wbr/></p>
16687<p>The requested aperture value may take several frames to reach the
16688requested value; the camera device will report the current (intermediate)
16689aperture size in capture result metadata while the aperture is changing.<wbr/>
16690While 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>
16691<p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is one of
16692the ON modes,<wbr/> this will be overridden by the camera device
16693auto-exposure algorithm,<wbr/> the overridden values are then provided
16694back to the user in the corresponding result.<wbr/></p>
16695            </td>
16696          </tr>
16697
16698
16699          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16700           <!-- end of entry -->
16701
16702
16703          <tr class="entry" id="controls_android.lens.filterDensity">
16704            <td class="entry_name
16705             " rowspan="3">
16706              android.<wbr/>lens.<wbr/>filter<wbr/>Density
16707            </td>
16708            <td class="entry_type">
16709                <span class="entry_type_name">float</span>
16710
16711              <span class="entry_type_visibility"> [public]</span>
16712
16713
16714              <span class="entry_type_hwlevel">[full] </span>
16715
16716
16717
16718
16719            </td> <!-- entry_type -->
16720
16721            <td class="entry_description">
16722              <p>The desired setting for the lens neutral density filter(s).<wbr/></p>
16723            </td>
16724
16725            <td class="entry_units">
16726              Exposure Value (EV)
16727            </td>
16728
16729            <td class="entry_range">
16730              <p><a href="#static_android.lens.info.availableFilterDensities">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities</a></p>
16731            </td>
16732
16733            <td class="entry_hal_version">
16734              <p>3.<wbr/>2</p>
16735            </td>
16736
16737            <td class="entry_tags">
16738              <ul class="entry_tags">
16739                  <li><a href="#tag_V1">V1</a></li>
16740              </ul>
16741            </td>
16742
16743          </tr>
16744          <tr class="entries_header">
16745            <th class="th_details" colspan="6">Details</th>
16746          </tr>
16747          <tr class="entry_cont">
16748            <td class="entry_details" colspan="6">
16749              <p>This control will not be supported on most camera devices.<wbr/></p>
16750<p>Lens filters are typically used to lower the amount of light the
16751sensor is exposed to (measured in steps of EV).<wbr/> As used here,<wbr/> an EV
16752step is the standard logarithmic representation,<wbr/> which are
16753non-negative,<wbr/> and inversely proportional to the amount of light
16754hitting the sensor.<wbr/>  For example,<wbr/> setting this to 0 would result
16755in no reduction of the incoming light,<wbr/> and setting this to 2 would
16756mean that the filter is set to reduce incoming light by two stops
16757(allowing 1/<wbr/>4 of the prior amount of light to the sensor).<wbr/></p>
16758<p>It may take several frames before the lens filter density changes
16759to the requested value.<wbr/> While the filter density is still changing,<wbr/>
16760<a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p>
16761            </td>
16762          </tr>
16763
16764
16765          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16766           <!-- end of entry -->
16767
16768
16769          <tr class="entry" id="controls_android.lens.focalLength">
16770            <td class="entry_name
16771             " rowspan="5">
16772              android.<wbr/>lens.<wbr/>focal<wbr/>Length
16773            </td>
16774            <td class="entry_type">
16775                <span class="entry_type_name">float</span>
16776
16777              <span class="entry_type_visibility"> [public]</span>
16778
16779
16780              <span class="entry_type_hwlevel">[legacy] </span>
16781
16782
16783
16784
16785            </td> <!-- entry_type -->
16786
16787            <td class="entry_description">
16788              <p>The desired lens focal length; used for optical zoom.<wbr/></p>
16789            </td>
16790
16791            <td class="entry_units">
16792              Millimeters
16793            </td>
16794
16795            <td class="entry_range">
16796              <p><a href="#static_android.lens.info.availableFocalLengths">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths</a></p>
16797            </td>
16798
16799            <td class="entry_hal_version">
16800              <p>3.<wbr/>2</p>
16801            </td>
16802
16803            <td class="entry_tags">
16804              <ul class="entry_tags">
16805                  <li><a href="#tag_V1">V1</a></li>
16806              </ul>
16807            </td>
16808
16809          </tr>
16810          <tr class="entries_header">
16811            <th class="th_details" colspan="6">Details</th>
16812          </tr>
16813          <tr class="entry_cont">
16814            <td class="entry_details" colspan="6">
16815              <p>This setting controls the physical focal length of the camera
16816device's lens.<wbr/> Changing the focal length changes the field of
16817view of the camera device,<wbr/> and is usually used for optical zoom.<wbr/></p>
16818<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
16819setting won't be applied instantaneously,<wbr/> and it may take several
16820frames before the lens can change to the requested focal length.<wbr/>
16821While the focal length is still changing,<wbr/> <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will
16822be set to MOVING.<wbr/></p>
16823<p>Optical zoom via this control will not be supported on most devices.<wbr/> Starting from API
16824level 30,<wbr/> the camera device may combine optical and digital zoom through the
16825<a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> control.<wbr/></p>
16826            </td>
16827          </tr>
16828
16829          <tr class="entries_header">
16830            <th class="th_details" colspan="6">HAL Implementation Details</th>
16831          </tr>
16832          <tr class="entry_cont">
16833            <td class="entry_details" colspan="6">
16834              <p>For a logical camera device supporting both optical and digital zoom,<wbr/> if focalLength and
16835cropRegion change in the same request,<wbr/> the camera device must make sure that the new
16836focalLength and cropRegion take effect in the same frame.<wbr/> This is to make sure that there
16837is no visible field-of-view jump during zoom.<wbr/> For example,<wbr/> if cropRegion is applied
16838immediately,<wbr/> but focalLength takes more than 1 frame to take effect,<wbr/> the camera device
16839will delay the cropRegion so that it's synchronized with focalLength.<wbr/></p>
16840<p>Starting from API level 30,<wbr/> it's strongly recommended for HAL to implement the
16841combination of optical and digital zoom using the new <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> API,<wbr/> in
16842lieu of using <a href="#controls_android.lens.focalLength">android.<wbr/>lens.<wbr/>focal<wbr/>Length</a> and <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></p>
16843            </td>
16844          </tr>
16845
16846          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16847           <!-- end of entry -->
16848
16849
16850          <tr class="entry" id="controls_android.lens.focusDistance">
16851            <td class="entry_name
16852             " rowspan="3">
16853              android.<wbr/>lens.<wbr/>focus<wbr/>Distance
16854            </td>
16855            <td class="entry_type">
16856                <span class="entry_type_name">float</span>
16857
16858              <span class="entry_type_visibility"> [public]</span>
16859
16860
16861              <span class="entry_type_hwlevel">[full] </span>
16862
16863
16864
16865
16866            </td> <!-- entry_type -->
16867
16868            <td class="entry_description">
16869              <p>Desired distance to plane of sharpest focus,<wbr/>
16870measured from frontmost surface of the lens.<wbr/></p>
16871            </td>
16872
16873            <td class="entry_units">
16874              See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
16875            </td>
16876
16877            <td class="entry_range">
16878              <p>&gt;= 0</p>
16879            </td>
16880
16881            <td class="entry_hal_version">
16882              <p>3.<wbr/>2</p>
16883            </td>
16884
16885            <td class="entry_tags">
16886              <ul class="entry_tags">
16887                  <li><a href="#tag_BC">BC</a></li>
16888                  <li><a href="#tag_V1">V1</a></li>
16889              </ul>
16890            </td>
16891
16892          </tr>
16893          <tr class="entries_header">
16894            <th class="th_details" colspan="6">Details</th>
16895          </tr>
16896          <tr class="entry_cont">
16897            <td class="entry_details" colspan="6">
16898              <p>This control can be used for setting manual focus,<wbr/> on devices that support
16899the MANUAL_<wbr/>SENSOR capability and have a variable-focus lens (see
16900<a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a>).<wbr/></p>
16901<p>A value of <code>0.<wbr/>0f</code> means infinity focus.<wbr/> The value set will be clamped to
16902<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>
16903<p>Like <a href="#controls_android.lens.focalLength">android.<wbr/>lens.<wbr/>focal<wbr/>Length</a>,<wbr/> this setting won't be applied
16904instantaneously,<wbr/> and it may take several frames before the lens
16905can move to the requested focus distance.<wbr/> While the lens is still moving,<wbr/>
16906<a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p>
16907<p>LEGACY devices support at most setting this to <code>0.<wbr/>0f</code>
16908for infinity focus.<wbr/></p>
16909            </td>
16910          </tr>
16911
16912
16913          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16914           <!-- end of entry -->
16915
16916
16917          <tr class="entry" id="controls_android.lens.opticalStabilizationMode">
16918            <td class="entry_name
16919             " rowspan="3">
16920              android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode
16921            </td>
16922            <td class="entry_type">
16923                <span class="entry_type_name entry_type_name_enum">byte</span>
16924
16925              <span class="entry_type_visibility"> [public]</span>
16926
16927
16928              <span class="entry_type_hwlevel">[limited] </span>
16929
16930
16931
16932                <ul class="entry_type_enum">
16933                  <li>
16934                    <span class="entry_type_enum_name">OFF (v3.2)</span>
16935                    <span class="entry_type_enum_notes"><p>Optical stabilization is unavailable.<wbr/></p></span>
16936                  </li>
16937                  <li>
16938                    <span class="entry_type_enum_name">ON (v3.2)</span>
16939                    <span class="entry_type_enum_optional">[optional]</span>
16940                    <span class="entry_type_enum_notes"><p>Optical stabilization is enabled.<wbr/></p></span>
16941                  </li>
16942                </ul>
16943
16944            </td> <!-- entry_type -->
16945
16946            <td class="entry_description">
16947              <p>Sets whether the camera device uses optical image stabilization (OIS)
16948when capturing images.<wbr/></p>
16949            </td>
16950
16951            <td class="entry_units">
16952            </td>
16953
16954            <td class="entry_range">
16955              <p><a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a></p>
16956            </td>
16957
16958            <td class="entry_hal_version">
16959              <p>3.<wbr/>2</p>
16960            </td>
16961
16962            <td class="entry_tags">
16963              <ul class="entry_tags">
16964                  <li><a href="#tag_V1">V1</a></li>
16965              </ul>
16966            </td>
16967
16968          </tr>
16969          <tr class="entries_header">
16970            <th class="th_details" colspan="6">Details</th>
16971          </tr>
16972          <tr class="entry_cont">
16973            <td class="entry_details" colspan="6">
16974              <p>OIS is used to compensate for motion blur due to small
16975movements of the camera during capture.<wbr/> Unlike digital image
16976stabilization (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> OIS
16977makes use of mechanical elements to stabilize the camera
16978sensor,<wbr/> and thus allows for longer exposure times before
16979camera shake becomes apparent.<wbr/></p>
16980<p>Switching between different optical stabilization modes may take several
16981frames to initialize,<wbr/> the camera device will report the current mode in
16982capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/> the
16983optical stabilization modes in the first several capture results may still
16984be "OFF",<wbr/> and it will become "ON" when the initialization is done.<wbr/></p>
16985<p>If a camera device supports both OIS and digital image stabilization
16986(<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may produce undesirable
16987interaction,<wbr/> so it is recommended not to enable both at the same time.<wbr/></p>
16988<p>If <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a> is set to "PREVIEW_<wbr/>STABILIZATION",<wbr/>
16989<a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> is overridden.<wbr/> The camera sub-system may choose
16990to turn on hardware based image stabilization in addition to software based stabilization
16991if it deems that appropriate.<wbr/> This key's value in the capture result will reflect which
16992OIS mode was chosen.<wbr/></p>
16993<p>Not all devices will support OIS; see
16994<a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a> for
16995available controls.<wbr/></p>
16996            </td>
16997          </tr>
16998
16999
17000          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17001           <!-- end of entry -->
17002
17003
17004
17005      <!-- end of kind -->
17006      </tbody>
17007      <tr><td colspan="7" class="kind">static</td></tr>
17008
17009      <thead class="entries_header">
17010        <tr>
17011          <th class="th_name">Property Name</th>
17012          <th class="th_type">Type</th>
17013          <th class="th_description">Description</th>
17014          <th class="th_units">Units</th>
17015          <th class="th_range">Range</th>
17016          <th class="th_hal_version">Initial HIDL HAL version</th>
17017          <th class="th_tags">Tags</th>
17018        </tr>
17019      </thead>
17020
17021      <tbody>
17022
17023
17024
17025
17026
17027
17028
17029
17030
17031
17032
17033
17034          <tr class="entry" id="static_android.lens.info.availableApertures">
17035            <td class="entry_name
17036             " rowspan="3">
17037              android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures
17038            </td>
17039            <td class="entry_type">
17040                <span class="entry_type_name">float</span>
17041                <span class="entry_type_container">x</span>
17042
17043                <span class="entry_type_array">
17044                  n
17045                </span>
17046              <span class="entry_type_visibility"> [public]</span>
17047
17048
17049              <span class="entry_type_hwlevel">[full] </span>
17050
17051
17052
17053
17054            </td> <!-- entry_type -->
17055
17056            <td class="entry_description">
17057              <p>List of aperture size values for <a href="#controls_android.lens.aperture">android.<wbr/>lens.<wbr/>aperture</a> that are
17058supported by this camera device.<wbr/></p>
17059            </td>
17060
17061            <td class="entry_units">
17062              The aperture f-number
17063            </td>
17064
17065            <td class="entry_range">
17066            </td>
17067
17068            <td class="entry_hal_version">
17069              <p>3.<wbr/>2</p>
17070            </td>
17071
17072            <td class="entry_tags">
17073              <ul class="entry_tags">
17074                  <li><a href="#tag_V1">V1</a></li>
17075              </ul>
17076            </td>
17077
17078          </tr>
17079          <tr class="entries_header">
17080            <th class="th_details" colspan="6">Details</th>
17081          </tr>
17082          <tr class="entry_cont">
17083            <td class="entry_details" colspan="6">
17084              <p>If the camera device doesn't support a variable lens aperture,<wbr/>
17085this list will contain only one value,<wbr/> which is the fixed aperture size.<wbr/></p>
17086<p>If the camera device supports a variable aperture,<wbr/> the aperture values
17087in this list will be sorted in ascending order.<wbr/></p>
17088            </td>
17089          </tr>
17090
17091
17092          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17093           <!-- end of entry -->
17094
17095
17096          <tr class="entry" id="static_android.lens.info.availableFilterDensities">
17097            <td class="entry_name
17098             " rowspan="3">
17099              android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities
17100            </td>
17101            <td class="entry_type">
17102                <span class="entry_type_name">float</span>
17103                <span class="entry_type_container">x</span>
17104
17105                <span class="entry_type_array">
17106                  n
17107                </span>
17108              <span class="entry_type_visibility"> [public]</span>
17109
17110
17111              <span class="entry_type_hwlevel">[full] </span>
17112
17113
17114
17115
17116            </td> <!-- entry_type -->
17117
17118            <td class="entry_description">
17119              <p>List of neutral density filter values for
17120<a href="#controls_android.lens.filterDensity">android.<wbr/>lens.<wbr/>filter<wbr/>Density</a> that are supported by this camera device.<wbr/></p>
17121            </td>
17122
17123            <td class="entry_units">
17124              Exposure value (EV)
17125            </td>
17126
17127            <td class="entry_range">
17128              <p>Values are &gt;= 0</p>
17129            </td>
17130
17131            <td class="entry_hal_version">
17132              <p>3.<wbr/>2</p>
17133            </td>
17134
17135            <td class="entry_tags">
17136              <ul class="entry_tags">
17137                  <li><a href="#tag_V1">V1</a></li>
17138              </ul>
17139            </td>
17140
17141          </tr>
17142          <tr class="entries_header">
17143            <th class="th_details" colspan="6">Details</th>
17144          </tr>
17145          <tr class="entry_cont">
17146            <td class="entry_details" colspan="6">
17147              <p>If a neutral density filter is not supported by this camera device,<wbr/>
17148this list will contain only 0.<wbr/> Otherwise,<wbr/> this list will include every
17149filter density supported by the camera device,<wbr/> in ascending order.<wbr/></p>
17150            </td>
17151          </tr>
17152
17153
17154          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17155           <!-- end of entry -->
17156
17157
17158          <tr class="entry" id="static_android.lens.info.availableFocalLengths">
17159            <td class="entry_name
17160             " rowspan="3">
17161              android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths
17162            </td>
17163            <td class="entry_type">
17164                <span class="entry_type_name">float</span>
17165                <span class="entry_type_container">x</span>
17166
17167                <span class="entry_type_array">
17168                  n
17169                </span>
17170              <span class="entry_type_visibility"> [public]</span>
17171
17172
17173              <span class="entry_type_hwlevel">[legacy] </span>
17174
17175
17176                <div class="entry_type_notes">The list of available focal lengths</div>
17177
17178
17179            </td> <!-- entry_type -->
17180
17181            <td class="entry_description">
17182              <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
17183device.<wbr/></p>
17184            </td>
17185
17186            <td class="entry_units">
17187              Millimeters
17188            </td>
17189
17190            <td class="entry_range">
17191              <p>Values are &gt; 0</p>
17192            </td>
17193
17194            <td class="entry_hal_version">
17195              <p>3.<wbr/>2</p>
17196            </td>
17197
17198            <td class="entry_tags">
17199              <ul class="entry_tags">
17200                  <li><a href="#tag_BC">BC</a></li>
17201                  <li><a href="#tag_V1">V1</a></li>
17202              </ul>
17203            </td>
17204
17205          </tr>
17206          <tr class="entries_header">
17207            <th class="th_details" colspan="6">Details</th>
17208          </tr>
17209          <tr class="entry_cont">
17210            <td class="entry_details" colspan="6">
17211              <p>If optical zoom is not supported,<wbr/> this list will only contain
17212a single value corresponding to the fixed focal length of the
17213device.<wbr/> Otherwise,<wbr/> this list will include every focal length supported
17214by the camera device,<wbr/> in ascending order.<wbr/></p>
17215            </td>
17216          </tr>
17217
17218
17219          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17220           <!-- end of entry -->
17221
17222
17223          <tr class="entry" id="static_android.lens.info.availableOpticalStabilization">
17224            <td class="entry_name
17225             " rowspan="3">
17226              android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization
17227            </td>
17228            <td class="entry_type">
17229                <span class="entry_type_name">byte</span>
17230                <span class="entry_type_container">x</span>
17231
17232                <span class="entry_type_array">
17233                  n
17234                </span>
17235              <span class="entry_type_visibility"> [public as enumList]</span>
17236
17237
17238              <span class="entry_type_hwlevel">[limited] </span>
17239
17240
17241                <div class="entry_type_notes">list of enums</div>
17242
17243
17244            </td> <!-- entry_type -->
17245
17246            <td class="entry_description">
17247              <p>List of optical image stabilization (OIS) modes for
17248<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>
17249            </td>
17250
17251            <td class="entry_units">
17252            </td>
17253
17254            <td class="entry_range">
17255              <p>Any value listed in <a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a></p>
17256            </td>
17257
17258            <td class="entry_hal_version">
17259              <p>3.<wbr/>2</p>
17260            </td>
17261
17262            <td class="entry_tags">
17263              <ul class="entry_tags">
17264                  <li><a href="#tag_V1">V1</a></li>
17265              </ul>
17266            </td>
17267
17268          </tr>
17269          <tr class="entries_header">
17270            <th class="th_details" colspan="6">Details</th>
17271          </tr>
17272          <tr class="entry_cont">
17273            <td class="entry_details" colspan="6">
17274              <p>If OIS is not supported by a given camera device,<wbr/> this list will
17275contain only OFF.<wbr/></p>
17276            </td>
17277          </tr>
17278
17279
17280          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17281           <!-- end of entry -->
17282
17283
17284          <tr class="entry" id="static_android.lens.info.hyperfocalDistance">
17285            <td class="entry_name
17286             " rowspan="3">
17287              android.<wbr/>lens.<wbr/>info.<wbr/>hyperfocal<wbr/>Distance
17288            </td>
17289            <td class="entry_type">
17290                <span class="entry_type_name">float</span>
17291
17292              <span class="entry_type_visibility"> [public]</span>
17293
17294
17295              <span class="entry_type_hwlevel">[limited] </span>
17296
17297
17298
17299
17300            </td> <!-- entry_type -->
17301
17302            <td class="entry_description">
17303              <p>Hyperfocal distance for this lens.<wbr/></p>
17304            </td>
17305
17306            <td class="entry_units">
17307              See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
17308            </td>
17309
17310            <td class="entry_range">
17311              <p>If lens is fixed focus,<wbr/> &gt;= 0.<wbr/> If lens has focuser unit,<wbr/> the value is
17312within <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>
17313            </td>
17314
17315            <td class="entry_hal_version">
17316              <p>3.<wbr/>2</p>
17317            </td>
17318
17319            <td class="entry_tags">
17320            </td>
17321
17322          </tr>
17323          <tr class="entries_header">
17324            <th class="th_details" colspan="6">Details</th>
17325          </tr>
17326          <tr class="entry_cont">
17327            <td class="entry_details" colspan="6">
17328              <p>If the lens is not fixed focus,<wbr/> the camera device will report this
17329field 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>
17330            </td>
17331          </tr>
17332
17333
17334          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17335           <!-- end of entry -->
17336
17337
17338          <tr class="entry" id="static_android.lens.info.minimumFocusDistance">
17339            <td class="entry_name
17340             " rowspan="5">
17341              android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance
17342            </td>
17343            <td class="entry_type">
17344                <span class="entry_type_name">float</span>
17345
17346              <span class="entry_type_visibility"> [public]</span>
17347
17348
17349              <span class="entry_type_hwlevel">[limited] </span>
17350
17351
17352
17353
17354            </td> <!-- entry_type -->
17355
17356            <td class="entry_description">
17357              <p>Shortest distance from frontmost surface
17358of the lens that can be brought into sharp focus.<wbr/></p>
17359            </td>
17360
17361            <td class="entry_units">
17362              See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
17363            </td>
17364
17365            <td class="entry_range">
17366              <p>&gt;= 0</p>
17367            </td>
17368
17369            <td class="entry_hal_version">
17370              <p>3.<wbr/>2</p>
17371            </td>
17372
17373            <td class="entry_tags">
17374              <ul class="entry_tags">
17375                  <li><a href="#tag_V1">V1</a></li>
17376              </ul>
17377            </td>
17378
17379          </tr>
17380          <tr class="entries_header">
17381            <th class="th_details" colspan="6">Details</th>
17382          </tr>
17383          <tr class="entry_cont">
17384            <td class="entry_details" colspan="6">
17385              <p>If the lens is fixed-focus,<wbr/> this will be
173860.<wbr/></p>
17387            </td>
17388          </tr>
17389
17390          <tr class="entries_header">
17391            <th class="th_details" colspan="6">HAL Implementation Details</th>
17392          </tr>
17393          <tr class="entry_cont">
17394            <td class="entry_details" colspan="6">
17395              <p>Mandatory for FULL devices; LIMITED devices
17396must always set this value to 0 for fixed-focus; and may omit
17397the minimum focus distance otherwise.<wbr/></p>
17398<p>This field is also mandatory for all devices advertising
17399the MANUAL_<wbr/>SENSOR capability.<wbr/></p>
17400            </td>
17401          </tr>
17402
17403          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17404           <!-- end of entry -->
17405
17406
17407          <tr class="entry" id="static_android.lens.info.shadingMapSize">
17408            <td class="entry_name
17409             " rowspan="3">
17410              android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size
17411            </td>
17412            <td class="entry_type">
17413                <span class="entry_type_name">int32</span>
17414                <span class="entry_type_container">x</span>
17415
17416                <span class="entry_type_array">
17417                  2
17418                </span>
17419              <span class="entry_type_visibility"> [ndk_public as size]</span>
17420
17421
17422              <span class="entry_type_hwlevel">[full] </span>
17423
17424
17425                <div class="entry_type_notes">width and height (N,<wbr/> M) of lens shading map provided by the camera device.<wbr/></div>
17426
17427
17428            </td> <!-- entry_type -->
17429
17430            <td class="entry_description">
17431              <p>Dimensions of lens shading map.<wbr/></p>
17432            </td>
17433
17434            <td class="entry_units">
17435            </td>
17436
17437            <td class="entry_range">
17438              <p>Both values &gt;= 1</p>
17439            </td>
17440
17441            <td class="entry_hal_version">
17442              <p>3.<wbr/>2</p>
17443            </td>
17444
17445            <td class="entry_tags">
17446              <ul class="entry_tags">
17447                  <li><a href="#tag_V1">V1</a></li>
17448              </ul>
17449            </td>
17450
17451          </tr>
17452          <tr class="entries_header">
17453            <th class="th_details" colspan="6">Details</th>
17454          </tr>
17455          <tr class="entry_cont">
17456            <td class="entry_details" colspan="6">
17457              <p>The map should be on the order of 30-40 rows and columns,<wbr/> and
17458must be smaller than 64x64.<wbr/></p>
17459            </td>
17460          </tr>
17461
17462
17463          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17464           <!-- end of entry -->
17465
17466
17467          <tr class="entry" id="static_android.lens.info.focusDistanceCalibration">
17468            <td class="entry_name
17469             " rowspan="5">
17470              android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration
17471            </td>
17472            <td class="entry_type">
17473                <span class="entry_type_name entry_type_name_enum">byte</span>
17474
17475              <span class="entry_type_visibility"> [public]</span>
17476
17477
17478              <span class="entry_type_hwlevel">[limited] </span>
17479
17480
17481
17482                <ul class="entry_type_enum">
17483                  <li>
17484                    <span class="entry_type_enum_name">UNCALIBRATED (v3.2)</span>
17485                    <span class="entry_type_enum_notes"><p>The lens focus distance is not accurate,<wbr/> and the units used for
17486<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> do not correspond to any physical units.<wbr/></p>
17487<p>Setting the lens to the same focus distance on separate occasions may
17488result in a different real focus distance,<wbr/> depending on factors such
17489as the orientation of the device,<wbr/> the age of the focusing mechanism,<wbr/>
17490and the device temperature.<wbr/> The focus distance value will still be
17491in 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
17492represents the farthest focus.<wbr/></p></span>
17493                  </li>
17494                  <li>
17495                    <span class="entry_type_enum_name">APPROXIMATE (v3.2)</span>
17496                    <span class="entry_type_enum_notes"><p>The lens focus distance is measured in diopters.<wbr/></p>
17497<p>However,<wbr/> setting the lens to the same focus distance
17498on separate occasions may result in a different real
17499focus distance,<wbr/> depending on factors such as the
17500orientation of the device,<wbr/> the age of the focusing
17501mechanism,<wbr/> and the device temperature.<wbr/></p></span>
17502                  </li>
17503                  <li>
17504                    <span class="entry_type_enum_name">CALIBRATED (v3.2)</span>
17505                    <span class="entry_type_enum_notes"><p>The lens focus distance is measured in diopters,<wbr/> and
17506is calibrated.<wbr/></p>
17507<p>The lens mechanism is calibrated so that setting the
17508same focus distance is repeatable on multiple
17509occasions with good accuracy,<wbr/> and the focus distance
17510corresponds to the real physical distance to the plane
17511of best focus.<wbr/></p></span>
17512                  </li>
17513                </ul>
17514
17515            </td> <!-- entry_type -->
17516
17517            <td class="entry_description">
17518              <p>The lens focus distance calibration quality.<wbr/></p>
17519            </td>
17520
17521            <td class="entry_units">
17522            </td>
17523
17524            <td class="entry_range">
17525            </td>
17526
17527            <td class="entry_hal_version">
17528              <p>3.<wbr/>2</p>
17529            </td>
17530
17531            <td class="entry_tags">
17532              <ul class="entry_tags">
17533                  <li><a href="#tag_V1">V1</a></li>
17534              </ul>
17535            </td>
17536
17537          </tr>
17538          <tr class="entries_header">
17539            <th class="th_details" colspan="6">Details</th>
17540          </tr>
17541          <tr class="entry_cont">
17542            <td class="entry_details" colspan="6">
17543              <p>The lens focus distance calibration quality determines the reliability of
17544focus related metadata entries,<wbr/> i.<wbr/>e.<wbr/> <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a>,<wbr/>
17545<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
17546<a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a>.<wbr/></p>
17547<p>APPROXIMATE and CALIBRATED devices report the focus metadata in
17548units of diopters (1/<wbr/>meter),<wbr/> so <code>0.<wbr/>0f</code> represents focusing at infinity,<wbr/>
17549and increasing positive numbers represent focusing closer and closer
17550to the camera device.<wbr/> The focus distance control also uses diopters
17551on these devices.<wbr/></p>
17552<p>UNCALIBRATED devices do not use units that are directly comparable
17553to any real physical measurement,<wbr/> but <code>0.<wbr/>0f</code> still represents farthest
17554focus,<wbr/> and <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a> represents the
17555nearest focus the device can achieve.<wbr/></p>
17556            </td>
17557          </tr>
17558
17559          <tr class="entries_header">
17560            <th class="th_details" colspan="6">HAL Implementation Details</th>
17561          </tr>
17562          <tr class="entry_cont">
17563            <td class="entry_details" colspan="6">
17564              <p>For devices advertise APPROXIMATE quality or higher,<wbr/> diopters 0 (infinity
17565focus) must work.<wbr/> When autofocus is disabled (<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> == OFF)
17566and the lens focus distance is set to 0 diopters
17567(<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> == 0),<wbr/> the lens will move to focus at infinity
17568and is stably focused at infinity even if the device tilts.<wbr/> It may take the
17569lens some time to move; during the move the lens state should be MOVING and
17570the output diopter value should be changing toward 0.<wbr/></p>
17571            </td>
17572          </tr>
17573
17574          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17575           <!-- end of entry -->
17576
17577
17578
17579
17580
17581          <tr class="entry" id="static_android.lens.facing">
17582            <td class="entry_name
17583             " rowspan="1">
17584              android.<wbr/>lens.<wbr/>facing
17585            </td>
17586            <td class="entry_type">
17587                <span class="entry_type_name entry_type_name_enum">byte</span>
17588
17589              <span class="entry_type_visibility"> [public]</span>
17590
17591
17592              <span class="entry_type_hwlevel">[legacy] </span>
17593
17594
17595
17596                <ul class="entry_type_enum">
17597                  <li>
17598                    <span class="entry_type_enum_name">FRONT (v3.2)</span>
17599                    <span class="entry_type_enum_notes"><p>The camera device faces the same direction as the device's screen.<wbr/></p></span>
17600                  </li>
17601                  <li>
17602                    <span class="entry_type_enum_name">BACK (v3.2)</span>
17603                    <span class="entry_type_enum_notes"><p>The camera device faces the opposite direction as the device's screen.<wbr/></p></span>
17604                  </li>
17605                  <li>
17606                    <span class="entry_type_enum_name">EXTERNAL (v3.2)</span>
17607                    <span class="entry_type_enum_notes"><p>The camera device is an external camera,<wbr/> and has no fixed facing relative to the
17608device's screen.<wbr/></p></span>
17609                  </li>
17610                </ul>
17611
17612            </td> <!-- entry_type -->
17613
17614            <td class="entry_description">
17615              <p>Direction the camera faces relative to
17616device screen.<wbr/></p>
17617            </td>
17618
17619            <td class="entry_units">
17620            </td>
17621
17622            <td class="entry_range">
17623            </td>
17624
17625            <td class="entry_hal_version">
17626              <p>3.<wbr/>2</p>
17627            </td>
17628
17629            <td class="entry_tags">
17630            </td>
17631
17632          </tr>
17633
17634
17635          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17636           <!-- end of entry -->
17637
17638
17639          <tr class="entry" id="static_android.lens.poseRotation">
17640            <td class="entry_name
17641             " rowspan="3">
17642              android.<wbr/>lens.<wbr/>pose<wbr/>Rotation
17643            </td>
17644            <td class="entry_type">
17645                <span class="entry_type_name">float</span>
17646                <span class="entry_type_container">x</span>
17647
17648                <span class="entry_type_array">
17649                  4
17650                </span>
17651              <span class="entry_type_visibility"> [public]</span>
17652
17653
17654
17655
17656
17657
17658            </td> <!-- entry_type -->
17659
17660            <td class="entry_description">
17661              <p>The orientation of the camera relative to the sensor
17662coordinate system.<wbr/></p>
17663            </td>
17664
17665            <td class="entry_units">
17666
17667            Quaternion coefficients
17668
17669            </td>
17670
17671            <td class="entry_range">
17672            </td>
17673
17674            <td class="entry_hal_version">
17675              <p>3.<wbr/>2</p>
17676            </td>
17677
17678            <td class="entry_tags">
17679              <ul class="entry_tags">
17680                  <li><a href="#tag_DEPTH">DEPTH</a></li>
17681              </ul>
17682            </td>
17683
17684          </tr>
17685          <tr class="entries_header">
17686            <th class="th_details" colspan="6">Details</th>
17687          </tr>
17688          <tr class="entry_cont">
17689            <td class="entry_details" colspan="6">
17690              <p>The four coefficients that describe the quaternion
17691rotation from the Android sensor coordinate system to a
17692camera-aligned coordinate system where the X-axis is
17693aligned with the long side of the image sensor,<wbr/> the Y-axis
17694is aligned with the short side of the image sensor,<wbr/> and
17695the Z-axis is aligned with the optical axis of the sensor.<wbr/></p>
17696<p>To convert from the quaternion coefficients <code>(x,<wbr/>y,<wbr/>z,<wbr/>w)</code>
17697to the axis of rotation <code>(a_<wbr/>x,<wbr/> a_<wbr/>y,<wbr/> a_<wbr/>z)</code> and rotation
17698amount <code>theta</code>,<wbr/> the following formulas can be used:</p>
17699<pre><code> theta = 2 * acos(w)
17700a_<wbr/>x = x /<wbr/> sin(theta/<wbr/>2)
17701a_<wbr/>y = y /<wbr/> sin(theta/<wbr/>2)
17702a_<wbr/>z = z /<wbr/> sin(theta/<wbr/>2)
17703</code></pre>
17704<p>To create a 3x3 rotation matrix that applies the rotation
17705defined by this quaternion,<wbr/> the following matrix can be
17706used:</p>
17707<pre><code>R = [ 1 - 2y^2 - 2z^2,<wbr/>       2xy - 2zw,<wbr/>       2xz + 2yw,<wbr/>
17708           2xy + 2zw,<wbr/> 1 - 2x^2 - 2z^2,<wbr/>       2yz - 2xw,<wbr/>
17709           2xz - 2yw,<wbr/>       2yz + 2xw,<wbr/> 1 - 2x^2 - 2y^2 ]
17710</code></pre>
17711<p>This matrix can then be used to apply the rotation to a
17712 column vector point with</p>
17713<p><code>p' = Rp</code></p>
17714<p>where <code>p</code> is in the device sensor coordinate system,<wbr/> and
17715 <code>p'</code> is in the camera-oriented coordinate system.<wbr/></p>
17716<p>If <a href="#static_android.lens.poseReference">android.<wbr/>lens.<wbr/>pose<wbr/>Reference</a> is UNDEFINED,<wbr/> the quaternion rotation cannot
17717 be accurately represented by the camera device,<wbr/> and will be represented by
17718 default values matching its default facing.<wbr/></p>
17719            </td>
17720          </tr>
17721
17722
17723          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17724           <!-- end of entry -->
17725
17726
17727          <tr class="entry" id="static_android.lens.poseTranslation">
17728            <td class="entry_name
17729             " rowspan="3">
17730              android.<wbr/>lens.<wbr/>pose<wbr/>Translation
17731            </td>
17732            <td class="entry_type">
17733                <span class="entry_type_name">float</span>
17734                <span class="entry_type_container">x</span>
17735
17736                <span class="entry_type_array">
17737                  3
17738                </span>
17739              <span class="entry_type_visibility"> [public]</span>
17740
17741
17742
17743
17744
17745
17746            </td> <!-- entry_type -->
17747
17748            <td class="entry_description">
17749              <p>Position of the camera optical center.<wbr/></p>
17750            </td>
17751
17752            <td class="entry_units">
17753              Meters
17754            </td>
17755
17756            <td class="entry_range">
17757            </td>
17758
17759            <td class="entry_hal_version">
17760              <p>3.<wbr/>2</p>
17761            </td>
17762
17763            <td class="entry_tags">
17764              <ul class="entry_tags">
17765                  <li><a href="#tag_DEPTH">DEPTH</a></li>
17766              </ul>
17767            </td>
17768
17769          </tr>
17770          <tr class="entries_header">
17771            <th class="th_details" colspan="6">Details</th>
17772          </tr>
17773          <tr class="entry_cont">
17774            <td class="entry_details" colspan="6">
17775              <p>The position of the camera device's lens optical center,<wbr/>
17776as a three-dimensional vector <code>(x,<wbr/>y,<wbr/>z)</code>.<wbr/></p>
17777<p>Prior to Android P,<wbr/> or when <a href="#static_android.lens.poseReference">android.<wbr/>lens.<wbr/>pose<wbr/>Reference</a> is PRIMARY_<wbr/>CAMERA,<wbr/> this position
17778is relative to the optical center of the largest camera device facing in the same
17779direction as this camera,<wbr/> in the <a href="https://developer.android.com/reference/android/hardware/SensorEvent.html">Android sensor
17780coordinate axes</a>.<wbr/> Note that only the axis definitions are shared with the sensor
17781coordinate system,<wbr/> but not the origin.<wbr/></p>
17782<p>If this device is the largest or only camera device with a given facing,<wbr/> then this
17783position will be <code>(0,<wbr/> 0,<wbr/> 0)</code>; a camera device with a lens optical center located 3 cm
17784from the main sensor along the +X axis (to the right from the user's perspective) will
17785report <code>(0.<wbr/>03,<wbr/> 0,<wbr/> 0)</code>.<wbr/>  Note that this means that,<wbr/> for many computer vision
17786applications,<wbr/> the position needs to be negated to convert it to a translation from the
17787camera to the origin.<wbr/></p>
17788<p>To transform a pixel coordinates between two cameras facing the same direction,<wbr/> first
17789the source camera <a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a> must be corrected for.<wbr/>  Then the source
17790camera <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> needs to be applied,<wbr/> followed by the
17791<a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> of the source camera,<wbr/> the translation of the source camera
17792relative to the destination camera,<wbr/> the <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> of the destination
17793camera,<wbr/> and finally the inverse of <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> of the destination
17794camera.<wbr/> This obtains a radial-distortion-free coordinate in the destination camera pixel
17795coordinates.<wbr/></p>
17796<p>To compare this against a real image from the destination camera,<wbr/> the destination camera
17797image then needs to be corrected for radial distortion before comparison or sampling.<wbr/></p>
17798<p>When <a href="#static_android.lens.poseReference">android.<wbr/>lens.<wbr/>pose<wbr/>Reference</a> is GYROSCOPE,<wbr/> then this position is relative to
17799the center of the primary gyroscope on the device.<wbr/> The axis definitions are the same as
17800with PRIMARY_<wbr/>CAMERA.<wbr/></p>
17801<p>When <a href="#static_android.lens.poseReference">android.<wbr/>lens.<wbr/>pose<wbr/>Reference</a> is UNDEFINED,<wbr/> this position cannot be accurately
17802represented by the camera device,<wbr/> and will be represented as <code>(0,<wbr/> 0,<wbr/> 0)</code>.<wbr/></p>
17803<p>When <a href="#static_android.lens.poseReference">android.<wbr/>lens.<wbr/>pose<wbr/>Reference</a> is AUTOMOTIVE,<wbr/> then this position is relative to the
17804origin of the automotive sensor coordinate system,<wbr/> which is at the center of the rear
17805axle.<wbr/></p>
17806            </td>
17807          </tr>
17808
17809
17810          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17811           <!-- end of entry -->
17812
17813
17814          <tr class="entry" id="static_android.lens.intrinsicCalibration">
17815            <td class="entry_name
17816             " rowspan="3">
17817              android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration
17818            </td>
17819            <td class="entry_type">
17820                <span class="entry_type_name">float</span>
17821                <span class="entry_type_container">x</span>
17822
17823                <span class="entry_type_array">
17824                  5
17825                </span>
17826              <span class="entry_type_visibility"> [public]</span>
17827
17828
17829
17830
17831
17832
17833            </td> <!-- entry_type -->
17834
17835            <td class="entry_description">
17836              <p>The parameters for this camera device's intrinsic
17837calibration.<wbr/></p>
17838            </td>
17839
17840            <td class="entry_units">
17841
17842            Pixels in the
17843            android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size
17844            coordinate system.<wbr/>
17845
17846            </td>
17847
17848            <td class="entry_range">
17849            </td>
17850
17851            <td class="entry_hal_version">
17852              <p>3.<wbr/>2</p>
17853            </td>
17854
17855            <td class="entry_tags">
17856              <ul class="entry_tags">
17857                  <li><a href="#tag_DEPTH">DEPTH</a></li>
17858              </ul>
17859            </td>
17860
17861          </tr>
17862          <tr class="entries_header">
17863            <th class="th_details" colspan="6">Details</th>
17864          </tr>
17865          <tr class="entry_cont">
17866            <td class="entry_details" colspan="6">
17867              <p>The five calibration parameters that describe the
17868transform from camera-centric 3D coordinates to sensor
17869pixel coordinates:</p>
17870<pre><code>[f_<wbr/>x,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>x,<wbr/> c_<wbr/>y,<wbr/> s]
17871</code></pre>
17872<p>Where <code>f_<wbr/>x</code> and <code>f_<wbr/>y</code> are the horizontal and vertical
17873focal lengths,<wbr/> <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code> is the position of the optical
17874axis,<wbr/> and <code>s</code> is a skew parameter for the sensor plane not
17875being aligned with the lens plane.<wbr/></p>
17876<p>These are typically used within a transformation matrix K:</p>
17877<pre><code>K = [ f_<wbr/>x,<wbr/>   s,<wbr/> c_<wbr/>x,<wbr/>
17878       0,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>y,<wbr/>
17879       0    0,<wbr/>   1 ]
17880</code></pre>
17881<p>which can then be combined with the camera pose rotation
17882<code>R</code> and translation <code>t</code> (<a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> and
17883<a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a>,<wbr/> respectively) to calculate the
17884complete transform from world coordinates to pixel
17885coordinates:</p>
17886<pre><code>P = [ K 0   * [ R -Rt
17887     0 1 ]      0 1 ]
17888</code></pre>
17889<p>(Note the negation of poseTranslation when mapping from camera
17890to world coordinates,<wbr/> and multiplication by the rotation).<wbr/></p>
17891<p>With <code>p_<wbr/>w</code> being a point in the world coordinate system
17892and <code>p_<wbr/>s</code> being a point in the camera active pixel array
17893coordinate system,<wbr/> and with the mapping including the
17894homogeneous division by z:</p>
17895<pre><code> p_<wbr/>h = (x_<wbr/>h,<wbr/> y_<wbr/>h,<wbr/> z_<wbr/>h) = P p_<wbr/>w
17896p_<wbr/>s = p_<wbr/>h /<wbr/> z_<wbr/>h
17897</code></pre>
17898<p>so <code>[x_<wbr/>s,<wbr/> y_<wbr/>s]</code> is the pixel coordinates of the world
17899point,<wbr/> <code>z_<wbr/>s = 1</code>,<wbr/> and <code>w_<wbr/>s</code> is a measurement of disparity
17900(depth) in pixel coordinates.<wbr/></p>
17901<p>Note that the coordinate system for this transform is the
17902<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/>
17903where <code>(0,<wbr/>0)</code> is the top-left of the
17904preCorrectionActiveArraySize rectangle.<wbr/> Once the pose and
17905intrinsic calibration transforms have been applied to a
17906world point,<wbr/> then the <a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a>
17907transform needs to be applied,<wbr/> and the result adjusted to
17908be in the <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> coordinate
17909system (where <code>(0,<wbr/> 0)</code> is the top-left of the
17910activeArraySize rectangle),<wbr/> to determine the final pixel
17911coordinate of the world point for processed (non-RAW)
17912output buffers.<wbr/></p>
17913<p>For camera devices,<wbr/> the center of pixel <code>(x,<wbr/>y)</code> is located at
17914coordinate <code>(x + 0.<wbr/>5,<wbr/> y + 0.<wbr/>5)</code>.<wbr/>  So on a device with a
17915precorrection active array of size <code>(10,<wbr/>10)</code>,<wbr/> the valid pixel
17916indices go from <code>(0,<wbr/>0)-(9,<wbr/>9)</code>,<wbr/> and an perfectly-built camera would
17917have an optical center at the exact center of the pixel grid,<wbr/> at
17918coordinates <code>(5.<wbr/>0,<wbr/> 5.<wbr/>0)</code>,<wbr/> which is the top-left corner of pixel
17919<code>(5,<wbr/>5)</code>.<wbr/></p>
17920            </td>
17921          </tr>
17922
17923
17924          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17925           <!-- end of entry -->
17926
17927
17928          <tr class="entry" id="static_android.lens.radialDistortion">
17929            <td class="entry_name
17930                entry_name_deprecated
17931             " rowspan="3">
17932              android.<wbr/>lens.<wbr/>radial<wbr/>Distortion
17933            </td>
17934            <td class="entry_type">
17935                <span class="entry_type_name">float</span>
17936                <span class="entry_type_container">x</span>
17937
17938                <span class="entry_type_array">
17939                  6
17940                </span>
17941              <span class="entry_type_visibility"> [public]</span>
17942
17943
17944
17945              <span class="entry_type_deprecated">[deprecated] </span>
17946
17947
17948
17949            </td> <!-- entry_type -->
17950
17951            <td class="entry_description">
17952              <p>The correction coefficients to correct for this camera device's
17953radial and tangential lens distortion.<wbr/></p>
17954            </td>
17955
17956            <td class="entry_units">
17957
17958            Unitless coefficients.<wbr/>
17959
17960            </td>
17961
17962            <td class="entry_range">
17963              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
17964            </td>
17965
17966            <td class="entry_hal_version">
17967              <p>3.<wbr/>2</p>
17968            </td>
17969
17970            <td class="entry_tags">
17971              <ul class="entry_tags">
17972                  <li><a href="#tag_DEPTH">DEPTH</a></li>
17973              </ul>
17974            </td>
17975
17976          </tr>
17977          <tr class="entries_header">
17978            <th class="th_details" colspan="6">Details</th>
17979          </tr>
17980          <tr class="entry_cont">
17981            <td class="entry_details" colspan="6">
17982              <p>Four radial distortion coefficients <code>[kappa_<wbr/>0,<wbr/> kappa_<wbr/>1,<wbr/> kappa_<wbr/>2,<wbr/>
17983kappa_<wbr/>3]</code> and two tangential distortion coefficients
17984<code>[kappa_<wbr/>4,<wbr/> kappa_<wbr/>5]</code> that can be used to correct the
17985lens's geometric distortion with the mapping equations:</p>
17986<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 ) +
17987       kappa_<wbr/>4 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>5 * ( r^2 + 2 * x_<wbr/>i^2 )
17988 y_<wbr/>c = y_<wbr/>i * ( kappa_<wbr/>0 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) +
17989       kappa_<wbr/>5 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>4 * ( r^2 + 2 * y_<wbr/>i^2 )
17990</code></pre>
17991<p>Here,<wbr/> <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> are the coordinates to sample in the
17992input image that correspond to the pixel values in the
17993corrected image at the coordinate <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code>:</p>
17994<pre><code> correctedImage(x_<wbr/>i,<wbr/> y_<wbr/>i) = sample_<wbr/>at(x_<wbr/>c,<wbr/> y_<wbr/>c,<wbr/> inputImage)
17995</code></pre>
17996<p>The pixel coordinates are defined in a normalized
17997coordinate system related to the
17998<a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> calibration fields.<wbr/>
17999Both <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
18000lens optical center <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code>.<wbr/> The maximum magnitudes
18001of both x and y coordinates are normalized to be 1 at the
18002edge further from the optical center,<wbr/> so the range
18003for both dimensions is <code>-1 &lt;= x &lt;= 1</code>.<wbr/></p>
18004<p>Finally,<wbr/> <code>r</code> represents the radial distance from the
18005optical center,<wbr/> <code>r^2 = x_<wbr/>i^2 + y_<wbr/>i^2</code>,<wbr/> and its magnitude
18006is therefore no larger than <code>|<wbr/>r|<wbr/> &lt;= sqrt(2)</code>.<wbr/></p>
18007<p>The distortion model used is the Brown-Conrady model.<wbr/></p>
18008            </td>
18009          </tr>
18010
18011
18012          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18013           <!-- end of entry -->
18014
18015
18016          <tr class="entry" id="static_android.lens.poseReference">
18017            <td class="entry_name
18018             " rowspan="3">
18019              android.<wbr/>lens.<wbr/>pose<wbr/>Reference
18020            </td>
18021            <td class="entry_type">
18022                <span class="entry_type_name entry_type_name_enum">byte</span>
18023
18024              <span class="entry_type_visibility"> [public]</span>
18025
18026
18027
18028
18029
18030                <ul class="entry_type_enum">
18031                  <li>
18032                    <span class="entry_type_enum_name">PRIMARY_CAMERA (v3.3)</span>
18033                    <span class="entry_type_enum_notes"><p>The value of <a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a> is relative to the optical center of
18034the largest camera device facing the same direction as this camera.<wbr/></p>
18035<p>This is the default value for API levels before Android P.<wbr/></p></span>
18036                  </li>
18037                  <li>
18038                    <span class="entry_type_enum_name">GYROSCOPE (v3.3)</span>
18039                    <span class="entry_type_enum_notes"><p>The value of <a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a> is relative to the position of the
18040primary gyroscope of this Android device.<wbr/></p></span>
18041                  </li>
18042                  <li>
18043                    <span class="entry_type_enum_name">UNDEFINED (v3.5)</span>
18044                    <span class="entry_type_enum_notes"><p>The camera device cannot represent the values of <a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a>
18045and <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> accurately enough.<wbr/> One such example is a camera device
18046on the cover of a foldable phone: in order to measure the pose translation and rotation,<wbr/>
18047some kind of hinge position sensor would be needed.<wbr/></p>
18048<p>The value of <a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a> must be all zeros,<wbr/> and
18049<a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> must be values matching its default facing.<wbr/></p></span>
18050                  </li>
18051                  <li>
18052                    <span class="entry_type_enum_name">AUTOMOTIVE (v3.8)</span>
18053                    <span class="entry_type_enum_notes"><p>The value of <a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a> is relative to the origin of the
18054automotive sensor coordinate system,<wbr/> which is at the center of the rear axle.<wbr/></p></span>
18055                  </li>
18056                </ul>
18057
18058            </td> <!-- entry_type -->
18059
18060            <td class="entry_description">
18061              <p>The origin for <a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a>,<wbr/> and the accuracy of
18062<a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a> and <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a>.<wbr/></p>
18063            </td>
18064
18065            <td class="entry_units">
18066            </td>
18067
18068            <td class="entry_range">
18069            </td>
18070
18071            <td class="entry_hal_version">
18072              <p>3.<wbr/>3</p>
18073            </td>
18074
18075            <td class="entry_tags">
18076            </td>
18077
18078          </tr>
18079          <tr class="entries_header">
18080            <th class="th_details" colspan="6">Details</th>
18081          </tr>
18082          <tr class="entry_cont">
18083            <td class="entry_details" colspan="6">
18084              <p>Different calibration methods and use cases can produce better or worse results
18085depending on the selected coordinate origin.<wbr/></p>
18086            </td>
18087          </tr>
18088
18089
18090          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18091           <!-- end of entry -->
18092
18093
18094          <tr class="entry" id="static_android.lens.distortion">
18095            <td class="entry_name
18096             " rowspan="3">
18097              android.<wbr/>lens.<wbr/>distortion
18098            </td>
18099            <td class="entry_type">
18100                <span class="entry_type_name">float</span>
18101                <span class="entry_type_container">x</span>
18102
18103                <span class="entry_type_array">
18104                  5
18105                </span>
18106              <span class="entry_type_visibility"> [public]</span>
18107
18108
18109
18110
18111
18112
18113            </td> <!-- entry_type -->
18114
18115            <td class="entry_description">
18116              <p>The correction coefficients to correct for this camera device's
18117radial and tangential lens distortion.<wbr/></p>
18118<p>Replaces the deprecated <a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a> field,<wbr/> which was
18119inconsistently defined.<wbr/></p>
18120            </td>
18121
18122            <td class="entry_units">
18123
18124            Unitless coefficients.<wbr/>
18125
18126            </td>
18127
18128            <td class="entry_range">
18129            </td>
18130
18131            <td class="entry_hal_version">
18132              <p>3.<wbr/>3</p>
18133            </td>
18134
18135            <td class="entry_tags">
18136              <ul class="entry_tags">
18137                  <li><a href="#tag_DEPTH">DEPTH</a></li>
18138              </ul>
18139            </td>
18140
18141          </tr>
18142          <tr class="entries_header">
18143            <th class="th_details" colspan="6">Details</th>
18144          </tr>
18145          <tr class="entry_cont">
18146            <td class="entry_details" colspan="6">
18147              <p>Three radial distortion coefficients <code>[kappa_<wbr/>1,<wbr/> kappa_<wbr/>2,<wbr/>
18148kappa_<wbr/>3]</code> and two tangential distortion coefficients
18149<code>[kappa_<wbr/>4,<wbr/> kappa_<wbr/>5]</code> that can be used to correct the
18150lens's geometric distortion with the mapping equations:</p>
18151<pre><code> x_<wbr/>c = x_<wbr/>i * ( 1 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) +
18152       kappa_<wbr/>4 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>5 * ( r^2 + 2 * x_<wbr/>i^2 )
18153 y_<wbr/>c = y_<wbr/>i * ( 1 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) +
18154       kappa_<wbr/>5 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>4 * ( r^2 + 2 * y_<wbr/>i^2 )
18155</code></pre>
18156<p>Here,<wbr/> <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> are the coordinates to sample in the
18157input image that correspond to the pixel values in the
18158corrected image at the coordinate <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code>:</p>
18159<pre><code> correctedImage(x_<wbr/>i,<wbr/> y_<wbr/>i) = sample_<wbr/>at(x_<wbr/>c,<wbr/> y_<wbr/>c,<wbr/> inputImage)
18160</code></pre>
18161<p>The pixel coordinates are defined in a coordinate system
18162related to the <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a>
18163calibration fields; see that entry for details of the mapping stages.<wbr/>
18164Both <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code> and <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code>
18165have <code>(0,<wbr/>0)</code> at the lens optical center <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code>,<wbr/> and
18166the range of the coordinates depends on the focal length
18167terms of the intrinsic calibration.<wbr/></p>
18168<p>Finally,<wbr/> <code>r</code> represents the radial distance from the
18169optical center,<wbr/> <code>r^2 = x_<wbr/>i^2 + y_<wbr/>i^2</code>.<wbr/></p>
18170<p>The distortion model used is the Brown-Conrady model.<wbr/></p>
18171            </td>
18172          </tr>
18173
18174
18175          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18176           <!-- end of entry -->
18177
18178
18179          <tr class="entry" id="static_android.lens.distortionMaximumResolution">
18180            <td class="entry_name
18181             " rowspan="3">
18182              android.<wbr/>lens.<wbr/>distortion<wbr/>Maximum<wbr/>Resolution
18183            </td>
18184            <td class="entry_type">
18185                <span class="entry_type_name">float</span>
18186                <span class="entry_type_container">x</span>
18187
18188                <span class="entry_type_array">
18189                  5
18190                </span>
18191              <span class="entry_type_visibility"> [public]</span>
18192
18193
18194
18195
18196
18197
18198            </td> <!-- entry_type -->
18199
18200            <td class="entry_description">
18201              <p>The correction coefficients to correct for this camera device's
18202radial and tangential lens distortion for a
18203CaptureRequest with <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> set to
18204<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p>
18205            </td>
18206
18207            <td class="entry_units">
18208
18209            Unitless coefficients.<wbr/>
18210
18211            </td>
18212
18213            <td class="entry_range">
18214            </td>
18215
18216            <td class="entry_hal_version">
18217              <p>3.<wbr/>6</p>
18218            </td>
18219
18220            <td class="entry_tags">
18221              <ul class="entry_tags">
18222                  <li><a href="#tag_DEPTH">DEPTH</a></li>
18223              </ul>
18224            </td>
18225
18226          </tr>
18227          <tr class="entries_header">
18228            <th class="th_details" colspan="6">Details</th>
18229          </tr>
18230          <tr class="entry_cont">
18231            <td class="entry_details" colspan="6">
18232              <p>Analogous to <a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a>,<wbr/> when <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to
18233<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p>
18234            </td>
18235          </tr>
18236
18237
18238          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18239           <!-- end of entry -->
18240
18241
18242          <tr class="entry" id="static_android.lens.intrinsicCalibrationMaximumResolution">
18243            <td class="entry_name
18244             " rowspan="3">
18245              android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration<wbr/>Maximum<wbr/>Resolution
18246            </td>
18247            <td class="entry_type">
18248                <span class="entry_type_name">float</span>
18249                <span class="entry_type_container">x</span>
18250
18251                <span class="entry_type_array">
18252                  5
18253                </span>
18254              <span class="entry_type_visibility"> [public]</span>
18255
18256
18257
18258
18259
18260
18261            </td> <!-- entry_type -->
18262
18263            <td class="entry_description">
18264              <p>The parameters for this camera device's intrinsic
18265calibration when <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to
18266<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p>
18267            </td>
18268
18269            <td class="entry_units">
18270
18271            Pixels in the
18272            android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution
18273            coordinate system.<wbr/>
18274
18275            </td>
18276
18277            <td class="entry_range">
18278            </td>
18279
18280            <td class="entry_hal_version">
18281              <p>3.<wbr/>6</p>
18282            </td>
18283
18284            <td class="entry_tags">
18285              <ul class="entry_tags">
18286                  <li><a href="#tag_DEPTH">DEPTH</a></li>
18287              </ul>
18288            </td>
18289
18290          </tr>
18291          <tr class="entries_header">
18292            <th class="th_details" colspan="6">Details</th>
18293          </tr>
18294          <tr class="entry_cont">
18295            <td class="entry_details" colspan="6">
18296              <p>Analogous to <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a>,<wbr/> when <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to
18297<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p>
18298            </td>
18299          </tr>
18300
18301
18302          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18303           <!-- end of entry -->
18304
18305
18306
18307      <!-- end of kind -->
18308      </tbody>
18309      <tr><td colspan="7" class="kind">dynamic</td></tr>
18310
18311      <thead class="entries_header">
18312        <tr>
18313          <th class="th_name">Property Name</th>
18314          <th class="th_type">Type</th>
18315          <th class="th_description">Description</th>
18316          <th class="th_units">Units</th>
18317          <th class="th_range">Range</th>
18318          <th class="th_hal_version">Initial HIDL HAL version</th>
18319          <th class="th_tags">Tags</th>
18320        </tr>
18321      </thead>
18322
18323      <tbody>
18324
18325
18326
18327
18328
18329
18330
18331
18332
18333
18334          <tr class="entry" id="dynamic_android.lens.aperture">
18335            <td class="entry_name
18336             " rowspan="3">
18337              android.<wbr/>lens.<wbr/>aperture
18338            </td>
18339            <td class="entry_type">
18340                <span class="entry_type_name">float</span>
18341
18342              <span class="entry_type_visibility"> [public]</span>
18343
18344
18345              <span class="entry_type_hwlevel">[full] </span>
18346
18347
18348
18349
18350            </td> <!-- entry_type -->
18351
18352            <td class="entry_description">
18353              <p>The desired lens aperture size,<wbr/> as a ratio of lens focal length to the
18354effective aperture diameter.<wbr/></p>
18355            </td>
18356
18357            <td class="entry_units">
18358              The f-number (f/<wbr/>N)
18359            </td>
18360
18361            <td class="entry_range">
18362              <p><a href="#static_android.lens.info.availableApertures">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures</a></p>
18363            </td>
18364
18365            <td class="entry_hal_version">
18366              <p>3.<wbr/>2</p>
18367            </td>
18368
18369            <td class="entry_tags">
18370              <ul class="entry_tags">
18371                  <li><a href="#tag_V1">V1</a></li>
18372              </ul>
18373            </td>
18374
18375          </tr>
18376          <tr class="entries_header">
18377            <th class="th_details" colspan="6">Details</th>
18378          </tr>
18379          <tr class="entry_cont">
18380            <td class="entry_details" colspan="6">
18381              <p>Setting this value is only supported on the camera devices that have a variable
18382aperture lens.<wbr/></p>
18383<p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/>
18384this can be set along with <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
18385<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>
18386to achieve manual exposure control.<wbr/></p>
18387<p>The requested aperture value may take several frames to reach the
18388requested value; the camera device will report the current (intermediate)
18389aperture size in capture result metadata while the aperture is changing.<wbr/>
18390While 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>
18391<p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is one of
18392the ON modes,<wbr/> this will be overridden by the camera device
18393auto-exposure algorithm,<wbr/> the overridden values are then provided
18394back to the user in the corresponding result.<wbr/></p>
18395            </td>
18396          </tr>
18397
18398
18399          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18400           <!-- end of entry -->
18401
18402
18403          <tr class="entry" id="dynamic_android.lens.filterDensity">
18404            <td class="entry_name
18405             " rowspan="3">
18406              android.<wbr/>lens.<wbr/>filter<wbr/>Density
18407            </td>
18408            <td class="entry_type">
18409                <span class="entry_type_name">float</span>
18410
18411              <span class="entry_type_visibility"> [public]</span>
18412
18413
18414              <span class="entry_type_hwlevel">[full] </span>
18415
18416
18417
18418
18419            </td> <!-- entry_type -->
18420
18421            <td class="entry_description">
18422              <p>The desired setting for the lens neutral density filter(s).<wbr/></p>
18423            </td>
18424
18425            <td class="entry_units">
18426              Exposure Value (EV)
18427            </td>
18428
18429            <td class="entry_range">
18430              <p><a href="#static_android.lens.info.availableFilterDensities">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities</a></p>
18431            </td>
18432
18433            <td class="entry_hal_version">
18434              <p>3.<wbr/>2</p>
18435            </td>
18436
18437            <td class="entry_tags">
18438              <ul class="entry_tags">
18439                  <li><a href="#tag_V1">V1</a></li>
18440              </ul>
18441            </td>
18442
18443          </tr>
18444          <tr class="entries_header">
18445            <th class="th_details" colspan="6">Details</th>
18446          </tr>
18447          <tr class="entry_cont">
18448            <td class="entry_details" colspan="6">
18449              <p>This control will not be supported on most camera devices.<wbr/></p>
18450<p>Lens filters are typically used to lower the amount of light the
18451sensor is exposed to (measured in steps of EV).<wbr/> As used here,<wbr/> an EV
18452step is the standard logarithmic representation,<wbr/> which are
18453non-negative,<wbr/> and inversely proportional to the amount of light
18454hitting the sensor.<wbr/>  For example,<wbr/> setting this to 0 would result
18455in no reduction of the incoming light,<wbr/> and setting this to 2 would
18456mean that the filter is set to reduce incoming light by two stops
18457(allowing 1/<wbr/>4 of the prior amount of light to the sensor).<wbr/></p>
18458<p>It may take several frames before the lens filter density changes
18459to the requested value.<wbr/> While the filter density is still changing,<wbr/>
18460<a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p>
18461            </td>
18462          </tr>
18463
18464
18465          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18466           <!-- end of entry -->
18467
18468
18469          <tr class="entry" id="dynamic_android.lens.focalLength">
18470            <td class="entry_name
18471             " rowspan="5">
18472              android.<wbr/>lens.<wbr/>focal<wbr/>Length
18473            </td>
18474            <td class="entry_type">
18475                <span class="entry_type_name">float</span>
18476
18477              <span class="entry_type_visibility"> [public]</span>
18478
18479
18480              <span class="entry_type_hwlevel">[legacy] </span>
18481
18482
18483
18484
18485            </td> <!-- entry_type -->
18486
18487            <td class="entry_description">
18488              <p>The desired lens focal length; used for optical zoom.<wbr/></p>
18489            </td>
18490
18491            <td class="entry_units">
18492              Millimeters
18493            </td>
18494
18495            <td class="entry_range">
18496              <p><a href="#static_android.lens.info.availableFocalLengths">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths</a></p>
18497            </td>
18498
18499            <td class="entry_hal_version">
18500              <p>3.<wbr/>2</p>
18501            </td>
18502
18503            <td class="entry_tags">
18504              <ul class="entry_tags">
18505                  <li><a href="#tag_BC">BC</a></li>
18506              </ul>
18507            </td>
18508
18509          </tr>
18510          <tr class="entries_header">
18511            <th class="th_details" colspan="6">Details</th>
18512          </tr>
18513          <tr class="entry_cont">
18514            <td class="entry_details" colspan="6">
18515              <p>This setting controls the physical focal length of the camera
18516device's lens.<wbr/> Changing the focal length changes the field of
18517view of the camera device,<wbr/> and is usually used for optical zoom.<wbr/></p>
18518<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
18519setting won't be applied instantaneously,<wbr/> and it may take several
18520frames before the lens can change to the requested focal length.<wbr/>
18521While the focal length is still changing,<wbr/> <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will
18522be set to MOVING.<wbr/></p>
18523<p>Optical zoom via this control will not be supported on most devices.<wbr/> Starting from API
18524level 30,<wbr/> the camera device may combine optical and digital zoom through the
18525<a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> control.<wbr/></p>
18526            </td>
18527          </tr>
18528
18529          <tr class="entries_header">
18530            <th class="th_details" colspan="6">HAL Implementation Details</th>
18531          </tr>
18532          <tr class="entry_cont">
18533            <td class="entry_details" colspan="6">
18534              <p>For a logical camera device supporting both optical and digital zoom,<wbr/> if focalLength and
18535cropRegion change in the same request,<wbr/> the camera device must make sure that the new
18536focalLength and cropRegion take effect in the same frame.<wbr/> This is to make sure that there
18537is no visible field-of-view jump during zoom.<wbr/> For example,<wbr/> if cropRegion is applied
18538immediately,<wbr/> but focalLength takes more than 1 frame to take effect,<wbr/> the camera device
18539will delay the cropRegion so that it's synchronized with focalLength.<wbr/></p>
18540<p>Starting from API level 30,<wbr/> it's strongly recommended for HAL to implement the
18541combination of optical and digital zoom using the new <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> API,<wbr/> in
18542lieu of using <a href="#controls_android.lens.focalLength">android.<wbr/>lens.<wbr/>focal<wbr/>Length</a> and <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></p>
18543            </td>
18544          </tr>
18545
18546          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18547           <!-- end of entry -->
18548
18549
18550          <tr class="entry" id="dynamic_android.lens.focusDistance">
18551            <td class="entry_name
18552             " rowspan="3">
18553              android.<wbr/>lens.<wbr/>focus<wbr/>Distance
18554            </td>
18555            <td class="entry_type">
18556                <span class="entry_type_name">float</span>
18557
18558              <span class="entry_type_visibility"> [public]</span>
18559
18560
18561              <span class="entry_type_hwlevel">[full] </span>
18562
18563
18564
18565
18566            </td> <!-- entry_type -->
18567
18568            <td class="entry_description">
18569              <p>Desired distance to plane of sharpest focus,<wbr/>
18570measured from frontmost surface of the lens.<wbr/></p>
18571            </td>
18572
18573            <td class="entry_units">
18574              See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
18575            </td>
18576
18577            <td class="entry_range">
18578              <p>&gt;= 0</p>
18579            </td>
18580
18581            <td class="entry_hal_version">
18582              <p>3.<wbr/>2</p>
18583            </td>
18584
18585            <td class="entry_tags">
18586              <ul class="entry_tags">
18587                  <li><a href="#tag_BC">BC</a></li>
18588              </ul>
18589            </td>
18590
18591          </tr>
18592          <tr class="entries_header">
18593            <th class="th_details" colspan="6">Details</th>
18594          </tr>
18595          <tr class="entry_cont">
18596            <td class="entry_details" colspan="6">
18597              <p>Should be zero for fixed-focus cameras</p>
18598            </td>
18599          </tr>
18600
18601
18602          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18603           <!-- end of entry -->
18604
18605
18606          <tr class="entry" id="dynamic_android.lens.focusRange">
18607            <td class="entry_name
18608             " rowspan="3">
18609              android.<wbr/>lens.<wbr/>focus<wbr/>Range
18610            </td>
18611            <td class="entry_type">
18612                <span class="entry_type_name">float</span>
18613                <span class="entry_type_container">x</span>
18614
18615                <span class="entry_type_array">
18616                  2
18617                </span>
18618              <span class="entry_type_visibility"> [public as pairFloatFloat]</span>
18619
18620
18621              <span class="entry_type_hwlevel">[limited] </span>
18622
18623
18624                <div class="entry_type_notes">Range of scene distances that are in focus</div>
18625
18626
18627            </td> <!-- entry_type -->
18628
18629            <td class="entry_description">
18630              <p>The range of scene distances that are in
18631sharp focus (depth of field).<wbr/></p>
18632            </td>
18633
18634            <td class="entry_units">
18635              A pair of focus distances in diopters: (near,<wbr/>
18636          far); see android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details.<wbr/>
18637            </td>
18638
18639            <td class="entry_range">
18640              <p>&gt;=0</p>
18641            </td>
18642
18643            <td class="entry_hal_version">
18644              <p>3.<wbr/>2</p>
18645            </td>
18646
18647            <td class="entry_tags">
18648              <ul class="entry_tags">
18649                  <li><a href="#tag_BC">BC</a></li>
18650              </ul>
18651            </td>
18652
18653          </tr>
18654          <tr class="entries_header">
18655            <th class="th_details" colspan="6">Details</th>
18656          </tr>
18657          <tr class="entry_cont">
18658            <td class="entry_details" colspan="6">
18659              <p>If variable focus not supported,<wbr/> can still report
18660fixed depth of field range</p>
18661            </td>
18662          </tr>
18663
18664
18665          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18666           <!-- end of entry -->
18667
18668
18669          <tr class="entry" id="dynamic_android.lens.opticalStabilizationMode">
18670            <td class="entry_name
18671             " rowspan="3">
18672              android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode
18673            </td>
18674            <td class="entry_type">
18675                <span class="entry_type_name entry_type_name_enum">byte</span>
18676
18677              <span class="entry_type_visibility"> [public]</span>
18678
18679
18680              <span class="entry_type_hwlevel">[limited] </span>
18681
18682
18683
18684                <ul class="entry_type_enum">
18685                  <li>
18686                    <span class="entry_type_enum_name">OFF (v3.2)</span>
18687                    <span class="entry_type_enum_notes"><p>Optical stabilization is unavailable.<wbr/></p></span>
18688                  </li>
18689                  <li>
18690                    <span class="entry_type_enum_name">ON (v3.2)</span>
18691                    <span class="entry_type_enum_optional">[optional]</span>
18692                    <span class="entry_type_enum_notes"><p>Optical stabilization is enabled.<wbr/></p></span>
18693                  </li>
18694                </ul>
18695
18696            </td> <!-- entry_type -->
18697
18698            <td class="entry_description">
18699              <p>Sets whether the camera device uses optical image stabilization (OIS)
18700when capturing images.<wbr/></p>
18701            </td>
18702
18703            <td class="entry_units">
18704            </td>
18705
18706            <td class="entry_range">
18707              <p><a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a></p>
18708            </td>
18709
18710            <td class="entry_hal_version">
18711              <p>3.<wbr/>2</p>
18712            </td>
18713
18714            <td class="entry_tags">
18715              <ul class="entry_tags">
18716                  <li><a href="#tag_V1">V1</a></li>
18717              </ul>
18718            </td>
18719
18720          </tr>
18721          <tr class="entries_header">
18722            <th class="th_details" colspan="6">Details</th>
18723          </tr>
18724          <tr class="entry_cont">
18725            <td class="entry_details" colspan="6">
18726              <p>OIS is used to compensate for motion blur due to small
18727movements of the camera during capture.<wbr/> Unlike digital image
18728stabilization (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> OIS
18729makes use of mechanical elements to stabilize the camera
18730sensor,<wbr/> and thus allows for longer exposure times before
18731camera shake becomes apparent.<wbr/></p>
18732<p>Switching between different optical stabilization modes may take several
18733frames to initialize,<wbr/> the camera device will report the current mode in
18734capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/> the
18735optical stabilization modes in the first several capture results may still
18736be "OFF",<wbr/> and it will become "ON" when the initialization is done.<wbr/></p>
18737<p>If a camera device supports both OIS and digital image stabilization
18738(<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may produce undesirable
18739interaction,<wbr/> so it is recommended not to enable both at the same time.<wbr/></p>
18740<p>If <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a> is set to "PREVIEW_<wbr/>STABILIZATION",<wbr/>
18741<a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> is overridden.<wbr/> The camera sub-system may choose
18742to turn on hardware based image stabilization in addition to software based stabilization
18743if it deems that appropriate.<wbr/> This key's value in the capture result will reflect which
18744OIS mode was chosen.<wbr/></p>
18745<p>Not all devices will support OIS; see
18746<a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a> for
18747available controls.<wbr/></p>
18748            </td>
18749          </tr>
18750
18751
18752          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18753           <!-- end of entry -->
18754
18755
18756          <tr class="entry" id="dynamic_android.lens.state">
18757            <td class="entry_name
18758             " rowspan="3">
18759              android.<wbr/>lens.<wbr/>state
18760            </td>
18761            <td class="entry_type">
18762                <span class="entry_type_name entry_type_name_enum">byte</span>
18763
18764              <span class="entry_type_visibility"> [public]</span>
18765
18766
18767              <span class="entry_type_hwlevel">[limited] </span>
18768
18769
18770
18771                <ul class="entry_type_enum">
18772                  <li>
18773                    <span class="entry_type_enum_name">STATIONARY (v3.2)</span>
18774                    <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/>
18775<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>
18776                  </li>
18777                  <li>
18778                    <span class="entry_type_enum_name">MOVING (v3.2)</span>
18779                    <span class="entry_type_enum_notes"><p>One or several of the lens parameters
18780(<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/>
18781<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
18782currently changing.<wbr/></p></span>
18783                  </li>
18784                </ul>
18785
18786            </td> <!-- entry_type -->
18787
18788            <td class="entry_description">
18789              <p>Current lens status.<wbr/></p>
18790            </td>
18791
18792            <td class="entry_units">
18793            </td>
18794
18795            <td class="entry_range">
18796            </td>
18797
18798            <td class="entry_hal_version">
18799              <p>3.<wbr/>2</p>
18800            </td>
18801
18802            <td class="entry_tags">
18803              <ul class="entry_tags">
18804                  <li><a href="#tag_V1">V1</a></li>
18805              </ul>
18806            </td>
18807
18808          </tr>
18809          <tr class="entries_header">
18810            <th class="th_details" colspan="6">Details</th>
18811          </tr>
18812          <tr class="entry_cont">
18813            <td class="entry_details" colspan="6">
18814              <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/>
18815<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/>
18816they may take several frames to reach the requested values.<wbr/> This state indicates
18817the current status of the lens parameters.<wbr/></p>
18818<p>When the state is STATIONARY,<wbr/> the lens parameters are not changing.<wbr/> This could be
18819either because the parameters are all fixed,<wbr/> or because the lens has had enough
18820time to reach the most recently-requested values.<wbr/>
18821If all these lens parameters are not changeable for a camera device,<wbr/> as listed below:</p>
18822<ul>
18823<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
18824<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> parameter will always be 0.<wbr/></li>
18825<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/>
18826which means the optical zoom is not supported.<wbr/></li>
18827<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>
18828<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>
18829</ul>
18830<p>Then this state will always be STATIONARY.<wbr/></p>
18831<p>When the state is MOVING,<wbr/> it indicates that at least one of the lens parameters
18832is changing.<wbr/></p>
18833            </td>
18834          </tr>
18835
18836
18837          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18838           <!-- end of entry -->
18839
18840
18841          <tr class="entry" id="dynamic_android.lens.poseRotation">
18842            <td class="entry_name
18843             " rowspan="3">
18844              android.<wbr/>lens.<wbr/>pose<wbr/>Rotation
18845            </td>
18846            <td class="entry_type">
18847                <span class="entry_type_name">float</span>
18848                <span class="entry_type_container">x</span>
18849
18850                <span class="entry_type_array">
18851                  4
18852                </span>
18853              <span class="entry_type_visibility"> [public]</span>
18854
18855
18856
18857
18858
18859
18860            </td> <!-- entry_type -->
18861
18862            <td class="entry_description">
18863              <p>The orientation of the camera relative to the sensor
18864coordinate system.<wbr/></p>
18865            </td>
18866
18867            <td class="entry_units">
18868
18869            Quaternion coefficients
18870
18871            </td>
18872
18873            <td class="entry_range">
18874            </td>
18875
18876            <td class="entry_hal_version">
18877              <p>3.<wbr/>2</p>
18878            </td>
18879
18880            <td class="entry_tags">
18881              <ul class="entry_tags">
18882                  <li><a href="#tag_DEPTH">DEPTH</a></li>
18883              </ul>
18884            </td>
18885
18886          </tr>
18887          <tr class="entries_header">
18888            <th class="th_details" colspan="6">Details</th>
18889          </tr>
18890          <tr class="entry_cont">
18891            <td class="entry_details" colspan="6">
18892              <p>The four coefficients that describe the quaternion
18893rotation from the Android sensor coordinate system to a
18894camera-aligned coordinate system where the X-axis is
18895aligned with the long side of the image sensor,<wbr/> the Y-axis
18896is aligned with the short side of the image sensor,<wbr/> and
18897the Z-axis is aligned with the optical axis of the sensor.<wbr/></p>
18898<p>To convert from the quaternion coefficients <code>(x,<wbr/>y,<wbr/>z,<wbr/>w)</code>
18899to the axis of rotation <code>(a_<wbr/>x,<wbr/> a_<wbr/>y,<wbr/> a_<wbr/>z)</code> and rotation
18900amount <code>theta</code>,<wbr/> the following formulas can be used:</p>
18901<pre><code> theta = 2 * acos(w)
18902a_<wbr/>x = x /<wbr/> sin(theta/<wbr/>2)
18903a_<wbr/>y = y /<wbr/> sin(theta/<wbr/>2)
18904a_<wbr/>z = z /<wbr/> sin(theta/<wbr/>2)
18905</code></pre>
18906<p>To create a 3x3 rotation matrix that applies the rotation
18907defined by this quaternion,<wbr/> the following matrix can be
18908used:</p>
18909<pre><code>R = [ 1 - 2y^2 - 2z^2,<wbr/>       2xy - 2zw,<wbr/>       2xz + 2yw,<wbr/>
18910           2xy + 2zw,<wbr/> 1 - 2x^2 - 2z^2,<wbr/>       2yz - 2xw,<wbr/>
18911           2xz - 2yw,<wbr/>       2yz + 2xw,<wbr/> 1 - 2x^2 - 2y^2 ]
18912</code></pre>
18913<p>This matrix can then be used to apply the rotation to a
18914 column vector point with</p>
18915<p><code>p' = Rp</code></p>
18916<p>where <code>p</code> is in the device sensor coordinate system,<wbr/> and
18917 <code>p'</code> is in the camera-oriented coordinate system.<wbr/></p>
18918<p>If <a href="#static_android.lens.poseReference">android.<wbr/>lens.<wbr/>pose<wbr/>Reference</a> is UNDEFINED,<wbr/> the quaternion rotation cannot
18919 be accurately represented by the camera device,<wbr/> and will be represented by
18920 default values matching its default facing.<wbr/></p>
18921            </td>
18922          </tr>
18923
18924
18925          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18926           <!-- end of entry -->
18927
18928
18929          <tr class="entry" id="dynamic_android.lens.poseTranslation">
18930            <td class="entry_name
18931             " rowspan="3">
18932              android.<wbr/>lens.<wbr/>pose<wbr/>Translation
18933            </td>
18934            <td class="entry_type">
18935                <span class="entry_type_name">float</span>
18936                <span class="entry_type_container">x</span>
18937
18938                <span class="entry_type_array">
18939                  3
18940                </span>
18941              <span class="entry_type_visibility"> [public]</span>
18942
18943
18944
18945
18946
18947
18948            </td> <!-- entry_type -->
18949
18950            <td class="entry_description">
18951              <p>Position of the camera optical center.<wbr/></p>
18952            </td>
18953
18954            <td class="entry_units">
18955              Meters
18956            </td>
18957
18958            <td class="entry_range">
18959            </td>
18960
18961            <td class="entry_hal_version">
18962              <p>3.<wbr/>2</p>
18963            </td>
18964
18965            <td class="entry_tags">
18966              <ul class="entry_tags">
18967                  <li><a href="#tag_DEPTH">DEPTH</a></li>
18968              </ul>
18969            </td>
18970
18971          </tr>
18972          <tr class="entries_header">
18973            <th class="th_details" colspan="6">Details</th>
18974          </tr>
18975          <tr class="entry_cont">
18976            <td class="entry_details" colspan="6">
18977              <p>The position of the camera device's lens optical center,<wbr/>
18978as a three-dimensional vector <code>(x,<wbr/>y,<wbr/>z)</code>.<wbr/></p>
18979<p>Prior to Android P,<wbr/> or when <a href="#static_android.lens.poseReference">android.<wbr/>lens.<wbr/>pose<wbr/>Reference</a> is PRIMARY_<wbr/>CAMERA,<wbr/> this position
18980is relative to the optical center of the largest camera device facing in the same
18981direction as this camera,<wbr/> in the <a href="https://developer.android.com/reference/android/hardware/SensorEvent.html">Android sensor
18982coordinate axes</a>.<wbr/> Note that only the axis definitions are shared with the sensor
18983coordinate system,<wbr/> but not the origin.<wbr/></p>
18984<p>If this device is the largest or only camera device with a given facing,<wbr/> then this
18985position will be <code>(0,<wbr/> 0,<wbr/> 0)</code>; a camera device with a lens optical center located 3 cm
18986from the main sensor along the +X axis (to the right from the user's perspective) will
18987report <code>(0.<wbr/>03,<wbr/> 0,<wbr/> 0)</code>.<wbr/>  Note that this means that,<wbr/> for many computer vision
18988applications,<wbr/> the position needs to be negated to convert it to a translation from the
18989camera to the origin.<wbr/></p>
18990<p>To transform a pixel coordinates between two cameras facing the same direction,<wbr/> first
18991the source camera <a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a> must be corrected for.<wbr/>  Then the source
18992camera <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> needs to be applied,<wbr/> followed by the
18993<a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> of the source camera,<wbr/> the translation of the source camera
18994relative to the destination camera,<wbr/> the <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> of the destination
18995camera,<wbr/> and finally the inverse of <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> of the destination
18996camera.<wbr/> This obtains a radial-distortion-free coordinate in the destination camera pixel
18997coordinates.<wbr/></p>
18998<p>To compare this against a real image from the destination camera,<wbr/> the destination camera
18999image then needs to be corrected for radial distortion before comparison or sampling.<wbr/></p>
19000<p>When <a href="#static_android.lens.poseReference">android.<wbr/>lens.<wbr/>pose<wbr/>Reference</a> is GYROSCOPE,<wbr/> then this position is relative to
19001the center of the primary gyroscope on the device.<wbr/> The axis definitions are the same as
19002with PRIMARY_<wbr/>CAMERA.<wbr/></p>
19003<p>When <a href="#static_android.lens.poseReference">android.<wbr/>lens.<wbr/>pose<wbr/>Reference</a> is UNDEFINED,<wbr/> this position cannot be accurately
19004represented by the camera device,<wbr/> and will be represented as <code>(0,<wbr/> 0,<wbr/> 0)</code>.<wbr/></p>
19005<p>When <a href="#static_android.lens.poseReference">android.<wbr/>lens.<wbr/>pose<wbr/>Reference</a> is AUTOMOTIVE,<wbr/> then this position is relative to the
19006origin of the automotive sensor coordinate system,<wbr/> which is at the center of the rear
19007axle.<wbr/></p>
19008            </td>
19009          </tr>
19010
19011
19012          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19013           <!-- end of entry -->
19014
19015
19016          <tr class="entry" id="dynamic_android.lens.intrinsicCalibration">
19017            <td class="entry_name
19018             " rowspan="3">
19019              android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration
19020            </td>
19021            <td class="entry_type">
19022                <span class="entry_type_name">float</span>
19023                <span class="entry_type_container">x</span>
19024
19025                <span class="entry_type_array">
19026                  5
19027                </span>
19028              <span class="entry_type_visibility"> [public]</span>
19029
19030
19031
19032
19033
19034
19035            </td> <!-- entry_type -->
19036
19037            <td class="entry_description">
19038              <p>The parameters for this camera device's intrinsic
19039calibration.<wbr/></p>
19040            </td>
19041
19042            <td class="entry_units">
19043
19044            Pixels in the
19045            android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size
19046            coordinate system.<wbr/>
19047
19048            </td>
19049
19050            <td class="entry_range">
19051            </td>
19052
19053            <td class="entry_hal_version">
19054              <p>3.<wbr/>2</p>
19055            </td>
19056
19057            <td class="entry_tags">
19058              <ul class="entry_tags">
19059                  <li><a href="#tag_DEPTH">DEPTH</a></li>
19060              </ul>
19061            </td>
19062
19063          </tr>
19064          <tr class="entries_header">
19065            <th class="th_details" colspan="6">Details</th>
19066          </tr>
19067          <tr class="entry_cont">
19068            <td class="entry_details" colspan="6">
19069              <p>The five calibration parameters that describe the
19070transform from camera-centric 3D coordinates to sensor
19071pixel coordinates:</p>
19072<pre><code>[f_<wbr/>x,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>x,<wbr/> c_<wbr/>y,<wbr/> s]
19073</code></pre>
19074<p>Where <code>f_<wbr/>x</code> and <code>f_<wbr/>y</code> are the horizontal and vertical
19075focal lengths,<wbr/> <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code> is the position of the optical
19076axis,<wbr/> and <code>s</code> is a skew parameter for the sensor plane not
19077being aligned with the lens plane.<wbr/></p>
19078<p>These are typically used within a transformation matrix K:</p>
19079<pre><code>K = [ f_<wbr/>x,<wbr/>   s,<wbr/> c_<wbr/>x,<wbr/>
19080       0,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>y,<wbr/>
19081       0    0,<wbr/>   1 ]
19082</code></pre>
19083<p>which can then be combined with the camera pose rotation
19084<code>R</code> and translation <code>t</code> (<a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> and
19085<a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a>,<wbr/> respectively) to calculate the
19086complete transform from world coordinates to pixel
19087coordinates:</p>
19088<pre><code>P = [ K 0   * [ R -Rt
19089     0 1 ]      0 1 ]
19090</code></pre>
19091<p>(Note the negation of poseTranslation when mapping from camera
19092to world coordinates,<wbr/> and multiplication by the rotation).<wbr/></p>
19093<p>With <code>p_<wbr/>w</code> being a point in the world coordinate system
19094and <code>p_<wbr/>s</code> being a point in the camera active pixel array
19095coordinate system,<wbr/> and with the mapping including the
19096homogeneous division by z:</p>
19097<pre><code> p_<wbr/>h = (x_<wbr/>h,<wbr/> y_<wbr/>h,<wbr/> z_<wbr/>h) = P p_<wbr/>w
19098p_<wbr/>s = p_<wbr/>h /<wbr/> z_<wbr/>h
19099</code></pre>
19100<p>so <code>[x_<wbr/>s,<wbr/> y_<wbr/>s]</code> is the pixel coordinates of the world
19101point,<wbr/> <code>z_<wbr/>s = 1</code>,<wbr/> and <code>w_<wbr/>s</code> is a measurement of disparity
19102(depth) in pixel coordinates.<wbr/></p>
19103<p>Note that the coordinate system for this transform is the
19104<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/>
19105where <code>(0,<wbr/>0)</code> is the top-left of the
19106preCorrectionActiveArraySize rectangle.<wbr/> Once the pose and
19107intrinsic calibration transforms have been applied to a
19108world point,<wbr/> then the <a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a>
19109transform needs to be applied,<wbr/> and the result adjusted to
19110be in the <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> coordinate
19111system (where <code>(0,<wbr/> 0)</code> is the top-left of the
19112activeArraySize rectangle),<wbr/> to determine the final pixel
19113coordinate of the world point for processed (non-RAW)
19114output buffers.<wbr/></p>
19115<p>For camera devices,<wbr/> the center of pixel <code>(x,<wbr/>y)</code> is located at
19116coordinate <code>(x + 0.<wbr/>5,<wbr/> y + 0.<wbr/>5)</code>.<wbr/>  So on a device with a
19117precorrection active array of size <code>(10,<wbr/>10)</code>,<wbr/> the valid pixel
19118indices go from <code>(0,<wbr/>0)-(9,<wbr/>9)</code>,<wbr/> and an perfectly-built camera would
19119have an optical center at the exact center of the pixel grid,<wbr/> at
19120coordinates <code>(5.<wbr/>0,<wbr/> 5.<wbr/>0)</code>,<wbr/> which is the top-left corner of pixel
19121<code>(5,<wbr/>5)</code>.<wbr/></p>
19122            </td>
19123          </tr>
19124
19125
19126          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19127           <!-- end of entry -->
19128
19129
19130          <tr class="entry" id="dynamic_android.lens.radialDistortion">
19131            <td class="entry_name
19132                entry_name_deprecated
19133             " rowspan="3">
19134              android.<wbr/>lens.<wbr/>radial<wbr/>Distortion
19135            </td>
19136            <td class="entry_type">
19137                <span class="entry_type_name">float</span>
19138                <span class="entry_type_container">x</span>
19139
19140                <span class="entry_type_array">
19141                  6
19142                </span>
19143              <span class="entry_type_visibility"> [public]</span>
19144
19145
19146
19147              <span class="entry_type_deprecated">[deprecated] </span>
19148
19149
19150
19151            </td> <!-- entry_type -->
19152
19153            <td class="entry_description">
19154              <p>The correction coefficients to correct for this camera device's
19155radial and tangential lens distortion.<wbr/></p>
19156            </td>
19157
19158            <td class="entry_units">
19159
19160            Unitless coefficients.<wbr/>
19161
19162            </td>
19163
19164            <td class="entry_range">
19165              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
19166            </td>
19167
19168            <td class="entry_hal_version">
19169              <p>3.<wbr/>2</p>
19170            </td>
19171
19172            <td class="entry_tags">
19173              <ul class="entry_tags">
19174                  <li><a href="#tag_DEPTH">DEPTH</a></li>
19175              </ul>
19176            </td>
19177
19178          </tr>
19179          <tr class="entries_header">
19180            <th class="th_details" colspan="6">Details</th>
19181          </tr>
19182          <tr class="entry_cont">
19183            <td class="entry_details" colspan="6">
19184              <p>Four radial distortion coefficients <code>[kappa_<wbr/>0,<wbr/> kappa_<wbr/>1,<wbr/> kappa_<wbr/>2,<wbr/>
19185kappa_<wbr/>3]</code> and two tangential distortion coefficients
19186<code>[kappa_<wbr/>4,<wbr/> kappa_<wbr/>5]</code> that can be used to correct the
19187lens's geometric distortion with the mapping equations:</p>
19188<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 ) +
19189       kappa_<wbr/>4 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>5 * ( r^2 + 2 * x_<wbr/>i^2 )
19190 y_<wbr/>c = y_<wbr/>i * ( kappa_<wbr/>0 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) +
19191       kappa_<wbr/>5 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>4 * ( r^2 + 2 * y_<wbr/>i^2 )
19192</code></pre>
19193<p>Here,<wbr/> <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> are the coordinates to sample in the
19194input image that correspond to the pixel values in the
19195corrected image at the coordinate <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code>:</p>
19196<pre><code> correctedImage(x_<wbr/>i,<wbr/> y_<wbr/>i) = sample_<wbr/>at(x_<wbr/>c,<wbr/> y_<wbr/>c,<wbr/> inputImage)
19197</code></pre>
19198<p>The pixel coordinates are defined in a normalized
19199coordinate system related to the
19200<a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> calibration fields.<wbr/>
19201Both <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
19202lens optical center <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code>.<wbr/> The maximum magnitudes
19203of both x and y coordinates are normalized to be 1 at the
19204edge further from the optical center,<wbr/> so the range
19205for both dimensions is <code>-1 &lt;= x &lt;= 1</code>.<wbr/></p>
19206<p>Finally,<wbr/> <code>r</code> represents the radial distance from the
19207optical center,<wbr/> <code>r^2 = x_<wbr/>i^2 + y_<wbr/>i^2</code>,<wbr/> and its magnitude
19208is therefore no larger than <code>|<wbr/>r|<wbr/> &lt;= sqrt(2)</code>.<wbr/></p>
19209<p>The distortion model used is the Brown-Conrady model.<wbr/></p>
19210            </td>
19211          </tr>
19212
19213
19214          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19215           <!-- end of entry -->
19216
19217
19218          <tr class="entry" id="dynamic_android.lens.distortion">
19219            <td class="entry_name
19220             " rowspan="3">
19221              android.<wbr/>lens.<wbr/>distortion
19222            </td>
19223            <td class="entry_type">
19224                <span class="entry_type_name">float</span>
19225                <span class="entry_type_container">x</span>
19226
19227                <span class="entry_type_array">
19228                  5
19229                </span>
19230              <span class="entry_type_visibility"> [public]</span>
19231
19232
19233
19234
19235
19236
19237            </td> <!-- entry_type -->
19238
19239            <td class="entry_description">
19240              <p>The correction coefficients to correct for this camera device's
19241radial and tangential lens distortion.<wbr/></p>
19242<p>Replaces the deprecated <a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a> field,<wbr/> which was
19243inconsistently defined.<wbr/></p>
19244            </td>
19245
19246            <td class="entry_units">
19247
19248            Unitless coefficients.<wbr/>
19249
19250            </td>
19251
19252            <td class="entry_range">
19253            </td>
19254
19255            <td class="entry_hal_version">
19256              <p>3.<wbr/>3</p>
19257            </td>
19258
19259            <td class="entry_tags">
19260              <ul class="entry_tags">
19261                  <li><a href="#tag_DEPTH">DEPTH</a></li>
19262              </ul>
19263            </td>
19264
19265          </tr>
19266          <tr class="entries_header">
19267            <th class="th_details" colspan="6">Details</th>
19268          </tr>
19269          <tr class="entry_cont">
19270            <td class="entry_details" colspan="6">
19271              <p>Three radial distortion coefficients <code>[kappa_<wbr/>1,<wbr/> kappa_<wbr/>2,<wbr/>
19272kappa_<wbr/>3]</code> and two tangential distortion coefficients
19273<code>[kappa_<wbr/>4,<wbr/> kappa_<wbr/>5]</code> that can be used to correct the
19274lens's geometric distortion with the mapping equations:</p>
19275<pre><code> x_<wbr/>c = x_<wbr/>i * ( 1 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) +
19276       kappa_<wbr/>4 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>5 * ( r^2 + 2 * x_<wbr/>i^2 )
19277 y_<wbr/>c = y_<wbr/>i * ( 1 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) +
19278       kappa_<wbr/>5 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>4 * ( r^2 + 2 * y_<wbr/>i^2 )
19279</code></pre>
19280<p>Here,<wbr/> <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> are the coordinates to sample in the
19281input image that correspond to the pixel values in the
19282corrected image at the coordinate <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code>:</p>
19283<pre><code> correctedImage(x_<wbr/>i,<wbr/> y_<wbr/>i) = sample_<wbr/>at(x_<wbr/>c,<wbr/> y_<wbr/>c,<wbr/> inputImage)
19284</code></pre>
19285<p>The pixel coordinates are defined in a coordinate system
19286related to the <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a>
19287calibration fields; see that entry for details of the mapping stages.<wbr/>
19288Both <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code> and <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code>
19289have <code>(0,<wbr/>0)</code> at the lens optical center <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code>,<wbr/> and
19290the range of the coordinates depends on the focal length
19291terms of the intrinsic calibration.<wbr/></p>
19292<p>Finally,<wbr/> <code>r</code> represents the radial distance from the
19293optical center,<wbr/> <code>r^2 = x_<wbr/>i^2 + y_<wbr/>i^2</code>.<wbr/></p>
19294<p>The distortion model used is the Brown-Conrady model.<wbr/></p>
19295            </td>
19296          </tr>
19297
19298
19299          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19300           <!-- end of entry -->
19301
19302
19303
19304      <!-- end of kind -->
19305      </tbody>
19306
19307  <!-- end of section -->
19308  <tr><td colspan="7" id="section_noiseReduction" class="section">noiseReduction</td></tr>
19309
19310
19311      <tr><td colspan="7" class="kind">controls</td></tr>
19312
19313      <thead class="entries_header">
19314        <tr>
19315          <th class="th_name">Property Name</th>
19316          <th class="th_type">Type</th>
19317          <th class="th_description">Description</th>
19318          <th class="th_units">Units</th>
19319          <th class="th_range">Range</th>
19320          <th class="th_hal_version">Initial HIDL HAL version</th>
19321          <th class="th_tags">Tags</th>
19322        </tr>
19323      </thead>
19324
19325      <tbody>
19326
19327
19328
19329
19330
19331
19332
19333
19334
19335
19336          <tr class="entry" id="controls_android.noiseReduction.mode">
19337            <td class="entry_name
19338             " rowspan="5">
19339              android.<wbr/>noise<wbr/>Reduction.<wbr/>mode
19340            </td>
19341            <td class="entry_type">
19342                <span class="entry_type_name entry_type_name_enum">byte</span>
19343
19344              <span class="entry_type_visibility"> [public]</span>
19345
19346
19347              <span class="entry_type_hwlevel">[full] </span>
19348
19349
19350
19351                <ul class="entry_type_enum">
19352                  <li>
19353                    <span class="entry_type_enum_name">OFF (v3.2)</span>
19354                    <span class="entry_type_enum_notes"><p>No noise reduction is applied.<wbr/></p></span>
19355                  </li>
19356                  <li>
19357                    <span class="entry_type_enum_name">FAST (v3.2)</span>
19358                    <span class="entry_type_enum_notes"><p>Noise reduction is applied without reducing frame rate relative to sensor
19359output.<wbr/> It may be the same as OFF if noise reduction will reduce frame rate
19360relative to sensor.<wbr/></p></span>
19361                  </li>
19362                  <li>
19363                    <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
19364                    <span class="entry_type_enum_notes"><p>High-quality noise reduction is applied,<wbr/> at the cost of possibly reduced frame
19365rate relative to sensor output.<wbr/></p></span>
19366                  </li>
19367                  <li>
19368                    <span class="entry_type_enum_name">MINIMAL (v3.2)</span>
19369                    <span class="entry_type_enum_optional">[optional]</span>
19370                    <span class="entry_type_enum_notes"><p>MINIMAL noise reduction is applied without reducing frame rate relative to
19371sensor output.<wbr/> </p></span>
19372                  </li>
19373                  <li>
19374                    <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span>
19375                    <span class="entry_type_enum_optional">[optional]</span>
19376                    <span class="entry_type_enum_notes"><p>Noise reduction is applied at different levels for different output streams,<wbr/>
19377based 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>)
19378or below have noise reduction applied,<wbr/> while higher-resolution streams have MINIMAL (if
19379supported) or no noise reduction applied (if MINIMAL is not supported.<wbr/>) The degree of
19380noise reduction for low-resolution streams is tuned so that frame rate is not impacted,<wbr/>
19381and the quality is equal to or better than FAST (since it is only applied to
19382lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p>
19383<p>This mode is intended to be used by applications operating in a zero-shutter-lag mode
19384with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures
19385high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is
19386produced via reprocessing when a user takes a picture.<wbr/>  For such a use case,<wbr/> the
19387high-resolution buffers must not have noise reduction applied to maximize efficiency of
19388preview and to avoid over-applying noise filtering when reprocessing,<wbr/> while
19389low-resolution buffers (used for recording or preview,<wbr/> generally) need noise reduction
19390applied for reasonable preview quality.<wbr/></p>
19391<p>This mode is guaranteed to be supported by devices that support either the
19392YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities
19393(<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will
19394be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span>
19395                  </li>
19396                </ul>
19397
19398            </td> <!-- entry_type -->
19399
19400            <td class="entry_description">
19401              <p>Mode of operation for the noise reduction algorithm.<wbr/></p>
19402            </td>
19403
19404            <td class="entry_units">
19405            </td>
19406
19407            <td class="entry_range">
19408              <p><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a></p>
19409            </td>
19410
19411            <td class="entry_hal_version">
19412              <p>3.<wbr/>2</p>
19413            </td>
19414
19415            <td class="entry_tags">
19416              <ul class="entry_tags">
19417                  <li><a href="#tag_V1">V1</a></li>
19418                  <li><a href="#tag_REPROC">REPROC</a></li>
19419              </ul>
19420            </td>
19421
19422          </tr>
19423          <tr class="entries_header">
19424            <th class="th_details" colspan="6">Details</th>
19425          </tr>
19426          <tr class="entry_cont">
19427            <td class="entry_details" colspan="6">
19428              <p>The noise reduction algorithm attempts to improve image quality by removing
19429excessive noise added by the capture process,<wbr/> especially in dark conditions.<wbr/></p>
19430<p>OFF means no noise reduction will be applied by the camera device,<wbr/> for both raw and
19431YUV domain.<wbr/></p>
19432<p>MINIMAL means that only sensor raw domain basic noise reduction is enabled ,<wbr/>to remove
19433demosaicing or other processing artifacts.<wbr/> For YUV_<wbr/>REPROCESSING,<wbr/> MINIMAL is same as OFF.<wbr/>
19434This mode is optional,<wbr/> may not be support by all devices.<wbr/> The application should check
19435<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>
19436<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined noise filtering
19437will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device
19438will use the highest-quality noise filtering algorithms,<wbr/>
19439even if it slows down capture rate.<wbr/> FAST means the camera device will not
19440slow down capture rate when applying noise filtering.<wbr/> FAST may be the same as MINIMAL if
19441MINIMAL is listed,<wbr/> or the same as OFF if any noise filtering will slow down capture rate.<wbr/>
19442Every output stream will have a similar amount of enhancement applied.<wbr/></p>
19443<p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular
19444buffer of high-resolution images during preview and reprocess image(s) from that buffer
19445into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies
19446noise reduction to low-resolution streams (below maximum recording resolution) to maximize
19447preview quality,<wbr/> but does not apply noise reduction to high-resolution streams,<wbr/> since
19448those will be reprocessed later if necessary.<wbr/></p>
19449<p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera device
19450will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV domain noise reduction,<wbr/> respectively.<wbr/> The camera device
19451may adjust the noise reduction parameters for best image quality based on the
19452<a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a> if it is set.<wbr/></p>
19453            </td>
19454          </tr>
19455
19456          <tr class="entries_header">
19457            <th class="th_details" colspan="6">HAL Implementation Details</th>
19458          </tr>
19459          <tr class="entry_cont">
19460            <td class="entry_details" colspan="6">
19461              <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
19462adjust the internal noise reduction parameters appropriately to get the best quality
19463images.<wbr/></p>
19464            </td>
19465          </tr>
19466
19467          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19468           <!-- end of entry -->
19469
19470
19471          <tr class="entry" id="controls_android.noiseReduction.strength">
19472            <td class="entry_name
19473             " rowspan="1">
19474              android.<wbr/>noise<wbr/>Reduction.<wbr/>strength
19475            </td>
19476            <td class="entry_type">
19477                <span class="entry_type_name">byte</span>
19478
19479              <span class="entry_type_visibility"> [system]</span>
19480
19481
19482
19483
19484
19485
19486            </td> <!-- entry_type -->
19487
19488            <td class="entry_description">
19489              <p>Control the amount of noise reduction
19490applied to the images</p>
19491            </td>
19492
19493            <td class="entry_units">
19494              1-10; 10 is max noise reduction
19495            </td>
19496
19497            <td class="entry_range">
19498              <p>1 - 10</p>
19499            </td>
19500
19501            <td class="entry_hal_version">
19502              <p>3.<wbr/>2</p>
19503            </td>
19504
19505            <td class="entry_tags">
19506              <ul class="entry_tags">
19507                  <li><a href="#tag_FUTURE">FUTURE</a></li>
19508              </ul>
19509            </td>
19510
19511          </tr>
19512
19513
19514          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19515           <!-- end of entry -->
19516
19517
19518
19519      <!-- end of kind -->
19520      </tbody>
19521      <tr><td colspan="7" class="kind">static</td></tr>
19522
19523      <thead class="entries_header">
19524        <tr>
19525          <th class="th_name">Property Name</th>
19526          <th class="th_type">Type</th>
19527          <th class="th_description">Description</th>
19528          <th class="th_units">Units</th>
19529          <th class="th_range">Range</th>
19530          <th class="th_hal_version">Initial HIDL HAL version</th>
19531          <th class="th_tags">Tags</th>
19532        </tr>
19533      </thead>
19534
19535      <tbody>
19536
19537
19538
19539
19540
19541
19542
19543
19544
19545
19546          <tr class="entry" id="static_android.noiseReduction.availableNoiseReductionModes">
19547            <td class="entry_name
19548             " rowspan="5">
19549              android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes
19550            </td>
19551            <td class="entry_type">
19552                <span class="entry_type_name">byte</span>
19553                <span class="entry_type_container">x</span>
19554
19555                <span class="entry_type_array">
19556                  n
19557                </span>
19558              <span class="entry_type_visibility"> [public as enumList]</span>
19559
19560
19561              <span class="entry_type_hwlevel">[limited] </span>
19562
19563
19564                <div class="entry_type_notes">list of enums</div>
19565
19566
19567            </td> <!-- entry_type -->
19568
19569            <td class="entry_description">
19570              <p>List of noise reduction modes for <a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a> that are supported
19571by this camera device.<wbr/></p>
19572            </td>
19573
19574            <td class="entry_units">
19575            </td>
19576
19577            <td class="entry_range">
19578              <p>Any value listed in <a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></p>
19579            </td>
19580
19581            <td class="entry_hal_version">
19582              <p>3.<wbr/>2</p>
19583            </td>
19584
19585            <td class="entry_tags">
19586              <ul class="entry_tags">
19587                  <li><a href="#tag_V1">V1</a></li>
19588                  <li><a href="#tag_REPROC">REPROC</a></li>
19589              </ul>
19590            </td>
19591
19592          </tr>
19593          <tr class="entries_header">
19594            <th class="th_details" colspan="6">Details</th>
19595          </tr>
19596          <tr class="entry_cont">
19597            <td class="entry_details" colspan="6">
19598              <p>Full-capability camera devices will always support OFF and FAST.<wbr/></p>
19599<p>Camera devices that support YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING will support
19600ZERO_<wbr/>SHUTTER_<wbr/>LAG.<wbr/></p>
19601<p>Legacy-capability camera devices will only support FAST mode.<wbr/></p>
19602            </td>
19603          </tr>
19604
19605          <tr class="entries_header">
19606            <th class="th_details" colspan="6">HAL Implementation Details</th>
19607          </tr>
19608          <tr class="entry_cont">
19609            <td class="entry_details" colspan="6">
19610              <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if noise reduction control is available
19611on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
19612That is,<wbr/> if the highest quality implementation on the camera device does not slow down
19613capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
19614            </td>
19615          </tr>
19616
19617          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19618           <!-- end of entry -->
19619
19620
19621
19622      <!-- end of kind -->
19623      </tbody>
19624      <tr><td colspan="7" class="kind">dynamic</td></tr>
19625
19626      <thead class="entries_header">
19627        <tr>
19628          <th class="th_name">Property Name</th>
19629          <th class="th_type">Type</th>
19630          <th class="th_description">Description</th>
19631          <th class="th_units">Units</th>
19632          <th class="th_range">Range</th>
19633          <th class="th_hal_version">Initial HIDL HAL version</th>
19634          <th class="th_tags">Tags</th>
19635        </tr>
19636      </thead>
19637
19638      <tbody>
19639
19640
19641
19642
19643
19644
19645
19646
19647
19648
19649          <tr class="entry" id="dynamic_android.noiseReduction.mode">
19650            <td class="entry_name
19651             " rowspan="5">
19652              android.<wbr/>noise<wbr/>Reduction.<wbr/>mode
19653            </td>
19654            <td class="entry_type">
19655                <span class="entry_type_name entry_type_name_enum">byte</span>
19656
19657              <span class="entry_type_visibility"> [public]</span>
19658
19659
19660              <span class="entry_type_hwlevel">[full] </span>
19661
19662
19663
19664                <ul class="entry_type_enum">
19665                  <li>
19666                    <span class="entry_type_enum_name">OFF (v3.2)</span>
19667                    <span class="entry_type_enum_notes"><p>No noise reduction is applied.<wbr/></p></span>
19668                  </li>
19669                  <li>
19670                    <span class="entry_type_enum_name">FAST (v3.2)</span>
19671                    <span class="entry_type_enum_notes"><p>Noise reduction is applied without reducing frame rate relative to sensor
19672output.<wbr/> It may be the same as OFF if noise reduction will reduce frame rate
19673relative to sensor.<wbr/></p></span>
19674                  </li>
19675                  <li>
19676                    <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
19677                    <span class="entry_type_enum_notes"><p>High-quality noise reduction is applied,<wbr/> at the cost of possibly reduced frame
19678rate relative to sensor output.<wbr/></p></span>
19679                  </li>
19680                  <li>
19681                    <span class="entry_type_enum_name">MINIMAL (v3.2)</span>
19682                    <span class="entry_type_enum_optional">[optional]</span>
19683                    <span class="entry_type_enum_notes"><p>MINIMAL noise reduction is applied without reducing frame rate relative to
19684sensor output.<wbr/> </p></span>
19685                  </li>
19686                  <li>
19687                    <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span>
19688                    <span class="entry_type_enum_optional">[optional]</span>
19689                    <span class="entry_type_enum_notes"><p>Noise reduction is applied at different levels for different output streams,<wbr/>
19690based 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>)
19691or below have noise reduction applied,<wbr/> while higher-resolution streams have MINIMAL (if
19692supported) or no noise reduction applied (if MINIMAL is not supported.<wbr/>) The degree of
19693noise reduction for low-resolution streams is tuned so that frame rate is not impacted,<wbr/>
19694and the quality is equal to or better than FAST (since it is only applied to
19695lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p>
19696<p>This mode is intended to be used by applications operating in a zero-shutter-lag mode
19697with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures
19698high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is
19699produced via reprocessing when a user takes a picture.<wbr/>  For such a use case,<wbr/> the
19700high-resolution buffers must not have noise reduction applied to maximize efficiency of
19701preview and to avoid over-applying noise filtering when reprocessing,<wbr/> while
19702low-resolution buffers (used for recording or preview,<wbr/> generally) need noise reduction
19703applied for reasonable preview quality.<wbr/></p>
19704<p>This mode is guaranteed to be supported by devices that support either the
19705YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities
19706(<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will
19707be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span>
19708                  </li>
19709                </ul>
19710
19711            </td> <!-- entry_type -->
19712
19713            <td class="entry_description">
19714              <p>Mode of operation for the noise reduction algorithm.<wbr/></p>
19715            </td>
19716
19717            <td class="entry_units">
19718            </td>
19719
19720            <td class="entry_range">
19721              <p><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a></p>
19722            </td>
19723
19724            <td class="entry_hal_version">
19725              <p>3.<wbr/>2</p>
19726            </td>
19727
19728            <td class="entry_tags">
19729              <ul class="entry_tags">
19730                  <li><a href="#tag_V1">V1</a></li>
19731                  <li><a href="#tag_REPROC">REPROC</a></li>
19732              </ul>
19733            </td>
19734
19735          </tr>
19736          <tr class="entries_header">
19737            <th class="th_details" colspan="6">Details</th>
19738          </tr>
19739          <tr class="entry_cont">
19740            <td class="entry_details" colspan="6">
19741              <p>The noise reduction algorithm attempts to improve image quality by removing
19742excessive noise added by the capture process,<wbr/> especially in dark conditions.<wbr/></p>
19743<p>OFF means no noise reduction will be applied by the camera device,<wbr/> for both raw and
19744YUV domain.<wbr/></p>
19745<p>MINIMAL means that only sensor raw domain basic noise reduction is enabled ,<wbr/>to remove
19746demosaicing or other processing artifacts.<wbr/> For YUV_<wbr/>REPROCESSING,<wbr/> MINIMAL is same as OFF.<wbr/>
19747This mode is optional,<wbr/> may not be support by all devices.<wbr/> The application should check
19748<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>
19749<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined noise filtering
19750will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device
19751will use the highest-quality noise filtering algorithms,<wbr/>
19752even if it slows down capture rate.<wbr/> FAST means the camera device will not
19753slow down capture rate when applying noise filtering.<wbr/> FAST may be the same as MINIMAL if
19754MINIMAL is listed,<wbr/> or the same as OFF if any noise filtering will slow down capture rate.<wbr/>
19755Every output stream will have a similar amount of enhancement applied.<wbr/></p>
19756<p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular
19757buffer of high-resolution images during preview and reprocess image(s) from that buffer
19758into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies
19759noise reduction to low-resolution streams (below maximum recording resolution) to maximize
19760preview quality,<wbr/> but does not apply noise reduction to high-resolution streams,<wbr/> since
19761those will be reprocessed later if necessary.<wbr/></p>
19762<p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera device
19763will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV domain noise reduction,<wbr/> respectively.<wbr/> The camera device
19764may adjust the noise reduction parameters for best image quality based on the
19765<a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a> if it is set.<wbr/></p>
19766            </td>
19767          </tr>
19768
19769          <tr class="entries_header">
19770            <th class="th_details" colspan="6">HAL Implementation Details</th>
19771          </tr>
19772          <tr class="entry_cont">
19773            <td class="entry_details" colspan="6">
19774              <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
19775adjust the internal noise reduction parameters appropriately to get the best quality
19776images.<wbr/></p>
19777            </td>
19778          </tr>
19779
19780          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19781           <!-- end of entry -->
19782
19783
19784
19785      <!-- end of kind -->
19786      </tbody>
19787
19788  <!-- end of section -->
19789  <tr><td colspan="7" id="section_quirks" class="section">quirks</td></tr>
19790
19791
19792      <tr><td colspan="7" class="kind">static</td></tr>
19793
19794      <thead class="entries_header">
19795        <tr>
19796          <th class="th_name">Property Name</th>
19797          <th class="th_type">Type</th>
19798          <th class="th_description">Description</th>
19799          <th class="th_units">Units</th>
19800          <th class="th_range">Range</th>
19801          <th class="th_hal_version">Initial HIDL HAL version</th>
19802          <th class="th_tags">Tags</th>
19803        </tr>
19804      </thead>
19805
19806      <tbody>
19807
19808
19809
19810
19811
19812
19813
19814
19815
19816
19817          <tr class="entry" id="static_android.quirks.meteringCropRegion">
19818            <td class="entry_name
19819                entry_name_deprecated
19820             " rowspan="3">
19821              android.<wbr/>quirks.<wbr/>metering<wbr/>Crop<wbr/>Region
19822            </td>
19823            <td class="entry_type">
19824                <span class="entry_type_name">byte</span>
19825
19826              <span class="entry_type_visibility"> [system]</span>
19827
19828
19829
19830              <span class="entry_type_deprecated">[deprecated] </span>
19831
19832
19833
19834            </td> <!-- entry_type -->
19835
19836            <td class="entry_description">
19837              <p>If set to 1,<wbr/> the camera service does not
19838scale 'normalized' coordinates with respect to the crop
19839region.<wbr/> This applies to metering input (a{e,<wbr/>f,<wbr/>wb}Region
19840and output (face rectangles).<wbr/></p>
19841            </td>
19842
19843            <td class="entry_units">
19844            </td>
19845
19846            <td class="entry_range">
19847              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
19848            </td>
19849
19850            <td class="entry_hal_version">
19851              <p>3.<wbr/>2</p>
19852            </td>
19853
19854            <td class="entry_tags">
19855            </td>
19856
19857          </tr>
19858          <tr class="entries_header">
19859            <th class="th_details" colspan="6">Details</th>
19860          </tr>
19861          <tr class="entry_cont">
19862            <td class="entry_details" colspan="6">
19863              <p>Normalized coordinates refer to those in the
19864(-1000,<wbr/>1000) range mentioned in the
19865android.<wbr/>hardware.<wbr/>Camera API.<wbr/></p>
19866<p>HAL implementations should instead always use and emit
19867sensor array-relative coordinates for all region data.<wbr/> Does
19868not need to be listed in static metadata.<wbr/> Support will be
19869removed in future versions of camera service.<wbr/></p>
19870            </td>
19871          </tr>
19872
19873
19874          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19875           <!-- end of entry -->
19876
19877
19878          <tr class="entry" id="static_android.quirks.triggerAfWithAuto">
19879            <td class="entry_name
19880                entry_name_deprecated
19881             " rowspan="3">
19882              android.<wbr/>quirks.<wbr/>trigger<wbr/>Af<wbr/>With<wbr/>Auto
19883            </td>
19884            <td class="entry_type">
19885                <span class="entry_type_name">byte</span>
19886
19887              <span class="entry_type_visibility"> [system]</span>
19888
19889
19890
19891              <span class="entry_type_deprecated">[deprecated] </span>
19892
19893
19894
19895            </td> <!-- entry_type -->
19896
19897            <td class="entry_description">
19898              <p>If set to 1,<wbr/> then the camera service always
19899switches to FOCUS_<wbr/>MODE_<wbr/>AUTO before issuing a AF
19900trigger.<wbr/></p>
19901            </td>
19902
19903            <td class="entry_units">
19904            </td>
19905
19906            <td class="entry_range">
19907              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
19908            </td>
19909
19910            <td class="entry_hal_version">
19911              <p>3.<wbr/>2</p>
19912            </td>
19913
19914            <td class="entry_tags">
19915            </td>
19916
19917          </tr>
19918          <tr class="entries_header">
19919            <th class="th_details" colspan="6">Details</th>
19920          </tr>
19921          <tr class="entry_cont">
19922            <td class="entry_details" colspan="6">
19923              <p>HAL implementations should implement AF trigger
19924modes for AUTO,<wbr/> MACRO,<wbr/> CONTINUOUS_<wbr/>FOCUS,<wbr/> and
19925CONTINUOUS_<wbr/>PICTURE modes instead of using this flag.<wbr/> Does
19926not need to be listed in static metadata.<wbr/> Support will be
19927removed in future versions of camera service</p>
19928            </td>
19929          </tr>
19930
19931
19932          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19933           <!-- end of entry -->
19934
19935
19936          <tr class="entry" id="static_android.quirks.useZslFormat">
19937            <td class="entry_name
19938                entry_name_deprecated
19939             " rowspan="3">
19940              android.<wbr/>quirks.<wbr/>use<wbr/>Zsl<wbr/>Format
19941            </td>
19942            <td class="entry_type">
19943                <span class="entry_type_name">byte</span>
19944
19945              <span class="entry_type_visibility"> [system]</span>
19946
19947
19948
19949              <span class="entry_type_deprecated">[deprecated] </span>
19950
19951
19952
19953            </td> <!-- entry_type -->
19954
19955            <td class="entry_description">
19956              <p>If set to 1,<wbr/> the camera service uses
19957CAMERA2_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>ZSL instead of
19958HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>IMPLEMENTATION_<wbr/>DEFINED for the zero
19959shutter lag stream</p>
19960            </td>
19961
19962            <td class="entry_units">
19963            </td>
19964
19965            <td class="entry_range">
19966              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
19967            </td>
19968
19969            <td class="entry_hal_version">
19970              <p>3.<wbr/>2</p>
19971            </td>
19972
19973            <td class="entry_tags">
19974            </td>
19975
19976          </tr>
19977          <tr class="entries_header">
19978            <th class="th_details" colspan="6">Details</th>
19979          </tr>
19980          <tr class="entry_cont">
19981            <td class="entry_details" colspan="6">
19982              <p>HAL implementations should use gralloc usage flags
19983to determine that a stream will be used for
19984zero-shutter-lag,<wbr/> instead of relying on an explicit
19985format setting.<wbr/> Does not need to be listed in static
19986metadata.<wbr/> Support will be removed in future versions of
19987camera service.<wbr/></p>
19988            </td>
19989          </tr>
19990
19991
19992          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19993           <!-- end of entry -->
19994
19995
19996          <tr class="entry" id="static_android.quirks.usePartialResult">
19997            <td class="entry_name
19998                entry_name_deprecated
19999             " rowspan="5">
20000              android.<wbr/>quirks.<wbr/>use<wbr/>Partial<wbr/>Result
20001            </td>
20002            <td class="entry_type">
20003                <span class="entry_type_name">byte</span>
20004
20005              <span class="entry_type_visibility"> [hidden]</span>
20006
20007
20008
20009              <span class="entry_type_deprecated">[deprecated] </span>
20010
20011
20012
20013            </td> <!-- entry_type -->
20014
20015            <td class="entry_description">
20016              <p>If set to 1,<wbr/> the HAL will always split result
20017metadata for a single capture into multiple buffers,<wbr/>
20018returned using multiple process_<wbr/>capture_<wbr/>result calls.<wbr/></p>
20019            </td>
20020
20021            <td class="entry_units">
20022            </td>
20023
20024            <td class="entry_range">
20025              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
20026            </td>
20027
20028            <td class="entry_hal_version">
20029              <p>3.<wbr/>2</p>
20030            </td>
20031
20032            <td class="entry_tags">
20033            </td>
20034
20035          </tr>
20036          <tr class="entries_header">
20037            <th class="th_details" colspan="6">Details</th>
20038          </tr>
20039          <tr class="entry_cont">
20040            <td class="entry_details" colspan="6">
20041              <p>Does not need to be listed in static
20042metadata.<wbr/> Support for partial results will be reworked in
20043future versions of camera service.<wbr/> This quirk will stop
20044working at that point; DO NOT USE without careful
20045consideration of future support.<wbr/></p>
20046            </td>
20047          </tr>
20048
20049          <tr class="entries_header">
20050            <th class="th_details" colspan="6">HAL Implementation Details</th>
20051          </tr>
20052          <tr class="entry_cont">
20053            <td class="entry_details" colspan="6">
20054              <p>Refer to <code>camera3_<wbr/>capture_<wbr/>result::partial_<wbr/>result</code>
20055for information on how to implement partial results.<wbr/></p>
20056            </td>
20057          </tr>
20058
20059          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20060           <!-- end of entry -->
20061
20062
20063
20064      <!-- end of kind -->
20065      </tbody>
20066      <tr><td colspan="7" class="kind">dynamic</td></tr>
20067
20068      <thead class="entries_header">
20069        <tr>
20070          <th class="th_name">Property Name</th>
20071          <th class="th_type">Type</th>
20072          <th class="th_description">Description</th>
20073          <th class="th_units">Units</th>
20074          <th class="th_range">Range</th>
20075          <th class="th_hal_version">Initial HIDL HAL version</th>
20076          <th class="th_tags">Tags</th>
20077        </tr>
20078      </thead>
20079
20080      <tbody>
20081
20082
20083
20084
20085
20086
20087
20088
20089
20090
20091          <tr class="entry" id="dynamic_android.quirks.partialResult">
20092            <td class="entry_name
20093                entry_name_deprecated
20094             " rowspan="5">
20095              android.<wbr/>quirks.<wbr/>partial<wbr/>Result
20096            </td>
20097            <td class="entry_type">
20098                <span class="entry_type_name entry_type_name_enum">byte</span>
20099
20100              <span class="entry_type_visibility"> [hidden as boolean]</span>
20101
20102
20103
20104              <span class="entry_type_deprecated">[deprecated] </span>
20105
20106
20107                <ul class="entry_type_enum">
20108                  <li>
20109                    <span class="entry_type_enum_name">FINAL (v3.2)</span>
20110                    <span class="entry_type_enum_notes"><p>The last or only metadata result buffer
20111for this capture.<wbr/></p></span>
20112                  </li>
20113                  <li>
20114                    <span class="entry_type_enum_name">PARTIAL (v3.2)</span>
20115                    <span class="entry_type_enum_notes"><p>A partial buffer of result metadata for this
20116capture.<wbr/> More result buffers for this capture will be sent
20117by the camera device,<wbr/> the last of which will be marked
20118FINAL.<wbr/></p></span>
20119                  </li>
20120                </ul>
20121
20122            </td> <!-- entry_type -->
20123
20124            <td class="entry_description">
20125              <p>Whether a result given to the framework is the
20126final one for the capture,<wbr/> or only a partial that contains a
20127subset of the full set of dynamic metadata
20128values.<wbr/></p>
20129            </td>
20130
20131            <td class="entry_units">
20132            </td>
20133
20134            <td class="entry_range">
20135              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
20136              <p>Optional.<wbr/> Default value is FINAL.<wbr/></p>
20137            </td>
20138
20139            <td class="entry_hal_version">
20140              <p>3.<wbr/>2</p>
20141            </td>
20142
20143            <td class="entry_tags">
20144            </td>
20145
20146          </tr>
20147          <tr class="entries_header">
20148            <th class="th_details" colspan="6">Details</th>
20149          </tr>
20150          <tr class="entry_cont">
20151            <td class="entry_details" colspan="6">
20152              <p>The entries in the result metadata buffers for a
20153single capture may not overlap,<wbr/> except for this entry.<wbr/> The
20154FINAL buffers must retain FIFO ordering relative to the
20155requests that generate them,<wbr/> so the FINAL buffer for frame 3 must
20156always be sent to the framework after the FINAL buffer for frame 2,<wbr/> and
20157before the FINAL buffer for frame 4.<wbr/> PARTIAL buffers may be returned
20158in any order relative to other frames,<wbr/> but all PARTIAL buffers for a given
20159capture must arrive before the FINAL buffer for that capture.<wbr/> This entry may
20160only be used by the camera device if quirks.<wbr/>usePartialResult is set to 1.<wbr/></p>
20161            </td>
20162          </tr>
20163
20164          <tr class="entries_header">
20165            <th class="th_details" colspan="6">HAL Implementation Details</th>
20166          </tr>
20167          <tr class="entry_cont">
20168            <td class="entry_details" colspan="6">
20169              <p>Refer to <code>camera3_<wbr/>capture_<wbr/>result::partial_<wbr/>result</code>
20170for information on how to implement partial results.<wbr/></p>
20171            </td>
20172          </tr>
20173
20174          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20175           <!-- end of entry -->
20176
20177
20178
20179      <!-- end of kind -->
20180      </tbody>
20181
20182  <!-- end of section -->
20183  <tr><td colspan="7" id="section_request" class="section">request</td></tr>
20184
20185
20186      <tr><td colspan="7" class="kind">controls</td></tr>
20187
20188      <thead class="entries_header">
20189        <tr>
20190          <th class="th_name">Property Name</th>
20191          <th class="th_type">Type</th>
20192          <th class="th_description">Description</th>
20193          <th class="th_units">Units</th>
20194          <th class="th_range">Range</th>
20195          <th class="th_hal_version">Initial HIDL HAL version</th>
20196          <th class="th_tags">Tags</th>
20197        </tr>
20198      </thead>
20199
20200      <tbody>
20201
20202
20203
20204
20205
20206
20207
20208
20209
20210
20211          <tr class="entry" id="controls_android.request.frameCount">
20212            <td class="entry_name
20213                entry_name_deprecated
20214             " rowspan="1">
20215              android.<wbr/>request.<wbr/>frame<wbr/>Count
20216            </td>
20217            <td class="entry_type">
20218                <span class="entry_type_name">int32</span>
20219
20220              <span class="entry_type_visibility"> [system]</span>
20221
20222
20223
20224              <span class="entry_type_deprecated">[deprecated] </span>
20225
20226
20227
20228            </td> <!-- entry_type -->
20229
20230            <td class="entry_description">
20231              <p>A frame counter set by the framework.<wbr/> Must
20232be maintained unchanged in output frame.<wbr/> This value monotonically
20233increases with every new result (that is,<wbr/> each new result has a unique
20234frameCount value).<wbr/></p>
20235            </td>
20236
20237            <td class="entry_units">
20238              incrementing integer
20239            </td>
20240
20241            <td class="entry_range">
20242              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
20243              <p>Any int.<wbr/></p>
20244            </td>
20245
20246            <td class="entry_hal_version">
20247              <p>3.<wbr/>2</p>
20248            </td>
20249
20250            <td class="entry_tags">
20251            </td>
20252
20253          </tr>
20254
20255
20256          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20257           <!-- end of entry -->
20258
20259
20260          <tr class="entry" id="controls_android.request.id">
20261            <td class="entry_name
20262             " rowspan="1">
20263              android.<wbr/>request.<wbr/>id
20264            </td>
20265            <td class="entry_type">
20266                <span class="entry_type_name">int32</span>
20267
20268              <span class="entry_type_visibility"> [hidden]</span>
20269
20270
20271
20272
20273
20274
20275            </td> <!-- entry_type -->
20276
20277            <td class="entry_description">
20278              <p>An application-specified ID for the current
20279request.<wbr/> Must be maintained unchanged in output
20280frame</p>
20281            </td>
20282
20283            <td class="entry_units">
20284              arbitrary integer assigned by application
20285            </td>
20286
20287            <td class="entry_range">
20288              <p>Any int</p>
20289            </td>
20290
20291            <td class="entry_hal_version">
20292              <p>3.<wbr/>2</p>
20293            </td>
20294
20295            <td class="entry_tags">
20296              <ul class="entry_tags">
20297                  <li><a href="#tag_V1">V1</a></li>
20298              </ul>
20299            </td>
20300
20301          </tr>
20302
20303
20304          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20305           <!-- end of entry -->
20306
20307
20308          <tr class="entry" id="controls_android.request.inputStreams">
20309            <td class="entry_name
20310                entry_name_deprecated
20311             " rowspan="3">
20312              android.<wbr/>request.<wbr/>input<wbr/>Streams
20313            </td>
20314            <td class="entry_type">
20315                <span class="entry_type_name">int32</span>
20316                <span class="entry_type_container">x</span>
20317
20318                <span class="entry_type_array">
20319                  n
20320                </span>
20321              <span class="entry_type_visibility"> [system]</span>
20322
20323
20324
20325              <span class="entry_type_deprecated">[deprecated] </span>
20326
20327
20328
20329            </td> <!-- entry_type -->
20330
20331            <td class="entry_description">
20332              <p>List which camera reprocess stream is used
20333for the source of reprocessing data.<wbr/></p>
20334            </td>
20335
20336            <td class="entry_units">
20337              List of camera reprocess stream IDs
20338            </td>
20339
20340            <td class="entry_range">
20341              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
20342              <p>Typically,<wbr/> only one entry allowed,<wbr/> must be a valid reprocess stream ID.<wbr/></p>
20343            </td>
20344
20345            <td class="entry_hal_version">
20346              <p>3.<wbr/>2</p>
20347            </td>
20348
20349            <td class="entry_tags">
20350              <ul class="entry_tags">
20351                  <li><a href="#tag_HAL2">HAL2</a></li>
20352              </ul>
20353            </td>
20354
20355          </tr>
20356          <tr class="entries_header">
20357            <th class="th_details" colspan="6">Details</th>
20358          </tr>
20359          <tr class="entry_cont">
20360            <td class="entry_details" colspan="6">
20361              <p>Only meaningful when <a href="#controls_android.request.type">android.<wbr/>request.<wbr/>type</a> ==
20362REPROCESS.<wbr/> Ignored otherwise</p>
20363            </td>
20364          </tr>
20365
20366
20367          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20368           <!-- end of entry -->
20369
20370
20371          <tr class="entry" id="controls_android.request.metadataMode">
20372            <td class="entry_name
20373             " rowspan="1">
20374              android.<wbr/>request.<wbr/>metadata<wbr/>Mode
20375            </td>
20376            <td class="entry_type">
20377                <span class="entry_type_name entry_type_name_enum">byte</span>
20378
20379              <span class="entry_type_visibility"> [system]</span>
20380
20381
20382
20383
20384
20385                <ul class="entry_type_enum">
20386                  <li>
20387                    <span class="entry_type_enum_name">NONE (v3.2)</span>
20388                    <span class="entry_type_enum_notes"><p>No metadata should be produced on output,<wbr/> except
20389for application-bound buffer data.<wbr/> If no
20390application-bound streams exist,<wbr/> no frame should be
20391placed in the output frame queue.<wbr/> If such streams
20392exist,<wbr/> a frame should be placed on the output queue
20393with null metadata but with the necessary output buffer
20394information.<wbr/> Timestamp information should still be
20395included with any output stream buffers</p></span>
20396                  </li>
20397                  <li>
20398                    <span class="entry_type_enum_name">FULL (v3.2)</span>
20399                    <span class="entry_type_enum_notes"><p>All metadata should be produced.<wbr/> Statistics will
20400only be produced if they are separately
20401enabled</p></span>
20402                  </li>
20403                </ul>
20404
20405            </td> <!-- entry_type -->
20406
20407            <td class="entry_description">
20408              <p>How much metadata to produce on
20409output</p>
20410            </td>
20411
20412            <td class="entry_units">
20413            </td>
20414
20415            <td class="entry_range">
20416            </td>
20417
20418            <td class="entry_hal_version">
20419              <p>3.<wbr/>2</p>
20420            </td>
20421
20422            <td class="entry_tags">
20423              <ul class="entry_tags">
20424                  <li><a href="#tag_FUTURE">FUTURE</a></li>
20425              </ul>
20426            </td>
20427
20428          </tr>
20429
20430
20431          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20432           <!-- end of entry -->
20433
20434
20435          <tr class="entry" id="controls_android.request.outputStreams">
20436            <td class="entry_name
20437                entry_name_deprecated
20438             " rowspan="3">
20439              android.<wbr/>request.<wbr/>output<wbr/>Streams
20440            </td>
20441            <td class="entry_type">
20442                <span class="entry_type_name">int32</span>
20443                <span class="entry_type_container">x</span>
20444
20445                <span class="entry_type_array">
20446                  n
20447                </span>
20448              <span class="entry_type_visibility"> [system]</span>
20449
20450
20451
20452              <span class="entry_type_deprecated">[deprecated] </span>
20453
20454
20455
20456            </td> <!-- entry_type -->
20457
20458            <td class="entry_description">
20459              <p>Lists which camera output streams image data
20460from this capture must be sent to</p>
20461            </td>
20462
20463            <td class="entry_units">
20464              List of camera stream IDs
20465            </td>
20466
20467            <td class="entry_range">
20468              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
20469              <p>List must only include streams that have been
20470created</p>
20471            </td>
20472
20473            <td class="entry_hal_version">
20474              <p>3.<wbr/>2</p>
20475            </td>
20476
20477            <td class="entry_tags">
20478              <ul class="entry_tags">
20479                  <li><a href="#tag_HAL2">HAL2</a></li>
20480              </ul>
20481            </td>
20482
20483          </tr>
20484          <tr class="entries_header">
20485            <th class="th_details" colspan="6">Details</th>
20486          </tr>
20487          <tr class="entry_cont">
20488            <td class="entry_details" colspan="6">
20489              <p>If no output streams are listed,<wbr/> then the image
20490data should simply be discarded.<wbr/> The image data must
20491still be captured for metadata and statistics production,<wbr/>
20492and the lens and flash must operate as requested.<wbr/></p>
20493            </td>
20494          </tr>
20495
20496
20497          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20498           <!-- end of entry -->
20499
20500
20501          <tr class="entry" id="controls_android.request.type">
20502            <td class="entry_name
20503                entry_name_deprecated
20504             " rowspan="1">
20505              android.<wbr/>request.<wbr/>type
20506            </td>
20507            <td class="entry_type">
20508                <span class="entry_type_name entry_type_name_enum">byte</span>
20509
20510              <span class="entry_type_visibility"> [system]</span>
20511
20512
20513
20514              <span class="entry_type_deprecated">[deprecated] </span>
20515
20516
20517                <ul class="entry_type_enum">
20518                  <li>
20519                    <span class="entry_type_enum_name">CAPTURE (v3.2)</span>
20520                    <span class="entry_type_enum_notes"><p>Capture a new image from the imaging hardware,<wbr/>
20521and process it according to the
20522settings</p></span>
20523                  </li>
20524                  <li>
20525                    <span class="entry_type_enum_name">REPROCESS (v3.2)</span>
20526                    <span class="entry_type_enum_notes"><p>Process previously captured data; the
20527<a href="#controls_android.request.inputStreams">android.<wbr/>request.<wbr/>input<wbr/>Streams</a> parameter determines the
20528source reprocessing stream.<wbr/> TODO: Mark dynamic metadata
20529needed for reprocessing with [RP]</p></span>
20530                  </li>
20531                </ul>
20532
20533            </td> <!-- entry_type -->
20534
20535            <td class="entry_description">
20536              <p>The type of the request; either CAPTURE or
20537REPROCESS.<wbr/> For legacy HAL3,<wbr/> this tag is redundant.<wbr/></p>
20538            </td>
20539
20540            <td class="entry_units">
20541            </td>
20542
20543            <td class="entry_range">
20544              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
20545            </td>
20546
20547            <td class="entry_hal_version">
20548              <p>3.<wbr/>2</p>
20549            </td>
20550
20551            <td class="entry_tags">
20552              <ul class="entry_tags">
20553                  <li><a href="#tag_HAL2">HAL2</a></li>
20554              </ul>
20555            </td>
20556
20557          </tr>
20558
20559
20560          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20561           <!-- end of entry -->
20562
20563
20564
20565      <!-- end of kind -->
20566      </tbody>
20567      <tr><td colspan="7" class="kind">static</td></tr>
20568
20569      <thead class="entries_header">
20570        <tr>
20571          <th class="th_name">Property Name</th>
20572          <th class="th_type">Type</th>
20573          <th class="th_description">Description</th>
20574          <th class="th_units">Units</th>
20575          <th class="th_range">Range</th>
20576          <th class="th_hal_version">Initial HIDL HAL version</th>
20577          <th class="th_tags">Tags</th>
20578        </tr>
20579      </thead>
20580
20581      <tbody>
20582
20583
20584
20585
20586
20587
20588
20589
20590
20591
20592          <tr class="entry" id="static_android.request.maxNumOutputStreams">
20593            <td class="entry_name
20594             " rowspan="3">
20595              android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams
20596            </td>
20597            <td class="entry_type">
20598                <span class="entry_type_name">int32</span>
20599                <span class="entry_type_container">x</span>
20600
20601                <span class="entry_type_array">
20602                  3
20603                </span>
20604              <span class="entry_type_visibility"> [ndk_public]</span>
20605
20606
20607              <span class="entry_type_hwlevel">[legacy] </span>
20608
20609
20610
20611
20612            </td> <!-- entry_type -->
20613
20614            <td class="entry_description">
20615              <p>The maximum numbers of different types of output streams
20616that can be configured and used simultaneously by a camera device.<wbr/></p>
20617            </td>
20618
20619            <td class="entry_units">
20620            </td>
20621
20622            <td class="entry_range">
20623              <p>For processed (and stalling) format streams,<wbr/> &gt;= 1.<wbr/></p>
20624<p>For Raw format (either stalling or non-stalling) streams,<wbr/> &gt;= 0.<wbr/></p>
20625<p>For processed (but not stalling) format streams,<wbr/> &gt;= 3
20626for FULL mode devices (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL</code>);
20627&gt;= 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>
20628            </td>
20629
20630            <td class="entry_hal_version">
20631              <p>3.<wbr/>2</p>
20632            </td>
20633
20634            <td class="entry_tags">
20635              <ul class="entry_tags">
20636                  <li><a href="#tag_BC">BC</a></li>
20637              </ul>
20638            </td>
20639
20640          </tr>
20641          <tr class="entries_header">
20642            <th class="th_details" colspan="6">Details</th>
20643          </tr>
20644          <tr class="entry_cont">
20645            <td class="entry_details" colspan="6">
20646              <p>This is a 3 element tuple that contains the max number of output simultaneous
20647streams for raw sensor,<wbr/> processed (but not stalling),<wbr/> and processed (and stalling)
20648formats respectively.<wbr/> For example,<wbr/> assuming that JPEG is typically a processed and
20649stalling stream,<wbr/> if max raw sensor format output stream number is 1,<wbr/> max YUV streams
20650number 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>
20651<p>This lists the upper bound of the number of output streams supported by
20652the camera device.<wbr/> Using more streams simultaneously may require more hardware and
20653CPU resources that will consume more power.<wbr/> The image format for an output stream can
20654be any supported format provided by <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a>.<wbr/>
20655The formats defined in <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> can be categorized
20656into the 3 stream types as below:</p>
20657<ul>
20658<li>Processed (but stalling): any non-RAW format with a stallDurations &gt; 0.<wbr/>
20659  Typically <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">JPEG format</a>.<wbr/></li>
20660<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
20661  <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW12">RAW12</a>.<wbr/></li>
20662<li>Processed (but not-stalling): any non-RAW format without a stall duration.<wbr/>  Typically
20663  <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">YUV_<wbr/>420_<wbr/>888</a>,<wbr/>
20664  <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#NV21">NV21</a>,<wbr/> <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YV12">YV12</a>,<wbr/> or <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#Y8">Y8</a> .<wbr/></li>
20665</ul>
20666            </td>
20667          </tr>
20668
20669
20670          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20671           <!-- end of entry -->
20672
20673
20674          <tr class="entry" id="static_android.request.maxNumOutputRaw">
20675            <td class="entry_name
20676             " rowspan="3">
20677              android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Raw
20678            </td>
20679            <td class="entry_type">
20680                <span class="entry_type_name">int32</span>
20681
20682              <span class="entry_type_visibility"> [java_public]</span>
20683
20684              <span class="entry_type_synthetic">[synthetic] </span>
20685
20686              <span class="entry_type_hwlevel">[legacy] </span>
20687
20688
20689
20690
20691            </td> <!-- entry_type -->
20692
20693            <td class="entry_description">
20694              <p>The maximum numbers of different types of output streams
20695that can be configured and used simultaneously by a camera device
20696for any <code>RAW</code> formats.<wbr/></p>
20697            </td>
20698
20699            <td class="entry_units">
20700            </td>
20701
20702            <td class="entry_range">
20703              <p>&gt;= 0</p>
20704            </td>
20705
20706            <td class="entry_hal_version">
20707              <p>3.<wbr/>2</p>
20708            </td>
20709
20710            <td class="entry_tags">
20711            </td>
20712
20713          </tr>
20714          <tr class="entries_header">
20715            <th class="th_details" colspan="6">Details</th>
20716          </tr>
20717          <tr class="entry_cont">
20718            <td class="entry_details" colspan="6">
20719              <p>This value contains the max number of output simultaneous
20720streams from the raw sensor.<wbr/></p>
20721<p>This lists the upper bound of the number of output streams supported by
20722the camera device.<wbr/> Using more streams simultaneously may require more hardware and
20723CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can
20724be 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>
20725<p>In particular,<wbr/> a <code>RAW</code> format is typically one of:</p>
20726<ul>
20727<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_SENSOR">RAW_<wbr/>SENSOR</a></li>
20728<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW10">RAW10</a></li>
20729<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW12">RAW12</a></li>
20730</ul>
20731<p>LEGACY mode devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> <code>==</code> LEGACY)
20732never support raw streams.<wbr/></p>
20733            </td>
20734          </tr>
20735
20736
20737          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20738           <!-- end of entry -->
20739
20740
20741          <tr class="entry" id="static_android.request.maxNumOutputProc">
20742            <td class="entry_name
20743             " rowspan="3">
20744              android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Proc
20745            </td>
20746            <td class="entry_type">
20747                <span class="entry_type_name">int32</span>
20748
20749              <span class="entry_type_visibility"> [java_public]</span>
20750
20751              <span class="entry_type_synthetic">[synthetic] </span>
20752
20753              <span class="entry_type_hwlevel">[legacy] </span>
20754
20755
20756
20757
20758            </td> <!-- entry_type -->
20759
20760            <td class="entry_description">
20761              <p>The maximum numbers of different types of output streams
20762that can be configured and used simultaneously by a camera device
20763for any processed (but not-stalling) formats.<wbr/></p>
20764            </td>
20765
20766            <td class="entry_units">
20767            </td>
20768
20769            <td class="entry_range">
20770              <p>&gt;= 3
20771for FULL mode devices (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL</code>);
20772&gt;= 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>
20773            </td>
20774
20775            <td class="entry_hal_version">
20776              <p>3.<wbr/>2</p>
20777            </td>
20778
20779            <td class="entry_tags">
20780            </td>
20781
20782          </tr>
20783          <tr class="entries_header">
20784            <th class="th_details" colspan="6">Details</th>
20785          </tr>
20786          <tr class="entry_cont">
20787            <td class="entry_details" colspan="6">
20788              <p>This value contains the max number of output simultaneous
20789streams for any processed (but not-stalling) formats.<wbr/></p>
20790<p>This lists the upper bound of the number of output streams supported by
20791the camera device.<wbr/> Using more streams simultaneously may require more hardware and
20792CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can
20793be 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>
20794<p>Processed (but not-stalling) is defined as any non-RAW format without a stall duration.<wbr/>
20795Typically:</p>
20796<ul>
20797<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">YUV_<wbr/>420_<wbr/>888</a></li>
20798<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#NV21">NV21</a></li>
20799<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YV12">YV12</a></li>
20800<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>
20801<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#Y8">Y8</a></li>
20802</ul>
20803<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
20804processed format -- it will return 0 for a non-stalling stream.<wbr/></p>
20805<p>LEGACY devices will support at least 2 processing/<wbr/>non-stalling streams.<wbr/></p>
20806            </td>
20807          </tr>
20808
20809
20810          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20811           <!-- end of entry -->
20812
20813
20814          <tr class="entry" id="static_android.request.maxNumOutputProcStalling">
20815            <td class="entry_name
20816             " rowspan="3">
20817              android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Proc<wbr/>Stalling
20818            </td>
20819            <td class="entry_type">
20820                <span class="entry_type_name">int32</span>
20821
20822              <span class="entry_type_visibility"> [java_public]</span>
20823
20824              <span class="entry_type_synthetic">[synthetic] </span>
20825
20826              <span class="entry_type_hwlevel">[legacy] </span>
20827
20828
20829
20830
20831            </td> <!-- entry_type -->
20832
20833            <td class="entry_description">
20834              <p>The maximum numbers of different types of output streams
20835that can be configured and used simultaneously by a camera device
20836for any processed (and stalling) formats.<wbr/></p>
20837            </td>
20838
20839            <td class="entry_units">
20840            </td>
20841
20842            <td class="entry_range">
20843              <p>&gt;= 1</p>
20844            </td>
20845
20846            <td class="entry_hal_version">
20847              <p>3.<wbr/>2</p>
20848            </td>
20849
20850            <td class="entry_tags">
20851            </td>
20852
20853          </tr>
20854          <tr class="entries_header">
20855            <th class="th_details" colspan="6">Details</th>
20856          </tr>
20857          <tr class="entry_cont">
20858            <td class="entry_details" colspan="6">
20859              <p>This value contains the max number of output simultaneous
20860streams for any processed (but not-stalling) formats.<wbr/></p>
20861<p>This lists the upper bound of the number of output streams supported by
20862the camera device.<wbr/> Using more streams simultaneously may require more hardware and
20863CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can
20864be 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>
20865<p>A processed and stalling format is defined as any non-RAW format with a stallDurations
20866&gt; 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>
20867<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
20868processed format -- it will return a non-0 value for a stalling stream.<wbr/></p>
20869<p>LEGACY devices will support up to 1 processing/<wbr/>stalling stream.<wbr/></p>
20870            </td>
20871          </tr>
20872
20873
20874          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20875           <!-- end of entry -->
20876
20877
20878          <tr class="entry" id="static_android.request.maxNumReprocessStreams">
20879            <td class="entry_name
20880                entry_name_deprecated
20881             " rowspan="3">
20882              android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Reprocess<wbr/>Streams
20883            </td>
20884            <td class="entry_type">
20885                <span class="entry_type_name">int32</span>
20886                <span class="entry_type_container">x</span>
20887
20888                <span class="entry_type_array">
20889                  1
20890                </span>
20891              <span class="entry_type_visibility"> [system]</span>
20892
20893
20894
20895              <span class="entry_type_deprecated">[deprecated] </span>
20896
20897
20898
20899            </td> <!-- entry_type -->
20900
20901            <td class="entry_description">
20902              <p>How many reprocessing streams of any type
20903can be allocated at the same time.<wbr/></p>
20904            </td>
20905
20906            <td class="entry_units">
20907            </td>
20908
20909            <td class="entry_range">
20910              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
20911              <p>&gt;= 0</p>
20912            </td>
20913
20914            <td class="entry_hal_version">
20915              <p>3.<wbr/>2</p>
20916            </td>
20917
20918            <td class="entry_tags">
20919              <ul class="entry_tags">
20920                  <li><a href="#tag_HAL2">HAL2</a></li>
20921              </ul>
20922            </td>
20923
20924          </tr>
20925          <tr class="entries_header">
20926            <th class="th_details" colspan="6">Details</th>
20927          </tr>
20928          <tr class="entry_cont">
20929            <td class="entry_details" colspan="6">
20930              <p>Only used by HAL2.<wbr/>x.<wbr/></p>
20931<p>When set to 0,<wbr/> it means no reprocess stream is supported.<wbr/></p>
20932            </td>
20933          </tr>
20934
20935
20936          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20937           <!-- end of entry -->
20938
20939
20940          <tr class="entry" id="static_android.request.maxNumInputStreams">
20941            <td class="entry_name
20942             " rowspan="5">
20943              android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Input<wbr/>Streams
20944            </td>
20945            <td class="entry_type">
20946                <span class="entry_type_name">int32</span>
20947
20948              <span class="entry_type_visibility"> [java_public]</span>
20949
20950
20951              <span class="entry_type_hwlevel">[full] </span>
20952
20953
20954
20955
20956            </td> <!-- entry_type -->
20957
20958            <td class="entry_description">
20959              <p>The maximum numbers of any type of input streams
20960that can be configured and used simultaneously by a camera device.<wbr/></p>
20961            </td>
20962
20963            <td class="entry_units">
20964            </td>
20965
20966            <td class="entry_range">
20967              <p>0 or 1.<wbr/></p>
20968            </td>
20969
20970            <td class="entry_hal_version">
20971              <p>3.<wbr/>2</p>
20972            </td>
20973
20974            <td class="entry_tags">
20975              <ul class="entry_tags">
20976                  <li><a href="#tag_REPROC">REPROC</a></li>
20977              </ul>
20978            </td>
20979
20980          </tr>
20981          <tr class="entries_header">
20982            <th class="th_details" colspan="6">Details</th>
20983          </tr>
20984          <tr class="entry_cont">
20985            <td class="entry_details" colspan="6">
20986              <p>When set to 0,<wbr/> it means no input stream is supported.<wbr/></p>
20987<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
20988input stream,<wbr/> there must be at least one output stream configured to to receive the
20989reprocessed images.<wbr/></p>
20990<p>When an input stream and some output streams are used in a reprocessing request,<wbr/>
20991only the input buffer will be used to produce these output stream buffers,<wbr/> and a
20992new sensor image will not be captured.<wbr/></p>
20993<p>For example,<wbr/> for Zero Shutter Lag (ZSL) still capture use case,<wbr/> the input
20994stream image format will be PRIVATE,<wbr/> the associated output stream image format
20995should be JPEG.<wbr/></p>
20996            </td>
20997          </tr>
20998
20999          <tr class="entries_header">
21000            <th class="th_details" colspan="6">HAL Implementation Details</th>
21001          </tr>
21002          <tr class="entry_cont">
21003            <td class="entry_details" colspan="6">
21004              <p>For the reprocessing flow and controls,<wbr/> see
21005hardware/<wbr/>libhardware/<wbr/>include/<wbr/>hardware/<wbr/>camera3.<wbr/>h Section 10 for more details.<wbr/></p>
21006            </td>
21007          </tr>
21008
21009          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21010           <!-- end of entry -->
21011
21012
21013          <tr class="entry" id="static_android.request.pipelineMaxDepth">
21014            <td class="entry_name
21015             " rowspan="5">
21016              android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth
21017            </td>
21018            <td class="entry_type">
21019                <span class="entry_type_name">byte</span>
21020
21021              <span class="entry_type_visibility"> [public]</span>
21022
21023
21024              <span class="entry_type_hwlevel">[legacy] </span>
21025
21026
21027
21028
21029            </td> <!-- entry_type -->
21030
21031            <td class="entry_description">
21032              <p>Specifies the number of maximum pipeline stages a frame
21033has to go through from when it's exposed to when it's available
21034to the framework.<wbr/></p>
21035            </td>
21036
21037            <td class="entry_units">
21038            </td>
21039
21040            <td class="entry_range">
21041            </td>
21042
21043            <td class="entry_hal_version">
21044              <p>3.<wbr/>2</p>
21045            </td>
21046
21047            <td class="entry_tags">
21048            </td>
21049
21050          </tr>
21051          <tr class="entries_header">
21052            <th class="th_details" colspan="6">Details</th>
21053          </tr>
21054          <tr class="entry_cont">
21055            <td class="entry_details" colspan="6">
21056              <p>A typical minimum value for this is 2 (one stage to expose,<wbr/>
21057one stage to readout) from the sensor.<wbr/> The ISP then usually adds
21058its own stages to do custom HW processing.<wbr/> Further stages may be
21059added by SW processing.<wbr/></p>
21060<p>Depending on what settings are used (e.<wbr/>g.<wbr/> YUV,<wbr/> JPEG) and what
21061processing is enabled (e.<wbr/>g.<wbr/> face detection),<wbr/> the actual pipeline
21062depth (specified by <a href="#dynamic_android.request.pipelineDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Depth</a>) may be less than
21063the max pipeline depth.<wbr/></p>
21064<p>A pipeline depth of X stages is equivalent to a pipeline latency of
21065X frame intervals.<wbr/></p>
21066<p>This value will normally be 8 or less,<wbr/> however,<wbr/> for high speed capture session,<wbr/>
21067the max pipeline depth will be up to 8 x size of high speed capture request list.<wbr/></p>
21068            </td>
21069          </tr>
21070
21071          <tr class="entries_header">
21072            <th class="th_details" colspan="6">HAL Implementation Details</th>
21073          </tr>
21074          <tr class="entry_cont">
21075            <td class="entry_details" colspan="6">
21076              <p>This value should be 4 or less,<wbr/> expect for the high speed recording session,<wbr/> where the
21077max batch sizes may be larger than 1.<wbr/></p>
21078            </td>
21079          </tr>
21080
21081          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21082           <!-- end of entry -->
21083
21084
21085          <tr class="entry" id="static_android.request.partialResultCount">
21086            <td class="entry_name
21087             " rowspan="3">
21088              android.<wbr/>request.<wbr/>partial<wbr/>Result<wbr/>Count
21089            </td>
21090            <td class="entry_type">
21091                <span class="entry_type_name">int32</span>
21092
21093              <span class="entry_type_visibility"> [public]</span>
21094
21095
21096
21097
21098
21099
21100            </td> <!-- entry_type -->
21101
21102            <td class="entry_description">
21103              <p>Defines how many sub-components
21104a result will be composed of.<wbr/></p>
21105            </td>
21106
21107            <td class="entry_units">
21108            </td>
21109
21110            <td class="entry_range">
21111              <p>&gt;= 1</p>
21112            </td>
21113
21114            <td class="entry_hal_version">
21115              <p>3.<wbr/>2</p>
21116            </td>
21117
21118            <td class="entry_tags">
21119            </td>
21120
21121          </tr>
21122          <tr class="entries_header">
21123            <th class="th_details" colspan="6">Details</th>
21124          </tr>
21125          <tr class="entry_cont">
21126            <td class="entry_details" colspan="6">
21127              <p>In order to combat the pipeline latency,<wbr/> partial results
21128may be delivered to the application layer from the camera device as
21129soon as they are available.<wbr/></p>
21130<p>Optional; defaults to 1.<wbr/> A value of 1 means that partial
21131results are not supported,<wbr/> and only the final TotalCaptureResult will
21132be produced by the camera device.<wbr/></p>
21133<p>A typical use case for this might be: after requesting an
21134auto-focus (AF) lock the new AF state might be available 50%
21135of the way through the pipeline.<wbr/>  The camera device could
21136then immediately dispatch this state via a partial result to
21137the application,<wbr/> and the rest of the metadata via later
21138partial results.<wbr/></p>
21139            </td>
21140          </tr>
21141
21142
21143          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21144           <!-- end of entry -->
21145
21146
21147          <tr class="entry" id="static_android.request.availableCapabilities">
21148            <td class="entry_name
21149             " rowspan="5">
21150              android.<wbr/>request.<wbr/>available<wbr/>Capabilities
21151            </td>
21152            <td class="entry_type">
21153                <span class="entry_type_name entry_type_name_enum">byte</span>
21154                <span class="entry_type_container">x</span>
21155
21156                <span class="entry_type_array">
21157                  n
21158                </span>
21159              <span class="entry_type_visibility"> [public]</span>
21160
21161
21162              <span class="entry_type_hwlevel">[legacy] </span>
21163
21164
21165
21166                <ul class="entry_type_enum">
21167                  <li>
21168                    <span class="entry_type_enum_name">BACKWARD_COMPATIBLE (v3.2)</span>
21169                    <span class="entry_type_enum_notes"><p>The minimal set of capabilities that every camera
21170device (regardless of <a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>)
21171supports.<wbr/></p>
21172<p>This capability is listed by all normal devices,<wbr/> and
21173indicates that the camera device has a feature set
21174that's comparable to the baseline requirements for the
21175older android.<wbr/>hardware.<wbr/>Camera API.<wbr/></p>
21176<p>Devices with the DEPTH_<wbr/>OUTPUT capability might not list this
21177capability,<wbr/> indicating that they support only depth measurement,<wbr/>
21178not standard color output.<wbr/></p></span>
21179                  </li>
21180                  <li>
21181                    <span class="entry_type_enum_name">MANUAL_SENSOR (v3.2)</span>
21182                    <span class="entry_type_enum_optional">[optional]</span>
21183                    <span class="entry_type_enum_notes"><p>The camera device can be manually controlled (3A algorithms such
21184as auto-exposure,<wbr/> and auto-focus can be bypassed).<wbr/>
21185The camera device supports basic manual control of the sensor image
21186acquisition related stages.<wbr/> This means the following controls are
21187guaranteed to be supported:</p>
21188<ul>
21189<li>Manual frame duration control<ul>
21190<li><a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a></li>
21191<li><a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a></li>
21192</ul>
21193</li>
21194<li>Manual exposure control<ul>
21195<li><a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a></li>
21196<li><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></li>
21197</ul>
21198</li>
21199<li>Manual sensitivity control<ul>
21200<li><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></li>
21201<li><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></li>
21202</ul>
21203</li>
21204<li>Manual lens control (if the lens is adjustable)<ul>
21205<li>android.<wbr/>lens.<wbr/>*</li>
21206</ul>
21207</li>
21208<li>Manual flash control (if a flash unit is present)<ul>
21209<li>android.<wbr/>flash.<wbr/>*</li>
21210</ul>
21211</li>
21212<li>Manual black level locking<ul>
21213<li><a href="#controls_android.blackLevel.lock">android.<wbr/>black<wbr/>Level.<wbr/>lock</a></li>
21214</ul>
21215</li>
21216<li>Auto exposure lock<ul>
21217<li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li>
21218</ul>
21219</li>
21220</ul>
21221<p>If any of the above 3A algorithms are enabled,<wbr/> then the camera
21222device will accurately report the values applied by 3A in the
21223result.<wbr/></p>
21224<p>A given camera device may also support additional manual sensor controls,<wbr/>
21225but this capability only covers the above list of controls.<wbr/></p>
21226<p>If this is supported,<wbr/> <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> will
21227additionally return a min frame duration that is greater than
21228zero for each supported size-format combination.<wbr/></p>
21229<p>For camera devices with LOGICAL_<wbr/>MULTI_<wbr/>CAMERA capability,<wbr/> when the underlying active
21230physical camera switches,<wbr/> exposureTime,<wbr/> sensitivity,<wbr/> and lens properties may change
21231even if AE/<wbr/>AF is locked.<wbr/> However,<wbr/> the overall auto exposure and auto focus experience
21232for users will be consistent.<wbr/> Refer to LOGICAL_<wbr/>MULTI_<wbr/>CAMERA capability for details.<wbr/></p></span>
21233                  </li>
21234                  <li>
21235                    <span class="entry_type_enum_name">MANUAL_POST_PROCESSING (v3.2)</span>
21236                    <span class="entry_type_enum_optional">[optional]</span>
21237                    <span class="entry_type_enum_notes"><p>The camera device post-processing stages can be manually controlled.<wbr/>
21238The camera device supports basic manual control of the image post-processing
21239stages.<wbr/> This means the following controls are guaranteed to be supported:</p>
21240<ul>
21241<li>
21242<p>Manual tonemap control</p>
21243<ul>
21244<li><a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a></li>
21245<li><a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a></li>
21246<li><a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></li>
21247<li><a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a></li>
21248<li><a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a></li>
21249</ul>
21250</li>
21251<li>
21252<p>Manual white balance control</p>
21253<ul>
21254<li><a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a></li>
21255<li><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a></li>
21256</ul>
21257</li>
21258<li>Manual lens shading map control<ul>
21259<li><a href="#controls_android.shading.mode">android.<wbr/>shading.<wbr/>mode</a></li>
21260<li><a href="#controls_android.statistics.lensShadingMapMode">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode</a></li>
21261<li><a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a></li>
21262<li><a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a></li>
21263</ul>
21264</li>
21265<li>Manual aberration correction control (if aberration correction is supported)<ul>
21266<li><a href="#controls_android.colorCorrection.aberrationMode">android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode</a></li>
21267<li><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></li>
21268</ul>
21269</li>
21270<li>Auto white balance lock<ul>
21271<li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li>
21272</ul>
21273</li>
21274</ul>
21275<p>If auto white balance is enabled,<wbr/> then the camera device
21276will accurately report the values applied by AWB in the result.<wbr/></p>
21277<p>A given camera device may also support additional post-processing
21278controls,<wbr/> but this capability only covers the above list of controls.<wbr/></p>
21279<p>For camera devices with LOGICAL_<wbr/>MULTI_<wbr/>CAMERA capability,<wbr/> when underlying active
21280physical camera switches,<wbr/> tonemap,<wbr/> white balance,<wbr/> and shading map may change even if
21281awb is locked.<wbr/> However,<wbr/> the overall post-processing experience for users will be
21282consistent.<wbr/> Refer to LOGICAL_<wbr/>MULTI_<wbr/>CAMERA capability for details.<wbr/></p></span>
21283                  </li>
21284                  <li>
21285                    <span class="entry_type_enum_name">RAW (v3.2)</span>
21286                    <span class="entry_type_enum_optional">[optional]</span>
21287                    <span class="entry_type_enum_notes"><p>The camera device supports outputting RAW buffers and
21288metadata for interpreting them.<wbr/></p>
21289<p>Devices supporting the RAW capability allow both for
21290saving DNG files,<wbr/> and for direct application processing of
21291raw sensor images.<wbr/></p>
21292<ul>
21293<li>RAW_<wbr/>SENSOR is supported as an output format.<wbr/></li>
21294<li>The maximum available resolution for RAW_<wbr/>SENSOR streams
21295  will match either the value in
21296  <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a> or
21297  <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>
21298<li>All DNG-related optional metadata entries are provided
21299  by the camera device.<wbr/></li>
21300</ul></span>
21301                  </li>
21302                  <li>
21303                    <span class="entry_type_enum_name">PRIVATE_REPROCESSING (v3.2)</span>
21304                    <span class="entry_type_enum_optional">[optional]</span>
21305                    <span class="entry_type_enum_hidden">[java_public]</span>
21306                    <span class="entry_type_enum_notes"><p>The camera device supports the Zero Shutter Lag reprocessing use case.<wbr/></p>
21307<ul>
21308<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>
21309<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/>
21310  that is,<wbr/> <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> is included in the lists of
21311  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>
21312<li><a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getValidOutputFormatsForInput">StreamConfigurationMap#getValidOutputFormatsForInput</a>
21313  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>
21314<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>
21315<li>Using <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> does not cause a frame rate drop
21316  relative to the sensor's maximum capture rate (at that resolution).<wbr/></li>
21317<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> will be reprocessable into both
21318  <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a> and
21319  <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a> formats.<wbr/></li>
21320<li>For a MONOCHROME camera supporting Y8 format,<wbr/> <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> will be reprocessable into
21321  <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#Y8">ImageFormat#Y8</a>.<wbr/></li>
21322<li>The maximum available resolution for PRIVATE streams
21323  (both input/<wbr/>output) will match the maximum available
21324  resolution of JPEG streams.<wbr/></li>
21325<li>Static metadata <a href="#static_android.reprocess.maxCaptureStall">android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall</a>.<wbr/></li>
21326<li>Only below controls are effective for reprocessing requests and
21327  will be present in capture results,<wbr/> other controls in reprocess
21328  requests will be ignored by the camera device.<wbr/><ul>
21329<li>android.<wbr/>jpeg.<wbr/>*</li>
21330<li><a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></li>
21331<li><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></li>
21332</ul>
21333</li>
21334<li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a> and
21335  <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>
21336</ul></span>
21337                  </li>
21338                  <li>
21339                    <span class="entry_type_enum_name">READ_SENSOR_SETTINGS (v3.2)</span>
21340                    <span class="entry_type_enum_optional">[optional]</span>
21341                    <span class="entry_type_enum_notes"><p>The camera device supports accurately reporting the sensor settings for many of
21342the sensor controls while the built-in 3A algorithm is running.<wbr/>  This allows
21343reporting of sensor settings even when these settings cannot be manually changed.<wbr/></p>
21344<p>The values reported for the following controls are guaranteed to be available
21345in the CaptureResult,<wbr/> including when 3A is enabled:</p>
21346<ul>
21347<li>Exposure control<ul>
21348<li><a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a></li>
21349</ul>
21350</li>
21351<li>Sensitivity control<ul>
21352<li><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></li>
21353</ul>
21354</li>
21355<li>Lens controls (if the lens is adjustable)<ul>
21356<li><a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a></li>
21357<li><a href="#controls_android.lens.aperture">android.<wbr/>lens.<wbr/>aperture</a></li>
21358</ul>
21359</li>
21360</ul>
21361<p>This capability is a subset of the MANUAL_<wbr/>SENSOR control capability,<wbr/> and will
21362always be included if the MANUAL_<wbr/>SENSOR capability is available.<wbr/></p></span>
21363                  </li>
21364                  <li>
21365                    <span class="entry_type_enum_name">BURST_CAPTURE (v3.2)</span>
21366                    <span class="entry_type_enum_optional">[optional]</span>
21367                    <span class="entry_type_enum_notes"><p>The camera device supports capturing high-resolution images at &gt;= 20 frames per
21368second,<wbr/> in at least the uncompressed YUV format,<wbr/> when post-processing settings are
21369set to FAST.<wbr/> Additionally,<wbr/> all image resolutions less than 24 megapixels can be
21370captured at &gt;= 10 frames per second.<wbr/> Here,<wbr/> 'high resolution' means at least 8
21371megapixels,<wbr/> or the maximum resolution of the device,<wbr/> whichever is smaller.<wbr/></p></span>
21372                  </li>
21373                  <li>
21374                    <span class="entry_type_enum_name">YUV_REPROCESSING (v3.2)</span>
21375                    <span class="entry_type_enum_optional">[optional]</span>
21376                    <span class="entry_type_enum_hidden">[java_public]</span>
21377                    <span class="entry_type_enum_notes"><p>The camera device supports the YUV_<wbr/>420_<wbr/>888 reprocessing use case,<wbr/> similar as
21378PRIVATE_<wbr/>REPROCESSING,<wbr/> This capability requires the camera device to support the
21379following:</p>
21380<ul>
21381<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>
21382<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
21383  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>
21384<li><a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getValidOutputFormatsForInput">StreamConfigurationMap#getValidOutputFormatsForInput</a>
21385  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>
21386<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>
21387<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
21388  drop relative to the sensor's maximum capture rate (at that resolution).<wbr/></li>
21389<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
21390  <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>
21391<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
21392  maximum available resolution of <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a> streams.<wbr/></li>
21393<li>For a MONOCHROME camera with Y8 format support,<wbr/> all the requirements mentioned
21394  above for YUV_<wbr/>420_<wbr/>888 apply for Y8 format as well.<wbr/></li>
21395<li>Static metadata <a href="#static_android.reprocess.maxCaptureStall">android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall</a>.<wbr/></li>
21396<li>Only the below controls are effective for reprocessing requests and will be present
21397  in capture results.<wbr/> The reprocess requests are from the original capture results
21398  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
21399  reprocess requests will be ignored by the camera device.<wbr/><ul>
21400<li>android.<wbr/>jpeg.<wbr/>*</li>
21401<li><a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></li>
21402<li><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></li>
21403<li><a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a></li>
21404</ul>
21405</li>
21406<li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a> and
21407  <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>
21408</ul></span>
21409                  </li>
21410                  <li>
21411                    <span class="entry_type_enum_name">DEPTH_OUTPUT (v3.2)</span>
21412                    <span class="entry_type_enum_optional">[optional]</span>
21413                    <span class="entry_type_enum_notes"><p>The camera device can produce depth measurements from its field of view.<wbr/></p>
21414<p>This capability requires the camera device to support the following:</p>
21415<ul>
21416<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#DEPTH16">ImageFormat#DEPTH16</a> is supported as
21417  an output format.<wbr/></li>
21418<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
21419  optionally supported as an output format.<wbr/></li>
21420<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
21421  list the following calibration metadata entries in both <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html">CameraCharacteristics</a>
21422  and <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">CaptureResult</a>:<ul>
21423<li><a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a></li>
21424<li><a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a></li>
21425<li><a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a></li>
21426<li><a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a></li>
21427</ul>
21428</li>
21429<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>
21430<li>As of Android P,<wbr/> the <a href="#static_android.lens.poseReference">android.<wbr/>lens.<wbr/>pose<wbr/>Reference</a> entry is listed by this device.<wbr/></li>
21431<li>A LIMITED camera with only the DEPTH_<wbr/>OUTPUT capability does not have to support
21432  normal YUV_<wbr/>420_<wbr/>888,<wbr/> Y8,<wbr/> JPEG,<wbr/> and PRIV-format outputs.<wbr/> It only has to support the
21433  DEPTH16 format.<wbr/></li>
21434</ul>
21435<p>Generally,<wbr/> depth output operates at a slower frame rate than standard color capture,<wbr/>
21436so the DEPTH16 and DEPTH_<wbr/>POINT_<wbr/>CLOUD formats will commonly have a stall duration that
21437should be accounted for (see <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a>).<wbr/>
21438On a device that supports both depth and color-based output,<wbr/> to enable smooth preview,<wbr/>
21439using a repeating burst is recommended,<wbr/> where a depth-output target is only included
21440once every N frames,<wbr/> where N is the ratio between preview output rate and depth output
21441rate,<wbr/> including depth stall time.<wbr/></p></span>
21442                  </li>
21443                  <li>
21444                    <span class="entry_type_enum_name">CONSTRAINED_HIGH_SPEED_VIDEO (v3.2)</span>
21445                    <span class="entry_type_enum_optional">[optional]</span>
21446                    <span class="entry_type_enum_hidden">[java_public]</span>
21447                    <span class="entry_type_enum_notes"><p>The device supports constrained high speed video recording (frame rate &gt;=120fps) use
21448case.<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
21449only 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>
21450<p>A camera device can still support high speed video streaming by advertising the high
21451speed 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
21452normal capture request per frame control and synchronization requirements will apply
21453to the high speed fps ranges,<wbr/> the same as all other fps ranges.<wbr/> This capability
21454describes the capability of a specialized operating mode with many limitations (see
21455below),<wbr/> which is only targeted at high speed video recording.<wbr/></p>
21456<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/>
21457To get desired output frame rates,<wbr/> the application is only allowed to select video
21458size 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
21459fps 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>
21460<p>In this capability,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to
21461ON,<wbr/> AUTO,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode
21462controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture
21463and post-processing parameters is possible.<wbr/> All other controls operate the
21464same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other
21465android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p>
21466<ul>
21467<li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li>
21468<li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li>
21469<li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li>
21470<li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li>
21471<li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li>
21472<li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li>
21473<li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li>
21474<li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li>
21475<li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li>
21476<li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li>
21477<li><a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a></li>
21478</ul>
21479<p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p>
21480<ul>
21481<li><a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> (TORCH mode only,<wbr/> automatic flash for still capture will not
21482work since aeMode is ON)</li>
21483<li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li>
21484<li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li>
21485<li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> (if it is supported)</li>
21486</ul>
21487<p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may
21488be lower than what camera can output,<wbr/> depending on the destination Surfaces for
21489the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/>
21490the application need check if the video encoder is capable of supporting the
21491high frame rate for a given video size,<wbr/> or it will end up with lower recording
21492frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the actual preview frame
21493rate will be bounded by the screen refresh rate.<wbr/></p>
21494<p>The camera device will only support up to 2 high speed simultaneous output surfaces
21495(preview and recording surfaces) in this mode.<wbr/> Above controls will be effective only
21496if all of below conditions are true:</p>
21497<ul>
21498<li>The application creates a camera capture session with no more than 2 surfaces via
21499<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>.<wbr/> The
21500targeted 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
21501surface(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>
21502<li>The stream sizes are selected from the sizes reported by
21503<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighSpeedVideoSizes">StreamConfigurationMap#getHighSpeedVideoSizes</a>.<wbr/></li>
21504<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>
21505</ul>
21506<p>When above conditions are NOT satisfied,<wbr/>
21507<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>
21508will fail.<wbr/></p>
21509<p>Switching to a FPS range that has different maximum FPS may trigger some camera device
21510reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that
21511the application avoids unnecessary maximum target FPS changes as much as possible
21512during high speed streaming.<wbr/></p></span>
21513                  </li>
21514                  <li>
21515                    <span class="entry_type_enum_name">MOTION_TRACKING (v3.3)</span>
21516                    <span class="entry_type_enum_optional">[optional]</span>
21517                    <span class="entry_type_enum_notes"><p>The camera device supports the MOTION_<wbr/>TRACKING value for
21518<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a>,<wbr/> which limits maximum exposure time to 20 ms.<wbr/></p>
21519<p>This limits the motion blur of capture images,<wbr/> resulting in better image tracking
21520results for use cases such as image stabilization or augmented reality.<wbr/></p></span>
21521                  </li>
21522                  <li>
21523                    <span class="entry_type_enum_name">LOGICAL_MULTI_CAMERA (v3.3)</span>
21524                    <span class="entry_type_enum_optional">[optional]</span>
21525                    <span class="entry_type_enum_notes"><p>The camera device is a logical camera backed by two or more physical cameras.<wbr/></p>
21526<p>In API level 28,<wbr/> the physical cameras must also be exposed to the application via
21527<a href="https://developer.android.com/reference/android/hardware/camera2/CameraManager.html#getCameraIdList">CameraManager#getCameraIdList</a>.<wbr/></p>
21528<p>Starting from API level 29:</p>
21529<ul>
21530<li>Some or all physical cameras may not be independently exposed to the application,<wbr/>
21531in which case the physical camera IDs will not be available in
21532<a href="https://developer.android.com/reference/android/hardware/camera2/CameraManager.html#getCameraIdList">CameraManager#getCameraIdList</a>.<wbr/> But the
21533application can still query the physical cameras' characteristics by calling
21534<a href="https://developer.android.com/reference/android/hardware/camera2/CameraManager.html#getCameraCharacteristics">CameraManager#getCameraCharacteristics</a>.<wbr/></li>
21535<li>If a physical camera is hidden from camera ID list,<wbr/> the mandatory stream
21536combinations for that physical camera must be supported through the logical camera
21537using physical streams.<wbr/> One exception is that in API level 30,<wbr/> a physical camera
21538may become unavailable via
21539<a href="https://developer.android.com/reference/CameraManager/AvailabilityCallback.html#onPhysicalCameraUnavailable">AvailabilityCallback#onPhysicalCameraUnavailable</a>
21540callback.<wbr/></li>
21541</ul>
21542<p>Combinations of logical and physical streams,<wbr/> or physical streams from different
21543physical cameras are not guaranteed.<wbr/> However,<wbr/> if the camera device supports
21544<a href="https://developer.android.com/reference/CameraDevice.html#isSessionConfigurationSupported">CameraDevice#isSessionConfigurationSupported</a>,<wbr/>
21545application must be able to query whether a stream combination involving physical
21546streams is supported by calling
21547<a href="https://developer.android.com/reference/CameraDevice.html#isSessionConfigurationSupported">CameraDevice#isSessionConfigurationSupported</a>.<wbr/></p>
21548<p>Camera application shouldn't assume that there are at most 1 rear camera and 1 front
21549camera in the system.<wbr/> For an application that switches between front and back cameras,<wbr/>
21550the recommendation is to switch between the first rear camera and the first front
21551camera in the list of supported camera devices.<wbr/></p>
21552<p>This capability requires the camera device to support the following:</p>
21553<ul>
21554<li>The IDs of underlying physical cameras are returned via
21555  <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getPhysicalCameraIds">CameraCharacteristics#getPhysicalCameraIds</a>.<wbr/></li>
21556<li>This camera device must list static metadata
21557  <a href="#static_android.logicalMultiCamera.sensorSyncType">android.<wbr/>logical<wbr/>Multi<wbr/>Camera.<wbr/>sensor<wbr/>Sync<wbr/>Type</a> in
21558  <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html">CameraCharacteristics</a>.<wbr/></li>
21559<li>The underlying physical cameras' static metadata must list the following entries,<wbr/>
21560  so that the application can correlate pixels from the physical streams:<ul>
21561<li><a href="#static_android.lens.poseReference">android.<wbr/>lens.<wbr/>pose<wbr/>Reference</a></li>
21562<li><a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a></li>
21563<li><a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a></li>
21564<li><a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a></li>
21565<li><a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a></li>
21566</ul>
21567</li>
21568<li>The SENSOR_<wbr/>INFO_<wbr/>TIMESTAMP_<wbr/>SOURCE of the logical device and physical devices must be
21569  the same.<wbr/></li>
21570<li>The logical camera must be LIMITED or higher device.<wbr/></li>
21571</ul>
21572<p>A logical camera device's dynamic metadata may contain
21573<a href="#dynamic_android.logicalMultiCamera.activePhysicalId">android.<wbr/>logical<wbr/>Multi<wbr/>Camera.<wbr/>active<wbr/>Physical<wbr/>Id</a> to notify the application of the current
21574active physical camera Id.<wbr/> An active physical camera is the physical camera from which
21575the logical camera's main image data outputs (YUV or RAW) and metadata come from.<wbr/>
21576In addition,<wbr/> this serves as an indication which physical camera is used to output to
21577a RAW stream,<wbr/> or in case only physical cameras support RAW,<wbr/> which physical RAW stream
21578the application should request.<wbr/></p>
21579<p>Logical camera's static metadata tags below describe the default active physical
21580camera.<wbr/> An active physical camera is default if it's used when application directly
21581uses requests built from a template.<wbr/> All templates will default to the same active
21582physical camera.<wbr/></p>
21583<ul>
21584<li><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></li>
21585<li><a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a></li>
21586<li><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></li>
21587<li><a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a></li>
21588<li><a href="#static_android.sensor.info.physicalSize">android.<wbr/>sensor.<wbr/>info.<wbr/>physical<wbr/>Size</a></li>
21589<li><a href="#static_android.sensor.info.whiteLevel">android.<wbr/>sensor.<wbr/>info.<wbr/>white<wbr/>Level</a></li>
21590<li><a href="#static_android.sensor.info.lensShadingApplied">android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied</a></li>
21591<li><a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a></li>
21592<li><a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a></li>
21593<li><a href="#static_android.sensor.calibrationTransform1">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1</a></li>
21594<li><a href="#static_android.sensor.calibrationTransform2">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2</a></li>
21595<li><a href="#static_android.sensor.colorTransform1">android.<wbr/>sensor.<wbr/>color<wbr/>Transform1</a></li>
21596<li><a href="#static_android.sensor.colorTransform2">android.<wbr/>sensor.<wbr/>color<wbr/>Transform2</a></li>
21597<li><a href="#static_android.sensor.forwardMatrix1">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1</a></li>
21598<li><a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a></li>
21599<li><a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a></li>
21600<li><a href="#static_android.sensor.maxAnalogSensitivity">android.<wbr/>sensor.<wbr/>max<wbr/>Analog<wbr/>Sensitivity</a></li>
21601<li><a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a></li>
21602<li><a href="#static_android.sensor.availableTestPatternModes">android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes</a></li>
21603<li><a href="#static_android.lens.info.hyperfocalDistance">android.<wbr/>lens.<wbr/>info.<wbr/>hyperfocal<wbr/>Distance</a></li>
21604<li><a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a></li>
21605<li><a href="#static_android.lens.info.focusDistanceCalibration">android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration</a></li>
21606<li><a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a></li>
21607<li><a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a></li>
21608<li><a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a></li>
21609<li><a href="#static_android.lens.poseReference">android.<wbr/>lens.<wbr/>pose<wbr/>Reference</a></li>
21610<li><a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a></li>
21611</ul>
21612<p>The field of view of non-RAW physical streams must not be smaller than that of the
21613non-RAW logical streams,<wbr/> or the maximum field-of-view of the physical camera,<wbr/>
21614whichever is smaller.<wbr/> The application should check the physical capture result
21615metadata for how the physical streams are cropped or zoomed.<wbr/> More specifically,<wbr/> given
21616the physical camera result metadata,<wbr/> the effective horizontal field-of-view of the
21617physical camera is:</p>
21618<pre><code>fov = 2 * atan2(cropW * sensorW /<wbr/> (2 * zoomRatio * activeArrayW),<wbr/> focalLength)
21619</code></pre>
21620<p>where the equation parameters are the physical camera's crop region width,<wbr/> physical
21621sensor width,<wbr/> zoom ratio,<wbr/> active array width,<wbr/> and focal length respectively.<wbr/> Typically
21622the physical stream of active physical camera has the same field-of-view as the
21623logical streams.<wbr/> However,<wbr/> the same may not be true for physical streams from
21624non-active physical cameras.<wbr/> For example,<wbr/> if the logical camera has a wide-ultrawide
21625configuration where the wide lens is the default,<wbr/> when the crop region is set to the
21626logical camera's active array size,<wbr/> (and the zoom ratio set to 1.<wbr/>0 starting from
21627Android 11),<wbr/> a physical stream for the ultrawide camera may prefer outputting images
21628with larger field-of-view than that of the wide camera for better stereo matching
21629margin or more robust motion tracking.<wbr/> At the same time,<wbr/> the physical non-RAW streams'
21630field of view must not be smaller than the requested crop region and zoom ratio,<wbr/> as
21631long as it's within the physical lens' capability.<wbr/> For example,<wbr/> for a logical camera
21632with wide-tele lens configuration where the wide lens is the default,<wbr/> if the logical
21633camera's crop region is set to maximum size,<wbr/> and zoom ratio set to 1.<wbr/>0,<wbr/> the physical
21634stream for the tele lens will be configured to its maximum size crop region (no zoom).<wbr/></p>
21635<p><em>Deprecated:</em> Prior to Android 11,<wbr/> the field of view of all non-RAW physical streams
21636cannot be larger than that of non-RAW logical streams.<wbr/> If the logical camera has a
21637wide-ultrawide lens configuration where the wide lens is the default,<wbr/> when the logical
21638camera's crop region is set to maximum size,<wbr/> the FOV of the physical streams for the
21639ultrawide lens will be the same as the logical stream,<wbr/> by making the crop region
21640smaller than its active array size to compensate for the smaller focal length.<wbr/></p>
21641<p>For a logical camera,<wbr/> typically the underlying physical cameras have different RAW
21642capabilities (such as resolution or CFA pattern).<wbr/> There are two ways for the
21643application to capture RAW images from the logical camera:</p>
21644<ul>
21645<li>If the logical camera has RAW capability,<wbr/> the application can create and use RAW
21646streams in the same way as before.<wbr/> In case a RAW stream is configured,<wbr/> to maintain
21647backward compatibility,<wbr/> the camera device makes sure the default active physical
21648camera remains active and does not switch to other physical cameras.<wbr/> (One exception
21649is that,<wbr/> if the logical camera consists of identical image sensors and advertises
21650multiple focalLength due to different lenses,<wbr/> the camera device may generate RAW
21651images from different physical cameras based on the focalLength being set by the
21652application.<wbr/>) This backward-compatible approach usually results in loss of optical
21653zoom,<wbr/> to telephoto lens or to ultrawide lens.<wbr/></li>
21654<li>Alternatively,<wbr/> if supported by the device,<wbr/>
21655<a href="https://developer.android.com/reference/android/hardware/camera2/MultiResolutionImageReader.html">MultiResolutionImageReader</a>
21656can be used to capture RAW images from one of the underlying physical cameras (
21657depending on current zoom level).<wbr/> Because different physical cameras may have
21658different RAW characteristics,<wbr/> the application needs to use the characteristics
21659and result metadata of the active physical camera for the relevant RAW metadata.<wbr/></li>
21660</ul>
21661<p>The capture request and result metadata tags required for backward compatible camera
21662functionalities will be solely based on the logical camera capability.<wbr/> On the other
21663hand,<wbr/> the use of manual capture controls (sensor or post-processing) with a
21664logical camera may result in unexpected behavior when the HAL decides to switch
21665between physical cameras with different characteristics under the hood.<wbr/> For example,<wbr/>
21666when the application manually sets exposure time and sensitivity while zooming in,<wbr/>
21667the brightness of the camera images may suddenly change because HAL switches from one
21668physical camera to the other.<wbr/></p></span>
21669                  </li>
21670                  <li>
21671                    <span class="entry_type_enum_name">MONOCHROME (v3.3)</span>
21672                    <span class="entry_type_enum_optional">[optional]</span>
21673                    <span class="entry_type_enum_notes"><p>The camera device is a monochrome camera that doesn't contain a color filter array,<wbr/>
21674and for YUV_<wbr/>420_<wbr/>888 stream,<wbr/> the pixel values on U and V planes are all 128.<wbr/></p>
21675<p>A MONOCHROME camera must support the guaranteed stream combinations required for
21676its device level and capabilities.<wbr/> Additionally,<wbr/> if the monochrome camera device
21677supports Y8 format,<wbr/> all mandatory stream combination requirements related to <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">YUV_<wbr/>420_<wbr/>888</a> apply
21678to <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#Y8">Y8</a> as well.<wbr/> There are no
21679mandatory stream combination requirements with regard to
21680<a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#Y8">Y8</a> for Bayer camera devices.<wbr/></p>
21681<p>Starting from Android Q,<wbr/> the SENSOR_<wbr/>INFO_<wbr/>COLOR_<wbr/>FILTER_<wbr/>ARRANGEMENT of a MONOCHROME
21682camera will be either MONO or NIR.<wbr/></p></span>
21683                  </li>
21684                  <li>
21685                    <span class="entry_type_enum_name">SECURE_IMAGE_DATA (v3.4)</span>
21686                    <span class="entry_type_enum_optional">[optional]</span>
21687                    <span class="entry_type_enum_notes"><p>The camera device is capable of writing image data into a region of memory
21688inaccessible to Android userspace or the Android kernel,<wbr/> and only accessible to
21689trusted execution environments (TEE).<wbr/></p></span>
21690                  </li>
21691                  <li>
21692                    <span class="entry_type_enum_name">SYSTEM_CAMERA (v3.5)</span>
21693                    <span class="entry_type_enum_optional">[optional]</span>
21694                    <span class="entry_type_enum_notes"><p>The camera device is only accessible by Android's system components and privileged
21695applications.<wbr/> Processes need to have the android.<wbr/>permission.<wbr/>SYSTEM_<wbr/>CAMERA in
21696addition to android.<wbr/>permission.<wbr/>CAMERA in order to connect to this camera device.<wbr/></p></span>
21697                  </li>
21698                  <li>
21699                    <span class="entry_type_enum_name">OFFLINE_PROCESSING (v3.5)</span>
21700                    <span class="entry_type_enum_optional">[optional]</span>
21701                    <span class="entry_type_enum_hidden">[java_public]</span>
21702                    <span class="entry_type_enum_notes"><p>The camera device supports the OFFLINE_<wbr/>PROCESSING use case.<wbr/></p>
21703<p>With OFFLINE_<wbr/>PROCESSING capability,<wbr/> the application can switch an ongoing
21704capture session to offline mode by calling the
21705CameraCaptureSession#switchToOffline method and specify streams to be kept in offline
21706mode.<wbr/> The camera will then stop currently active repeating requests,<wbr/> prepare for
21707some requests to go into offline mode,<wbr/> and return an offline session object.<wbr/> After
21708the switchToOffline call returns,<wbr/> the original capture session is in closed state as
21709if the CameraCaptureSession#close method has been called.<wbr/>
21710In the offline mode,<wbr/> all inflight requests will continue to be processed in the
21711background,<wbr/> and the application can immediately close the camera or create a new
21712capture session without losing those requests' output images and capture results.<wbr/></p>
21713<p>While the camera device is processing offline requests,<wbr/> it
21714might not be able to support all stream configurations it can support
21715without offline requests.<wbr/> When that happens,<wbr/> the createCaptureSession
21716method call will fail.<wbr/> The following stream configurations are guaranteed to work
21717without hitting the resource busy exception:</p>
21718<ul>
21719<li>One ongoing offline session: target one output surface of YUV or
21720JPEG format,<wbr/> any resolution.<wbr/></li>
21721<li>The active camera capture session:<ol>
21722<li>One preview surface (SurfaceView or SurfaceTexture) up to 1920 width</li>
21723<li>One YUV ImageReader surface up to 1920 width</li>
21724<li>One Jpeg ImageReader,<wbr/> any resolution: the camera device is
21725   allowed to slow down JPEG output speed by 50% if there is any ongoing offline
21726   session.<wbr/></li>
21727<li>If the device supports PRIVATE_<wbr/>REPROCESSING,<wbr/> one pair of ImageWriter/<wbr/>ImageReader
21728   surfaces of private format,<wbr/> with the same resolution that is larger or equal to
21729   the JPEG ImageReader resolution above.<wbr/></li>
21730</ol>
21731</li>
21732<li>Alternatively,<wbr/> the active camera session above can be replaced by an legacy
21733<a href="https://developer.android.com/reference/android/hardware/Camera.html">Camera</a> with the following parameter settings:<ol>
21734<li>Preview size up to 1920 width</li>
21735<li>Preview callback size up to 1920 width</li>
21736<li>Video size up to 1920 width</li>
21737<li>Picture size,<wbr/> any resolution: the camera device is
21738    allowed to slow down JPEG output speed by 50% if there is any ongoing offline
21739    session.<wbr/></li>
21740</ol>
21741</li>
21742</ul></span>
21743                  </li>
21744                  <li>
21745                    <span class="entry_type_enum_name">ULTRA_HIGH_RESOLUTION_SENSOR (v3.6)</span>
21746                    <span class="entry_type_enum_optional">[optional]</span>
21747                    <span class="entry_type_enum_notes"><p>This camera device is capable of producing ultra high resolution images in
21748addition to the image sizes described in the
21749<a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a>.<wbr/>
21750It can operate in 'default' mode and 'max resolution' mode.<wbr/> It generally does this
21751by binning pixels in 'default' mode and not binning them in 'max resolution' mode.<wbr/>
21752<code><a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a></code> describes the streams supported in 'default'
21753mode.<wbr/>
21754The stream configurations supported in 'max resolution' mode are described by
21755<code><a href="#static_android.scaler.streamConfigurationMapMaximumResolution">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map<wbr/>Maximum<wbr/>Resolution</a></code>.<wbr/>
21756The maximum resolution mode pixel array size of a camera device
21757(<code><a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a></code>) with this capability,<wbr/>
21758will be at least 24 megapixels.<wbr/></p></span>
21759                  </li>
21760                  <li>
21761                    <span class="entry_type_enum_name">REMOSAIC_REPROCESSING (v3.6)</span>
21762                    <span class="entry_type_enum_optional">[optional]</span>
21763                    <span class="entry_type_enum_hidden">[java_public]</span>
21764                    <span class="entry_type_enum_notes"><p>The device supports reprocessing from the <code>RAW_<wbr/>SENSOR</code> format with a bayer pattern
21765given by <a href="#static_android.sensor.info.binningFactor">android.<wbr/>sensor.<wbr/>info.<wbr/>binning<wbr/>Factor</a> (m x n group of pixels with the same
21766color filter) to a remosaiced regular bayer pattern.<wbr/></p>
21767<p>This capability will only be present for devices with
21768<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR">Camera<wbr/>Metadata#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>ULTRA_<wbr/>HIGH_<wbr/>RESOLUTION_<wbr/>SENSOR</a>
21769capability.<wbr/> When
21770<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR">Camera<wbr/>Metadata#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>ULTRA_<wbr/>HIGH_<wbr/>RESOLUTION_<wbr/>SENSOR</a>
21771devices do not advertise this capability,<wbr/>
21772<a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_SENSOR">ImageFormat#RAW_<wbr/>SENSOR</a> images will already have a
21773regular bayer pattern.<wbr/></p>
21774<p>If a <code>RAW_<wbr/>SENSOR</code> stream is requested along with another non-RAW stream in a
21775<a href="https://developer.android.com/reference/android/hardware/camera2/CaptureRequest.html">CaptureRequest</a> (if multiple streams are supported
21776when <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to
21777<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>),<wbr/>
21778the <code>RAW_<wbr/>SENSOR</code> stream will have a regular bayer pattern.<wbr/></p>
21779<p>This capability requires the camera device to support the following :</p>
21780<ul>
21781<li>The <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html">StreamConfigurationMap</a> mentioned below
21782  refers to the one,<wbr/> described by
21783  <code><a href="#static_android.scaler.streamConfigurationMapMaximumResolution">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map<wbr/>Maximum<wbr/>Resolution</a></code>.<wbr/></li>
21784<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>
21785<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_SENSOR">ImageFormat#RAW_<wbr/>SENSOR</a> is supported as an output/<wbr/>input
21786  format,<wbr/> that is,<wbr/> <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_SENSOR">ImageFormat#RAW_<wbr/>SENSOR</a> is included in the
21787  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>
21788<li><a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getValidOutputFormatsForInput">StreamConfigurationMap#getValidOutputFormatsForInput</a>
21789  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>
21790<li>Each size returned by <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getInputSizes">getInputSizes(ImageFormat.<wbr/>RAW_<wbr/>SENSOR)</a> is also included in <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputSizes">getOutputSizes(ImageFormat.<wbr/>RAW_<wbr/>SENSOR)</a></li>
21791<li>Using <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_SENSOR">ImageFormat#RAW_<wbr/>SENSOR</a> does not cause a frame rate
21792  drop relative to the sensor's maximum capture rate (at that resolution).<wbr/></li>
21793<li>No CaptureRequest controls will be applicable when a request has an input target
21794  with <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_SENSOR">ImageFormat#RAW_<wbr/>SENSOR</a> format.<wbr/></li>
21795</ul></span>
21796                  </li>
21797                  <li>
21798                    <span class="entry_type_enum_name">DYNAMIC_RANGE_TEN_BIT (v3.8)</span>
21799                    <span class="entry_type_enum_optional">[optional]</span>
21800                    <span class="entry_type_enum_hidden">[java_public]</span>
21801                    <span class="entry_type_enum_notes"><p>The device supports one or more 10-bit camera outputs according to the dynamic range
21802profiles specified in
21803<a href="https://developer.android.com/reference/android/hardware/camera2/params/DynamicRangeProfiles.html#getSupportedProfiles">DynamicRangeProfiles#getSupportedProfiles</a>.<wbr/>
21804They can be configured as part of the capture session initialization via
21805<a href="https://developer.android.com/reference/android/hardware/camera2/params/OutputConfiguration.html#setDynamicRangeProfile">OutputConfiguration#setDynamicRangeProfile</a>.<wbr/>
21806Cameras that enable this capability must also support the following:</p>
21807<ul>
21808<li>Profile <a href="https://developer.android.com/reference/android/hardware/camera2/params/DynamicRangeProfiles.html#HLG10">DynamicRangeProfiles#HLG10</a></li>
21809<li>All mandatory stream combinations for this specific capability as per
21810  <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice#10-bit-output-additional-guaranteed-configurations">documentation</a></li>
21811<li>In case the device is not able to capture some combination of supported
21812  standard 8-bit and/<wbr/>or 10-bit dynamic range profiles within the same capture request,<wbr/>
21813  then those constraints must be listed in
21814  <a href="https://developer.android.com/reference/android/hardware/camera2/params/DynamicRangeProfiles.html#getProfileCaptureRequestConstraints">DynamicRangeProfiles#getProfileCaptureRequestConstraints</a></li>
21815<li>Recommended dynamic range profile listed in
21816  <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#REQUEST_RECOMMENDED_TEN_BIT_DYNAMIC_RANGE_PROFILE">Camera<wbr/>Characteristics#REQUEST_<wbr/>RECOMMENDED_<wbr/>TEN_<wbr/>BIT_<wbr/>DYNAMIC_<wbr/>RANGE_<wbr/>PROFILE</a>.<wbr/></li>
21817</ul></span>
21818                  </li>
21819                  <li>
21820                    <span class="entry_type_enum_name">STREAM_USE_CASE (v3.8)</span>
21821                    <span class="entry_type_enum_optional">[optional]</span>
21822                    <span class="entry_type_enum_notes"><p>The camera device supports selecting a per-stream use case via
21823<a href="https://developer.android.com/reference/android/hardware/camera2/params/OutputConfiguration.html#setStreamUseCase">OutputConfiguration#setStreamUseCase</a>
21824so that the device can optimize camera pipeline parameters such as tuning,<wbr/> sensor
21825mode,<wbr/> or ISP settings for a specific user scenario.<wbr/>
21826Some sample usages of this capability are:</p>
21827<ul>
21828<li>Distinguish high quality YUV captures from a regular YUV stream where
21829  the image quality may not be as good as the JPEG stream,<wbr/> or</li>
21830<li>Use one stream to serve multiple purposes: viewfinder,<wbr/> video recording and
21831  still capture.<wbr/> This is common with applications that wish to apply edits equally
21832  to preview,<wbr/> saved images,<wbr/> and saved videos.<wbr/></li>
21833</ul>
21834<p>This capability requires the camera device to support the following
21835stream use cases:</p>
21836<ul>
21837<li>DEFAULT for backward compatibility where the application doesn't set
21838  a stream use case</li>
21839<li>PREVIEW for live viewfinder and in-app image analysis</li>
21840<li>STILL_<wbr/>CAPTURE for still photo capture</li>
21841<li>VIDEO_<wbr/>RECORD for recording video clips</li>
21842<li>PREVIEW_<wbr/>VIDEO_<wbr/>STILL for one single stream used for viewfinder,<wbr/> video
21843  recording,<wbr/> and still capture.<wbr/></li>
21844<li>VIDEO_<wbr/>CALL for long running video calls</li>
21845</ul>
21846<p><a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#SCALER_AVAILABLE_STREAM_USE_CASES">Camera<wbr/>Characteristics#SCALER_<wbr/>AVAILABLE_<wbr/>STREAM_<wbr/>USE_<wbr/>CASES</a>
21847lists all of the supported stream use cases.<wbr/></p>
21848<p>Refer to the
21849<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice#stream-use-case-capability-additional-guaranteed-configurations">guideline</a>
21850for the mandatory stream combinations involving stream use cases,<wbr/> which can also be
21851queried via <a href="https://developer.android.com/reference/android/hardware/camera2/params/MandatoryStreamCombination.html">MandatoryStreamCombination</a>.<wbr/></p></span>
21852                  </li>
21853                  <li>
21854                    <span class="entry_type_enum_name">COLOR_SPACE_PROFILES (v3.9)</span>
21855                    <span class="entry_type_enum_optional">[optional]</span>
21856                    <span class="entry_type_enum_hidden">[java_public]</span>
21857                    <span class="entry_type_enum_notes"><p>The device supports querying the possible combinations of color spaces,<wbr/> image
21858formats,<wbr/> and dynamic range profiles supported by the camera and requesting a
21859particular color space for a session via
21860<a href="https://developer.android.com/reference/android/hardware/camera2/params/SessionConfiguration.html#setColorSpace">SessionConfiguration#setColorSpace</a>.<wbr/></p>
21861<p>Cameras that enable this capability may or may not also implement dynamic range
21862profiles.<wbr/> If they don't,<wbr/>
21863<a href="https://developer.android.com/reference/android/hardware/camera2/params/ColorSpaceProfiles.html#getSupportedDynamicRangeProfiles">ColorSpaceProfiles#getSupportedDynamicRangeProfiles</a>
21864will return only
21865<a href="https://developer.android.com/reference/android/hardware/camera2/params/DynamicRangeProfiles.html#STANDARD">DynamicRangeProfiles#STANDARD</a> and
21866<a href="https://developer.android.com/reference/android/hardware/camera2/params/ColorSpaceProfiles.html#getSupportedColorSpacesForDynamicRange">ColorSpaceProfiles#getSupportedColorSpacesForDynamicRange</a>
21867will assume support of the
21868<a href="https://developer.android.com/reference/android/hardware/camera2/params/DynamicRangeProfiles.html#STANDARD">DynamicRangeProfiles#STANDARD</a>
21869profile in all combinations of color spaces and image formats.<wbr/></p></span>
21870                  </li>
21871                </ul>
21872
21873            </td> <!-- entry_type -->
21874
21875            <td class="entry_description">
21876              <p>List of capabilities that this camera device
21877advertises as fully supporting.<wbr/></p>
21878            </td>
21879
21880            <td class="entry_units">
21881            </td>
21882
21883            <td class="entry_range">
21884            </td>
21885
21886            <td class="entry_hal_version">
21887              <p>3.<wbr/>2</p>
21888            </td>
21889
21890            <td class="entry_tags">
21891            </td>
21892
21893          </tr>
21894          <tr class="entries_header">
21895            <th class="th_details" colspan="6">Details</th>
21896          </tr>
21897          <tr class="entry_cont">
21898            <td class="entry_details" colspan="6">
21899              <p>A capability is a contract that the camera device makes in order
21900to be able to satisfy one or more use cases.<wbr/></p>
21901<p>Listing a capability guarantees that the whole set of features
21902required to support a common use will all be available.<wbr/></p>
21903<p>Using a subset of the functionality provided by an unsupported
21904capability may be possible on a specific camera device implementation;
21905to do this query each of <a href="#static_android.request.availableRequestKeys">android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys</a>,<wbr/>
21906<a href="#static_android.request.availableResultKeys">android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys</a>,<wbr/>
21907<a href="#static_android.request.availableCharacteristicsKeys">android.<wbr/>request.<wbr/>available<wbr/>Characteristics<wbr/>Keys</a>.<wbr/></p>
21908<p>The following capabilities are guaranteed to be available on
21909<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> <code>==</code> FULL devices:</p>
21910<ul>
21911<li>MANUAL_<wbr/>SENSOR</li>
21912<li>MANUAL_<wbr/>POST_<wbr/>PROCESSING</li>
21913</ul>
21914<p>Other capabilities may be available on either FULL or LIMITED
21915devices,<wbr/> but the application should query this key to be sure.<wbr/></p>
21916            </td>
21917          </tr>
21918
21919          <tr class="entries_header">
21920            <th class="th_details" colspan="6">HAL Implementation Details</th>
21921          </tr>
21922          <tr class="entry_cont">
21923            <td class="entry_details" colspan="6">
21924              <p>Additional constraint details per-capability will be available
21925in the Compatibility Test Suite.<wbr/></p>
21926<p>Minimum baseline requirements required for the
21927BACKWARD_<wbr/>COMPATIBLE capability are not explicitly listed.<wbr/>
21928Instead refer to "BC" tags and the camera CTS tests in the
21929android.<wbr/>hardware.<wbr/>camera2.<wbr/>cts package.<wbr/></p>
21930<p>Listed controls that can be either request or result (e.<wbr/>g.<wbr/>
21931<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>) must be available both in the
21932request and the result in order to be considered to be
21933capability-compliant.<wbr/></p>
21934<p>For example,<wbr/> if the HAL claims to support MANUAL control,<wbr/>
21935then exposure time must be configurable via the request <em>and</em>
21936the actual exposure applied must be available via
21937the result.<wbr/></p>
21938<p>If MANUAL_<wbr/>SENSOR is omitted,<wbr/> the HAL may choose to omit the
21939<a href="#static_android.scaler.availableMinFrameDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Min<wbr/>Frame<wbr/>Durations</a> static property entirely.<wbr/></p>
21940<p>For PRIVATE_<wbr/>REPROCESSING and YUV_<wbr/>REPROCESSING capabilities,<wbr/> see
21941hardware/<wbr/>libhardware/<wbr/>include/<wbr/>hardware/<wbr/>camera3.<wbr/>h Section 10 for more information.<wbr/></p>
21942<p>Devices that support the MANUAL_<wbr/>SENSOR capability must support the
21943CAMERA3_<wbr/>TEMPLATE_<wbr/>MANUAL template defined in camera3.<wbr/>h.<wbr/></p>
21944<p>Devices that support the PRIVATE_<wbr/>REPROCESSING capability or the
21945YUV_<wbr/>REPROCESSING capability must support the
21946CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template defined in camera3.<wbr/>h.<wbr/></p>
21947<p>For DEPTH_<wbr/>OUTPUT,<wbr/> the depth-format keys
21948<a href="#static_android.depth.availableDepthStreamConfigurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stream<wbr/>Configurations</a>,<wbr/>
21949<a href="#static_android.depth.availableDepthMinFrameDurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Min<wbr/>Frame<wbr/>Durations</a>,<wbr/>
21950<a href="#static_android.depth.availableDepthStallDurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stall<wbr/>Durations</a> must be available,<wbr/> in
21951addition to the other keys explicitly mentioned in the DEPTH_<wbr/>OUTPUT
21952enum notes.<wbr/> The entry <a href="#static_android.depth.maxDepthSamples">android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples</a> must be available
21953if the DEPTH_<wbr/>POINT_<wbr/>CLOUD format is supported (HAL pixel format BLOB,<wbr/> dataspace
21954DEPTH).<wbr/></p>
21955<p>For a camera device with LOGICAL_<wbr/>MULTI_<wbr/>CAMERA capability,<wbr/> it should operate in the
21956same way as a physical camera device based on its hardware level and capabilities.<wbr/>
21957It's recommended that its feature set is superset of that of individual physical cameras.<wbr/></p>
21958<ul>
21959<li>
21960<p>In camera1 API,<wbr/> to maintain application compatibility,<wbr/> for each camera facing,<wbr/> there
21961may be one or more {logical_<wbr/>camera_<wbr/>id,<wbr/> physical_<wbr/>camera_<wbr/>1_<wbr/>id,<wbr/> physical_<wbr/>camera_<wbr/>2_<wbr/>id,<wbr/> ...<wbr/>}
21962combinations,<wbr/> where logical_<wbr/>camera_<wbr/>id is composed of physical_<wbr/>camera_<wbr/>N_<wbr/>id,<wbr/> camera
21963framework will only advertise one camera id
21964(within the combinations for the particular facing) that is frontmost in the HAL
21965published camera id list.<wbr/>
21966For example,<wbr/> if HAL advertises 6 back facing camera IDs (ID0 to ID5),<wbr/> among which ID4
21967and ID5 are logical cameras backed by ID0+ID1 and ID2+ID3 respectively.<wbr/> In this case,<wbr/>
21968only ID0 will be available for camera1 API to use.<wbr/></p>
21969</li>
21970<li>
21971<p>Camera HAL is strongly recommended to advertise camera devices with best feature,<wbr/>
21972power,<wbr/> performance,<wbr/> and latency tradeoffs at the front of the camera id list.<wbr/></p>
21973</li>
21974<li>
21975<p>Camera HAL may switch between physical cameras depending on focalLength,<wbr/> cropRegion,<wbr/> or
21976zoomRatio.<wbr/> If physical cameras have different sizes,<wbr/> HAL must maintain a single logical
21977camera active<wbr/>Array<wbr/>Size/<wbr/>pixel<wbr/>Array<wbr/>Size/<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size,<wbr/> and must do proper
21978mapping between logical camera and underlying physical cameras for all related metadata
21979tags,<wbr/> such as crop region,<wbr/> zoomRatio,<wbr/> 3A regions,<wbr/> and intrinsicCalibration.<wbr/></p>
21980</li>
21981<li>
21982<p>Starting from HIDL ICameraDevice version 3.<wbr/>5,<wbr/> camera HAL must support
21983isStreamCombinationSupported for application to query whether a particular logical and
21984physical streams combination are supported.<wbr/></p>
21985</li>
21986</ul>
21987<p>A MONOCHROME camera device must also advertise BACKWARD_<wbr/>COMPATIBLE capability,<wbr/> and must
21988not advertise MANUAL_<wbr/>POST_<wbr/>PROCESSING capability.<wbr/></p>
21989<ul>
21990<li>
21991<p>To maintain backward compatibility,<wbr/> the camera device must support all
21992BACKWARD_<wbr/>COMPATIBLE required keys.<wbr/> The <a href="#static_android.control.awbAvailableModes">android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes</a> key only contains
21993AUTO,<wbr/> and <a href="#dynamic_android.control.awbState">android.<wbr/>control.<wbr/>awb<wbr/>State</a> are either CONVERGED or LOCKED depending on
21994<a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a>.<wbr/></p>
21995</li>
21996<li>
21997<p><a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>,<wbr/> <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>,<wbr/> and
21998<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> must not be in available request and result keys.<wbr/>
21999As a result,<wbr/> the camera device cannot be a FULL device.<wbr/> However,<wbr/> the HAL can
22000still advertise other individual capabilities.<wbr/></p>
22001</li>
22002<li>
22003<p>If the device supports tonemap control,<wbr/> only <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> is used.<wbr/>
22004CurveGreen and curveBlue are no-ops.<wbr/></p>
22005</li>
22006</ul>
22007<p>In Android API level 28,<wbr/> a MONOCHROME camera device must not have RAW capability.<wbr/> From
22008API level 29,<wbr/> a camera is allowed to have both MONOCHROME and RAW capabilities.<wbr/></p>
22009<p>To support the legacy API to ICameraDevice 3.<wbr/>x shim layer,<wbr/> devices advertising
22010OFFLINE_<wbr/>PROCESSING capability must also support configuring an input stream of the same
22011size as the picture size if:</p>
22012<ul>
22013<li>The device supports PRIVATE_<wbr/>REPROCESSING capability</li>
22014<li>The device's maximal JPEG resolution can reach 30 FPS min frame duration</li>
22015<li>The device does not support HAL based ZSL (<a href="#controls_android.control.enableZsl">android.<wbr/>control.<wbr/>enable<wbr/>Zsl</a>)</li>
22016</ul>
22017<p>For devices which support SYSTEM_<wbr/>CAMERA and LOGICAL_<wbr/>MULTI_<wbr/>CAMERA capabilities:</p>
22018<p>Hidden physical camera ids[1] must not be be shared[2] between public camera devices
22019and camera devices advertising SYSTEM_<wbr/>CAMERA capability.<wbr/></p>
22020<p>[1] - Camera device ids which are advertised in the
22021      ANDROID_<wbr/>LOGICAL_<wbr/>MULTI_<wbr/>CAMERA_<wbr/>PHYSICAL_<wbr/>IDS list,<wbr/> and not available through
22022      ICamera<wbr/>Provider.<wbr/>get<wbr/>Camera<wbr/>Id<wbr/>List().<wbr/></p>
22023<p>[2] - The ANDROID_<wbr/>LOGICAL_<wbr/>MULTI_<wbr/>CAMERA_<wbr/>PHYSICAL_<wbr/>IDS lists,<wbr/> must not have common
22024      camera ids.<wbr/></p>
22025            </td>
22026          </tr>
22027
22028          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22029           <!-- end of entry -->
22030
22031
22032          <tr class="entry" id="static_android.request.availableRequestKeys">
22033            <td class="entry_name
22034             " rowspan="5">
22035              android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys
22036            </td>
22037            <td class="entry_type">
22038                <span class="entry_type_name">int32</span>
22039                <span class="entry_type_container">x</span>
22040
22041                <span class="entry_type_array">
22042                  n
22043                </span>
22044              <span class="entry_type_visibility"> [ndk_public]</span>
22045
22046
22047              <span class="entry_type_hwlevel">[legacy] </span>
22048
22049
22050
22051
22052            </td> <!-- entry_type -->
22053
22054            <td class="entry_description">
22055              <p>A list of all keys that the camera device has available
22056to use with <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureRequest.html">CaptureRequest</a>.<wbr/></p>
22057            </td>
22058
22059            <td class="entry_units">
22060            </td>
22061
22062            <td class="entry_range">
22063            </td>
22064
22065            <td class="entry_hal_version">
22066              <p>3.<wbr/>2</p>
22067            </td>
22068
22069            <td class="entry_tags">
22070            </td>
22071
22072          </tr>
22073          <tr class="entries_header">
22074            <th class="th_details" colspan="6">Details</th>
22075          </tr>
22076          <tr class="entry_cont">
22077            <td class="entry_details" colspan="6">
22078              <p>Attempting to set a key into a CaptureRequest that is not
22079listed here will result in an invalid request and will be rejected
22080by the camera device.<wbr/></p>
22081<p>This field can be used to query the feature set of a camera device
22082at a more granular level than capabilities.<wbr/> This is especially
22083important for optional keys that are not listed under any capability
22084in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
22085            </td>
22086          </tr>
22087
22088          <tr class="entries_header">
22089            <th class="th_details" colspan="6">HAL Implementation Details</th>
22090          </tr>
22091          <tr class="entry_cont">
22092            <td class="entry_details" colspan="6">
22093              <p>Vendor tags can be listed here.<wbr/> Vendor tag metadata should also
22094use the extensions C api (refer to camera3.<wbr/>h for more details).<wbr/></p>
22095<p>Setting/<wbr/>getting vendor tags will be checked against the metadata
22096vendor extensions API and not against this field.<wbr/></p>
22097<p>The HAL must not consume any request tags that are not listed either
22098here or in the vendor tag list.<wbr/></p>
22099<p>The public camera2 API will always make the vendor tags visible
22100via
22101<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a>.<wbr/></p>
22102            </td>
22103          </tr>
22104
22105          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22106           <!-- end of entry -->
22107
22108
22109          <tr class="entry" id="static_android.request.availableResultKeys">
22110            <td class="entry_name
22111             " rowspan="5">
22112              android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys
22113            </td>
22114            <td class="entry_type">
22115                <span class="entry_type_name">int32</span>
22116                <span class="entry_type_container">x</span>
22117
22118                <span class="entry_type_array">
22119                  n
22120                </span>
22121              <span class="entry_type_visibility"> [ndk_public]</span>
22122
22123
22124              <span class="entry_type_hwlevel">[legacy] </span>
22125
22126
22127
22128
22129            </td> <!-- entry_type -->
22130
22131            <td class="entry_description">
22132              <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>
22133            </td>
22134
22135            <td class="entry_units">
22136            </td>
22137
22138            <td class="entry_range">
22139            </td>
22140
22141            <td class="entry_hal_version">
22142              <p>3.<wbr/>2</p>
22143            </td>
22144
22145            <td class="entry_tags">
22146            </td>
22147
22148          </tr>
22149          <tr class="entries_header">
22150            <th class="th_details" colspan="6">Details</th>
22151          </tr>
22152          <tr class="entry_cont">
22153            <td class="entry_details" colspan="6">
22154              <p>Attempting to get a key from a CaptureResult that is not
22155listed here will always return a <code>null</code> value.<wbr/> Getting a key from
22156a CaptureResult that is listed here will generally never return a <code>null</code>
22157value.<wbr/></p>
22158<p>The following keys may return <code>null</code> unless they are enabled:</p>
22159<ul>
22160<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>
22161</ul>
22162<p>(Those sometimes-null keys will nevertheless be listed here
22163if they are available.<wbr/>)</p>
22164<p>This field can be used to query the feature set of a camera device
22165at a more granular level than capabilities.<wbr/> This is especially
22166important for optional keys that are not listed under any capability
22167in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
22168            </td>
22169          </tr>
22170
22171          <tr class="entries_header">
22172            <th class="th_details" colspan="6">HAL Implementation Details</th>
22173          </tr>
22174          <tr class="entry_cont">
22175            <td class="entry_details" colspan="6">
22176              <p>Tags listed here must always have an entry in the result metadata,<wbr/>
22177even if that size is 0 elements.<wbr/> Only array-type tags (e.<wbr/>g.<wbr/> lists,<wbr/>
22178matrices,<wbr/> strings) are allowed to have 0 elements.<wbr/></p>
22179<p>Vendor tags can be listed here.<wbr/> Vendor tag metadata should also
22180use the extensions C api (refer to camera3.<wbr/>h for more details).<wbr/></p>
22181<p>Setting/<wbr/>getting vendor tags will be checked against the metadata
22182vendor extensions API and not against this field.<wbr/></p>
22183<p>The HAL must not produce any result tags that are not listed either
22184here or in the vendor tag list.<wbr/></p>
22185<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>
22186            </td>
22187          </tr>
22188
22189          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22190           <!-- end of entry -->
22191
22192
22193          <tr class="entry" id="static_android.request.availableCharacteristicsKeys">
22194            <td class="entry_name
22195             " rowspan="5">
22196              android.<wbr/>request.<wbr/>available<wbr/>Characteristics<wbr/>Keys
22197            </td>
22198            <td class="entry_type">
22199                <span class="entry_type_name">int32</span>
22200                <span class="entry_type_container">x</span>
22201
22202                <span class="entry_type_array">
22203                  n
22204                </span>
22205              <span class="entry_type_visibility"> [ndk_public]</span>
22206
22207
22208              <span class="entry_type_hwlevel">[legacy] </span>
22209
22210
22211
22212
22213            </td> <!-- entry_type -->
22214
22215            <td class="entry_description">
22216              <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>
22217            </td>
22218
22219            <td class="entry_units">
22220            </td>
22221
22222            <td class="entry_range">
22223            </td>
22224
22225            <td class="entry_hal_version">
22226              <p>3.<wbr/>2</p>
22227            </td>
22228
22229            <td class="entry_tags">
22230            </td>
22231
22232          </tr>
22233          <tr class="entries_header">
22234            <th class="th_details" colspan="6">Details</th>
22235          </tr>
22236          <tr class="entry_cont">
22237            <td class="entry_details" colspan="6">
22238              <p>This entry follows the same rules as
22239<a href="#static_android.request.availableResultKeys">android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys</a> (except that it applies for
22240CameraCharacteristics instead of CaptureResult).<wbr/> See above for more
22241details.<wbr/></p>
22242            </td>
22243          </tr>
22244
22245          <tr class="entries_header">
22246            <th class="th_details" colspan="6">HAL Implementation Details</th>
22247          </tr>
22248          <tr class="entry_cont">
22249            <td class="entry_details" colspan="6">
22250              <p>Keys listed here must always have an entry in the static info metadata,<wbr/>
22251even if that size is 0 elements.<wbr/> Only array-type tags (e.<wbr/>g.<wbr/> lists,<wbr/>
22252matrices,<wbr/> strings) are allowed to have 0 elements.<wbr/></p>
22253<p>Vendor tags can listed here.<wbr/> Vendor tag metadata should also use
22254the extensions C api (refer to camera3.<wbr/>h for more details).<wbr/></p>
22255<p>Setting/<wbr/>getting vendor tags will be checked against the metadata
22256vendor extensions API and not against this field.<wbr/></p>
22257<p>The HAL must not have any tags in its static info that are not listed
22258either here or in the vendor tag list.<wbr/></p>
22259<p>The public camera2 API will always make the vendor tags visible
22260via <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getKeys">CameraCharacteristics#getKeys</a>.<wbr/></p>
22261            </td>
22262          </tr>
22263
22264          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22265           <!-- end of entry -->
22266
22267
22268          <tr class="entry" id="static_android.request.availableSessionKeys">
22269            <td class="entry_name
22270             " rowspan="5">
22271              android.<wbr/>request.<wbr/>available<wbr/>Session<wbr/>Keys
22272            </td>
22273            <td class="entry_type">
22274                <span class="entry_type_name">int32</span>
22275                <span class="entry_type_container">x</span>
22276
22277                <span class="entry_type_array">
22278                  n
22279                </span>
22280              <span class="entry_type_visibility"> [ndk_public]</span>
22281
22282
22283              <span class="entry_type_hwlevel">[legacy] </span>
22284
22285
22286
22287
22288            </td> <!-- entry_type -->
22289
22290            <td class="entry_description">
22291              <p>A subset of the available request keys that the camera device
22292can pass as part of the capture session initialization.<wbr/></p>
22293            </td>
22294
22295            <td class="entry_units">
22296            </td>
22297
22298            <td class="entry_range">
22299            </td>
22300
22301            <td class="entry_hal_version">
22302              <p>3.<wbr/>3</p>
22303            </td>
22304
22305            <td class="entry_tags">
22306            </td>
22307
22308          </tr>
22309          <tr class="entries_header">
22310            <th class="th_details" colspan="6">Details</th>
22311          </tr>
22312          <tr class="entry_cont">
22313            <td class="entry_details" colspan="6">
22314              <p>This is a subset of <a href="#static_android.request.availableRequestKeys">android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys</a> which
22315contains a list of keys that are difficult to apply per-frame and
22316can result in unexpected delays when modified during the capture session
22317lifetime.<wbr/> Typical examples include parameters that require a
22318time-consuming hardware re-configuration or internal camera pipeline
22319change.<wbr/> For performance reasons we advise clients to pass their initial
22320values as part of
22321<a href="https://developer.android.com/reference/SessionConfiguration.html#setSessionParameters">SessionConfiguration#setSessionParameters</a>.<wbr/>
22322Once the camera capture session is enabled it is also recommended to avoid
22323changing them from their initial values set in
22324<a href="https://developer.android.com/reference/SessionConfiguration.html#setSessionParameters">SessionConfiguration#setSessionParameters</a>.<wbr/>
22325Control over session parameters can still be exerted in capture requests
22326but clients should be aware and expect delays during their application.<wbr/>
22327An example usage scenario could look like this:</p>
22328<ul>
22329<li>The camera client starts by querying the session parameter key list via
22330  <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableSessionKeys">CameraCharacteristics#getAvailableSessionKeys</a>.<wbr/></li>
22331<li>Before triggering the capture session create sequence,<wbr/> a capture request
22332  must be built via
22333  <a href="https://developer.android.com/reference/CameraDevice.html#createCaptureRequest">CameraDevice#createCaptureRequest</a>
22334  using an appropriate template matching the particular use case.<wbr/></li>
22335<li>The client should go over the list of session parameters and check
22336  whether some of the keys listed matches with the parameters that
22337  they intend to modify as part of the first capture request.<wbr/></li>
22338<li>If there is no such match,<wbr/> the capture request can be  passed
22339  unmodified to
22340  <a href="https://developer.android.com/reference/SessionConfiguration.html#setSessionParameters">SessionConfiguration#setSessionParameters</a>.<wbr/></li>
22341<li>If matches do exist,<wbr/> the client should update the respective values
22342  and pass the request to
22343  <a href="https://developer.android.com/reference/SessionConfiguration.html#setSessionParameters">SessionConfiguration#setSessionParameters</a>.<wbr/></li>
22344<li>After the capture session initialization completes the session parameter
22345  key list can continue to serve as reference when posting or updating
22346  further requests.<wbr/> As mentioned above further changes to session
22347  parameters should ideally be avoided,<wbr/> if updates are necessary
22348  however clients could expect a delay/<wbr/>glitch during the
22349  parameter switch.<wbr/></li>
22350</ul>
22351            </td>
22352          </tr>
22353
22354          <tr class="entries_header">
22355            <th class="th_details" colspan="6">HAL Implementation Details</th>
22356          </tr>
22357          <tr class="entry_cont">
22358            <td class="entry_details" colspan="6">
22359              <p>If <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a> is part of the session parameters and constrained high
22360speed mode is enabled,<wbr/> then only modifications of the maximum framerate value will be
22361monitored by the framework and can trigger camera re-configuration.<wbr/> For more information
22362about framerate ranges during constrained high speed sessions see
22363<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>.<wbr/>
22364Vendor tags can be listed here.<wbr/> Vendor tag metadata should also
22365use the extensions C api (refer to
22366android.<wbr/>hardware.<wbr/>camera.<wbr/>device.<wbr/>V3_<wbr/>4.<wbr/>Stream<wbr/>Configuration.<wbr/>session<wbr/>Params for more details).<wbr/></p>
22367<p>Setting/<wbr/>getting vendor tags will be checked against the metadata
22368vendor extensions API and not against this field.<wbr/></p>
22369<p>The HAL must not consume any request tags in the session parameters that
22370are not listed either here or in the vendor tag list.<wbr/></p>
22371<p>The public camera2 API will always make the vendor tags visible
22372via
22373<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableSessionKeys">CameraCharacteristics#getAvailableSessionKeys</a>.<wbr/></p>
22374            </td>
22375          </tr>
22376
22377          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22378           <!-- end of entry -->
22379
22380
22381          <tr class="entry" id="static_android.request.availablePhysicalCameraRequestKeys">
22382            <td class="entry_name
22383             " rowspan="5">
22384              android.<wbr/>request.<wbr/>available<wbr/>Physical<wbr/>Camera<wbr/>Request<wbr/>Keys
22385            </td>
22386            <td class="entry_type">
22387                <span class="entry_type_name">int32</span>
22388                <span class="entry_type_container">x</span>
22389
22390                <span class="entry_type_array">
22391                  n
22392                </span>
22393              <span class="entry_type_visibility"> [ndk_public]</span>
22394
22395
22396              <span class="entry_type_hwlevel">[limited] </span>
22397
22398
22399
22400
22401            </td> <!-- entry_type -->
22402
22403            <td class="entry_description">
22404              <p>A subset of the available request keys that can be overridden for
22405physical devices backing a logical multi-camera.<wbr/></p>
22406            </td>
22407
22408            <td class="entry_units">
22409            </td>
22410
22411            <td class="entry_range">
22412            </td>
22413
22414            <td class="entry_hal_version">
22415              <p>3.<wbr/>3</p>
22416            </td>
22417
22418            <td class="entry_tags">
22419            </td>
22420
22421          </tr>
22422          <tr class="entries_header">
22423            <th class="th_details" colspan="6">Details</th>
22424          </tr>
22425          <tr class="entry_cont">
22426            <td class="entry_details" colspan="6">
22427              <p>This is a subset of <a href="#static_android.request.availableRequestKeys">android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys</a> which contains a list
22428of keys that can be overridden using
22429<a href="https://developer.android.com/reference/android/hardware/camera2/CaptureRequest.Builder.html#setPhysicalCameraKey">Builder#setPhysicalCameraKey</a>.<wbr/>
22430The respective value of such request key can be obtained by calling
22431<a href="https://developer.android.com/reference/android/hardware/camera2/CaptureRequest.Builder.html#getPhysicalCameraKey">Builder#getPhysicalCameraKey</a>.<wbr/>
22432Capture requests that contain individual physical device requests must be built via
22433<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureRequest(int,">Set)</a>.<wbr/></p>
22434            </td>
22435          </tr>
22436
22437          <tr class="entries_header">
22438            <th class="th_details" colspan="6">HAL Implementation Details</th>
22439          </tr>
22440          <tr class="entry_cont">
22441            <td class="entry_details" colspan="6">
22442              <p>Vendor tags can be listed here.<wbr/> Vendor tag metadata should also
22443use the extensions C api (refer to
22444android.<wbr/>hardware.<wbr/>camera.<wbr/>device.<wbr/>V3_<wbr/>4.<wbr/>Capture<wbr/>Request.<wbr/>physical<wbr/>Camera<wbr/>Settings for more
22445details).<wbr/></p>
22446<p>Setting/<wbr/>getting vendor tags will be checked against the metadata
22447vendor extensions API and not against this field.<wbr/></p>
22448<p>The HAL must not consume any request tags in the session parameters that
22449are not listed either here or in the vendor tag list.<wbr/></p>
22450<p>There should be no overlap between this set of keys and the available session keys
22451<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableSessionKeys">CameraCharacteristics#getAvailableSessionKeys</a> along
22452with any other controls that can have impact on the dual-camera sync.<wbr/></p>
22453<p>The public camera2 API will always make the vendor tags visible
22454via
22455<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailablePhysicalCameraRequestKeys">CameraCharacteristics#getAvailablePhysicalCameraRequestKeys</a>.<wbr/></p>
22456            </td>
22457          </tr>
22458
22459          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22460           <!-- end of entry -->
22461
22462
22463          <tr class="entry" id="static_android.request.characteristicKeysNeedingPermission">
22464            <td class="entry_name
22465             " rowspan="5">
22466              android.<wbr/>request.<wbr/>characteristic<wbr/>Keys<wbr/>Needing<wbr/>Permission
22467            </td>
22468            <td class="entry_type">
22469                <span class="entry_type_name">int32</span>
22470                <span class="entry_type_container">x</span>
22471
22472                <span class="entry_type_array">
22473                  n
22474                </span>
22475              <span class="entry_type_visibility"> [hidden]</span>
22476
22477
22478              <span class="entry_type_hwlevel">[legacy] </span>
22479
22480
22481
22482
22483            </td> <!-- entry_type -->
22484
22485            <td class="entry_description">
22486              <p>A list of camera characteristics keys that are only available
22487in case the camera client has camera permission.<wbr/></p>
22488            </td>
22489
22490            <td class="entry_units">
22491            </td>
22492
22493            <td class="entry_range">
22494            </td>
22495
22496            <td class="entry_hal_version">
22497              <p>3.<wbr/>4</p>
22498            </td>
22499
22500            <td class="entry_tags">
22501            </td>
22502
22503          </tr>
22504          <tr class="entries_header">
22505            <th class="th_details" colspan="6">Details</th>
22506          </tr>
22507          <tr class="entry_cont">
22508            <td class="entry_details" colspan="6">
22509              <p>The entry contains a subset of
22510<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getKeys">CameraCharacteristics#getKeys</a> that require camera clients
22511to acquire the <a href="https://developer.android.com/reference/android/Manifest/permission.html#CAMERA">permission#CAMERA</a> permission before calling
22512<a href="https://developer.android.com/reference/android/hardware/camera2/CameraManager.html#getCameraCharacteristics">CameraManager#getCameraCharacteristics</a>.<wbr/> If the
22513permission is not held by the camera client,<wbr/> then the values of the respective properties
22514will not be present in <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html">CameraCharacteristics</a>.<wbr/></p>
22515            </td>
22516          </tr>
22517
22518          <tr class="entries_header">
22519            <th class="th_details" colspan="6">HAL Implementation Details</th>
22520          </tr>
22521          <tr class="entry_cont">
22522            <td class="entry_details" colspan="6">
22523              <p>Do not set this property directly,<wbr/> camera service will overwrite any previous values.<wbr/></p>
22524            </td>
22525          </tr>
22526
22527          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22528           <!-- end of entry -->
22529
22530
22531          <tr class="entry" id="static_android.request.availableDynamicRangeProfiles">
22532            <td class="entry_name
22533             " rowspan="3">
22534              android.<wbr/>request.<wbr/>available<wbr/>Dynamic<wbr/>Range<wbr/>Profiles
22535            </td>
22536            <td class="entry_type">
22537                <span class="entry_type_name">int32</span>
22538
22539              <span class="entry_type_visibility"> [java_public as dynamicRangeProfiles]</span>
22540
22541              <span class="entry_type_synthetic">[synthetic] </span>
22542
22543
22544
22545
22546
22547            </td> <!-- entry_type -->
22548
22549            <td class="entry_description">
22550              <p>Devices supporting the 10-bit output capability
22551<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#REQUEST_AVAILABLE_CAPABILITIES_DYNAMIC_RANGE_TEN_BIT">Camera<wbr/>Characteristics#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>DYNAMIC_<wbr/>RANGE_<wbr/>TEN_<wbr/>BIT</a>
22552must list their supported dynamic range profiles along with capture request
22553constraints for specific profile combinations.<wbr/></p>
22554            </td>
22555
22556            <td class="entry_units">
22557            </td>
22558
22559            <td class="entry_range">
22560            </td>
22561
22562            <td class="entry_hal_version">
22563              <p>3.<wbr/>2</p>
22564            </td>
22565
22566            <td class="entry_tags">
22567            </td>
22568
22569          </tr>
22570          <tr class="entries_header">
22571            <th class="th_details" colspan="6">Details</th>
22572          </tr>
22573          <tr class="entry_cont">
22574            <td class="entry_details" colspan="6">
22575              <p>Camera clients can retrieve the list of supported 10-bit dynamic range profiles by calling
22576<a href="https://developer.android.com/reference/android/hardware/camera2/params/DynamicRangeProfiles.html#getSupportedProfiles">DynamicRangeProfiles#getSupportedProfiles</a>.<wbr/>
22577Any of them can be configured by setting OutputConfiguration dynamic range profile in
22578<a href="https://developer.android.com/reference/android/hardware/camera2/params/OutputConfiguration.html#setDynamicRangeProfile">OutputConfiguration#setDynamicRangeProfile</a>.<wbr/>
22579Clients can also check if there are any constraints that limit the combination
22580of supported profiles that can be referenced within a single capture request by calling
22581<a href="https://developer.android.com/reference/android/hardware/camera2/params/DynamicRangeProfiles.html#getProfileCaptureRequestConstraints">DynamicRangeProfiles#getProfileCaptureRequestConstraints</a>.<wbr/></p>
22582            </td>
22583          </tr>
22584
22585
22586          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22587           <!-- end of entry -->
22588
22589
22590          <tr class="entry" id="static_android.request.availableDynamicRangeProfilesMap">
22591            <td class="entry_name
22592             " rowspan="5">
22593              android.<wbr/>request.<wbr/>available<wbr/>Dynamic<wbr/>Range<wbr/>Profiles<wbr/>Map
22594            </td>
22595            <td class="entry_type">
22596                <span class="entry_type_name entry_type_name_enum">int64</span>
22597                <span class="entry_type_container">x</span>
22598
22599                <span class="entry_type_array">
22600                  n x 3
22601                </span>
22602              <span class="entry_type_visibility"> [ndk_public]</span>
22603
22604
22605
22606
22607
22608                <ul class="entry_type_enum">
22609                  <li>
22610                    <span class="entry_type_enum_name">STANDARD (v3.8)</span>
22611                    <span class="entry_type_enum_value">0x1</span>
22612                    <span class="entry_type_enum_notes"><p>8-bit SDR profile which is the default for all non 10-bit output capable devices.<wbr/></p></span>
22613                  </li>
22614                  <li>
22615                    <span class="entry_type_enum_name">HLG10 (v3.8)</span>
22616                    <span class="entry_type_enum_value">0x2</span>
22617                    <span class="entry_type_enum_notes"><p>10-bit pixel samples encoded using the Hybrid log-gamma transfer function.<wbr/></p></span>
22618                  </li>
22619                  <li>
22620                    <span class="entry_type_enum_name">HDR10 (v3.8)</span>
22621                    <span class="entry_type_enum_value">0x4</span>
22622                    <span class="entry_type_enum_notes"><p>10-bit pixel samples encoded using the SMPTE ST 2084 transfer function.<wbr/>
22623This profile utilizes internal static metadata to increase the quality
22624of the capture.<wbr/></p></span>
22625                  </li>
22626                  <li>
22627                    <span class="entry_type_enum_name">HDR10_PLUS (v3.8)</span>
22628                    <span class="entry_type_enum_value">0x8</span>
22629                    <span class="entry_type_enum_notes"><p>10-bit pixel samples encoded using the SMPTE ST 2084 transfer function.<wbr/>
22630In contrast to HDR10,<wbr/> this profile uses internal per-frame metadata
22631to further enhance the quality of the capture.<wbr/></p></span>
22632                  </li>
22633                  <li>
22634                    <span class="entry_type_enum_name">DOLBY_VISION_10B_HDR_REF (v3.8)</span>
22635                    <span class="entry_type_enum_value">0x10</span>
22636                    <span class="entry_type_enum_notes"><p>This is a camera mode for Dolby Vision capture optimized for a more scene
22637accurate capture.<wbr/> This would typically differ from what a specific device
22638might want to tune for a consumer optimized Dolby Vision general capture.<wbr/></p></span>
22639                  </li>
22640                  <li>
22641                    <span class="entry_type_enum_name">DOLBY_VISION_10B_HDR_REF_PO (v3.8)</span>
22642                    <span class="entry_type_enum_value">0x20</span>
22643                    <span class="entry_type_enum_notes"><p>This is the power optimized mode for 10-bit Dolby Vision HDR Reference Mode.<wbr/></p></span>
22644                  </li>
22645                  <li>
22646                    <span class="entry_type_enum_name">DOLBY_VISION_10B_HDR_OEM (v3.8)</span>
22647                    <span class="entry_type_enum_value">0x40</span>
22648                    <span class="entry_type_enum_notes"><p>This is the camera mode for the default Dolby Vision capture mode for the
22649specific device.<wbr/> This would be tuned by each specific device for consumer
22650pleasing results that resonate with their particular audience.<wbr/> We expect
22651that each specific device would have a different look for their default
22652Dolby Vision capture.<wbr/></p></span>
22653                  </li>
22654                  <li>
22655                    <span class="entry_type_enum_name">DOLBY_VISION_10B_HDR_OEM_PO (v3.8)</span>
22656                    <span class="entry_type_enum_value">0x80</span>
22657                    <span class="entry_type_enum_notes"><p>This is the power optimized mode for 10-bit Dolby Vision HDR device specific
22658capture Mode.<wbr/></p></span>
22659                  </li>
22660                  <li>
22661                    <span class="entry_type_enum_name">DOLBY_VISION_8B_HDR_REF (v3.8)</span>
22662                    <span class="entry_type_enum_value">0x100</span>
22663                    <span class="entry_type_enum_notes"><p>This is the 8-bit version of the Dolby Vision reference capture mode optimized
22664for scene accuracy.<wbr/></p></span>
22665                  </li>
22666                  <li>
22667                    <span class="entry_type_enum_name">DOLBY_VISION_8B_HDR_REF_PO (v3.8)</span>
22668                    <span class="entry_type_enum_value">0x200</span>
22669                    <span class="entry_type_enum_notes"><p>This is the power optimized mode for 8-bit Dolby Vision HDR Reference Mode.<wbr/></p></span>
22670                  </li>
22671                  <li>
22672                    <span class="entry_type_enum_name">DOLBY_VISION_8B_HDR_OEM (v3.8)</span>
22673                    <span class="entry_type_enum_value">0x400</span>
22674                    <span class="entry_type_enum_notes"><p>This is the 8-bit version of device specific tuned and optimized Dolby Vision
22675capture mode.<wbr/></p></span>
22676                  </li>
22677                  <li>
22678                    <span class="entry_type_enum_name">DOLBY_VISION_8B_HDR_OEM_PO (v3.8)</span>
22679                    <span class="entry_type_enum_value">0x800</span>
22680                    <span class="entry_type_enum_notes"><p>This is the power optimized mode for 8-bit Dolby Vision HDR device specific
22681capture Mode.<wbr/></p></span>
22682                  </li>
22683                  <li>
22684                    <span class="entry_type_enum_name">MAX (v3.8)</span>
22685                    <span class="entry_type_enum_value">0x1000</span>
22686                    <span class="entry_type_enum_notes"></span>
22687                  </li>
22688                </ul>
22689
22690            </td> <!-- entry_type -->
22691
22692            <td class="entry_description">
22693              <p>A map of all available 10-bit dynamic range profiles along with their
22694capture request constraints.<wbr/></p>
22695            </td>
22696
22697            <td class="entry_units">
22698            </td>
22699
22700            <td class="entry_range">
22701            </td>
22702
22703            <td class="entry_hal_version">
22704              <p>3.<wbr/>8</p>
22705            </td>
22706
22707            <td class="entry_tags">
22708            </td>
22709
22710          </tr>
22711          <tr class="entries_header">
22712            <th class="th_details" colspan="6">Details</th>
22713          </tr>
22714          <tr class="entry_cont">
22715            <td class="entry_details" colspan="6">
22716              <p>Devices supporting the 10-bit output capability
22717<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#REQUEST_AVAILABLE_CAPABILITIES_DYNAMIC_RANGE_TEN_BIT">Camera<wbr/>Characteristics#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>DYNAMIC_<wbr/>RANGE_<wbr/>TEN_<wbr/>BIT</a>
22718must list their supported dynamic range profiles.<wbr/> In case the camera is not able to
22719support every possible profile combination within a single capture request,<wbr/> then the
22720constraints must be listed here as well.<wbr/></p>
22721            </td>
22722          </tr>
22723
22724          <tr class="entries_header">
22725            <th class="th_details" colspan="6">HAL Implementation Details</th>
22726          </tr>
22727          <tr class="entry_cont">
22728            <td class="entry_details" colspan="6">
22729              <p>The array contains three entries per supported profile:
227301) The supported dynamic profile value.<wbr/> Do note that
22731ANDROID_<wbr/>REQUEST_<wbr/>AVAILABLE_<wbr/>DYNAMIC_<wbr/>RANGE_<wbr/>PROFILES_<wbr/>STANDARD is assumed to be always
22732present and must not be listed.<wbr/>
227332) A bitmap combination of all supported profiles that can be referenced at the same
22734time within a single capture request.<wbr/> Do note that a value of 0 means that there are
22735no constraints and all combinations are supported.<wbr/>
227363) A flag indicating the presence of an internal lookahead functionality that
22737can increase the streaming latency by more than 3 buffers.<wbr/> The value 0 will indicate
22738that latency doesn't exceed 3 buffers,<wbr/> everything different than 0 will indicate
22739latency that is beyond 3 buffers.<wbr/> In case the flag is set,<wbr/> then Camera clients will be
22740advised to avoid configuring this profile for camera latency sensitive outputs such as
22741preview.<wbr/> Do note,<wbr/> that such extra latency must not be present for the HLG10 profile.<wbr/></p>
22742<p>For example if we assume that a device exists that can only support HLG10,<wbr/> HDR10 and
22743HDR10_<wbr/>PLUS from the possible 10-bit profiles with the following capture constraints:
227441) HLG10 can be included in any capture request without constraints.<wbr/>
227452) HDR10 and HDR10_<wbr/>PLUS can only be referenced together and/<wbr/>or with HLG10 but not with
22746STANDARD.<wbr/>
22747In the same example,<wbr/> HLG10 and HDR10 will not have additional lookahead latency,<wbr/> and
22748HDR10+ will have latency that exceeds 3 buffers.<wbr/>
22749The resulting array should look like this:
22750[ANDROID_<wbr/>REQUEST_<wbr/>AVAILABLE_<wbr/>DYNAMIC_<wbr/>RANGE_<wbr/>PROFILES_<wbr/>HLG10,<wbr/> 0,<wbr/> 0,<wbr/>
22751ANDROID_<wbr/>REQUEST_<wbr/>AVAILABLE_<wbr/>DYNAMIC_<wbr/>RANGE_<wbr/>PROFILES_<wbr/>HDR10,<wbr/>
22752(ANDROID_<wbr/>REQUEST_<wbr/>AVAILABLE_<wbr/>DYNAMIC_<wbr/>RANGE_<wbr/>PROFILES_<wbr/>HDR10 |<wbr/>
22753ANDROID_<wbr/>REQUEST_<wbr/>AVAILABLE_<wbr/>DYNAMIC_<wbr/>RANGE_<wbr/>PROFILES_<wbr/>HLG10 |<wbr/>
22754 ANDROID_<wbr/>REQUEST_<wbr/>AVAILABLE_<wbr/>DYNAMIC_<wbr/>RANGE_<wbr/>PROFILES_<wbr/>HDR10_<wbr/>PLUS),<wbr/> 0,<wbr/>
22755ANDROID_<wbr/>REQUEST_<wbr/>AVAILABLE_<wbr/>DYNAMIC_<wbr/>RANGE_<wbr/>PROFILES_<wbr/>HDR10_<wbr/>PLUS,<wbr/>
22756(ANDROID_<wbr/>REQUEST_<wbr/>AVAILABLE_<wbr/>DYNAMIC_<wbr/>RANGE_<wbr/>PROFILES_<wbr/>HDR10_<wbr/>PLUS |<wbr/>
22757ANDROID_<wbr/>REQUEST_<wbr/>AVAILABLE_<wbr/>DYNAMIC_<wbr/>RANGE_<wbr/>PROFILES_<wbr/>HLG10 |<wbr/>
22758 ANDROID_<wbr/>REQUEST_<wbr/>AVAILABLE_<wbr/>DYNAMIC_<wbr/>RANGE_<wbr/>PROFILES_<wbr/>HDR10),<wbr/> 1]</p>
22759<p>Camera providers must ensure that each processed buffer from a stream configured with the
22760HDR10 dynamic range profile includes SMPTE ST 2086 static metadata by calling
22761'android::hardware::graphics::mapper::V4_<wbr/>0::IMapper::set' before returning the buffer.<wbr/></p>
22762<p>Camera providers must ensure that each processed buffer from a stream configured
22763with HDR10_<wbr/>PLUS dynamic range profile includes SMPTE ST 2094-40 dynamic
22764metadata by calling 'android::hardware::graphics::mapper::V4_<wbr/>0::IMapper::set' before
22765returning the buffer.<wbr/></p>
22766<p>Camera providers must ensure that each processed buffer from a stream configured
22767with any of the 10-bit Dolby Vision dynamic range profiles includes SMPTE ST 2094-10
22768dynamic metadata by calling 'android::hardware::graphics::mapper::V4_<wbr/>0::IMapper::set'
22769before returning the buffer.<wbr/></p>
22770            </td>
22771          </tr>
22772
22773          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22774           <!-- end of entry -->
22775
22776
22777          <tr class="entry" id="static_android.request.recommendedTenBitDynamicRangeProfile">
22778            <td class="entry_name
22779             " rowspan="3">
22780              android.<wbr/>request.<wbr/>recommended<wbr/>Ten<wbr/>Bit<wbr/>Dynamic<wbr/>Range<wbr/>Profile
22781            </td>
22782            <td class="entry_type">
22783                <span class="entry_type_name">int64</span>
22784
22785              <span class="entry_type_visibility"> [java_public]</span>
22786
22787
22788
22789
22790
22791
22792            </td> <!-- entry_type -->
22793
22794            <td class="entry_description">
22795              <p>Recommended 10-bit dynamic range profile.<wbr/></p>
22796            </td>
22797
22798            <td class="entry_units">
22799            </td>
22800
22801            <td class="entry_range">
22802            </td>
22803
22804            <td class="entry_hal_version">
22805              <p>3.<wbr/>8</p>
22806            </td>
22807
22808            <td class="entry_tags">
22809            </td>
22810
22811          </tr>
22812          <tr class="entries_header">
22813            <th class="th_details" colspan="6">Details</th>
22814          </tr>
22815          <tr class="entry_cont">
22816            <td class="entry_details" colspan="6">
22817              <p>Devices supporting the 10-bit output capability
22818<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#REQUEST_AVAILABLE_CAPABILITIES_DYNAMIC_RANGE_TEN_BIT">Camera<wbr/>Characteristics#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>DYNAMIC_<wbr/>RANGE_<wbr/>TEN_<wbr/>BIT</a>
22819must list a 10-bit supported dynamic range profile that is expected to perform
22820optimally in terms of image quality,<wbr/> power and performance.<wbr/>
22821The value advertised can be used as a hint by camera clients when configuring the dynamic
22822range profile when calling
22823<a href="https://developer.android.com/reference/android/hardware/camera2/params/OutputConfiguration.html#setDynamicRangeProfile">OutputConfiguration#setDynamicRangeProfile</a>.<wbr/></p>
22824            </td>
22825          </tr>
22826
22827
22828          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22829           <!-- end of entry -->
22830
22831
22832          <tr class="entry" id="static_android.request.availableColorSpaceProfiles">
22833            <td class="entry_name
22834             " rowspan="3">
22835              android.<wbr/>request.<wbr/>available<wbr/>Color<wbr/>Space<wbr/>Profiles
22836            </td>
22837            <td class="entry_type">
22838                <span class="entry_type_name">int32</span>
22839
22840              <span class="entry_type_visibility"> [java_public as colorSpaceProfiles]</span>
22841
22842              <span class="entry_type_synthetic">[synthetic] </span>
22843
22844
22845
22846
22847
22848            </td> <!-- entry_type -->
22849
22850            <td class="entry_description">
22851              <p>An interface for querying the color space profiles supported by a camera device.<wbr/></p>
22852            </td>
22853
22854            <td class="entry_units">
22855            </td>
22856
22857            <td class="entry_range">
22858            </td>
22859
22860            <td class="entry_hal_version">
22861              <p>3.<wbr/>9</p>
22862            </td>
22863
22864            <td class="entry_tags">
22865            </td>
22866
22867          </tr>
22868          <tr class="entries_header">
22869            <th class="th_details" colspan="6">Details</th>
22870          </tr>
22871          <tr class="entry_cont">
22872            <td class="entry_details" colspan="6">
22873              <p>A color space profile is a combination of a color space,<wbr/> an image format,<wbr/> and a dynamic
22874range profile.<wbr/> Camera clients can retrieve the list of supported color spaces by calling
22875<a href="https://developer.android.com/reference/android/hardware/camera2/params/ColorSpaceProfiles.html#getSupportedColorSpaces">ColorSpaceProfiles#getSupportedColorSpaces</a> or
22876<a href="https://developer.android.com/reference/android/hardware/camera2/params/ColorSpaceProfiles.html#getSupportedColorSpacesForDynamicRange">ColorSpaceProfiles#getSupportedColorSpacesForDynamicRange</a>.<wbr/>
22877If a camera does not support the
22878<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#REQUEST_AVAILABLE_CAPABILITIES_DYNAMIC_RANGE_TEN_BIT">Camera<wbr/>Characteristics#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>DYNAMIC_<wbr/>RANGE_<wbr/>TEN_<wbr/>BIT</a>
22879capability,<wbr/> the dynamic range profile will always be
22880<a href="https://developer.android.com/reference/android/hardware/camera2/params/DynamicRangeProfiles.html#STANDARD">DynamicRangeProfiles#STANDARD</a>.<wbr/> Color space
22881capabilities are queried in combination with an <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html">ImageFormat</a>.<wbr/>
22882If a camera client wants to know the general color space capabilities of a camera device
22883regardless of image format,<wbr/> it can specify <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#UNKNOWN">ImageFormat#UNKNOWN</a>.<wbr/>
22884The color space for a session can be configured by setting the SessionConfiguration
22885color space via <a href="https://developer.android.com/reference/android/hardware/camera2/params/SessionConfiguration.html#setColorSpace">SessionConfiguration#setColorSpace</a>.<wbr/></p>
22886            </td>
22887          </tr>
22888
22889
22890          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22891           <!-- end of entry -->
22892
22893
22894          <tr class="entry" id="static_android.request.availableColorSpaceProfilesMap">
22895            <td class="entry_name
22896             " rowspan="5">
22897              android.<wbr/>request.<wbr/>available<wbr/>Color<wbr/>Space<wbr/>Profiles<wbr/>Map
22898            </td>
22899            <td class="entry_type">
22900                <span class="entry_type_name entry_type_name_enum">int64</span>
22901                <span class="entry_type_container">x</span>
22902
22903                <span class="entry_type_array">
22904                  n x 3
22905                </span>
22906              <span class="entry_type_visibility"> [ndk_public]</span>
22907
22908
22909
22910
22911
22912                <ul class="entry_type_enum">
22913                  <li>
22914                    <span class="entry_type_enum_name">UNSPECIFIED (v3.9)</span>
22915                    <span class="entry_type_enum_value">-1</span>
22916                    <span class="entry_type_enum_notes"><p>Default value,<wbr/> when not explicitly specified.<wbr/> The Camera device will choose the color
22917space to employ.<wbr/></p></span>
22918                  </li>
22919                  <li>
22920                    <span class="entry_type_enum_name">SRGB (v3.9)</span>
22921                    <span class="entry_type_enum_hidden">[system]</span>
22922                    <span class="entry_type_enum_value">0</span>
22923                    <span class="entry_type_enum_notes"><p>RGB color space sRGB standardized as IEC 61966-2.<wbr/>1:1999.<wbr/></p></span>
22924                  </li>
22925                  <li>
22926                    <span class="entry_type_enum_name">DISPLAY_P3 (v3.9)</span>
22927                    <span class="entry_type_enum_hidden">[system]</span>
22928                    <span class="entry_type_enum_value">7</span>
22929                    <span class="entry_type_enum_notes"><p>RGB color space Display P3 based on SMPTE RP 431-2-2007 and IEC 61966-2.<wbr/>1:1999.<wbr/></p></span>
22930                  </li>
22931                  <li>
22932                    <span class="entry_type_enum_name">BT2020_HLG (v3.9)</span>
22933                    <span class="entry_type_enum_hidden">[system]</span>
22934                    <span class="entry_type_enum_value">16</span>
22935                    <span class="entry_type_enum_notes"><p>RGB color space BT.<wbr/>2100 standardized as Hybrid Log Gamma encoding.<wbr/></p></span>
22936                  </li>
22937                </ul>
22938
22939            </td> <!-- entry_type -->
22940
22941            <td class="entry_description">
22942              <p>A list of all possible color space profiles supported by a camera device.<wbr/></p>
22943            </td>
22944
22945            <td class="entry_units">
22946            </td>
22947
22948            <td class="entry_range">
22949            </td>
22950
22951            <td class="entry_hal_version">
22952              <p>3.<wbr/>9</p>
22953            </td>
22954
22955            <td class="entry_tags">
22956            </td>
22957
22958          </tr>
22959          <tr class="entries_header">
22960            <th class="th_details" colspan="6">Details</th>
22961          </tr>
22962          <tr class="entry_cont">
22963            <td class="entry_details" colspan="6">
22964              <p>A color space profile is a combination of a color space,<wbr/> an image format,<wbr/> and a dynamic range
22965profile.<wbr/> If a camera does not support the
22966<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#REQUEST_AVAILABLE_CAPABILITIES_DYNAMIC_RANGE_TEN_BIT">Camera<wbr/>Characteristics#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>DYNAMIC_<wbr/>RANGE_<wbr/>TEN_<wbr/>BIT</a>
22967capability,<wbr/> the dynamic range profile will always be
22968<a href="https://developer.android.com/reference/android/hardware/camera2/params/DynamicRangeProfiles.html#STANDARD">DynamicRangeProfiles#STANDARD</a>.<wbr/> Camera clients can
22969use <a href="https://developer.android.com/reference/android/hardware/camera2/params/SessionConfiguration.html#setColorSpace">SessionConfiguration#setColorSpace</a> to select
22970a color space.<wbr/></p>
22971            </td>
22972          </tr>
22973
22974          <tr class="entries_header">
22975            <th class="th_details" colspan="6">HAL Implementation Details</th>
22976          </tr>
22977          <tr class="entry_cont">
22978            <td class="entry_details" colspan="6">
22979              <p>The array contains three entries per supported profile:</p>
22980<p>1) The supported color space.<wbr/>
229812) An image format which can be used with this color space.<wbr/>
229823) A bitmap of all compatible dynamic range profiles,<wbr/> if the device is HDR-capable.<wbr/></p>
22983<p>The possible values for #1 are the positive values of the
22984ANDROID_<wbr/>REQUEST_<wbr/>AVAILABLE_<wbr/>COLOR_<wbr/>SPACE_<wbr/>PROFILES_<wbr/>MAP_<wbr/><em> enum,<wbr/> which is equivalent to
22985<a href="https://developer.android.com/reference/android/graphics/ColorSpace/Named.html">Named</a> and its ordinals.<wbr/> UNSPECIFIED should not be
22986used here.<wbr/> It should be noted that not all <a href="https://developer.android.com/reference/android/graphics/ColorSpace/Named.html">Named</a>
22987values are supported,<wbr/> only those in the
22988ANDROID_<wbr/>REQUEST_<wbr/>AVAILABLE_<wbr/>COLOR_<wbr/>SPACE_<wbr/>PROFILES_<wbr/>MAP_<wbr/></em> enum.<wbr/></p>
22989<p>The possible values for #2 consist of the public-facing image/<wbr/>pixel formats,<wbr/> found at
22990<a href="https://developer.android.com/reference/android/graphics/ImageFormat.html">ImageFormat</a> and <a href="https://developer.android.com/reference/android/graphics/PixelFormat.html">PixelFormat</a>.<wbr/> Each map
22991to a HAL pixel format except for <a href="https://developer.android.com/reference/android/graphics/ImageFormat/JPEG.html">JPEG</a>,<wbr/>
22992<a href="https://developer.android.com/reference/android/graphics/ImageFormat/HEIC.html">HEIC</a>,<wbr/> and
22993<a href="https://developer.android.com/reference/android/graphics/ImageFormat/DEPTH_JPEG.html">DEPTH_<wbr/>JPEG</a>.<wbr/> Depth formats besides DEPTH_<wbr/>JPEG are
22994not applicable and should not be specified.<wbr/> If there are no constraints on the type of
22995image format a color space is compatible with,<wbr/> this can be
22996<a href="https://developer.android.com/reference/android/graphics/ImageFormat/UNKNOWN.html">UNKNOWN</a>.<wbr/></p>
22997<p>If the device is not HDR-capable,<wbr/> #3 should always be
22998ANDROID_<wbr/>REQUEST_<wbr/>AVAILABLE_<wbr/>DYNAMIC_<wbr/>RANGE_<wbr/>PROFILES_<wbr/>STANDARD.<wbr/> Otherwise,<wbr/> #3 should be a
22999bitmap of the compatible ANDROID_<wbr/>REQUEST_<wbr/>AVAILABLE_<wbr/>DYNAMIC_<wbr/>RANGE_<wbr/>PROFILES_<wbr/>* values.<wbr/></p>
23000            </td>
23001          </tr>
23002
23003          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23004           <!-- end of entry -->
23005
23006
23007
23008      <!-- end of kind -->
23009      </tbody>
23010      <tr><td colspan="7" class="kind">dynamic</td></tr>
23011
23012      <thead class="entries_header">
23013        <tr>
23014          <th class="th_name">Property Name</th>
23015          <th class="th_type">Type</th>
23016          <th class="th_description">Description</th>
23017          <th class="th_units">Units</th>
23018          <th class="th_range">Range</th>
23019          <th class="th_hal_version">Initial HIDL HAL version</th>
23020          <th class="th_tags">Tags</th>
23021        </tr>
23022      </thead>
23023
23024      <tbody>
23025
23026
23027
23028
23029
23030
23031
23032
23033
23034
23035          <tr class="entry" id="dynamic_android.request.frameCount">
23036            <td class="entry_name
23037                entry_name_deprecated
23038             " rowspan="3">
23039              android.<wbr/>request.<wbr/>frame<wbr/>Count
23040            </td>
23041            <td class="entry_type">
23042                <span class="entry_type_name">int32</span>
23043
23044              <span class="entry_type_visibility"> [hidden]</span>
23045
23046
23047
23048              <span class="entry_type_deprecated">[deprecated] </span>
23049
23050
23051
23052            </td> <!-- entry_type -->
23053
23054            <td class="entry_description">
23055              <p>A frame counter set by the framework.<wbr/> This value monotonically
23056increases with every new result (that is,<wbr/> each new result has a unique
23057frameCount value).<wbr/></p>
23058            </td>
23059
23060            <td class="entry_units">
23061              count of frames
23062            </td>
23063
23064            <td class="entry_range">
23065              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
23066              <p>&gt; 0</p>
23067            </td>
23068
23069            <td class="entry_hal_version">
23070              <p>3.<wbr/>2</p>
23071            </td>
23072
23073            <td class="entry_tags">
23074            </td>
23075
23076          </tr>
23077          <tr class="entries_header">
23078            <th class="th_details" colspan="6">Details</th>
23079          </tr>
23080          <tr class="entry_cont">
23081            <td class="entry_details" colspan="6">
23082              <p>Reset on release()</p>
23083            </td>
23084          </tr>
23085
23086
23087          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23088           <!-- end of entry -->
23089
23090
23091          <tr class="entry" id="dynamic_android.request.id">
23092            <td class="entry_name
23093             " rowspan="1">
23094              android.<wbr/>request.<wbr/>id
23095            </td>
23096            <td class="entry_type">
23097                <span class="entry_type_name">int32</span>
23098
23099              <span class="entry_type_visibility"> [hidden]</span>
23100
23101
23102
23103
23104
23105
23106            </td> <!-- entry_type -->
23107
23108            <td class="entry_description">
23109              <p>An application-specified ID for the current
23110request.<wbr/> Must be maintained unchanged in output
23111frame</p>
23112            </td>
23113
23114            <td class="entry_units">
23115              arbitrary integer assigned by application
23116            </td>
23117
23118            <td class="entry_range">
23119              <p>Any int</p>
23120            </td>
23121
23122            <td class="entry_hal_version">
23123              <p>3.<wbr/>2</p>
23124            </td>
23125
23126            <td class="entry_tags">
23127              <ul class="entry_tags">
23128                  <li><a href="#tag_V1">V1</a></li>
23129              </ul>
23130            </td>
23131
23132          </tr>
23133
23134
23135          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23136           <!-- end of entry -->
23137
23138
23139          <tr class="entry" id="dynamic_android.request.metadataMode">
23140            <td class="entry_name
23141             " rowspan="1">
23142              android.<wbr/>request.<wbr/>metadata<wbr/>Mode
23143            </td>
23144            <td class="entry_type">
23145                <span class="entry_type_name entry_type_name_enum">byte</span>
23146
23147              <span class="entry_type_visibility"> [system]</span>
23148
23149
23150
23151
23152
23153                <ul class="entry_type_enum">
23154                  <li>
23155                    <span class="entry_type_enum_name">NONE (v3.2)</span>
23156                    <span class="entry_type_enum_notes"><p>No metadata should be produced on output,<wbr/> except
23157for application-bound buffer data.<wbr/> If no
23158application-bound streams exist,<wbr/> no frame should be
23159placed in the output frame queue.<wbr/> If such streams
23160exist,<wbr/> a frame should be placed on the output queue
23161with null metadata but with the necessary output buffer
23162information.<wbr/> Timestamp information should still be
23163included with any output stream buffers</p></span>
23164                  </li>
23165                  <li>
23166                    <span class="entry_type_enum_name">FULL (v3.2)</span>
23167                    <span class="entry_type_enum_notes"><p>All metadata should be produced.<wbr/> Statistics will
23168only be produced if they are separately
23169enabled</p></span>
23170                  </li>
23171                </ul>
23172
23173            </td> <!-- entry_type -->
23174
23175            <td class="entry_description">
23176              <p>How much metadata to produce on
23177output</p>
23178            </td>
23179
23180            <td class="entry_units">
23181            </td>
23182
23183            <td class="entry_range">
23184            </td>
23185
23186            <td class="entry_hal_version">
23187              <p>3.<wbr/>2</p>
23188            </td>
23189
23190            <td class="entry_tags">
23191              <ul class="entry_tags">
23192                  <li><a href="#tag_FUTURE">FUTURE</a></li>
23193              </ul>
23194            </td>
23195
23196          </tr>
23197
23198
23199          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23200           <!-- end of entry -->
23201
23202
23203          <tr class="entry" id="dynamic_android.request.outputStreams">
23204            <td class="entry_name
23205                entry_name_deprecated
23206             " rowspan="3">
23207              android.<wbr/>request.<wbr/>output<wbr/>Streams
23208            </td>
23209            <td class="entry_type">
23210                <span class="entry_type_name">int32</span>
23211                <span class="entry_type_container">x</span>
23212
23213                <span class="entry_type_array">
23214                  n
23215                </span>
23216              <span class="entry_type_visibility"> [system]</span>
23217
23218
23219
23220              <span class="entry_type_deprecated">[deprecated] </span>
23221
23222
23223
23224            </td> <!-- entry_type -->
23225
23226            <td class="entry_description">
23227              <p>Lists which camera output streams image data
23228from this capture must be sent to</p>
23229            </td>
23230
23231            <td class="entry_units">
23232              List of camera stream IDs
23233            </td>
23234
23235            <td class="entry_range">
23236              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
23237              <p>List must only include streams that have been
23238created</p>
23239            </td>
23240
23241            <td class="entry_hal_version">
23242              <p>3.<wbr/>2</p>
23243            </td>
23244
23245            <td class="entry_tags">
23246              <ul class="entry_tags">
23247                  <li><a href="#tag_HAL2">HAL2</a></li>
23248              </ul>
23249            </td>
23250
23251          </tr>
23252          <tr class="entries_header">
23253            <th class="th_details" colspan="6">Details</th>
23254          </tr>
23255          <tr class="entry_cont">
23256            <td class="entry_details" colspan="6">
23257              <p>If no output streams are listed,<wbr/> then the image
23258data should simply be discarded.<wbr/> The image data must
23259still be captured for metadata and statistics production,<wbr/>
23260and the lens and flash must operate as requested.<wbr/></p>
23261            </td>
23262          </tr>
23263
23264
23265          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23266           <!-- end of entry -->
23267
23268
23269          <tr class="entry" id="dynamic_android.request.pipelineDepth">
23270            <td class="entry_name
23271             " rowspan="5">
23272              android.<wbr/>request.<wbr/>pipeline<wbr/>Depth
23273            </td>
23274            <td class="entry_type">
23275                <span class="entry_type_name">byte</span>
23276
23277              <span class="entry_type_visibility"> [public]</span>
23278
23279
23280              <span class="entry_type_hwlevel">[legacy] </span>
23281
23282
23283
23284
23285            </td> <!-- entry_type -->
23286
23287            <td class="entry_description">
23288              <p>Specifies the number of pipeline stages the frame went
23289through from when it was exposed to when the final completed result
23290was available to the framework.<wbr/></p>
23291            </td>
23292
23293            <td class="entry_units">
23294            </td>
23295
23296            <td class="entry_range">
23297              <p>&lt;= <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a></p>
23298            </td>
23299
23300            <td class="entry_hal_version">
23301              <p>3.<wbr/>2</p>
23302            </td>
23303
23304            <td class="entry_tags">
23305            </td>
23306
23307          </tr>
23308          <tr class="entries_header">
23309            <th class="th_details" colspan="6">Details</th>
23310          </tr>
23311          <tr class="entry_cont">
23312            <td class="entry_details" colspan="6">
23313              <p>Depending on what settings are used in the request,<wbr/> and
23314what streams are configured,<wbr/> the data may undergo less processing,<wbr/>
23315and some pipeline stages skipped.<wbr/></p>
23316<p>See <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a> for more details.<wbr/></p>
23317            </td>
23318          </tr>
23319
23320          <tr class="entries_header">
23321            <th class="th_details" colspan="6">HAL Implementation Details</th>
23322          </tr>
23323          <tr class="entry_cont">
23324            <td class="entry_details" colspan="6">
23325              <p>This value must always represent the accurate count of how many
23326pipeline stages were actually used.<wbr/></p>
23327            </td>
23328          </tr>
23329
23330          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23331           <!-- end of entry -->
23332
23333
23334
23335      <!-- end of kind -->
23336      </tbody>
23337
23338  <!-- end of section -->
23339  <tr><td colspan="7" id="section_scaler" class="section">scaler</td></tr>
23340
23341
23342      <tr><td colspan="7" class="kind">controls</td></tr>
23343
23344      <thead class="entries_header">
23345        <tr>
23346          <th class="th_name">Property Name</th>
23347          <th class="th_type">Type</th>
23348          <th class="th_description">Description</th>
23349          <th class="th_units">Units</th>
23350          <th class="th_range">Range</th>
23351          <th class="th_hal_version">Initial HIDL HAL version</th>
23352          <th class="th_tags">Tags</th>
23353        </tr>
23354      </thead>
23355
23356      <tbody>
23357
23358
23359
23360
23361
23362
23363
23364
23365
23366
23367          <tr class="entry" id="controls_android.scaler.cropRegion">
23368            <td class="entry_name
23369             " rowspan="5">
23370              android.<wbr/>scaler.<wbr/>crop<wbr/>Region
23371            </td>
23372            <td class="entry_type">
23373                <span class="entry_type_name">int32</span>
23374                <span class="entry_type_container">x</span>
23375
23376                <span class="entry_type_array">
23377                  4
23378                </span>
23379              <span class="entry_type_visibility"> [public as rectangle]</span>
23380
23381
23382              <span class="entry_type_hwlevel">[legacy] </span>
23383
23384
23385
23386
23387            </td> <!-- entry_type -->
23388
23389            <td class="entry_description">
23390              <p>The desired region of the sensor to read out for this capture.<wbr/></p>
23391            </td>
23392
23393            <td class="entry_units">
23394              Pixel coordinates relative to
23395          android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size or
23396          android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size depending on distortion correction
23397          capability and mode
23398            </td>
23399
23400            <td class="entry_range">
23401            </td>
23402
23403            <td class="entry_hal_version">
23404              <p>3.<wbr/>2</p>
23405            </td>
23406
23407            <td class="entry_tags">
23408              <ul class="entry_tags">
23409                  <li><a href="#tag_BC">BC</a></li>
23410              </ul>
23411            </td>
23412
23413          </tr>
23414          <tr class="entries_header">
23415            <th class="th_details" colspan="6">Details</th>
23416          </tr>
23417          <tr class="entry_cont">
23418            <td class="entry_details" colspan="6">
23419              <p>This control can be used to implement digital zoom.<wbr/></p>
23420<p>For devices not supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate
23421system always follows that of <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
23422the top-left pixel of the active array.<wbr/></p>
23423<p>For devices supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate system
23424depends on the mode being set.<wbr/>  When the distortion correction mode is OFF,<wbr/> the
23425coordinate system follows <a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>,<wbr/> with <code>(0,<wbr/>
234260)</code> being the top-left pixel of the pre-correction active array.<wbr/>  When the distortion
23427correction mode is not OFF,<wbr/> the coordinate system follows
23428<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 top-left pixel of the
23429active array.<wbr/></p>
23430<p>Output streams use this rectangle to produce their output,<wbr/> cropping to a smaller region
23431if necessary to maintain the stream's aspect ratio,<wbr/> then scaling the sensor input to
23432match the output's configured resolution.<wbr/></p>
23433<p>The crop region is usually applied after the RAW to other color space (e.<wbr/>g.<wbr/> YUV)
23434conversion.<wbr/> As a result RAW streams are not croppable unless supported by the
23435camera device.<wbr/> See <a href="#static_android.scaler.availableStreamUseCases">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Use<wbr/>Cases</a>#CROPPED_<wbr/>RAW for details.<wbr/></p>
23436<p>For non-raw streams,<wbr/> any additional per-stream cropping will be done to maximize the
23437final pixel area of the stream.<wbr/></p>
23438<p>For example,<wbr/> if the crop region is set to a 4:3 aspect ratio,<wbr/> then 4:3 streams will use
23439the exact crop region.<wbr/> 16:9 streams will further crop vertically (letterbox).<wbr/></p>
23440<p>Conversely,<wbr/> if the crop region is set to a 16:9,<wbr/> then 4:3 outputs will crop horizontally
23441(pillarbox),<wbr/> and 16:9 streams will match exactly.<wbr/> These additional crops will be
23442centered within the crop region.<wbr/></p>
23443<p>To illustrate,<wbr/> here are several scenarios of different crop regions and output streams,<wbr/>
23444for a hypothetical camera device with an active array of size <code>(2000,<wbr/>1500)</code>.<wbr/>  Note that
23445several of these examples use non-centered crop regions for ease of illustration; such
23446regions are only supported on devices with FREEFORM capability
23447(<a href="#static_android.scaler.croppingType">android.<wbr/>scaler.<wbr/>cropping<wbr/>Type</a> <code>== FREEFORM</code>),<wbr/> but this does not affect the way the crop
23448rules work otherwise.<wbr/></p>
23449<ul>
23450<li>Camera Configuration:<ul>
23451<li>Active array size: <code>2000x1500</code> (3 MP,<wbr/> 4:3 aspect ratio)</li>
23452<li>Output stream #1: <code>640x480</code> (VGA,<wbr/> 4:3 aspect ratio)</li>
23453<li>Output stream #2: <code>1280x720</code> (720p,<wbr/> 16:9 aspect ratio)</li>
23454</ul>
23455</li>
23456<li>Case #1: 4:3 crop region with 2x digital zoom<ul>
23457<li>Crop region: <code>Rect(500,<wbr/> 375,<wbr/> 1500,<wbr/> 1125) //<wbr/> (left,<wbr/> top,<wbr/> right,<wbr/> bottom)</code></li>
23458<li><img alt="4:3 aspect ratio crop diagram" src="images/camera2/metadata/android.scaler.cropRegion/crop-region-43-ratio.png"/></li>
23459<li><code>640x480</code> stream source area: <code>(500,<wbr/> 375,<wbr/> 1500,<wbr/> 1125)</code> (equal to crop region)</li>
23460<li><code>1280x720</code> stream source area: <code>(500,<wbr/> 469,<wbr/> 1500,<wbr/> 1031)</code> (letterboxed)</li>
23461</ul>
23462</li>
23463<li>Case #2: 16:9 crop region with ~1.<wbr/>5x digital zoom.<wbr/><ul>
23464<li>Crop region: <code>Rect(500,<wbr/> 375,<wbr/> 1833,<wbr/> 1125)</code></li>
23465<li><img alt="16:9 aspect ratio crop diagram" src="images/camera2/metadata/android.scaler.cropRegion/crop-region-169-ratio.png"/></li>
23466<li><code>640x480</code> stream source area: <code>(666,<wbr/> 375,<wbr/> 1666,<wbr/> 1125)</code> (pillarboxed)</li>
23467<li><code>1280x720</code> stream source area: <code>(500,<wbr/> 375,<wbr/> 1833,<wbr/> 1125)</code> (equal to crop region)</li>
23468</ul>
23469</li>
23470<li>Case #3: 1:1 crop region with ~2.<wbr/>6x digital zoom.<wbr/><ul>
23471<li>Crop region: <code>Rect(500,<wbr/> 375,<wbr/> 1250,<wbr/> 1125)</code></li>
23472<li><img alt="1:1 aspect ratio crop diagram" src="images/camera2/metadata/android.scaler.cropRegion/crop-region-11-ratio.png"/></li>
23473<li><code>640x480</code> stream source area: <code>(500,<wbr/> 469,<wbr/> 1250,<wbr/> 1031)</code> (letterboxed)</li>
23474<li><code>1280x720</code> stream source area: <code>(500,<wbr/> 543,<wbr/> 1250,<wbr/> 957)</code> (letterboxed)</li>
23475</ul>
23476</li>
23477<li>Case #4: Replace <code>640x480</code> stream with <code>1024x1024</code> stream,<wbr/> with 4:3 crop region:<ul>
23478<li>Crop region: <code>Rect(500,<wbr/> 375,<wbr/> 1500,<wbr/> 1125)</code></li>
23479<li><img alt="Square output, 4:3 aspect ratio crop diagram" src="images/camera2/metadata/android.scaler.cropRegion/crop-region-43-square-ratio.png"/></li>
23480<li><code>1024x1024</code> stream source area: <code>(625,<wbr/> 375,<wbr/> 1375,<wbr/> 1125)</code> (pillarboxed)</li>
23481<li><code>1280x720</code> stream source area: <code>(500,<wbr/> 469,<wbr/> 1500,<wbr/> 1031)</code> (letterboxed)</li>
23482<li>Note that in this case,<wbr/> neither of the two outputs is a subset of the other,<wbr/> with
23483  each containing image data the other doesn't have.<wbr/></li>
23484</ul>
23485</li>
23486</ul>
23487<p>If the coordinate system is <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> the width and height
23488of the crop region cannot be set to be smaller than
23489<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
23490<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>
23491<p>If the coordinate system is <a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>,<wbr/> the width
23492and height of the crop region cannot be set to be smaller than
23493<code>floor( preCorrectionActiveArraySize.<wbr/>width /<wbr/> <a href="#static_android.scaler.availableMaxDigitalZoom">android.<wbr/>scaler.<wbr/>available<wbr/>Max<wbr/>Digital<wbr/>Zoom</a> )</code>
23494and
23495<code>floor( preCorrectionActiveArraySize.<wbr/>height /<wbr/> <a href="#static_android.scaler.availableMaxDigitalZoom">android.<wbr/>scaler.<wbr/>available<wbr/>Max<wbr/>Digital<wbr/>Zoom</a> )</code>,<wbr/>
23496respectively.<wbr/></p>
23497<p>The camera device may adjust the crop region to account for rounding and other hardware
23498requirements; the final crop region used will be included in the output capture result.<wbr/></p>
23499<p>The camera sensor output aspect ratio depends on factors such as output stream
23500combination and <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a>,<wbr/> and shouldn't be adjusted by using
23501this control.<wbr/> And the camera device will treat different camera sensor output sizes
23502(potentially with in-sensor crop) as the same crop of
23503<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/> As a result,<wbr/> the application shouldn't assume the
23504maximum crop region always maps to the same aspect ratio or field of view for the
23505sensor output.<wbr/></p>
23506<p>Starting from API level 30,<wbr/> it's strongly recommended to use <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a>
23507to take advantage of better support for zoom with logical multi-camera.<wbr/> The benefits
23508include better precision with optical-digital zoom combination,<wbr/> and ability to do
23509zoom-out from 1.<wbr/>0x.<wbr/> When using <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> for zoom,<wbr/> the crop region in
23510the capture request should be left as the default activeArray size.<wbr/> The
23511coordinate system is post-zoom,<wbr/> meaning that the activeArraySize or
23512preCorrectionActiveArraySize covers the camera device's field of view "after" zoom.<wbr/>  See
23513<a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> for details.<wbr/></p>
23514<p>For camera devices with the
23515<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR">Camera<wbr/>Metadata#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>ULTRA_<wbr/>HIGH_<wbr/>RESOLUTION_<wbr/>SENSOR</a>
23516capability or devices where <a href="https://developer.android.com/reference/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a>
23517lists <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a>,<wbr/>
23518<a href="#static_android.sensor.info.activeArraySizeMaximumResolution">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution</a> /<wbr/>
23519<a href="#static_android.sensor.info.preCorrectionActiveArraySizeMaximumResolution">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution</a> must be used as the
23520coordinate system for requests where <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to
23521<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p>
23522            </td>
23523          </tr>
23524
23525          <tr class="entries_header">
23526            <th class="th_details" colspan="6">HAL Implementation Details</th>
23527          </tr>
23528          <tr class="entry_cont">
23529            <td class="entry_details" colspan="6">
23530              <p>The output streams must maintain square pixels at all
23531times,<wbr/> no matter what the relative aspect ratios of the
23532crop region and the stream are.<wbr/>  Negative values for
23533corner are allowed for raw output if full pixel array is
23534larger than active pixel array.<wbr/> Width and height may be
23535rounded to nearest larger supportable width,<wbr/> especially
23536for raw output,<wbr/> where only a few fixed scales may be
23537possible.<wbr/></p>
23538<p>If <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> is supported by the HAL,<wbr/> the HAL must report the zoom
23539ratio via <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a>,<wbr/> and change the coordinate system such that
23540<a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a> or <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>(depending on whether <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> is supported) is used to
23541represent the camera field-of-view after zoom.<wbr/> see <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> for
23542details.<wbr/></p>
23543<p>HAL2.<wbr/>x uses only (x,<wbr/> y,<wbr/> width)</p>
23544            </td>
23545          </tr>
23546
23547          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23548           <!-- end of entry -->
23549
23550
23551          <tr class="entry" id="controls_android.scaler.rotateAndCrop">
23552            <td class="entry_name
23553             " rowspan="5">
23554              android.<wbr/>scaler.<wbr/>rotate<wbr/>And<wbr/>Crop
23555            </td>
23556            <td class="entry_type">
23557                <span class="entry_type_name entry_type_name_enum">byte</span>
23558
23559              <span class="entry_type_visibility"> [public]</span>
23560
23561
23562
23563
23564
23565                <ul class="entry_type_enum">
23566                  <li>
23567                    <span class="entry_type_enum_name">NONE (v3.5)</span>
23568                    <span class="entry_type_enum_notes"><p>No rotate and crop is applied.<wbr/> Processed outputs are in the sensor orientation.<wbr/></p></span>
23569                  </li>
23570                  <li>
23571                    <span class="entry_type_enum_name">90 (v3.5)</span>
23572                    <span class="entry_type_enum_notes"><p>Processed images are rotated by 90 degrees clockwise,<wbr/> and then cropped
23573to the original aspect ratio.<wbr/></p></span>
23574                  </li>
23575                  <li>
23576                    <span class="entry_type_enum_name">180 (v3.5)</span>
23577                    <span class="entry_type_enum_notes"><p>Processed images are rotated by 180 degrees.<wbr/>  Since the aspect ratio does not
23578change,<wbr/> no cropping is performed.<wbr/></p></span>
23579                  </li>
23580                  <li>
23581                    <span class="entry_type_enum_name">270 (v3.5)</span>
23582                    <span class="entry_type_enum_notes"><p>Processed images are rotated by 270 degrees clockwise,<wbr/> and then cropped
23583to the original aspect ratio.<wbr/></p></span>
23584                  </li>
23585                  <li>
23586                    <span class="entry_type_enum_name">AUTO (v3.5)</span>
23587                    <span class="entry_type_enum_notes"><p>The camera API automatically selects the best concrete value for
23588rotate-and-crop based on the application's support for resizability and the current
23589multi-window mode.<wbr/></p>
23590<p>If the application does not support resizing but the display mode for its main
23591Activity is not in a typical orientation,<wbr/> the camera API will set <code>ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>90</code>
23592or some other supported rotation value,<wbr/> depending on device configuration,<wbr/>
23593to ensure preview and captured images are correctly shown to the user.<wbr/> Otherwise,<wbr/>
23594<code>ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>NONE</code> will be selected.<wbr/></p>
23595<p>When a value other than NONE is selected,<wbr/> several metadata fields will also be parsed
23596differently to ensure that coordinates are correctly handled for features like drawing
23597face detection boxes or passing in tap-to-focus coordinates.<wbr/>  The camera API will
23598convert positions in the active array coordinate system to/<wbr/>from the cropped-and-rotated
23599coordinate system to make the operation transparent for applications.<wbr/></p>
23600<p>No coordinate mapping will be done when the application selects a non-AUTO mode.<wbr/></p></span>
23601                  </li>
23602                </ul>
23603
23604            </td> <!-- entry_type -->
23605
23606            <td class="entry_description">
23607              <p>Whether a rotation-and-crop operation is applied to processed
23608outputs from the camera.<wbr/></p>
23609            </td>
23610
23611            <td class="entry_units">
23612            </td>
23613
23614            <td class="entry_range">
23615              <p><a href="#static_android.scaler.availableRotateAndCropModes">android.<wbr/>scaler.<wbr/>available<wbr/>Rotate<wbr/>And<wbr/>Crop<wbr/>Modes</a></p>
23616            </td>
23617
23618            <td class="entry_hal_version">
23619              <p>3.<wbr/>5</p>
23620            </td>
23621
23622            <td class="entry_tags">
23623            </td>
23624
23625          </tr>
23626          <tr class="entries_header">
23627            <th class="th_details" colspan="6">Details</th>
23628          </tr>
23629          <tr class="entry_cont">
23630            <td class="entry_details" colspan="6">
23631              <p>This control is primarily intended to help camera applications with no support for
23632multi-window modes to work correctly on devices where multi-window scenarios are
23633unavoidable,<wbr/> such as foldables or other devices with variable display geometry or more
23634free-form window placement (such as laptops,<wbr/> which often place portrait-orientation apps
23635in landscape with pillarboxing).<wbr/></p>
23636<p>If supported,<wbr/> the default value is <code>ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>AUTO</code>,<wbr/> which allows the camera API
23637to enable backwards-compatibility support for applications that do not support resizing
23638/<wbr/> multi-window modes,<wbr/> when the device is in fact in a multi-window mode (such as inset
23639portrait on laptops,<wbr/> or on a foldable device in some fold states).<wbr/>  In addition,<wbr/>
23640<code>ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>NONE</code> and <code>ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>90</code> will always be available if this control
23641is supported by the device.<wbr/>  If not supported,<wbr/> devices API level 30 or higher will always
23642list only <code>ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>NONE</code>.<wbr/></p>
23643<p>When <code>CROP_<wbr/>AUTO</code> is in use,<wbr/> and the camera API activates backward-compatibility mode,<wbr/>
23644several metadata fields will also be parsed differently to ensure that coordinates are
23645correctly handled for features like drawing face detection boxes or passing in
23646tap-to-focus coordinates.<wbr/>  The camera API will convert positions in the active array
23647coordinate system to/<wbr/>from the cropped-and-rotated coordinate system to make the
23648operation transparent for applications.<wbr/>  The following controls are affected:</p>
23649<ul>
23650<li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li>
23651<li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li>
23652<li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li>
23653<li><a href="#dynamic_android.statistics.faces">android.<wbr/>statistics.<wbr/>faces</a></li>
23654</ul>
23655<p>Capture results will contain the actual value selected by the API;
23656<code>ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>AUTO</code> will never be seen in a capture result.<wbr/></p>
23657<p>Applications can also select their preferred cropping mode,<wbr/> either to opt out of the
23658backwards-compatibility treatment,<wbr/> or to use the cropping feature themselves as needed.<wbr/>
23659In this case,<wbr/> no coordinate translation will be done automatically,<wbr/> and all controls
23660will continue to use the normal active array coordinates.<wbr/></p>
23661<p>Cropping and rotating is done after the application of digital zoom (via either
23662<a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> or <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a>),<wbr/> but before each individual
23663output is further cropped and scaled.<wbr/> It only affects processed outputs such as
23664YUV,<wbr/> PRIVATE,<wbr/> and JPEG.<wbr/>  It has no effect on RAW outputs.<wbr/></p>
23665<p>When <code>CROP_<wbr/>90</code> or <code>CROP_<wbr/>270</code> are selected,<wbr/> there is a significant loss to the field of
23666view.<wbr/> For example,<wbr/> with a 4:3 aspect ratio output of 1600x1200,<wbr/> <code>CROP_<wbr/>90</code> will still
23667produce 1600x1200 output,<wbr/> but these buffers are cropped from a vertical 3:4 slice at the
23668center of the 4:3 area,<wbr/> then rotated to be 4:3,<wbr/> and then upscaled to 1600x1200.<wbr/>  Only
2366956.<wbr/>25% of the original FOV is still visible.<wbr/>  In general,<wbr/> for an aspect ratio of <code>w:h</code>,<wbr/>
23670the crop and rotate operation leaves <code>(h/<wbr/>w)^2</code> of the field of view visible.<wbr/> For 16:9,<wbr/>
23671this is ~31.<wbr/>6%.<wbr/></p>
23672<p>As a visual example,<wbr/> the figure below shows the effect of <code>ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>90</code> on the
23673outputs for the following parameters:</p>
23674<ul>
23675<li>Sensor active array: <code>2000x1500</code></li>
23676<li>Crop region: top-left: <code>(500,<wbr/> 375)</code>,<wbr/> size: <code>(1000,<wbr/> 750)</code> (4:3 aspect ratio)</li>
23677<li>Output streams: YUV <code>640x480</code> and YUV <code>1280x720</code></li>
23678<li><code>ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>90</code></li>
23679</ul>
23680<p><img alt="Effect of ROTATE_AND_CROP_90" src="images/camera2/metadata/android.scaler.rotateAndCrop/crop-region-rotate-90-43-ratio.png"/></p>
23681<p>With these settings,<wbr/> the regions of the active array covered by the output streams are:</p>
23682<ul>
23683<li>640x480 stream crop: top-left: <code>(219,<wbr/> 375)</code>,<wbr/> size: <code>(562,<wbr/> 750)</code></li>
23684<li>1280x720 stream crop: top-left: <code>(289,<wbr/> 375)</code>,<wbr/> size: <code>(422,<wbr/> 750)</code></li>
23685</ul>
23686<p>Since the buffers are rotated,<wbr/> the buffers as seen by the application are:</p>
23687<ul>
23688<li>640x480 stream: top-left: <code>(781,<wbr/> 375)</code> on active array,<wbr/> size: <code>(640,<wbr/> 480)</code>,<wbr/> downscaled 1.<wbr/>17x from sensor pixels</li>
23689<li>1280x720 stream: top-left: <code>(711,<wbr/> 375)</code> on active array,<wbr/> size: <code>(1280,<wbr/> 720)</code>,<wbr/> upscaled 1.<wbr/>71x from sensor pixels</li>
23690</ul>
23691            </td>
23692          </tr>
23693
23694          <tr class="entries_header">
23695            <th class="th_details" colspan="6">HAL Implementation Details</th>
23696          </tr>
23697          <tr class="entry_cont">
23698            <td class="entry_details" colspan="6">
23699              <p>ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>AUTO will never be sent to the HAL,<wbr/> though it must be set as the default
23700value in all the capture request templates by the HAL.<wbr/>  The camera service will
23701translate AUTO to a specific rotation value based on the current application's
23702multi-window state and its support of resizability.<wbr/></p>
23703<p>The HAL also does not need to consider coordinate transforms for ROTATE_<wbr/>AND_<wbr/>CROP - all
23704capture request and result fields should be kept in the active array coordinate frame.<wbr/>
23705Any translation required to implement ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>AUTO will be handled by the camera
23706service.<wbr/></p>
23707            </td>
23708          </tr>
23709
23710          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23711           <!-- end of entry -->
23712
23713
23714          <tr class="entry" id="controls_android.scaler.cropRegionSet">
23715            <td class="entry_name
23716             " rowspan="3">
23717              android.<wbr/>scaler.<wbr/>crop<wbr/>Region<wbr/>Set
23718            </td>
23719            <td class="entry_type">
23720                <span class="entry_type_name entry_type_name_enum">byte</span>
23721
23722              <span class="entry_type_visibility"> [fwk_only as boolean]</span>
23723
23724
23725
23726
23727
23728                <ul class="entry_type_enum">
23729                  <li>
23730                    <span class="entry_type_enum_name">FALSE (v3.2)</span>
23731                    <span class="entry_type_enum_notes"><p>Crop region (<a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>) has not been set by the
23732camera client.<wbr/></p></span>
23733                  </li>
23734                  <li>
23735                    <span class="entry_type_enum_name">TRUE (v3.2)</span>
23736                    <span class="entry_type_enum_notes"><p>Scaler crop regions (<a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>) has been set by the camera
23737client.<wbr/></p></span>
23738                  </li>
23739                </ul>
23740
23741            </td> <!-- entry_type -->
23742
23743            <td class="entry_description">
23744              <p>Framework-only private key which informs camera fwk that the scaler crop region
23745(<a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>) has been set by the client and it need
23746not be corrected when <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to MAXIMUM_<wbr/>RESOLUTION.<wbr/></p>
23747            </td>
23748
23749            <td class="entry_units">
23750            </td>
23751
23752            <td class="entry_range">
23753            </td>
23754
23755            <td class="entry_hal_version">
23756              <p>3.<wbr/>2</p>
23757            </td>
23758
23759            <td class="entry_tags">
23760            </td>
23761
23762          </tr>
23763          <tr class="entries_header">
23764            <th class="th_details" colspan="6">Details</th>
23765          </tr>
23766          <tr class="entry_cont">
23767            <td class="entry_details" colspan="6">
23768              <p>This must be set to TRUE by the camera2 java fwk when the camera client sets
23769<a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></p>
23770            </td>
23771          </tr>
23772
23773
23774          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23775           <!-- end of entry -->
23776
23777
23778
23779      <!-- end of kind -->
23780      </tbody>
23781      <tr><td colspan="7" class="kind">static</td></tr>
23782
23783      <thead class="entries_header">
23784        <tr>
23785          <th class="th_name">Property Name</th>
23786          <th class="th_type">Type</th>
23787          <th class="th_description">Description</th>
23788          <th class="th_units">Units</th>
23789          <th class="th_range">Range</th>
23790          <th class="th_hal_version">Initial HIDL HAL version</th>
23791          <th class="th_tags">Tags</th>
23792        </tr>
23793      </thead>
23794
23795      <tbody>
23796
23797
23798
23799
23800
23801
23802
23803
23804
23805
23806          <tr class="entry" id="static_android.scaler.availableFormats">
23807            <td class="entry_name
23808                entry_name_deprecated
23809             " rowspan="5">
23810              android.<wbr/>scaler.<wbr/>available<wbr/>Formats
23811            </td>
23812            <td class="entry_type">
23813                <span class="entry_type_name entry_type_name_enum">int32</span>
23814                <span class="entry_type_container">x</span>
23815
23816                <span class="entry_type_array">
23817                  n
23818                </span>
23819              <span class="entry_type_visibility"> [hidden as imageFormat]</span>
23820
23821
23822
23823              <span class="entry_type_deprecated">[deprecated] </span>
23824
23825
23826                <ul class="entry_type_enum">
23827                  <li>
23828                    <span class="entry_type_enum_name">RAW16 (v3.2)</span>
23829                    <span class="entry_type_enum_optional">[optional]</span>
23830                    <span class="entry_type_enum_value">0x20</span>
23831                    <span class="entry_type_enum_notes"><p>RAW16 is a standard,<wbr/> cross-platform format for raw image
23832buffers with 16-bit pixels.<wbr/></p>
23833<p>Buffers of this format are typically expected to have a
23834Color Filter Array (CFA) layout,<wbr/> which is given in
23835<a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a>.<wbr/> Sensors with
23836CFAs that are not representable by a format in
23837<a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a> should not
23838use this format.<wbr/></p>
23839<p>Buffers of this format will also follow the constraints given for
23840RAW_<wbr/>OPAQUE buffers,<wbr/> but with relaxed performance constraints.<wbr/></p>
23841<p>This format is intended to give users access to the full contents
23842of the buffers coming directly from the image sensor prior to any
23843cropping or scaling operations,<wbr/> and all coordinate systems for
23844metadata used for this format are relative to the size of the
23845active region of the image sensor before any geometric distortion
23846correction has been applied (i.<wbr/>e.<wbr/>
23847<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
23848dimensions for this format are limited to the full dimensions of
23849the 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
23850<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
23851only supported output size).<wbr/></p>
23852<p>See <a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a> for
23853the full set of performance guarantees.<wbr/></p></span>
23854                  </li>
23855                  <li>
23856                    <span class="entry_type_enum_name">RAW_OPAQUE (v3.2)</span>
23857                    <span class="entry_type_enum_optional">[optional]</span>
23858                    <span class="entry_type_enum_value">0x24</span>
23859                    <span class="entry_type_enum_notes"><p>RAW_<wbr/>OPAQUE (or
23860<a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_PRIVATE">RAW_<wbr/>PRIVATE</a>
23861as referred in public API) is a format for raw image buffers
23862coming from an image sensor.<wbr/></p>
23863<p>The actual structure of buffers of this format is
23864platform-specific,<wbr/> but must follow several constraints:</p>
23865<ol>
23866<li>No image post-processing operations may have been applied to
23867buffers of this type.<wbr/> These buffers contain raw image data coming
23868directly from the image sensor.<wbr/></li>
23869<li>If a buffer of this format is passed to the camera device for
23870reprocessing,<wbr/> the resulting images will be identical to the images
23871produced if the buffer had come directly from the sensor and was
23872processed with the same settings.<wbr/></li>
23873</ol>
23874<p>The intended use for this format is to allow access to the native
23875raw format buffers coming directly from the camera sensor without
23876any additional conversions or decrease in framerate.<wbr/></p>
23877<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
23878performance guarantees.<wbr/></p></span>
23879                  </li>
23880                  <li>
23881                    <span class="entry_type_enum_name">YV12 (v3.2)</span>
23882                    <span class="entry_type_enum_optional">[optional]</span>
23883                    <span class="entry_type_enum_value">0x32315659</span>
23884                    <span class="entry_type_enum_notes"><p>YCrCb 4:2:0 Planar</p></span>
23885                  </li>
23886                  <li>
23887                    <span class="entry_type_enum_name">YCrCb_420_SP (v3.2)</span>
23888                    <span class="entry_type_enum_optional">[optional]</span>
23889                    <span class="entry_type_enum_value">0x11</span>
23890                    <span class="entry_type_enum_notes"><p>NV21</p></span>
23891                  </li>
23892                  <li>
23893                    <span class="entry_type_enum_name">IMPLEMENTATION_DEFINED (v3.2)</span>
23894                    <span class="entry_type_enum_value">0x22</span>
23895                    <span class="entry_type_enum_notes"><p>System internal format,<wbr/> not application-accessible</p></span>
23896                  </li>
23897                  <li>
23898                    <span class="entry_type_enum_name">YCbCr_420_888 (v3.2)</span>
23899                    <span class="entry_type_enum_value">0x23</span>
23900                    <span class="entry_type_enum_notes"><p>Flexible YUV420 Format</p></span>
23901                  </li>
23902                  <li>
23903                    <span class="entry_type_enum_name">BLOB (v3.2)</span>
23904                    <span class="entry_type_enum_value">0x21</span>
23905                    <span class="entry_type_enum_notes"><p>JPEG format</p></span>
23906                  </li>
23907                  <li>
23908                    <span class="entry_type_enum_name">RAW10 (v3.4)</span>
23909                    <span class="entry_type_enum_value">0x25</span>
23910                    <span class="entry_type_enum_notes"><p>RAW10</p></span>
23911                  </li>
23912                  <li>
23913                    <span class="entry_type_enum_name">RAW12 (v3.4)</span>
23914                    <span class="entry_type_enum_value">0x26</span>
23915                    <span class="entry_type_enum_notes"><p>RAW12</p></span>
23916                  </li>
23917                  <li>
23918                    <span class="entry_type_enum_name">Y8 (v3.4)</span>
23919                    <span class="entry_type_enum_value">0x20203859</span>
23920                    <span class="entry_type_enum_notes"><p>Y8</p></span>
23921                  </li>
23922                </ul>
23923
23924            </td> <!-- entry_type -->
23925
23926            <td class="entry_description">
23927              <p>The list of image formats that are supported by this
23928camera device for output streams.<wbr/></p>
23929            </td>
23930
23931            <td class="entry_units">
23932            </td>
23933
23934            <td class="entry_range">
23935              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
23936            </td>
23937
23938            <td class="entry_hal_version">
23939              <p>3.<wbr/>2</p>
23940            </td>
23941
23942            <td class="entry_tags">
23943              <ul class="entry_tags">
23944                  <li><a href="#tag_BC">BC</a></li>
23945              </ul>
23946            </td>
23947
23948          </tr>
23949          <tr class="entries_header">
23950            <th class="th_details" colspan="6">Details</th>
23951          </tr>
23952          <tr class="entry_cont">
23953            <td class="entry_details" colspan="6">
23954              <p>All camera devices will support JPEG and YUV_<wbr/>420_<wbr/>888 formats.<wbr/></p>
23955<p>When set to YUV_<wbr/>420_<wbr/>888,<wbr/> application can access the YUV420 data directly.<wbr/></p>
23956            </td>
23957          </tr>
23958
23959          <tr class="entries_header">
23960            <th class="th_details" colspan="6">HAL Implementation Details</th>
23961          </tr>
23962          <tr class="entry_cont">
23963            <td class="entry_details" colspan="6">
23964              <p>These format values are from HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>* in
23965system/<wbr/>core/<wbr/>libsystem/<wbr/>include/<wbr/>system/<wbr/>graphics-base.<wbr/>h.<wbr/></p>
23966<p>When IMPLEMENTATION_<wbr/>DEFINED is used,<wbr/> the platform
23967gralloc module will select a format based on the usage flags provided
23968by the camera HAL device and the other endpoint of the stream.<wbr/> It is
23969usually used by preview and recording streams,<wbr/> where the application doesn't
23970need access the image data.<wbr/></p>
23971<p>YCb<wbr/>Cr_<wbr/>420_<wbr/>888 format must be supported by the HAL.<wbr/> When an image stream
23972needs CPU/<wbr/>application direct access,<wbr/> this format will be used.<wbr/> For a MONOCHROME
23973camera device,<wbr/> the pixel value of Cb and Cr planes is 128.<wbr/></p>
23974<p>The BLOB format must be supported by the HAL.<wbr/> This is used for the JPEG stream.<wbr/></p>
23975<p>A RAW_<wbr/>OPAQUE buffer should contain only pixel data.<wbr/> It is strongly
23976recommended that any information used by the camera device when
23977processing images is fully expressed by the result metadata
23978for that image buffer.<wbr/></p>
23979            </td>
23980          </tr>
23981
23982          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23983           <!-- end of entry -->
23984
23985
23986          <tr class="entry" id="static_android.scaler.availableJpegMinDurations">
23987            <td class="entry_name
23988                entry_name_deprecated
23989             " rowspan="3">
23990              android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Min<wbr/>Durations
23991            </td>
23992            <td class="entry_type">
23993                <span class="entry_type_name">int64</span>
23994                <span class="entry_type_container">x</span>
23995
23996                <span class="entry_type_array">
23997                  n
23998                </span>
23999              <span class="entry_type_visibility"> [hidden]</span>
24000
24001
24002
24003              <span class="entry_type_deprecated">[deprecated] </span>
24004
24005
24006
24007            </td> <!-- entry_type -->
24008
24009            <td class="entry_description">
24010              <p>The minimum frame duration that is supported
24011for each resolution in <a href="#static_android.scaler.availableJpegSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes</a>.<wbr/></p>
24012            </td>
24013
24014            <td class="entry_units">
24015              Nanoseconds
24016            </td>
24017
24018            <td class="entry_range">
24019              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
24020              <p>TODO: Remove property.<wbr/></p>
24021            </td>
24022
24023            <td class="entry_hal_version">
24024              <p>3.<wbr/>2</p>
24025            </td>
24026
24027            <td class="entry_tags">
24028              <ul class="entry_tags">
24029                  <li><a href="#tag_BC">BC</a></li>
24030              </ul>
24031            </td>
24032
24033          </tr>
24034          <tr class="entries_header">
24035            <th class="th_details" colspan="6">Details</th>
24036          </tr>
24037          <tr class="entry_cont">
24038            <td class="entry_details" colspan="6">
24039              <p>This corresponds to the minimum steady-state frame duration when only
24040that JPEG stream is active and captured in a burst,<wbr/> with all
24041processing (typically in android.<wbr/>*.<wbr/>mode) set to FAST.<wbr/></p>
24042<p>When multiple streams are configured,<wbr/> the minimum
24043frame duration will be &gt;= max(individual stream min
24044durations)</p>
24045            </td>
24046          </tr>
24047
24048
24049          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24050           <!-- end of entry -->
24051
24052
24053          <tr class="entry" id="static_android.scaler.availableJpegSizes">
24054            <td class="entry_name
24055                entry_name_deprecated
24056             " rowspan="5">
24057              android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes
24058            </td>
24059            <td class="entry_type">
24060                <span class="entry_type_name">int32</span>
24061                <span class="entry_type_container">x</span>
24062
24063                <span class="entry_type_array">
24064                  n x 2
24065                </span>
24066              <span class="entry_type_visibility"> [hidden as size]</span>
24067
24068
24069
24070              <span class="entry_type_deprecated">[deprecated] </span>
24071
24072
24073
24074            </td> <!-- entry_type -->
24075
24076            <td class="entry_description">
24077              <p>The JPEG resolutions that are supported by this camera device.<wbr/></p>
24078            </td>
24079
24080            <td class="entry_units">
24081            </td>
24082
24083            <td class="entry_range">
24084              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
24085              <p>TODO: Remove property.<wbr/></p>
24086            </td>
24087
24088            <td class="entry_hal_version">
24089              <p>3.<wbr/>2</p>
24090            </td>
24091
24092            <td class="entry_tags">
24093              <ul class="entry_tags">
24094                  <li><a href="#tag_BC">BC</a></li>
24095              </ul>
24096            </td>
24097
24098          </tr>
24099          <tr class="entries_header">
24100            <th class="th_details" colspan="6">Details</th>
24101          </tr>
24102          <tr class="entry_cont">
24103            <td class="entry_details" colspan="6">
24104              <p>The resolutions are listed as <code>(width,<wbr/> height)</code> pairs.<wbr/> All camera devices will support
24105sensor 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>
24106            </td>
24107          </tr>
24108
24109          <tr class="entries_header">
24110            <th class="th_details" colspan="6">HAL Implementation Details</th>
24111          </tr>
24112          <tr class="entry_cont">
24113            <td class="entry_details" colspan="6">
24114              <p>The HAL must include sensor maximum resolution
24115(defined by <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>),<wbr/>
24116and should include half/<wbr/>quarter of sensor maximum resolution.<wbr/></p>
24117            </td>
24118          </tr>
24119
24120          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24121           <!-- end of entry -->
24122
24123
24124          <tr class="entry" id="static_android.scaler.availableMaxDigitalZoom">
24125            <td class="entry_name
24126             " rowspan="5">
24127              android.<wbr/>scaler.<wbr/>available<wbr/>Max<wbr/>Digital<wbr/>Zoom
24128            </td>
24129            <td class="entry_type">
24130                <span class="entry_type_name">float</span>
24131
24132              <span class="entry_type_visibility"> [public]</span>
24133
24134
24135              <span class="entry_type_hwlevel">[legacy] </span>
24136
24137
24138
24139
24140            </td> <!-- entry_type -->
24141
24142            <td class="entry_description">
24143              <p>The maximum ratio between both active area width
24144and crop region width,<wbr/> and active area height and
24145crop region height,<wbr/> for <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></p>
24146            </td>
24147
24148            <td class="entry_units">
24149              Zoom scale factor
24150            </td>
24151
24152            <td class="entry_range">
24153              <p>&gt;=1</p>
24154            </td>
24155
24156            <td class="entry_hal_version">
24157              <p>3.<wbr/>2</p>
24158            </td>
24159
24160            <td class="entry_tags">
24161              <ul class="entry_tags">
24162                  <li><a href="#tag_BC">BC</a></li>
24163              </ul>
24164            </td>
24165
24166          </tr>
24167          <tr class="entries_header">
24168            <th class="th_details" colspan="6">Details</th>
24169          </tr>
24170          <tr class="entry_cont">
24171            <td class="entry_details" colspan="6">
24172              <p>This represents the maximum amount of zooming possible by
24173the camera device,<wbr/> or equivalently,<wbr/> the minimum cropping
24174window size.<wbr/></p>
24175<p>Crop regions that have a width or height that is smaller
24176than this ratio allows will be rounded up to the minimum
24177allowed size by the camera device.<wbr/></p>
24178<p>Starting from API level 30,<wbr/> when using <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> to zoom in or out,<wbr/>
24179the application must use <a href="#static_android.control.zoomRatioRange">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio<wbr/>Range</a> to query both the minimum and
24180maximum zoom ratio.<wbr/></p>
24181            </td>
24182          </tr>
24183
24184          <tr class="entries_header">
24185            <th class="th_details" colspan="6">HAL Implementation Details</th>
24186          </tr>
24187          <tr class="entry_cont">
24188            <td class="entry_details" colspan="6">
24189              <p>If the HAL supports <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a>,<wbr/> this value must be equal to or less than
24190the maximum supported zoomRatio specified in <a href="#static_android.control.zoomRatioRange">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio<wbr/>Range</a>.<wbr/></p>
24191            </td>
24192          </tr>
24193
24194          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24195           <!-- end of entry -->
24196
24197
24198          <tr class="entry" id="static_android.scaler.availableProcessedMinDurations">
24199            <td class="entry_name
24200                entry_name_deprecated
24201             " rowspan="3">
24202              android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Min<wbr/>Durations
24203            </td>
24204            <td class="entry_type">
24205                <span class="entry_type_name">int64</span>
24206                <span class="entry_type_container">x</span>
24207
24208                <span class="entry_type_array">
24209                  n
24210                </span>
24211              <span class="entry_type_visibility"> [hidden]</span>
24212
24213
24214
24215              <span class="entry_type_deprecated">[deprecated] </span>
24216
24217
24218
24219            </td> <!-- entry_type -->
24220
24221            <td class="entry_description">
24222              <p>For each available processed output size (defined in
24223<a href="#static_android.scaler.availableProcessedSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Sizes</a>),<wbr/> this property lists the
24224minimum supportable frame duration for that size.<wbr/></p>
24225            </td>
24226
24227            <td class="entry_units">
24228              Nanoseconds
24229            </td>
24230
24231            <td class="entry_range">
24232              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
24233            </td>
24234
24235            <td class="entry_hal_version">
24236              <p>3.<wbr/>2</p>
24237            </td>
24238
24239            <td class="entry_tags">
24240              <ul class="entry_tags">
24241                  <li><a href="#tag_BC">BC</a></li>
24242              </ul>
24243            </td>
24244
24245          </tr>
24246          <tr class="entries_header">
24247            <th class="th_details" colspan="6">Details</th>
24248          </tr>
24249          <tr class="entry_cont">
24250            <td class="entry_details" colspan="6">
24251              <p>This should correspond to the frame duration when only that processed
24252stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode)
24253set to FAST.<wbr/></p>
24254<p>When multiple streams are configured,<wbr/> the minimum frame duration will
24255be &gt;= max(individual stream min durations).<wbr/></p>
24256            </td>
24257          </tr>
24258
24259
24260          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24261           <!-- end of entry -->
24262
24263
24264          <tr class="entry" id="static_android.scaler.availableProcessedSizes">
24265            <td class="entry_name
24266                entry_name_deprecated
24267             " rowspan="5">
24268              android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Sizes
24269            </td>
24270            <td class="entry_type">
24271                <span class="entry_type_name">int32</span>
24272                <span class="entry_type_container">x</span>
24273
24274                <span class="entry_type_array">
24275                  n x 2
24276                </span>
24277              <span class="entry_type_visibility"> [hidden as size]</span>
24278
24279
24280
24281              <span class="entry_type_deprecated">[deprecated] </span>
24282
24283
24284
24285            </td> <!-- entry_type -->
24286
24287            <td class="entry_description">
24288              <p>The resolutions available for use with
24289processed output streams,<wbr/> such as YV12,<wbr/> NV12,<wbr/> and
24290platform opaque YUV/<wbr/>RGB streams to the GPU or video
24291encoders.<wbr/></p>
24292            </td>
24293
24294            <td class="entry_units">
24295            </td>
24296
24297            <td class="entry_range">
24298              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
24299            </td>
24300
24301            <td class="entry_hal_version">
24302              <p>3.<wbr/>2</p>
24303            </td>
24304
24305            <td class="entry_tags">
24306              <ul class="entry_tags">
24307                  <li><a href="#tag_BC">BC</a></li>
24308              </ul>
24309            </td>
24310
24311          </tr>
24312          <tr class="entries_header">
24313            <th class="th_details" colspan="6">Details</th>
24314          </tr>
24315          <tr class="entry_cont">
24316            <td class="entry_details" colspan="6">
24317              <p>The resolutions are listed as <code>(width,<wbr/> height)</code> pairs.<wbr/></p>
24318<p>For a given use case,<wbr/> the actual maximum supported resolution
24319may be lower than what is listed here,<wbr/> depending on the destination
24320Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/>
24321the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p)
24322smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448)
24323can provide.<wbr/></p>
24324<p>Please reference the documentation for the image data destination to
24325check if it limits the maximum size for image data.<wbr/></p>
24326            </td>
24327          </tr>
24328
24329          <tr class="entries_header">
24330            <th class="th_details" colspan="6">HAL Implementation Details</th>
24331          </tr>
24332          <tr class="entry_cont">
24333            <td class="entry_details" colspan="6">
24334              <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/>
24335the HAL must include all JPEG sizes listed in <a href="#static_android.scaler.availableJpegSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes</a>
24336and each below resolution if it is smaller than or equal to the sensor
24337maximum resolution (if they are not listed in JPEG sizes already):</p>
24338<ul>
24339<li>240p (320 x 240)</li>
24340<li>480p (640 x 480)</li>
24341<li>720p (1280 x 720)</li>
24342<li>1080p (1920 x 1080)</li>
24343</ul>
24344<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/>
24345the HAL only has to list up to the maximum video size supported by the devices.<wbr/></p>
24346            </td>
24347          </tr>
24348
24349          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24350           <!-- end of entry -->
24351
24352
24353          <tr class="entry" id="static_android.scaler.availableRawMinDurations">
24354            <td class="entry_name
24355                entry_name_deprecated
24356             " rowspan="3">
24357              android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Min<wbr/>Durations
24358            </td>
24359            <td class="entry_type">
24360                <span class="entry_type_name">int64</span>
24361                <span class="entry_type_container">x</span>
24362
24363                <span class="entry_type_array">
24364                  n
24365                </span>
24366              <span class="entry_type_visibility"> [system]</span>
24367
24368
24369
24370              <span class="entry_type_deprecated">[deprecated] </span>
24371
24372
24373
24374            </td> <!-- entry_type -->
24375
24376            <td class="entry_description">
24377              <p>For each available raw output size (defined in
24378<a href="#static_android.scaler.availableRawSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Sizes</a>),<wbr/> this property lists the minimum
24379supportable frame duration for that size.<wbr/></p>
24380            </td>
24381
24382            <td class="entry_units">
24383              Nanoseconds
24384            </td>
24385
24386            <td class="entry_range">
24387              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
24388            </td>
24389
24390            <td class="entry_hal_version">
24391              <p>3.<wbr/>2</p>
24392            </td>
24393
24394            <td class="entry_tags">
24395              <ul class="entry_tags">
24396                  <li><a href="#tag_BC">BC</a></li>
24397              </ul>
24398            </td>
24399
24400          </tr>
24401          <tr class="entries_header">
24402            <th class="th_details" colspan="6">Details</th>
24403          </tr>
24404          <tr class="entry_cont">
24405            <td class="entry_details" colspan="6">
24406              <p>Should correspond to the frame duration when only the raw stream is
24407active.<wbr/></p>
24408<p>When multiple streams are configured,<wbr/> the minimum
24409frame duration will be &gt;= max(individual stream min
24410durations)</p>
24411            </td>
24412          </tr>
24413
24414
24415          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24416           <!-- end of entry -->
24417
24418
24419          <tr class="entry" id="static_android.scaler.availableRawSizes">
24420            <td class="entry_name
24421                entry_name_deprecated
24422             " rowspan="1">
24423              android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Sizes
24424            </td>
24425            <td class="entry_type">
24426                <span class="entry_type_name">int32</span>
24427                <span class="entry_type_container">x</span>
24428
24429                <span class="entry_type_array">
24430                  n x 2
24431                </span>
24432              <span class="entry_type_visibility"> [system as size]</span>
24433
24434
24435
24436              <span class="entry_type_deprecated">[deprecated] </span>
24437
24438
24439
24440            </td> <!-- entry_type -->
24441
24442            <td class="entry_description">
24443              <p>The resolutions available for use with raw
24444sensor output streams,<wbr/> listed as width,<wbr/>
24445height</p>
24446            </td>
24447
24448            <td class="entry_units">
24449            </td>
24450
24451            <td class="entry_range">
24452              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
24453            </td>
24454
24455            <td class="entry_hal_version">
24456              <p>3.<wbr/>2</p>
24457            </td>
24458
24459            <td class="entry_tags">
24460            </td>
24461
24462          </tr>
24463
24464
24465          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24466           <!-- end of entry -->
24467
24468
24469          <tr class="entry" id="static_android.scaler.availableInputOutputFormatsMap">
24470            <td class="entry_name
24471             " rowspan="5">
24472              android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map
24473            </td>
24474            <td class="entry_type">
24475                <span class="entry_type_name">int32</span>
24476
24477              <span class="entry_type_visibility"> [hidden as reprocessFormatsMap]</span>
24478
24479
24480
24481
24482
24483
24484            </td> <!-- entry_type -->
24485
24486            <td class="entry_description">
24487              <p>The mapping of image formats that are supported by this
24488camera device for input streams,<wbr/> to their corresponding output formats.<wbr/></p>
24489            </td>
24490
24491            <td class="entry_units">
24492            </td>
24493
24494            <td class="entry_range">
24495            </td>
24496
24497            <td class="entry_hal_version">
24498              <p>3.<wbr/>2</p>
24499            </td>
24500
24501            <td class="entry_tags">
24502              <ul class="entry_tags">
24503                  <li><a href="#tag_REPROC">REPROC</a></li>
24504              </ul>
24505            </td>
24506
24507          </tr>
24508          <tr class="entries_header">
24509            <th class="th_details" colspan="6">Details</th>
24510          </tr>
24511          <tr class="entry_cont">
24512            <td class="entry_details" colspan="6">
24513              <p>All camera devices with at least 1
24514<a href="#static_android.request.maxNumInputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Input<wbr/>Streams</a> will have at least one
24515available input format.<wbr/></p>
24516<p>The camera device will support the following map of formats,<wbr/>
24517if its dependent capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>) is supported:</p>
24518<table>
24519<thead>
24520<tr>
24521<th style="text-align: left;">Input Format</th>
24522<th style="text-align: left;">Output Format</th>
24523<th style="text-align: left;">Capability</th>
24524</tr>
24525</thead>
24526<tbody>
24527<tr>
24528<td style="text-align: left;"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td>
24529<td style="text-align: left;"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
24530<td style="text-align: left;">PRIVATE_<wbr/>REPROCESSING</td>
24531</tr>
24532<tr>
24533<td style="text-align: left;"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td>
24534<td style="text-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>
24535<td style="text-align: left;">PRIVATE_<wbr/>REPROCESSING</td>
24536</tr>
24537<tr>
24538<td style="text-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>
24539<td style="text-align: left;"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
24540<td style="text-align: left;">YUV_<wbr/>REPROCESSING</td>
24541</tr>
24542<tr>
24543<td style="text-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>
24544<td style="text-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>
24545<td style="text-align: left;">YUV_<wbr/>REPROCESSING</td>
24546</tr>
24547</tbody>
24548</table>
24549<p>PRIVATE refers to a device-internal format that is not directly application-visible.<wbr/>  A
24550PRIVATE input surface can be acquired by <a href="https://developer.android.com/reference/android/media/ImageReader.html#newInstance">ImageReader#newInstance</a>
24551with <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> as the format.<wbr/></p>
24552<p>For a PRIVATE_<wbr/>REPROCESSING-capable camera device,<wbr/> using the PRIVATE format as either input
24553or 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>
24554<p>Attempting to configure an input stream with output streams not
24555listed as available in this map is not valid.<wbr/></p>
24556<p>Additionally,<wbr/> if the camera device is MONOCHROME with Y8 support,<wbr/> it will also support
24557the following map of formats if its dependent capability
24558(<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>) is supported:</p>
24559<table>
24560<thead>
24561<tr>
24562<th style="text-align: left;">Input Format</th>
24563<th style="text-align: left;">Output Format</th>
24564<th style="text-align: left;">Capability</th>
24565</tr>
24566</thead>
24567<tbody>
24568<tr>
24569<td style="text-align: left;"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td>
24570<td style="text-align: left;"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#Y8">ImageFormat#Y8</a></td>
24571<td style="text-align: left;">PRIVATE_<wbr/>REPROCESSING</td>
24572</tr>
24573<tr>
24574<td style="text-align: left;"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#Y8">ImageFormat#Y8</a></td>
24575<td style="text-align: left;"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
24576<td style="text-align: left;">YUV_<wbr/>REPROCESSING</td>
24577</tr>
24578<tr>
24579<td style="text-align: left;"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#Y8">ImageFormat#Y8</a></td>
24580<td style="text-align: left;"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#Y8">ImageFormat#Y8</a></td>
24581<td style="text-align: left;">YUV_<wbr/>REPROCESSING</td>
24582</tr>
24583</tbody>
24584</table>
24585            </td>
24586          </tr>
24587
24588          <tr class="entries_header">
24589            <th class="th_details" colspan="6">HAL Implementation Details</th>
24590          </tr>
24591          <tr class="entry_cont">
24592            <td class="entry_details" colspan="6">
24593              <p>For the formats,<wbr/> see <code>system/<wbr/>core/<wbr/>libsystem/<wbr/>include/<wbr/>system/<wbr/>graphics-base.<wbr/>h</code> for a
24594definition of the image format enumerations.<wbr/> The PRIVATE format refers to the
24595HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>IMPLEMENTATION_<wbr/>DEFINED format.<wbr/> The HAL could determine
24596the actual format by using the gralloc usage flags.<wbr/>
24597For ZSL use case in particular,<wbr/> the HAL could choose appropriate format (partially
24598processed YUV or RAW based format) by checking the format and GRALLOC_<wbr/>USAGE_<wbr/>HW_<wbr/>CAMERA_<wbr/>ZSL.<wbr/>
24599See camera3.<wbr/>h for more details.<wbr/></p>
24600<p>This value is encoded as a variable-size array-of-arrays.<wbr/>
24601The inner array always contains <code>[format,<wbr/> length,<wbr/> ...<wbr/>]</code> where
24602<code>...<wbr/></code> has <code>length</code> elements.<wbr/> An inner array is followed by another
24603inner array if the total metadata entry size hasn't yet been exceeded.<wbr/></p>
24604<p>A code sample to read/<wbr/>write this encoding (with a device that
24605supports reprocessing IMPLEMENTATION_<wbr/>DEFINED to YUV_<wbr/>420_<wbr/>888,<wbr/> and JPEG,<wbr/>
24606and reprocessing YUV_<wbr/>420_<wbr/>888 to YUV_<wbr/>420_<wbr/>888 and JPEG):</p>
24607<pre><code>//<wbr/> reading
24608int32_<wbr/>t* contents = &amp;entry.<wbr/>i32[0];
24609for (size_<wbr/>t i = 0; i &lt; entry.<wbr/>count; ) {
24610    int32_<wbr/>t format = contents[i++];
24611    int32_<wbr/>t length = contents[i++];
24612    int32_<wbr/>t output_<wbr/>formats[length];
24613    memcpy(&amp;output_<wbr/>formats[0],<wbr/> &amp;contents[i],<wbr/>
24614           length * sizeof(int32_<wbr/>t));
24615    i += length;
24616}
24617
24618//<wbr/> writing (static example,<wbr/> PRIVATE_<wbr/>REPROCESSING + YUV_<wbr/>REPROCESSING)
24619int32_<wbr/>t[] contents = {
24620  IMPLEMENTATION_<wbr/>DEFINED,<wbr/> 2,<wbr/> YUV_<wbr/>420_<wbr/>888,<wbr/> BLOB,<wbr/>
24621  YUV_<wbr/>420_<wbr/>888,<wbr/> 2,<wbr/> YUV_<wbr/>420_<wbr/>888,<wbr/> BLOB,<wbr/>
24622};
24623update_<wbr/>camera_<wbr/>metadata_<wbr/>entry(metadata,<wbr/> index,<wbr/> &amp;contents[0],<wbr/>
24624      sizeof(contents)/<wbr/>sizeof(contents[0]),<wbr/> &amp;updated_<wbr/>entry);
24625</code></pre>
24626<p>If the HAL claims to support any of the capabilities listed in the
24627above details,<wbr/> then it must also support all the input-output
24628combinations listed for that capability.<wbr/> It can optionally support
24629additional formats if it so chooses.<wbr/></p>
24630            </td>
24631          </tr>
24632
24633          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24634           <!-- end of entry -->
24635
24636
24637          <tr class="entry" id="static_android.scaler.availableStreamConfigurations">
24638            <td class="entry_name
24639             " rowspan="5">
24640              android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations
24641            </td>
24642            <td class="entry_type">
24643                <span class="entry_type_name entry_type_name_enum">int32</span>
24644                <span class="entry_type_container">x</span>
24645
24646                <span class="entry_type_array">
24647                  n x 4
24648                </span>
24649              <span class="entry_type_visibility"> [ndk_public as streamConfiguration]</span>
24650
24651
24652              <span class="entry_type_hwlevel">[legacy] </span>
24653
24654
24655
24656                <ul class="entry_type_enum">
24657                  <li>
24658                    <span class="entry_type_enum_name">OUTPUT (v3.2)</span>
24659                  </li>
24660                  <li>
24661                    <span class="entry_type_enum_name">INPUT (v3.2)</span>
24662                  </li>
24663                </ul>
24664
24665            </td> <!-- entry_type -->
24666
24667            <td class="entry_description">
24668              <p>The available stream configurations that this
24669camera device supports
24670(i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p>
24671            </td>
24672
24673            <td class="entry_units">
24674            </td>
24675
24676            <td class="entry_range">
24677            </td>
24678
24679            <td class="entry_hal_version">
24680              <p>3.<wbr/>2</p>
24681            </td>
24682
24683            <td class="entry_tags">
24684            </td>
24685
24686          </tr>
24687          <tr class="entries_header">
24688            <th class="th_details" colspan="6">Details</th>
24689          </tr>
24690          <tr class="entry_cont">
24691            <td class="entry_details" colspan="6">
24692              <p>The configurations are listed as <code>(format,<wbr/> width,<wbr/> height,<wbr/> input?)</code>
24693tuples.<wbr/></p>
24694<p>For a given use case,<wbr/> the actual maximum supported resolution
24695may be lower than what is listed here,<wbr/> depending on the destination
24696Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/>
24697the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p)
24698smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448)
24699can provide.<wbr/></p>
24700<p>Please reference the documentation for the image data destination to
24701check if it limits the maximum size for image data.<wbr/></p>
24702<p>Not all output formats may be supported in a configuration with
24703an input stream of a particular format.<wbr/> For more details,<wbr/> see
24704<a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a>.<wbr/></p>
24705<p>For applications targeting SDK version older than 31,<wbr/> the following table
24706describes the minimum required output stream configurations based on the hardware level
24707(<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>):</p>
24708<table>
24709<thead>
24710<tr>
24711<th style="text-align: center;">Format</th>
24712<th style="text-align: center;">Size</th>
24713<th style="text-align: center;">Hardware Level</th>
24714<th style="text-align: center;">Notes</th>
24715</tr>
24716</thead>
24717<tbody>
24718<tr>
24719<td style="text-align: center;">JPEG</td>
24720<td style="text-align: center;"><a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></td>
24721<td style="text-align: center;">Any</td>
24722<td style="text-align: center;"></td>
24723</tr>
24724<tr>
24725<td style="text-align: center;">JPEG</td>
24726<td style="text-align: center;">1920x1080 (1080p)</td>
24727<td style="text-align: center;">Any</td>
24728<td style="text-align: center;">if 1080p &lt;= activeArraySize</td>
24729</tr>
24730<tr>
24731<td style="text-align: center;">JPEG</td>
24732<td style="text-align: center;">1280x720 (720)</td>
24733<td style="text-align: center;">Any</td>
24734<td style="text-align: center;">if 720p &lt;= activeArraySize</td>
24735</tr>
24736<tr>
24737<td style="text-align: center;">JPEG</td>
24738<td style="text-align: center;">640x480 (480p)</td>
24739<td style="text-align: center;">Any</td>
24740<td style="text-align: center;">if 480p &lt;= activeArraySize</td>
24741</tr>
24742<tr>
24743<td style="text-align: center;">JPEG</td>
24744<td style="text-align: center;">320x240 (240p)</td>
24745<td style="text-align: center;">Any</td>
24746<td style="text-align: center;">if 240p &lt;= activeArraySize</td>
24747</tr>
24748<tr>
24749<td style="text-align: center;">YUV_<wbr/>420_<wbr/>888</td>
24750<td style="text-align: center;">all output sizes available for JPEG</td>
24751<td style="text-align: center;">FULL</td>
24752<td style="text-align: center;"></td>
24753</tr>
24754<tr>
24755<td style="text-align: center;">YUV_<wbr/>420_<wbr/>888</td>
24756<td style="text-align: center;">all output sizes available for JPEG,<wbr/> up to the maximum video size</td>
24757<td style="text-align: center;">LIMITED</td>
24758<td style="text-align: center;"></td>
24759</tr>
24760<tr>
24761<td style="text-align: center;">IMPLEMENTATION_<wbr/>DEFINED</td>
24762<td style="text-align: center;">same as YUV_<wbr/>420_<wbr/>888</td>
24763<td style="text-align: center;">Any</td>
24764<td style="text-align: center;"></td>
24765</tr>
24766</tbody>
24767</table>
24768<p>For applications targeting SDK version 31 or newer,<wbr/> if the mobile device declares to be
24769media performance class 12 or higher by setting
24770<a href="https://developer.android.com/reference/android/os/Build.VERSION.html#MEDIA_PERFORMANCE_CLASS">VERSION#MEDIA_<wbr/>PERFORMANCE_<wbr/>CLASS</a> to be 31 or larger,<wbr/>
24771the primary camera devices (first rear/<wbr/>front camera in the camera ID list) will not
24772support JPEG sizes smaller than 1080p.<wbr/> If the application configures a JPEG stream
24773smaller than 1080p,<wbr/> the camera device will round up the JPEG image size to at least
247741080p.<wbr/> The requirements for IMPLEMENTATION_<wbr/>DEFINED and YUV_<wbr/>420_<wbr/>888 stay the same.<wbr/>
24775This new minimum required output stream configurations are illustrated by the table below:</p>
24776<table>
24777<thead>
24778<tr>
24779<th style="text-align: center;">Format</th>
24780<th style="text-align: center;">Size</th>
24781<th style="text-align: center;">Hardware Level</th>
24782<th style="text-align: center;">Notes</th>
24783</tr>
24784</thead>
24785<tbody>
24786<tr>
24787<td style="text-align: center;">JPEG</td>
24788<td style="text-align: center;"><a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></td>
24789<td style="text-align: center;">Any</td>
24790<td style="text-align: center;"></td>
24791</tr>
24792<tr>
24793<td style="text-align: center;">JPEG</td>
24794<td style="text-align: center;">1920x1080 (1080p)</td>
24795<td style="text-align: center;">Any</td>
24796<td style="text-align: center;">if 1080p &lt;= activeArraySize</td>
24797</tr>
24798<tr>
24799<td style="text-align: center;">YUV_<wbr/>420_<wbr/>888</td>
24800<td style="text-align: center;"><a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></td>
24801<td style="text-align: center;">FULL</td>
24802<td style="text-align: center;"></td>
24803</tr>
24804<tr>
24805<td style="text-align: center;">YUV_<wbr/>420_<wbr/>888</td>
24806<td style="text-align: center;">1920x1080 (1080p)</td>
24807<td style="text-align: center;">FULL</td>
24808<td style="text-align: center;">if 1080p &lt;= activeArraySize</td>
24809</tr>
24810<tr>
24811<td style="text-align: center;">YUV_<wbr/>420_<wbr/>888</td>
24812<td style="text-align: center;">1280x720 (720)</td>
24813<td style="text-align: center;">FULL</td>
24814<td style="text-align: center;">if 720p &lt;= activeArraySize</td>
24815</tr>
24816<tr>
24817<td style="text-align: center;">YUV_<wbr/>420_<wbr/>888</td>
24818<td style="text-align: center;">640x480 (480p)</td>
24819<td style="text-align: center;">FULL</td>
24820<td style="text-align: center;">if 480p &lt;= activeArraySize</td>
24821</tr>
24822<tr>
24823<td style="text-align: center;">YUV_<wbr/>420_<wbr/>888</td>
24824<td style="text-align: center;">320x240 (240p)</td>
24825<td style="text-align: center;">FULL</td>
24826<td style="text-align: center;">if 240p &lt;= activeArraySize</td>
24827</tr>
24828<tr>
24829<td style="text-align: center;">YUV_<wbr/>420_<wbr/>888</td>
24830<td style="text-align: center;">all output sizes available for FULL hardware level,<wbr/> up to the maximum video size</td>
24831<td style="text-align: center;">LIMITED</td>
24832<td style="text-align: center;"></td>
24833</tr>
24834<tr>
24835<td style="text-align: center;">IMPLEMENTATION_<wbr/>DEFINED</td>
24836<td style="text-align: center;">same as YUV_<wbr/>420_<wbr/>888</td>
24837<td style="text-align: center;">Any</td>
24838<td style="text-align: center;"></td>
24839</tr>
24840</tbody>
24841</table>
24842<p>For applications targeting SDK version 31 or newer,<wbr/> if the mobile device doesn't declare
24843to be media performance class 12 or better by setting
24844<a href="https://developer.android.com/reference/android/os/Build.VERSION.html#MEDIA_PERFORMANCE_CLASS">VERSION#MEDIA_<wbr/>PERFORMANCE_<wbr/>CLASS</a> to be 31 or larger,<wbr/>
24845or if the camera device isn't a primary rear/<wbr/>front camera,<wbr/> the minimum required output
24846stream configurations are the same as for applications targeting SDK version older than
2484731.<wbr/></p>
24848<p>Refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> for additional
24849mandatory stream configurations on a per-capability basis.<wbr/></p>
24850<p>Exception on 176x144 (QCIF) resolution: camera devices usually have a fixed capability for
24851downscaling from larger resolution to smaller,<wbr/> and the QCIF resolution sometimes is not
24852fully supported due to this limitation on devices with high-resolution image sensors.<wbr/>
24853Therefore,<wbr/> trying to configure a QCIF resolution stream together with any other
24854stream larger than 1920x1080 resolution (either width or height) might not be supported,<wbr/>
24855and capture session creation will fail if it is not.<wbr/></p>
24856            </td>
24857          </tr>
24858
24859          <tr class="entries_header">
24860            <th class="th_details" colspan="6">HAL Implementation Details</th>
24861          </tr>
24862          <tr class="entry_cont">
24863            <td class="entry_details" colspan="6">
24864              <p>It is recommended (but not mandatory) to also include half/<wbr/>quarter
24865of sensor maximum resolution for JPEG formats (regardless of hardware
24866level).<wbr/></p>
24867<p>(The following is a rewording of the above required table):</p>
24868<p>For JPEG format,<wbr/> the sizes may be restricted by below conditions:</p>
24869<ul>
24870<li>The HAL may choose the aspect ratio of each Jpeg size to be one of well known ones
24871(e.<wbr/>g.<wbr/> 4:3,<wbr/> 16:9,<wbr/> 3:2 etc.<wbr/>).<wbr/> If the sensor maximum resolution
24872(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/>
24873it does not have to be included in the supported JPEG sizes.<wbr/></li>
24874<li>Some hardware JPEG encoders may have pixel boundary alignment requirements,<wbr/> such as
24875the dimensions being a multiple of 16.<wbr/></li>
24876</ul>
24877<p>Therefore,<wbr/> the maximum JPEG size may be smaller than sensor maximum resolution.<wbr/>
24878However,<wbr/> the largest JPEG size must be as close as possible to the sensor maximum
24879resolution given above constraints.<wbr/> It is required that after aspect ratio adjustments,<wbr/>
24880additional size reduction due to other issues must be less than 3% in area.<wbr/> For example,<wbr/>
24881if the sensor maximum resolution is 3280x2464,<wbr/> if the maximum JPEG size has aspect
24882ratio 4:3,<wbr/> the JPEG encoder alignment requirement is 16,<wbr/> the maximum JPEG size will be
248833264x2448.<wbr/></p>
24884<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/>
24885the HAL must include all YUV_<wbr/>420_<wbr/>888 sizes that have JPEG sizes listed
24886here as output streams.<wbr/></p>
24887<p>It must also include each below resolution if it is smaller than or
24888equal to the sensor maximum resolution (for both YUV_<wbr/>420_<wbr/>888 and JPEG
24889formats),<wbr/> as output streams:</p>
24890<ul>
24891<li>240p (320 x 240)</li>
24892<li>480p (640 x 480)</li>
24893<li>720p (1280 x 720)</li>
24894<li>1080p (1920 x 1080)</li>
24895</ul>
24896<p>Note that for primary cameras (first rear/<wbr/>front facing camera in the camera ID list)
24897on a device with <a href="https://developer.android.com/reference/android/os/Build.VERSION.html#MEDIA_PERFORMANCE_CLASS">VERSION#MEDIA_<wbr/>PERFORMANCE_<wbr/>CLASS</a> set to
2489831 or larger,<wbr/> camera framework filters out JPEG sizes smaller than 1080p depending on
24899applications' targetSdkLevel.<wbr/> The camera HAL must still support the smaller JPEG sizes
24900to maintain backward compatibility.<wbr/></p>
24901<p>For LIMITED capability devices
24902(<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == LIMITED</code>),<wbr/>
24903the HAL only has to list up to the maximum video size
24904supported by the device.<wbr/></p>
24905<p>Regardless of hardware level,<wbr/> every output resolution available for
24906YUV_<wbr/>420_<wbr/>888 must also be available for IMPLEMENTATION_<wbr/>DEFINED.<wbr/></p>
24907<p>This supersedes the following fields,<wbr/> which are now deprecated:</p>
24908<ul>
24909<li>availableFormats</li>
24910<li>available[Processed,<wbr/>Raw,<wbr/>Jpeg]Sizes</li>
24911</ul>
24912            </td>
24913          </tr>
24914
24915          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24916           <!-- end of entry -->
24917
24918
24919          <tr class="entry" id="static_android.scaler.availableMinFrameDurations">
24920            <td class="entry_name
24921             " rowspan="3">
24922              android.<wbr/>scaler.<wbr/>available<wbr/>Min<wbr/>Frame<wbr/>Durations
24923            </td>
24924            <td class="entry_type">
24925                <span class="entry_type_name">int64</span>
24926                <span class="entry_type_container">x</span>
24927
24928                <span class="entry_type_array">
24929                  4 x n
24930                </span>
24931              <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
24932
24933
24934              <span class="entry_type_hwlevel">[legacy] </span>
24935
24936
24937
24938
24939            </td> <!-- entry_type -->
24940
24941            <td class="entry_description">
24942              <p>This lists the minimum frame duration for each
24943format/<wbr/>size combination.<wbr/></p>
24944            </td>
24945
24946            <td class="entry_units">
24947              (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
24948            </td>
24949
24950            <td class="entry_range">
24951            </td>
24952
24953            <td class="entry_hal_version">
24954              <p>3.<wbr/>2</p>
24955            </td>
24956
24957            <td class="entry_tags">
24958              <ul class="entry_tags">
24959                  <li><a href="#tag_V1">V1</a></li>
24960              </ul>
24961            </td>
24962
24963          </tr>
24964          <tr class="entries_header">
24965            <th class="th_details" colspan="6">Details</th>
24966          </tr>
24967          <tr class="entry_cont">
24968            <td class="entry_details" colspan="6">
24969              <p>This should correspond to the frame duration when only that
24970stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode)
24971set to either OFF or FAST.<wbr/></p>
24972<p>When multiple streams are used in a request,<wbr/> the minimum frame
24973duration will be max(individual stream min durations).<wbr/></p>
24974<p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> and
24975<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for more details about
24976calculating the max frame rate.<wbr/></p>
24977            </td>
24978          </tr>
24979
24980
24981          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24982           <!-- end of entry -->
24983
24984
24985          <tr class="entry" id="static_android.scaler.availableStallDurations">
24986            <td class="entry_name
24987             " rowspan="5">
24988              android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations
24989            </td>
24990            <td class="entry_type">
24991                <span class="entry_type_name">int64</span>
24992                <span class="entry_type_container">x</span>
24993
24994                <span class="entry_type_array">
24995                  4 x n
24996                </span>
24997              <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
24998
24999
25000              <span class="entry_type_hwlevel">[legacy] </span>
25001
25002
25003
25004
25005            </td> <!-- entry_type -->
25006
25007            <td class="entry_description">
25008              <p>This lists the maximum stall duration for each
25009output format/<wbr/>size combination.<wbr/></p>
25010            </td>
25011
25012            <td class="entry_units">
25013              (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
25014            </td>
25015
25016            <td class="entry_range">
25017            </td>
25018
25019            <td class="entry_hal_version">
25020              <p>3.<wbr/>2</p>
25021            </td>
25022
25023            <td class="entry_tags">
25024              <ul class="entry_tags">
25025                  <li><a href="#tag_V1">V1</a></li>
25026              </ul>
25027            </td>
25028
25029          </tr>
25030          <tr class="entries_header">
25031            <th class="th_details" colspan="6">Details</th>
25032          </tr>
25033          <tr class="entry_cont">
25034            <td class="entry_details" colspan="6">
25035              <p>A stall duration is how much extra time would get added
25036to the normal minimum frame duration for a repeating request
25037that has streams with non-zero stall.<wbr/></p>
25038<p>For example,<wbr/> consider JPEG captures which have the following
25039characteristics:</p>
25040<ul>
25041<li>JPEG streams act like processed YUV streams in requests for which
25042they are not included; in requests in which they are directly
25043referenced,<wbr/> they act as JPEG streams.<wbr/> This is because supporting a
25044JPEG stream requires the underlying YUV data to always be ready for
25045use by a JPEG encoder,<wbr/> but the encoder will only be used (and impact
25046frame duration) on requests that actually reference a JPEG stream.<wbr/></li>
25047<li>The JPEG processor can run concurrently to the rest of the camera
25048pipeline,<wbr/> but cannot process more than 1 capture at a time.<wbr/></li>
25049</ul>
25050<p>In other words,<wbr/> using a repeating YUV request would result
25051in a steady frame rate (let's say it's 30 FPS).<wbr/> If a single
25052JPEG request is submitted periodically,<wbr/> the frame rate will stay
25053at 30 FPS (as long as we wait for the previous JPEG to return each
25054time).<wbr/> If we try to submit a repeating YUV + JPEG request,<wbr/> then
25055the frame rate will drop from 30 FPS.<wbr/></p>
25056<p>In general,<wbr/> submitting a new request with a non-0 stall time
25057stream will <em>not</em> cause a frame rate drop unless there are still
25058outstanding buffers for that stream from previous requests.<wbr/></p>
25059<p>Submitting a repeating request with streams (call this <code>S</code>)
25060is the same as setting the minimum frame duration from
25061the normal minimum frame duration corresponding to <code>S</code>,<wbr/> added with
25062the maximum stall duration for <code>S</code>.<wbr/></p>
25063<p>If interleaving requests with and without a stall duration,<wbr/>
25064a request will stall by the maximum of the remaining times
25065for each can-stall stream with outstanding buffers.<wbr/></p>
25066<p>This means that a stalling request will not have an exposure start
25067until the stall has completed.<wbr/></p>
25068<p>This should correspond to the stall duration when only that stream is
25069active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode) set to FAST
25070or OFF.<wbr/> Setting any of the processing modes to HIGH_<wbr/>QUALITY
25071effectively results in an indeterminate stall duration for all
25072streams in a request (the regular stall calculation rules are
25073ignored).<wbr/></p>
25074<p>The following formats may always have a stall duration:</p>
25075<ul>
25076<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></li>
25077<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_SENSOR">ImageFormat#RAW_<wbr/>SENSOR</a></li>
25078</ul>
25079<p>The following formats will never have a stall duration:</p>
25080<ul>
25081<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>
25082<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW10">ImageFormat#RAW10</a></li>
25083<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW12">ImageFormat#RAW12</a></li>
25084<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#Y8">ImageFormat#Y8</a></li>
25085</ul>
25086<p>All other formats may or may not have an allowed stall duration on
25087a per-capability basis; refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>
25088for more details.<wbr/></p>
25089<p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> for more information about
25090calculating the max frame rate (absent stalls).<wbr/></p>
25091            </td>
25092          </tr>
25093
25094          <tr class="entries_header">
25095            <th class="th_details" colspan="6">HAL Implementation Details</th>
25096          </tr>
25097          <tr class="entry_cont">
25098            <td class="entry_details" colspan="6">
25099              <p>If possible,<wbr/> it is recommended that all non-JPEG formats
25100(such as RAW16) should not have a stall duration.<wbr/> RAW10,<wbr/> RAW12,<wbr/> RAW_<wbr/>OPAQUE
25101and IMPLEMENTATION_<wbr/>DEFINED must not have stall durations.<wbr/></p>
25102            </td>
25103          </tr>
25104
25105          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25106           <!-- end of entry -->
25107
25108
25109          <tr class="entry" id="static_android.scaler.streamConfigurationMap">
25110            <td class="entry_name
25111             " rowspan="5">
25112              android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map
25113            </td>
25114            <td class="entry_type">
25115                <span class="entry_type_name">int32</span>
25116
25117              <span class="entry_type_visibility"> [java_public as streamConfigurationMap]</span>
25118
25119              <span class="entry_type_synthetic">[synthetic] </span>
25120
25121              <span class="entry_type_hwlevel">[legacy] </span>
25122
25123
25124
25125
25126            </td> <!-- entry_type -->
25127
25128            <td class="entry_description">
25129              <p>The available stream configurations that this
25130camera device supports; also includes the minimum frame durations
25131and the stall durations for each format/<wbr/>size combination.<wbr/></p>
25132            </td>
25133
25134            <td class="entry_units">
25135            </td>
25136
25137            <td class="entry_range">
25138            </td>
25139
25140            <td class="entry_hal_version">
25141              <p>3.<wbr/>2</p>
25142            </td>
25143
25144            <td class="entry_tags">
25145            </td>
25146
25147          </tr>
25148          <tr class="entries_header">
25149            <th class="th_details" colspan="6">Details</th>
25150          </tr>
25151          <tr class="entry_cont">
25152            <td class="entry_details" colspan="6">
25153              <p>All camera devices will support sensor maximum resolution (defined by
25154<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>
25155<p>For a given use case,<wbr/> the actual maximum supported resolution
25156may be lower than what is listed here,<wbr/> depending on the destination
25157Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/>
25158the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p)
25159smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448)
25160can provide.<wbr/></p>
25161<p>Please reference the documentation for the image data destination to
25162check if it limits the maximum size for image data.<wbr/></p>
25163<p>For applications targeting SDK version older than 31,<wbr/> the following table
25164describes the minimum required output stream configurations based on the
25165hardware level (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>):</p>
25166<table>
25167<thead>
25168<tr>
25169<th style="text-align: center;">Format</th>
25170<th style="text-align: center;">Size</th>
25171<th style="text-align: center;">Hardware Level</th>
25172<th style="text-align: center;">Notes</th>
25173</tr>
25174</thead>
25175<tbody>
25176<tr>
25177<td style="text-align: center;"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
25178<td style="text-align: center;"><a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> (*1)</td>
25179<td style="text-align: center;">Any</td>
25180<td style="text-align: center;"></td>
25181</tr>
25182<tr>
25183<td style="text-align: center;"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
25184<td style="text-align: center;">1920x1080 (1080p)</td>
25185<td style="text-align: center;">Any</td>
25186<td style="text-align: center;">if 1080p &lt;= activeArraySize</td>
25187</tr>
25188<tr>
25189<td style="text-align: center;"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
25190<td style="text-align: center;">1280x720 (720p)</td>
25191<td style="text-align: center;">Any</td>
25192<td style="text-align: center;">if 720p &lt;= activeArraySize</td>
25193</tr>
25194<tr>
25195<td style="text-align: center;"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
25196<td style="text-align: center;">640x480 (480p)</td>
25197<td style="text-align: center;">Any</td>
25198<td style="text-align: center;">if 480p &lt;= activeArraySize</td>
25199</tr>
25200<tr>
25201<td style="text-align: center;"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
25202<td style="text-align: center;">320x240 (240p)</td>
25203<td style="text-align: center;">Any</td>
25204<td style="text-align: center;">if 240p &lt;= activeArraySize</td>
25205</tr>
25206<tr>
25207<td style="text-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>
25208<td style="text-align: center;">all output sizes available for JPEG</td>
25209<td style="text-align: center;">FULL</td>
25210<td style="text-align: center;"></td>
25211</tr>
25212<tr>
25213<td style="text-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>
25214<td style="text-align: center;">all output sizes available for JPEG,<wbr/> up to the maximum video size</td>
25215<td style="text-align: center;">LIMITED</td>
25216<td style="text-align: center;"></td>
25217</tr>
25218<tr>
25219<td style="text-align: center;"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td>
25220<td style="text-align: center;">same as YUV_<wbr/>420_<wbr/>888</td>
25221<td style="text-align: center;">Any</td>
25222<td style="text-align: center;"></td>
25223</tr>
25224</tbody>
25225</table>
25226<p>For applications targeting SDK version 31 or newer,<wbr/> if the mobile device declares to be
25227media performance class 12 or higher by setting
25228<a href="https://developer.android.com/reference/android/os/Build.VERSION.html#MEDIA_PERFORMANCE_CLASS">VERSION#MEDIA_<wbr/>PERFORMANCE_<wbr/>CLASS</a> to be 31 or larger,<wbr/>
25229the primary camera devices (first rear/<wbr/>front camera in the camera ID list) will not
25230support JPEG sizes smaller than 1080p.<wbr/> If the application configures a JPEG stream
25231smaller than 1080p,<wbr/> the camera device will round up the JPEG image size to at least
252321080p.<wbr/> The requirements for IMPLEMENTATION_<wbr/>DEFINED and YUV_<wbr/>420_<wbr/>888 stay the same.<wbr/>
25233This new minimum required output stream configurations are illustrated by the table below:</p>
25234<table>
25235<thead>
25236<tr>
25237<th style="text-align: center;">Format</th>
25238<th style="text-align: center;">Size</th>
25239<th style="text-align: center;">Hardware Level</th>
25240<th style="text-align: center;">Notes</th>
25241</tr>
25242</thead>
25243<tbody>
25244<tr>
25245<td style="text-align: center;"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
25246<td style="text-align: center;"><a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> (*1)</td>
25247<td style="text-align: center;">Any</td>
25248<td style="text-align: center;"></td>
25249</tr>
25250<tr>
25251<td style="text-align: center;"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
25252<td style="text-align: center;">1920x1080 (1080p)</td>
25253<td style="text-align: center;">Any</td>
25254<td style="text-align: center;">if 1080p &lt;= activeArraySize</td>
25255</tr>
25256<tr>
25257<td style="text-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>
25258<td style="text-align: center;"><a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></td>
25259<td style="text-align: center;">FULL</td>
25260<td style="text-align: center;"></td>
25261</tr>
25262<tr>
25263<td style="text-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>
25264<td style="text-align: center;">1920x1080 (1080p)</td>
25265<td style="text-align: center;">FULL</td>
25266<td style="text-align: center;">if 1080p &lt;= activeArraySize</td>
25267</tr>
25268<tr>
25269<td style="text-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>
25270<td style="text-align: center;">1280x720 (720)</td>
25271<td style="text-align: center;">FULL</td>
25272<td style="text-align: center;">if 720p &lt;= activeArraySize</td>
25273</tr>
25274<tr>
25275<td style="text-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>
25276<td style="text-align: center;">640x480 (480p)</td>
25277<td style="text-align: center;">FULL</td>
25278<td style="text-align: center;">if 480p &lt;= activeArraySize</td>
25279</tr>
25280<tr>
25281<td style="text-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>
25282<td style="text-align: center;">320x240 (240p)</td>
25283<td style="text-align: center;">FULL</td>
25284<td style="text-align: center;">if 240p &lt;= activeArraySize</td>
25285</tr>
25286<tr>
25287<td style="text-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>
25288<td style="text-align: center;">all output sizes available for FULL hardware level,<wbr/> up to the maximum video size</td>
25289<td style="text-align: center;">LIMITED</td>
25290<td style="text-align: center;"></td>
25291</tr>
25292<tr>
25293<td style="text-align: center;"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td>
25294<td style="text-align: center;">same as YUV_<wbr/>420_<wbr/>888</td>
25295<td style="text-align: center;">Any</td>
25296<td style="text-align: center;"></td>
25297</tr>
25298</tbody>
25299</table>
25300<p>For applications targeting SDK version 31 or newer,<wbr/> if the mobile device doesn't declare
25301to be media performance class 12 or better by setting
25302<a href="https://developer.android.com/reference/android/os/Build.VERSION.html#MEDIA_PERFORMANCE_CLASS">VERSION#MEDIA_<wbr/>PERFORMANCE_<wbr/>CLASS</a> to be 31 or larger,<wbr/>
25303or if the camera device isn't a primary rear/<wbr/>front camera,<wbr/> the minimum required output
25304stream configurations are the same as for applications targeting SDK version older than
2530531.<wbr/></p>
25306<p>Refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> and
25307<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice#legacy-level-guaranteed-configurations">the table</a>
25308for additional mandatory stream configurations on a per-capability basis.<wbr/></p>
25309<p>*1: For JPEG format,<wbr/> the sizes may be restricted by below conditions:</p>
25310<ul>
25311<li>The HAL may choose the aspect ratio of each Jpeg size to be one of well known ones
25312(e.<wbr/>g.<wbr/> 4:3,<wbr/> 16:9,<wbr/> 3:2 etc.<wbr/>).<wbr/> If the sensor maximum resolution
25313(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/>
25314it does not have to be included in the supported JPEG sizes.<wbr/></li>
25315<li>Some hardware JPEG encoders may have pixel boundary alignment requirements,<wbr/> such as
25316the dimensions being a multiple of 16.<wbr/>
25317Therefore,<wbr/> the maximum JPEG size may be smaller than sensor maximum resolution.<wbr/>
25318However,<wbr/> the largest JPEG size will be as close as possible to the sensor maximum
25319resolution given above constraints.<wbr/> It is required that after aspect ratio adjustments,<wbr/>
25320additional size reduction due to other issues must be less than 3% in area.<wbr/> For example,<wbr/>
25321if the sensor maximum resolution is 3280x2464,<wbr/> if the maximum JPEG size has aspect
25322ratio 4:3,<wbr/> and the JPEG encoder alignment requirement is 16,<wbr/> the maximum JPEG size will be
253233264x2448.<wbr/></li>
25324</ul>
25325<p>Exception on 176x144 (QCIF) resolution: camera devices usually have a fixed capability on
25326downscaling from larger resolution to smaller ones,<wbr/> and the QCIF resolution can sometimes
25327not be fully supported due to this limitation on devices with high-resolution image
25328sensors.<wbr/> Therefore,<wbr/> trying to configure a QCIF resolution stream together with any other
25329stream larger than 1920x1080 resolution (either width or height) might not be supported,<wbr/>
25330and capture session creation will fail if it is not.<wbr/></p>
25331            </td>
25332          </tr>
25333
25334          <tr class="entries_header">
25335            <th class="th_details" colspan="6">HAL Implementation Details</th>
25336          </tr>
25337          <tr class="entry_cont">
25338            <td class="entry_details" colspan="6">
25339              <p>Do not set this property directly
25340(it is synthetic and will not be available at the HAL layer);
25341set the <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> instead.<wbr/></p>
25342<p>Not all output formats may be supported in a configuration with
25343an input stream of a particular format.<wbr/> For more details,<wbr/> see
25344<a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a>.<wbr/></p>
25345<p>It is recommended (but not mandatory) to also include half/<wbr/>quarter
25346of sensor maximum resolution for JPEG formats (regardless of hardware
25347level).<wbr/></p>
25348<p>(The following is a rewording of the above required table):</p>
25349<p>The HAL must include sensor maximum resolution (defined by
25350<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>).<wbr/></p>
25351<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/>
25352the HAL must include all YUV_<wbr/>420_<wbr/>888 sizes that have JPEG sizes listed
25353here as output streams.<wbr/></p>
25354<p>It must also include each below resolution if it is smaller than or
25355equal to the sensor maximum resolution (for both YUV_<wbr/>420_<wbr/>888 and JPEG
25356formats),<wbr/> as output streams:</p>
25357<ul>
25358<li>240p (320 x 240)</li>
25359<li>480p (640 x 480)</li>
25360<li>720p (1280 x 720)</li>
25361<li>1080p (1920 x 1080)</li>
25362</ul>
25363<p>Note that for Performance Class 12 or higher primary cameras (first rear/<wbr/>front facing
25364camera in the camera ID list),<wbr/> camera framework filters out JPEG sizes smaller than
253651080p depending on applications' targetSdkLevel.<wbr/> The camera HAL must still support the
25366smaller JPEG sizes to maintain backward compatibility.<wbr/></p>
25367<p>For LIMITED capability devices
25368(<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == LIMITED</code>),<wbr/>
25369the HAL only has to list up to the maximum video size
25370supported by the device.<wbr/></p>
25371<p>Regardless of hardware level,<wbr/> every output resolution available for
25372YUV_<wbr/>420_<wbr/>888 must also be available for IMPLEMENTATION_<wbr/>DEFINED.<wbr/></p>
25373<p>This supersedes the following fields,<wbr/> which are now deprecated:</p>
25374<ul>
25375<li>availableFormats</li>
25376<li>available[Processed,<wbr/>Raw,<wbr/>Jpeg]Sizes</li>
25377</ul>
25378            </td>
25379          </tr>
25380
25381          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25382           <!-- end of entry -->
25383
25384
25385          <tr class="entry" id="static_android.scaler.croppingType">
25386            <td class="entry_name
25387             " rowspan="5">
25388              android.<wbr/>scaler.<wbr/>cropping<wbr/>Type
25389            </td>
25390            <td class="entry_type">
25391                <span class="entry_type_name entry_type_name_enum">byte</span>
25392
25393              <span class="entry_type_visibility"> [public]</span>
25394
25395
25396              <span class="entry_type_hwlevel">[legacy] </span>
25397
25398
25399
25400                <ul class="entry_type_enum">
25401                  <li>
25402                    <span class="entry_type_enum_name">CENTER_ONLY (v3.2)</span>
25403                    <span class="entry_type_enum_notes"><p>The camera device only supports centered crop regions.<wbr/></p></span>
25404                  </li>
25405                  <li>
25406                    <span class="entry_type_enum_name">FREEFORM (v3.2)</span>
25407                    <span class="entry_type_enum_notes"><p>The camera device supports arbitrarily chosen crop regions.<wbr/></p></span>
25408                  </li>
25409                </ul>
25410
25411            </td> <!-- entry_type -->
25412
25413            <td class="entry_description">
25414              <p>The crop type that this camera device supports.<wbr/></p>
25415            </td>
25416
25417            <td class="entry_units">
25418            </td>
25419
25420            <td class="entry_range">
25421            </td>
25422
25423            <td class="entry_hal_version">
25424              <p>3.<wbr/>2</p>
25425            </td>
25426
25427            <td class="entry_tags">
25428            </td>
25429
25430          </tr>
25431          <tr class="entries_header">
25432            <th class="th_details" colspan="6">Details</th>
25433          </tr>
25434          <tr class="entry_cont">
25435            <td class="entry_details" colspan="6">
25436              <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
25437device that only supports CENTER_<wbr/>ONLY cropping,<wbr/> the camera device will move the
25438crop 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>)
25439and keep the crop region width and height unchanged.<wbr/> The camera device will return the
25440final used crop region in metadata result <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></p>
25441<p>Camera devices that support FREEFORM cropping will support any crop region that
25442is inside of the active array.<wbr/> The camera device will apply the same crop region and
25443return 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>
25444<p>Starting from API level 30,<wbr/></p>
25445<ul>
25446<li>If the camera device supports FREEFORM cropping,<wbr/> in order to do FREEFORM cropping,<wbr/> the
25447application must set <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> to 1.<wbr/>0,<wbr/> and use <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>
25448for zoom.<wbr/></li>
25449<li>To do CENTER_<wbr/>ONLY zoom,<wbr/> the application has below 2 options:<ol>
25450<li>Set <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> to 1.<wbr/>0; adjust zoom by <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></li>
25451<li>Adjust zoom by <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a>; use <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> to crop
25452the field of view vertically (letterboxing) or horizontally (pillarboxing),<wbr/> but not
25453windowboxing.<wbr/></li>
25454</ol>
25455</li>
25456<li>Setting <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> to values different than 1.<wbr/>0 and
25457<a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> to be windowboxing at the same time are not supported.<wbr/> In this
25458case,<wbr/> the camera framework will override the <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> to be the active
25459array.<wbr/></li>
25460</ul>
25461<p>LEGACY capability devices will only support CENTER_<wbr/>ONLY cropping.<wbr/></p>
25462            </td>
25463          </tr>
25464
25465          <tr class="entries_header">
25466            <th class="th_details" colspan="6">HAL Implementation Details</th>
25467          </tr>
25468          <tr class="entry_cont">
25469            <td class="entry_details" colspan="6">
25470              <p>If the HAL supports <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a>,<wbr/> this tag must be set to CENTER_<wbr/>ONLY.<wbr/></p>
25471            </td>
25472          </tr>
25473
25474          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25475           <!-- end of entry -->
25476
25477
25478          <tr class="entry" id="static_android.scaler.availableRecommendedStreamConfigurations">
25479            <td class="entry_name
25480             " rowspan="5">
25481              android.<wbr/>scaler.<wbr/>available<wbr/>Recommended<wbr/>Stream<wbr/>Configurations
25482            </td>
25483            <td class="entry_type">
25484                <span class="entry_type_name entry_type_name_enum">int32</span>
25485                <span class="entry_type_container">x</span>
25486
25487                <span class="entry_type_array">
25488                  n x 5
25489                </span>
25490              <span class="entry_type_visibility"> [ndk_public as recommendedStreamConfiguration]</span>
25491
25492
25493
25494
25495
25496                <ul class="entry_type_enum">
25497                  <li>
25498                    <span class="entry_type_enum_name">PREVIEW (v3.4)</span>
25499                    <span class="entry_type_enum_value">0x0</span>
25500                    <span class="entry_type_enum_notes"><p>Preview must only include non-stalling processed stream configurations with
25501output formats like
25502<a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a>,<wbr/>
25503<a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a>,<wbr/> etc.<wbr/></p></span>
25504                  </li>
25505                  <li>
25506                    <span class="entry_type_enum_name">RECORD (v3.4)</span>
25507                    <span class="entry_type_enum_value">0x1</span>
25508                    <span class="entry_type_enum_notes"><p>Video record must include stream configurations that match the advertised
25509supported media profiles <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a> with
25510IMPLEMENTATION_<wbr/>DEFINED format.<wbr/></p></span>
25511                  </li>
25512                  <li>
25513                    <span class="entry_type_enum_name">VIDEO_SNAPSHOT (v3.4)</span>
25514                    <span class="entry_type_enum_value">0x2</span>
25515                    <span class="entry_type_enum_notes"><p>Video snapshot must include stream configurations at least as big as
25516the maximum RECORD resolutions and only with
25517<a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">JPEG output format</a>.<wbr/>
25518Additionally the configurations shouldn't cause preview glitches and also be able to
25519run at 30 fps.<wbr/></p></span>
25520                  </li>
25521                  <li>
25522                    <span class="entry_type_enum_name">SNAPSHOT (v3.4)</span>
25523                    <span class="entry_type_enum_value">0x3</span>
25524                    <span class="entry_type_enum_notes"><p>Recommended snapshot stream configurations must include at least one with
25525size close to <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> and
25526<a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">JPEG output format</a>.<wbr/>
25527Taking into account restrictions on aspect ratio,<wbr/> alignment etc.<wbr/> the area of the
25528maximum suggested size shouldn’t be less than 97% of the sensor array size area.<wbr/></p></span>
25529                  </li>
25530                  <li>
25531                    <span class="entry_type_enum_name">ZSL (v3.4)</span>
25532                    <span class="entry_type_enum_value">0x4</span>
25533                    <span class="entry_type_enum_notes"><p>If supported,<wbr/> recommended input stream configurations must only be advertised with
25534ZSL along with other processed and/<wbr/>or stalling output formats.<wbr/></p></span>
25535                  </li>
25536                  <li>
25537                    <span class="entry_type_enum_name">RAW (v3.4)</span>
25538                    <span class="entry_type_enum_value">0x5</span>
25539                    <span class="entry_type_enum_notes"><p>If supported,<wbr/> recommended raw stream configurations must only include RAW based
25540output formats.<wbr/></p></span>
25541                  </li>
25542                  <li>
25543                    <span class="entry_type_enum_name">LOW_LATENCY_SNAPSHOT (v3.4)</span>
25544                    <span class="entry_type_enum_value">0x6</span>
25545                    <span class="entry_type_enum_notes"><p>If supported,<wbr/> the recommended low latency stream configurations must have
25546end-to-end latency that does not exceed 200 ms.<wbr/> under standard operating conditions
25547(reasonable light levels,<wbr/> not loaded system) and using template
25548TEMPLATE_<wbr/>STILL_<wbr/>CAPTURE.<wbr/> This is primarily for listing configurations for the
25549<a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">JPEG output format</a>
25550however other supported output formats can be added as well.<wbr/></p></span>
25551                  </li>
25552                  <li>
25553                    <span class="entry_type_enum_name">PUBLIC_END (v3.4)</span>
25554                    <span class="entry_type_enum_value">0x7</span>
25555                  </li>
25556                  <li>
25557                    <span class="entry_type_enum_name">10BIT_OUTPUT (v3.8)</span>
25558                    <span class="entry_type_enum_value">0x8</span>
25559                    <span class="entry_type_enum_notes"><p>If supported,<wbr/> the recommended 10-bit output stream configurations must include
25560a subset of the advertised <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YCBCR_P010">ImageFormat#YCBCR_<wbr/>P010</a> and
25561<a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> outputs that are optimized for power
25562and performance when registered along with a supported 10-bit dynamic range profile.<wbr/>
25563see android.<wbr/>hardware.<wbr/>camera2.<wbr/>params.<wbr/>Output<wbr/>Configuration#set<wbr/>Dynamic<wbr/>Range<wbr/>Profile for
25564details.<wbr/></p></span>
25565                  </li>
25566                  <li>
25567                    <span class="entry_type_enum_name">PUBLIC_END_3_8 (v3.8)</span>
25568                    <span class="entry_type_enum_value">0x9</span>
25569                  </li>
25570                  <li>
25571                    <span class="entry_type_enum_name">VENDOR_START (v3.4)</span>
25572                    <span class="entry_type_enum_value">0x18</span>
25573                    <span class="entry_type_enum_notes"><p>Vendor defined use cases.<wbr/> These depend on the vendor implementation.<wbr/></p></span>
25574                  </li>
25575                </ul>
25576
25577            </td> <!-- entry_type -->
25578
25579            <td class="entry_description">
25580              <p>Recommended stream configurations for common client use cases.<wbr/></p>
25581            </td>
25582
25583            <td class="entry_units">
25584            </td>
25585
25586            <td class="entry_range">
25587            </td>
25588
25589            <td class="entry_hal_version">
25590              <p>3.<wbr/>4</p>
25591            </td>
25592
25593            <td class="entry_tags">
25594            </td>
25595
25596          </tr>
25597          <tr class="entries_header">
25598            <th class="th_details" colspan="6">Details</th>
25599          </tr>
25600          <tr class="entry_cont">
25601            <td class="entry_details" colspan="6">
25602              <p>Optional subset of the <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> that contains
25603similar tuples listed as
25604(i.<wbr/>e.<wbr/> width,<wbr/> height,<wbr/> format,<wbr/> output/<wbr/>input stream,<wbr/> usecase bit field).<wbr/>
25605Camera devices will be able to suggest particular stream configurations which are
25606power and performance efficient for specific use cases.<wbr/> For more information about
25607retrieving the suggestions see
25608<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getRecommendedStreamConfigurationMap">CameraCharacteristics#getRecommendedStreamConfigurationMap</a>.<wbr/></p>
25609            </td>
25610          </tr>
25611
25612          <tr class="entries_header">
25613            <th class="th_details" colspan="6">HAL Implementation Details</th>
25614          </tr>
25615          <tr class="entry_cont">
25616            <td class="entry_details" colspan="6">
25617              <p>There are some requirements that need to be considered regarding the usecases and the
25618suggested configurations:</p>
25619<ul>
25620<li>If <a href="#static_android.scaler.availableRecommendedStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Recommended<wbr/>Stream<wbr/>Configurations</a> is set,<wbr/> then recommended
25621stream configurations must be present for all mandatory usecases PREVIEW,<wbr/>
25622SNAPSHOT,<wbr/> RECORD,<wbr/> VIDEO_<wbr/>SNAPSHOT.<wbr/> ZSL and RAW are
25623required depending on device capabilities see <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></li>
25624<li>Non-existing usecases and non-vendor usecases within the range
25625(RAW : VENDOR_<wbr/>START] are prohibited as well as stream configurations not
25626present in the exhaustive <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> list.<wbr/></li>
25627</ul>
25628<p>For example,<wbr/> in case the camera device supports only 4K and 1080p and both resolutions are
25629recommended for the mandatory usecases except preview which can run efficiently only
25630on 1080p.<wbr/> The array may look like this:</p>
25631<p>[3840,<wbr/> 2160,<wbr/> HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>IMPLEMENTATION_<wbr/>DEFINED,<wbr/>
25632 ANDROID_<wbr/>SCALER_<wbr/>AVAILABLE_<wbr/>STREAM_<wbr/>CONFIGURATIONS_<wbr/>OUTPUT,<wbr/>
25633 (1&lt;&lt; ANDROID_<wbr/>SCALER_<wbr/>AVAILABLE_<wbr/>RECOMMENDED_<wbr/>STREAM_<wbr/>CONFIGURATIONS_<wbr/>RECORD |<wbr/>
25634 1&lt;&lt; ANDROID_<wbr/>SCALER_<wbr/>AVAILABLE_<wbr/>RECOMMENDED_<wbr/>STREAM_<wbr/>CONFIGURATIONS_<wbr/>SNAPSHOT |<wbr/>
25635 1&lt;&lt; ANDROID_<wbr/>SCALER_<wbr/>AVAILABLE_<wbr/>RECOMMENDED_<wbr/>STREAM_<wbr/>CONFIGURATIONS_<wbr/>VIDEO_<wbr/>SNAPSHOT),<wbr/></p>
25636<p>1920,<wbr/> 1080,<wbr/> HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>IMPLEMENTATION_<wbr/>DEFINED,<wbr/>
25637 ANDROID_<wbr/>SCALER_<wbr/>AVAILABLE_<wbr/>STREAM_<wbr/>CONFIGURATIONS_<wbr/>OUTPUT,<wbr/>
25638 (1&lt;&lt; ANDROID_<wbr/>SCALER_<wbr/>AVAILABLE_<wbr/>RECOMMENDED_<wbr/>STREAM_<wbr/>CONFIGURATIONS_<wbr/>PREVIEW |<wbr/>
25639 1&lt;&lt; ANDROID_<wbr/>SCALER_<wbr/>AVAILABLE_<wbr/>RECOMMENDED_<wbr/>STREAM_<wbr/>CONFIGURATIONS_<wbr/>RECORD |<wbr/>
25640 1&lt;&lt; ANDROID_<wbr/>SCALER_<wbr/>AVAILABLE_<wbr/>RECOMMENDED_<wbr/>STREAM_<wbr/>CONFIGURATIONS_<wbr/>SNAPSHOT |<wbr/>
25641 1&lt;&lt; ANDROID_<wbr/>SCALER_<wbr/>AVAILABLE_<wbr/>RECOMMENDED_<wbr/>STREAM_<wbr/>CONFIGURATIONS_<wbr/>VIDEO_<wbr/>SNAPSHOT)]</p>
25642            </td>
25643          </tr>
25644
25645          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25646           <!-- end of entry -->
25647
25648
25649          <tr class="entry" id="static_android.scaler.availableRecommendedInputOutputFormatsMap">
25650            <td class="entry_name
25651             " rowspan="5">
25652              android.<wbr/>scaler.<wbr/>available<wbr/>Recommended<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map
25653            </td>
25654            <td class="entry_type">
25655                <span class="entry_type_name">int32</span>
25656
25657              <span class="entry_type_visibility"> [ndk_public as reprocessFormatsMap]</span>
25658
25659
25660
25661
25662
25663
25664            </td> <!-- entry_type -->
25665
25666            <td class="entry_description">
25667              <p>Recommended mappings of image formats that are supported by this
25668camera device for input streams,<wbr/> to their corresponding output formats.<wbr/></p>
25669            </td>
25670
25671            <td class="entry_units">
25672            </td>
25673
25674            <td class="entry_range">
25675            </td>
25676
25677            <td class="entry_hal_version">
25678              <p>3.<wbr/>4</p>
25679            </td>
25680
25681            <td class="entry_tags">
25682              <ul class="entry_tags">
25683                  <li><a href="#tag_REPROC">REPROC</a></li>
25684              </ul>
25685            </td>
25686
25687          </tr>
25688          <tr class="entries_header">
25689            <th class="th_details" colspan="6">Details</th>
25690          </tr>
25691          <tr class="entry_cont">
25692            <td class="entry_details" colspan="6">
25693              <p>This is a recommended subset of the complete list of mappings found in
25694<a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a>.<wbr/> The same requirements apply here as well.<wbr/>
25695The list however doesn't need to contain all available and supported mappings.<wbr/> Instead of
25696this developers must list only recommended and efficient entries.<wbr/>
25697If set,<wbr/> the information will be available in the ZERO_<wbr/>SHUTTER_<wbr/>LAG recommended stream
25698configuration see
25699<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getRecommendedStreamConfigurationMap">CameraCharacteristics#getRecommendedStreamConfigurationMap</a>.<wbr/></p>
25700            </td>
25701          </tr>
25702
25703          <tr class="entries_header">
25704            <th class="th_details" colspan="6">HAL Implementation Details</th>
25705          </tr>
25706          <tr class="entry_cont">
25707            <td class="entry_details" colspan="6">
25708              <p>For a code sample of the required data encoding please check
25709<a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a>.<wbr/></p>
25710            </td>
25711          </tr>
25712
25713          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25714           <!-- end of entry -->
25715
25716
25717          <tr class="entry" id="static_android.scaler.mandatoryStreamCombinations">
25718            <td class="entry_name
25719             " rowspan="5">
25720              android.<wbr/>scaler.<wbr/>mandatory<wbr/>Stream<wbr/>Combinations
25721            </td>
25722            <td class="entry_type">
25723                <span class="entry_type_name">int32</span>
25724                <span class="entry_type_container">x</span>
25725
25726                <span class="entry_type_array">
25727                  n
25728                </span>
25729              <span class="entry_type_visibility"> [java_public as mandatoryStreamCombination]</span>
25730
25731              <span class="entry_type_synthetic">[synthetic] </span>
25732
25733              <span class="entry_type_hwlevel">[limited] </span>
25734
25735
25736
25737
25738            </td> <!-- entry_type -->
25739
25740            <td class="entry_description">
25741              <p>An array of mandatory stream combinations generated according to the camera device
25742<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#INFO_SUPPORTED_HARDWARE_LEVEL">Camera<wbr/>Characteristics#INFO_<wbr/>SUPPORTED_<wbr/>HARDWARE_<wbr/>LEVEL</a>
25743and <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#REQUEST_AVAILABLE_CAPABILITIES">Camera<wbr/>Characteristics#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES</a>.<wbr/>
25744This is an app-readable conversion of the mandatory stream combination
25745<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice#legacy-level-guaranteed-configurations">tables</a>.<wbr/></p>
25746            </td>
25747
25748            <td class="entry_units">
25749            </td>
25750
25751            <td class="entry_range">
25752            </td>
25753
25754            <td class="entry_hal_version">
25755              <p>3.<wbr/>2</p>
25756            </td>
25757
25758            <td class="entry_tags">
25759            </td>
25760
25761          </tr>
25762          <tr class="entries_header">
25763            <th class="th_details" colspan="6">Details</th>
25764          </tr>
25765          <tr class="entry_cont">
25766            <td class="entry_details" colspan="6">
25767              <p>The array of
25768<a href="https://developer.android.com/reference/android/hardware/camera2/params/MandatoryStreamCombination.html">combinations</a> is
25769generated according to the documented
25770<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice#legacy-level-guaranteed-configurations">guideline</a>.<wbr/>
25771based on specific device level and capabilities.<wbr/>
25772Clients can use the array as a quick reference to find an appropriate camera stream
25773combination.<wbr/>
25774As per documentation,<wbr/> the stream combinations with given PREVIEW,<wbr/> RECORD and
25775MAXIMUM resolutions and anything smaller from the list given by
25776<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputSizes">StreamConfigurationMap#getOutputSizes</a> are
25777guaranteed to work.<wbr/>
25778For a physical camera not independently exposed in
25779<a href="https://developer.android.com/reference/android/hardware/camera2/CameraManager.html#getCameraIdList">CameraManager#getCameraIdList</a>,<wbr/> the mandatory stream
25780combinations for that physical camera Id are also generated,<wbr/> so that the application can
25781configure them as physical streams via the logical camera.<wbr/>
25782The mandatory stream combination array will be {@code null} in case the device is not
25783backward compatible.<wbr/></p>
25784            </td>
25785          </tr>
25786
25787          <tr class="entries_header">
25788            <th class="th_details" colspan="6">HAL Implementation Details</th>
25789          </tr>
25790          <tr class="entry_cont">
25791            <td class="entry_details" colspan="6">
25792              <p>Do not set this property directly
25793(it is synthetic and will not be available at the HAL layer).<wbr/></p>
25794            </td>
25795          </tr>
25796
25797          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25798           <!-- end of entry -->
25799
25800
25801          <tr class="entry" id="static_android.scaler.mandatoryConcurrentStreamCombinations">
25802            <td class="entry_name
25803             " rowspan="5">
25804              android.<wbr/>scaler.<wbr/>mandatory<wbr/>Concurrent<wbr/>Stream<wbr/>Combinations
25805            </td>
25806            <td class="entry_type">
25807                <span class="entry_type_name">int32</span>
25808                <span class="entry_type_container">x</span>
25809
25810                <span class="entry_type_array">
25811                  n
25812                </span>
25813              <span class="entry_type_visibility"> [java_public as mandatoryStreamCombination]</span>
25814
25815              <span class="entry_type_synthetic">[synthetic] </span>
25816
25817
25818
25819
25820
25821            </td> <!-- entry_type -->
25822
25823            <td class="entry_description">
25824              <p>An array of mandatory concurrent stream combinations.<wbr/>
25825This is an app-readable conversion of the concurrent mandatory stream combination
25826<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice#concurrent-stream-guaranteed-configurations">tables</a>.<wbr/></p>
25827            </td>
25828
25829            <td class="entry_units">
25830            </td>
25831
25832            <td class="entry_range">
25833            </td>
25834
25835            <td class="entry_hal_version">
25836              <p>3.<wbr/>2</p>
25837            </td>
25838
25839            <td class="entry_tags">
25840            </td>
25841
25842          </tr>
25843          <tr class="entries_header">
25844            <th class="th_details" colspan="6">Details</th>
25845          </tr>
25846          <tr class="entry_cont">
25847            <td class="entry_details" colspan="6">
25848              <p>The array of
25849<a href="https://developer.android.com/reference/android/hardware/camera2/params/MandatoryStreamCombination.html">combinations</a> is
25850generated according to the documented
25851<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice#concurrent-stream-guaranteed-configurations">guideline</a>
25852for each device which has its Id present in the set returned by
25853<a href="https://developer.android.com/reference/android/hardware/camera2/CameraManager.html#getConcurrentCameraIds">CameraManager#getConcurrentCameraIds</a>.<wbr/>
25854Clients can use the array as a quick reference to find an appropriate camera stream
25855combination.<wbr/>
25856The mandatory stream combination array will be {@code null} in case the device is not a
25857part of at least one set of combinations returned by
25858<a href="https://developer.android.com/reference/android/hardware/camera2/CameraManager.html#getConcurrentCameraIds">CameraManager#getConcurrentCameraIds</a>.<wbr/></p>
25859            </td>
25860          </tr>
25861
25862          <tr class="entries_header">
25863            <th class="th_details" colspan="6">HAL Implementation Details</th>
25864          </tr>
25865          <tr class="entry_cont">
25866            <td class="entry_details" colspan="6">
25867              <p>Do not set this property directly
25868(it is synthetic and will not be available at the HAL layer).<wbr/></p>
25869            </td>
25870          </tr>
25871
25872          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25873           <!-- end of entry -->
25874
25875
25876          <tr class="entry" id="static_android.scaler.availableRotateAndCropModes">
25877            <td class="entry_name
25878             " rowspan="3">
25879              android.<wbr/>scaler.<wbr/>available<wbr/>Rotate<wbr/>And<wbr/>Crop<wbr/>Modes
25880            </td>
25881            <td class="entry_type">
25882                <span class="entry_type_name">byte</span>
25883                <span class="entry_type_container">x</span>
25884
25885                <span class="entry_type_array">
25886                  n
25887                </span>
25888              <span class="entry_type_visibility"> [public as enumList]</span>
25889
25890
25891
25892
25893                <div class="entry_type_notes">list of enums</div>
25894
25895
25896            </td> <!-- entry_type -->
25897
25898            <td class="entry_description">
25899              <p>List of rotate-and-crop modes for <a href="#controls_android.scaler.rotateAndCrop">android.<wbr/>scaler.<wbr/>rotate<wbr/>And<wbr/>Crop</a> that are supported by this camera device.<wbr/></p>
25900            </td>
25901
25902            <td class="entry_units">
25903            </td>
25904
25905            <td class="entry_range">
25906              <p>Any value listed in <a href="#controls_android.scaler.rotateAndCrop">android.<wbr/>scaler.<wbr/>rotate<wbr/>And<wbr/>Crop</a></p>
25907            </td>
25908
25909            <td class="entry_hal_version">
25910              <p>3.<wbr/>5</p>
25911            </td>
25912
25913            <td class="entry_tags">
25914            </td>
25915
25916          </tr>
25917          <tr class="entries_header">
25918            <th class="th_details" colspan="6">Details</th>
25919          </tr>
25920          <tr class="entry_cont">
25921            <td class="entry_details" colspan="6">
25922              <p>This entry lists the valid modes for <a href="#controls_android.scaler.rotateAndCrop">android.<wbr/>scaler.<wbr/>rotate<wbr/>And<wbr/>Crop</a> for this camera device.<wbr/></p>
25923<p>Starting with API level 30,<wbr/> all devices will list at least <code>ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>NONE</code>.<wbr/>
25924Devices with support for rotate-and-crop will additionally list at least
25925<code>ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>AUTO</code> and <code>ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>90</code>.<wbr/></p>
25926            </td>
25927          </tr>
25928
25929
25930          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25931           <!-- end of entry -->
25932
25933
25934          <tr class="entry" id="static_android.scaler.defaultSecureImageSize">
25935            <td class="entry_name
25936             " rowspan="3">
25937              android.<wbr/>scaler.<wbr/>default<wbr/>Secure<wbr/>Image<wbr/>Size
25938            </td>
25939            <td class="entry_type">
25940                <span class="entry_type_name">int32</span>
25941                <span class="entry_type_container">x</span>
25942
25943                <span class="entry_type_array">
25944                  2
25945                </span>
25946              <span class="entry_type_visibility"> [public as size]</span>
25947
25948
25949
25950
25951                <div class="entry_type_notes">width/<wbr/>height for the default secure image data size</div>
25952
25953
25954            </td> <!-- entry_type -->
25955
25956            <td class="entry_description">
25957              <p>Default YUV/<wbr/>PRIVATE size to use for requesting secure image buffers.<wbr/></p>
25958            </td>
25959
25960            <td class="entry_units">
25961              Pixels
25962            </td>
25963
25964            <td class="entry_range">
25965            </td>
25966
25967            <td class="entry_hal_version">
25968              <p>3.<wbr/>6</p>
25969            </td>
25970
25971            <td class="entry_tags">
25972            </td>
25973
25974          </tr>
25975          <tr class="entries_header">
25976            <th class="th_details" colspan="6">Details</th>
25977          </tr>
25978          <tr class="entry_cont">
25979            <td class="entry_details" colspan="6">
25980              <p>This entry lists the default size supported in the secure camera mode.<wbr/> This entry is
25981optional on devices support the SECURE_<wbr/>IMAGE_<wbr/>DATA capability.<wbr/> This entry will be null
25982if the camera device does not list SECURE_<wbr/>IMAGE_<wbr/>DATA capability.<wbr/></p>
25983<p>When the key is present,<wbr/> only a PRIVATE/<wbr/>YUV output of the specified size is guaranteed
25984to be supported by the camera HAL in the secure camera mode.<wbr/> Any other format or
25985resolutions might not be supported.<wbr/> Use
25986<a href="https://developer.android.com/reference/CameraDevice.html#isSessionConfigurationSupported">CameraDevice#isSessionConfigurationSupported</a>
25987API to query if a secure session configuration is supported if the device supports this
25988API.<wbr/></p>
25989<p>If this key returns null on a device with SECURE_<wbr/>IMAGE_<wbr/>DATA capability,<wbr/> the application
25990can assume all output sizes listed in the
25991<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html">StreamConfigurationMap</a>
25992are supported.<wbr/></p>
25993            </td>
25994          </tr>
25995
25996
25997          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25998           <!-- end of entry -->
25999
26000
26001          <tr class="entry" id="static_android.scaler.physicalCameraMultiResolutionStreamConfigurations">
26002            <td class="entry_name
26003             " rowspan="5">
26004              android.<wbr/>scaler.<wbr/>physical<wbr/>Camera<wbr/>Multi<wbr/>Resolution<wbr/>Stream<wbr/>Configurations
26005            </td>
26006            <td class="entry_type">
26007                <span class="entry_type_name entry_type_name_enum">int32</span>
26008                <span class="entry_type_container">x</span>
26009
26010                <span class="entry_type_array">
26011                  n x 4
26012                </span>
26013              <span class="entry_type_visibility"> [ndk_public as streamConfiguration]</span>
26014
26015
26016              <span class="entry_type_hwlevel">[limited] </span>
26017
26018
26019
26020                <ul class="entry_type_enum">
26021                  <li>
26022                    <span class="entry_type_enum_name">OUTPUT (v3.6)</span>
26023                  </li>
26024                  <li>
26025                    <span class="entry_type_enum_name">INPUT (v3.6)</span>
26026                  </li>
26027                </ul>
26028
26029            </td> <!-- entry_type -->
26030
26031            <td class="entry_description">
26032              <p>The available multi-resolution stream configurations that this
26033physical camera device supports
26034(i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p>
26035            </td>
26036
26037            <td class="entry_units">
26038            </td>
26039
26040            <td class="entry_range">
26041            </td>
26042
26043            <td class="entry_hal_version">
26044              <p>3.<wbr/>6</p>
26045            </td>
26046
26047            <td class="entry_tags">
26048            </td>
26049
26050          </tr>
26051          <tr class="entries_header">
26052            <th class="th_details" colspan="6">Details</th>
26053          </tr>
26054          <tr class="entry_cont">
26055            <td class="entry_details" colspan="6">
26056              <p>This list contains a subset of the parent logical camera's multi-resolution stream
26057configurations which belong to this physical camera,<wbr/> and it will advertise and will only
26058advertise the maximum supported resolutions for a particular format.<wbr/></p>
26059<p>If this camera device isn't a physical camera device constituting a logical camera,<wbr/>
26060but a standalone <a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR">Camera<wbr/>Metadata#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>ULTRA_<wbr/>HIGH_<wbr/>RESOLUTION_<wbr/>SENSOR</a>
26061camera,<wbr/> this field represents the multi-resolution input/<wbr/>output stream configurations of
26062default mode and max resolution modes.<wbr/> The sizes will be the maximum resolution of a
26063particular format for default mode and max resolution mode.<wbr/></p>
26064<p>This field will only be advertised if the device is a physical camera of a
26065logical multi-camera device or an ultra high resolution sensor camera.<wbr/> For a logical
26066multi-camera,<wbr/> the camera API will derive the logical camera’s multi-resolution stream
26067configurations from all physical cameras.<wbr/> For an ultra high resolution sensor camera,<wbr/> this
26068is used directly as the camera’s multi-resolution stream configurations.<wbr/></p>
26069            </td>
26070          </tr>
26071
26072          <tr class="entries_header">
26073            <th class="th_details" colspan="6">HAL Implementation Details</th>
26074          </tr>
26075          <tr class="entry_cont">
26076            <td class="entry_details" colspan="6">
26077              <p>If this field contains input stream configurations,<wbr/> and the camera device is a physical
26078camera (not a standalone ultra-high resolution camera),<wbr/> the
26079<a href="#dynamic_android.logicalMultiCamera.activePhysicalId">android.<wbr/>logical<wbr/>Multi<wbr/>Camera.<wbr/>active<wbr/>Physical<wbr/>Id</a> tag must be set to the physical camera Id in
26080the physical camera result metadata.<wbr/> This is to make sure during multi-resolution
26081reprocessing,<wbr/> the camera HAL is notified of which physical camera the reprocessing
26082request comes from.<wbr/></p>
26083            </td>
26084          </tr>
26085
26086          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26087           <!-- end of entry -->
26088
26089
26090          <tr class="entry" id="static_android.scaler.multiResolutionStreamConfigurationMap">
26091            <td class="entry_name
26092             " rowspan="5">
26093              android.<wbr/>scaler.<wbr/>multi<wbr/>Resolution<wbr/>Stream<wbr/>Configuration<wbr/>Map
26094            </td>
26095            <td class="entry_type">
26096                <span class="entry_type_name">int32</span>
26097
26098              <span class="entry_type_visibility"> [java_public as multiResolutionStreamConfigurationMap]</span>
26099
26100              <span class="entry_type_synthetic">[synthetic] </span>
26101
26102
26103
26104
26105
26106            </td> <!-- entry_type -->
26107
26108            <td class="entry_description">
26109              <p>The multi-resolution stream configurations supported by this logical camera
26110or ultra high resolution sensor camera device.<wbr/></p>
26111            </td>
26112
26113            <td class="entry_units">
26114            </td>
26115
26116            <td class="entry_range">
26117            </td>
26118
26119            <td class="entry_hal_version">
26120              <p>3.<wbr/>2</p>
26121            </td>
26122
26123            <td class="entry_tags">
26124            </td>
26125
26126          </tr>
26127          <tr class="entries_header">
26128            <th class="th_details" colspan="6">Details</th>
26129          </tr>
26130          <tr class="entry_cont">
26131            <td class="entry_details" colspan="6">
26132              <p>Multi-resolution streams can be used by a LOGICAL_<wbr/>MULTI_<wbr/>CAMERA or an
26133ULTRA_<wbr/>HIGH_<wbr/>RESOLUTION_<wbr/>SENSOR camera where the images sent or received can vary in
26134resolution per frame.<wbr/> This is useful in cases where the camera device's effective full
26135resolution changes depending on factors such as the current zoom level,<wbr/> lighting
26136condition,<wbr/> focus distance,<wbr/> or pixel mode.<wbr/></p>
26137<ul>
26138<li>For a logical multi-camera implementing optical zoom,<wbr/> at different zoom level,<wbr/> a
26139different physical camera may be active,<wbr/> resulting in different full-resolution image
26140sizes.<wbr/></li>
26141<li>For an ultra high resolution camera,<wbr/> depending on whether the camera operates in default
26142mode,<wbr/> or maximum resolution mode,<wbr/> the output full-size images may be of either binned
26143resolution or maximum resolution.<wbr/></li>
26144</ul>
26145<p>To use multi-resolution output streams,<wbr/> the supported formats can be queried by <a href="https://developer.android.com/reference/android/hardware/camera2/params/MultiResolutionStreamConfigurationMap.html#getOutputFormats">MultiResolutionStreamConfigurationMap#getOutputFormats</a>.<wbr/>
26146A <a href="https://developer.android.com/reference/android/hardware/camera2/MultiResolutionImageReader.html">MultiResolutionImageReader</a> can then be created for a
26147supported format with the MultiResolutionStreamInfo group queried by <a href="https://developer.android.com/reference/android/hardware/camera2/params/MultiResolutionStreamConfigurationMap.html#getOutputInfo">MultiResolutionStreamConfigurationMap#getOutputInfo</a>.<wbr/></p>
26148<p>If a camera device supports multi-resolution output streams for a particular format,<wbr/> for
26149each of its mandatory stream combinations,<wbr/> the camera device will support using a
26150MultiResolutionImageReader for the MAXIMUM stream of supported formats.<wbr/> Refer to
26151<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice#legacy-level-additional-guaranteed-combinations-with-multiresolutionoutputs">the table</a>
26152for additional details.<wbr/></p>
26153<p>To use multi-resolution input streams,<wbr/> the supported formats can be queried by <a href="https://developer.android.com/reference/android/hardware/camera2/params/MultiResolutionStreamConfigurationMap.html#getInputFormats">MultiResolutionStreamConfigurationMap#getInputFormats</a>.<wbr/>
26154A reprocessable CameraCaptureSession can then be created using an <a href="https://developer.android.com/reference/android/hardware/camera2/params/InputConfiguration.html">InputConfiguration</a> constructed with
26155the input MultiResolutionStreamInfo group,<wbr/> queried by <a href="https://developer.android.com/reference/android/hardware/camera2/params/MultiResolutionStreamConfigurationMap.html#getInputInfo">MultiResolutionStreamConfigurationMap#getInputInfo</a>.<wbr/></p>
26156<p>If a camera device supports multi-resolution {@code YUV} input and multi-resolution
26157{@code YUV} output,<wbr/> or multi-resolution {@code PRIVATE} input and multi-resolution
26158{@code PRIVATE} output,<wbr/> {@code JPEG} and {@code YUV} are guaranteed to be supported
26159multi-resolution output stream formats.<wbr/> Refer to
26160<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice#legacy-level-additional-guaranteed-combinations-with-multiresolutionoutputs">the table</a>
26161for details about the additional mandatory stream combinations in this case.<wbr/></p>
26162            </td>
26163          </tr>
26164
26165          <tr class="entries_header">
26166            <th class="th_details" colspan="6">HAL Implementation Details</th>
26167          </tr>
26168          <tr class="entry_cont">
26169            <td class="entry_details" colspan="6">
26170              <p>Do not set this property directly
26171(it is synthetic and will not be available at the HAL layer).<wbr/></p>
26172            </td>
26173          </tr>
26174
26175          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26176           <!-- end of entry -->
26177
26178
26179          <tr class="entry" id="static_android.scaler.availableStreamConfigurationsMaximumResolution">
26180            <td class="entry_name
26181             " rowspan="5">
26182              android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations<wbr/>Maximum<wbr/>Resolution
26183            </td>
26184            <td class="entry_type">
26185                <span class="entry_type_name entry_type_name_enum">int32</span>
26186                <span class="entry_type_container">x</span>
26187
26188                <span class="entry_type_array">
26189                  n x 4
26190                </span>
26191              <span class="entry_type_visibility"> [ndk_public as streamConfiguration]</span>
26192
26193
26194
26195
26196
26197                <ul class="entry_type_enum">
26198                  <li>
26199                    <span class="entry_type_enum_name">OUTPUT (v3.6)</span>
26200                  </li>
26201                  <li>
26202                    <span class="entry_type_enum_name">INPUT (v3.6)</span>
26203                  </li>
26204                </ul>
26205
26206            </td> <!-- entry_type -->
26207
26208            <td class="entry_description">
26209              <p>The available stream configurations that this
26210camera device supports (i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream) for a
26211CaptureRequest with <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> set to
26212<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p>
26213            </td>
26214
26215            <td class="entry_units">
26216            </td>
26217
26218            <td class="entry_range">
26219            </td>
26220
26221            <td class="entry_hal_version">
26222              <p>3.<wbr/>6</p>
26223            </td>
26224
26225            <td class="entry_tags">
26226            </td>
26227
26228          </tr>
26229          <tr class="entries_header">
26230            <th class="th_details" colspan="6">Details</th>
26231          </tr>
26232          <tr class="entry_cont">
26233            <td class="entry_details" colspan="6">
26234              <p>Analogous to <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a>,<wbr/> for configurations
26235which are applicable when <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to
26236<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p>
26237<p>Not all output formats may be supported in a configuration with
26238an input stream of a particular format.<wbr/> For more details,<wbr/> see
26239<a href="#static_android.scaler.availableInputOutputFormatsMapMaximumResolution">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map<wbr/>Maximum<wbr/>Resolution</a>.<wbr/></p>
26240            </td>
26241          </tr>
26242
26243          <tr class="entries_header">
26244            <th class="th_details" colspan="6">HAL Implementation Details</th>
26245          </tr>
26246          <tr class="entry_cont">
26247            <td class="entry_details" colspan="6">
26248              <p>Refer to hal_<wbr/>details for <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a>.<wbr/></p>
26249            </td>
26250          </tr>
26251
26252          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26253           <!-- end of entry -->
26254
26255
26256          <tr class="entry" id="static_android.scaler.availableMinFrameDurationsMaximumResolution">
26257            <td class="entry_name
26258             " rowspan="3">
26259              android.<wbr/>scaler.<wbr/>available<wbr/>Min<wbr/>Frame<wbr/>Durations<wbr/>Maximum<wbr/>Resolution
26260            </td>
26261            <td class="entry_type">
26262                <span class="entry_type_name">int64</span>
26263                <span class="entry_type_container">x</span>
26264
26265                <span class="entry_type_array">
26266                  4 x n
26267                </span>
26268              <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
26269
26270
26271
26272
26273
26274
26275            </td> <!-- entry_type -->
26276
26277            <td class="entry_description">
26278              <p>This lists the minimum frame duration for each
26279format/<wbr/>size combination when the camera device is sent a CaptureRequest with
26280<a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> set to
26281<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p>
26282            </td>
26283
26284            <td class="entry_units">
26285              (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
26286            </td>
26287
26288            <td class="entry_range">
26289            </td>
26290
26291            <td class="entry_hal_version">
26292              <p>3.<wbr/>6</p>
26293            </td>
26294
26295            <td class="entry_tags">
26296            </td>
26297
26298          </tr>
26299          <tr class="entries_header">
26300            <th class="th_details" colspan="6">Details</th>
26301          </tr>
26302          <tr class="entry_cont">
26303            <td class="entry_details" colspan="6">
26304              <p>Analogous to <a href="#static_android.scaler.availableMinFrameDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Min<wbr/>Frame<wbr/>Durations</a>,<wbr/> for configurations
26305which are applicable when <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to
26306<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p>
26307<p>When multiple streams are used in a request (if supported,<wbr/> when <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a>
26308is set to
26309<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>),<wbr/> the
26310minimum frame duration will be max(individual stream min durations).<wbr/></p>
26311<p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> and
26312<a href="#static_android.scaler.availableStallDurationsMaximumResolution">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations<wbr/>Maximum<wbr/>Resolution</a> for more details about
26313calculating the max frame rate.<wbr/></p>
26314            </td>
26315          </tr>
26316
26317
26318          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26319           <!-- end of entry -->
26320
26321
26322          <tr class="entry" id="static_android.scaler.availableStallDurationsMaximumResolution">
26323            <td class="entry_name
26324             " rowspan="5">
26325              android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations<wbr/>Maximum<wbr/>Resolution
26326            </td>
26327            <td class="entry_type">
26328                <span class="entry_type_name">int64</span>
26329                <span class="entry_type_container">x</span>
26330
26331                <span class="entry_type_array">
26332                  4 x n
26333                </span>
26334              <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
26335
26336
26337
26338
26339
26340
26341            </td> <!-- entry_type -->
26342
26343            <td class="entry_description">
26344              <p>This lists the maximum stall duration for each
26345output format/<wbr/>size combination when CaptureRequests are submitted with
26346<a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> set to
26347<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a></p>
26348            </td>
26349
26350            <td class="entry_units">
26351              (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
26352            </td>
26353
26354            <td class="entry_range">
26355            </td>
26356
26357            <td class="entry_hal_version">
26358              <p>3.<wbr/>6</p>
26359            </td>
26360
26361            <td class="entry_tags">
26362            </td>
26363
26364          </tr>
26365          <tr class="entries_header">
26366            <th class="th_details" colspan="6">Details</th>
26367          </tr>
26368          <tr class="entry_cont">
26369            <td class="entry_details" colspan="6">
26370              <p>Analogous to <a href="#static_android.scaler.availableMinFrameDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Min<wbr/>Frame<wbr/>Durations</a>,<wbr/> for configurations
26371which are applicable when <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to
26372<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p>
26373            </td>
26374          </tr>
26375
26376          <tr class="entries_header">
26377            <th class="th_details" colspan="6">HAL Implementation Details</th>
26378          </tr>
26379          <tr class="entry_cont">
26380            <td class="entry_details" colspan="6">
26381              <p>If possible,<wbr/> it is recommended that all non-JPEG formats
26382(such as RAW16) should not have a stall duration.<wbr/> RAW10,<wbr/> RAW12,<wbr/> RAW_<wbr/>OPAQUE
26383and IMPLEMENTATION_<wbr/>DEFINED must not have stall durations.<wbr/></p>
26384            </td>
26385          </tr>
26386
26387          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26388           <!-- end of entry -->
26389
26390
26391          <tr class="entry" id="static_android.scaler.streamConfigurationMapMaximumResolution">
26392            <td class="entry_name
26393             " rowspan="5">
26394              android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map<wbr/>Maximum<wbr/>Resolution
26395            </td>
26396            <td class="entry_type">
26397                <span class="entry_type_name">int32</span>
26398
26399              <span class="entry_type_visibility"> [java_public as streamConfigurationMap]</span>
26400
26401              <span class="entry_type_synthetic">[synthetic] </span>
26402
26403
26404
26405
26406
26407            </td> <!-- entry_type -->
26408
26409            <td class="entry_description">
26410              <p>The available stream configurations that this
26411camera device supports when given a CaptureRequest with <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a>
26412set to
26413<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>;
26414also includes the minimum frame durations
26415and the stall durations for each format/<wbr/>size combination.<wbr/></p>
26416            </td>
26417
26418            <td class="entry_units">
26419            </td>
26420
26421            <td class="entry_range">
26422            </td>
26423
26424            <td class="entry_hal_version">
26425              <p>3.<wbr/>2</p>
26426            </td>
26427
26428            <td class="entry_tags">
26429            </td>
26430
26431          </tr>
26432          <tr class="entries_header">
26433            <th class="th_details" colspan="6">Details</th>
26434          </tr>
26435          <tr class="entry_cont">
26436            <td class="entry_details" colspan="6">
26437              <p>Analogous to <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> for CaptureRequests where
26438<a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is
26439<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p>
26440            </td>
26441          </tr>
26442
26443          <tr class="entries_header">
26444            <th class="th_details" colspan="6">HAL Implementation Details</th>
26445          </tr>
26446          <tr class="entry_cont">
26447            <td class="entry_details" colspan="6">
26448              <p>Do not set this property directly
26449(it is synthetic and will not be available at the HAL layer);
26450set the <a href="#static_android.scaler.availableStreamConfigurationsMaximumResolution">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations<wbr/>Maximum<wbr/>Resolution</a> instead.<wbr/></p>
26451<p>Not all output formats may be supported in a configuration with
26452an input stream of a particular format.<wbr/> For more details,<wbr/> see
26453<a href="#static_android.scaler.availableInputOutputFormatsMapMaximumResolution">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map<wbr/>Maximum<wbr/>Resolution</a>.<wbr/></p>
26454            </td>
26455          </tr>
26456
26457          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26458           <!-- end of entry -->
26459
26460
26461          <tr class="entry" id="static_android.scaler.availableInputOutputFormatsMapMaximumResolution">
26462            <td class="entry_name
26463             " rowspan="5">
26464              android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map<wbr/>Maximum<wbr/>Resolution
26465            </td>
26466            <td class="entry_type">
26467                <span class="entry_type_name">int32</span>
26468
26469              <span class="entry_type_visibility"> [hidden as reprocessFormatsMap]</span>
26470
26471
26472
26473
26474
26475
26476            </td> <!-- entry_type -->
26477
26478            <td class="entry_description">
26479              <p>The mapping of image formats that are supported by this
26480camera device for input streams,<wbr/> to their corresponding output formats,<wbr/> when
26481<a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to
26482<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p>
26483            </td>
26484
26485            <td class="entry_units">
26486            </td>
26487
26488            <td class="entry_range">
26489            </td>
26490
26491            <td class="entry_hal_version">
26492              <p>3.<wbr/>6</p>
26493            </td>
26494
26495            <td class="entry_tags">
26496              <ul class="entry_tags">
26497                  <li><a href="#tag_REPROC">REPROC</a></li>
26498              </ul>
26499            </td>
26500
26501          </tr>
26502          <tr class="entries_header">
26503            <th class="th_details" colspan="6">Details</th>
26504          </tr>
26505          <tr class="entry_cont">
26506            <td class="entry_details" colspan="6">
26507              <p>Analogous to <a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a> for CaptureRequests where
26508<a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is
26509<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p>
26510            </td>
26511          </tr>
26512
26513          <tr class="entries_header">
26514            <th class="th_details" colspan="6">HAL Implementation Details</th>
26515          </tr>
26516          <tr class="entry_cont">
26517            <td class="entry_details" colspan="6">
26518              <p>Refer to hal details for <a href="#static_android.scaler.availableInputOutputFormatsMapMaximumResolution">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map<wbr/>Maximum<wbr/>Resolution</a>.<wbr/></p>
26519            </td>
26520          </tr>
26521
26522          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26523           <!-- end of entry -->
26524
26525
26526          <tr class="entry" id="static_android.scaler.mandatoryMaximumResolutionStreamCombinations">
26527            <td class="entry_name
26528             " rowspan="5">
26529              android.<wbr/>scaler.<wbr/>mandatory<wbr/>Maximum<wbr/>Resolution<wbr/>Stream<wbr/>Combinations
26530            </td>
26531            <td class="entry_type">
26532                <span class="entry_type_name">int32</span>
26533                <span class="entry_type_container">x</span>
26534
26535                <span class="entry_type_array">
26536                  n
26537                </span>
26538              <span class="entry_type_visibility"> [java_public as mandatoryStreamCombination]</span>
26539
26540              <span class="entry_type_synthetic">[synthetic] </span>
26541
26542
26543
26544
26545
26546            </td> <!-- entry_type -->
26547
26548            <td class="entry_description">
26549              <p>An array of mandatory stream combinations which are applicable when
26550<a href="https://developer.android.com/reference/android/hardware/camera2/CaptureRequest.html">CaptureRequest</a> has <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> set
26551to <a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/>
26552This is an app-readable conversion of the maximum resolution mandatory stream combination
26553<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice#additional-guaranteed-combinations-for-ultra-high-resolution-sensors">tables</a>.<wbr/></p>
26554            </td>
26555
26556            <td class="entry_units">
26557            </td>
26558
26559            <td class="entry_range">
26560            </td>
26561
26562            <td class="entry_hal_version">
26563              <p>3.<wbr/>2</p>
26564            </td>
26565
26566            <td class="entry_tags">
26567            </td>
26568
26569          </tr>
26570          <tr class="entries_header">
26571            <th class="th_details" colspan="6">Details</th>
26572          </tr>
26573          <tr class="entry_cont">
26574            <td class="entry_details" colspan="6">
26575              <p>The array of
26576<a href="https://developer.android.com/reference/android/hardware/camera2/params/MandatoryStreamCombination.html">combinations</a> is
26577generated according to the documented
26578<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice#additional-guaranteed-combinations-for-ultra-high-resolution-sensors">guideline</a>
26579for each device which has the
26580<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR">Camera<wbr/>Metadata#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>ULTRA_<wbr/>HIGH_<wbr/>RESOLUTION_<wbr/>SENSOR</a>
26581capability.<wbr/>
26582Clients can use the array as a quick reference to find an appropriate camera stream
26583combination.<wbr/>
26584The mandatory stream combination array will be {@code null} in case the device is not an
26585<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR">Camera<wbr/>Metadata#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>ULTRA_<wbr/>HIGH_<wbr/>RESOLUTION_<wbr/>SENSOR</a>
26586device.<wbr/></p>
26587            </td>
26588          </tr>
26589
26590          <tr class="entries_header">
26591            <th class="th_details" colspan="6">HAL Implementation Details</th>
26592          </tr>
26593          <tr class="entry_cont">
26594            <td class="entry_details" colspan="6">
26595              <p>Do not set this property directly
26596(it is synthetic and will not be available at the HAL layer).<wbr/></p>
26597            </td>
26598          </tr>
26599
26600          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26601           <!-- end of entry -->
26602
26603
26604          <tr class="entry" id="static_android.scaler.mandatoryTenBitOutputStreamCombinations">
26605            <td class="entry_name
26606             " rowspan="5">
26607              android.<wbr/>scaler.<wbr/>mandatory<wbr/>Ten<wbr/>Bit<wbr/>Output<wbr/>Stream<wbr/>Combinations
26608            </td>
26609            <td class="entry_type">
26610                <span class="entry_type_name">int32</span>
26611                <span class="entry_type_container">x</span>
26612
26613                <span class="entry_type_array">
26614                  n
26615                </span>
26616              <span class="entry_type_visibility"> [java_public as mandatoryStreamCombination]</span>
26617
26618              <span class="entry_type_synthetic">[synthetic] </span>
26619
26620
26621
26622
26623
26624            </td> <!-- entry_type -->
26625
26626            <td class="entry_description">
26627              <p>An array of mandatory stream combinations which are applicable when device support the
2662810-bit output capability
26629<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#REQUEST_AVAILABLE_CAPABILITIES_DYNAMIC_RANGE_TEN_BIT">Camera<wbr/>Characteristics#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>DYNAMIC_<wbr/>RANGE_<wbr/>TEN_<wbr/>BIT</a>
26630This is an app-readable conversion of the 10 bit output mandatory stream combination
26631<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice#10-bit-output-additional-guaranteed-configurations">tables</a>.<wbr/></p>
26632            </td>
26633
26634            <td class="entry_units">
26635            </td>
26636
26637            <td class="entry_range">
26638            </td>
26639
26640            <td class="entry_hal_version">
26641              <p>3.<wbr/>2</p>
26642            </td>
26643
26644            <td class="entry_tags">
26645            </td>
26646
26647          </tr>
26648          <tr class="entries_header">
26649            <th class="th_details" colspan="6">Details</th>
26650          </tr>
26651          <tr class="entry_cont">
26652            <td class="entry_details" colspan="6">
26653              <p>The array of
26654<a href="https://developer.android.com/reference/android/hardware/camera2/params/MandatoryStreamCombination.html">combinations</a> is
26655generated according to the documented
26656<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice#10-bit-output-additional-guaranteed-configurations">guideline</a>
26657for each device which has the
26658<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#REQUEST_AVAILABLE_CAPABILITIES_DYNAMIC_RANGE_TEN_BIT">Camera<wbr/>Characteristics#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>DYNAMIC_<wbr/>RANGE_<wbr/>TEN_<wbr/>BIT</a>
26659capability.<wbr/>
26660Clients can use the array as a quick reference to find an appropriate camera stream
26661combination.<wbr/>
26662The mandatory stream combination array will be {@code null} in case the device is not an
26663<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#REQUEST_AVAILABLE_CAPABILITIES_DYNAMIC_RANGE_TEN_BIT">Camera<wbr/>Characteristics#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>DYNAMIC_<wbr/>RANGE_<wbr/>TEN_<wbr/>BIT</a>
26664device.<wbr/></p>
26665            </td>
26666          </tr>
26667
26668          <tr class="entries_header">
26669            <th class="th_details" colspan="6">HAL Implementation Details</th>
26670          </tr>
26671          <tr class="entry_cont">
26672            <td class="entry_details" colspan="6">
26673              <p>Do not set this property directly
26674(it is synthetic and will not be available at the HAL layer).<wbr/></p>
26675            </td>
26676          </tr>
26677
26678          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26679           <!-- end of entry -->
26680
26681
26682          <tr class="entry" id="static_android.scaler.mandatoryPreviewStabilizationOutputStreamCombinations">
26683            <td class="entry_name
26684             " rowspan="5">
26685              android.<wbr/>scaler.<wbr/>mandatory<wbr/>Preview<wbr/>Stabilization<wbr/>Output<wbr/>Stream<wbr/>Combinations
26686            </td>
26687            <td class="entry_type">
26688                <span class="entry_type_name">int32</span>
26689                <span class="entry_type_container">x</span>
26690
26691                <span class="entry_type_array">
26692                  n
26693                </span>
26694              <span class="entry_type_visibility"> [java_public as mandatoryStreamCombination]</span>
26695
26696              <span class="entry_type_synthetic">[synthetic] </span>
26697
26698
26699
26700
26701
26702            </td> <!-- entry_type -->
26703
26704            <td class="entry_description">
26705              <p>An array of mandatory stream combinations which are applicable when device lists
26706{@code PREVIEW_<wbr/>STABILIZATION} in <a href="#static_android.control.availableVideoStabilizationModes">android.<wbr/>control.<wbr/>available<wbr/>Video<wbr/>Stabilization<wbr/>Modes</a>.<wbr/>
26707This is an app-readable conversion of the preview stabilization mandatory stream
26708combination
26709<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice#preview-stabilization-guaranteed-stream-configurations">tables</a>.<wbr/></p>
26710            </td>
26711
26712            <td class="entry_units">
26713            </td>
26714
26715            <td class="entry_range">
26716            </td>
26717
26718            <td class="entry_hal_version">
26719              <p>3.<wbr/>2</p>
26720            </td>
26721
26722            <td class="entry_tags">
26723            </td>
26724
26725          </tr>
26726          <tr class="entries_header">
26727            <th class="th_details" colspan="6">Details</th>
26728          </tr>
26729          <tr class="entry_cont">
26730            <td class="entry_details" colspan="6">
26731              <p>The array of
26732<a href="https://developer.android.com/reference/android/hardware/camera2/params/MandatoryStreamCombination.html">combinations</a> is
26733generated according to the documented
26734<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice#preview-stabilization-guaranteed-stream-configurations">guideline</a>
26735for each device which supports {@code PREVIEW_<wbr/>STABILIZATION}
26736Clients can use the array as a quick reference to find an appropriate camera stream
26737combination.<wbr/>
26738The mandatory stream combination array will be {@code null} in case the device does not
26739list {@code PREVIEW_<wbr/>STABILIZATION} in <a href="#static_android.control.availableVideoStabilizationModes">android.<wbr/>control.<wbr/>available<wbr/>Video<wbr/>Stabilization<wbr/>Modes</a>.<wbr/></p>
26740            </td>
26741          </tr>
26742
26743          <tr class="entries_header">
26744            <th class="th_details" colspan="6">HAL Implementation Details</th>
26745          </tr>
26746          <tr class="entry_cont">
26747            <td class="entry_details" colspan="6">
26748              <p>Do not set this property directly
26749(it is synthetic and will not be available at the HAL layer).<wbr/></p>
26750            </td>
26751          </tr>
26752
26753          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26754           <!-- end of entry -->
26755
26756
26757          <tr class="entry" id="static_android.scaler.multiResolutionStreamSupported">
26758            <td class="entry_name
26759             " rowspan="5">
26760              android.<wbr/>scaler.<wbr/>multi<wbr/>Resolution<wbr/>Stream<wbr/>Supported
26761            </td>
26762            <td class="entry_type">
26763                <span class="entry_type_name entry_type_name_enum">byte</span>
26764
26765              <span class="entry_type_visibility"> [ndk_public as boolean]</span>
26766
26767
26768              <span class="entry_type_hwlevel">[limited] </span>
26769
26770
26771
26772                <ul class="entry_type_enum">
26773                  <li>
26774                    <span class="entry_type_enum_name">FALSE (v3.6)</span>
26775                  </li>
26776                  <li>
26777                    <span class="entry_type_enum_name">TRUE (v3.6)</span>
26778                  </li>
26779                </ul>
26780
26781            </td> <!-- entry_type -->
26782
26783            <td class="entry_description">
26784              <p>Whether the camera device supports multi-resolution input or output streams</p>
26785            </td>
26786
26787            <td class="entry_units">
26788            </td>
26789
26790            <td class="entry_range">
26791            </td>
26792
26793            <td class="entry_hal_version">
26794              <p>3.<wbr/>6</p>
26795            </td>
26796
26797            <td class="entry_tags">
26798            </td>
26799
26800          </tr>
26801          <tr class="entries_header">
26802            <th class="th_details" colspan="6">Details</th>
26803          </tr>
26804          <tr class="entry_cont">
26805            <td class="entry_details" colspan="6">
26806              <p>A logical multi-camera or an ultra high resolution camera may support multi-resolution
26807input or output streams.<wbr/> With multi-resolution output streams,<wbr/> the camera device is able
26808to output different resolution images depending on the current active physical camera or
26809pixel mode.<wbr/> With multi-resolution input streams,<wbr/> the camera device can reprocess images
26810of different resolutions from different physical cameras or sensor pixel modes.<wbr/></p>
26811<p>When set to TRUE:</p>
26812<ul>
26813<li>For a logical multi-camera,<wbr/> the camera framework derives
26814<a href="#static_android.scaler.multiResolutionStreamConfigurationMap">android.<wbr/>scaler.<wbr/>multi<wbr/>Resolution<wbr/>Stream<wbr/>Configuration<wbr/>Map</a> by combining the
26815<a href="#static_android.scaler.physicalCameraMultiResolutionStreamConfigurations">android.<wbr/>scaler.<wbr/>physical<wbr/>Camera<wbr/>Multi<wbr/>Resolution<wbr/>Stream<wbr/>Configurations</a> from its physical
26816cameras.<wbr/></li>
26817<li>For an ultra-high resolution sensor camera,<wbr/> the camera framework directly copies
26818the value of <a href="#static_android.scaler.physicalCameraMultiResolutionStreamConfigurations">android.<wbr/>scaler.<wbr/>physical<wbr/>Camera<wbr/>Multi<wbr/>Resolution<wbr/>Stream<wbr/>Configurations</a> to
26819<a href="#static_android.scaler.multiResolutionStreamConfigurationMap">android.<wbr/>scaler.<wbr/>multi<wbr/>Resolution<wbr/>Stream<wbr/>Configuration<wbr/>Map</a>.<wbr/></li>
26820</ul>
26821            </td>
26822          </tr>
26823
26824          <tr class="entries_header">
26825            <th class="th_details" colspan="6">HAL Implementation Details</th>
26826          </tr>
26827          <tr class="entry_cont">
26828            <td class="entry_details" colspan="6">
26829              <p>For the HAL to claim support for multi-resolution streams:</p>
26830<ul>
26831<li>The HAL must support the buffer management API by setting
26832supportedBufferManagementVersion to HIDL_<wbr/>DEVICE_<wbr/>3_<wbr/>5.<wbr/></li>
26833<li>For a logical multi-camera,<wbr/> when combined from all its physical cameras,<wbr/> there must be
26834at a minimum one input or output stream format with at least two different
26835physicalCameraMultiResolutionStreamConfigurations entries for that format.<wbr/></li>
26836<li>For an ultra high resolution sensor camera,<wbr/> for each supported multi-resolution format,<wbr/>
26837the physicalCameraMultiResolutionStreamConfigurations must contain both the largest stream
26838configuration within the <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> and the largest stream
26839configuration within the <a href="#static_android.scaler.streamConfigurationMapMaximumResolution">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map<wbr/>Maximum<wbr/>Resolution</a>.<wbr/></li>
26840<li>If the HAL advertises multi-resolution input stream support for a particular format
26841(namely PRIVATE,<wbr/> or YUV),<wbr/> the logical multi-camera or ultra high resolution sensor camera
26842must have the corresponding reprocessing capabilities (PRIVATE_<wbr/>REPROCESSING,<wbr/>
26843or YUV_<wbr/>REPROCESSING respectively).<wbr/> The camera HAL must support reprocessing the
26844multi-resolution input stream to the output formats specified in the camera's
26845<a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a>.<wbr/></li>
26846</ul>
26847            </td>
26848          </tr>
26849
26850          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26851           <!-- end of entry -->
26852
26853
26854          <tr class="entry" id="static_android.scaler.availableStreamUseCases">
26855            <td class="entry_name
26856             " rowspan="5">
26857              android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Use<wbr/>Cases
26858            </td>
26859            <td class="entry_type">
26860                <span class="entry_type_name entry_type_name_enum">int64</span>
26861                <span class="entry_type_container">x</span>
26862
26863                <span class="entry_type_array">
26864                  n
26865                </span>
26866              <span class="entry_type_visibility"> [public]</span>
26867
26868
26869
26870
26871
26872                <ul class="entry_type_enum">
26873                  <li>
26874                    <span class="entry_type_enum_name">DEFAULT (v3.8)</span>
26875                    <span class="entry_type_enum_optional">[optional]</span>
26876                    <span class="entry_type_enum_value">0x0</span>
26877                    <span class="entry_type_enum_notes"><p>Default stream use case.<wbr/></p>
26878<p>This use case is the same as when the application doesn't set any use case for
26879the stream.<wbr/> The camera device uses the properties of the output target,<wbr/> such as
26880format,<wbr/> dataSpace,<wbr/> or surface class type,<wbr/> to optimize the image processing pipeline.<wbr/></p></span>
26881                  </li>
26882                  <li>
26883                    <span class="entry_type_enum_name">PREVIEW (v3.8)</span>
26884                    <span class="entry_type_enum_optional">[optional]</span>
26885                    <span class="entry_type_enum_value">0x1</span>
26886                    <span class="entry_type_enum_notes"><p>Live stream shown to the user.<wbr/></p>
26887<p>Optimized for performance and usability as a viewfinder,<wbr/> but not necessarily for
26888image quality.<wbr/> The output is not meant to be persisted as saved images or video.<wbr/></p>
26889<p>No stall if android.<wbr/>control.<wbr/>* are set to FAST.<wbr/> There may be stall if
26890they are set to HIGH_<wbr/>QUALITY.<wbr/> This use case has the same behavior as the
26891default SurfaceView and SurfaceTexture targets.<wbr/> Additionally,<wbr/> this use case can be
26892used for in-app image analysis.<wbr/></p></span>
26893                  </li>
26894                  <li>
26895                    <span class="entry_type_enum_name">STILL_CAPTURE (v3.8)</span>
26896                    <span class="entry_type_enum_optional">[optional]</span>
26897                    <span class="entry_type_enum_value">0x2</span>
26898                    <span class="entry_type_enum_notes"><p>Still photo capture.<wbr/></p>
26899<p>Optimized for high-quality high-resolution capture,<wbr/> and not expected to maintain
26900preview-like frame rates.<wbr/></p>
26901<p>The stream may have stalls regardless of whether android.<wbr/>control.<wbr/>* is HIGH_<wbr/>QUALITY.<wbr/>
26902This use case has the same behavior as the default JPEG and RAW related formats.<wbr/></p></span>
26903                  </li>
26904                  <li>
26905                    <span class="entry_type_enum_name">VIDEO_RECORD (v3.8)</span>
26906                    <span class="entry_type_enum_optional">[optional]</span>
26907                    <span class="entry_type_enum_value">0x3</span>
26908                    <span class="entry_type_enum_notes"><p>Recording video clips.<wbr/></p>
26909<p>Optimized for high-quality video capture,<wbr/> including high-quality image stabilization
26910if supported by the device and enabled by the application.<wbr/> As a result,<wbr/> may produce
26911output frames with a substantial lag from real time,<wbr/> to allow for highest-quality
26912stabilization or other processing.<wbr/> As such,<wbr/> such an output is not suitable for drawing
26913to screen directly,<wbr/> and is expected to be persisted to disk or similar for later
26914playback or processing.<wbr/> Only streams that set the VIDEO_<wbr/>RECORD use case are guaranteed
26915to have video stabilization applied when the video stabilization control is set
26916to ON,<wbr/> as opposed to PREVIEW_<wbr/>STABILIZATION.<wbr/></p>
26917<p>This use case has the same behavior as the default MediaRecorder and MediaCodec
26918targets.<wbr/></p></span>
26919                  </li>
26920                  <li>
26921                    <span class="entry_type_enum_name">PREVIEW_VIDEO_STILL (v3.8)</span>
26922                    <span class="entry_type_enum_optional">[optional]</span>
26923                    <span class="entry_type_enum_value">0x4</span>
26924                    <span class="entry_type_enum_notes"><p>One single stream used for combined purposes of preview,<wbr/> video,<wbr/> and still capture.<wbr/></p>
26925<p>For such multi-purpose streams,<wbr/> the camera device aims to make the best tradeoff
26926between the individual use cases.<wbr/> For example,<wbr/> the STILL_<wbr/>CAPTURE use case by itself
26927may have stalls for achieving best image quality.<wbr/> But if combined with PREVIEW and
26928VIDEO_<wbr/>RECORD,<wbr/> the camera device needs to trade off the additional image processing
26929for speed so that preview and video recording aren't slowed down.<wbr/></p>
26930<p>Similarly,<wbr/> VIDEO_<wbr/>RECORD may produce frames with a substantial lag,<wbr/> but
26931PREVIEW_<wbr/>VIDEO_<wbr/>STILL must have minimal output delay.<wbr/> This means that to enable video
26932stabilization with this use case,<wbr/> the device must support and the app must select the
26933PREVIEW_<wbr/>STABILIZATION mode for video stabilization.<wbr/></p></span>
26934                  </li>
26935                  <li>
26936                    <span class="entry_type_enum_name">VIDEO_CALL (v3.8)</span>
26937                    <span class="entry_type_enum_optional">[optional]</span>
26938                    <span class="entry_type_enum_value">0x5</span>
26939                    <span class="entry_type_enum_notes"><p>Long-running video call optimized for both power efficiency and video quality.<wbr/></p>
26940<p>The camera sensor may run in a lower-resolution mode to reduce power consumption
26941at the cost of some image and digital zoom quality.<wbr/> Unlike VIDEO_<wbr/>RECORD,<wbr/> VIDEO_<wbr/>CALL
26942outputs are expected to work in dark conditions,<wbr/> so are usually accompanied with
26943variable frame rate settings to allow sufficient exposure time in low light.<wbr/></p></span>
26944                  </li>
26945                  <li>
26946                    <span class="entry_type_enum_name">CROPPED_RAW (v3.9)</span>
26947                    <span class="entry_type_enum_optional">[optional]</span>
26948                    <span class="entry_type_enum_value">0x6</span>
26949                    <span class="entry_type_enum_notes"><p>Cropped RAW stream when the client chooses to crop the field of view.<wbr/></p>
26950<p>Certain types of image sensors can run in binned modes in order to improve signal to
26951noise ratio while capturing frames.<wbr/> However,<wbr/> at certain zoom levels and /<wbr/> or when
26952other scene conditions are deemed fit,<wbr/> the camera sub-system may choose to un-bin and
26953remosaic the sensor's output.<wbr/> This results in a RAW frame which is cropped in field
26954of view and yet has the same number of pixels as full field of view RAW,<wbr/> thereby
26955improving image detail.<wbr/></p>
26956<p>The resultant field of view of the RAW stream will be greater than or equal to
26957croppable non-RAW streams.<wbr/> The effective crop region for this RAW stream will be
26958reflected in the CaptureResult key <a href="#dynamic_android.scaler.rawCropRegion">android.<wbr/>scaler.<wbr/>raw<wbr/>Crop<wbr/>Region</a>.<wbr/></p>
26959<p>If this stream use case is set on a non-RAW stream,<wbr/> i.<wbr/>e.<wbr/> not one of :</p>
26960<ul>
26961<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_SENSOR">RAW_<wbr/>SENSOR</a></li>
26962<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW10">RAW10</a></li>
26963<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW12">RAW12</a></li>
26964</ul>
26965<p>session configuration is not guaranteed to succeed.<wbr/></p>
26966<p>This stream use case may not be supported on some devices.<wbr/></p></span>
26967                  </li>
26968                  <li>
26969                    <span class="entry_type_enum_name">VENDOR_START (v3.8)</span>
26970                    <span class="entry_type_enum_optional">[optional]</span>
26971                    <span class="entry_type_enum_hidden">[hidden]</span>
26972                    <span class="entry_type_enum_value">0x10000</span>
26973                    <span class="entry_type_enum_notes"><p>Vendor defined use cases.<wbr/> These depend on the vendor implementation.<wbr/></p></span>
26974                  </li>
26975                </ul>
26976
26977            </td> <!-- entry_type -->
26978
26979            <td class="entry_description">
26980              <p>The stream use cases supported by this camera device.<wbr/></p>
26981            </td>
26982
26983            <td class="entry_units">
26984            </td>
26985
26986            <td class="entry_range">
26987            </td>
26988
26989            <td class="entry_hal_version">
26990              <p>3.<wbr/>8</p>
26991            </td>
26992
26993            <td class="entry_tags">
26994            </td>
26995
26996          </tr>
26997          <tr class="entries_header">
26998            <th class="th_details" colspan="6">Details</th>
26999          </tr>
27000          <tr class="entry_cont">
27001            <td class="entry_details" colspan="6">
27002              <p>The stream use case indicates the purpose of a particular camera stream from
27003the end-user perspective.<wbr/> Some examples of camera use cases are: preview stream for
27004live viewfinder shown to the user,<wbr/> still capture for generating high quality photo
27005capture,<wbr/> video record for encoding the camera output for the purpose of future playback,<wbr/>
27006and video call for live realtime video conferencing.<wbr/></p>
27007<p>With this flag,<wbr/> the camera device can optimize the image processing pipeline
27008parameters,<wbr/> such as tuning,<wbr/> sensor mode,<wbr/> and ISP settings,<wbr/> independent of
27009the properties of the immediate camera output surface.<wbr/> For example,<wbr/> if the output
27010surface is a SurfaceTexture,<wbr/> the stream use case flag can be used to indicate whether
27011the camera frames eventually go to display,<wbr/> video encoder,<wbr/>
27012still image capture,<wbr/> or all of them combined.<wbr/></p>
27013<p>The application sets the use case of a camera stream by calling
27014<a href="https://developer.android.com/reference/android/hardware/camera2/params/OutputConfiguration.html#setStreamUseCase">OutputConfiguration#setStreamUseCase</a>.<wbr/></p>
27015<p>A camera device with
27016<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#REQUEST_AVAILABLE_CAPABILITIES_STREAM_USE_CASE">Camera<wbr/>Characteristics#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>STREAM_<wbr/>USE_<wbr/>CASE</a>
27017capability must support the following stream use cases:</p>
27018<ul>
27019<li>DEFAULT</li>
27020<li>PREVIEW</li>
27021<li>STILL_<wbr/>CAPTURE</li>
27022<li>VIDEO_<wbr/>RECORD</li>
27023<li>PREVIEW_<wbr/>VIDEO_<wbr/>STILL</li>
27024<li>VIDEO_<wbr/>CALL</li>
27025</ul>
27026<p>The guaranteed stream combinations related to stream use case for a camera device with
27027<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#REQUEST_AVAILABLE_CAPABILITIES_STREAM_USE_CASE">Camera<wbr/>Characteristics#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>STREAM_<wbr/>USE_<wbr/>CASE</a>
27028capability is documented in the camera device
27029<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice#stream-use-case-capability-additional-guaranteed-configurations">guideline</a>.<wbr/>
27030The application is strongly recommended to use one of the guaranteed stream combinations.<wbr/>
27031If the application creates a session with a stream combination not in the guaranteed
27032list,<wbr/> or with mixed DEFAULT and non-DEFAULT use cases within the same session,<wbr/>
27033the camera device may ignore some stream use cases due to hardware constraints
27034and implementation details.<wbr/></p>
27035<p>For stream combinations not covered by the stream use case mandatory lists,<wbr/> such as
27036reprocessable session,<wbr/> constrained high speed session,<wbr/> or RAW stream combinations,<wbr/> the
27037application should leave stream use cases within the session as DEFAULT.<wbr/></p>
27038            </td>
27039          </tr>
27040
27041          <tr class="entries_header">
27042            <th class="th_details" colspan="6">HAL Implementation Details</th>
27043          </tr>
27044          <tr class="entry_cont">
27045            <td class="entry_details" colspan="6">
27046              <p>The camera HAL must support DEFAULT stream use case to handle scenarios where the
27047application doesn't explicitly set a stream's use case flag,<wbr/> in which case the camera
27048framework sets it to DEFAULT.<wbr/></p>
27049            </td>
27050          </tr>
27051
27052          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27053           <!-- end of entry -->
27054
27055
27056          <tr class="entry" id="static_android.scaler.mandatoryUseCaseStreamCombinations">
27057            <td class="entry_name
27058             " rowspan="5">
27059              android.<wbr/>scaler.<wbr/>mandatory<wbr/>Use<wbr/>Case<wbr/>Stream<wbr/>Combinations
27060            </td>
27061            <td class="entry_type">
27062                <span class="entry_type_name">int32</span>
27063                <span class="entry_type_container">x</span>
27064
27065                <span class="entry_type_array">
27066                  n
27067                </span>
27068              <span class="entry_type_visibility"> [java_public as mandatoryStreamCombination]</span>
27069
27070              <span class="entry_type_synthetic">[synthetic] </span>
27071
27072
27073
27074
27075
27076            </td> <!-- entry_type -->
27077
27078            <td class="entry_description">
27079              <p>An array of mandatory stream combinations with stream use cases.<wbr/>
27080This is an app-readable conversion of the mandatory stream combination
27081<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice#stream-use-case-capability-additional-guaranteed-configurations">tables</a>
27082with each stream's use case being set.<wbr/></p>
27083            </td>
27084
27085            <td class="entry_units">
27086            </td>
27087
27088            <td class="entry_range">
27089            </td>
27090
27091            <td class="entry_hal_version">
27092              <p>3.<wbr/>2</p>
27093            </td>
27094
27095            <td class="entry_tags">
27096            </td>
27097
27098          </tr>
27099          <tr class="entries_header">
27100            <th class="th_details" colspan="6">Details</th>
27101          </tr>
27102          <tr class="entry_cont">
27103            <td class="entry_details" colspan="6">
27104              <p>The array of
27105<a href="https://developer.android.com/reference/android/hardware/camera2/params/MandatoryStreamCombination.html">combinations</a> is
27106generated according to the documented
27107<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice#stream-use-case-capability-additional-guaranteed-configurations">guildeline</a>
27108for a camera device with
27109<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#REQUEST_AVAILABLE_CAPABILITIES_STREAM_USE_CASE">Camera<wbr/>Characteristics#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>STREAM_<wbr/>USE_<wbr/>CASE</a>
27110capability.<wbr/>
27111The mandatory stream combination array will be {@code null} in case the device doesn't
27112have <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#REQUEST_AVAILABLE_CAPABILITIES_STREAM_USE_CASE">Camera<wbr/>Characteristics#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>STREAM_<wbr/>USE_<wbr/>CASE</a>
27113capability.<wbr/></p>
27114            </td>
27115          </tr>
27116
27117          <tr class="entries_header">
27118            <th class="th_details" colspan="6">HAL Implementation Details</th>
27119          </tr>
27120          <tr class="entry_cont">
27121            <td class="entry_details" colspan="6">
27122              <p>Do not set this property directly
27123(it is synthetic and will not be available at the HAL layer).<wbr/></p>
27124            </td>
27125          </tr>
27126
27127          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27128           <!-- end of entry -->
27129
27130
27131
27132      <!-- end of kind -->
27133      </tbody>
27134      <tr><td colspan="7" class="kind">dynamic</td></tr>
27135
27136      <thead class="entries_header">
27137        <tr>
27138          <th class="th_name">Property Name</th>
27139          <th class="th_type">Type</th>
27140          <th class="th_description">Description</th>
27141          <th class="th_units">Units</th>
27142          <th class="th_range">Range</th>
27143          <th class="th_hal_version">Initial HIDL HAL version</th>
27144          <th class="th_tags">Tags</th>
27145        </tr>
27146      </thead>
27147
27148      <tbody>
27149
27150
27151
27152
27153
27154
27155
27156
27157
27158
27159          <tr class="entry" id="dynamic_android.scaler.cropRegion">
27160            <td class="entry_name
27161             " rowspan="5">
27162              android.<wbr/>scaler.<wbr/>crop<wbr/>Region
27163            </td>
27164            <td class="entry_type">
27165                <span class="entry_type_name">int32</span>
27166                <span class="entry_type_container">x</span>
27167
27168                <span class="entry_type_array">
27169                  4
27170                </span>
27171              <span class="entry_type_visibility"> [public as rectangle]</span>
27172
27173
27174              <span class="entry_type_hwlevel">[legacy] </span>
27175
27176
27177
27178
27179            </td> <!-- entry_type -->
27180
27181            <td class="entry_description">
27182              <p>The desired region of the sensor to read out for this capture.<wbr/></p>
27183            </td>
27184
27185            <td class="entry_units">
27186              Pixel coordinates relative to
27187          android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size or
27188          android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size depending on distortion correction
27189          capability and mode
27190            </td>
27191
27192            <td class="entry_range">
27193            </td>
27194
27195            <td class="entry_hal_version">
27196              <p>3.<wbr/>2</p>
27197            </td>
27198
27199            <td class="entry_tags">
27200              <ul class="entry_tags">
27201                  <li><a href="#tag_BC">BC</a></li>
27202              </ul>
27203            </td>
27204
27205          </tr>
27206          <tr class="entries_header">
27207            <th class="th_details" colspan="6">Details</th>
27208          </tr>
27209          <tr class="entry_cont">
27210            <td class="entry_details" colspan="6">
27211              <p>This control can be used to implement digital zoom.<wbr/></p>
27212<p>For devices not supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate
27213system always follows that of <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
27214the top-left pixel of the active array.<wbr/></p>
27215<p>For devices supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate system
27216depends on the mode being set.<wbr/>  When the distortion correction mode is OFF,<wbr/> the
27217coordinate system follows <a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>,<wbr/> with <code>(0,<wbr/>
272180)</code> being the top-left pixel of the pre-correction active array.<wbr/>  When the distortion
27219correction mode is not OFF,<wbr/> the coordinate system follows
27220<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 top-left pixel of the
27221active array.<wbr/></p>
27222<p>Output streams use this rectangle to produce their output,<wbr/> cropping to a smaller region
27223if necessary to maintain the stream's aspect ratio,<wbr/> then scaling the sensor input to
27224match the output's configured resolution.<wbr/></p>
27225<p>The crop region is usually applied after the RAW to other color space (e.<wbr/>g.<wbr/> YUV)
27226conversion.<wbr/> As a result RAW streams are not croppable unless supported by the
27227camera device.<wbr/> See <a href="#static_android.scaler.availableStreamUseCases">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Use<wbr/>Cases</a>#CROPPED_<wbr/>RAW for details.<wbr/></p>
27228<p>For non-raw streams,<wbr/> any additional per-stream cropping will be done to maximize the
27229final pixel area of the stream.<wbr/></p>
27230<p>For example,<wbr/> if the crop region is set to a 4:3 aspect ratio,<wbr/> then 4:3 streams will use
27231the exact crop region.<wbr/> 16:9 streams will further crop vertically (letterbox).<wbr/></p>
27232<p>Conversely,<wbr/> if the crop region is set to a 16:9,<wbr/> then 4:3 outputs will crop horizontally
27233(pillarbox),<wbr/> and 16:9 streams will match exactly.<wbr/> These additional crops will be
27234centered within the crop region.<wbr/></p>
27235<p>To illustrate,<wbr/> here are several scenarios of different crop regions and output streams,<wbr/>
27236for a hypothetical camera device with an active array of size <code>(2000,<wbr/>1500)</code>.<wbr/>  Note that
27237several of these examples use non-centered crop regions for ease of illustration; such
27238regions are only supported on devices with FREEFORM capability
27239(<a href="#static_android.scaler.croppingType">android.<wbr/>scaler.<wbr/>cropping<wbr/>Type</a> <code>== FREEFORM</code>),<wbr/> but this does not affect the way the crop
27240rules work otherwise.<wbr/></p>
27241<ul>
27242<li>Camera Configuration:<ul>
27243<li>Active array size: <code>2000x1500</code> (3 MP,<wbr/> 4:3 aspect ratio)</li>
27244<li>Output stream #1: <code>640x480</code> (VGA,<wbr/> 4:3 aspect ratio)</li>
27245<li>Output stream #2: <code>1280x720</code> (720p,<wbr/> 16:9 aspect ratio)</li>
27246</ul>
27247</li>
27248<li>Case #1: 4:3 crop region with 2x digital zoom<ul>
27249<li>Crop region: <code>Rect(500,<wbr/> 375,<wbr/> 1500,<wbr/> 1125) //<wbr/> (left,<wbr/> top,<wbr/> right,<wbr/> bottom)</code></li>
27250<li><img alt="4:3 aspect ratio crop diagram" src="images/camera2/metadata/android.scaler.cropRegion/crop-region-43-ratio.png"/></li>
27251<li><code>640x480</code> stream source area: <code>(500,<wbr/> 375,<wbr/> 1500,<wbr/> 1125)</code> (equal to crop region)</li>
27252<li><code>1280x720</code> stream source area: <code>(500,<wbr/> 469,<wbr/> 1500,<wbr/> 1031)</code> (letterboxed)</li>
27253</ul>
27254</li>
27255<li>Case #2: 16:9 crop region with ~1.<wbr/>5x digital zoom.<wbr/><ul>
27256<li>Crop region: <code>Rect(500,<wbr/> 375,<wbr/> 1833,<wbr/> 1125)</code></li>
27257<li><img alt="16:9 aspect ratio crop diagram" src="images/camera2/metadata/android.scaler.cropRegion/crop-region-169-ratio.png"/></li>
27258<li><code>640x480</code> stream source area: <code>(666,<wbr/> 375,<wbr/> 1666,<wbr/> 1125)</code> (pillarboxed)</li>
27259<li><code>1280x720</code> stream source area: <code>(500,<wbr/> 375,<wbr/> 1833,<wbr/> 1125)</code> (equal to crop region)</li>
27260</ul>
27261</li>
27262<li>Case #3: 1:1 crop region with ~2.<wbr/>6x digital zoom.<wbr/><ul>
27263<li>Crop region: <code>Rect(500,<wbr/> 375,<wbr/> 1250,<wbr/> 1125)</code></li>
27264<li><img alt="1:1 aspect ratio crop diagram" src="images/camera2/metadata/android.scaler.cropRegion/crop-region-11-ratio.png"/></li>
27265<li><code>640x480</code> stream source area: <code>(500,<wbr/> 469,<wbr/> 1250,<wbr/> 1031)</code> (letterboxed)</li>
27266<li><code>1280x720</code> stream source area: <code>(500,<wbr/> 543,<wbr/> 1250,<wbr/> 957)</code> (letterboxed)</li>
27267</ul>
27268</li>
27269<li>Case #4: Replace <code>640x480</code> stream with <code>1024x1024</code> stream,<wbr/> with 4:3 crop region:<ul>
27270<li>Crop region: <code>Rect(500,<wbr/> 375,<wbr/> 1500,<wbr/> 1125)</code></li>
27271<li><img alt="Square output, 4:3 aspect ratio crop diagram" src="images/camera2/metadata/android.scaler.cropRegion/crop-region-43-square-ratio.png"/></li>
27272<li><code>1024x1024</code> stream source area: <code>(625,<wbr/> 375,<wbr/> 1375,<wbr/> 1125)</code> (pillarboxed)</li>
27273<li><code>1280x720</code> stream source area: <code>(500,<wbr/> 469,<wbr/> 1500,<wbr/> 1031)</code> (letterboxed)</li>
27274<li>Note that in this case,<wbr/> neither of the two outputs is a subset of the other,<wbr/> with
27275  each containing image data the other doesn't have.<wbr/></li>
27276</ul>
27277</li>
27278</ul>
27279<p>If the coordinate system is <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> the width and height
27280of the crop region cannot be set to be smaller than
27281<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
27282<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>
27283<p>If the coordinate system is <a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>,<wbr/> the width
27284and height of the crop region cannot be set to be smaller than
27285<code>floor( preCorrectionActiveArraySize.<wbr/>width /<wbr/> <a href="#static_android.scaler.availableMaxDigitalZoom">android.<wbr/>scaler.<wbr/>available<wbr/>Max<wbr/>Digital<wbr/>Zoom</a> )</code>
27286and
27287<code>floor( preCorrectionActiveArraySize.<wbr/>height /<wbr/> <a href="#static_android.scaler.availableMaxDigitalZoom">android.<wbr/>scaler.<wbr/>available<wbr/>Max<wbr/>Digital<wbr/>Zoom</a> )</code>,<wbr/>
27288respectively.<wbr/></p>
27289<p>The camera device may adjust the crop region to account for rounding and other hardware
27290requirements; the final crop region used will be included in the output capture result.<wbr/></p>
27291<p>The camera sensor output aspect ratio depends on factors such as output stream
27292combination and <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a>,<wbr/> and shouldn't be adjusted by using
27293this control.<wbr/> And the camera device will treat different camera sensor output sizes
27294(potentially with in-sensor crop) as the same crop of
27295<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/> As a result,<wbr/> the application shouldn't assume the
27296maximum crop region always maps to the same aspect ratio or field of view for the
27297sensor output.<wbr/></p>
27298<p>Starting from API level 30,<wbr/> it's strongly recommended to use <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a>
27299to take advantage of better support for zoom with logical multi-camera.<wbr/> The benefits
27300include better precision with optical-digital zoom combination,<wbr/> and ability to do
27301zoom-out from 1.<wbr/>0x.<wbr/> When using <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> for zoom,<wbr/> the crop region in
27302the capture request should be left as the default activeArray size.<wbr/> The
27303coordinate system is post-zoom,<wbr/> meaning that the activeArraySize or
27304preCorrectionActiveArraySize covers the camera device's field of view "after" zoom.<wbr/>  See
27305<a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> for details.<wbr/></p>
27306<p>For camera devices with the
27307<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR">Camera<wbr/>Metadata#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>ULTRA_<wbr/>HIGH_<wbr/>RESOLUTION_<wbr/>SENSOR</a>
27308capability or devices where <a href="https://developer.android.com/reference/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a>
27309lists <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a>,<wbr/>
27310<a href="#static_android.sensor.info.activeArraySizeMaximumResolution">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution</a> /<wbr/>
27311<a href="#static_android.sensor.info.preCorrectionActiveArraySizeMaximumResolution">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution</a> must be used as the
27312coordinate system for requests where <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to
27313<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p>
27314            </td>
27315          </tr>
27316
27317          <tr class="entries_header">
27318            <th class="th_details" colspan="6">HAL Implementation Details</th>
27319          </tr>
27320          <tr class="entry_cont">
27321            <td class="entry_details" colspan="6">
27322              <p>The output streams must maintain square pixels at all
27323times,<wbr/> no matter what the relative aspect ratios of the
27324crop region and the stream are.<wbr/>  Negative values for
27325corner are allowed for raw output if full pixel array is
27326larger than active pixel array.<wbr/> Width and height may be
27327rounded to nearest larger supportable width,<wbr/> especially
27328for raw output,<wbr/> where only a few fixed scales may be
27329possible.<wbr/></p>
27330<p>If <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> is supported by the HAL,<wbr/> the HAL must report the zoom
27331ratio via <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a>,<wbr/> and change the coordinate system such that
27332<a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a> or <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>(depending on whether <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> is supported) is used to
27333represent the camera field-of-view after zoom.<wbr/> see <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> for
27334details.<wbr/></p>
27335<p>HAL2.<wbr/>x uses only (x,<wbr/> y,<wbr/> width)</p>
27336            </td>
27337          </tr>
27338
27339          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27340           <!-- end of entry -->
27341
27342
27343          <tr class="entry" id="dynamic_android.scaler.rotateAndCrop">
27344            <td class="entry_name
27345             " rowspan="5">
27346              android.<wbr/>scaler.<wbr/>rotate<wbr/>And<wbr/>Crop
27347            </td>
27348            <td class="entry_type">
27349                <span class="entry_type_name entry_type_name_enum">byte</span>
27350
27351              <span class="entry_type_visibility"> [public]</span>
27352
27353
27354
27355
27356
27357                <ul class="entry_type_enum">
27358                  <li>
27359                    <span class="entry_type_enum_name">NONE (v3.5)</span>
27360                    <span class="entry_type_enum_notes"><p>No rotate and crop is applied.<wbr/> Processed outputs are in the sensor orientation.<wbr/></p></span>
27361                  </li>
27362                  <li>
27363                    <span class="entry_type_enum_name">90 (v3.5)</span>
27364                    <span class="entry_type_enum_notes"><p>Processed images are rotated by 90 degrees clockwise,<wbr/> and then cropped
27365to the original aspect ratio.<wbr/></p></span>
27366                  </li>
27367                  <li>
27368                    <span class="entry_type_enum_name">180 (v3.5)</span>
27369                    <span class="entry_type_enum_notes"><p>Processed images are rotated by 180 degrees.<wbr/>  Since the aspect ratio does not
27370change,<wbr/> no cropping is performed.<wbr/></p></span>
27371                  </li>
27372                  <li>
27373                    <span class="entry_type_enum_name">270 (v3.5)</span>
27374                    <span class="entry_type_enum_notes"><p>Processed images are rotated by 270 degrees clockwise,<wbr/> and then cropped
27375to the original aspect ratio.<wbr/></p></span>
27376                  </li>
27377                  <li>
27378                    <span class="entry_type_enum_name">AUTO (v3.5)</span>
27379                    <span class="entry_type_enum_notes"><p>The camera API automatically selects the best concrete value for
27380rotate-and-crop based on the application's support for resizability and the current
27381multi-window mode.<wbr/></p>
27382<p>If the application does not support resizing but the display mode for its main
27383Activity is not in a typical orientation,<wbr/> the camera API will set <code>ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>90</code>
27384or some other supported rotation value,<wbr/> depending on device configuration,<wbr/>
27385to ensure preview and captured images are correctly shown to the user.<wbr/> Otherwise,<wbr/>
27386<code>ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>NONE</code> will be selected.<wbr/></p>
27387<p>When a value other than NONE is selected,<wbr/> several metadata fields will also be parsed
27388differently to ensure that coordinates are correctly handled for features like drawing
27389face detection boxes or passing in tap-to-focus coordinates.<wbr/>  The camera API will
27390convert positions in the active array coordinate system to/<wbr/>from the cropped-and-rotated
27391coordinate system to make the operation transparent for applications.<wbr/></p>
27392<p>No coordinate mapping will be done when the application selects a non-AUTO mode.<wbr/></p></span>
27393                  </li>
27394                </ul>
27395
27396            </td> <!-- entry_type -->
27397
27398            <td class="entry_description">
27399              <p>Whether a rotation-and-crop operation is applied to processed
27400outputs from the camera.<wbr/></p>
27401            </td>
27402
27403            <td class="entry_units">
27404            </td>
27405
27406            <td class="entry_range">
27407              <p><a href="#static_android.scaler.availableRotateAndCropModes">android.<wbr/>scaler.<wbr/>available<wbr/>Rotate<wbr/>And<wbr/>Crop<wbr/>Modes</a></p>
27408            </td>
27409
27410            <td class="entry_hal_version">
27411              <p>3.<wbr/>5</p>
27412            </td>
27413
27414            <td class="entry_tags">
27415            </td>
27416
27417          </tr>
27418          <tr class="entries_header">
27419            <th class="th_details" colspan="6">Details</th>
27420          </tr>
27421          <tr class="entry_cont">
27422            <td class="entry_details" colspan="6">
27423              <p>This control is primarily intended to help camera applications with no support for
27424multi-window modes to work correctly on devices where multi-window scenarios are
27425unavoidable,<wbr/> such as foldables or other devices with variable display geometry or more
27426free-form window placement (such as laptops,<wbr/> which often place portrait-orientation apps
27427in landscape with pillarboxing).<wbr/></p>
27428<p>If supported,<wbr/> the default value is <code>ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>AUTO</code>,<wbr/> which allows the camera API
27429to enable backwards-compatibility support for applications that do not support resizing
27430/<wbr/> multi-window modes,<wbr/> when the device is in fact in a multi-window mode (such as inset
27431portrait on laptops,<wbr/> or on a foldable device in some fold states).<wbr/>  In addition,<wbr/>
27432<code>ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>NONE</code> and <code>ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>90</code> will always be available if this control
27433is supported by the device.<wbr/>  If not supported,<wbr/> devices API level 30 or higher will always
27434list only <code>ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>NONE</code>.<wbr/></p>
27435<p>When <code>CROP_<wbr/>AUTO</code> is in use,<wbr/> and the camera API activates backward-compatibility mode,<wbr/>
27436several metadata fields will also be parsed differently to ensure that coordinates are
27437correctly handled for features like drawing face detection boxes or passing in
27438tap-to-focus coordinates.<wbr/>  The camera API will convert positions in the active array
27439coordinate system to/<wbr/>from the cropped-and-rotated coordinate system to make the
27440operation transparent for applications.<wbr/>  The following controls are affected:</p>
27441<ul>
27442<li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li>
27443<li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li>
27444<li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li>
27445<li><a href="#dynamic_android.statistics.faces">android.<wbr/>statistics.<wbr/>faces</a></li>
27446</ul>
27447<p>Capture results will contain the actual value selected by the API;
27448<code>ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>AUTO</code> will never be seen in a capture result.<wbr/></p>
27449<p>Applications can also select their preferred cropping mode,<wbr/> either to opt out of the
27450backwards-compatibility treatment,<wbr/> or to use the cropping feature themselves as needed.<wbr/>
27451In this case,<wbr/> no coordinate translation will be done automatically,<wbr/> and all controls
27452will continue to use the normal active array coordinates.<wbr/></p>
27453<p>Cropping and rotating is done after the application of digital zoom (via either
27454<a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> or <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a>),<wbr/> but before each individual
27455output is further cropped and scaled.<wbr/> It only affects processed outputs such as
27456YUV,<wbr/> PRIVATE,<wbr/> and JPEG.<wbr/>  It has no effect on RAW outputs.<wbr/></p>
27457<p>When <code>CROP_<wbr/>90</code> or <code>CROP_<wbr/>270</code> are selected,<wbr/> there is a significant loss to the field of
27458view.<wbr/> For example,<wbr/> with a 4:3 aspect ratio output of 1600x1200,<wbr/> <code>CROP_<wbr/>90</code> will still
27459produce 1600x1200 output,<wbr/> but these buffers are cropped from a vertical 3:4 slice at the
27460center of the 4:3 area,<wbr/> then rotated to be 4:3,<wbr/> and then upscaled to 1600x1200.<wbr/>  Only
2746156.<wbr/>25% of the original FOV is still visible.<wbr/>  In general,<wbr/> for an aspect ratio of <code>w:h</code>,<wbr/>
27462the crop and rotate operation leaves <code>(h/<wbr/>w)^2</code> of the field of view visible.<wbr/> For 16:9,<wbr/>
27463this is ~31.<wbr/>6%.<wbr/></p>
27464<p>As a visual example,<wbr/> the figure below shows the effect of <code>ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>90</code> on the
27465outputs for the following parameters:</p>
27466<ul>
27467<li>Sensor active array: <code>2000x1500</code></li>
27468<li>Crop region: top-left: <code>(500,<wbr/> 375)</code>,<wbr/> size: <code>(1000,<wbr/> 750)</code> (4:3 aspect ratio)</li>
27469<li>Output streams: YUV <code>640x480</code> and YUV <code>1280x720</code></li>
27470<li><code>ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>90</code></li>
27471</ul>
27472<p><img alt="Effect of ROTATE_AND_CROP_90" src="images/camera2/metadata/android.scaler.rotateAndCrop/crop-region-rotate-90-43-ratio.png"/></p>
27473<p>With these settings,<wbr/> the regions of the active array covered by the output streams are:</p>
27474<ul>
27475<li>640x480 stream crop: top-left: <code>(219,<wbr/> 375)</code>,<wbr/> size: <code>(562,<wbr/> 750)</code></li>
27476<li>1280x720 stream crop: top-left: <code>(289,<wbr/> 375)</code>,<wbr/> size: <code>(422,<wbr/> 750)</code></li>
27477</ul>
27478<p>Since the buffers are rotated,<wbr/> the buffers as seen by the application are:</p>
27479<ul>
27480<li>640x480 stream: top-left: <code>(781,<wbr/> 375)</code> on active array,<wbr/> size: <code>(640,<wbr/> 480)</code>,<wbr/> downscaled 1.<wbr/>17x from sensor pixels</li>
27481<li>1280x720 stream: top-left: <code>(711,<wbr/> 375)</code> on active array,<wbr/> size: <code>(1280,<wbr/> 720)</code>,<wbr/> upscaled 1.<wbr/>71x from sensor pixels</li>
27482</ul>
27483            </td>
27484          </tr>
27485
27486          <tr class="entries_header">
27487            <th class="th_details" colspan="6">HAL Implementation Details</th>
27488          </tr>
27489          <tr class="entry_cont">
27490            <td class="entry_details" colspan="6">
27491              <p>ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>AUTO will never be sent to the HAL,<wbr/> though it must be set as the default
27492value in all the capture request templates by the HAL.<wbr/>  The camera service will
27493translate AUTO to a specific rotation value based on the current application's
27494multi-window state and its support of resizability.<wbr/></p>
27495<p>The HAL also does not need to consider coordinate transforms for ROTATE_<wbr/>AND_<wbr/>CROP - all
27496capture request and result fields should be kept in the active array coordinate frame.<wbr/>
27497Any translation required to implement ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>AUTO will be handled by the camera
27498service.<wbr/></p>
27499            </td>
27500          </tr>
27501
27502          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27503           <!-- end of entry -->
27504
27505
27506          <tr class="entry" id="dynamic_android.scaler.rawCropRegion">
27507            <td class="entry_name
27508             " rowspan="3">
27509              android.<wbr/>scaler.<wbr/>raw<wbr/>Crop<wbr/>Region
27510            </td>
27511            <td class="entry_type">
27512                <span class="entry_type_name">int32</span>
27513                <span class="entry_type_container">x</span>
27514
27515                <span class="entry_type_array">
27516                  4
27517                </span>
27518              <span class="entry_type_visibility"> [public as rectangle]</span>
27519
27520
27521
27522
27523
27524
27525            </td> <!-- entry_type -->
27526
27527            <td class="entry_description">
27528              <p>The region of the sensor that corresponds to the RAW read out for this
27529capture when the stream use case of a RAW stream is set to CROPPED_<wbr/>RAW.<wbr/></p>
27530            </td>
27531
27532            <td class="entry_units">
27533              Pixel coordinates relative to
27534          android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size or
27535          android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size depending on distortion correction
27536          capability and mode
27537            </td>
27538
27539            <td class="entry_range">
27540            </td>
27541
27542            <td class="entry_hal_version">
27543              <p>3.<wbr/>9</p>
27544            </td>
27545
27546            <td class="entry_tags">
27547            </td>
27548
27549          </tr>
27550          <tr class="entries_header">
27551            <th class="th_details" colspan="6">Details</th>
27552          </tr>
27553          <tr class="entry_cont">
27554            <td class="entry_details" colspan="6">
27555              <p>The coordinate system follows that of <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>
27556<p>This CaptureResult key will be set when the corresponding CaptureRequest has a RAW target
27557with stream use case set to
27558<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SCALER_AVAILABLE_STREAM_USE_CASES_CROPPED_RAW">Camera<wbr/>Metadata#SCALER_<wbr/>AVAILABLE_<wbr/>STREAM_<wbr/>USE_<wbr/>CASES_<wbr/>CROPPED_<wbr/>RAW</a>,<wbr/>
27559otherwise it will be {@code null}.<wbr/>
27560The value of this key specifies the region of the sensor used for the RAW capture and can
27561be used to calculate the corresponding field of view of RAW streams.<wbr/>
27562This field of view will always be &gt;= field of view for (processed) non-RAW streams for the
27563capture.<wbr/> Note: The region specified may not necessarily be centered.<wbr/></p>
27564<p>For example: Assume a camera device has a pre correction active array size of
27565{@code {0,<wbr/> 0,<wbr/> 1500,<wbr/> 2000}}.<wbr/> If the RAW_<wbr/>CROP_<wbr/>REGION is {@code {500,<wbr/> 375,<wbr/> 1500,<wbr/> 1125}},<wbr/> that
27566corresponds to a centered crop of 1/<wbr/>4th of the full field of view RAW stream.<wbr/></p>
27567<p>The metadata keys which describe properties of RAW frames:</p>
27568<ul>
27569<li><a href="#dynamic_android.statistics.hotPixelMap">android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map</a></li>
27570<li><a href="#dynamic_android.statistics.lensShadingCorrectionMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Correction<wbr/>Map</a></li>
27571<li><a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a></li>
27572<li><a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a></li>
27573<li><a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a></li>
27574<li><a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a></li>
27575<li><a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a></li>
27576</ul>
27577<p>should be interpreted in the effective after raw crop field-of-view coordinate system.<wbr/>
27578In this coordinate system,<wbr/>
27579{<a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>.<wbr/>left,<wbr/>
27580 <a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>.<wbr/>top} corresponds to the
27581the top left corner of the cropped RAW frame and
27582{<a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>.<wbr/>right,<wbr/>
27583 <a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>.<wbr/>bottom} corresponds to
27584the bottom right corner.<wbr/> Client applications must use the values of the keys
27585in the CaptureResult metadata if present.<wbr/></p>
27586<p>Crop regions <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>,<wbr/> AE/<wbr/>AWB/<wbr/>AF regions and face coordinates still
27587use the <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> coordinate system as usual.<wbr/></p>
27588            </td>
27589          </tr>
27590
27591
27592          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27593           <!-- end of entry -->
27594
27595
27596
27597      <!-- end of kind -->
27598      </tbody>
27599
27600  <!-- end of section -->
27601  <tr><td colspan="7" id="section_sensor" class="section">sensor</td></tr>
27602
27603
27604      <tr><td colspan="7" class="kind">controls</td></tr>
27605
27606      <thead class="entries_header">
27607        <tr>
27608          <th class="th_name">Property Name</th>
27609          <th class="th_type">Type</th>
27610          <th class="th_description">Description</th>
27611          <th class="th_units">Units</th>
27612          <th class="th_range">Range</th>
27613          <th class="th_hal_version">Initial HIDL HAL version</th>
27614          <th class="th_tags">Tags</th>
27615        </tr>
27616      </thead>
27617
27618      <tbody>
27619
27620
27621
27622
27623
27624
27625
27626
27627
27628
27629          <tr class="entry" id="controls_android.sensor.exposureTime">
27630            <td class="entry_name
27631             " rowspan="3">
27632              android.<wbr/>sensor.<wbr/>exposure<wbr/>Time
27633            </td>
27634            <td class="entry_type">
27635                <span class="entry_type_name">int64</span>
27636
27637              <span class="entry_type_visibility"> [public]</span>
27638
27639
27640              <span class="entry_type_hwlevel">[full] </span>
27641
27642
27643
27644
27645            </td> <!-- entry_type -->
27646
27647            <td class="entry_description">
27648              <p>Duration each pixel is exposed to
27649light.<wbr/></p>
27650            </td>
27651
27652            <td class="entry_units">
27653              Nanoseconds
27654            </td>
27655
27656            <td class="entry_range">
27657              <p><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></p>
27658            </td>
27659
27660            <td class="entry_hal_version">
27661              <p>3.<wbr/>2</p>
27662            </td>
27663
27664            <td class="entry_tags">
27665              <ul class="entry_tags">
27666                  <li><a href="#tag_V1">V1</a></li>
27667              </ul>
27668            </td>
27669
27670          </tr>
27671          <tr class="entries_header">
27672            <th class="th_details" colspan="6">Details</th>
27673          </tr>
27674          <tr class="entry_cont">
27675            <td class="entry_details" colspan="6">
27676              <p>If the sensor can't expose this exact duration,<wbr/> it will shorten the
27677duration exposed to the nearest possible value (rather than expose longer).<wbr/>
27678The final exposure time used will be available in the output capture result.<wbr/></p>
27679<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
27680OFF; otherwise the auto-exposure algorithm will override this value.<wbr/> However,<wbr/> in the
27681case that <a href="#controls_android.control.aePriorityMode">android.<wbr/>control.<wbr/>ae<wbr/>Priority<wbr/>Mode</a> is set to SENSOR_<wbr/>EXPOSURE_<wbr/>TIME_<wbr/>PRIORITY,<wbr/> this
27682control will be effective and not controlled by the auto-exposure algorithm.<wbr/></p>
27683            </td>
27684          </tr>
27685
27686
27687          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27688           <!-- end of entry -->
27689
27690
27691          <tr class="entry" id="controls_android.sensor.frameDuration">
27692            <td class="entry_name
27693             " rowspan="5">
27694              android.<wbr/>sensor.<wbr/>frame<wbr/>Duration
27695            </td>
27696            <td class="entry_type">
27697                <span class="entry_type_name">int64</span>
27698
27699              <span class="entry_type_visibility"> [public]</span>
27700
27701
27702              <span class="entry_type_hwlevel">[full] </span>
27703
27704
27705
27706
27707            </td> <!-- entry_type -->
27708
27709            <td class="entry_description">
27710              <p>Duration from start of frame readout to
27711start of next frame readout.<wbr/></p>
27712            </td>
27713
27714            <td class="entry_units">
27715              Nanoseconds
27716            </td>
27717
27718            <td class="entry_range">
27719              <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/>
27720The duration is capped to <code>max(duration,<wbr/> exposureTime + overhead)</code>.<wbr/></p>
27721            </td>
27722
27723            <td class="entry_hal_version">
27724              <p>3.<wbr/>2</p>
27725            </td>
27726
27727            <td class="entry_tags">
27728              <ul class="entry_tags">
27729                  <li><a href="#tag_V1">V1</a></li>
27730              </ul>
27731            </td>
27732
27733          </tr>
27734          <tr class="entries_header">
27735            <th class="th_details" colspan="6">Details</th>
27736          </tr>
27737          <tr class="entry_cont">
27738            <td class="entry_details" colspan="6">
27739              <p>The maximum frame rate that can be supported by a camera subsystem is
27740a function of many factors:</p>
27741<ul>
27742<li>Requested resolutions of output image streams</li>
27743<li>Availability of binning /<wbr/> skipping modes on the imager</li>
27744<li>The bandwidth of the imager interface</li>
27745<li>The bandwidth of the various ISP processing blocks</li>
27746</ul>
27747<p>Since these factors can vary greatly between different ISPs and
27748sensors,<wbr/> the camera abstraction tries to represent the bandwidth
27749restrictions with as simple a model as possible.<wbr/></p>
27750<p>The model presented has the following characteristics:</p>
27751<ul>
27752<li>The image sensor is always configured to output the smallest
27753resolution possible given the application's requested output stream
27754sizes.<wbr/>  The smallest resolution is defined as being at least as large
27755as the largest requested output stream size; the camera pipeline must
27756never digitally upsample sensor data when the crop region covers the
27757whole sensor.<wbr/> In general,<wbr/> this means that if only small output stream
27758resolutions are configured,<wbr/> the sensor can provide a higher frame
27759rate.<wbr/></li>
27760<li>Since any request may use any or all the currently configured
27761output streams,<wbr/> the sensor and ISP must be configured to support
27762scaling a single capture to all the streams at the same time.<wbr/>  This
27763means the camera pipeline must be ready to produce the largest
27764requested output size without any delay.<wbr/>  Therefore,<wbr/> the overall
27765frame rate of a given configured stream set is governed only by the
27766largest requested stream resolution.<wbr/></li>
27767<li>Using more than one output stream in a request does not affect the
27768frame duration.<wbr/></li>
27769<li>Certain format-streams may need to do additional background processing
27770before data is consumed/<wbr/>produced by that stream.<wbr/> These processors
27771can run concurrently to the rest of the camera pipeline,<wbr/> but
27772cannot process more than 1 capture at a time.<wbr/></li>
27773</ul>
27774<p>The necessary information for the application,<wbr/> given the model above,<wbr/> is provided via
27775<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/>
27776These are used to determine the maximum frame rate /<wbr/> minimum frame duration that is
27777possible for a given stream configuration.<wbr/></p>
27778<p>Specifically,<wbr/> the application can use the following rules to
27779determine the minimum frame duration it can request from the camera
27780device:</p>
27781<ol>
27782<li>Let the set of currently configured input/<wbr/>output streams be called <code>S</code>.<wbr/></li>
27783<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>
27784(with its respective size/<wbr/>format).<wbr/> Let this set of frame durations be called <code>F</code>.<wbr/></li>
27785<li>For any given request <code>R</code>,<wbr/> the minimum frame duration allowed for <code>R</code> is the maximum
27786out 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>
27787</ol>
27788<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>
27789using its respective size/<wbr/>format),<wbr/> then the frame duration in <code>F</code> determines the steady
27790state frame rate that the application will get if it uses <code>R</code> as a repeating request.<wbr/> Let
27791this special kind of request be called <code>Rsimple</code>.<wbr/></p>
27792<p>A repeating request <code>Rsimple</code> can be <em>occasionally</em> interleaved by a single capture of a
27793new request <code>Rstall</code> (which has at least one in-use stream with a non-0 stall time) and if
27794<code>Rstall</code> has the same minimum frame duration this will not cause a frame rate loss if all
27795buffers from the previous <code>Rstall</code> have already been delivered.<wbr/></p>
27796<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>
27797<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
27798OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
27799<p><em>Note:</em> Prior to Android 13,<wbr/> this field was described as measuring the duration from
27800start of frame exposure to start of next frame exposure,<wbr/> which doesn't reflect the
27801definition from sensor manufacturer.<wbr/> A mobile sensor defines the frame duration as
27802intervals between sensor readouts.<wbr/></p>
27803            </td>
27804          </tr>
27805
27806          <tr class="entries_header">
27807            <th class="th_details" colspan="6">HAL Implementation Details</th>
27808          </tr>
27809          <tr class="entry_cont">
27810            <td class="entry_details" colspan="6">
27811              <p>For more details about stalling,<wbr/> see
27812<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>.<wbr/></p>
27813            </td>
27814          </tr>
27815
27816          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27817           <!-- end of entry -->
27818
27819
27820          <tr class="entry" id="controls_android.sensor.sensitivity">
27821            <td class="entry_name
27822             " rowspan="5">
27823              android.<wbr/>sensor.<wbr/>sensitivity
27824            </td>
27825            <td class="entry_type">
27826                <span class="entry_type_name">int32</span>
27827
27828              <span class="entry_type_visibility"> [public]</span>
27829
27830
27831              <span class="entry_type_hwlevel">[full] </span>
27832
27833
27834
27835
27836            </td> <!-- entry_type -->
27837
27838            <td class="entry_description">
27839              <p>The amount of gain applied to sensor data
27840before processing.<wbr/></p>
27841            </td>
27842
27843            <td class="entry_units">
27844              ISO arithmetic units
27845            </td>
27846
27847            <td class="entry_range">
27848              <p><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></p>
27849            </td>
27850
27851            <td class="entry_hal_version">
27852              <p>3.<wbr/>2</p>
27853            </td>
27854
27855            <td class="entry_tags">
27856              <ul class="entry_tags">
27857                  <li><a href="#tag_V1">V1</a></li>
27858              </ul>
27859            </td>
27860
27861          </tr>
27862          <tr class="entries_header">
27863            <th class="th_details" colspan="6">Details</th>
27864          </tr>
27865          <tr class="entry_cont">
27866            <td class="entry_details" colspan="6">
27867              <p>The sensitivity is the standard ISO sensitivity value,<wbr/>
27868as defined in ISO 12232:2006.<wbr/></p>
27869<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
27870if if it less than <a href="#static_android.sensor.maxAnalogSensitivity">android.<wbr/>sensor.<wbr/>max<wbr/>Analog<wbr/>Sensitivity</a>,<wbr/> the camera device
27871is guaranteed to use only analog amplification for applying the gain.<wbr/></p>
27872<p>If the camera device cannot apply the exact sensitivity
27873requested,<wbr/> it will reduce the gain to the nearest supported
27874value.<wbr/> The final sensitivity used will be available in the
27875output capture result.<wbr/></p>
27876<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
27877OFF; otherwise the auto-exposure algorithm will override this value.<wbr/> However,<wbr/> in the
27878case that <a href="#controls_android.control.aePriorityMode">android.<wbr/>control.<wbr/>ae<wbr/>Priority<wbr/>Mode</a> is set to SENSOR_<wbr/>SENSITIVITY_<wbr/>PRIORITY,<wbr/> this
27879control will be effective and not controlled by the auto-exposure algorithm.<wbr/></p>
27880<p>Note that for devices supporting postRawSensitivityBoost,<wbr/> the total sensitivity applied
27881to the final processed image is the combination of <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> and
27882<a href="#controls_android.control.postRawSensitivityBoost">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost</a>.<wbr/> In case the application uses the sensor
27883sensitivity from last capture result of an auto request for a manual request,<wbr/> in order
27884to achieve the same brightness in the output image,<wbr/> the application should also
27885set postRawSensitivityBoost.<wbr/></p>
27886            </td>
27887          </tr>
27888
27889          <tr class="entries_header">
27890            <th class="th_details" colspan="6">HAL Implementation Details</th>
27891          </tr>
27892          <tr class="entry_cont">
27893            <td class="entry_details" colspan="6">
27894              <p>ISO 12232:2006 REI method is acceptable.<wbr/></p>
27895            </td>
27896          </tr>
27897
27898          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27899           <!-- end of entry -->
27900
27901
27902          <tr class="entry" id="controls_android.sensor.testPatternData">
27903            <td class="entry_name
27904             " rowspan="5">
27905              android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data
27906            </td>
27907            <td class="entry_type">
27908                <span class="entry_type_name">int32</span>
27909                <span class="entry_type_container">x</span>
27910
27911                <span class="entry_type_array">
27912                  4
27913                </span>
27914              <span class="entry_type_visibility"> [public]</span>
27915
27916
27917
27918
27919
27920
27921            </td> <!-- entry_type -->
27922
27923            <td class="entry_description">
27924              <p>A pixel <code>[R,<wbr/> G_<wbr/>even,<wbr/> G_<wbr/>odd,<wbr/> B]</code> that supplies the test pattern
27925when <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a> is SOLID_<wbr/>COLOR.<wbr/></p>
27926            </td>
27927
27928            <td class="entry_units">
27929            </td>
27930
27931            <td class="entry_range">
27932            </td>
27933
27934            <td class="entry_hal_version">
27935              <p>3.<wbr/>2</p>
27936            </td>
27937
27938            <td class="entry_tags">
27939            </td>
27940
27941          </tr>
27942          <tr class="entries_header">
27943            <th class="th_details" colspan="6">Details</th>
27944          </tr>
27945          <tr class="entry_cont">
27946            <td class="entry_details" colspan="6">
27947              <p>Each color channel is treated as an unsigned 32-bit integer.<wbr/>
27948The camera device then uses the most significant X bits
27949that correspond to how many bits are in its Bayer raw sensor
27950output.<wbr/></p>
27951<p>For example,<wbr/> a sensor with RAW10 Bayer output would use the
2795210 most significant bits from each color channel.<wbr/></p>
27953            </td>
27954          </tr>
27955
27956          <tr class="entries_header">
27957            <th class="th_details" colspan="6">HAL Implementation Details</th>
27958          </tr>
27959          <tr class="entry_cont">
27960            <td class="entry_details" colspan="6">
27961
27962            </td>
27963          </tr>
27964
27965          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27966           <!-- end of entry -->
27967
27968
27969          <tr class="entry" id="controls_android.sensor.testPatternMode">
27970            <td class="entry_name
27971             " rowspan="5">
27972              android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode
27973            </td>
27974            <td class="entry_type">
27975                <span class="entry_type_name entry_type_name_enum">int32</span>
27976
27977              <span class="entry_type_visibility"> [public]</span>
27978
27979
27980
27981
27982
27983                <ul class="entry_type_enum">
27984                  <li>
27985                    <span class="entry_type_enum_name">OFF (v3.2)</span>
27986                    <span class="entry_type_enum_notes"><p>No test pattern mode is used,<wbr/> and the camera
27987device returns captures from the image sensor.<wbr/></p>
27988<p>This is the default if the key is not set.<wbr/></p></span>
27989                  </li>
27990                  <li>
27991                    <span class="entry_type_enum_name">SOLID_COLOR (v3.2)</span>
27992                    <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
27993respective color channel provided in
27994<a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a>.<wbr/></p>
27995<p>For example:</p>
27996<pre><code><a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a> = [0,<wbr/> 0xFFFFFFFF,<wbr/> 0xFFFFFFFF,<wbr/> 0]
27997</code></pre>
27998<p>All green pixels are 100% green.<wbr/> All red/<wbr/>blue pixels are black.<wbr/></p>
27999<pre><code><a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a> = [0xFFFFFFFF,<wbr/> 0,<wbr/> 0xFFFFFFFF,<wbr/> 0]
28000</code></pre>
28001<p>All red pixels are 100% red.<wbr/> Only the odd green pixels
28002are 100% green.<wbr/> All blue pixels are 100% black.<wbr/></p></span>
28003                  </li>
28004                  <li>
28005                    <span class="entry_type_enum_name">COLOR_BARS (v3.2)</span>
28006                    <span class="entry_type_enum_notes"><p>All pixel data is replaced with an 8-bar color pattern.<wbr/></p>
28007<p>The vertical bars (left-to-right) are as follows:</p>
28008<ul>
28009<li>100% white</li>
28010<li>yellow</li>
28011<li>cyan</li>
28012<li>green</li>
28013<li>magenta</li>
28014<li>red</li>
28015<li>blue</li>
28016<li>black</li>
28017</ul>
28018<p>In general the image would look like the following:</p>
28019<pre><code>W Y C G M R B K
28020W Y C G M R B K
28021W Y C G M R B K
28022W Y C G M R B K
28023W Y C G M R B K
28024.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
28025.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
28026.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
28027
28028(B = Blue,<wbr/> K = Black)
28029</code></pre>
28030<p>Each bar should take up 1/<wbr/>8 of the sensor pixel array width.<wbr/>
28031When this is not possible,<wbr/> the bar size should be rounded
28032down to the nearest integer and the pattern can repeat
28033on the right side.<wbr/></p>
28034<p>Each bar's height must always take up the full sensor
28035pixel array height.<wbr/></p>
28036<p>Each pixel in this test pattern must be set to either
280370% intensity or 100% intensity.<wbr/></p></span>
28038                  </li>
28039                  <li>
28040                    <span class="entry_type_enum_name">COLOR_BARS_FADE_TO_GRAY (v3.2)</span>
28041                    <span class="entry_type_enum_notes"><p>The test pattern is similar to COLOR_<wbr/>BARS,<wbr/> except that
28042each bar should start at its specified color at the top,<wbr/>
28043and fade to gray at the bottom.<wbr/></p>
28044<p>Furthermore each bar is further subdivided into a left and
28045right half.<wbr/> The left half should have a smooth gradient,<wbr/>
28046and the right half should have a quantized gradient.<wbr/></p>
28047<p>In particular,<wbr/> the right half's should consist of blocks of the
28048same color for 1/<wbr/>16th active sensor pixel array width.<wbr/></p>
28049<p>The least significant bits in the quantized gradient should
28050be copied from the most significant bits of the smooth gradient.<wbr/></p>
28051<p>The height of each bar should always be a multiple of 128.<wbr/>
28052When this is not the case,<wbr/> the pattern should repeat at the bottom
28053of the image.<wbr/></p></span>
28054                  </li>
28055                  <li>
28056                    <span class="entry_type_enum_name">PN9 (v3.2)</span>
28057                    <span class="entry_type_enum_notes"><p>All pixel data is replaced by a pseudo-random sequence
28058generated from a PN9 512-bit sequence (typically implemented
28059in hardware with a linear feedback shift register).<wbr/></p>
28060<p>The generator should be reset at the beginning of each frame,<wbr/>
28061and thus each subsequent raw frame with this test pattern should
28062be exactly the same as the last.<wbr/></p></span>
28063                  </li>
28064                  <li>
28065                    <span class="entry_type_enum_name">BLACK (v3.6)</span>
28066                    <span class="entry_type_enum_hidden">[test]</span>
28067                    <span class="entry_type_enum_notes"><p>All pixel data is replaced by 0% intensity (black) values.<wbr/></p>
28068<p>This test pattern is identical to SOLID_<wbr/>COLOR with a value of <code>[0,<wbr/> 0,<wbr/> 0,<wbr/> 0]</code> for
28069<a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a>.<wbr/>  It is recommended that devices implement full
28070SOLID_<wbr/>COLOR support instead,<wbr/> but BLACK can be used to provide minimal support for a
28071test pattern suitable for privacy use cases.<wbr/></p></span>
28072                  </li>
28073                  <li>
28074                    <span class="entry_type_enum_name">CUSTOM1 (v3.2)</span>
28075                    <span class="entry_type_enum_value">256</span>
28076                    <span class="entry_type_enum_notes"><p>The first custom test pattern.<wbr/> All custom patterns that are
28077available only on this camera device are at least this numeric
28078value.<wbr/></p>
28079<p>All of the custom test patterns will be static
28080(that is the raw image must not vary from frame to frame).<wbr/></p></span>
28081                  </li>
28082                </ul>
28083
28084            </td> <!-- entry_type -->
28085
28086            <td class="entry_description">
28087              <p>When enabled,<wbr/> the sensor sends a test pattern instead of
28088doing a real exposure from the camera.<wbr/></p>
28089            </td>
28090
28091            <td class="entry_units">
28092            </td>
28093
28094            <td class="entry_range">
28095              <p><a href="#static_android.sensor.availableTestPatternModes">android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes</a></p>
28096            </td>
28097
28098            <td class="entry_hal_version">
28099              <p>3.<wbr/>2</p>
28100            </td>
28101
28102            <td class="entry_tags">
28103            </td>
28104
28105          </tr>
28106          <tr class="entries_header">
28107            <th class="th_details" colspan="6">Details</th>
28108          </tr>
28109          <tr class="entry_cont">
28110            <td class="entry_details" colspan="6">
28111              <p>When a test pattern is enabled,<wbr/> all manual sensor controls specified
28112by android.<wbr/>sensor.<wbr/>* will be ignored.<wbr/> All other controls should
28113work as normal.<wbr/></p>
28114<p>For example,<wbr/> if manual flash is enabled,<wbr/> flash firing should still
28115occur (and that the test pattern remain unmodified,<wbr/> since the flash
28116would not actually affect it).<wbr/></p>
28117<p>Defaults to OFF.<wbr/></p>
28118            </td>
28119          </tr>
28120
28121          <tr class="entries_header">
28122            <th class="th_details" colspan="6">HAL Implementation Details</th>
28123          </tr>
28124          <tr class="entry_cont">
28125            <td class="entry_details" colspan="6">
28126              <p>All test patterns are specified in the Bayer domain.<wbr/></p>
28127<p>The HAL may choose to substitute test patterns from the sensor
28128with test patterns from on-device memory.<wbr/> In that case,<wbr/> it should be
28129indistinguishable to the ISP whether the data came from the
28130sensor interconnect bus (such as CSI2) or memory.<wbr/></p>
28131<p>For privacy use cases,<wbr/> if the camera device:</p>
28132<ul>
28133<li>supports SOLID_<wbr/>COLOR or BLACK test patterns,<wbr/></li>
28134<li>is a logical multi-camera,<wbr/> and</li>
28135<li>lists testPatternMode as a physical request key,<wbr/></li>
28136</ul>
28137<p>Each physical camera must support the same SOLID_<wbr/>COLOR and/<wbr/>or BLACK test patterns
28138as the logical camera.<wbr/></p>
28139            </td>
28140          </tr>
28141
28142          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28143           <!-- end of entry -->
28144
28145
28146          <tr class="entry" id="controls_android.sensor.pixelMode">
28147            <td class="entry_name
28148             " rowspan="3">
28149              android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode
28150            </td>
28151            <td class="entry_type">
28152                <span class="entry_type_name entry_type_name_enum">byte</span>
28153
28154              <span class="entry_type_visibility"> [public]</span>
28155
28156
28157
28158
28159
28160                <ul class="entry_type_enum">
28161                  <li>
28162                    <span class="entry_type_enum_name">DEFAULT (v3.6)</span>
28163                    <span class="entry_type_enum_notes"><p>This is the default sensor pixel mode.<wbr/></p></span>
28164                  </li>
28165                  <li>
28166                    <span class="entry_type_enum_name">MAXIMUM_RESOLUTION (v3.6)</span>
28167                    <span class="entry_type_enum_notes"><p>In this mode,<wbr/> sensors typically do not bin pixels,<wbr/> as a result can offer larger
28168image sizes.<wbr/></p></span>
28169                  </li>
28170                </ul>
28171
28172            </td> <!-- entry_type -->
28173
28174            <td class="entry_description">
28175              <p>Switches sensor pixel mode between maximum resolution mode and default mode.<wbr/></p>
28176            </td>
28177
28178            <td class="entry_units">
28179            </td>
28180
28181            <td class="entry_range">
28182            </td>
28183
28184            <td class="entry_hal_version">
28185              <p>3.<wbr/>6</p>
28186            </td>
28187
28188            <td class="entry_tags">
28189            </td>
28190
28191          </tr>
28192          <tr class="entries_header">
28193            <th class="th_details" colspan="6">Details</th>
28194          </tr>
28195          <tr class="entry_cont">
28196            <td class="entry_details" colspan="6">
28197              <p>This key controls whether the camera sensor operates in
28198<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>
28199mode or not.<wbr/> By default,<wbr/> all camera devices operate in
28200<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_DEFAULT">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>DEFAULT</a> mode.<wbr/>
28201When operating in
28202<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_DEFAULT">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>DEFAULT</a> mode,<wbr/> sensors
28203would typically perform pixel binning in order to improve low light
28204performance,<wbr/> noise reduction etc.<wbr/> However,<wbr/> in
28205<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>
28206mode,<wbr/> sensors typically operate in unbinned mode allowing for a larger image size.<wbr/>
28207The stream configurations supported in
28208<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>
28209mode are also different from those of
28210<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_DEFAULT">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>DEFAULT</a> mode.<wbr/>
28211They can be queried through
28212<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#get">CameraCharacteristics#get</a> with
28213<a href="https://developer.android.com/reference/CameraCharacteristics.html#SCALER_STREAM_CONFIGURATION_MAP_MAXIMUM_RESOLUTION">Camera<wbr/>Characteristics#SCALER_<wbr/>STREAM_<wbr/>CONFIGURATION_<wbr/>MAP_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/>
28214Unless reported by both
28215<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html">StreamConfigurationMap</a>s,<wbr/> the outputs from
28216<code><a href="#static_android.scaler.streamConfigurationMapMaximumResolution">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map<wbr/>Maximum<wbr/>Resolution</a></code> and
28217<code><a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a></code>
28218must not be mixed in the same CaptureRequest.<wbr/> In other words,<wbr/> these outputs are
28219exclusive to each other.<wbr/>
28220This key does not need to be set for reprocess requests.<wbr/>
28221This key will be be present on devices supporting the
28222<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR">Camera<wbr/>Metadata#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>ULTRA_<wbr/>HIGH_<wbr/>RESOLUTION_<wbr/>SENSOR</a>
28223capability.<wbr/> It may also be present on devices which do not support the aforementioned
28224capability.<wbr/> In that case:</p>
28225<ul>
28226<li>
28227<p>The mandatory stream combinations listed in
28228  <a href="#static_android.scaler.mandatoryMaximumResolutionStreamCombinations">android.<wbr/>scaler.<wbr/>mandatory<wbr/>Maximum<wbr/>Resolution<wbr/>Stream<wbr/>Combinations</a>  would not apply.<wbr/></p>
28229</li>
28230<li>
28231<p>The bayer pattern of {@code RAW} streams when
28232  <a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>
28233  is selected will be the one listed in <a href="#static_android.sensor.info.binningFactor">android.<wbr/>sensor.<wbr/>info.<wbr/>binning<wbr/>Factor</a>.<wbr/></p>
28234</li>
28235<li>
28236<p>The following keys will always be present:</p>
28237<ul>
28238<li><a href="#static_android.scaler.streamConfigurationMapMaximumResolution">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map<wbr/>Maximum<wbr/>Resolution</a></li>
28239<li><a href="#static_android.sensor.info.activeArraySizeMaximumResolution">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution</a></li>
28240<li><a href="#static_android.sensor.info.pixelArraySizeMaximumResolution">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution</a></li>
28241<li><a href="#static_android.sensor.info.preCorrectionActiveArraySizeMaximumResolution">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution</a></li>
28242</ul>
28243</li>
28244</ul>
28245            </td>
28246          </tr>
28247
28248
28249          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28250           <!-- end of entry -->
28251
28252
28253
28254      <!-- end of kind -->
28255      </tbody>
28256      <tr><td colspan="7" class="kind">static</td></tr>
28257
28258      <thead class="entries_header">
28259        <tr>
28260          <th class="th_name">Property Name</th>
28261          <th class="th_type">Type</th>
28262          <th class="th_description">Description</th>
28263          <th class="th_units">Units</th>
28264          <th class="th_range">Range</th>
28265          <th class="th_hal_version">Initial HIDL HAL version</th>
28266          <th class="th_tags">Tags</th>
28267        </tr>
28268      </thead>
28269
28270      <tbody>
28271
28272
28273
28274
28275
28276
28277
28278
28279
28280
28281
28282
28283          <tr class="entry" id="static_android.sensor.info.activeArraySize">
28284            <td class="entry_name
28285             " rowspan="5">
28286              android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
28287            </td>
28288            <td class="entry_type">
28289                <span class="entry_type_name">int32</span>
28290                <span class="entry_type_container">x</span>
28291
28292                <span class="entry_type_array">
28293                  4
28294                </span>
28295              <span class="entry_type_visibility"> [public as rectangle]</span>
28296
28297
28298              <span class="entry_type_hwlevel">[legacy] </span>
28299
28300
28301                <div class="entry_type_notes">Four ints defining the active pixel rectangle</div>
28302
28303
28304            </td> <!-- entry_type -->
28305
28306            <td class="entry_description">
28307              <p>The area of the image sensor which corresponds to active pixels after any geometric
28308distortion correction has been applied.<wbr/></p>
28309            </td>
28310
28311            <td class="entry_units">
28312              Pixel coordinates on the image sensor
28313            </td>
28314
28315            <td class="entry_range">
28316            </td>
28317
28318            <td class="entry_hal_version">
28319              <p>3.<wbr/>2</p>
28320            </td>
28321
28322            <td class="entry_tags">
28323              <ul class="entry_tags">
28324                  <li><a href="#tag_RAW">RAW</a></li>
28325              </ul>
28326            </td>
28327
28328          </tr>
28329          <tr class="entries_header">
28330            <th class="th_details" colspan="6">Details</th>
28331          </tr>
28332          <tr class="entry_cont">
28333            <td class="entry_details" colspan="6">
28334              <p>This is the rectangle representing the size of the active region of the sensor (i.<wbr/>e.<wbr/>
28335the region that actually receives light from the scene) after any geometric correction
28336has been applied,<wbr/> and should be treated as the maximum size in pixels of any of the
28337image output formats aside from the raw formats.<wbr/></p>
28338<p>This rectangle is defined relative to the full pixel array; (0,<wbr/>0) is the top-left of
28339the full pixel array,<wbr/> and the size of the full pixel array is given by
28340<a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
28341<p>The coordinate system for most other keys that list pixel coordinates,<wbr/> including
28342<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
28343this field,<wbr/> with <code>(0,<wbr/> 0)</code> being the top-left of this rectangle.<wbr/></p>
28344<p>The active array may be smaller than the full pixel array,<wbr/> since the full array may
28345include black calibration pixels or other inactive regions.<wbr/></p>
28346<p>For devices that do not support <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the active
28347array must be the same as <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>
28348<p>For devices that support <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the active array must
28349be enclosed by <a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>.<wbr/> The difference between
28350pre-correction active array and active array accounts for scaling or cropping caused
28351by lens geometric distortion correction.<wbr/></p>
28352<p>In general,<wbr/> application should always refer to active array size for controls like
28353metering regions or crop region.<wbr/> Two exceptions are when the application is dealing with
28354RAW image buffers (RAW_<wbr/>SENSOR,<wbr/> RAW10,<wbr/> RAW12 etc),<wbr/> or when application explicitly set
28355<a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> to OFF.<wbr/> In these cases,<wbr/> application should refer
28356to <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>
28357            </td>
28358          </tr>
28359
28360          <tr class="entries_header">
28361            <th class="th_details" colspan="6">HAL Implementation Details</th>
28362          </tr>
28363          <tr class="entry_cont">
28364            <td class="entry_details" colspan="6">
28365              <p>This array contains <code>(xmin,<wbr/> ymin,<wbr/> width,<wbr/> height)</code>.<wbr/> The <code>(xmin,<wbr/> ymin)</code> must be
28366&gt;= <code>(0,<wbr/>0)</code>.<wbr/>
28367The <code>(width,<wbr/> height)</code> must be &lt;= <code><a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a></code>.<wbr/></p>
28368            </td>
28369          </tr>
28370
28371          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28372           <!-- end of entry -->
28373
28374
28375          <tr class="entry" id="static_android.sensor.info.sensitivityRange">
28376            <td class="entry_name
28377             " rowspan="3">
28378              android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range
28379            </td>
28380            <td class="entry_type">
28381                <span class="entry_type_name">int32</span>
28382                <span class="entry_type_container">x</span>
28383
28384                <span class="entry_type_array">
28385                  2
28386                </span>
28387              <span class="entry_type_visibility"> [public as rangeInt]</span>
28388
28389
28390              <span class="entry_type_hwlevel">[full] </span>
28391
28392
28393                <div class="entry_type_notes">Range of supported sensitivities</div>
28394
28395
28396            </td> <!-- entry_type -->
28397
28398            <td class="entry_description">
28399              <p>Range of sensitivities for <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> supported by this
28400camera device.<wbr/></p>
28401            </td>
28402
28403            <td class="entry_units">
28404            </td>
28405
28406            <td class="entry_range">
28407              <p>Min &lt;= 100,<wbr/> Max &gt;= 800</p>
28408            </td>
28409
28410            <td class="entry_hal_version">
28411              <p>3.<wbr/>2</p>
28412            </td>
28413
28414            <td class="entry_tags">
28415              <ul class="entry_tags">
28416                  <li><a href="#tag_BC">BC</a></li>
28417                  <li><a href="#tag_V1">V1</a></li>
28418              </ul>
28419            </td>
28420
28421          </tr>
28422          <tr class="entries_header">
28423            <th class="th_details" colspan="6">Details</th>
28424          </tr>
28425          <tr class="entry_cont">
28426            <td class="entry_details" colspan="6">
28427              <p>The values are the standard ISO sensitivity values,<wbr/>
28428as defined in ISO 12232:2006.<wbr/></p>
28429            </td>
28430          </tr>
28431
28432
28433          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28434           <!-- end of entry -->
28435
28436
28437          <tr class="entry" id="static_android.sensor.info.colorFilterArrangement">
28438            <td class="entry_name
28439             " rowspan="3">
28440              android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement
28441            </td>
28442            <td class="entry_type">
28443                <span class="entry_type_name entry_type_name_enum">byte</span>
28444
28445              <span class="entry_type_visibility"> [public]</span>
28446
28447
28448              <span class="entry_type_hwlevel">[full] </span>
28449
28450
28451
28452                <ul class="entry_type_enum">
28453                  <li>
28454                    <span class="entry_type_enum_name">RGGB (v3.2)</span>
28455                  </li>
28456                  <li>
28457                    <span class="entry_type_enum_name">GRBG (v3.2)</span>
28458                  </li>
28459                  <li>
28460                    <span class="entry_type_enum_name">GBRG (v3.2)</span>
28461                  </li>
28462                  <li>
28463                    <span class="entry_type_enum_name">BGGR (v3.2)</span>
28464                  </li>
28465                  <li>
28466                    <span class="entry_type_enum_name">RGB (v3.2)</span>
28467                    <span class="entry_type_enum_notes"><p>Sensor is not Bayer; output has 3 16-bit
28468values for each pixel,<wbr/> instead of just 1 16-bit value
28469per pixel.<wbr/></p></span>
28470                  </li>
28471                  <li>
28472                    <span class="entry_type_enum_name">MONO (v3.4)</span>
28473                    <span class="entry_type_enum_notes"><p>Sensor doesn't have any Bayer color filter.<wbr/>
28474Such sensor captures visible light in monochrome.<wbr/> The exact weighting and
28475wavelengths captured is not specified,<wbr/> but generally only includes the visible
28476frequencies.<wbr/> This value implies a MONOCHROME camera.<wbr/></p></span>
28477                  </li>
28478                  <li>
28479                    <span class="entry_type_enum_name">NIR (v3.4)</span>
28480                    <span class="entry_type_enum_notes"><p>Sensor has a near infrared filter capturing light with wavelength between
28481roughly 750nm and 1400nm,<wbr/> and the same filter covers the whole sensor array.<wbr/> This
28482value implies a MONOCHROME camera.<wbr/></p></span>
28483                  </li>
28484                </ul>
28485
28486            </td> <!-- entry_type -->
28487
28488            <td class="entry_description">
28489              <p>The arrangement of color filters on sensor;
28490represents the colors in the top-left 2x2 section of
28491the sensor,<wbr/> in reading order,<wbr/> for a Bayer camera,<wbr/> or the
28492light spectrum it captures for MONOCHROME camera.<wbr/></p>
28493            </td>
28494
28495            <td class="entry_units">
28496            </td>
28497
28498            <td class="entry_range">
28499            </td>
28500
28501            <td class="entry_hal_version">
28502              <p>3.<wbr/>2</p>
28503            </td>
28504
28505            <td class="entry_tags">
28506              <ul class="entry_tags">
28507                  <li><a href="#tag_RAW">RAW</a></li>
28508              </ul>
28509            </td>
28510
28511          </tr>
28512
28513          <tr class="entries_header">
28514            <th class="th_details" colspan="6">HAL Implementation Details</th>
28515          </tr>
28516          <tr class="entry_cont">
28517            <td class="entry_details" colspan="6">
28518              <p>Starting from Android Q,<wbr/> the colorFilterArrangement for a MONOCHROME camera must be
28519single color patterns,<wbr/> such as MONO or NIR.<wbr/></p>
28520            </td>
28521          </tr>
28522
28523          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28524           <!-- end of entry -->
28525
28526
28527          <tr class="entry" id="static_android.sensor.info.exposureTimeRange">
28528            <td class="entry_name
28529             " rowspan="3">
28530              android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range
28531            </td>
28532            <td class="entry_type">
28533                <span class="entry_type_name">int64</span>
28534                <span class="entry_type_container">x</span>
28535
28536                <span class="entry_type_array">
28537                  2
28538                </span>
28539              <span class="entry_type_visibility"> [public as rangeLong]</span>
28540
28541
28542              <span class="entry_type_hwlevel">[full] </span>
28543
28544
28545                <div class="entry_type_notes">nanoseconds</div>
28546
28547
28548            </td> <!-- entry_type -->
28549
28550            <td class="entry_description">
28551              <p>The range of image exposure times for <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> supported
28552by this camera device.<wbr/></p>
28553            </td>
28554
28555            <td class="entry_units">
28556              Nanoseconds
28557            </td>
28558
28559            <td class="entry_range">
28560              <p>The minimum exposure time will be less than 100 us.<wbr/> For FULL
28561capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/>
28562the maximum exposure time will be greater than 100ms.<wbr/></p>
28563            </td>
28564
28565            <td class="entry_hal_version">
28566              <p>3.<wbr/>2</p>
28567            </td>
28568
28569            <td class="entry_tags">
28570              <ul class="entry_tags">
28571                  <li><a href="#tag_V1">V1</a></li>
28572              </ul>
28573            </td>
28574
28575          </tr>
28576
28577          <tr class="entries_header">
28578            <th class="th_details" colspan="6">HAL Implementation Details</th>
28579          </tr>
28580          <tr class="entry_cont">
28581            <td class="entry_details" colspan="6">
28582              <p>For FULL capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/>
28583The maximum of the range SHOULD be at least 1 second (1e9),<wbr/> MUST be at least
28584100ms.<wbr/></p>
28585            </td>
28586          </tr>
28587
28588          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28589           <!-- end of entry -->
28590
28591
28592          <tr class="entry" id="static_android.sensor.info.maxFrameDuration">
28593            <td class="entry_name
28594             " rowspan="5">
28595              android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration
28596            </td>
28597            <td class="entry_type">
28598                <span class="entry_type_name">int64</span>
28599
28600              <span class="entry_type_visibility"> [public]</span>
28601
28602
28603              <span class="entry_type_hwlevel">[full] </span>
28604
28605
28606
28607
28608            </td> <!-- entry_type -->
28609
28610            <td class="entry_description">
28611              <p>The maximum possible frame duration (minimum frame rate) for
28612<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> that is supported this camera device.<wbr/></p>
28613            </td>
28614
28615            <td class="entry_units">
28616              Nanoseconds
28617            </td>
28618
28619            <td class="entry_range">
28620              <p>For FULL capability devices
28621(<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/> at least 100ms.<wbr/></p>
28622            </td>
28623
28624            <td class="entry_hal_version">
28625              <p>3.<wbr/>2</p>
28626            </td>
28627
28628            <td class="entry_tags">
28629              <ul class="entry_tags">
28630                  <li><a href="#tag_V1">V1</a></li>
28631              </ul>
28632            </td>
28633
28634          </tr>
28635          <tr class="entries_header">
28636            <th class="th_details" colspan="6">Details</th>
28637          </tr>
28638          <tr class="entry_cont">
28639            <td class="entry_details" colspan="6">
28640              <p>Attempting to use frame durations beyond the maximum will result in the frame
28641duration being clipped to the maximum.<wbr/> See that control for a full definition of frame
28642durations.<wbr/></p>
28643<p>Refer to <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>
28644for the minimum frame duration values.<wbr/></p>
28645            </td>
28646          </tr>
28647
28648          <tr class="entries_header">
28649            <th class="th_details" colspan="6">HAL Implementation Details</th>
28650          </tr>
28651          <tr class="entry_cont">
28652            <td class="entry_details" colspan="6">
28653              <p>For FULL capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/>
28654The maximum of the range SHOULD be at least
286551 second (1e9),<wbr/> MUST be at least 100ms (100e6).<wbr/></p>
28656<p><a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a> must be greater or
28657equal to the <a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a> max
28658value (since exposure time overrides frame duration).<wbr/></p>
28659<p>Available minimum frame durations for JPEG must be no greater
28660than that of the YUV_<wbr/>420_<wbr/>888/<wbr/>IMPLEMENTATION_<wbr/>DEFINED
28661minimum frame durations (for that respective size).<wbr/></p>
28662<p>Since JPEG processing is considered offline and can take longer than
28663a single uncompressed capture,<wbr/> refer to
28664<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>
28665for details about encoding this scenario.<wbr/></p>
28666            </td>
28667          </tr>
28668
28669          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28670           <!-- end of entry -->
28671
28672
28673          <tr class="entry" id="static_android.sensor.info.physicalSize">
28674            <td class="entry_name
28675             " rowspan="5">
28676              android.<wbr/>sensor.<wbr/>info.<wbr/>physical<wbr/>Size
28677            </td>
28678            <td class="entry_type">
28679                <span class="entry_type_name">float</span>
28680                <span class="entry_type_container">x</span>
28681
28682                <span class="entry_type_array">
28683                  2
28684                </span>
28685              <span class="entry_type_visibility"> [public as sizeF]</span>
28686
28687
28688              <span class="entry_type_hwlevel">[legacy] </span>
28689
28690
28691                <div class="entry_type_notes">width x height</div>
28692
28693
28694            </td> <!-- entry_type -->
28695
28696            <td class="entry_description">
28697              <p>The physical dimensions of the full pixel
28698array.<wbr/></p>
28699            </td>
28700
28701            <td class="entry_units">
28702              Millimeters
28703            </td>
28704
28705            <td class="entry_range">
28706            </td>
28707
28708            <td class="entry_hal_version">
28709              <p>3.<wbr/>2</p>
28710            </td>
28711
28712            <td class="entry_tags">
28713              <ul class="entry_tags">
28714                  <li><a href="#tag_V1">V1</a></li>
28715                  <li><a href="#tag_BC">BC</a></li>
28716              </ul>
28717            </td>
28718
28719          </tr>
28720          <tr class="entries_header">
28721            <th class="th_details" colspan="6">Details</th>
28722          </tr>
28723          <tr class="entry_cont">
28724            <td class="entry_details" colspan="6">
28725              <p>This is the physical size of the sensor pixel
28726array defined by <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
28727            </td>
28728          </tr>
28729
28730          <tr class="entries_header">
28731            <th class="th_details" colspan="6">HAL Implementation Details</th>
28732          </tr>
28733          <tr class="entry_cont">
28734            <td class="entry_details" colspan="6">
28735              <p>Needed for FOV calculation for old API</p>
28736            </td>
28737          </tr>
28738
28739          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28740           <!-- end of entry -->
28741
28742
28743          <tr class="entry" id="static_android.sensor.info.pixelArraySize">
28744            <td class="entry_name
28745             " rowspan="3">
28746              android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size
28747            </td>
28748            <td class="entry_type">
28749                <span class="entry_type_name">int32</span>
28750                <span class="entry_type_container">x</span>
28751
28752                <span class="entry_type_array">
28753                  2
28754                </span>
28755              <span class="entry_type_visibility"> [public as size]</span>
28756
28757
28758              <span class="entry_type_hwlevel">[legacy] </span>
28759
28760
28761
28762
28763            </td> <!-- entry_type -->
28764
28765            <td class="entry_description">
28766              <p>Dimensions of the full pixel array,<wbr/> possibly
28767including black calibration pixels.<wbr/></p>
28768            </td>
28769
28770            <td class="entry_units">
28771              Pixels
28772            </td>
28773
28774            <td class="entry_range">
28775            </td>
28776
28777            <td class="entry_hal_version">
28778              <p>3.<wbr/>2</p>
28779            </td>
28780
28781            <td class="entry_tags">
28782              <ul class="entry_tags">
28783                  <li><a href="#tag_RAW">RAW</a></li>
28784                  <li><a href="#tag_BC">BC</a></li>
28785              </ul>
28786            </td>
28787
28788          </tr>
28789          <tr class="entries_header">
28790            <th class="th_details" colspan="6">Details</th>
28791          </tr>
28792          <tr class="entry_cont">
28793            <td class="entry_details" colspan="6">
28794              <p>The pixel count of the full pixel array of the image sensor,<wbr/> which covers
28795<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
28796the raw buffers produced by this sensor.<wbr/></p>
28797<p>If a camera device supports raw sensor formats,<wbr/> either this or
28798<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
28799output formats listed in <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html">StreamConfigurationMap</a>
28800(this depends on whether or not the image sensor returns buffers containing pixels that
28801are not part of the active array region for blacklevel calibration or other purposes).<wbr/></p>
28802<p>Some parts of the full pixel array may not receive light from the scene,<wbr/>
28803or 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
28804defines the rectangle of active pixels that will be included in processed image
28805formats.<wbr/></p>
28806            </td>
28807          </tr>
28808
28809
28810          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28811           <!-- end of entry -->
28812
28813
28814          <tr class="entry" id="static_android.sensor.info.whiteLevel">
28815            <td class="entry_name
28816             " rowspan="5">
28817              android.<wbr/>sensor.<wbr/>info.<wbr/>white<wbr/>Level
28818            </td>
28819            <td class="entry_type">
28820                <span class="entry_type_name">int32</span>
28821
28822              <span class="entry_type_visibility"> [public]</span>
28823
28824
28825
28826
28827
28828
28829            </td> <!-- entry_type -->
28830
28831            <td class="entry_description">
28832              <p>Maximum raw value output by sensor.<wbr/></p>
28833            </td>
28834
28835            <td class="entry_units">
28836            </td>
28837
28838            <td class="entry_range">
28839              <p>&gt; 255 (8-bit output)</p>
28840            </td>
28841
28842            <td class="entry_hal_version">
28843              <p>3.<wbr/>2</p>
28844            </td>
28845
28846            <td class="entry_tags">
28847              <ul class="entry_tags">
28848                  <li><a href="#tag_RAW">RAW</a></li>
28849              </ul>
28850            </td>
28851
28852          </tr>
28853          <tr class="entries_header">
28854            <th class="th_details" colspan="6">Details</th>
28855          </tr>
28856          <tr class="entry_cont">
28857            <td class="entry_details" colspan="6">
28858              <p>This specifies the fully-saturated encoding level for the raw
28859sample values from the sensor.<wbr/>  This is typically caused by the
28860sensor becoming highly non-linear or clipping.<wbr/> The minimum for
28861each channel is specified by the offset in the
28862<a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> key.<wbr/></p>
28863<p>The white level is typically determined either by sensor bit depth
28864(8-14 bits is expected),<wbr/> or by the point where the sensor response
28865becomes too non-linear to be useful.<wbr/>  The default value for this is
28866maximum representable value for a 16-bit raw sample (2^16 - 1).<wbr/></p>
28867<p>The white level values of captured images may vary for different
28868capture settings (e.<wbr/>g.,<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>).<wbr/> This key
28869represents a coarse approximation for such case.<wbr/> It is recommended
28870to use <a href="#dynamic_android.sensor.dynamicWhiteLevel">android.<wbr/>sensor.<wbr/>dynamic<wbr/>White<wbr/>Level</a> for captures when supported
28871by the camera device,<wbr/> which provides more accurate white level values.<wbr/></p>
28872            </td>
28873          </tr>
28874
28875          <tr class="entries_header">
28876            <th class="th_details" colspan="6">HAL Implementation Details</th>
28877          </tr>
28878          <tr class="entry_cont">
28879            <td class="entry_details" colspan="6">
28880              <p>The full bit depth of the sensor must be available in the raw data,<wbr/>
28881so the value for linear sensors should not be significantly lower
28882than maximum raw value supported,<wbr/> i.<wbr/>e.<wbr/> 2^(sensor bits per pixel).<wbr/></p>
28883            </td>
28884          </tr>
28885
28886          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28887           <!-- end of entry -->
28888
28889
28890          <tr class="entry" id="static_android.sensor.info.timestampSource">
28891            <td class="entry_name
28892             " rowspan="5">
28893              android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source
28894            </td>
28895            <td class="entry_type">
28896                <span class="entry_type_name entry_type_name_enum">byte</span>
28897
28898              <span class="entry_type_visibility"> [public]</span>
28899
28900
28901              <span class="entry_type_hwlevel">[legacy] </span>
28902
28903
28904
28905                <ul class="entry_type_enum">
28906                  <li>
28907                    <span class="entry_type_enum_name">UNKNOWN (v3.2)</span>
28908                    <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/> but can
28909not be compared to timestamps from other subsystems (e.<wbr/>g.<wbr/> accelerometer,<wbr/> gyro etc.<wbr/>),<wbr/>
28910or other instances of the same or different camera devices in the same system with
28911accuracy.<wbr/> However,<wbr/> the timestamps are roughly in the same timebase as
28912<a href="https://developer.android.com/reference/android/os/SystemClock.html#uptimeMillis">SystemClock#uptimeMillis</a>.<wbr/>  The accuracy is sufficient for tasks
28913like A/<wbr/>V synchronization for video recording,<wbr/> at least,<wbr/> and the timestamps can be
28914directly used together with timestamps from the audio subsystem for that task.<wbr/></p>
28915<p>Timestamps between streams and results for a single camera instance are comparable,<wbr/>
28916and the timestamps for all buffers and the result metadata generated by a single
28917capture are identical.<wbr/></p></span>
28918                  </li>
28919                  <li>
28920                    <span class="entry_type_enum_name">REALTIME (v3.2)</span>
28921                    <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
28922<a href="https://developer.android.com/reference/android/os/SystemClock.html#elapsedRealtimeNanos">SystemClock#elapsedRealtimeNanos</a>,<wbr/>
28923and they can be compared to other timestamps using that base.<wbr/></p>
28924<p>When buffers from a REALTIME device are passed directly to a video encoder from the
28925camera,<wbr/> automatic compensation is done to account for differing timebases of the
28926audio and camera subsystems.<wbr/>  If the application is receiving buffers and then later
28927sending them to a video encoder or other application where they are compared with
28928audio subsystem timestamps or similar,<wbr/> this compensation is not present.<wbr/>  In those
28929cases,<wbr/> applications need to adjust the timestamps themselves.<wbr/>  Since <a href="https://developer.android.com/reference/android/os/SystemClock.html#elapsedRealtimeNanos">SystemClock#elapsedRealtimeNanos</a> and <a href="https://developer.android.com/reference/android/os/SystemClock.html#uptimeMillis">SystemClock#uptimeMillis</a> only diverge while the device is asleep,<wbr/> an
28930offset between the two sources can be measured once per active session and applied
28931to timestamps for sufficient accuracy for A/<wbr/>V sync.<wbr/></p></span>
28932                  </li>
28933                </ul>
28934
28935            </td> <!-- entry_type -->
28936
28937            <td class="entry_description">
28938              <p>The time base source for sensor capture start timestamps.<wbr/></p>
28939            </td>
28940
28941            <td class="entry_units">
28942            </td>
28943
28944            <td class="entry_range">
28945            </td>
28946
28947            <td class="entry_hal_version">
28948              <p>3.<wbr/>2</p>
28949            </td>
28950
28951            <td class="entry_tags">
28952              <ul class="entry_tags">
28953                  <li><a href="#tag_V1">V1</a></li>
28954              </ul>
28955            </td>
28956
28957          </tr>
28958          <tr class="entries_header">
28959            <th class="th_details" colspan="6">Details</th>
28960          </tr>
28961          <tr class="entry_cont">
28962            <td class="entry_details" colspan="6">
28963              <p>The timestamps provided for captures are always in nanoseconds and monotonic,<wbr/> but
28964may not based on a time source that can be compared to other system time sources.<wbr/></p>
28965<p>This characteristic defines the source for the timestamps,<wbr/> and therefore whether they
28966can be compared against other system time sources/<wbr/>timestamps.<wbr/></p>
28967            </td>
28968          </tr>
28969
28970          <tr class="entries_header">
28971            <th class="th_details" colspan="6">HAL Implementation Details</th>
28972          </tr>
28973          <tr class="entry_cont">
28974            <td class="entry_details" colspan="6">
28975              <p>For camera devices implement UNKNOWN,<wbr/> the camera framework expects that the timestamp
28976source to be SYSTEM_<wbr/>TIME_<wbr/>MONOTONIC.<wbr/> For camera devices implement REALTIME,<wbr/> the camera
28977framework expects that the timestamp source to be SYSTEM_<wbr/>TIME_<wbr/>BOOTTIME.<wbr/> See
28978system/<wbr/>core/<wbr/>include/<wbr/>utils/<wbr/>Timers.<wbr/>h for the definition of SYSTEM_<wbr/>TIME_<wbr/>MONOTONIC and
28979SYSTEM_<wbr/>TIME_<wbr/>BOOTTIME.<wbr/> Note that HAL must follow above expectation; otherwise video
28980recording might suffer unexpected behavior.<wbr/></p>
28981<p>Also,<wbr/> camera devices which implement REALTIME must pass the ITS sensor fusion test which
28982tests the alignment between camera timestamps and gyro sensor timestamps.<wbr/></p>
28983            </td>
28984          </tr>
28985
28986          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28987           <!-- end of entry -->
28988
28989
28990          <tr class="entry" id="static_android.sensor.info.lensShadingApplied">
28991            <td class="entry_name
28992             " rowspan="3">
28993              android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied
28994            </td>
28995            <td class="entry_type">
28996                <span class="entry_type_name entry_type_name_enum">byte</span>
28997
28998              <span class="entry_type_visibility"> [public as boolean]</span>
28999
29000
29001
29002
29003
29004                <ul class="entry_type_enum">
29005                  <li>
29006                    <span class="entry_type_enum_name">FALSE (v3.2)</span>
29007                  </li>
29008                  <li>
29009                    <span class="entry_type_enum_name">TRUE (v3.2)</span>
29010                  </li>
29011                </ul>
29012
29013            </td> <!-- entry_type -->
29014
29015            <td class="entry_description">
29016              <p>Whether the RAW images output from this camera device are subject to
29017lens shading correction.<wbr/></p>
29018            </td>
29019
29020            <td class="entry_units">
29021            </td>
29022
29023            <td class="entry_range">
29024            </td>
29025
29026            <td class="entry_hal_version">
29027              <p>3.<wbr/>2</p>
29028            </td>
29029
29030            <td class="entry_tags">
29031            </td>
29032
29033          </tr>
29034          <tr class="entries_header">
29035            <th class="th_details" colspan="6">Details</th>
29036          </tr>
29037          <tr class="entry_cont">
29038            <td class="entry_details" colspan="6">
29039              <p>If <code>true</code>,<wbr/> all images produced by the camera device in the <code>RAW</code> image formats will have
29040at least some lens shading correction already applied to it.<wbr/> If <code>false</code>,<wbr/> the images will
29041not be adjusted for lens shading correction.<wbr/>  See <a href="#static_android.request.maxNumOutputRaw">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Raw</a> for a
29042list of RAW image formats.<wbr/></p>
29043<p>When <code>true</code>,<wbr/> the <code>lensShadingCorrectionMap</code> key may still have values greater than 1.<wbr/>0,<wbr/>
29044and those will need to be applied to any captured RAW frames for them to match the shading
29045correction of processed buffers such as <code>YUV</code> or <code>JPEG</code> images.<wbr/> This may occur,<wbr/> for
29046example,<wbr/> when some basic fixed lens shading correction is applied by hardware to RAW data,<wbr/>
29047and additional correction is done dynamically in the camera processing pipeline after
29048demosaicing.<wbr/></p>
29049<p>This key will be <code>null</code> for all devices do not report this information.<wbr/>
29050Devices with RAW capability will always report this information in this key.<wbr/></p>
29051            </td>
29052          </tr>
29053
29054
29055          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29056           <!-- end of entry -->
29057
29058
29059          <tr class="entry" id="static_android.sensor.info.preCorrectionActiveArraySize">
29060            <td class="entry_name
29061             " rowspan="5">
29062              android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size
29063            </td>
29064            <td class="entry_type">
29065                <span class="entry_type_name">int32</span>
29066                <span class="entry_type_container">x</span>
29067
29068                <span class="entry_type_array">
29069                  4
29070                </span>
29071              <span class="entry_type_visibility"> [public as rectangle]</span>
29072
29073
29074              <span class="entry_type_hwlevel">[legacy] </span>
29075
29076
29077                <div class="entry_type_notes">Four ints defining the active pixel rectangle</div>
29078
29079
29080            </td> <!-- entry_type -->
29081
29082            <td class="entry_description">
29083              <p>The area of the image sensor which corresponds to active pixels prior to the
29084application of any geometric distortion correction.<wbr/></p>
29085            </td>
29086
29087            <td class="entry_units">
29088              Pixel coordinates on the image sensor
29089            </td>
29090
29091            <td class="entry_range">
29092            </td>
29093
29094            <td class="entry_hal_version">
29095              <p>3.<wbr/>2</p>
29096            </td>
29097
29098            <td class="entry_tags">
29099              <ul class="entry_tags">
29100                  <li><a href="#tag_RAW">RAW</a></li>
29101              </ul>
29102            </td>
29103
29104          </tr>
29105          <tr class="entries_header">
29106            <th class="th_details" colspan="6">Details</th>
29107          </tr>
29108          <tr class="entry_cont">
29109            <td class="entry_details" colspan="6">
29110              <p>This is the rectangle representing the size of the active region of the sensor (i.<wbr/>e.<wbr/>
29111the region that actually receives light from the scene) before any geometric correction
29112has been applied,<wbr/> and should be treated as the active region rectangle for any of the
29113raw formats.<wbr/>  All metadata associated with raw processing (e.<wbr/>g.<wbr/> the lens shading
29114correction map,<wbr/> and radial distortion fields) treats the top,<wbr/> left of this rectangle as
29115the origin,<wbr/> (0,<wbr/>0).<wbr/></p>
29116<p>The size of this region determines the maximum field of view and the maximum number of
29117pixels that an image from this sensor can contain,<wbr/> prior to the application of
29118geometric distortion correction.<wbr/> The effective maximum pixel dimensions of a
29119post-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>
29120field,<wbr/> and the effective maximum field of view for a post-distortion-corrected image
29121can be calculated by applying the geometric distortion correction fields to this
29122rectangle,<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>
29123<p>E.<wbr/>g.<wbr/> to calculate position of a pixel,<wbr/> (x,<wbr/>y),<wbr/> in a processed YUV output image with the
29124dimensions 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/>
29125(x',<wbr/> y'),<wbr/> in the raw pixel array with dimensions given in
29126<a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>:</p>
29127<ol>
29128<li>Choose a pixel (x',<wbr/> y') within the active array region of the raw buffer given in
29129<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
29130to be outside of the FOV,<wbr/> and will not be shown in the processed output image.<wbr/></li>
29131<li>Apply geometric distortion correction to get the post-distortion pixel coordinate,<wbr/>
29132(x_<wbr/>i,<wbr/> y_<wbr/>i).<wbr/> When applying geometric correction metadata,<wbr/> note that metadata for raw
29133buffers is defined relative to the top,<wbr/> left of the
29134<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>
29135<li>If the resulting corrected pixel coordinate is within the region given in
29136<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
29137processed output image buffer is <code>(x_<wbr/>i - activeArray.<wbr/>left,<wbr/> y_<wbr/>i - activeArray.<wbr/>top)</code>,<wbr/>
29138when the top,<wbr/> left coordinate of that buffer is treated as (0,<wbr/> 0).<wbr/></li>
29139</ol>
29140<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>
29141is (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/>
29142<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
29143correction doesn't change the pixel coordinate,<wbr/> the resulting pixel selected in
29144pixel coordinates would be x,<wbr/>y = (25,<wbr/> 25) relative to the top,<wbr/>left of the raw buffer
29145with 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)
29146relative to the top,<wbr/>left of post-processed YUV output buffer with dimensions given in
29147<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
29148<p>The currently supported fields that correct for geometric distortion are:</p>
29149<ol>
29150<li><a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a>.<wbr/></li>
29151</ol>
29152<p>If the camera device doesn't support geometric distortion correction,<wbr/> or all of the
29153geometric distortion fields are no-ops,<wbr/> this rectangle will be the same as the
29154post-distortion-corrected rectangle given in <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
29155<p>This rectangle is defined relative to the full pixel array; (0,<wbr/>0) is the top-left of
29156the full pixel array,<wbr/> and the size of the full pixel array is given by
29157<a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
29158<p>The pre-correction active array may be smaller than the full pixel array,<wbr/> since the
29159full array may include black calibration pixels or other inactive regions.<wbr/></p>
29160            </td>
29161          </tr>
29162
29163          <tr class="entries_header">
29164            <th class="th_details" colspan="6">HAL Implementation Details</th>
29165          </tr>
29166          <tr class="entry_cont">
29167            <td class="entry_details" colspan="6">
29168              <p>This array contains <code>(xmin,<wbr/> ymin,<wbr/> width,<wbr/> height)</code>.<wbr/> The <code>(xmin,<wbr/> ymin)</code> must be
29169&gt;= <code>(0,<wbr/>0)</code>.<wbr/>
29170The <code>(width,<wbr/> height)</code> must be &lt;= <code><a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a></code>.<wbr/></p>
29171<p>If omitted by the HAL implementation,<wbr/> the camera framework will assume that this is
29172the same as the post-correction active array region given in
29173<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
29174            </td>
29175          </tr>
29176
29177          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29178           <!-- end of entry -->
29179
29180
29181          <tr class="entry" id="static_android.sensor.info.activeArraySizeMaximumResolution">
29182            <td class="entry_name
29183             " rowspan="5">
29184              android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution
29185            </td>
29186            <td class="entry_type">
29187                <span class="entry_type_name">int32</span>
29188                <span class="entry_type_container">x</span>
29189
29190                <span class="entry_type_array">
29191                  4
29192                </span>
29193              <span class="entry_type_visibility"> [public as rectangle]</span>
29194
29195
29196
29197
29198                <div class="entry_type_notes">Four ints defining the active pixel rectangle</div>
29199
29200
29201            </td> <!-- entry_type -->
29202
29203            <td class="entry_description">
29204              <p>The area of the image sensor which corresponds to active pixels after any geometric
29205distortion correction has been applied,<wbr/> when the sensor runs in maximum resolution mode.<wbr/></p>
29206            </td>
29207
29208            <td class="entry_units">
29209              Pixel coordinates on the image sensor
29210            </td>
29211
29212            <td class="entry_range">
29213            </td>
29214
29215            <td class="entry_hal_version">
29216              <p>3.<wbr/>6</p>
29217            </td>
29218
29219            <td class="entry_tags">
29220              <ul class="entry_tags">
29221                  <li><a href="#tag_RAW">RAW</a></li>
29222              </ul>
29223            </td>
29224
29225          </tr>
29226          <tr class="entries_header">
29227            <th class="th_details" colspan="6">Details</th>
29228          </tr>
29229          <tr class="entry_cont">
29230            <td class="entry_details" colspan="6">
29231              <p>Analogous to <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> when <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a>
29232is set to
29233<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/>
29234Refer to <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> for details,<wbr/> with sensor array related keys
29235replaced with their
29236<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>
29237counterparts.<wbr/>
29238This key will only be present for devices which advertise the
29239<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR">Camera<wbr/>Metadata#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>ULTRA_<wbr/>HIGH_<wbr/>RESOLUTION_<wbr/>SENSOR</a>
29240capability or devices where <a href="https://developer.android.com/reference/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a>
29241lists <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a>.<wbr/></p>
29242            </td>
29243          </tr>
29244
29245          <tr class="entries_header">
29246            <th class="th_details" colspan="6">HAL Implementation Details</th>
29247          </tr>
29248          <tr class="entry_cont">
29249            <td class="entry_details" colspan="6">
29250              <p>This array contains <code>(xmin,<wbr/> ymin,<wbr/> width,<wbr/> height)</code>.<wbr/> The <code>(xmin,<wbr/> ymin)</code> must be
29251&gt;= <code>(0,<wbr/>0)</code>.<wbr/>
29252The <code>(width,<wbr/> height)</code> must be &lt;= <code><a href="#static_android.sensor.info.pixelArraySizeMaximumResolution">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution</a></code>.<wbr/></p>
29253            </td>
29254          </tr>
29255
29256          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29257           <!-- end of entry -->
29258
29259
29260          <tr class="entry" id="static_android.sensor.info.pixelArraySizeMaximumResolution">
29261            <td class="entry_name
29262             " rowspan="3">
29263              android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution
29264            </td>
29265            <td class="entry_type">
29266                <span class="entry_type_name">int32</span>
29267                <span class="entry_type_container">x</span>
29268
29269                <span class="entry_type_array">
29270                  2
29271                </span>
29272              <span class="entry_type_visibility"> [public as size]</span>
29273
29274
29275
29276
29277
29278
29279            </td> <!-- entry_type -->
29280
29281            <td class="entry_description">
29282              <p>Dimensions of the full pixel array,<wbr/> possibly
29283including black calibration pixels,<wbr/> when the sensor runs in maximum resolution mode.<wbr/>
29284Analogous to <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>,<wbr/> when <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is
29285set to
29286<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p>
29287            </td>
29288
29289            <td class="entry_units">
29290              Pixels
29291            </td>
29292
29293            <td class="entry_range">
29294            </td>
29295
29296            <td class="entry_hal_version">
29297              <p>3.<wbr/>6</p>
29298            </td>
29299
29300            <td class="entry_tags">
29301              <ul class="entry_tags">
29302                  <li><a href="#tag_RAW">RAW</a></li>
29303              </ul>
29304            </td>
29305
29306          </tr>
29307          <tr class="entries_header">
29308            <th class="th_details" colspan="6">Details</th>
29309          </tr>
29310          <tr class="entry_cont">
29311            <td class="entry_details" colspan="6">
29312              <p>The pixel count of the full pixel array of the image sensor,<wbr/> which covers
29313<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
29314the raw buffers produced by this sensor,<wbr/> when it runs in maximum resolution mode.<wbr/> That
29315is,<wbr/> when <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to
29316<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/>
29317This key will only be present for devices which advertise the
29318<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR">Camera<wbr/>Metadata#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>ULTRA_<wbr/>HIGH_<wbr/>RESOLUTION_<wbr/>SENSOR</a>
29319capability or devices where <a href="https://developer.android.com/reference/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a>
29320lists <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a>.<wbr/></p>
29321            </td>
29322          </tr>
29323
29324
29325          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29326           <!-- end of entry -->
29327
29328
29329          <tr class="entry" id="static_android.sensor.info.preCorrectionActiveArraySizeMaximumResolution">
29330            <td class="entry_name
29331             " rowspan="5">
29332              android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution
29333            </td>
29334            <td class="entry_type">
29335                <span class="entry_type_name">int32</span>
29336                <span class="entry_type_container">x</span>
29337
29338                <span class="entry_type_array">
29339                  4
29340                </span>
29341              <span class="entry_type_visibility"> [public as rectangle]</span>
29342
29343
29344
29345
29346                <div class="entry_type_notes">Four ints defining the active pixel rectangle</div>
29347
29348
29349            </td> <!-- entry_type -->
29350
29351            <td class="entry_description">
29352              <p>The area of the image sensor which corresponds to active pixels prior to the
29353application of any geometric distortion correction,<wbr/> when the sensor runs in maximum
29354resolution mode.<wbr/> This key must be used for crop /<wbr/> metering regions,<wbr/> only when
29355<a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to
29356<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p>
29357            </td>
29358
29359            <td class="entry_units">
29360              Pixel coordinates on the image sensor
29361            </td>
29362
29363            <td class="entry_range">
29364            </td>
29365
29366            <td class="entry_hal_version">
29367              <p>3.<wbr/>6</p>
29368            </td>
29369
29370            <td class="entry_tags">
29371              <ul class="entry_tags">
29372                  <li><a href="#tag_RAW">RAW</a></li>
29373              </ul>
29374            </td>
29375
29376          </tr>
29377          <tr class="entries_header">
29378            <th class="th_details" colspan="6">Details</th>
29379          </tr>
29380          <tr class="entry_cont">
29381            <td class="entry_details" colspan="6">
29382              <p>Analogous to <a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>,<wbr/>
29383when <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to
29384<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/>
29385This key will only be present for devices which advertise the
29386<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR">Camera<wbr/>Metadata#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>ULTRA_<wbr/>HIGH_<wbr/>RESOLUTION_<wbr/>SENSOR</a>
29387capability or devices where <a href="https://developer.android.com/reference/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a>
29388lists <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a>.<wbr/></p>
29389            </td>
29390          </tr>
29391
29392          <tr class="entries_header">
29393            <th class="th_details" colspan="6">HAL Implementation Details</th>
29394          </tr>
29395          <tr class="entry_cont">
29396            <td class="entry_details" colspan="6">
29397              <p>This array contains <code>(xmin,<wbr/> ymin,<wbr/> width,<wbr/> height)</code>.<wbr/> The <code>(xmin,<wbr/> ymin)</code> must be
29398&gt;= <code>(0,<wbr/>0)</code>.<wbr/>
29399The <code>(width,<wbr/> height)</code> must be &lt;= <code><a href="#static_android.sensor.info.pixelArraySizeMaximumResolution">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution</a></code>.<wbr/></p>
29400<p>If omitted by the HAL implementation,<wbr/> the camera framework will assume that this is
29401the same as the post-correction active array region given in
29402<a href="#static_android.sensor.info.activeArraySizeMaximumResolution">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution</a>.<wbr/></p>
29403            </td>
29404          </tr>
29405
29406          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29407           <!-- end of entry -->
29408
29409
29410          <tr class="entry" id="static_android.sensor.info.binningFactor">
29411            <td class="entry_name
29412             " rowspan="3">
29413              android.<wbr/>sensor.<wbr/>info.<wbr/>binning<wbr/>Factor
29414            </td>
29415            <td class="entry_type">
29416                <span class="entry_type_name">int32</span>
29417                <span class="entry_type_container">x</span>
29418
29419                <span class="entry_type_array">
29420                  2
29421                </span>
29422              <span class="entry_type_visibility"> [public as size]</span>
29423
29424
29425
29426
29427
29428
29429            </td> <!-- entry_type -->
29430
29431            <td class="entry_description">
29432              <p>Dimensions of the group of pixels which are under the same color filter.<wbr/>
29433This specifies the width and height (pair of integers) of the group of pixels which fall
29434under the same color filter for ULTRA_<wbr/>HIGH_<wbr/>RESOLUTION sensors.<wbr/></p>
29435            </td>
29436
29437            <td class="entry_units">
29438              Pixels
29439            </td>
29440
29441            <td class="entry_range">
29442            </td>
29443
29444            <td class="entry_hal_version">
29445              <p>3.<wbr/>6</p>
29446            </td>
29447
29448            <td class="entry_tags">
29449            </td>
29450
29451          </tr>
29452          <tr class="entries_header">
29453            <th class="th_details" colspan="6">Details</th>
29454          </tr>
29455          <tr class="entry_cont">
29456            <td class="entry_details" colspan="6">
29457              <p>Sensors can have pixels grouped together under the same color filter in order
29458to improve various aspects of imaging such as noise reduction,<wbr/> low light
29459performance etc.<wbr/> These groups can be of various sizes such as 2X2 (quad bayer),<wbr/>
294603X3 (nona-bayer).<wbr/> This key specifies the length and width of the pixels grouped under
29461the same color filter.<wbr/>
29462In case the device has the
29463<a href="https://developer.android.com/reference/CameraMetadata.html#REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR">Camera<wbr/>Metadata#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>ULTRA_<wbr/>HIGH_<wbr/>RESOLUTION_<wbr/>SENSOR</a>
29464capability :</p>
29465<ul>
29466<li>This key will not be present if REMOSAIC_<wbr/>REPROCESSING is not supported,<wbr/> since RAW
29467  images will have a regular bayer pattern.<wbr/></li>
29468</ul>
29469<p>In case the device does not have the
29470<a href="https://developer.android.com/reference/CameraMetadata.html#REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR">Camera<wbr/>Metadata#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>ULTRA_<wbr/>HIGH_<wbr/>RESOLUTION_<wbr/>SENSOR</a>
29471capability :</p>
29472<ul>
29473<li>This key will be present if
29474  <a href="https://developer.android.com/reference/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a>
29475  lists <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a>,<wbr/> since RAW
29476  images may not necessarily have a regular bayer pattern when
29477  <a href="https://developer.android.com/reference/CaptureRequest.html#SENSOR_PIXEL_MODE"><a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a></a> is set to
29478  <a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></li>
29479</ul>
29480            </td>
29481          </tr>
29482
29483
29484          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29485           <!-- end of entry -->
29486
29487
29488
29489
29490
29491          <tr class="entry" id="static_android.sensor.referenceIlluminant1">
29492            <td class="entry_name
29493             " rowspan="5">
29494              android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1
29495            </td>
29496            <td class="entry_type">
29497                <span class="entry_type_name entry_type_name_enum">byte</span>
29498
29499              <span class="entry_type_visibility"> [public]</span>
29500
29501
29502
29503
29504
29505                <ul class="entry_type_enum">
29506                  <li>
29507                    <span class="entry_type_enum_name">DAYLIGHT (v3.2)</span>
29508                    <span class="entry_type_enum_value">1</span>
29509                  </li>
29510                  <li>
29511                    <span class="entry_type_enum_name">FLUORESCENT (v3.2)</span>
29512                    <span class="entry_type_enum_value">2</span>
29513                  </li>
29514                  <li>
29515                    <span class="entry_type_enum_name">TUNGSTEN (v3.2)</span>
29516                    <span class="entry_type_enum_value">3</span>
29517                    <span class="entry_type_enum_notes"><p>Incandescent light</p></span>
29518                  </li>
29519                  <li>
29520                    <span class="entry_type_enum_name">FLASH (v3.2)</span>
29521                    <span class="entry_type_enum_value">4</span>
29522                  </li>
29523                  <li>
29524                    <span class="entry_type_enum_name">FINE_WEATHER (v3.2)</span>
29525                    <span class="entry_type_enum_value">9</span>
29526                  </li>
29527                  <li>
29528                    <span class="entry_type_enum_name">CLOUDY_WEATHER (v3.2)</span>
29529                    <span class="entry_type_enum_value">10</span>
29530                  </li>
29531                  <li>
29532                    <span class="entry_type_enum_name">SHADE (v3.2)</span>
29533                    <span class="entry_type_enum_value">11</span>
29534                  </li>
29535                  <li>
29536                    <span class="entry_type_enum_name">DAYLIGHT_FLUORESCENT (v3.2)</span>
29537                    <span class="entry_type_enum_value">12</span>
29538                    <span class="entry_type_enum_notes"><p>D 5700 - 7100K</p></span>
29539                  </li>
29540                  <li>
29541                    <span class="entry_type_enum_name">DAY_WHITE_FLUORESCENT (v3.2)</span>
29542                    <span class="entry_type_enum_value">13</span>
29543                    <span class="entry_type_enum_notes"><p>N 4600 - 5400K</p></span>
29544                  </li>
29545                  <li>
29546                    <span class="entry_type_enum_name">COOL_WHITE_FLUORESCENT (v3.2)</span>
29547                    <span class="entry_type_enum_value">14</span>
29548                    <span class="entry_type_enum_notes"><p>W 3900 - 4500K</p></span>
29549                  </li>
29550                  <li>
29551                    <span class="entry_type_enum_name">WHITE_FLUORESCENT (v3.2)</span>
29552                    <span class="entry_type_enum_value">15</span>
29553                    <span class="entry_type_enum_notes"><p>WW 3200 - 3700K</p></span>
29554                  </li>
29555                  <li>
29556                    <span class="entry_type_enum_name">STANDARD_A (v3.2)</span>
29557                    <span class="entry_type_enum_value">17</span>
29558                  </li>
29559                  <li>
29560                    <span class="entry_type_enum_name">STANDARD_B (v3.2)</span>
29561                    <span class="entry_type_enum_value">18</span>
29562                  </li>
29563                  <li>
29564                    <span class="entry_type_enum_name">STANDARD_C (v3.2)</span>
29565                    <span class="entry_type_enum_value">19</span>
29566                  </li>
29567                  <li>
29568                    <span class="entry_type_enum_name">D55 (v3.2)</span>
29569                    <span class="entry_type_enum_value">20</span>
29570                  </li>
29571                  <li>
29572                    <span class="entry_type_enum_name">D65 (v3.2)</span>
29573                    <span class="entry_type_enum_value">21</span>
29574                  </li>
29575                  <li>
29576                    <span class="entry_type_enum_name">D75 (v3.2)</span>
29577                    <span class="entry_type_enum_value">22</span>
29578                  </li>
29579                  <li>
29580                    <span class="entry_type_enum_name">D50 (v3.2)</span>
29581                    <span class="entry_type_enum_value">23</span>
29582                  </li>
29583                  <li>
29584                    <span class="entry_type_enum_name">ISO_STUDIO_TUNGSTEN (v3.2)</span>
29585                    <span class="entry_type_enum_value">24</span>
29586                  </li>
29587                </ul>
29588
29589            </td> <!-- entry_type -->
29590
29591            <td class="entry_description">
29592              <p>The standard reference illuminant used as the scene light source when
29593calculating the <a href="#static_android.sensor.colorTransform1">android.<wbr/>sensor.<wbr/>color<wbr/>Transform1</a>,<wbr/>
29594<a href="#static_android.sensor.calibrationTransform1">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1</a>,<wbr/> and
29595<a href="#static_android.sensor.forwardMatrix1">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1</a> matrices.<wbr/></p>
29596            </td>
29597
29598            <td class="entry_units">
29599            </td>
29600
29601            <td class="entry_range">
29602            </td>
29603
29604            <td class="entry_hal_version">
29605              <p>3.<wbr/>2</p>
29606            </td>
29607
29608            <td class="entry_tags">
29609              <ul class="entry_tags">
29610                  <li><a href="#tag_RAW">RAW</a></li>
29611              </ul>
29612            </td>
29613
29614          </tr>
29615          <tr class="entries_header">
29616            <th class="th_details" colspan="6">Details</th>
29617          </tr>
29618          <tr class="entry_cont">
29619            <td class="entry_details" colspan="6">
29620              <p>The values in this key correspond to the values defined for the
29621EXIF LightSource tag.<wbr/> These illuminants are standard light sources
29622that are often used calibrating camera devices.<wbr/></p>
29623<p>If this key is present,<wbr/> then <a href="#static_android.sensor.colorTransform1">android.<wbr/>sensor.<wbr/>color<wbr/>Transform1</a>,<wbr/>
29624<a href="#static_android.sensor.calibrationTransform1">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1</a>,<wbr/> and
29625<a href="#static_android.sensor.forwardMatrix1">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1</a> will also be present.<wbr/></p>
29626<p>Some devices may choose to provide a second set of calibration
29627information for improved quality,<wbr/> including
29628<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> and its corresponding matrices.<wbr/></p>
29629<p>Starting from Android Q,<wbr/> this key will not be present for a MONOCHROME camera,<wbr/> even if
29630the camera device has RAW capability.<wbr/></p>
29631            </td>
29632          </tr>
29633
29634          <tr class="entries_header">
29635            <th class="th_details" colspan="6">HAL Implementation Details</th>
29636          </tr>
29637          <tr class="entry_cont">
29638            <td class="entry_details" colspan="6">
29639              <p>The first reference illuminant (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>)
29640and corresponding matrices must be present to support the RAW capability
29641and DNG output.<wbr/></p>
29642<p>When producing raw images with a color profile that has only been
29643calibrated against a single light source,<wbr/> it is valid to omit
29644<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> along with the
29645<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/>
29646and <a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> matrices.<wbr/></p>
29647<p>If only <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> is included,<wbr/> it should be
29648chosen so that it is representative of typical scene lighting.<wbr/>  In
29649general,<wbr/> D50 or DAYLIGHT will be chosen for this case.<wbr/></p>
29650<p>If both <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> and
29651<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> are included,<wbr/> they should be
29652chosen to represent the typical range of scene lighting conditions.<wbr/>
29653In general,<wbr/> low color temperature illuminant such as Standard-A will
29654be chosen for the first reference illuminant and a higher color
29655temperature illuminant such as D65 will be chosen for the second
29656reference illuminant.<wbr/></p>
29657            </td>
29658          </tr>
29659
29660          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29661           <!-- end of entry -->
29662
29663
29664          <tr class="entry" id="static_android.sensor.referenceIlluminant2">
29665            <td class="entry_name
29666             " rowspan="3">
29667              android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2
29668            </td>
29669            <td class="entry_type">
29670                <span class="entry_type_name">byte</span>
29671
29672              <span class="entry_type_visibility"> [public]</span>
29673
29674
29675
29676
29677
29678
29679            </td> <!-- entry_type -->
29680
29681            <td class="entry_description">
29682              <p>The standard reference illuminant used as the scene light source when
29683calculating the <a href="#static_android.sensor.colorTransform2">android.<wbr/>sensor.<wbr/>color<wbr/>Transform2</a>,<wbr/>
29684<a href="#static_android.sensor.calibrationTransform2">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2</a>,<wbr/> and
29685<a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> matrices.<wbr/></p>
29686            </td>
29687
29688            <td class="entry_units">
29689            </td>
29690
29691            <td class="entry_range">
29692              <p>Any value listed in <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a></p>
29693            </td>
29694
29695            <td class="entry_hal_version">
29696              <p>3.<wbr/>2</p>
29697            </td>
29698
29699            <td class="entry_tags">
29700              <ul class="entry_tags">
29701                  <li><a href="#tag_RAW">RAW</a></li>
29702              </ul>
29703            </td>
29704
29705          </tr>
29706          <tr class="entries_header">
29707            <th class="th_details" colspan="6">Details</th>
29708          </tr>
29709          <tr class="entry_cont">
29710            <td class="entry_details" colspan="6">
29711              <p>See <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> for more details.<wbr/></p>
29712<p>If this key is present,<wbr/> then <a href="#static_android.sensor.colorTransform2">android.<wbr/>sensor.<wbr/>color<wbr/>Transform2</a>,<wbr/>
29713<a href="#static_android.sensor.calibrationTransform2">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2</a>,<wbr/> and
29714<a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> will also be present.<wbr/></p>
29715<p>Starting from Android Q,<wbr/> this key will not be present for a MONOCHROME camera,<wbr/> even if
29716the camera device has RAW capability.<wbr/></p>
29717            </td>
29718          </tr>
29719
29720
29721          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29722           <!-- end of entry -->
29723
29724
29725          <tr class="entry" id="static_android.sensor.calibrationTransform1">
29726            <td class="entry_name
29727             " rowspan="3">
29728              android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1
29729            </td>
29730            <td class="entry_type">
29731                <span class="entry_type_name">rational</span>
29732                <span class="entry_type_container">x</span>
29733
29734                <span class="entry_type_array">
29735                  3 x 3
29736                </span>
29737              <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
29738
29739
29740
29741
29742                <div class="entry_type_notes">3x3 matrix in row-major-order</div>
29743
29744
29745            </td> <!-- entry_type -->
29746
29747            <td class="entry_description">
29748              <p>A per-device calibration transform matrix that maps from the
29749reference sensor colorspace to the actual device sensor colorspace.<wbr/></p>
29750            </td>
29751
29752            <td class="entry_units">
29753            </td>
29754
29755            <td class="entry_range">
29756            </td>
29757
29758            <td class="entry_hal_version">
29759              <p>3.<wbr/>2</p>
29760            </td>
29761
29762            <td class="entry_tags">
29763              <ul class="entry_tags">
29764                  <li><a href="#tag_RAW">RAW</a></li>
29765              </ul>
29766            </td>
29767
29768          </tr>
29769          <tr class="entries_header">
29770            <th class="th_details" colspan="6">Details</th>
29771          </tr>
29772          <tr class="entry_cont">
29773            <td class="entry_details" colspan="6">
29774              <p>This matrix is used to correct for per-device variations in the
29775sensor colorspace,<wbr/> and is used for processing raw buffer data.<wbr/></p>
29776<p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
29777contains a per-device calibration transform that maps colors
29778from reference sensor color space (i.<wbr/>e.<wbr/> the "golden module"
29779colorspace) into this camera device's native sensor color
29780space under the first reference illuminant
29781(<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>).<wbr/></p>
29782<p>Starting from Android Q,<wbr/> this key will not be present for a MONOCHROME camera,<wbr/> even if
29783the camera device has RAW capability.<wbr/></p>
29784            </td>
29785          </tr>
29786
29787
29788          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29789           <!-- end of entry -->
29790
29791
29792          <tr class="entry" id="static_android.sensor.calibrationTransform2">
29793            <td class="entry_name
29794             " rowspan="3">
29795              android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2
29796            </td>
29797            <td class="entry_type">
29798                <span class="entry_type_name">rational</span>
29799                <span class="entry_type_container">x</span>
29800
29801                <span class="entry_type_array">
29802                  3 x 3
29803                </span>
29804              <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
29805
29806
29807
29808
29809                <div class="entry_type_notes">3x3 matrix in row-major-order</div>
29810
29811
29812            </td> <!-- entry_type -->
29813
29814            <td class="entry_description">
29815              <p>A per-device calibration transform matrix that maps from the
29816reference sensor colorspace to the actual device sensor colorspace
29817(this is the colorspace of the raw buffer data).<wbr/></p>
29818            </td>
29819
29820            <td class="entry_units">
29821            </td>
29822
29823            <td class="entry_range">
29824            </td>
29825
29826            <td class="entry_hal_version">
29827              <p>3.<wbr/>2</p>
29828            </td>
29829
29830            <td class="entry_tags">
29831              <ul class="entry_tags">
29832                  <li><a href="#tag_RAW">RAW</a></li>
29833              </ul>
29834            </td>
29835
29836          </tr>
29837          <tr class="entries_header">
29838            <th class="th_details" colspan="6">Details</th>
29839          </tr>
29840          <tr class="entry_cont">
29841            <td class="entry_details" colspan="6">
29842              <p>This matrix is used to correct for per-device variations in the
29843sensor colorspace,<wbr/> and is used for processing raw buffer data.<wbr/></p>
29844<p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
29845contains a per-device calibration transform that maps colors
29846from reference sensor color space (i.<wbr/>e.<wbr/> the "golden module"
29847colorspace) into this camera device's native sensor color
29848space under the second reference illuminant
29849(<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>).<wbr/></p>
29850<p>This matrix will only be present if the second reference
29851illuminant is present.<wbr/></p>
29852<p>Starting from Android Q,<wbr/> this key will not be present for a MONOCHROME camera,<wbr/> even if
29853the camera device has RAW capability.<wbr/></p>
29854            </td>
29855          </tr>
29856
29857
29858          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29859           <!-- end of entry -->
29860
29861
29862          <tr class="entry" id="static_android.sensor.colorTransform1">
29863            <td class="entry_name
29864             " rowspan="3">
29865              android.<wbr/>sensor.<wbr/>color<wbr/>Transform1
29866            </td>
29867            <td class="entry_type">
29868                <span class="entry_type_name">rational</span>
29869                <span class="entry_type_container">x</span>
29870
29871                <span class="entry_type_array">
29872                  3 x 3
29873                </span>
29874              <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
29875
29876
29877
29878
29879                <div class="entry_type_notes">3x3 matrix in row-major-order</div>
29880
29881
29882            </td> <!-- entry_type -->
29883
29884            <td class="entry_description">
29885              <p>A matrix that transforms color values from CIE XYZ color space to
29886reference sensor color space.<wbr/></p>
29887            </td>
29888
29889            <td class="entry_units">
29890            </td>
29891
29892            <td class="entry_range">
29893            </td>
29894
29895            <td class="entry_hal_version">
29896              <p>3.<wbr/>2</p>
29897            </td>
29898
29899            <td class="entry_tags">
29900              <ul class="entry_tags">
29901                  <li><a href="#tag_RAW">RAW</a></li>
29902              </ul>
29903            </td>
29904
29905          </tr>
29906          <tr class="entries_header">
29907            <th class="th_details" colspan="6">Details</th>
29908          </tr>
29909          <tr class="entry_cont">
29910            <td class="entry_details" colspan="6">
29911              <p>This matrix is used to convert from the standard CIE XYZ color
29912space to the reference sensor colorspace,<wbr/> and is used when processing
29913raw buffer data.<wbr/></p>
29914<p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
29915contains a color transform matrix that maps colors from the CIE
29916XYZ color space to the reference sensor color space (i.<wbr/>e.<wbr/> the
29917"golden module" colorspace) under the first reference illuminant
29918(<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>).<wbr/></p>
29919<p>The white points chosen in both the reference sensor color space
29920and the CIE XYZ colorspace when calculating this transform will
29921match the standard white point for the first reference illuminant
29922(i.<wbr/>e.<wbr/> no chromatic adaptation will be applied by this transform).<wbr/></p>
29923<p>Starting from Android Q,<wbr/> this key will not be present for a MONOCHROME camera,<wbr/> even if
29924the camera device has RAW capability.<wbr/></p>
29925            </td>
29926          </tr>
29927
29928
29929          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29930           <!-- end of entry -->
29931
29932
29933          <tr class="entry" id="static_android.sensor.colorTransform2">
29934            <td class="entry_name
29935             " rowspan="3">
29936              android.<wbr/>sensor.<wbr/>color<wbr/>Transform2
29937            </td>
29938            <td class="entry_type">
29939                <span class="entry_type_name">rational</span>
29940                <span class="entry_type_container">x</span>
29941
29942                <span class="entry_type_array">
29943                  3 x 3
29944                </span>
29945              <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
29946
29947
29948
29949
29950                <div class="entry_type_notes">3x3 matrix in row-major-order</div>
29951
29952
29953            </td> <!-- entry_type -->
29954
29955            <td class="entry_description">
29956              <p>A matrix that transforms color values from CIE XYZ color space to
29957reference sensor color space.<wbr/></p>
29958            </td>
29959
29960            <td class="entry_units">
29961            </td>
29962
29963            <td class="entry_range">
29964            </td>
29965
29966            <td class="entry_hal_version">
29967              <p>3.<wbr/>2</p>
29968            </td>
29969
29970            <td class="entry_tags">
29971              <ul class="entry_tags">
29972                  <li><a href="#tag_RAW">RAW</a></li>
29973              </ul>
29974            </td>
29975
29976          </tr>
29977          <tr class="entries_header">
29978            <th class="th_details" colspan="6">Details</th>
29979          </tr>
29980          <tr class="entry_cont">
29981            <td class="entry_details" colspan="6">
29982              <p>This matrix is used to convert from the standard CIE XYZ color
29983space to the reference sensor colorspace,<wbr/> and is used when processing
29984raw buffer data.<wbr/></p>
29985<p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
29986contains a color transform matrix that maps colors from the CIE
29987XYZ color space to the reference sensor color space (i.<wbr/>e.<wbr/> the
29988"golden module" colorspace) under the second reference illuminant
29989(<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>).<wbr/></p>
29990<p>The white points chosen in both the reference sensor color space
29991and the CIE XYZ colorspace when calculating this transform will
29992match the standard white point for the second reference illuminant
29993(i.<wbr/>e.<wbr/> no chromatic adaptation will be applied by this transform).<wbr/></p>
29994<p>This matrix will only be present if the second reference
29995illuminant is present.<wbr/></p>
29996<p>Starting from Android Q,<wbr/> this key will not be present for a MONOCHROME camera,<wbr/> even if
29997the camera device has RAW capability.<wbr/></p>
29998            </td>
29999          </tr>
30000
30001
30002          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
30003           <!-- end of entry -->
30004
30005
30006          <tr class="entry" id="static_android.sensor.forwardMatrix1">
30007            <td class="entry_name
30008             " rowspan="3">
30009              android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1
30010            </td>
30011            <td class="entry_type">
30012                <span class="entry_type_name">rational</span>
30013                <span class="entry_type_container">x</span>
30014
30015                <span class="entry_type_array">
30016                  3 x 3
30017                </span>
30018              <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
30019
30020
30021
30022
30023                <div class="entry_type_notes">3x3 matrix in row-major-order</div>
30024
30025
30026            </td> <!-- entry_type -->
30027
30028            <td class="entry_description">
30029              <p>A matrix that transforms white balanced camera colors from the reference
30030sensor colorspace to the CIE XYZ colorspace with a D50 whitepoint.<wbr/></p>
30031            </td>
30032
30033            <td class="entry_units">
30034            </td>
30035
30036            <td class="entry_range">
30037            </td>
30038
30039            <td class="entry_hal_version">
30040              <p>3.<wbr/>2</p>
30041            </td>
30042
30043            <td class="entry_tags">
30044              <ul class="entry_tags">
30045                  <li><a href="#tag_RAW">RAW</a></li>
30046              </ul>
30047            </td>
30048
30049          </tr>
30050          <tr class="entries_header">
30051            <th class="th_details" colspan="6">Details</th>
30052          </tr>
30053          <tr class="entry_cont">
30054            <td class="entry_details" colspan="6">
30055              <p>This matrix is used to convert to the standard CIE XYZ colorspace,<wbr/> and
30056is used when processing raw buffer data.<wbr/></p>
30057<p>This matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and contains
30058a color transform matrix that maps white balanced colors from the
30059reference sensor color space to the CIE XYZ color space with a D50 white
30060point.<wbr/></p>
30061<p>Under the first reference illuminant (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>)
30062this matrix is chosen so that the standard white point for this reference
30063illuminant in the reference sensor colorspace is mapped to D50 in the
30064CIE XYZ colorspace.<wbr/></p>
30065<p>Starting from Android Q,<wbr/> this key will not be present for a MONOCHROME camera,<wbr/> even if
30066the camera device has RAW capability.<wbr/></p>
30067            </td>
30068          </tr>
30069
30070
30071          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
30072           <!-- end of entry -->
30073
30074
30075          <tr class="entry" id="static_android.sensor.forwardMatrix2">
30076            <td class="entry_name
30077             " rowspan="3">
30078              android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2
30079            </td>
30080            <td class="entry_type">
30081                <span class="entry_type_name">rational</span>
30082                <span class="entry_type_container">x</span>
30083
30084                <span class="entry_type_array">
30085                  3 x 3
30086                </span>
30087              <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
30088
30089
30090
30091
30092                <div class="entry_type_notes">3x3 matrix in row-major-order</div>
30093
30094
30095            </td> <!-- entry_type -->
30096
30097            <td class="entry_description">
30098              <p>A matrix that transforms white balanced camera colors from the reference
30099sensor colorspace to the CIE XYZ colorspace with a D50 whitepoint.<wbr/></p>
30100            </td>
30101
30102            <td class="entry_units">
30103            </td>
30104
30105            <td class="entry_range">
30106            </td>
30107
30108            <td class="entry_hal_version">
30109              <p>3.<wbr/>2</p>
30110            </td>
30111
30112            <td class="entry_tags">
30113              <ul class="entry_tags">
30114                  <li><a href="#tag_RAW">RAW</a></li>
30115              </ul>
30116            </td>
30117
30118          </tr>
30119          <tr class="entries_header">
30120            <th class="th_details" colspan="6">Details</th>
30121          </tr>
30122          <tr class="entry_cont">
30123            <td class="entry_details" colspan="6">
30124              <p>This matrix is used to convert to the standard CIE XYZ colorspace,<wbr/> and
30125is used when processing raw buffer data.<wbr/></p>
30126<p>This matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and contains
30127a color transform matrix that maps white balanced colors from the
30128reference sensor color space to the CIE XYZ color space with a D50 white
30129point.<wbr/></p>
30130<p>Under the second reference illuminant (<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>)
30131this matrix is chosen so that the standard white point for this reference
30132illuminant in the reference sensor colorspace is mapped to D50 in the
30133CIE XYZ colorspace.<wbr/></p>
30134<p>This matrix will only be present if the second reference
30135illuminant is present.<wbr/></p>
30136<p>Starting from Android Q,<wbr/> this key will not be present for a MONOCHROME camera,<wbr/> even if
30137the camera device has RAW capability.<wbr/></p>
30138            </td>
30139          </tr>
30140
30141
30142          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
30143           <!-- end of entry -->
30144
30145
30146          <tr class="entry" id="static_android.sensor.baseGainFactor">
30147            <td class="entry_name
30148             " rowspan="1">
30149              android.<wbr/>sensor.<wbr/>base<wbr/>Gain<wbr/>Factor
30150            </td>
30151            <td class="entry_type">
30152                <span class="entry_type_name">rational</span>
30153
30154              <span class="entry_type_visibility"> [system]</span>
30155
30156
30157
30158
30159
30160
30161            </td> <!-- entry_type -->
30162
30163            <td class="entry_description">
30164              <p>Gain factor from electrons to raw units when
30165ISO=100</p>
30166            </td>
30167
30168            <td class="entry_units">
30169            </td>
30170
30171            <td class="entry_range">
30172            </td>
30173
30174            <td class="entry_hal_version">
30175              <p>3.<wbr/>2</p>
30176            </td>
30177
30178            <td class="entry_tags">
30179              <ul class="entry_tags">
30180                  <li><a href="#tag_FUTURE">FUTURE</a></li>
30181              </ul>
30182            </td>
30183
30184          </tr>
30185
30186
30187          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
30188           <!-- end of entry -->
30189
30190
30191          <tr class="entry" id="static_android.sensor.blackLevelPattern">
30192            <td class="entry_name
30193             " rowspan="5">
30194              android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern
30195            </td>
30196            <td class="entry_type">
30197                <span class="entry_type_name">int32</span>
30198                <span class="entry_type_container">x</span>
30199
30200                <span class="entry_type_array">
30201                  4
30202                </span>
30203              <span class="entry_type_visibility"> [public as blackLevelPattern]</span>
30204
30205
30206
30207
30208                <div class="entry_type_notes">2x2 raw count block</div>
30209
30210
30211            </td> <!-- entry_type -->
30212
30213            <td class="entry_description">
30214              <p>A fixed black level offset for each of the color filter arrangement
30215(CFA) mosaic channels.<wbr/></p>
30216            </td>
30217
30218            <td class="entry_units">
30219            </td>
30220
30221            <td class="entry_range">
30222              <p>&gt;= 0 for each.<wbr/></p>
30223            </td>
30224
30225            <td class="entry_hal_version">
30226              <p>3.<wbr/>2</p>
30227            </td>
30228
30229            <td class="entry_tags">
30230              <ul class="entry_tags">
30231                  <li><a href="#tag_RAW">RAW</a></li>
30232              </ul>
30233            </td>
30234
30235          </tr>
30236          <tr class="entries_header">
30237            <th class="th_details" colspan="6">Details</th>
30238          </tr>
30239          <tr class="entry_cont">
30240            <td class="entry_details" colspan="6">
30241              <p>This key specifies the zero light value for each of the CFA mosaic
30242channels in the camera sensor.<wbr/>  The maximal value output by the
30243sensor 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>
30244<p>The values are given in the same order as channels listed for the CFA
30245layout 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
30246nth value given corresponds to the black level offset for the nth
30247color channel listed in the CFA.<wbr/></p>
30248<p>The black level values of captured images may vary for different
30249capture settings (e.<wbr/>g.,<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>).<wbr/> This key
30250represents a coarse approximation for such case.<wbr/> It is recommended to
30251use <a href="#dynamic_android.sensor.dynamicBlackLevel">android.<wbr/>sensor.<wbr/>dynamic<wbr/>Black<wbr/>Level</a> or use pixels from
30252<a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a> directly for captures when
30253supported by the camera device,<wbr/> which provides more accurate black
30254level values.<wbr/> For raw capture in particular,<wbr/> it is recommended to use
30255pixels from <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a> to calculate black
30256level values for each frame.<wbr/></p>
30257<p>For a MONOCHROME camera device,<wbr/> all of the 2x2 channels must have the same values.<wbr/></p>
30258            </td>
30259          </tr>
30260
30261          <tr class="entries_header">
30262            <th class="th_details" colspan="6">HAL Implementation Details</th>
30263          </tr>
30264          <tr class="entry_cont">
30265            <td class="entry_details" colspan="6">
30266              <p>The values are given in row-column scan order,<wbr/> with the first value
30267corresponding to the element of the CFA in row=0,<wbr/> column=0.<wbr/></p>
30268            </td>
30269          </tr>
30270
30271          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
30272           <!-- end of entry -->
30273
30274
30275          <tr class="entry" id="static_android.sensor.maxAnalogSensitivity">
30276            <td class="entry_name
30277             " rowspan="3">
30278              android.<wbr/>sensor.<wbr/>max<wbr/>Analog<wbr/>Sensitivity
30279            </td>
30280            <td class="entry_type">
30281                <span class="entry_type_name">int32</span>
30282
30283              <span class="entry_type_visibility"> [public]</span>
30284
30285
30286              <span class="entry_type_hwlevel">[full] </span>
30287
30288
30289
30290
30291            </td> <!-- entry_type -->
30292
30293            <td class="entry_description">
30294              <p>Maximum sensitivity that is implemented
30295purely through analog gain.<wbr/></p>
30296            </td>
30297
30298            <td class="entry_units">
30299            </td>
30300
30301            <td class="entry_range">
30302            </td>
30303
30304            <td class="entry_hal_version">
30305              <p>3.<wbr/>2</p>
30306            </td>
30307
30308            <td class="entry_tags">
30309              <ul class="entry_tags">
30310                  <li><a href="#tag_V1">V1</a></li>
30311                  <li><a href="#tag_FULL">FULL</a></li>
30312              </ul>
30313            </td>
30314
30315          </tr>
30316          <tr class="entries_header">
30317            <th class="th_details" colspan="6">Details</th>
30318          </tr>
30319          <tr class="entry_cont">
30320            <td class="entry_details" colspan="6">
30321              <p>For <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> values less than or
30322equal to this,<wbr/> all applied gain must be analog.<wbr/> For
30323values above this,<wbr/> the gain applied can be a mix of analog and
30324digital.<wbr/></p>
30325            </td>
30326          </tr>
30327
30328
30329          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
30330           <!-- end of entry -->
30331
30332
30333          <tr class="entry" id="static_android.sensor.orientation">
30334            <td class="entry_name
30335             " rowspan="3">
30336              android.<wbr/>sensor.<wbr/>orientation
30337            </td>
30338            <td class="entry_type">
30339                <span class="entry_type_name">int32</span>
30340
30341              <span class="entry_type_visibility"> [public]</span>
30342
30343
30344              <span class="entry_type_hwlevel">[legacy] </span>
30345
30346
30347
30348
30349            </td> <!-- entry_type -->
30350
30351            <td class="entry_description">
30352              <p>Clockwise angle through which the output image needs to be rotated to be
30353upright on the device screen in its native orientation.<wbr/></p>
30354            </td>
30355
30356            <td class="entry_units">
30357              Degrees of clockwise rotation; always a multiple of
30358          90
30359            </td>
30360
30361            <td class="entry_range">
30362              <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p>
30363            </td>
30364
30365            <td class="entry_hal_version">
30366              <p>3.<wbr/>2</p>
30367            </td>
30368
30369            <td class="entry_tags">
30370              <ul class="entry_tags">
30371                  <li><a href="#tag_BC">BC</a></li>
30372              </ul>
30373            </td>
30374
30375          </tr>
30376          <tr class="entries_header">
30377            <th class="th_details" colspan="6">Details</th>
30378          </tr>
30379          <tr class="entry_cont">
30380            <td class="entry_details" colspan="6">
30381              <p>Also defines the direction of rolling shutter readout,<wbr/> which is from top to bottom in
30382the sensor's coordinate system.<wbr/></p>
30383<p>Starting with Android API level 32,<wbr/> camera clients that query the orientation via
30384<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#get">CameraCharacteristics#get</a> on foldable devices which
30385include logical cameras can receive a value that can dynamically change depending on the
30386device/<wbr/>fold state.<wbr/>
30387Clients are advised to not cache or store the orientation value of such logical sensors.<wbr/>
30388In case repeated queries to CameraCharacteristics are not preferred,<wbr/> then clients can
30389also access the entire mapping from device state to sensor orientation in
30390<a href="https://developer.android.com/reference/android/hardware/camera2/params/DeviceStateSensorOrientationMap.html">DeviceStateSensorOrientationMap</a>.<wbr/>
30391Do note that a dynamically changing sensor orientation value in camera characteristics
30392will not be the best way to establish the orientation per frame.<wbr/> Clients that want to
30393know the sensor orientation of a particular captured frame should query the
30394<a href="#dynamic_android.logicalMultiCamera.activePhysicalId">android.<wbr/>logical<wbr/>Multi<wbr/>Camera.<wbr/>active<wbr/>Physical<wbr/>Id</a> from the corresponding capture result and
30395check the respective physical camera orientation.<wbr/></p>
30396            </td>
30397          </tr>
30398
30399
30400          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
30401           <!-- end of entry -->
30402
30403
30404          <tr class="entry" id="static_android.sensor.profileHueSatMapDimensions">
30405            <td class="entry_name
30406             " rowspan="3">
30407              android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map<wbr/>Dimensions
30408            </td>
30409            <td class="entry_type">
30410                <span class="entry_type_name">int32</span>
30411                <span class="entry_type_container">x</span>
30412
30413                <span class="entry_type_array">
30414                  3
30415                </span>
30416              <span class="entry_type_visibility"> [system]</span>
30417
30418
30419
30420
30421                <div class="entry_type_notes">Number of samples for hue,<wbr/> saturation,<wbr/> and value</div>
30422
30423
30424            </td> <!-- entry_type -->
30425
30426            <td class="entry_description">
30427              <p>The number of input samples for each dimension of
30428<a href="#dynamic_android.sensor.profileHueSatMap">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map</a>.<wbr/></p>
30429            </td>
30430
30431            <td class="entry_units">
30432            </td>
30433
30434            <td class="entry_range">
30435              <p>Hue &gt;= 1,<wbr/>
30436Saturation &gt;= 2,<wbr/>
30437Value &gt;= 1</p>
30438            </td>
30439
30440            <td class="entry_hal_version">
30441              <p>3.<wbr/>2</p>
30442            </td>
30443
30444            <td class="entry_tags">
30445              <ul class="entry_tags">
30446                  <li><a href="#tag_RAW">RAW</a></li>
30447              </ul>
30448            </td>
30449
30450          </tr>
30451          <tr class="entries_header">
30452            <th class="th_details" colspan="6">Details</th>
30453          </tr>
30454          <tr class="entry_cont">
30455            <td class="entry_details" colspan="6">
30456              <p>The number of input samples for the hue,<wbr/> saturation,<wbr/> and value
30457dimension of <a href="#dynamic_android.sensor.profileHueSatMap">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map</a>.<wbr/> The order of the
30458dimensions given is hue,<wbr/> saturation,<wbr/> value; where hue is the 0th
30459element.<wbr/></p>
30460            </td>
30461          </tr>
30462
30463
30464          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
30465           <!-- end of entry -->
30466
30467
30468          <tr class="entry" id="static_android.sensor.availableTestPatternModes">
30469            <td class="entry_name
30470             " rowspan="5">
30471              android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes
30472            </td>
30473            <td class="entry_type">
30474                <span class="entry_type_name">int32</span>
30475                <span class="entry_type_container">x</span>
30476
30477                <span class="entry_type_array">
30478                  n
30479                </span>
30480              <span class="entry_type_visibility"> [public]</span>
30481
30482
30483
30484
30485                <div class="entry_type_notes">list of enums</div>
30486
30487
30488            </td> <!-- entry_type -->
30489
30490            <td class="entry_description">
30491              <p>List of sensor test pattern modes for <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a>
30492supported by this camera device.<wbr/></p>
30493            </td>
30494
30495            <td class="entry_units">
30496            </td>
30497
30498            <td class="entry_range">
30499              <p>Any value listed in <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a></p>
30500            </td>
30501
30502            <td class="entry_hal_version">
30503              <p>3.<wbr/>2</p>
30504            </td>
30505
30506            <td class="entry_tags">
30507            </td>
30508
30509          </tr>
30510          <tr class="entries_header">
30511            <th class="th_details" colspan="6">Details</th>
30512          </tr>
30513          <tr class="entry_cont">
30514            <td class="entry_details" colspan="6">
30515              <p>Defaults to OFF,<wbr/> and always includes OFF if defined.<wbr/></p>
30516            </td>
30517          </tr>
30518
30519          <tr class="entries_header">
30520            <th class="th_details" colspan="6">HAL Implementation Details</th>
30521          </tr>
30522          <tr class="entry_cont">
30523            <td class="entry_details" colspan="6">
30524              <p>All custom modes must be &gt;= CUSTOM1.<wbr/></p>
30525            </td>
30526          </tr>
30527
30528          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
30529           <!-- end of entry -->
30530
30531
30532          <tr class="entry" id="static_android.sensor.opticalBlackRegions">
30533            <td class="entry_name
30534             " rowspan="5">
30535              android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions
30536            </td>
30537            <td class="entry_type">
30538                <span class="entry_type_name">int32</span>
30539                <span class="entry_type_container">x</span>
30540
30541                <span class="entry_type_array">
30542                  4 x num_regions
30543                </span>
30544              <span class="entry_type_visibility"> [public as rectangle]</span>
30545
30546
30547
30548
30549
30550
30551            </td> <!-- entry_type -->
30552
30553            <td class="entry_description">
30554              <p>List of disjoint rectangles indicating the sensor
30555optically shielded black pixel regions.<wbr/></p>
30556            </td>
30557
30558            <td class="entry_units">
30559            </td>
30560
30561            <td class="entry_range">
30562            </td>
30563
30564            <td class="entry_hal_version">
30565              <p>3.<wbr/>2</p>
30566            </td>
30567
30568            <td class="entry_tags">
30569            </td>
30570
30571          </tr>
30572          <tr class="entries_header">
30573            <th class="th_details" colspan="6">Details</th>
30574          </tr>
30575          <tr class="entry_cont">
30576            <td class="entry_details" colspan="6">
30577              <p>In most camera sensors,<wbr/> the active array is surrounded by some
30578optically shielded pixel areas.<wbr/> By blocking light,<wbr/> these pixels
30579provides a reliable black reference for black level compensation
30580in active array region.<wbr/></p>
30581<p>This key provides a list of disjoint rectangles specifying the
30582regions of optically shielded (with metal shield) black pixel
30583regions if the camera device is capable of reading out these black
30584pixels in the output raw images.<wbr/> In comparison to the fixed black
30585level values reported by <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a>,<wbr/> this key
30586may provide a more accurate way for the application to calculate
30587black level of each captured raw images.<wbr/></p>
30588<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
30589<a href="#dynamic_android.sensor.dynamicWhiteLevel">android.<wbr/>sensor.<wbr/>dynamic<wbr/>White<wbr/>Level</a> will also be reported.<wbr/></p>
30590            </td>
30591          </tr>
30592
30593          <tr class="entries_header">
30594            <th class="th_details" colspan="6">HAL Implementation Details</th>
30595          </tr>
30596          <tr class="entry_cont">
30597            <td class="entry_details" colspan="6">
30598              <p>This array contains (xmin,<wbr/> ymin,<wbr/> width,<wbr/> height).<wbr/> The (xmin,<wbr/> ymin)
30599must be &gt;= (0,<wbr/>0) and &lt;=
30600<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
30601&lt;= <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/> Each region must be
30602outside the region reported by
30603<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>
30604<p>The HAL must report minimal number of disjoint regions for the
30605optically shielded back pixel regions.<wbr/> For example,<wbr/> if a region can
30606be covered by one rectangle,<wbr/> the HAL must not split this region into
30607multiple rectangles.<wbr/></p>
30608            </td>
30609          </tr>
30610
30611          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
30612           <!-- end of entry -->
30613
30614
30615          <tr class="entry" id="static_android.sensor.opaqueRawSize">
30616            <td class="entry_name
30617             " rowspan="5">
30618              android.<wbr/>sensor.<wbr/>opaque<wbr/>Raw<wbr/>Size
30619            </td>
30620            <td class="entry_type">
30621                <span class="entry_type_name">int32</span>
30622                <span class="entry_type_container">x</span>
30623
30624                <span class="entry_type_array">
30625                  n x 3
30626                </span>
30627              <span class="entry_type_visibility"> [system]</span>
30628
30629
30630
30631
30632
30633
30634            </td> <!-- entry_type -->
30635
30636            <td class="entry_description">
30637              <p>Size in bytes for all the listed opaque RAW buffer sizes</p>
30638            </td>
30639
30640            <td class="entry_units">
30641            </td>
30642
30643            <td class="entry_range">
30644              <p>Must be large enough to fit the opaque RAW of corresponding size produced by
30645the camera</p>
30646            </td>
30647
30648            <td class="entry_hal_version">
30649              <p>3.<wbr/>2</p>
30650            </td>
30651
30652            <td class="entry_tags">
30653            </td>
30654
30655          </tr>
30656          <tr class="entries_header">
30657            <th class="th_details" colspan="6">Details</th>
30658          </tr>
30659          <tr class="entry_cont">
30660            <td class="entry_details" colspan="6">
30661              <p>This configurations are listed as <code>(width,<wbr/> height,<wbr/> size_<wbr/>in_<wbr/>bytes)</code> tuples.<wbr/>
30662This is used for sizing the gralloc buffers for opaque RAW buffers.<wbr/>
30663All RAW_<wbr/>OPAQUE output stream configuration listed in
30664<a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> will have a corresponding tuple in
30665this key.<wbr/></p>
30666            </td>
30667          </tr>
30668
30669          <tr class="entries_header">
30670            <th class="th_details" colspan="6">HAL Implementation Details</th>
30671          </tr>
30672          <tr class="entry_cont">
30673            <td class="entry_details" colspan="6">
30674              <p>This key is added in legacy HAL3.<wbr/>4.<wbr/></p>
30675<p>For legacy HAL3.<wbr/>4 or above: devices advertising RAW_<wbr/>OPAQUE format output must list this
30676key.<wbr/>  For legacy HAL3.<wbr/>3 or earlier devices: if RAW_<wbr/>OPAQUE ouput is advertised,<wbr/> camera
30677framework will derive this key by assuming each pixel takes two bytes and no padding bytes
30678between rows.<wbr/></p>
30679            </td>
30680          </tr>
30681
30682          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
30683           <!-- end of entry -->
30684
30685
30686          <tr class="entry" id="static_android.sensor.opaqueRawSizeMaximumResolution">
30687            <td class="entry_name
30688             " rowspan="5">
30689              android.<wbr/>sensor.<wbr/>opaque<wbr/>Raw<wbr/>Size<wbr/>Maximum<wbr/>Resolution
30690            </td>
30691            <td class="entry_type">
30692                <span class="entry_type_name">int32</span>
30693                <span class="entry_type_container">x</span>
30694
30695                <span class="entry_type_array">
30696                  n x 3
30697                </span>
30698              <span class="entry_type_visibility"> [system]</span>
30699
30700
30701
30702
30703
30704
30705            </td> <!-- entry_type -->
30706
30707            <td class="entry_description">
30708              <p>Size in bytes for all the listed opaque RAW buffer sizes when
30709<a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to
30710<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p>
30711            </td>
30712
30713            <td class="entry_units">
30714            </td>
30715
30716            <td class="entry_range">
30717              <p>Must be large enough to fit the opaque RAW of corresponding size produced by
30718the camera</p>
30719            </td>
30720
30721            <td class="entry_hal_version">
30722              <p>3.<wbr/>6</p>
30723            </td>
30724
30725            <td class="entry_tags">
30726            </td>
30727
30728          </tr>
30729          <tr class="entries_header">
30730            <th class="th_details" colspan="6">Details</th>
30731          </tr>
30732          <tr class="entry_cont">
30733            <td class="entry_details" colspan="6">
30734              <p>Refer to <a href="#static_android.sensor.opaqueRawSize">android.<wbr/>sensor.<wbr/>opaque<wbr/>Raw<wbr/>Size</a> for details.<wbr/></p>
30735            </td>
30736          </tr>
30737
30738          <tr class="entries_header">
30739            <th class="th_details" colspan="6">HAL Implementation Details</th>
30740          </tr>
30741          <tr class="entry_cont">
30742            <td class="entry_details" colspan="6">
30743              <p>Refer to <a href="#static_android.sensor.opaqueRawSize">android.<wbr/>sensor.<wbr/>opaque<wbr/>Raw<wbr/>Size</a> for details.<wbr/></p>
30744            </td>
30745          </tr>
30746
30747          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
30748           <!-- end of entry -->
30749
30750
30751          <tr class="entry" id="static_android.sensor.readoutTimestamp">
30752            <td class="entry_name
30753             " rowspan="5">
30754              android.<wbr/>sensor.<wbr/>readout<wbr/>Timestamp
30755            </td>
30756            <td class="entry_type">
30757                <span class="entry_type_name entry_type_name_enum">byte</span>
30758
30759              <span class="entry_type_visibility"> [java_public]</span>
30760
30761
30762              <span class="entry_type_hwlevel">[legacy] </span>
30763
30764
30765
30766                <ul class="entry_type_enum">
30767                  <li>
30768                    <span class="entry_type_enum_name">NOT_SUPPORTED (v3.8)</span>
30769                    <span class="entry_type_enum_notes"><p>This camera device doesn't support readout timestamp and onReadoutStarted
30770callback.<wbr/></p></span>
30771                  </li>
30772                  <li>
30773                    <span class="entry_type_enum_name">HARDWARE (v3.8)</span>
30774                    <span class="entry_type_enum_notes"><p>This camera device supports the onReadoutStarted callback as well as outputting
30775readout timestamps.<wbr/> The readout timestamp is generated by the camera hardware and it
30776has the same accuracy and timing characteristics of the start-of-exposure time.<wbr/></p></span>
30777                  </li>
30778                </ul>
30779
30780            </td> <!-- entry_type -->
30781
30782            <td class="entry_description">
30783              <p>Whether or not the camera device supports readout timestamp and
30784{@code onReadoutStarted} callback.<wbr/></p>
30785            </td>
30786
30787            <td class="entry_units">
30788            </td>
30789
30790            <td class="entry_range">
30791            </td>
30792
30793            <td class="entry_hal_version">
30794              <p>3.<wbr/>8</p>
30795            </td>
30796
30797            <td class="entry_tags">
30798            </td>
30799
30800          </tr>
30801          <tr class="entries_header">
30802            <th class="th_details" colspan="6">Details</th>
30803          </tr>
30804          <tr class="entry_cont">
30805            <td class="entry_details" colspan="6">
30806              <p>If this tag is {@code HARDWARE},<wbr/> the camera device calls
30807<a href="https://developer.android.com/reference/CameraCaptureSession/CaptureCallback.html#onReadoutStarted">CaptureCallback#onReadoutStarted</a> in addition to the
30808<a href="https://developer.android.com/reference/CameraCaptureSession/CaptureCallback.html#onCaptureStarted">CaptureCallback#onCaptureStarted</a> callback for each capture.<wbr/>
30809The timestamp passed into the callback is the start of camera image readout rather than
30810the start of the exposure.<wbr/> The timestamp source of
30811<a href="https://developer.android.com/reference/CameraCaptureSession/CaptureCallback.html#onReadoutStarted">CaptureCallback#onReadoutStarted</a> is the same as that of
30812<a href="https://developer.android.com/reference/CameraCaptureSession/CaptureCallback.html#onCaptureStarted">CaptureCallback#onCaptureStarted</a>.<wbr/></p>
30813<p>In addition,<wbr/> the application can switch an output surface's timestamp from start of
30814exposure to start of readout by calling
30815<a href="https://developer.android.com/reference/android/hardware/camera2/params/OutputConfiguration.html#setReadoutTimestampEnabled">OutputConfiguration#setReadoutTimestampEnabled</a>.<wbr/></p>
30816<p>The readout timestamp is beneficial for video recording,<wbr/> because the encoder favors
30817uniform timestamps,<wbr/> and the readout timestamps better reflect the cadence camera sensors
30818output data.<wbr/></p>
30819<p>Note that the camera device produces the start-of-exposure and start-of-readout callbacks
30820together.<wbr/> As a result,<wbr/> the <a href="https://developer.android.com/reference/CameraCaptureSession/CaptureCallback.html#onReadoutStarted">CaptureCallback#onReadoutStarted</a>
30821is called right after <a href="https://developer.android.com/reference/CameraCaptureSession/CaptureCallback.html#onCaptureStarted">CaptureCallback#onCaptureStarted</a>.<wbr/> The
30822difference in start-of-readout and start-of-exposure is the sensor exposure time,<wbr/> plus
30823certain constant offset.<wbr/> The offset is usually due to camera sensor level crop,<wbr/> and it is
30824generally constant over time for the same set of output resolutions and capture settings.<wbr/></p>
30825            </td>
30826          </tr>
30827
30828          <tr class="entries_header">
30829            <th class="th_details" colspan="6">HAL Implementation Details</th>
30830          </tr>
30831          <tr class="entry_cont">
30832            <td class="entry_details" colspan="6">
30833              <p>This property may be set by HAL layers that implement the AIDL interface.<wbr/> If not set
30834camera framework will implicitly set it to HARDWARE for all AIDL HALs.<wbr/> Camera framework
30835will force set this to NOT_<wbr/>SUPPORTED for all HIDL HALs,<wbr/> regerdless of whether the HAL
30836provided a value or not.<wbr/></p>
30837            </td>
30838          </tr>
30839
30840          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
30841           <!-- end of entry -->
30842
30843
30844
30845      <!-- end of kind -->
30846      </tbody>
30847      <tr><td colspan="7" class="kind">dynamic</td></tr>
30848
30849      <thead class="entries_header">
30850        <tr>
30851          <th class="th_name">Property Name</th>
30852          <th class="th_type">Type</th>
30853          <th class="th_description">Description</th>
30854          <th class="th_units">Units</th>
30855          <th class="th_range">Range</th>
30856          <th class="th_hal_version">Initial HIDL HAL version</th>
30857          <th class="th_tags">Tags</th>
30858        </tr>
30859      </thead>
30860
30861      <tbody>
30862
30863
30864
30865
30866
30867
30868
30869
30870
30871
30872          <tr class="entry" id="dynamic_android.sensor.exposureTime">
30873            <td class="entry_name
30874             " rowspan="3">
30875              android.<wbr/>sensor.<wbr/>exposure<wbr/>Time
30876            </td>
30877            <td class="entry_type">
30878                <span class="entry_type_name">int64</span>
30879
30880              <span class="entry_type_visibility"> [public]</span>
30881
30882
30883              <span class="entry_type_hwlevel">[full] </span>
30884
30885
30886
30887
30888            </td> <!-- entry_type -->
30889
30890            <td class="entry_description">
30891              <p>Duration each pixel is exposed to
30892light.<wbr/></p>
30893            </td>
30894
30895            <td class="entry_units">
30896              Nanoseconds
30897            </td>
30898
30899            <td class="entry_range">
30900              <p><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></p>
30901            </td>
30902
30903            <td class="entry_hal_version">
30904              <p>3.<wbr/>2</p>
30905            </td>
30906
30907            <td class="entry_tags">
30908              <ul class="entry_tags">
30909                  <li><a href="#tag_V1">V1</a></li>
30910              </ul>
30911            </td>
30912
30913          </tr>
30914          <tr class="entries_header">
30915            <th class="th_details" colspan="6">Details</th>
30916          </tr>
30917          <tr class="entry_cont">
30918            <td class="entry_details" colspan="6">
30919              <p>If the sensor can't expose this exact duration,<wbr/> it will shorten the
30920duration exposed to the nearest possible value (rather than expose longer).<wbr/>
30921The final exposure time used will be available in the output capture result.<wbr/></p>
30922<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
30923OFF; otherwise the auto-exposure algorithm will override this value.<wbr/> However,<wbr/> in the
30924case that <a href="#controls_android.control.aePriorityMode">android.<wbr/>control.<wbr/>ae<wbr/>Priority<wbr/>Mode</a> is set to SENSOR_<wbr/>EXPOSURE_<wbr/>TIME_<wbr/>PRIORITY,<wbr/> this
30925control will be effective and not controlled by the auto-exposure algorithm.<wbr/></p>
30926            </td>
30927          </tr>
30928
30929
30930          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
30931           <!-- end of entry -->
30932
30933
30934          <tr class="entry" id="dynamic_android.sensor.frameDuration">
30935            <td class="entry_name
30936             " rowspan="5">
30937              android.<wbr/>sensor.<wbr/>frame<wbr/>Duration
30938            </td>
30939            <td class="entry_type">
30940                <span class="entry_type_name">int64</span>
30941
30942              <span class="entry_type_visibility"> [public]</span>
30943
30944
30945              <span class="entry_type_hwlevel">[full] </span>
30946
30947
30948
30949
30950            </td> <!-- entry_type -->
30951
30952            <td class="entry_description">
30953              <p>Duration from start of frame readout to
30954start of next frame readout.<wbr/></p>
30955            </td>
30956
30957            <td class="entry_units">
30958              Nanoseconds
30959            </td>
30960
30961            <td class="entry_range">
30962              <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/>
30963The duration is capped to <code>max(duration,<wbr/> exposureTime + overhead)</code>.<wbr/></p>
30964            </td>
30965
30966            <td class="entry_hal_version">
30967              <p>3.<wbr/>2</p>
30968            </td>
30969
30970            <td class="entry_tags">
30971              <ul class="entry_tags">
30972                  <li><a href="#tag_V1">V1</a></li>
30973              </ul>
30974            </td>
30975
30976          </tr>
30977          <tr class="entries_header">
30978            <th class="th_details" colspan="6">Details</th>
30979          </tr>
30980          <tr class="entry_cont">
30981            <td class="entry_details" colspan="6">
30982              <p>The maximum frame rate that can be supported by a camera subsystem is
30983a function of many factors:</p>
30984<ul>
30985<li>Requested resolutions of output image streams</li>
30986<li>Availability of binning /<wbr/> skipping modes on the imager</li>
30987<li>The bandwidth of the imager interface</li>
30988<li>The bandwidth of the various ISP processing blocks</li>
30989</ul>
30990<p>Since these factors can vary greatly between different ISPs and
30991sensors,<wbr/> the camera abstraction tries to represent the bandwidth
30992restrictions with as simple a model as possible.<wbr/></p>
30993<p>The model presented has the following characteristics:</p>
30994<ul>
30995<li>The image sensor is always configured to output the smallest
30996resolution possible given the application's requested output stream
30997sizes.<wbr/>  The smallest resolution is defined as being at least as large
30998as the largest requested output stream size; the camera pipeline must
30999never digitally upsample sensor data when the crop region covers the
31000whole sensor.<wbr/> In general,<wbr/> this means that if only small output stream
31001resolutions are configured,<wbr/> the sensor can provide a higher frame
31002rate.<wbr/></li>
31003<li>Since any request may use any or all the currently configured
31004output streams,<wbr/> the sensor and ISP must be configured to support
31005scaling a single capture to all the streams at the same time.<wbr/>  This
31006means the camera pipeline must be ready to produce the largest
31007requested output size without any delay.<wbr/>  Therefore,<wbr/> the overall
31008frame rate of a given configured stream set is governed only by the
31009largest requested stream resolution.<wbr/></li>
31010<li>Using more than one output stream in a request does not affect the
31011frame duration.<wbr/></li>
31012<li>Certain format-streams may need to do additional background processing
31013before data is consumed/<wbr/>produced by that stream.<wbr/> These processors
31014can run concurrently to the rest of the camera pipeline,<wbr/> but
31015cannot process more than 1 capture at a time.<wbr/></li>
31016</ul>
31017<p>The necessary information for the application,<wbr/> given the model above,<wbr/> is provided via
31018<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/>
31019These are used to determine the maximum frame rate /<wbr/> minimum frame duration that is
31020possible for a given stream configuration.<wbr/></p>
31021<p>Specifically,<wbr/> the application can use the following rules to
31022determine the minimum frame duration it can request from the camera
31023device:</p>
31024<ol>
31025<li>Let the set of currently configured input/<wbr/>output streams be called <code>S</code>.<wbr/></li>
31026<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>
31027(with its respective size/<wbr/>format).<wbr/> Let this set of frame durations be called <code>F</code>.<wbr/></li>
31028<li>For any given request <code>R</code>,<wbr/> the minimum frame duration allowed for <code>R</code> is the maximum
31029out 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>
31030</ol>
31031<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>
31032using its respective size/<wbr/>format),<wbr/> then the frame duration in <code>F</code> determines the steady
31033state frame rate that the application will get if it uses <code>R</code> as a repeating request.<wbr/> Let
31034this special kind of request be called <code>Rsimple</code>.<wbr/></p>
31035<p>A repeating request <code>Rsimple</code> can be <em>occasionally</em> interleaved by a single capture of a
31036new request <code>Rstall</code> (which has at least one in-use stream with a non-0 stall time) and if
31037<code>Rstall</code> has the same minimum frame duration this will not cause a frame rate loss if all
31038buffers from the previous <code>Rstall</code> have already been delivered.<wbr/></p>
31039<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>
31040<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
31041OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
31042<p><em>Note:</em> Prior to Android 13,<wbr/> this field was described as measuring the duration from
31043start of frame exposure to start of next frame exposure,<wbr/> which doesn't reflect the
31044definition from sensor manufacturer.<wbr/> A mobile sensor defines the frame duration as
31045intervals between sensor readouts.<wbr/></p>
31046            </td>
31047          </tr>
31048
31049          <tr class="entries_header">
31050            <th class="th_details" colspan="6">HAL Implementation Details</th>
31051          </tr>
31052          <tr class="entry_cont">
31053            <td class="entry_details" colspan="6">
31054              <p>For more details about stalling,<wbr/> see
31055<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>.<wbr/></p>
31056            </td>
31057          </tr>
31058
31059          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
31060           <!-- end of entry -->
31061
31062
31063          <tr class="entry" id="dynamic_android.sensor.sensitivity">
31064            <td class="entry_name
31065             " rowspan="5">
31066              android.<wbr/>sensor.<wbr/>sensitivity
31067            </td>
31068            <td class="entry_type">
31069                <span class="entry_type_name">int32</span>
31070
31071              <span class="entry_type_visibility"> [public]</span>
31072
31073
31074              <span class="entry_type_hwlevel">[full] </span>
31075
31076
31077
31078
31079            </td> <!-- entry_type -->
31080
31081            <td class="entry_description">
31082              <p>The amount of gain applied to sensor data
31083before processing.<wbr/></p>
31084            </td>
31085
31086            <td class="entry_units">
31087              ISO arithmetic units
31088            </td>
31089
31090            <td class="entry_range">
31091              <p><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></p>
31092            </td>
31093
31094            <td class="entry_hal_version">
31095              <p>3.<wbr/>2</p>
31096            </td>
31097
31098            <td class="entry_tags">
31099              <ul class="entry_tags">
31100                  <li><a href="#tag_V1">V1</a></li>
31101              </ul>
31102            </td>
31103
31104          </tr>
31105          <tr class="entries_header">
31106            <th class="th_details" colspan="6">Details</th>
31107          </tr>
31108          <tr class="entry_cont">
31109            <td class="entry_details" colspan="6">
31110              <p>The sensitivity is the standard ISO sensitivity value,<wbr/>
31111as defined in ISO 12232:2006.<wbr/></p>
31112<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
31113if if it less than <a href="#static_android.sensor.maxAnalogSensitivity">android.<wbr/>sensor.<wbr/>max<wbr/>Analog<wbr/>Sensitivity</a>,<wbr/> the camera device
31114is guaranteed to use only analog amplification for applying the gain.<wbr/></p>
31115<p>If the camera device cannot apply the exact sensitivity
31116requested,<wbr/> it will reduce the gain to the nearest supported
31117value.<wbr/> The final sensitivity used will be available in the
31118output capture result.<wbr/></p>
31119<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
31120OFF; otherwise the auto-exposure algorithm will override this value.<wbr/> However,<wbr/> in the
31121case that <a href="#controls_android.control.aePriorityMode">android.<wbr/>control.<wbr/>ae<wbr/>Priority<wbr/>Mode</a> is set to SENSOR_<wbr/>SENSITIVITY_<wbr/>PRIORITY,<wbr/> this
31122control will be effective and not controlled by the auto-exposure algorithm.<wbr/></p>
31123<p>Note that for devices supporting postRawSensitivityBoost,<wbr/> the total sensitivity applied
31124to the final processed image is the combination of <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> and
31125<a href="#controls_android.control.postRawSensitivityBoost">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost</a>.<wbr/> In case the application uses the sensor
31126sensitivity from last capture result of an auto request for a manual request,<wbr/> in order
31127to achieve the same brightness in the output image,<wbr/> the application should also
31128set postRawSensitivityBoost.<wbr/></p>
31129            </td>
31130          </tr>
31131
31132          <tr class="entries_header">
31133            <th class="th_details" colspan="6">HAL Implementation Details</th>
31134          </tr>
31135          <tr class="entry_cont">
31136            <td class="entry_details" colspan="6">
31137              <p>ISO 12232:2006 REI method is acceptable.<wbr/></p>
31138            </td>
31139          </tr>
31140
31141          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
31142           <!-- end of entry -->
31143
31144
31145          <tr class="entry" id="dynamic_android.sensor.timestamp">
31146            <td class="entry_name
31147             " rowspan="5">
31148              android.<wbr/>sensor.<wbr/>timestamp
31149            </td>
31150            <td class="entry_type">
31151                <span class="entry_type_name">int64</span>
31152
31153              <span class="entry_type_visibility"> [public]</span>
31154
31155
31156              <span class="entry_type_hwlevel">[legacy] </span>
31157
31158
31159
31160
31161            </td> <!-- entry_type -->
31162
31163            <td class="entry_description">
31164              <p>Time at start of exposure of first
31165row of the image sensor active array,<wbr/> in nanoseconds.<wbr/></p>
31166            </td>
31167
31168            <td class="entry_units">
31169              Nanoseconds
31170            </td>
31171
31172            <td class="entry_range">
31173              <p>&gt; 0</p>
31174            </td>
31175
31176            <td class="entry_hal_version">
31177              <p>3.<wbr/>2</p>
31178            </td>
31179
31180            <td class="entry_tags">
31181              <ul class="entry_tags">
31182                  <li><a href="#tag_BC">BC</a></li>
31183              </ul>
31184            </td>
31185
31186          </tr>
31187          <tr class="entries_header">
31188            <th class="th_details" colspan="6">Details</th>
31189          </tr>
31190          <tr class="entry_cont">
31191            <td class="entry_details" colspan="6">
31192              <p>The timestamps are also included in all image
31193buffers produced for the same capture,<wbr/> and will be identical
31194on all the outputs.<wbr/></p>
31195<p>When <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> UNKNOWN,<wbr/>
31196the timestamps measure time since an unspecified starting point,<wbr/>
31197and are monotonically increasing.<wbr/> They can be compared with the
31198timestamps for other captures from the same camera device,<wbr/> but are
31199not guaranteed to be comparable to any other time source.<wbr/></p>
31200<p>When <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME,<wbr/> the
31201timestamps 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
31202be compared to other timestamps from other subsystems that
31203are using that base.<wbr/></p>
31204<p>For reprocessing,<wbr/> the timestamp will match the start of exposure of
31205the input image,<wbr/> i.<wbr/>e.<wbr/> <a href="https://developer.android.com/reference/CaptureResult.html#SENSOR_TIMESTAMP">the
31206timestamp</a> in the TotalCaptureResult that was used to create the
31207reprocess capture request.<wbr/></p>
31208            </td>
31209          </tr>
31210
31211          <tr class="entries_header">
31212            <th class="th_details" colspan="6">HAL Implementation Details</th>
31213          </tr>
31214          <tr class="entry_cont">
31215            <td class="entry_details" colspan="6">
31216              <p>All timestamps must be in reference to the kernel's
31217CLOCK_<wbr/>BOOTTIME monotonic clock,<wbr/> which properly accounts for
31218time spent asleep.<wbr/> This allows for synchronization with
31219sensors that continue to operate while the system is
31220otherwise asleep.<wbr/></p>
31221<p>If <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME,<wbr/>
31222The timestamp must be synchronized with the timestamps from other
31223sensor subsystems that are using the same timebase.<wbr/></p>
31224<p>For reprocessing,<wbr/> the input image's start of exposure can be looked up
31225with <a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a> from the metadata included in the
31226capture request.<wbr/></p>
31227            </td>
31228          </tr>
31229
31230          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
31231           <!-- end of entry -->
31232
31233
31234          <tr class="entry" id="dynamic_android.sensor.temperature">
31235            <td class="entry_name
31236             " rowspan="1">
31237              android.<wbr/>sensor.<wbr/>temperature
31238            </td>
31239            <td class="entry_type">
31240                <span class="entry_type_name">float</span>
31241
31242              <span class="entry_type_visibility"> [system]</span>
31243
31244
31245
31246
31247
31248
31249            </td> <!-- entry_type -->
31250
31251            <td class="entry_description">
31252              <p>The temperature of the sensor,<wbr/> sampled at the time
31253exposure began for this frame.<wbr/></p>
31254<p>The thermal diode being queried should be inside the sensor PCB,<wbr/> or
31255somewhere close to it.<wbr/></p>
31256            </td>
31257
31258            <td class="entry_units">
31259              Celsius
31260            </td>
31261
31262            <td class="entry_range">
31263              <p>Optional.<wbr/> This value is missing if no temperature is available.<wbr/></p>
31264            </td>
31265
31266            <td class="entry_hal_version">
31267              <p>3.<wbr/>2</p>
31268            </td>
31269
31270            <td class="entry_tags">
31271              <ul class="entry_tags">
31272                  <li><a href="#tag_FUTURE">FUTURE</a></li>
31273              </ul>
31274            </td>
31275
31276          </tr>
31277
31278
31279          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
31280           <!-- end of entry -->
31281
31282
31283          <tr class="entry" id="dynamic_android.sensor.neutralColorPoint">
31284            <td class="entry_name
31285             " rowspan="3">
31286              android.<wbr/>sensor.<wbr/>neutral<wbr/>Color<wbr/>Point
31287            </td>
31288            <td class="entry_type">
31289                <span class="entry_type_name">rational</span>
31290                <span class="entry_type_container">x</span>
31291
31292                <span class="entry_type_array">
31293                  3
31294                </span>
31295              <span class="entry_type_visibility"> [public]</span>
31296
31297
31298
31299
31300
31301
31302            </td> <!-- entry_type -->
31303
31304            <td class="entry_description">
31305              <p>The estimated camera neutral color in the native sensor colorspace at
31306the time of capture.<wbr/></p>
31307            </td>
31308
31309            <td class="entry_units">
31310            </td>
31311
31312            <td class="entry_range">
31313            </td>
31314
31315            <td class="entry_hal_version">
31316              <p>3.<wbr/>2</p>
31317            </td>
31318
31319            <td class="entry_tags">
31320              <ul class="entry_tags">
31321                  <li><a href="#tag_RAW">RAW</a></li>
31322              </ul>
31323            </td>
31324
31325          </tr>
31326          <tr class="entries_header">
31327            <th class="th_details" colspan="6">Details</th>
31328          </tr>
31329          <tr class="entry_cont">
31330            <td class="entry_details" colspan="6">
31331              <p>This value gives the neutral color point encoded as an RGB value in the
31332native sensor color space.<wbr/>  The neutral color point indicates the
31333currently estimated white point of the scene illumination.<wbr/>  It can be
31334used to interpolate between the provided color transforms when
31335processing raw sensor data.<wbr/></p>
31336<p>The order of the values is R,<wbr/> G,<wbr/> B; where R is in the lowest index.<wbr/></p>
31337<p>Starting from Android Q,<wbr/> this key will not be present for a MONOCHROME camera,<wbr/> even if
31338the camera device has RAW capability.<wbr/></p>
31339            </td>
31340          </tr>
31341
31342
31343          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
31344           <!-- end of entry -->
31345
31346
31347          <tr class="entry" id="dynamic_android.sensor.noiseProfile">
31348            <td class="entry_name
31349             " rowspan="5">
31350              android.<wbr/>sensor.<wbr/>noise<wbr/>Profile
31351            </td>
31352            <td class="entry_type">
31353                <span class="entry_type_name">double</span>
31354                <span class="entry_type_container">x</span>
31355
31356                <span class="entry_type_array">
31357                  2 x CFA Channels
31358                </span>
31359              <span class="entry_type_visibility"> [public as pairDoubleDouble]</span>
31360
31361
31362
31363
31364                <div class="entry_type_notes">Pairs of noise model coefficients</div>
31365
31366
31367            </td> <!-- entry_type -->
31368
31369            <td class="entry_description">
31370              <p>Noise model coefficients for each CFA mosaic channel.<wbr/></p>
31371            </td>
31372
31373            <td class="entry_units">
31374            </td>
31375
31376            <td class="entry_range">
31377            </td>
31378
31379            <td class="entry_hal_version">
31380              <p>3.<wbr/>2</p>
31381            </td>
31382
31383            <td class="entry_tags">
31384              <ul class="entry_tags">
31385                  <li><a href="#tag_RAW">RAW</a></li>
31386              </ul>
31387            </td>
31388
31389          </tr>
31390          <tr class="entries_header">
31391            <th class="th_details" colspan="6">Details</th>
31392          </tr>
31393          <tr class="entry_cont">
31394            <td class="entry_details" colspan="6">
31395              <p>This key contains two noise model coefficients for each CFA channel
31396corresponding to the sensor amplification (S) and sensor readout
31397noise (O).<wbr/>  These are given as pairs of coefficients for each channel
31398in the same order as channels listed for the CFA layout key
31399(see <a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a>).<wbr/>  This is
31400represented as an array of Pair&lt;Double,<wbr/> Double&gt;,<wbr/> where
31401the first member of the Pair at index n is the S coefficient and the
31402second member is the O coefficient for the nth color channel in the CFA.<wbr/></p>
31403<p>These coefficients are used in a two parameter noise model to describe
31404the amount of noise present in the image for each CFA channel.<wbr/>  The
31405noise model used here is:</p>
31406<p>N(x) = sqrt(Sx + O)</p>
31407<p>Where x represents the recorded signal of a CFA channel normalized to
31408the range [0,<wbr/> 1],<wbr/> and S and O are the noise model coefficients for
31409that channel.<wbr/></p>
31410<p>A more detailed description of the noise model can be found in the
31411Adobe DNG specification for the NoiseProfile tag.<wbr/></p>
31412<p>For a MONOCHROME camera,<wbr/> there is only one color channel.<wbr/> So the noise model coefficients
31413will only contain one S and one O.<wbr/></p>
31414            </td>
31415          </tr>
31416
31417          <tr class="entries_header">
31418            <th class="th_details" colspan="6">HAL Implementation Details</th>
31419          </tr>
31420          <tr class="entry_cont">
31421            <td class="entry_details" colspan="6">
31422              <p>For a CFA layout of RGGB,<wbr/> the list of coefficients would be given as
31423an array of doubles S0,<wbr/>O0,<wbr/>S1,<wbr/>O1,...,<wbr/> where S0 and O0 are the coefficients
31424for the red channel,<wbr/> S1 and O1 are the coefficients for the first green
31425channel,<wbr/> etc.<wbr/></p>
31426            </td>
31427          </tr>
31428
31429          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
31430           <!-- end of entry -->
31431
31432
31433          <tr class="entry" id="dynamic_android.sensor.profileHueSatMap">
31434            <td class="entry_name
31435             " rowspan="3">
31436              android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map
31437            </td>
31438            <td class="entry_type">
31439                <span class="entry_type_name">float</span>
31440                <span class="entry_type_container">x</span>
31441
31442                <span class="entry_type_array">
31443                  hue_samples x saturation_samples x value_samples x 3
31444                </span>
31445              <span class="entry_type_visibility"> [system]</span>
31446
31447
31448
31449
31450                <div class="entry_type_notes">Mapping for hue,<wbr/> saturation,<wbr/> and value</div>
31451
31452
31453            </td> <!-- entry_type -->
31454
31455            <td class="entry_description">
31456              <p>A mapping containing a hue shift,<wbr/> saturation scale,<wbr/> and value scale
31457for each pixel.<wbr/></p>
31458            </td>
31459
31460            <td class="entry_units">
31461
31462          The hue shift is given in degrees; saturation and value scale factors are
31463          unitless and are between 0 and 1 inclusive
31464
31465            </td>
31466
31467            <td class="entry_range">
31468            </td>
31469
31470            <td class="entry_hal_version">
31471              <p>3.<wbr/>2</p>
31472            </td>
31473
31474            <td class="entry_tags">
31475              <ul class="entry_tags">
31476                  <li><a href="#tag_RAW">RAW</a></li>
31477              </ul>
31478            </td>
31479
31480          </tr>
31481          <tr class="entries_header">
31482            <th class="th_details" colspan="6">Details</th>
31483          </tr>
31484          <tr class="entry_cont">
31485            <td class="entry_details" colspan="6">
31486              <p>hue_<wbr/>samples,<wbr/> saturation_<wbr/>samples,<wbr/> and value_<wbr/>samples are given in
31487<a href="#static_android.sensor.profileHueSatMapDimensions">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map<wbr/>Dimensions</a>.<wbr/></p>
31488<p>Each entry of this map contains three floats corresponding to the
31489hue shift,<wbr/> saturation scale,<wbr/> and value scale,<wbr/> respectively; where the
31490hue shift has the lowest index.<wbr/> The map entries are stored in the key
31491in nested loop order,<wbr/> with the value divisions in the outer loop,<wbr/> the
31492hue divisions in the middle loop,<wbr/> and the saturation divisions in the
31493inner loop.<wbr/> All zero input saturation entries are required to have a
31494value scale factor of 1.<wbr/>0.<wbr/></p>
31495            </td>
31496          </tr>
31497
31498
31499          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
31500           <!-- end of entry -->
31501
31502
31503          <tr class="entry" id="dynamic_android.sensor.profileToneCurve">
31504            <td class="entry_name
31505             " rowspan="3">
31506              android.<wbr/>sensor.<wbr/>profile<wbr/>Tone<wbr/>Curve
31507            </td>
31508            <td class="entry_type">
31509                <span class="entry_type_name">float</span>
31510                <span class="entry_type_container">x</span>
31511
31512                <span class="entry_type_array">
31513                  samples x 2
31514                </span>
31515              <span class="entry_type_visibility"> [system]</span>
31516
31517
31518
31519
31520                <div class="entry_type_notes">Samples defining a spline for a tone-mapping curve</div>
31521
31522
31523            </td> <!-- entry_type -->
31524
31525            <td class="entry_description">
31526              <p>A list of x,<wbr/>y samples defining a tone-mapping curve for gamma adjustment.<wbr/></p>
31527            </td>
31528
31529            <td class="entry_units">
31530            </td>
31531
31532            <td class="entry_range">
31533              <p>Each sample has an input range of <code>[0,<wbr/> 1]</code> and an output range of
31534<code>[0,<wbr/> 1]</code>.<wbr/>  The first sample is required to be <code>(0,<wbr/> 0)</code>,<wbr/> and the last
31535sample is required to be <code>(1,<wbr/> 1)</code>.<wbr/></p>
31536            </td>
31537
31538            <td class="entry_hal_version">
31539              <p>3.<wbr/>2</p>
31540            </td>
31541
31542            <td class="entry_tags">
31543              <ul class="entry_tags">
31544                  <li><a href="#tag_RAW">RAW</a></li>
31545              </ul>
31546            </td>
31547
31548          </tr>
31549          <tr class="entries_header">
31550            <th class="th_details" colspan="6">Details</th>
31551          </tr>
31552          <tr class="entry_cont">
31553            <td class="entry_details" colspan="6">
31554              <p>This key contains a default tone curve that can be applied while
31555processing the image as a starting point for user adjustments.<wbr/>
31556The curve is specified as a list of value pairs in linear gamma.<wbr/>
31557The curve is interpolated using a cubic spline.<wbr/></p>
31558            </td>
31559          </tr>
31560
31561
31562          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
31563           <!-- end of entry -->
31564
31565
31566          <tr class="entry" id="dynamic_android.sensor.greenSplit">
31567            <td class="entry_name
31568             " rowspan="5">
31569              android.<wbr/>sensor.<wbr/>green<wbr/>Split
31570            </td>
31571            <td class="entry_type">
31572                <span class="entry_type_name">float</span>
31573
31574              <span class="entry_type_visibility"> [public]</span>
31575
31576
31577
31578
31579
31580
31581            </td> <!-- entry_type -->
31582
31583            <td class="entry_description">
31584              <p>The worst-case divergence between Bayer green channels.<wbr/></p>
31585            </td>
31586
31587            <td class="entry_units">
31588            </td>
31589
31590            <td class="entry_range">
31591              <p>&gt;= 0</p>
31592            </td>
31593
31594            <td class="entry_hal_version">
31595              <p>3.<wbr/>2</p>
31596            </td>
31597
31598            <td class="entry_tags">
31599              <ul class="entry_tags">
31600                  <li><a href="#tag_RAW">RAW</a></li>
31601              </ul>
31602            </td>
31603
31604          </tr>
31605          <tr class="entries_header">
31606            <th class="th_details" colspan="6">Details</th>
31607          </tr>
31608          <tr class="entry_cont">
31609            <td class="entry_details" colspan="6">
31610              <p>This value is an estimate of the worst case split between the
31611Bayer green channels in the red and blue rows in the sensor color
31612filter array.<wbr/></p>
31613<p>The green split is calculated as follows:</p>
31614<ol>
31615<li>A 5x5 pixel (or larger) window W within the active sensor array is
31616chosen.<wbr/> The term 'pixel' here is taken to mean a group of 4 Bayer
31617mosaic channels (R,<wbr/> Gr,<wbr/> Gb,<wbr/> B).<wbr/>  The location and size of the window
31618chosen is implementation defined,<wbr/> and should be chosen to provide a
31619green split estimate that is both representative of the entire image
31620for this camera sensor,<wbr/> and can be calculated quickly.<wbr/></li>
31621<li>The arithmetic mean of the green channels from the red
31622rows (mean_<wbr/>Gr) within W is computed.<wbr/></li>
31623<li>The arithmetic mean of the green channels from the blue
31624rows (mean_<wbr/>Gb) within W is computed.<wbr/></li>
31625<li>The maximum ratio R of the two means is computed as follows:
31626<code>R = max((mean_<wbr/>Gr + 1)/<wbr/>(mean_<wbr/>Gb + 1),<wbr/> (mean_<wbr/>Gb + 1)/<wbr/>(mean_<wbr/>Gr + 1))</code></li>
31627</ol>
31628<p>The ratio R is the green split divergence reported for this property,<wbr/>
31629which represents how much the green channels differ in the mosaic
31630pattern.<wbr/>  This value is typically used to determine the treatment of
31631the green mosaic channels when demosaicing.<wbr/></p>
31632<p>The green split value can be roughly interpreted as follows:</p>
31633<ul>
31634<li>R &lt; 1.<wbr/>03 is a negligible split (&lt;3% divergence).<wbr/></li>
31635<li>1.<wbr/>20 &lt;= R &gt;= 1.<wbr/>03 will require some software
31636correction to avoid demosaic errors (3-20% divergence).<wbr/></li>
31637<li>R &gt; 1.<wbr/>20 will require strong software correction to produce
31638a usable image (&gt;20% divergence).<wbr/></li>
31639</ul>
31640<p>Starting from Android Q,<wbr/> this key will not be present for a MONOCHROME camera,<wbr/> even if
31641the camera device has RAW capability.<wbr/></p>
31642            </td>
31643          </tr>
31644
31645          <tr class="entries_header">
31646            <th class="th_details" colspan="6">HAL Implementation Details</th>
31647          </tr>
31648          <tr class="entry_cont">
31649            <td class="entry_details" colspan="6">
31650              <p>The green split given may be a static value based on prior
31651characterization of the camera sensor using the green split
31652calculation method given here over a large,<wbr/> representative,<wbr/> sample
31653set of images.<wbr/>  Other methods of calculation that produce equivalent
31654results,<wbr/> and can be interpreted in the same manner,<wbr/> may be used.<wbr/></p>
31655            </td>
31656          </tr>
31657
31658          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
31659           <!-- end of entry -->
31660
31661
31662          <tr class="entry" id="dynamic_android.sensor.testPatternData">
31663            <td class="entry_name
31664             " rowspan="5">
31665              android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data
31666            </td>
31667            <td class="entry_type">
31668                <span class="entry_type_name">int32</span>
31669                <span class="entry_type_container">x</span>
31670
31671                <span class="entry_type_array">
31672                  4
31673                </span>
31674              <span class="entry_type_visibility"> [public]</span>
31675
31676
31677
31678
31679
31680
31681            </td> <!-- entry_type -->
31682
31683            <td class="entry_description">
31684              <p>A pixel <code>[R,<wbr/> G_<wbr/>even,<wbr/> G_<wbr/>odd,<wbr/> B]</code> that supplies the test pattern
31685when <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a> is SOLID_<wbr/>COLOR.<wbr/></p>
31686            </td>
31687
31688            <td class="entry_units">
31689            </td>
31690
31691            <td class="entry_range">
31692            </td>
31693
31694            <td class="entry_hal_version">
31695              <p>3.<wbr/>2</p>
31696            </td>
31697
31698            <td class="entry_tags">
31699            </td>
31700
31701          </tr>
31702          <tr class="entries_header">
31703            <th class="th_details" colspan="6">Details</th>
31704          </tr>
31705          <tr class="entry_cont">
31706            <td class="entry_details" colspan="6">
31707              <p>Each color channel is treated as an unsigned 32-bit integer.<wbr/>
31708The camera device then uses the most significant X bits
31709that correspond to how many bits are in its Bayer raw sensor
31710output.<wbr/></p>
31711<p>For example,<wbr/> a sensor with RAW10 Bayer output would use the
3171210 most significant bits from each color channel.<wbr/></p>
31713            </td>
31714          </tr>
31715
31716          <tr class="entries_header">
31717            <th class="th_details" colspan="6">HAL Implementation Details</th>
31718          </tr>
31719          <tr class="entry_cont">
31720            <td class="entry_details" colspan="6">
31721
31722            </td>
31723          </tr>
31724
31725          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
31726           <!-- end of entry -->
31727
31728
31729          <tr class="entry" id="dynamic_android.sensor.testPatternMode">
31730            <td class="entry_name
31731             " rowspan="5">
31732              android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode
31733            </td>
31734            <td class="entry_type">
31735                <span class="entry_type_name entry_type_name_enum">int32</span>
31736
31737              <span class="entry_type_visibility"> [public]</span>
31738
31739
31740
31741
31742
31743                <ul class="entry_type_enum">
31744                  <li>
31745                    <span class="entry_type_enum_name">OFF (v3.2)</span>
31746                    <span class="entry_type_enum_notes"><p>No test pattern mode is used,<wbr/> and the camera
31747device returns captures from the image sensor.<wbr/></p>
31748<p>This is the default if the key is not set.<wbr/></p></span>
31749                  </li>
31750                  <li>
31751                    <span class="entry_type_enum_name">SOLID_COLOR (v3.2)</span>
31752                    <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
31753respective color channel provided in
31754<a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a>.<wbr/></p>
31755<p>For example:</p>
31756<pre><code><a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a> = [0,<wbr/> 0xFFFFFFFF,<wbr/> 0xFFFFFFFF,<wbr/> 0]
31757</code></pre>
31758<p>All green pixels are 100% green.<wbr/> All red/<wbr/>blue pixels are black.<wbr/></p>
31759<pre><code><a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a> = [0xFFFFFFFF,<wbr/> 0,<wbr/> 0xFFFFFFFF,<wbr/> 0]
31760</code></pre>
31761<p>All red pixels are 100% red.<wbr/> Only the odd green pixels
31762are 100% green.<wbr/> All blue pixels are 100% black.<wbr/></p></span>
31763                  </li>
31764                  <li>
31765                    <span class="entry_type_enum_name">COLOR_BARS (v3.2)</span>
31766                    <span class="entry_type_enum_notes"><p>All pixel data is replaced with an 8-bar color pattern.<wbr/></p>
31767<p>The vertical bars (left-to-right) are as follows:</p>
31768<ul>
31769<li>100% white</li>
31770<li>yellow</li>
31771<li>cyan</li>
31772<li>green</li>
31773<li>magenta</li>
31774<li>red</li>
31775<li>blue</li>
31776<li>black</li>
31777</ul>
31778<p>In general the image would look like the following:</p>
31779<pre><code>W Y C G M R B K
31780W Y C G M R B K
31781W Y C G M R B K
31782W Y C G M R B K
31783W Y C G M R B K
31784.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
31785.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
31786.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
31787
31788(B = Blue,<wbr/> K = Black)
31789</code></pre>
31790<p>Each bar should take up 1/<wbr/>8 of the sensor pixel array width.<wbr/>
31791When this is not possible,<wbr/> the bar size should be rounded
31792down to the nearest integer and the pattern can repeat
31793on the right side.<wbr/></p>
31794<p>Each bar's height must always take up the full sensor
31795pixel array height.<wbr/></p>
31796<p>Each pixel in this test pattern must be set to either
317970% intensity or 100% intensity.<wbr/></p></span>
31798                  </li>
31799                  <li>
31800                    <span class="entry_type_enum_name">COLOR_BARS_FADE_TO_GRAY (v3.2)</span>
31801                    <span class="entry_type_enum_notes"><p>The test pattern is similar to COLOR_<wbr/>BARS,<wbr/> except that
31802each bar should start at its specified color at the top,<wbr/>
31803and fade to gray at the bottom.<wbr/></p>
31804<p>Furthermore each bar is further subdivided into a left and
31805right half.<wbr/> The left half should have a smooth gradient,<wbr/>
31806and the right half should have a quantized gradient.<wbr/></p>
31807<p>In particular,<wbr/> the right half's should consist of blocks of the
31808same color for 1/<wbr/>16th active sensor pixel array width.<wbr/></p>
31809<p>The least significant bits in the quantized gradient should
31810be copied from the most significant bits of the smooth gradient.<wbr/></p>
31811<p>The height of each bar should always be a multiple of 128.<wbr/>
31812When this is not the case,<wbr/> the pattern should repeat at the bottom
31813of the image.<wbr/></p></span>
31814                  </li>
31815                  <li>
31816                    <span class="entry_type_enum_name">PN9 (v3.2)</span>
31817                    <span class="entry_type_enum_notes"><p>All pixel data is replaced by a pseudo-random sequence
31818generated from a PN9 512-bit sequence (typically implemented
31819in hardware with a linear feedback shift register).<wbr/></p>
31820<p>The generator should be reset at the beginning of each frame,<wbr/>
31821and thus each subsequent raw frame with this test pattern should
31822be exactly the same as the last.<wbr/></p></span>
31823                  </li>
31824                  <li>
31825                    <span class="entry_type_enum_name">BLACK (v3.6)</span>
31826                    <span class="entry_type_enum_hidden">[test]</span>
31827                    <span class="entry_type_enum_notes"><p>All pixel data is replaced by 0% intensity (black) values.<wbr/></p>
31828<p>This test pattern is identical to SOLID_<wbr/>COLOR with a value of <code>[0,<wbr/> 0,<wbr/> 0,<wbr/> 0]</code> for
31829<a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a>.<wbr/>  It is recommended that devices implement full
31830SOLID_<wbr/>COLOR support instead,<wbr/> but BLACK can be used to provide minimal support for a
31831test pattern suitable for privacy use cases.<wbr/></p></span>
31832                  </li>
31833                  <li>
31834                    <span class="entry_type_enum_name">CUSTOM1 (v3.2)</span>
31835                    <span class="entry_type_enum_value">256</span>
31836                    <span class="entry_type_enum_notes"><p>The first custom test pattern.<wbr/> All custom patterns that are
31837available only on this camera device are at least this numeric
31838value.<wbr/></p>
31839<p>All of the custom test patterns will be static
31840(that is the raw image must not vary from frame to frame).<wbr/></p></span>
31841                  </li>
31842                </ul>
31843
31844            </td> <!-- entry_type -->
31845
31846            <td class="entry_description">
31847              <p>When enabled,<wbr/> the sensor sends a test pattern instead of
31848doing a real exposure from the camera.<wbr/></p>
31849            </td>
31850
31851            <td class="entry_units">
31852            </td>
31853
31854            <td class="entry_range">
31855              <p><a href="#static_android.sensor.availableTestPatternModes">android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes</a></p>
31856            </td>
31857
31858            <td class="entry_hal_version">
31859              <p>3.<wbr/>2</p>
31860            </td>
31861
31862            <td class="entry_tags">
31863            </td>
31864
31865          </tr>
31866          <tr class="entries_header">
31867            <th class="th_details" colspan="6">Details</th>
31868          </tr>
31869          <tr class="entry_cont">
31870            <td class="entry_details" colspan="6">
31871              <p>When a test pattern is enabled,<wbr/> all manual sensor controls specified
31872by android.<wbr/>sensor.<wbr/>* will be ignored.<wbr/> All other controls should
31873work as normal.<wbr/></p>
31874<p>For example,<wbr/> if manual flash is enabled,<wbr/> flash firing should still
31875occur (and that the test pattern remain unmodified,<wbr/> since the flash
31876would not actually affect it).<wbr/></p>
31877<p>Defaults to OFF.<wbr/></p>
31878            </td>
31879          </tr>
31880
31881          <tr class="entries_header">
31882            <th class="th_details" colspan="6">HAL Implementation Details</th>
31883          </tr>
31884          <tr class="entry_cont">
31885            <td class="entry_details" colspan="6">
31886              <p>All test patterns are specified in the Bayer domain.<wbr/></p>
31887<p>The HAL may choose to substitute test patterns from the sensor
31888with test patterns from on-device memory.<wbr/> In that case,<wbr/> it should be
31889indistinguishable to the ISP whether the data came from the
31890sensor interconnect bus (such as CSI2) or memory.<wbr/></p>
31891<p>For privacy use cases,<wbr/> if the camera device:</p>
31892<ul>
31893<li>supports SOLID_<wbr/>COLOR or BLACK test patterns,<wbr/></li>
31894<li>is a logical multi-camera,<wbr/> and</li>
31895<li>lists testPatternMode as a physical request key,<wbr/></li>
31896</ul>
31897<p>Each physical camera must support the same SOLID_<wbr/>COLOR and/<wbr/>or BLACK test patterns
31898as the logical camera.<wbr/></p>
31899            </td>
31900          </tr>
31901
31902          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
31903           <!-- end of entry -->
31904
31905
31906          <tr class="entry" id="dynamic_android.sensor.rollingShutterSkew">
31907            <td class="entry_name
31908             " rowspan="5">
31909              android.<wbr/>sensor.<wbr/>rolling<wbr/>Shutter<wbr/>Skew
31910            </td>
31911            <td class="entry_type">
31912                <span class="entry_type_name">int64</span>
31913
31914              <span class="entry_type_visibility"> [public]</span>
31915
31916
31917              <span class="entry_type_hwlevel">[limited] </span>
31918
31919
31920
31921
31922            </td> <!-- entry_type -->
31923
31924            <td class="entry_description">
31925              <p>Duration between the start of exposure for the first row of the image sensor,<wbr/>
31926and the start of exposure for one past the last row of the image sensor.<wbr/></p>
31927            </td>
31928
31929            <td class="entry_units">
31930              Nanoseconds
31931            </td>
31932
31933            <td class="entry_range">
31934              <p>&gt;= 0 and &lt;
31935<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/></p>
31936            </td>
31937
31938            <td class="entry_hal_version">
31939              <p>3.<wbr/>2</p>
31940            </td>
31941
31942            <td class="entry_tags">
31943              <ul class="entry_tags">
31944                  <li><a href="#tag_V1">V1</a></li>
31945              </ul>
31946            </td>
31947
31948          </tr>
31949          <tr class="entries_header">
31950            <th class="th_details" colspan="6">Details</th>
31951          </tr>
31952          <tr class="entry_cont">
31953            <td class="entry_details" colspan="6">
31954              <p>This is the exposure time skew between the first and <code>(last+1)</code> row exposure start times.<wbr/> The
31955first row and the last row are the first and last rows inside of the
31956<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
31957<p>For typical camera sensors that use rolling shutters,<wbr/> this is also equivalent to the frame
31958readout time.<wbr/></p>
31959<p>If the image sensor is operating in a binned or cropped mode due to the current output
31960target resolutions,<wbr/> it's possible this skew is reported to be larger than the exposure
31961time,<wbr/> for example,<wbr/> since it is based on the full array even if a partial array is read
31962out.<wbr/> Be sure to scale the number to cover the section of the sensor actually being used
31963for the outputs you care about.<wbr/> So if your output covers N rows of the active array of
31964height H,<wbr/> scale this value by N/<wbr/>H to get the total skew for that viewport.<wbr/></p>
31965<p><em>Note:</em> Prior to Android 11,<wbr/> this field was described as measuring duration from
31966first to last row of the image sensor,<wbr/> which is not equal to the frame readout time for a
31967rolling shutter sensor.<wbr/> Implementations generally reported the latter value,<wbr/> so to resolve
31968the inconsistency,<wbr/> the description has been updated to range from (first,<wbr/> last+1) row
31969exposure start,<wbr/> instead.<wbr/></p>
31970            </td>
31971          </tr>
31972
31973          <tr class="entries_header">
31974            <th class="th_details" colspan="6">HAL Implementation Details</th>
31975          </tr>
31976          <tr class="entry_cont">
31977            <td class="entry_details" colspan="6">
31978              <p>The HAL must report <code>0</code> if the sensor is using global shutter,<wbr/> where all pixels begin
31979exposure at the same time.<wbr/></p>
31980            </td>
31981          </tr>
31982
31983          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
31984           <!-- end of entry -->
31985
31986
31987          <tr class="entry" id="dynamic_android.sensor.dynamicBlackLevel">
31988            <td class="entry_name
31989             " rowspan="5">
31990              android.<wbr/>sensor.<wbr/>dynamic<wbr/>Black<wbr/>Level
31991            </td>
31992            <td class="entry_type">
31993                <span class="entry_type_name">float</span>
31994                <span class="entry_type_container">x</span>
31995
31996                <span class="entry_type_array">
31997                  4
31998                </span>
31999              <span class="entry_type_visibility"> [public]</span>
32000
32001
32002
32003
32004                <div class="entry_type_notes">2x2 raw count block</div>
32005
32006
32007            </td> <!-- entry_type -->
32008
32009            <td class="entry_description">
32010              <p>A per-frame dynamic black level offset for each of the color filter
32011arrangement (CFA) mosaic channels.<wbr/></p>
32012            </td>
32013
32014            <td class="entry_units">
32015            </td>
32016
32017            <td class="entry_range">
32018              <p>&gt;= 0 for each.<wbr/></p>
32019            </td>
32020
32021            <td class="entry_hal_version">
32022              <p>3.<wbr/>2</p>
32023            </td>
32024
32025            <td class="entry_tags">
32026              <ul class="entry_tags">
32027                  <li><a href="#tag_RAW">RAW</a></li>
32028              </ul>
32029            </td>
32030
32031          </tr>
32032          <tr class="entries_header">
32033            <th class="th_details" colspan="6">Details</th>
32034          </tr>
32035          <tr class="entry_cont">
32036            <td class="entry_details" colspan="6">
32037              <p>Camera sensor black levels may vary dramatically for different
32038capture settings (e.<wbr/>g.<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>).<wbr/> The fixed black
32039level reported by <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> may be too
32040inaccurate to represent the actual value on a per-frame basis.<wbr/> The
32041camera device internal pipeline relies on reliable black level values
32042to process the raw images appropriately.<wbr/> To get the best image
32043quality,<wbr/> the camera device may choose to estimate the per frame black
32044level values either based on optically shielded black regions
32045(<a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a>) or its internal model.<wbr/></p>
32046<p>This key reports the camera device estimated per-frame zero light
32047value for each of the CFA mosaic channels in the camera sensor.<wbr/> The
32048<a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> may only represent a coarse
32049approximation of the actual black level values.<wbr/> This value is the
32050black level used in camera device internal image processing pipeline
32051and generally more accurate than the fixed black level values.<wbr/>
32052However,<wbr/> since they are estimated values by the camera device,<wbr/> they
32053may not be as accurate as the black level values calculated from the
32054optical black pixels reported by <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a>.<wbr/></p>
32055<p>The values are given in the same order as channels listed for the CFA
32056layout 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
32057nth value given corresponds to the black level offset for the nth
32058color channel listed in the CFA.<wbr/></p>
32059<p>For a MONOCHROME camera,<wbr/> all of the 2x2 channels must have the same values.<wbr/></p>
32060<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
32061camera device advertises this key via <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureResultKeys">CameraCharacteristics#getAvailableCaptureResultKeys</a>.<wbr/></p>
32062            </td>
32063          </tr>
32064
32065          <tr class="entries_header">
32066            <th class="th_details" colspan="6">HAL Implementation Details</th>
32067          </tr>
32068          <tr class="entry_cont">
32069            <td class="entry_details" colspan="6">
32070              <p>The values are given in row-column scan order,<wbr/> with the first value
32071corresponding to the element of the CFA in row=0,<wbr/> column=0.<wbr/></p>
32072            </td>
32073          </tr>
32074
32075          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
32076           <!-- end of entry -->
32077
32078
32079          <tr class="entry" id="dynamic_android.sensor.dynamicWhiteLevel">
32080            <td class="entry_name
32081             " rowspan="5">
32082              android.<wbr/>sensor.<wbr/>dynamic<wbr/>White<wbr/>Level
32083            </td>
32084            <td class="entry_type">
32085                <span class="entry_type_name">int32</span>
32086
32087              <span class="entry_type_visibility"> [public]</span>
32088
32089
32090
32091
32092
32093
32094            </td> <!-- entry_type -->
32095
32096            <td class="entry_description">
32097              <p>Maximum raw value output by sensor for this frame.<wbr/></p>
32098            </td>
32099
32100            <td class="entry_units">
32101            </td>
32102
32103            <td class="entry_range">
32104              <p>&gt;= 0</p>
32105            </td>
32106
32107            <td class="entry_hal_version">
32108              <p>3.<wbr/>2</p>
32109            </td>
32110
32111            <td class="entry_tags">
32112              <ul class="entry_tags">
32113                  <li><a href="#tag_RAW">RAW</a></li>
32114              </ul>
32115            </td>
32116
32117          </tr>
32118          <tr class="entries_header">
32119            <th class="th_details" colspan="6">Details</th>
32120          </tr>
32121          <tr class="entry_cont">
32122            <td class="entry_details" colspan="6">
32123              <p>Since the <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> may change for different
32124capture settings (e.<wbr/>g.,<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>),<wbr/> the white
32125level will change accordingly.<wbr/> This key is similar to
32126<a href="#static_android.sensor.info.whiteLevel">android.<wbr/>sensor.<wbr/>info.<wbr/>white<wbr/>Level</a>,<wbr/> but specifies the camera device
32127estimated white level for each frame.<wbr/></p>
32128<p>This key will be available if <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a> is
32129available or the camera device advertises this key via
32130<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a>.<wbr/></p>
32131            </td>
32132          </tr>
32133
32134          <tr class="entries_header">
32135            <th class="th_details" colspan="6">HAL Implementation Details</th>
32136          </tr>
32137          <tr class="entry_cont">
32138            <td class="entry_details" colspan="6">
32139              <p>The full bit depth of the sensor must be available in the raw data,<wbr/>
32140so the value for linear sensors should not be significantly lower
32141than maximum raw value supported,<wbr/> i.<wbr/>e.<wbr/> 2^(sensor bits per pixel).<wbr/></p>
32142            </td>
32143          </tr>
32144
32145          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
32146           <!-- end of entry -->
32147
32148
32149          <tr class="entry" id="dynamic_android.sensor.pixelMode">
32150            <td class="entry_name
32151             " rowspan="3">
32152              android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode
32153            </td>
32154            <td class="entry_type">
32155                <span class="entry_type_name entry_type_name_enum">byte</span>
32156
32157              <span class="entry_type_visibility"> [public]</span>
32158
32159
32160
32161
32162
32163                <ul class="entry_type_enum">
32164                  <li>
32165                    <span class="entry_type_enum_name">DEFAULT (v3.6)</span>
32166                    <span class="entry_type_enum_notes"><p>This is the default sensor pixel mode.<wbr/></p></span>
32167                  </li>
32168                  <li>
32169                    <span class="entry_type_enum_name">MAXIMUM_RESOLUTION (v3.6)</span>
32170                    <span class="entry_type_enum_notes"><p>In this mode,<wbr/> sensors typically do not bin pixels,<wbr/> as a result can offer larger
32171image sizes.<wbr/></p></span>
32172                  </li>
32173                </ul>
32174
32175            </td> <!-- entry_type -->
32176
32177            <td class="entry_description">
32178              <p>Switches sensor pixel mode between maximum resolution mode and default mode.<wbr/></p>
32179            </td>
32180
32181            <td class="entry_units">
32182            </td>
32183
32184            <td class="entry_range">
32185            </td>
32186
32187            <td class="entry_hal_version">
32188              <p>3.<wbr/>6</p>
32189            </td>
32190
32191            <td class="entry_tags">
32192            </td>
32193
32194          </tr>
32195          <tr class="entries_header">
32196            <th class="th_details" colspan="6">Details</th>
32197          </tr>
32198          <tr class="entry_cont">
32199            <td class="entry_details" colspan="6">
32200              <p>This key controls whether the camera sensor operates in
32201<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>
32202mode or not.<wbr/> By default,<wbr/> all camera devices operate in
32203<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_DEFAULT">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>DEFAULT</a> mode.<wbr/>
32204When operating in
32205<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_DEFAULT">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>DEFAULT</a> mode,<wbr/> sensors
32206would typically perform pixel binning in order to improve low light
32207performance,<wbr/> noise reduction etc.<wbr/> However,<wbr/> in
32208<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>
32209mode,<wbr/> sensors typically operate in unbinned mode allowing for a larger image size.<wbr/>
32210The stream configurations supported in
32211<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>
32212mode are also different from those of
32213<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_DEFAULT">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>DEFAULT</a> mode.<wbr/>
32214They can be queried through
32215<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#get">CameraCharacteristics#get</a> with
32216<a href="https://developer.android.com/reference/CameraCharacteristics.html#SCALER_STREAM_CONFIGURATION_MAP_MAXIMUM_RESOLUTION">Camera<wbr/>Characteristics#SCALER_<wbr/>STREAM_<wbr/>CONFIGURATION_<wbr/>MAP_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/>
32217Unless reported by both
32218<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html">StreamConfigurationMap</a>s,<wbr/> the outputs from
32219<code><a href="#static_android.scaler.streamConfigurationMapMaximumResolution">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map<wbr/>Maximum<wbr/>Resolution</a></code> and
32220<code><a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a></code>
32221must not be mixed in the same CaptureRequest.<wbr/> In other words,<wbr/> these outputs are
32222exclusive to each other.<wbr/>
32223This key does not need to be set for reprocess requests.<wbr/>
32224This key will be be present on devices supporting the
32225<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR">Camera<wbr/>Metadata#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>ULTRA_<wbr/>HIGH_<wbr/>RESOLUTION_<wbr/>SENSOR</a>
32226capability.<wbr/> It may also be present on devices which do not support the aforementioned
32227capability.<wbr/> In that case:</p>
32228<ul>
32229<li>
32230<p>The mandatory stream combinations listed in
32231  <a href="#static_android.scaler.mandatoryMaximumResolutionStreamCombinations">android.<wbr/>scaler.<wbr/>mandatory<wbr/>Maximum<wbr/>Resolution<wbr/>Stream<wbr/>Combinations</a>  would not apply.<wbr/></p>
32232</li>
32233<li>
32234<p>The bayer pattern of {@code RAW} streams when
32235  <a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>
32236  is selected will be the one listed in <a href="#static_android.sensor.info.binningFactor">android.<wbr/>sensor.<wbr/>info.<wbr/>binning<wbr/>Factor</a>.<wbr/></p>
32237</li>
32238<li>
32239<p>The following keys will always be present:</p>
32240<ul>
32241<li><a href="#static_android.scaler.streamConfigurationMapMaximumResolution">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map<wbr/>Maximum<wbr/>Resolution</a></li>
32242<li><a href="#static_android.sensor.info.activeArraySizeMaximumResolution">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution</a></li>
32243<li><a href="#static_android.sensor.info.pixelArraySizeMaximumResolution">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution</a></li>
32244<li><a href="#static_android.sensor.info.preCorrectionActiveArraySizeMaximumResolution">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution</a></li>
32245</ul>
32246</li>
32247</ul>
32248            </td>
32249          </tr>
32250
32251
32252          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
32253           <!-- end of entry -->
32254
32255
32256          <tr class="entry" id="dynamic_android.sensor.rawBinningFactorUsed">
32257            <td class="entry_name
32258             " rowspan="3">
32259              android.<wbr/>sensor.<wbr/>raw<wbr/>Binning<wbr/>Factor<wbr/>Used
32260            </td>
32261            <td class="entry_type">
32262                <span class="entry_type_name entry_type_name_enum">byte</span>
32263
32264              <span class="entry_type_visibility"> [public as boolean]</span>
32265
32266
32267
32268
32269
32270                <ul class="entry_type_enum">
32271                  <li>
32272                    <span class="entry_type_enum_name">TRUE (v3.6)</span>
32273                    <span class="entry_type_enum_notes"><p>The <code>RAW</code> targets in this capture have <a href="#static_android.sensor.info.binningFactor">android.<wbr/>sensor.<wbr/>info.<wbr/>binning<wbr/>Factor</a> as the
32274bayer pattern.<wbr/></p></span>
32275                  </li>
32276                  <li>
32277                    <span class="entry_type_enum_name">FALSE (v3.6)</span>
32278                    <span class="entry_type_enum_notes"><p>The <code>RAW</code> targets have a regular bayer pattern in this capture.<wbr/></p></span>
32279                  </li>
32280                </ul>
32281
32282            </td> <!-- entry_type -->
32283
32284            <td class="entry_description">
32285              <p>Whether <code>RAW</code> images requested have their bayer pattern as described by
32286<a href="#static_android.sensor.info.binningFactor">android.<wbr/>sensor.<wbr/>info.<wbr/>binning<wbr/>Factor</a>.<wbr/></p>
32287            </td>
32288
32289            <td class="entry_units">
32290            </td>
32291
32292            <td class="entry_range">
32293            </td>
32294
32295            <td class="entry_hal_version">
32296              <p>3.<wbr/>6</p>
32297            </td>
32298
32299            <td class="entry_tags">
32300            </td>
32301
32302          </tr>
32303          <tr class="entries_header">
32304            <th class="th_details" colspan="6">Details</th>
32305          </tr>
32306          <tr class="entry_cont">
32307            <td class="entry_details" colspan="6">
32308              <p>This key will only be present in devices advertising the
32309<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR">Camera<wbr/>Metadata#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>ULTRA_<wbr/>HIGH_<wbr/>RESOLUTION_<wbr/>SENSOR</a>
32310capability which also advertise <code>REMOSAIC_<wbr/>REPROCESSING</code> capability.<wbr/> On all other devices
32311RAW targets will have a regular bayer pattern.<wbr/></p>
32312            </td>
32313          </tr>
32314
32315
32316          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
32317           <!-- end of entry -->
32318
32319
32320
32321      <!-- end of kind -->
32322      </tbody>
32323
32324  <!-- end of section -->
32325  <tr><td colspan="7" id="section_shading" class="section">shading</td></tr>
32326
32327
32328      <tr><td colspan="7" class="kind">controls</td></tr>
32329
32330      <thead class="entries_header">
32331        <tr>
32332          <th class="th_name">Property Name</th>
32333          <th class="th_type">Type</th>
32334          <th class="th_description">Description</th>
32335          <th class="th_units">Units</th>
32336          <th class="th_range">Range</th>
32337          <th class="th_hal_version">Initial HIDL HAL version</th>
32338          <th class="th_tags">Tags</th>
32339        </tr>
32340      </thead>
32341
32342      <tbody>
32343
32344
32345
32346
32347
32348
32349
32350
32351
32352
32353          <tr class="entry" id="controls_android.shading.mode">
32354            <td class="entry_name
32355             " rowspan="3">
32356              android.<wbr/>shading.<wbr/>mode
32357            </td>
32358            <td class="entry_type">
32359                <span class="entry_type_name entry_type_name_enum">byte</span>
32360
32361              <span class="entry_type_visibility"> [public]</span>
32362
32363
32364              <span class="entry_type_hwlevel">[full] </span>
32365
32366
32367
32368                <ul class="entry_type_enum">
32369                  <li>
32370                    <span class="entry_type_enum_name">OFF (v3.2)</span>
32371                    <span class="entry_type_enum_notes"><p>No lens shading correction is applied.<wbr/></p></span>
32372                  </li>
32373                  <li>
32374                    <span class="entry_type_enum_name">FAST (v3.2)</span>
32375                    <span class="entry_type_enum_notes"><p>Apply lens shading corrections,<wbr/> without slowing
32376frame rate relative to sensor raw output</p></span>
32377                  </li>
32378                  <li>
32379                    <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
32380                    <span class="entry_type_enum_notes"><p>Apply high-quality lens shading correction,<wbr/> at the
32381cost of possibly reduced frame rate.<wbr/></p></span>
32382                  </li>
32383                </ul>
32384
32385            </td> <!-- entry_type -->
32386
32387            <td class="entry_description">
32388              <p>Quality of lens shading correction applied
32389to the image data.<wbr/></p>
32390            </td>
32391
32392            <td class="entry_units">
32393            </td>
32394
32395            <td class="entry_range">
32396              <p><a href="#static_android.shading.availableModes">android.<wbr/>shading.<wbr/>available<wbr/>Modes</a></p>
32397            </td>
32398
32399            <td class="entry_hal_version">
32400              <p>3.<wbr/>2</p>
32401            </td>
32402
32403            <td class="entry_tags">
32404            </td>
32405
32406          </tr>
32407          <tr class="entries_header">
32408            <th class="th_details" colspan="6">Details</th>
32409          </tr>
32410          <tr class="entry_cont">
32411            <td class="entry_details" colspan="6">
32412              <p>When set to OFF mode,<wbr/> no lens shading correction will be applied by the
32413camera device,<wbr/> and an identity lens shading map data will be provided
32414if <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
32415shading map with size of <code>[ 4,<wbr/> 3 ]</code>,<wbr/>
32416the 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
32417map shown below:</p>
32418<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/>
32419 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/>
32420 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/>
32421 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/>
32422 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/>
32423 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 ]
32424</code></pre>
32425<p>When set to other modes,<wbr/> lens shading correction will be applied by the camera
32426device.<wbr/> Applications can request lens shading map data by setting
32427<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
32428shading 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
32429data will be the one applied by the camera device for this capture request.<wbr/></p>
32430<p>The shading map data may depend on the auto-exposure (AE) and AWB statistics,<wbr/> therefore
32431the reliability of the map data may be affected by the AE and AWB algorithms.<wbr/> When AE and
32432AWB 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>
32433OFF),<wbr/> to get best results,<wbr/> it is recommended that the applications wait for the AE and AWB
32434to be converged before using the returned shading map data.<wbr/></p>
32435            </td>
32436          </tr>
32437
32438
32439          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
32440           <!-- end of entry -->
32441
32442
32443          <tr class="entry" id="controls_android.shading.strength">
32444            <td class="entry_name
32445             " rowspan="1">
32446              android.<wbr/>shading.<wbr/>strength
32447            </td>
32448            <td class="entry_type">
32449                <span class="entry_type_name">byte</span>
32450
32451              <span class="entry_type_visibility"> [system]</span>
32452
32453
32454
32455
32456
32457
32458            </td> <!-- entry_type -->
32459
32460            <td class="entry_description">
32461              <p>Control the amount of shading correction
32462applied to the images</p>
32463            </td>
32464
32465            <td class="entry_units">
32466              unitless: 1-10; 10 is full shading
32467          compensation
32468            </td>
32469
32470            <td class="entry_range">
32471            </td>
32472
32473            <td class="entry_hal_version">
32474              <p>3.<wbr/>2</p>
32475            </td>
32476
32477            <td class="entry_tags">
32478              <ul class="entry_tags">
32479                  <li><a href="#tag_FUTURE">FUTURE</a></li>
32480              </ul>
32481            </td>
32482
32483          </tr>
32484
32485
32486          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
32487           <!-- end of entry -->
32488
32489
32490
32491      <!-- end of kind -->
32492      </tbody>
32493      <tr><td colspan="7" class="kind">dynamic</td></tr>
32494
32495      <thead class="entries_header">
32496        <tr>
32497          <th class="th_name">Property Name</th>
32498          <th class="th_type">Type</th>
32499          <th class="th_description">Description</th>
32500          <th class="th_units">Units</th>
32501          <th class="th_range">Range</th>
32502          <th class="th_hal_version">Initial HIDL HAL version</th>
32503          <th class="th_tags">Tags</th>
32504        </tr>
32505      </thead>
32506
32507      <tbody>
32508
32509
32510
32511
32512
32513
32514
32515
32516
32517
32518          <tr class="entry" id="dynamic_android.shading.mode">
32519            <td class="entry_name
32520             " rowspan="3">
32521              android.<wbr/>shading.<wbr/>mode
32522            </td>
32523            <td class="entry_type">
32524                <span class="entry_type_name entry_type_name_enum">byte</span>
32525
32526              <span class="entry_type_visibility"> [public]</span>
32527
32528
32529              <span class="entry_type_hwlevel">[full] </span>
32530
32531
32532
32533                <ul class="entry_type_enum">
32534                  <li>
32535                    <span class="entry_type_enum_name">OFF (v3.2)</span>
32536                    <span class="entry_type_enum_notes"><p>No lens shading correction is applied.<wbr/></p></span>
32537                  </li>
32538                  <li>
32539                    <span class="entry_type_enum_name">FAST (v3.2)</span>
32540                    <span class="entry_type_enum_notes"><p>Apply lens shading corrections,<wbr/> without slowing
32541frame rate relative to sensor raw output</p></span>
32542                  </li>
32543                  <li>
32544                    <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
32545                    <span class="entry_type_enum_notes"><p>Apply high-quality lens shading correction,<wbr/> at the
32546cost of possibly reduced frame rate.<wbr/></p></span>
32547                  </li>
32548                </ul>
32549
32550            </td> <!-- entry_type -->
32551
32552            <td class="entry_description">
32553              <p>Quality of lens shading correction applied
32554to the image data.<wbr/></p>
32555            </td>
32556
32557            <td class="entry_units">
32558            </td>
32559
32560            <td class="entry_range">
32561              <p><a href="#static_android.shading.availableModes">android.<wbr/>shading.<wbr/>available<wbr/>Modes</a></p>
32562            </td>
32563
32564            <td class="entry_hal_version">
32565              <p>3.<wbr/>2</p>
32566            </td>
32567
32568            <td class="entry_tags">
32569            </td>
32570
32571          </tr>
32572          <tr class="entries_header">
32573            <th class="th_details" colspan="6">Details</th>
32574          </tr>
32575          <tr class="entry_cont">
32576            <td class="entry_details" colspan="6">
32577              <p>When set to OFF mode,<wbr/> no lens shading correction will be applied by the
32578camera device,<wbr/> and an identity lens shading map data will be provided
32579if <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
32580shading map with size of <code>[ 4,<wbr/> 3 ]</code>,<wbr/>
32581the 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
32582map shown below:</p>
32583<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/>
32584 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/>
32585 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/>
32586 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/>
32587 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/>
32588 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 ]
32589</code></pre>
32590<p>When set to other modes,<wbr/> lens shading correction will be applied by the camera
32591device.<wbr/> Applications can request lens shading map data by setting
32592<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
32593shading 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
32594data will be the one applied by the camera device for this capture request.<wbr/></p>
32595<p>The shading map data may depend on the auto-exposure (AE) and AWB statistics,<wbr/> therefore
32596the reliability of the map data may be affected by the AE and AWB algorithms.<wbr/> When AE and
32597AWB 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>
32598OFF),<wbr/> to get best results,<wbr/> it is recommended that the applications wait for the AE and AWB
32599to be converged before using the returned shading map data.<wbr/></p>
32600            </td>
32601          </tr>
32602
32603
32604          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
32605           <!-- end of entry -->
32606
32607
32608
32609      <!-- end of kind -->
32610      </tbody>
32611      <tr><td colspan="7" class="kind">static</td></tr>
32612
32613      <thead class="entries_header">
32614        <tr>
32615          <th class="th_name">Property Name</th>
32616          <th class="th_type">Type</th>
32617          <th class="th_description">Description</th>
32618          <th class="th_units">Units</th>
32619          <th class="th_range">Range</th>
32620          <th class="th_hal_version">Initial HIDL HAL version</th>
32621          <th class="th_tags">Tags</th>
32622        </tr>
32623      </thead>
32624
32625      <tbody>
32626
32627
32628
32629
32630
32631
32632
32633
32634
32635
32636          <tr class="entry" id="static_android.shading.availableModes">
32637            <td class="entry_name
32638             " rowspan="5">
32639              android.<wbr/>shading.<wbr/>available<wbr/>Modes
32640            </td>
32641            <td class="entry_type">
32642                <span class="entry_type_name">byte</span>
32643                <span class="entry_type_container">x</span>
32644
32645                <span class="entry_type_array">
32646                  n
32647                </span>
32648              <span class="entry_type_visibility"> [public as enumList]</span>
32649
32650
32651              <span class="entry_type_hwlevel">[legacy] </span>
32652
32653
32654                <div class="entry_type_notes">List of enums (android.<wbr/>shading.<wbr/>mode).<wbr/></div>
32655
32656
32657            </td> <!-- entry_type -->
32658
32659            <td class="entry_description">
32660              <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>
32661            </td>
32662
32663            <td class="entry_units">
32664            </td>
32665
32666            <td class="entry_range">
32667              <p>Any value listed in <a href="#controls_android.shading.mode">android.<wbr/>shading.<wbr/>mode</a></p>
32668            </td>
32669
32670            <td class="entry_hal_version">
32671              <p>3.<wbr/>2</p>
32672            </td>
32673
32674            <td class="entry_tags">
32675            </td>
32676
32677          </tr>
32678          <tr class="entries_header">
32679            <th class="th_details" colspan="6">Details</th>
32680          </tr>
32681          <tr class="entry_cont">
32682            <td class="entry_details" colspan="6">
32683              <p>This list contains lens shading modes that can be set for the camera device.<wbr/>
32684Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always
32685list OFF and FAST mode.<wbr/> This includes all FULL level devices.<wbr/>
32686LEGACY devices will always only support FAST mode.<wbr/></p>
32687            </td>
32688          </tr>
32689
32690          <tr class="entries_header">
32691            <th class="th_details" colspan="6">HAL Implementation Details</th>
32692          </tr>
32693          <tr class="entry_cont">
32694            <td class="entry_details" colspan="6">
32695              <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if lens shading correction control is
32696available on the camera device,<wbr/> but the underlying implementation can be the same for
32697both modes.<wbr/> That is,<wbr/> if the highest quality implementation on the camera device does not
32698slow down capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
32699            </td>
32700          </tr>
32701
32702          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
32703           <!-- end of entry -->
32704
32705
32706
32707      <!-- end of kind -->
32708      </tbody>
32709
32710  <!-- end of section -->
32711  <tr><td colspan="7" id="section_statistics" class="section">statistics</td></tr>
32712
32713
32714      <tr><td colspan="7" class="kind">controls</td></tr>
32715
32716      <thead class="entries_header">
32717        <tr>
32718          <th class="th_name">Property Name</th>
32719          <th class="th_type">Type</th>
32720          <th class="th_description">Description</th>
32721          <th class="th_units">Units</th>
32722          <th class="th_range">Range</th>
32723          <th class="th_hal_version">Initial HIDL HAL version</th>
32724          <th class="th_tags">Tags</th>
32725        </tr>
32726      </thead>
32727
32728      <tbody>
32729
32730
32731
32732
32733
32734
32735
32736
32737
32738
32739          <tr class="entry" id="controls_android.statistics.faceDetectMode">
32740            <td class="entry_name
32741             " rowspan="5">
32742              android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode
32743            </td>
32744            <td class="entry_type">
32745                <span class="entry_type_name entry_type_name_enum">byte</span>
32746
32747              <span class="entry_type_visibility"> [public]</span>
32748
32749
32750              <span class="entry_type_hwlevel">[legacy] </span>
32751
32752
32753
32754                <ul class="entry_type_enum">
32755                  <li>
32756                    <span class="entry_type_enum_name">OFF (v3.2)</span>
32757                    <span class="entry_type_enum_notes"><p>Do not include face detection statistics in capture
32758results.<wbr/></p></span>
32759                  </li>
32760                  <li>
32761                    <span class="entry_type_enum_name">SIMPLE (v3.2)</span>
32762                    <span class="entry_type_enum_optional">[optional]</span>
32763                    <span class="entry_type_enum_notes"><p>Return face rectangle and confidence values only.<wbr/></p></span>
32764                  </li>
32765                  <li>
32766                    <span class="entry_type_enum_name">FULL (v3.2)</span>
32767                    <span class="entry_type_enum_optional">[optional]</span>
32768                    <span class="entry_type_enum_notes"><p>Return all face
32769metadata.<wbr/></p>
32770<p>In this mode,<wbr/> face rectangles,<wbr/> scores,<wbr/> landmarks,<wbr/> and face IDs are all valid.<wbr/></p></span>
32771                  </li>
32772                </ul>
32773
32774            </td> <!-- entry_type -->
32775
32776            <td class="entry_description">
32777              <p>Operating mode for the face detector
32778unit.<wbr/></p>
32779            </td>
32780
32781            <td class="entry_units">
32782            </td>
32783
32784            <td class="entry_range">
32785              <p><a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a></p>
32786            </td>
32787
32788            <td class="entry_hal_version">
32789              <p>3.<wbr/>2</p>
32790            </td>
32791
32792            <td class="entry_tags">
32793              <ul class="entry_tags">
32794                  <li><a href="#tag_BC">BC</a></li>
32795              </ul>
32796            </td>
32797
32798          </tr>
32799          <tr class="entries_header">
32800            <th class="th_details" colspan="6">Details</th>
32801          </tr>
32802          <tr class="entry_cont">
32803            <td class="entry_details" colspan="6">
32804              <p>Whether face detection is enabled,<wbr/> and whether it
32805should output just the basic fields or the full set of
32806fields.<wbr/></p>
32807            </td>
32808          </tr>
32809
32810          <tr class="entries_header">
32811            <th class="th_details" colspan="6">HAL Implementation Details</th>
32812          </tr>
32813          <tr class="entry_cont">
32814            <td class="entry_details" colspan="6">
32815              <p>SIMPLE mode must fill in <a href="#dynamic_android.statistics.faceRectangles">android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles</a> and
32816<a href="#dynamic_android.statistics.faceScores">android.<wbr/>statistics.<wbr/>face<wbr/>Scores</a>.<wbr/>
32817FULL mode must also fill in <a href="#dynamic_android.statistics.faceIds">android.<wbr/>statistics.<wbr/>face<wbr/>Ids</a>,<wbr/> and
32818<a href="#dynamic_android.statistics.faceLandmarks">android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks</a>.<wbr/></p>
32819            </td>
32820          </tr>
32821
32822          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
32823           <!-- end of entry -->
32824
32825
32826          <tr class="entry" id="controls_android.statistics.histogramMode">
32827            <td class="entry_name
32828             " rowspan="1">
32829              android.<wbr/>statistics.<wbr/>histogram<wbr/>Mode
32830            </td>
32831            <td class="entry_type">
32832                <span class="entry_type_name entry_type_name_enum">byte</span>
32833
32834              <span class="entry_type_visibility"> [system as boolean]</span>
32835
32836
32837
32838
32839
32840                <ul class="entry_type_enum">
32841                  <li>
32842                    <span class="entry_type_enum_name">OFF (v3.2)</span>
32843                  </li>
32844                  <li>
32845                    <span class="entry_type_enum_name">ON (v3.2)</span>
32846                  </li>
32847                </ul>
32848
32849            </td> <!-- entry_type -->
32850
32851            <td class="entry_description">
32852              <p>Operating mode for histogram
32853generation</p>
32854            </td>
32855
32856            <td class="entry_units">
32857            </td>
32858
32859            <td class="entry_range">
32860            </td>
32861
32862            <td class="entry_hal_version">
32863              <p>3.<wbr/>2</p>
32864            </td>
32865
32866            <td class="entry_tags">
32867              <ul class="entry_tags">
32868                  <li><a href="#tag_FUTURE">FUTURE</a></li>
32869              </ul>
32870            </td>
32871
32872          </tr>
32873
32874
32875          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
32876           <!-- end of entry -->
32877
32878
32879          <tr class="entry" id="controls_android.statistics.sharpnessMapMode">
32880            <td class="entry_name
32881             " rowspan="1">
32882              android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map<wbr/>Mode
32883            </td>
32884            <td class="entry_type">
32885                <span class="entry_type_name entry_type_name_enum">byte</span>
32886
32887              <span class="entry_type_visibility"> [system as boolean]</span>
32888
32889
32890
32891
32892
32893                <ul class="entry_type_enum">
32894                  <li>
32895                    <span class="entry_type_enum_name">OFF (v3.2)</span>
32896                  </li>
32897                  <li>
32898                    <span class="entry_type_enum_name">ON (v3.2)</span>
32899                  </li>
32900                </ul>
32901
32902            </td> <!-- entry_type -->
32903
32904            <td class="entry_description">
32905              <p>Operating mode for sharpness map
32906generation</p>
32907            </td>
32908
32909            <td class="entry_units">
32910            </td>
32911
32912            <td class="entry_range">
32913            </td>
32914
32915            <td class="entry_hal_version">
32916              <p>3.<wbr/>2</p>
32917            </td>
32918
32919            <td class="entry_tags">
32920              <ul class="entry_tags">
32921                  <li><a href="#tag_FUTURE">FUTURE</a></li>
32922              </ul>
32923            </td>
32924
32925          </tr>
32926
32927
32928          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
32929           <!-- end of entry -->
32930
32931
32932          <tr class="entry" id="controls_android.statistics.hotPixelMapMode">
32933            <td class="entry_name
32934             " rowspan="3">
32935              android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode
32936            </td>
32937            <td class="entry_type">
32938                <span class="entry_type_name entry_type_name_enum">byte</span>
32939
32940              <span class="entry_type_visibility"> [public as boolean]</span>
32941
32942
32943
32944
32945
32946                <ul class="entry_type_enum">
32947                  <li>
32948                    <span class="entry_type_enum_name">OFF (v3.2)</span>
32949                    <span class="entry_type_enum_notes"><p>Hot pixel map production is disabled.<wbr/></p></span>
32950                  </li>
32951                  <li>
32952                    <span class="entry_type_enum_name">ON (v3.2)</span>
32953                    <span class="entry_type_enum_notes"><p>Hot pixel map production is enabled.<wbr/></p></span>
32954                  </li>
32955                </ul>
32956
32957            </td> <!-- entry_type -->
32958
32959            <td class="entry_description">
32960              <p>Operating mode for hot pixel map generation.<wbr/></p>
32961            </td>
32962
32963            <td class="entry_units">
32964            </td>
32965
32966            <td class="entry_range">
32967              <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>
32968            </td>
32969
32970            <td class="entry_hal_version">
32971              <p>3.<wbr/>2</p>
32972            </td>
32973
32974            <td class="entry_tags">
32975              <ul class="entry_tags">
32976                  <li><a href="#tag_V1">V1</a></li>
32977                  <li><a href="#tag_RAW">RAW</a></li>
32978              </ul>
32979            </td>
32980
32981          </tr>
32982          <tr class="entries_header">
32983            <th class="th_details" colspan="6">Details</th>
32984          </tr>
32985          <tr class="entry_cont">
32986            <td class="entry_details" colspan="6">
32987              <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/>
32988If set to <code>false</code>,<wbr/> no hot pixel map will be returned.<wbr/></p>
32989            </td>
32990          </tr>
32991
32992
32993          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
32994           <!-- end of entry -->
32995
32996
32997          <tr class="entry" id="controls_android.statistics.lensShadingMapMode">
32998            <td class="entry_name
32999             " rowspan="3">
33000              android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode
33001            </td>
33002            <td class="entry_type">
33003                <span class="entry_type_name entry_type_name_enum">byte</span>
33004
33005              <span class="entry_type_visibility"> [public]</span>
33006
33007
33008              <span class="entry_type_hwlevel">[full] </span>
33009
33010
33011
33012                <ul class="entry_type_enum">
33013                  <li>
33014                    <span class="entry_type_enum_name">OFF (v3.2)</span>
33015                    <span class="entry_type_enum_notes"><p>Do not include a lens shading map in the capture result.<wbr/></p></span>
33016                  </li>
33017                  <li>
33018                    <span class="entry_type_enum_name">ON (v3.2)</span>
33019                    <span class="entry_type_enum_notes"><p>Include a lens shading map in the capture result.<wbr/></p></span>
33020                  </li>
33021                </ul>
33022
33023            </td> <!-- entry_type -->
33024
33025            <td class="entry_description">
33026              <p>Whether the camera device will output the lens
33027shading map in output result metadata.<wbr/></p>
33028            </td>
33029
33030            <td class="entry_units">
33031            </td>
33032
33033            <td class="entry_range">
33034              <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>
33035            </td>
33036
33037            <td class="entry_hal_version">
33038              <p>3.<wbr/>2</p>
33039            </td>
33040
33041            <td class="entry_tags">
33042              <ul class="entry_tags">
33043                  <li><a href="#tag_RAW">RAW</a></li>
33044              </ul>
33045            </td>
33046
33047          </tr>
33048          <tr class="entries_header">
33049            <th class="th_details" colspan="6">Details</th>
33050          </tr>
33051          <tr class="entry_cont">
33052            <td class="entry_details" colspan="6">
33053              <p>When set to ON,<wbr/>
33054<a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> will be provided in
33055the output result metadata.<wbr/></p>
33056<p>ON is always supported on devices with the RAW capability.<wbr/></p>
33057            </td>
33058          </tr>
33059
33060
33061          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
33062           <!-- end of entry -->
33063
33064
33065          <tr class="entry" id="controls_android.statistics.oisDataMode">
33066            <td class="entry_name
33067             " rowspan="3">
33068              android.<wbr/>statistics.<wbr/>ois<wbr/>Data<wbr/>Mode
33069            </td>
33070            <td class="entry_type">
33071                <span class="entry_type_name entry_type_name_enum">byte</span>
33072
33073              <span class="entry_type_visibility"> [public]</span>
33074
33075
33076
33077
33078
33079                <ul class="entry_type_enum">
33080                  <li>
33081                    <span class="entry_type_enum_name">OFF (v3.3)</span>
33082                    <span class="entry_type_enum_notes"><p>Do not include OIS data in the capture result.<wbr/></p></span>
33083                  </li>
33084                  <li>
33085                    <span class="entry_type_enum_name">ON (v3.3)</span>
33086                    <span class="entry_type_enum_notes"><p>Include OIS data in the capture result.<wbr/></p></span>
33087                  </li>
33088                </ul>
33089
33090            </td> <!-- entry_type -->
33091
33092            <td class="entry_description">
33093              <p>A control for selecting whether optical stabilization (OIS) position
33094information is included in output result metadata.<wbr/></p>
33095            </td>
33096
33097            <td class="entry_units">
33098            </td>
33099
33100            <td class="entry_range">
33101              <p><a href="#static_android.statistics.info.availableOisDataModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Ois<wbr/>Data<wbr/>Modes</a></p>
33102            </td>
33103
33104            <td class="entry_hal_version">
33105              <p>3.<wbr/>3</p>
33106            </td>
33107
33108            <td class="entry_tags">
33109            </td>
33110
33111          </tr>
33112          <tr class="entries_header">
33113            <th class="th_details" colspan="6">Details</th>
33114          </tr>
33115          <tr class="entry_cont">
33116            <td class="entry_details" colspan="6">
33117              <p>Since optical image stabilization generally involves motion much faster than the duration
33118of individual image exposure,<wbr/> multiple OIS samples can be included for a single capture
33119result.<wbr/> For example,<wbr/> if the OIS reporting operates at 200 Hz,<wbr/> a typical camera operating
33120at 30fps may have 6-7 OIS samples per capture result.<wbr/> This information can be combined
33121with the rolling shutter skew to account for lens motion during image exposure in
33122post-processing algorithms.<wbr/></p>
33123            </td>
33124          </tr>
33125
33126
33127          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
33128           <!-- end of entry -->
33129
33130
33131
33132      <!-- end of kind -->
33133      </tbody>
33134      <tr><td colspan="7" class="kind">static</td></tr>
33135
33136      <thead class="entries_header">
33137        <tr>
33138          <th class="th_name">Property Name</th>
33139          <th class="th_type">Type</th>
33140          <th class="th_description">Description</th>
33141          <th class="th_units">Units</th>
33142          <th class="th_range">Range</th>
33143          <th class="th_hal_version">Initial HIDL HAL version</th>
33144          <th class="th_tags">Tags</th>
33145        </tr>
33146      </thead>
33147
33148      <tbody>
33149
33150
33151
33152
33153
33154
33155
33156
33157
33158
33159
33160
33161          <tr class="entry" id="static_android.statistics.info.availableFaceDetectModes">
33162            <td class="entry_name
33163             " rowspan="3">
33164              android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes
33165            </td>
33166            <td class="entry_type">
33167                <span class="entry_type_name">byte</span>
33168                <span class="entry_type_container">x</span>
33169
33170                <span class="entry_type_array">
33171                  n
33172                </span>
33173              <span class="entry_type_visibility"> [public as enumList]</span>
33174
33175
33176              <span class="entry_type_hwlevel">[legacy] </span>
33177
33178
33179                <div class="entry_type_notes">List of enums from android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</div>
33180
33181
33182            </td> <!-- entry_type -->
33183
33184            <td class="entry_description">
33185              <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
33186supported by this camera device.<wbr/></p>
33187            </td>
33188
33189            <td class="entry_units">
33190            </td>
33191
33192            <td class="entry_range">
33193              <p>Any value listed in <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></p>
33194            </td>
33195
33196            <td class="entry_hal_version">
33197              <p>3.<wbr/>2</p>
33198            </td>
33199
33200            <td class="entry_tags">
33201            </td>
33202
33203          </tr>
33204          <tr class="entries_header">
33205            <th class="th_details" colspan="6">Details</th>
33206          </tr>
33207          <tr class="entry_cont">
33208            <td class="entry_details" colspan="6">
33209              <p>OFF is always supported.<wbr/></p>
33210            </td>
33211          </tr>
33212
33213
33214          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
33215           <!-- end of entry -->
33216
33217
33218          <tr class="entry" id="static_android.statistics.info.histogramBucketCount">
33219            <td class="entry_name
33220             " rowspan="1">
33221              android.<wbr/>statistics.<wbr/>info.<wbr/>histogram<wbr/>Bucket<wbr/>Count
33222            </td>
33223            <td class="entry_type">
33224                <span class="entry_type_name">int32</span>
33225
33226              <span class="entry_type_visibility"> [system]</span>
33227
33228
33229
33230
33231
33232
33233            </td> <!-- entry_type -->
33234
33235            <td class="entry_description">
33236              <p>Number of histogram buckets
33237supported</p>
33238            </td>
33239
33240            <td class="entry_units">
33241            </td>
33242
33243            <td class="entry_range">
33244              <p>&gt;= 64</p>
33245            </td>
33246
33247            <td class="entry_hal_version">
33248              <p>3.<wbr/>2</p>
33249            </td>
33250
33251            <td class="entry_tags">
33252              <ul class="entry_tags">
33253                  <li><a href="#tag_FUTURE">FUTURE</a></li>
33254              </ul>
33255            </td>
33256
33257          </tr>
33258
33259
33260          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
33261           <!-- end of entry -->
33262
33263
33264          <tr class="entry" id="static_android.statistics.info.maxFaceCount">
33265            <td class="entry_name
33266             " rowspan="1">
33267              android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Face<wbr/>Count
33268            </td>
33269            <td class="entry_type">
33270                <span class="entry_type_name">int32</span>
33271
33272              <span class="entry_type_visibility"> [public]</span>
33273
33274
33275              <span class="entry_type_hwlevel">[legacy] </span>
33276
33277
33278
33279
33280            </td> <!-- entry_type -->
33281
33282            <td class="entry_description">
33283              <p>The maximum number of simultaneously detectable
33284faces.<wbr/></p>
33285            </td>
33286
33287            <td class="entry_units">
33288            </td>
33289
33290            <td class="entry_range">
33291              <p>0 for cameras without available face detection; otherwise:
33292<code>&gt;=4</code> for LIMITED or FULL hwlevel devices or
33293<code>&gt;0</code> for LEGACY devices.<wbr/></p>
33294            </td>
33295
33296            <td class="entry_hal_version">
33297              <p>3.<wbr/>2</p>
33298            </td>
33299
33300            <td class="entry_tags">
33301              <ul class="entry_tags">
33302                  <li><a href="#tag_BC">BC</a></li>
33303              </ul>
33304            </td>
33305
33306          </tr>
33307
33308
33309          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
33310           <!-- end of entry -->
33311
33312
33313          <tr class="entry" id="static_android.statistics.info.maxHistogramCount">
33314            <td class="entry_name
33315             " rowspan="1">
33316              android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Histogram<wbr/>Count
33317            </td>
33318            <td class="entry_type">
33319                <span class="entry_type_name">int32</span>
33320
33321              <span class="entry_type_visibility"> [system]</span>
33322
33323
33324
33325
33326
33327
33328            </td> <!-- entry_type -->
33329
33330            <td class="entry_description">
33331              <p>Maximum value possible for a histogram
33332bucket</p>
33333            </td>
33334
33335            <td class="entry_units">
33336            </td>
33337
33338            <td class="entry_range">
33339            </td>
33340
33341            <td class="entry_hal_version">
33342              <p>3.<wbr/>2</p>
33343            </td>
33344
33345            <td class="entry_tags">
33346              <ul class="entry_tags">
33347                  <li><a href="#tag_FUTURE">FUTURE</a></li>
33348              </ul>
33349            </td>
33350
33351          </tr>
33352
33353
33354          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
33355           <!-- end of entry -->
33356
33357
33358          <tr class="entry" id="static_android.statistics.info.maxSharpnessMapValue">
33359            <td class="entry_name
33360             " rowspan="1">
33361              android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Sharpness<wbr/>Map<wbr/>Value
33362            </td>
33363            <td class="entry_type">
33364                <span class="entry_type_name">int32</span>
33365
33366              <span class="entry_type_visibility"> [system]</span>
33367
33368
33369
33370
33371
33372
33373            </td> <!-- entry_type -->
33374
33375            <td class="entry_description">
33376              <p>Maximum value possible for a sharpness map
33377region.<wbr/></p>
33378            </td>
33379
33380            <td class="entry_units">
33381            </td>
33382
33383            <td class="entry_range">
33384            </td>
33385
33386            <td class="entry_hal_version">
33387              <p>3.<wbr/>2</p>
33388            </td>
33389
33390            <td class="entry_tags">
33391              <ul class="entry_tags">
33392                  <li><a href="#tag_FUTURE">FUTURE</a></li>
33393              </ul>
33394            </td>
33395
33396          </tr>
33397
33398
33399          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
33400           <!-- end of entry -->
33401
33402
33403          <tr class="entry" id="static_android.statistics.info.sharpnessMapSize">
33404            <td class="entry_name
33405             " rowspan="1">
33406              android.<wbr/>statistics.<wbr/>info.<wbr/>sharpness<wbr/>Map<wbr/>Size
33407            </td>
33408            <td class="entry_type">
33409                <span class="entry_type_name">int32</span>
33410                <span class="entry_type_container">x</span>
33411
33412                <span class="entry_type_array">
33413                  2
33414                </span>
33415              <span class="entry_type_visibility"> [system as size]</span>
33416
33417
33418
33419
33420                <div class="entry_type_notes">width x height</div>
33421
33422
33423            </td> <!-- entry_type -->
33424
33425            <td class="entry_description">
33426              <p>Dimensions of the sharpness
33427map</p>
33428            </td>
33429
33430            <td class="entry_units">
33431            </td>
33432
33433            <td class="entry_range">
33434              <p>Must be at least 32 x 32</p>
33435            </td>
33436
33437            <td class="entry_hal_version">
33438              <p>3.<wbr/>2</p>
33439            </td>
33440
33441            <td class="entry_tags">
33442              <ul class="entry_tags">
33443                  <li><a href="#tag_FUTURE">FUTURE</a></li>
33444              </ul>
33445            </td>
33446
33447          </tr>
33448
33449
33450          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
33451           <!-- end of entry -->
33452
33453
33454          <tr class="entry" id="static_android.statistics.info.availableHotPixelMapModes">
33455            <td class="entry_name
33456             " rowspan="3">
33457              android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Map<wbr/>Modes
33458            </td>
33459            <td class="entry_type">
33460                <span class="entry_type_name">byte</span>
33461                <span class="entry_type_container">x</span>
33462
33463                <span class="entry_type_array">
33464                  n
33465                </span>
33466              <span class="entry_type_visibility"> [public as boolean]</span>
33467
33468
33469
33470
33471                <div class="entry_type_notes">list of enums</div>
33472
33473
33474            </td> <!-- entry_type -->
33475
33476            <td class="entry_description">
33477              <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
33478supported by this camera device.<wbr/></p>
33479            </td>
33480
33481            <td class="entry_units">
33482            </td>
33483
33484            <td class="entry_range">
33485              <p>Any value listed in <a href="#controls_android.statistics.hotPixelMapMode">android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode</a></p>
33486            </td>
33487
33488            <td class="entry_hal_version">
33489              <p>3.<wbr/>2</p>
33490            </td>
33491
33492            <td class="entry_tags">
33493              <ul class="entry_tags">
33494                  <li><a href="#tag_V1">V1</a></li>
33495                  <li><a href="#tag_RAW">RAW</a></li>
33496              </ul>
33497            </td>
33498
33499          </tr>
33500          <tr class="entries_header">
33501            <th class="th_details" colspan="6">Details</th>
33502          </tr>
33503          <tr class="entry_cont">
33504            <td class="entry_details" colspan="6">
33505              <p>If no hotpixel map output is available for this camera device,<wbr/> this will contain only
33506<code>false</code>.<wbr/></p>
33507<p>ON is always supported on devices with the RAW capability.<wbr/></p>
33508            </td>
33509          </tr>
33510
33511
33512          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
33513           <!-- end of entry -->
33514
33515
33516          <tr class="entry" id="static_android.statistics.info.availableLensShadingMapModes">
33517            <td class="entry_name
33518             " rowspan="3">
33519              android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Lens<wbr/>Shading<wbr/>Map<wbr/>Modes
33520            </td>
33521            <td class="entry_type">
33522                <span class="entry_type_name">byte</span>
33523                <span class="entry_type_container">x</span>
33524
33525                <span class="entry_type_array">
33526                  n
33527                </span>
33528              <span class="entry_type_visibility"> [public as enumList]</span>
33529
33530
33531
33532
33533                <div class="entry_type_notes">list of enums</div>
33534
33535
33536            </td> <!-- entry_type -->
33537
33538            <td class="entry_description">
33539              <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
33540are supported by this camera device.<wbr/></p>
33541            </td>
33542
33543            <td class="entry_units">
33544            </td>
33545
33546            <td class="entry_range">
33547              <p>Any value listed in <a href="#controls_android.statistics.lensShadingMapMode">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode</a></p>
33548            </td>
33549
33550            <td class="entry_hal_version">
33551              <p>3.<wbr/>2</p>
33552            </td>
33553
33554            <td class="entry_tags">
33555            </td>
33556
33557          </tr>
33558          <tr class="entries_header">
33559            <th class="th_details" colspan="6">Details</th>
33560          </tr>
33561          <tr class="entry_cont">
33562            <td class="entry_details" colspan="6">
33563              <p>If no lens shading map output is available for this camera device,<wbr/> this key will
33564contain only OFF.<wbr/></p>
33565<p>ON is always supported on devices with the RAW capability.<wbr/>
33566LEGACY mode devices will always only support OFF.<wbr/></p>
33567            </td>
33568          </tr>
33569
33570
33571          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
33572           <!-- end of entry -->
33573
33574
33575          <tr class="entry" id="static_android.statistics.info.availableOisDataModes">
33576            <td class="entry_name
33577             " rowspan="3">
33578              android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Ois<wbr/>Data<wbr/>Modes
33579            </td>
33580            <td class="entry_type">
33581                <span class="entry_type_name">byte</span>
33582                <span class="entry_type_container">x</span>
33583
33584                <span class="entry_type_array">
33585                  n
33586                </span>
33587              <span class="entry_type_visibility"> [public as enumList]</span>
33588
33589
33590
33591
33592                <div class="entry_type_notes">list of enums</div>
33593
33594
33595            </td> <!-- entry_type -->
33596
33597            <td class="entry_description">
33598              <p>List of OIS data output modes for <a href="#controls_android.statistics.oisDataMode">android.<wbr/>statistics.<wbr/>ois<wbr/>Data<wbr/>Mode</a> that
33599are supported by this camera device.<wbr/></p>
33600            </td>
33601
33602            <td class="entry_units">
33603            </td>
33604
33605            <td class="entry_range">
33606              <p>Any value listed in <a href="#controls_android.statistics.oisDataMode">android.<wbr/>statistics.<wbr/>ois<wbr/>Data<wbr/>Mode</a></p>
33607            </td>
33608
33609            <td class="entry_hal_version">
33610              <p>3.<wbr/>3</p>
33611            </td>
33612
33613            <td class="entry_tags">
33614            </td>
33615
33616          </tr>
33617          <tr class="entries_header">
33618            <th class="th_details" colspan="6">Details</th>
33619          </tr>
33620          <tr class="entry_cont">
33621            <td class="entry_details" colspan="6">
33622              <p>If no OIS data output is available for this camera device,<wbr/> this key will
33623contain only OFF.<wbr/></p>
33624            </td>
33625          </tr>
33626
33627
33628          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
33629           <!-- end of entry -->
33630
33631
33632
33633
33634
33635
33636      <!-- end of kind -->
33637      </tbody>
33638      <tr><td colspan="7" class="kind">dynamic</td></tr>
33639
33640      <thead class="entries_header">
33641        <tr>
33642          <th class="th_name">Property Name</th>
33643          <th class="th_type">Type</th>
33644          <th class="th_description">Description</th>
33645          <th class="th_units">Units</th>
33646          <th class="th_range">Range</th>
33647          <th class="th_hal_version">Initial HIDL HAL version</th>
33648          <th class="th_tags">Tags</th>
33649        </tr>
33650      </thead>
33651
33652      <tbody>
33653
33654
33655
33656
33657
33658
33659
33660
33661
33662
33663          <tr class="entry" id="dynamic_android.statistics.faceDetectMode">
33664            <td class="entry_name
33665             " rowspan="5">
33666              android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode
33667            </td>
33668            <td class="entry_type">
33669                <span class="entry_type_name entry_type_name_enum">byte</span>
33670
33671              <span class="entry_type_visibility"> [public]</span>
33672
33673
33674              <span class="entry_type_hwlevel">[legacy] </span>
33675
33676
33677
33678                <ul class="entry_type_enum">
33679                  <li>
33680                    <span class="entry_type_enum_name">OFF (v3.2)</span>
33681                    <span class="entry_type_enum_notes"><p>Do not include face detection statistics in capture
33682results.<wbr/></p></span>
33683                  </li>
33684                  <li>
33685                    <span class="entry_type_enum_name">SIMPLE (v3.2)</span>
33686                    <span class="entry_type_enum_optional">[optional]</span>
33687                    <span class="entry_type_enum_notes"><p>Return face rectangle and confidence values only.<wbr/></p></span>
33688                  </li>
33689                  <li>
33690                    <span class="entry_type_enum_name">FULL (v3.2)</span>
33691                    <span class="entry_type_enum_optional">[optional]</span>
33692                    <span class="entry_type_enum_notes"><p>Return all face
33693metadata.<wbr/></p>
33694<p>In this mode,<wbr/> face rectangles,<wbr/> scores,<wbr/> landmarks,<wbr/> and face IDs are all valid.<wbr/></p></span>
33695                  </li>
33696                </ul>
33697
33698            </td> <!-- entry_type -->
33699
33700            <td class="entry_description">
33701              <p>Operating mode for the face detector
33702unit.<wbr/></p>
33703            </td>
33704
33705            <td class="entry_units">
33706            </td>
33707
33708            <td class="entry_range">
33709              <p><a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a></p>
33710            </td>
33711
33712            <td class="entry_hal_version">
33713              <p>3.<wbr/>2</p>
33714            </td>
33715
33716            <td class="entry_tags">
33717              <ul class="entry_tags">
33718                  <li><a href="#tag_BC">BC</a></li>
33719              </ul>
33720            </td>
33721
33722          </tr>
33723          <tr class="entries_header">
33724            <th class="th_details" colspan="6">Details</th>
33725          </tr>
33726          <tr class="entry_cont">
33727            <td class="entry_details" colspan="6">
33728              <p>Whether face detection is enabled,<wbr/> and whether it
33729should output just the basic fields or the full set of
33730fields.<wbr/></p>
33731            </td>
33732          </tr>
33733
33734          <tr class="entries_header">
33735            <th class="th_details" colspan="6">HAL Implementation Details</th>
33736          </tr>
33737          <tr class="entry_cont">
33738            <td class="entry_details" colspan="6">
33739              <p>SIMPLE mode must fill in <a href="#dynamic_android.statistics.faceRectangles">android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles</a> and
33740<a href="#dynamic_android.statistics.faceScores">android.<wbr/>statistics.<wbr/>face<wbr/>Scores</a>.<wbr/>
33741FULL mode must also fill in <a href="#dynamic_android.statistics.faceIds">android.<wbr/>statistics.<wbr/>face<wbr/>Ids</a>,<wbr/> and
33742<a href="#dynamic_android.statistics.faceLandmarks">android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks</a>.<wbr/></p>
33743            </td>
33744          </tr>
33745
33746          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
33747           <!-- end of entry -->
33748
33749
33750          <tr class="entry" id="dynamic_android.statistics.faceIds">
33751            <td class="entry_name
33752             " rowspan="3">
33753              android.<wbr/>statistics.<wbr/>face<wbr/>Ids
33754            </td>
33755            <td class="entry_type">
33756                <span class="entry_type_name">int32</span>
33757                <span class="entry_type_container">x</span>
33758
33759                <span class="entry_type_array">
33760                  n
33761                </span>
33762              <span class="entry_type_visibility"> [ndk_public]</span>
33763
33764
33765              <span class="entry_type_hwlevel">[legacy] </span>
33766
33767
33768
33769
33770            </td> <!-- entry_type -->
33771
33772            <td class="entry_description">
33773              <p>List of unique IDs for detected faces.<wbr/></p>
33774            </td>
33775
33776            <td class="entry_units">
33777            </td>
33778
33779            <td class="entry_range">
33780            </td>
33781
33782            <td class="entry_hal_version">
33783              <p>3.<wbr/>2</p>
33784            </td>
33785
33786            <td class="entry_tags">
33787              <ul class="entry_tags">
33788                  <li><a href="#tag_BC">BC</a></li>
33789              </ul>
33790            </td>
33791
33792          </tr>
33793          <tr class="entries_header">
33794            <th class="th_details" colspan="6">Details</th>
33795          </tr>
33796          <tr class="entry_cont">
33797            <td class="entry_details" colspan="6">
33798              <p>Each detected face is given a unique ID that is valid for as long as the face is visible
33799to the camera device.<wbr/>  A face that leaves the field of view and later returns may be
33800assigned a new ID.<wbr/></p>
33801<p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> == FULL</p>
33802            </td>
33803          </tr>
33804
33805
33806          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
33807           <!-- end of entry -->
33808
33809
33810          <tr class="entry" id="dynamic_android.statistics.faceLandmarks">
33811            <td class="entry_name
33812             " rowspan="5">
33813              android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks
33814            </td>
33815            <td class="entry_type">
33816                <span class="entry_type_name">int32</span>
33817                <span class="entry_type_container">x</span>
33818
33819                <span class="entry_type_array">
33820                  n x 6
33821                </span>
33822              <span class="entry_type_visibility"> [ndk_public]</span>
33823
33824
33825              <span class="entry_type_hwlevel">[legacy] </span>
33826
33827
33828                <div class="entry_type_notes">(leftEyeX,<wbr/> leftEyeY,<wbr/> rightEyeX,<wbr/> rightEyeY,<wbr/> mouthX,<wbr/> mouthY)</div>
33829
33830
33831            </td> <!-- entry_type -->
33832
33833            <td class="entry_description">
33834              <p>List of landmarks for detected
33835faces.<wbr/></p>
33836            </td>
33837
33838            <td class="entry_units">
33839            </td>
33840
33841            <td class="entry_range">
33842            </td>
33843
33844            <td class="entry_hal_version">
33845              <p>3.<wbr/>2</p>
33846            </td>
33847
33848            <td class="entry_tags">
33849              <ul class="entry_tags">
33850                  <li><a href="#tag_BC">BC</a></li>
33851              </ul>
33852            </td>
33853
33854          </tr>
33855          <tr class="entries_header">
33856            <th class="th_details" colspan="6">Details</th>
33857          </tr>
33858          <tr class="entry_cont">
33859            <td class="entry_details" colspan="6">
33860              <p>For devices not supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate
33861system always follows that of <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
33862the top-left pixel of the active array.<wbr/></p>
33863<p>For devices supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate
33864system depends on the mode being set.<wbr/>
33865When the distortion correction mode is OFF,<wbr/> the coordinate system follows
33866<a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>,<wbr/> with
33867<code>(0,<wbr/> 0)</code> being the top-left pixel of the pre-correction active array.<wbr/>
33868When the distortion correction mode is not OFF,<wbr/> the coordinate system follows
33869<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> with
33870<code>(0,<wbr/> 0)</code> being the top-left pixel of the active array.<wbr/></p>
33871<p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> == FULL.<wbr/></p>
33872<p>Starting from API level 30,<wbr/> the coordinate system of activeArraySize or
33873preCorrectionActiveArraySize is used to represent post-zoomRatio field of view,<wbr/> not
33874pre-zoomRatio field of view.<wbr/> This means that if the relative position of faces and
33875the camera device doesn't change,<wbr/> when zooming in by increasing
33876<a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a>,<wbr/> the face landmarks move farther away from the center of the
33877activeArray or preCorrectionActiveArray.<wbr/> If <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> is set to 1.<wbr/>0
33878(default),<wbr/> the face landmarks coordinates won't change as <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>
33879changes.<wbr/> See <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> for details.<wbr/> Whether to use activeArraySize or
33880preCorrectionActiveArraySize still depends on distortion correction mode.<wbr/></p>
33881            </td>
33882          </tr>
33883
33884          <tr class="entries_header">
33885            <th class="th_details" colspan="6">HAL Implementation Details</th>
33886          </tr>
33887          <tr class="entry_cont">
33888            <td class="entry_details" colspan="6">
33889              <p>HAL must always report face landmarks in the coordinate system of pre-correction
33890active array.<wbr/></p>
33891            </td>
33892          </tr>
33893
33894          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
33895           <!-- end of entry -->
33896
33897
33898          <tr class="entry" id="dynamic_android.statistics.faceRectangles">
33899            <td class="entry_name
33900             " rowspan="5">
33901              android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles
33902            </td>
33903            <td class="entry_type">
33904                <span class="entry_type_name">int32</span>
33905                <span class="entry_type_container">x</span>
33906
33907                <span class="entry_type_array">
33908                  n x 4
33909                </span>
33910              <span class="entry_type_visibility"> [ndk_public as rectangle]</span>
33911
33912
33913              <span class="entry_type_hwlevel">[legacy] </span>
33914
33915
33916                <div class="entry_type_notes">(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax).<wbr/> (0,<wbr/>0) is top-left of active pixel area</div>
33917
33918
33919            </td> <!-- entry_type -->
33920
33921            <td class="entry_description">
33922              <p>List of the bounding rectangles for detected
33923faces.<wbr/></p>
33924            </td>
33925
33926            <td class="entry_units">
33927            </td>
33928
33929            <td class="entry_range">
33930            </td>
33931
33932            <td class="entry_hal_version">
33933              <p>3.<wbr/>2</p>
33934            </td>
33935
33936            <td class="entry_tags">
33937              <ul class="entry_tags">
33938                  <li><a href="#tag_BC">BC</a></li>
33939              </ul>
33940            </td>
33941
33942          </tr>
33943          <tr class="entries_header">
33944            <th class="th_details" colspan="6">Details</th>
33945          </tr>
33946          <tr class="entry_cont">
33947            <td class="entry_details" colspan="6">
33948              <p>For devices not supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate
33949system always follows that of <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
33950the top-left pixel of the active array.<wbr/></p>
33951<p>For devices supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate
33952system depends on the mode being set.<wbr/>
33953When the distortion correction mode is OFF,<wbr/> the coordinate system follows
33954<a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>,<wbr/> with
33955<code>(0,<wbr/> 0)</code> being the top-left pixel of the pre-correction active array.<wbr/>
33956When the distortion correction mode is not OFF,<wbr/> the coordinate system follows
33957<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> with
33958<code>(0,<wbr/> 0)</code> being the top-left pixel of the active array.<wbr/></p>
33959<p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> != OFF.<wbr/></p>
33960<p>Starting from API level 30,<wbr/> the coordinate system of activeArraySize or
33961preCorrectionActiveArraySize is used to represent post-zoomRatio field of view,<wbr/> not
33962pre-zoomRatio field of view.<wbr/> This means that if the relative position of faces and
33963the camera device doesn't change,<wbr/> when zooming in by increasing
33964<a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a>,<wbr/> the face rectangles grow larger and move farther away from
33965the center of the activeArray or preCorrectionActiveArray.<wbr/> If <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a>
33966is set to 1.<wbr/>0 (default),<wbr/> the face rectangles won't change as <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>
33967changes.<wbr/> See <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> for details.<wbr/> Whether to use activeArraySize or
33968preCorrectionActiveArraySize still depends on distortion correction mode.<wbr/></p>
33969            </td>
33970          </tr>
33971
33972          <tr class="entries_header">
33973            <th class="th_details" colspan="6">HAL Implementation Details</th>
33974          </tr>
33975          <tr class="entry_cont">
33976            <td class="entry_details" colspan="6">
33977              <p>HAL must always report face rectangles in the coordinate system of pre-correction
33978active array.<wbr/></p>
33979            </td>
33980          </tr>
33981
33982          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
33983           <!-- end of entry -->
33984
33985
33986          <tr class="entry" id="dynamic_android.statistics.faceScores">
33987            <td class="entry_name
33988             " rowspan="5">
33989              android.<wbr/>statistics.<wbr/>face<wbr/>Scores
33990            </td>
33991            <td class="entry_type">
33992                <span class="entry_type_name">byte</span>
33993                <span class="entry_type_container">x</span>
33994
33995                <span class="entry_type_array">
33996                  n
33997                </span>
33998              <span class="entry_type_visibility"> [ndk_public]</span>
33999
34000
34001              <span class="entry_type_hwlevel">[legacy] </span>
34002
34003
34004
34005
34006            </td> <!-- entry_type -->
34007
34008            <td class="entry_description">
34009              <p>List of the face confidence scores for
34010detected faces</p>
34011            </td>
34012
34013            <td class="entry_units">
34014            </td>
34015
34016            <td class="entry_range">
34017              <p>1-100</p>
34018            </td>
34019
34020            <td class="entry_hal_version">
34021              <p>3.<wbr/>2</p>
34022            </td>
34023
34024            <td class="entry_tags">
34025              <ul class="entry_tags">
34026                  <li><a href="#tag_BC">BC</a></li>
34027              </ul>
34028            </td>
34029
34030          </tr>
34031          <tr class="entries_header">
34032            <th class="th_details" colspan="6">Details</th>
34033          </tr>
34034          <tr class="entry_cont">
34035            <td class="entry_details" colspan="6">
34036              <p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> != OFF.<wbr/></p>
34037            </td>
34038          </tr>
34039
34040          <tr class="entries_header">
34041            <th class="th_details" colspan="6">HAL Implementation Details</th>
34042          </tr>
34043          <tr class="entry_cont">
34044            <td class="entry_details" colspan="6">
34045              <p>The value should be meaningful (for example,<wbr/> setting 100 at
34046all times is illegal).<wbr/></p>
34047            </td>
34048          </tr>
34049
34050          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
34051           <!-- end of entry -->
34052
34053
34054          <tr class="entry" id="dynamic_android.statistics.faces">
34055            <td class="entry_name
34056             " rowspan="3">
34057              android.<wbr/>statistics.<wbr/>faces
34058            </td>
34059            <td class="entry_type">
34060                <span class="entry_type_name">int32</span>
34061                <span class="entry_type_container">x</span>
34062
34063                <span class="entry_type_array">
34064                  n
34065                </span>
34066              <span class="entry_type_visibility"> [java_public as face]</span>
34067
34068              <span class="entry_type_synthetic">[synthetic] </span>
34069
34070              <span class="entry_type_hwlevel">[legacy] </span>
34071
34072
34073
34074
34075            </td> <!-- entry_type -->
34076
34077            <td class="entry_description">
34078              <p>List of the faces detected through camera face detection
34079in this capture.<wbr/></p>
34080            </td>
34081
34082            <td class="entry_units">
34083            </td>
34084
34085            <td class="entry_range">
34086            </td>
34087
34088            <td class="entry_hal_version">
34089              <p>3.<wbr/>2</p>
34090            </td>
34091
34092            <td class="entry_tags">
34093            </td>
34094
34095          </tr>
34096          <tr class="entries_header">
34097            <th class="th_details" colspan="6">Details</th>
34098          </tr>
34099          <tr class="entry_cont">
34100            <td class="entry_details" colspan="6">
34101              <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>
34102            </td>
34103          </tr>
34104
34105
34106          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
34107           <!-- end of entry -->
34108
34109
34110          <tr class="entry" id="dynamic_android.statistics.histogram">
34111            <td class="entry_name
34112             " rowspan="3">
34113              android.<wbr/>statistics.<wbr/>histogram
34114            </td>
34115            <td class="entry_type">
34116                <span class="entry_type_name">int32</span>
34117                <span class="entry_type_container">x</span>
34118
34119                <span class="entry_type_array">
34120                  n x 3
34121                </span>
34122              <span class="entry_type_visibility"> [system]</span>
34123
34124
34125
34126
34127                <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>
34128
34129
34130            </td> <!-- entry_type -->
34131
34132            <td class="entry_description">
34133              <p>A 3-channel histogram based on the raw
34134sensor data</p>
34135            </td>
34136
34137            <td class="entry_units">
34138            </td>
34139
34140            <td class="entry_range">
34141            </td>
34142
34143            <td class="entry_hal_version">
34144              <p>3.<wbr/>2</p>
34145            </td>
34146
34147            <td class="entry_tags">
34148              <ul class="entry_tags">
34149                  <li><a href="#tag_FUTURE">FUTURE</a></li>
34150              </ul>
34151            </td>
34152
34153          </tr>
34154          <tr class="entries_header">
34155            <th class="th_details" colspan="6">Details</th>
34156          </tr>
34157          <tr class="entry_cont">
34158            <td class="entry_details" colspan="6">
34159              <p>The k'th bucket (0-based) covers the input range
34160(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/>
34161(k + 1) * w /<wbr/> N ).<wbr/> If only a monochrome sharpness map is
34162supported,<wbr/> all channels should have the same data</p>
34163            </td>
34164          </tr>
34165
34166
34167          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
34168           <!-- end of entry -->
34169
34170
34171          <tr class="entry" id="dynamic_android.statistics.histogramMode">
34172            <td class="entry_name
34173             " rowspan="1">
34174              android.<wbr/>statistics.<wbr/>histogram<wbr/>Mode
34175            </td>
34176            <td class="entry_type">
34177                <span class="entry_type_name entry_type_name_enum">byte</span>
34178
34179              <span class="entry_type_visibility"> [system as boolean]</span>
34180
34181
34182
34183
34184
34185                <ul class="entry_type_enum">
34186                  <li>
34187                    <span class="entry_type_enum_name">OFF (v3.2)</span>
34188                  </li>
34189                  <li>
34190                    <span class="entry_type_enum_name">ON (v3.2)</span>
34191                  </li>
34192                </ul>
34193
34194            </td> <!-- entry_type -->
34195
34196            <td class="entry_description">
34197              <p>Operating mode for histogram
34198generation</p>
34199            </td>
34200
34201            <td class="entry_units">
34202            </td>
34203
34204            <td class="entry_range">
34205            </td>
34206
34207            <td class="entry_hal_version">
34208              <p>3.<wbr/>2</p>
34209            </td>
34210
34211            <td class="entry_tags">
34212              <ul class="entry_tags">
34213                  <li><a href="#tag_FUTURE">FUTURE</a></li>
34214              </ul>
34215            </td>
34216
34217          </tr>
34218
34219
34220          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
34221           <!-- end of entry -->
34222
34223
34224          <tr class="entry" id="dynamic_android.statistics.sharpnessMap">
34225            <td class="entry_name
34226             " rowspan="3">
34227              android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map
34228            </td>
34229            <td class="entry_type">
34230                <span class="entry_type_name">int32</span>
34231                <span class="entry_type_container">x</span>
34232
34233                <span class="entry_type_array">
34234                  n x m x 3
34235                </span>
34236              <span class="entry_type_visibility"> [system]</span>
34237
34238
34239
34240
34241                <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>
34242
34243
34244            </td> <!-- entry_type -->
34245
34246            <td class="entry_description">
34247              <p>A 3-channel sharpness map,<wbr/> based on the raw
34248sensor data</p>
34249            </td>
34250
34251            <td class="entry_units">
34252            </td>
34253
34254            <td class="entry_range">
34255            </td>
34256
34257            <td class="entry_hal_version">
34258              <p>3.<wbr/>2</p>
34259            </td>
34260
34261            <td class="entry_tags">
34262              <ul class="entry_tags">
34263                  <li><a href="#tag_FUTURE">FUTURE</a></li>
34264              </ul>
34265            </td>
34266
34267          </tr>
34268          <tr class="entries_header">
34269            <th class="th_details" colspan="6">Details</th>
34270          </tr>
34271          <tr class="entry_cont">
34272            <td class="entry_details" colspan="6">
34273              <p>If only a monochrome sharpness map is supported,<wbr/>
34274all channels should have the same data</p>
34275            </td>
34276          </tr>
34277
34278
34279          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
34280           <!-- end of entry -->
34281
34282
34283          <tr class="entry" id="dynamic_android.statistics.sharpnessMapMode">
34284            <td class="entry_name
34285             " rowspan="1">
34286              android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map<wbr/>Mode
34287            </td>
34288            <td class="entry_type">
34289                <span class="entry_type_name entry_type_name_enum">byte</span>
34290
34291              <span class="entry_type_visibility"> [system as boolean]</span>
34292
34293
34294
34295
34296
34297                <ul class="entry_type_enum">
34298                  <li>
34299                    <span class="entry_type_enum_name">OFF (v3.2)</span>
34300                  </li>
34301                  <li>
34302                    <span class="entry_type_enum_name">ON (v3.2)</span>
34303                  </li>
34304                </ul>
34305
34306            </td> <!-- entry_type -->
34307
34308            <td class="entry_description">
34309              <p>Operating mode for sharpness map
34310generation</p>
34311            </td>
34312
34313            <td class="entry_units">
34314            </td>
34315
34316            <td class="entry_range">
34317            </td>
34318
34319            <td class="entry_hal_version">
34320              <p>3.<wbr/>2</p>
34321            </td>
34322
34323            <td class="entry_tags">
34324              <ul class="entry_tags">
34325                  <li><a href="#tag_FUTURE">FUTURE</a></li>
34326              </ul>
34327            </td>
34328
34329          </tr>
34330
34331
34332          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
34333           <!-- end of entry -->
34334
34335
34336          <tr class="entry" id="dynamic_android.statistics.lensShadingCorrectionMap">
34337            <td class="entry_name
34338             " rowspan="3">
34339              android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Correction<wbr/>Map
34340            </td>
34341            <td class="entry_type">
34342                <span class="entry_type_name">byte</span>
34343
34344              <span class="entry_type_visibility"> [java_public as lensShadingMap]</span>
34345
34346
34347              <span class="entry_type_hwlevel">[full] </span>
34348
34349
34350
34351
34352            </td> <!-- entry_type -->
34353
34354            <td class="entry_description">
34355              <p>The shading map is a low-resolution floating-point map
34356that lists the coefficients used to correct for vignetting,<wbr/> for each
34357Bayer color channel.<wbr/></p>
34358            </td>
34359
34360            <td class="entry_units">
34361            </td>
34362
34363            <td class="entry_range">
34364              <p>Each gain factor is &gt;= 1</p>
34365            </td>
34366
34367            <td class="entry_hal_version">
34368              <p>3.<wbr/>2</p>
34369            </td>
34370
34371            <td class="entry_tags">
34372            </td>
34373
34374          </tr>
34375          <tr class="entries_header">
34376            <th class="th_details" colspan="6">Details</th>
34377          </tr>
34378          <tr class="entry_cont">
34379            <td class="entry_details" colspan="6">
34380              <p>The map provided here is the same map that is used by the camera device to
34381correct both color shading and vignetting for output non-RAW images.<wbr/></p>
34382<p>When there is no lens shading correction applied to RAW
34383output images (<a href="#static_android.sensor.info.lensShadingApplied">android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied</a> <code>==</code>
34384false),<wbr/> this map is the complete lens shading correction
34385map; when there is some lens shading correction applied to
34386the 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
34387correction map that needs to be applied to get shading
34388corrected images that match the camera device's output for
34389non-RAW formats.<wbr/></p>
34390<p>Therefore,<wbr/> whatever the value of lensShadingApplied is,<wbr/> the lens
34391shading map should always be applied to RAW images if the goal is to
34392match the shading appearance of processed (non-RAW) images.<wbr/></p>
34393<p>For a complete shading correction map,<wbr/> the least shaded
34394section of the image will have a gain factor of 1; all
34395other sections will have gains above 1.<wbr/></p>
34396<p>When <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> = TRANSFORM_<wbr/>MATRIX,<wbr/> the map
34397will take into account the colorCorrection settings.<wbr/></p>
34398<p>The shading map is for the entire active pixel array,<wbr/> and is not
34399affected by the crop region specified in the request.<wbr/> Each shading map
34400entry is the value of the shading compensation map over a specific
34401pixel on the sensor.<wbr/>  Specifically,<wbr/> with a (N x M) resolution shading
34402map,<wbr/> and an active pixel array size (W x H),<wbr/> shading map entry
34403(x,<wbr/>y) ϵ (0 ...<wbr/> N-1,<wbr/> 0 ...<wbr/> M-1) is the value of the shading map at
34404pixel ( ((W-1)/<wbr/>(N-1)) * x,<wbr/> ((H-1)/<wbr/>(M-1)) * y) for the four color channels.<wbr/>
34405The map is assumed to be bilinearly interpolated between the sample points.<wbr/></p>
34406<p>The channel order is [R,<wbr/> Geven,<wbr/> Godd,<wbr/> B],<wbr/> where Geven is the green
34407channel for the even rows of a Bayer pattern,<wbr/> and Godd is the odd rows.<wbr/>
34408The shading map is stored in a fully interleaved format.<wbr/></p>
34409<p>The shading map will generally have on the order of 30-40 rows and columns,<wbr/>
34410and will be smaller than 64x64.<wbr/></p>
34411<p>As an example,<wbr/> given a very small map defined as:</p>
34412<pre><code>width,<wbr/>height = [ 4,<wbr/> 3 ]
34413values =
34414[ 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/>
34415    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/>
34416  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/>
34417    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/>
34418  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/>
34419    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 ]
34420</code></pre>
34421<p>The low-resolution scaling map images for each channel are
34422(displayed using nearest-neighbor interpolation):</p>
34423<p><img alt="Red lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/red_shading.png"/>
34424<img alt="Green (even rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_e_shading.png"/>
34425<img alt="Green (odd rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_o_shading.png"/>
34426<img alt="Blue lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/blue_shading.png"/></p>
34427<p>As a visualization only,<wbr/> inverting the full-color map to recover an
34428image of a gray wall (using bicubic interpolation for visual quality) as captured by the sensor gives:</p>
34429<p><img alt="Image of a uniform white wall (inverse shading map)" src="images/camera2/metadata/android.statistics.lensShadingMap/inv_shading.png"/></p>
34430<p>For a MONOCHROME camera,<wbr/> all of the 2x2 channels must have the same values.<wbr/> An example
34431shading map for such a camera is defined as:</p>
34432<pre><code><a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a> = [ 4,<wbr/> 3 ]
34433<a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> =
34434[ 1.<wbr/>3,<wbr/> 1.<wbr/>3,<wbr/> 1.<wbr/>3,<wbr/> 1.<wbr/>3,<wbr/>  1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/>
34435    1.<wbr/>1,<wbr/> 1.<wbr/>1,<wbr/> 1.<wbr/>1,<wbr/> 1.<wbr/>1,<wbr/>  1.<wbr/>3,<wbr/> 1.<wbr/>3,<wbr/> 1.<wbr/>3,<wbr/> 1.<wbr/>3,<wbr/>
34436  1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/>  1.<wbr/>1,<wbr/> 1.<wbr/>1,<wbr/> 1.<wbr/>1,<wbr/> 1.<wbr/>1,<wbr/>
34437    1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/>  1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/>
34438  1.<wbr/>3,<wbr/> 1.<wbr/>3,<wbr/> 1.<wbr/>3,<wbr/> 1.<wbr/>3,<wbr/>   1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/>
34439    1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/>  1.<wbr/>3,<wbr/> 1.<wbr/>3,<wbr/> 1.<wbr/>3,<wbr/> 1.<wbr/>3 ]
34440</code></pre>
34441            </td>
34442          </tr>
34443
34444
34445          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
34446           <!-- end of entry -->
34447
34448
34449          <tr class="entry" id="dynamic_android.statistics.lensShadingMap">
34450            <td class="entry_name
34451             " rowspan="5">
34452              android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map
34453            </td>
34454            <td class="entry_type">
34455                <span class="entry_type_name">float</span>
34456                <span class="entry_type_container">x</span>
34457
34458                <span class="entry_type_array">
34459                  4 x n x m
34460                </span>
34461              <span class="entry_type_visibility"> [ndk_public]</span>
34462
34463
34464              <span class="entry_type_hwlevel">[full] </span>
34465
34466
34467                <div class="entry_type_notes">2D array of float gain factors per channel to correct lens shading</div>
34468
34469
34470            </td> <!-- entry_type -->
34471
34472            <td class="entry_description">
34473              <p>The shading map is a low-resolution floating-point map
34474that lists the coefficients used to correct for vignetting and color shading,<wbr/>
34475for each Bayer color channel of RAW image data.<wbr/></p>
34476            </td>
34477
34478            <td class="entry_units">
34479            </td>
34480
34481            <td class="entry_range">
34482              <p>Each gain factor is &gt;= 1</p>
34483            </td>
34484
34485            <td class="entry_hal_version">
34486              <p>3.<wbr/>2</p>
34487            </td>
34488
34489            <td class="entry_tags">
34490            </td>
34491
34492          </tr>
34493          <tr class="entries_header">
34494            <th class="th_details" colspan="6">Details</th>
34495          </tr>
34496          <tr class="entry_cont">
34497            <td class="entry_details" colspan="6">
34498              <p>The map provided here is the same map that is used by the camera device to
34499correct both color shading and vignetting for output non-RAW images.<wbr/></p>
34500<p>When there is no lens shading correction applied to RAW
34501output images (<a href="#static_android.sensor.info.lensShadingApplied">android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied</a> <code>==</code>
34502false),<wbr/> this map is the complete lens shading correction
34503map; when there is some lens shading correction applied to
34504the 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
34505correction map that needs to be applied to get shading
34506corrected images that match the camera device's output for
34507non-RAW formats.<wbr/></p>
34508<p>For a complete shading correction map,<wbr/> the least shaded
34509section of the image will have a gain factor of 1; all
34510other sections will have gains above 1.<wbr/></p>
34511<p>When <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> = TRANSFORM_<wbr/>MATRIX,<wbr/> the map
34512will take into account the colorCorrection settings.<wbr/></p>
34513<p>The shading map is for the entire active pixel array,<wbr/> and is not
34514affected by the crop region specified in the request.<wbr/> Each shading map
34515entry is the value of the shading compensation map over a specific
34516pixel on the sensor.<wbr/>  Specifically,<wbr/> with a (N x M) resolution shading
34517map,<wbr/> and an active pixel array size (W x H),<wbr/> shading map entry
34518(x,<wbr/>y) ϵ (0 ...<wbr/> N-1,<wbr/> 0 ...<wbr/> M-1) is the value of the shading map at
34519pixel ( ((W-1)/<wbr/>(N-1)) * x,<wbr/> ((H-1)/<wbr/>(M-1)) * y) for the four color channels.<wbr/>
34520The map is assumed to be bilinearly interpolated between the sample points.<wbr/></p>
34521<p>For a Bayer camera,<wbr/> the channel order is [R,<wbr/> Geven,<wbr/> Godd,<wbr/> B],<wbr/> where Geven is
34522the green channel for the even rows of a Bayer pattern,<wbr/> and Godd is the odd rows.<wbr/>
34523The shading map is stored in a fully interleaved format,<wbr/> and its size
34524is 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>
34525<p>The shading map will generally have on the order of 30-40 rows and columns,<wbr/>
34526and will be smaller than 64x64.<wbr/></p>
34527<p>As an example,<wbr/> given a very small map for a Bayer camera defined as:</p>
34528<pre><code><a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a> = [ 4,<wbr/> 3 ]
34529<a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> =
34530[ 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/>
34531    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/>
34532  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/>
34533    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/>
34534  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/>
34535    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 ]
34536</code></pre>
34537<p>The low-resolution scaling map images for each channel are
34538(displayed using nearest-neighbor interpolation):</p>
34539<p><img alt="Red lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/red_shading.png"/>
34540<img alt="Green (even rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_e_shading.png"/>
34541<img alt="Green (odd rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_o_shading.png"/>
34542<img alt="Blue lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/blue_shading.png"/></p>
34543<p>As a visualization only,<wbr/> inverting the full-color map to recover an
34544image of a gray wall (using bicubic interpolation for visual quality)
34545as captured by the sensor gives:</p>
34546<p><img alt="Image of a uniform white wall (inverse shading map)" src="images/camera2/metadata/android.statistics.lensShadingMap/inv_shading.png"/></p>
34547<p>For a MONOCHROME camera,<wbr/> all of the 2x2 channels must have the same values.<wbr/> An example
34548shading map for such a camera is defined as:</p>
34549<pre><code><a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a> = [ 4,<wbr/> 3 ]
34550<a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> =
34551[ 1.<wbr/>3,<wbr/> 1.<wbr/>3,<wbr/> 1.<wbr/>3,<wbr/> 1.<wbr/>3,<wbr/>  1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/>
34552    1.<wbr/>1,<wbr/> 1.<wbr/>1,<wbr/> 1.<wbr/>1,<wbr/> 1.<wbr/>1,<wbr/>  1.<wbr/>3,<wbr/> 1.<wbr/>3,<wbr/> 1.<wbr/>3,<wbr/> 1.<wbr/>3,<wbr/>
34553  1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/>  1.<wbr/>1,<wbr/> 1.<wbr/>1,<wbr/> 1.<wbr/>1,<wbr/> 1.<wbr/>1,<wbr/>
34554    1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/>  1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/>
34555  1.<wbr/>3,<wbr/> 1.<wbr/>3,<wbr/> 1.<wbr/>3,<wbr/> 1.<wbr/>3,<wbr/>   1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/>
34556    1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/>  1.<wbr/>3,<wbr/> 1.<wbr/>3,<wbr/> 1.<wbr/>3,<wbr/> 1.<wbr/>3 ]
34557</code></pre>
34558<p>Note that the RAW image data might be subject to lens shading
34559correction not reported on this map.<wbr/> Query
34560<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
34561to lens shading correction.<wbr/> If <a href="#static_android.sensor.info.lensShadingApplied">android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied</a>
34562is TRUE,<wbr/> the RAW image data is subject to partial or full lens shading
34563correction.<wbr/> In the case full lens shading correction is applied to RAW
34564images,<wbr/> the gain factor map reported in this key will contain all 1.<wbr/>0 gains.<wbr/>
34565In other words,<wbr/> the map reported in this key is the remaining lens shading
34566that needs to be applied on the RAW image to get images without lens shading
34567artifacts.<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
34568formats.<wbr/></p>
34569            </td>
34570          </tr>
34571
34572          <tr class="entries_header">
34573            <th class="th_details" colspan="6">HAL Implementation Details</th>
34574          </tr>
34575          <tr class="entry_cont">
34576            <td class="entry_details" colspan="6">
34577              <p>The lens shading map calculation may depend on exposure and white balance statistics.<wbr/>
34578When AE and AWB are in AUTO modes
34579(<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
34580may have all the information it need to generate most accurate lens shading map.<wbr/> When
34581AE or AWB are in manual mode
34582(<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
34583may be adversely impacted by manual exposure or white balance parameters.<wbr/> To avoid
34584generating unreliable shading map data,<wbr/> the HAL may choose to lock the shading map with
34585the latest known good map generated when the AE and AWB are in AUTO modes.<wbr/></p>
34586            </td>
34587          </tr>
34588
34589          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
34590           <!-- end of entry -->
34591
34592
34593          <tr class="entry" id="dynamic_android.statistics.predictedColorGains">
34594            <td class="entry_name
34595                entry_name_deprecated
34596             " rowspan="3">
34597              android.<wbr/>statistics.<wbr/>predicted<wbr/>Color<wbr/>Gains
34598            </td>
34599            <td class="entry_type">
34600                <span class="entry_type_name">float</span>
34601                <span class="entry_type_container">x</span>
34602
34603                <span class="entry_type_array">
34604                  4
34605                </span>
34606              <span class="entry_type_visibility"> [hidden]</span>
34607
34608
34609
34610              <span class="entry_type_deprecated">[deprecated] </span>
34611
34612                <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div>
34613
34614
34615            </td> <!-- entry_type -->
34616
34617            <td class="entry_description">
34618              <p>The best-fit color channel gains calculated
34619by the camera device's statistics units for the current output frame.<wbr/></p>
34620            </td>
34621
34622            <td class="entry_units">
34623            </td>
34624
34625            <td class="entry_range">
34626              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
34627            </td>
34628
34629            <td class="entry_hal_version">
34630              <p>3.<wbr/>2</p>
34631            </td>
34632
34633            <td class="entry_tags">
34634            </td>
34635
34636          </tr>
34637          <tr class="entries_header">
34638            <th class="th_details" colspan="6">Details</th>
34639          </tr>
34640          <tr class="entry_cont">
34641            <td class="entry_details" colspan="6">
34642              <p>This may be different than the gains used for this frame,<wbr/>
34643since statistics processing on data from a new frame
34644typically completes after the transform has already been
34645applied to that frame.<wbr/></p>
34646<p>The 4 channel gains are defined in Bayer domain,<wbr/>
34647see <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> for details.<wbr/></p>
34648<p>This value should always be calculated by the auto-white balance (AWB) block,<wbr/>
34649regardless of the android.<wbr/>control.<wbr/>* current values.<wbr/></p>
34650            </td>
34651          </tr>
34652
34653
34654          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
34655           <!-- end of entry -->
34656
34657
34658          <tr class="entry" id="dynamic_android.statistics.predictedColorTransform">
34659            <td class="entry_name
34660                entry_name_deprecated
34661             " rowspan="3">
34662              android.<wbr/>statistics.<wbr/>predicted<wbr/>Color<wbr/>Transform
34663            </td>
34664            <td class="entry_type">
34665                <span class="entry_type_name">rational</span>
34666                <span class="entry_type_container">x</span>
34667
34668                <span class="entry_type_array">
34669                  3 x 3
34670                </span>
34671              <span class="entry_type_visibility"> [hidden]</span>
34672
34673
34674
34675              <span class="entry_type_deprecated">[deprecated] </span>
34676
34677                <div class="entry_type_notes">3x3 rational matrix in row-major order</div>
34678
34679
34680            </td> <!-- entry_type -->
34681
34682            <td class="entry_description">
34683              <p>The best-fit color transform matrix estimate
34684calculated by the camera device's statistics units for the current
34685output frame.<wbr/></p>
34686            </td>
34687
34688            <td class="entry_units">
34689            </td>
34690
34691            <td class="entry_range">
34692              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
34693            </td>
34694
34695            <td class="entry_hal_version">
34696              <p>3.<wbr/>2</p>
34697            </td>
34698
34699            <td class="entry_tags">
34700            </td>
34701
34702          </tr>
34703          <tr class="entries_header">
34704            <th class="th_details" colspan="6">Details</th>
34705          </tr>
34706          <tr class="entry_cont">
34707            <td class="entry_details" colspan="6">
34708              <p>The camera device will provide the estimate from its
34709statistics unit on the white balance transforms to use
34710for the next frame.<wbr/> These are the values the camera device believes
34711are the best fit for the current output frame.<wbr/> This may
34712be different than the transform used for this frame,<wbr/> since
34713statistics processing on data from a new frame typically
34714completes after the transform has already been applied to
34715that frame.<wbr/></p>
34716<p>These estimates must be provided for all frames,<wbr/> even if
34717capture settings and color transforms are set by the application.<wbr/></p>
34718<p>This value should always be calculated by the auto-white balance (AWB) block,<wbr/>
34719regardless of the android.<wbr/>control.<wbr/>* current values.<wbr/></p>
34720            </td>
34721          </tr>
34722
34723
34724          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
34725           <!-- end of entry -->
34726
34727
34728          <tr class="entry" id="dynamic_android.statistics.sceneFlicker">
34729            <td class="entry_name
34730             " rowspan="3">
34731              android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker
34732            </td>
34733            <td class="entry_type">
34734                <span class="entry_type_name entry_type_name_enum">byte</span>
34735
34736              <span class="entry_type_visibility"> [public]</span>
34737
34738
34739              <span class="entry_type_hwlevel">[full] </span>
34740
34741
34742
34743                <ul class="entry_type_enum">
34744                  <li>
34745                    <span class="entry_type_enum_name">NONE (v3.2)</span>
34746                    <span class="entry_type_enum_notes"><p>The camera device does not detect any flickering illumination
34747in the current scene.<wbr/></p></span>
34748                  </li>
34749                  <li>
34750                    <span class="entry_type_enum_name">50HZ (v3.2)</span>
34751                    <span class="entry_type_enum_notes"><p>The camera device detects illumination flickering at 50Hz
34752in the current scene.<wbr/></p></span>
34753                  </li>
34754                  <li>
34755                    <span class="entry_type_enum_name">60HZ (v3.2)</span>
34756                    <span class="entry_type_enum_notes"><p>The camera device detects illumination flickering at 60Hz
34757in the current scene.<wbr/></p></span>
34758                  </li>
34759                </ul>
34760
34761            </td> <!-- entry_type -->
34762
34763            <td class="entry_description">
34764              <p>The camera device estimated scene illumination lighting
34765frequency.<wbr/></p>
34766            </td>
34767
34768            <td class="entry_units">
34769            </td>
34770
34771            <td class="entry_range">
34772            </td>
34773
34774            <td class="entry_hal_version">
34775              <p>3.<wbr/>2</p>
34776            </td>
34777
34778            <td class="entry_tags">
34779            </td>
34780
34781          </tr>
34782          <tr class="entries_header">
34783            <th class="th_details" colspan="6">Details</th>
34784          </tr>
34785          <tr class="entry_cont">
34786            <td class="entry_details" colspan="6">
34787              <p>Many light sources,<wbr/> such as most fluorescent lights,<wbr/> flicker at a rate
34788that depends on the local utility power standards.<wbr/> This flicker must be
34789accounted for by auto-exposure routines to avoid artifacts in captured images.<wbr/>
34790The camera device uses this entry to tell the application what the scene
34791illuminant frequency is.<wbr/></p>
34792<p>When manual exposure control is enabled
34793(<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> ==
34794OFF</code>),<wbr/> the <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> doesn't perform
34795antibanding,<wbr/> and the application can ensure it selects
34796exposure times that do not cause banding issues by looking
34797into this metadata field.<wbr/> See
34798<a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> for more details.<wbr/></p>
34799<p>Reports NONE if there doesn't appear to be flickering illumination.<wbr/></p>
34800            </td>
34801          </tr>
34802
34803
34804          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
34805           <!-- end of entry -->
34806
34807
34808          <tr class="entry" id="dynamic_android.statistics.hotPixelMapMode">
34809            <td class="entry_name
34810             " rowspan="3">
34811              android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode
34812            </td>
34813            <td class="entry_type">
34814                <span class="entry_type_name entry_type_name_enum">byte</span>
34815
34816              <span class="entry_type_visibility"> [public as boolean]</span>
34817
34818
34819
34820
34821
34822                <ul class="entry_type_enum">
34823                  <li>
34824                    <span class="entry_type_enum_name">OFF (v3.2)</span>
34825                    <span class="entry_type_enum_notes"><p>Hot pixel map production is disabled.<wbr/></p></span>
34826                  </li>
34827                  <li>
34828                    <span class="entry_type_enum_name">ON (v3.2)</span>
34829                    <span class="entry_type_enum_notes"><p>Hot pixel map production is enabled.<wbr/></p></span>
34830                  </li>
34831                </ul>
34832
34833            </td> <!-- entry_type -->
34834
34835            <td class="entry_description">
34836              <p>Operating mode for hot pixel map generation.<wbr/></p>
34837            </td>
34838
34839            <td class="entry_units">
34840            </td>
34841
34842            <td class="entry_range">
34843              <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>
34844            </td>
34845
34846            <td class="entry_hal_version">
34847              <p>3.<wbr/>2</p>
34848            </td>
34849
34850            <td class="entry_tags">
34851              <ul class="entry_tags">
34852                  <li><a href="#tag_V1">V1</a></li>
34853                  <li><a href="#tag_RAW">RAW</a></li>
34854              </ul>
34855            </td>
34856
34857          </tr>
34858          <tr class="entries_header">
34859            <th class="th_details" colspan="6">Details</th>
34860          </tr>
34861          <tr class="entry_cont">
34862            <td class="entry_details" colspan="6">
34863              <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/>
34864If set to <code>false</code>,<wbr/> no hot pixel map will be returned.<wbr/></p>
34865            </td>
34866          </tr>
34867
34868
34869          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
34870           <!-- end of entry -->
34871
34872
34873          <tr class="entry" id="dynamic_android.statistics.hotPixelMap">
34874            <td class="entry_name
34875             " rowspan="5">
34876              android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map
34877            </td>
34878            <td class="entry_type">
34879                <span class="entry_type_name">int32</span>
34880                <span class="entry_type_container">x</span>
34881
34882                <span class="entry_type_array">
34883                  2 x n
34884                </span>
34885              <span class="entry_type_visibility"> [public as point]</span>
34886
34887
34888
34889
34890                <div class="entry_type_notes">list of coordinates based on android.<wbr/>sensor.<wbr/>pixel<wbr/>Array<wbr/>Size</div>
34891
34892
34893            </td> <!-- entry_type -->
34894
34895            <td class="entry_description">
34896              <p>List of <code>(x,<wbr/> y)</code> coordinates of hot/<wbr/>defective pixels on the sensor.<wbr/></p>
34897            </td>
34898
34899            <td class="entry_units">
34900            </td>
34901
34902            <td class="entry_range">
34903              <p>n &lt;= number of pixels on the sensor.<wbr/>
34904The <code>(x,<wbr/> y)</code> coordinates must be bounded by
34905<a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
34906            </td>
34907
34908            <td class="entry_hal_version">
34909              <p>3.<wbr/>2</p>
34910            </td>
34911
34912            <td class="entry_tags">
34913              <ul class="entry_tags">
34914                  <li><a href="#tag_V1">V1</a></li>
34915                  <li><a href="#tag_RAW">RAW</a></li>
34916              </ul>
34917            </td>
34918
34919          </tr>
34920          <tr class="entries_header">
34921            <th class="th_details" colspan="6">Details</th>
34922          </tr>
34923          <tr class="entry_cont">
34924            <td class="entry_details" colspan="6">
34925              <p>A coordinate <code>(x,<wbr/> y)</code> must lie between <code>(0,<wbr/> 0)</code>,<wbr/> and
34926<code>(width - 1,<wbr/> height - 1)</code> (inclusive),<wbr/> which are the top-left and
34927bottom-right of the pixel array,<wbr/> respectively.<wbr/> The width and
34928height dimensions are given in <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/>
34929This may include hot pixels that lie outside of the active array
34930bounds given by <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
34931<p>For camera devices with the
34932<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR">Camera<wbr/>Metadata#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>ULTRA_<wbr/>HIGH_<wbr/>RESOLUTION_<wbr/>SENSOR</a>
34933capability or devices where
34934<a href="https://developer.android.com/reference/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a>
34935lists <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a>,<wbr/>
34936<a href="#static_android.sensor.info.pixelArraySizeMaximumResolution">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution</a> will be used as the
34937pixel array size if the corresponding request sets <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> to
34938<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p>
34939            </td>
34940          </tr>
34941
34942          <tr class="entries_header">
34943            <th class="th_details" colspan="6">HAL Implementation Details</th>
34944          </tr>
34945          <tr class="entry_cont">
34946            <td class="entry_details" colspan="6">
34947              <p>A hotpixel map contains the coordinates of pixels on the camera
34948sensor that do report valid values (usually due to defects in
34949the camera sensor).<wbr/> This includes pixels that are stuck at certain
34950values,<wbr/> or have a response that does not accurately encode the
34951incoming light from the scene.<wbr/></p>
34952<p>To avoid performance issues,<wbr/> there should be significantly fewer hot
34953pixels than actual pixels on the camera sensor.<wbr/></p>
34954            </td>
34955          </tr>
34956
34957          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
34958           <!-- end of entry -->
34959
34960
34961          <tr class="entry" id="dynamic_android.statistics.lensShadingMapMode">
34962            <td class="entry_name
34963             " rowspan="3">
34964              android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode
34965            </td>
34966            <td class="entry_type">
34967                <span class="entry_type_name entry_type_name_enum">byte</span>
34968
34969              <span class="entry_type_visibility"> [public]</span>
34970
34971
34972              <span class="entry_type_hwlevel">[full] </span>
34973
34974
34975
34976                <ul class="entry_type_enum">
34977                  <li>
34978                    <span class="entry_type_enum_name">OFF (v3.2)</span>
34979                    <span class="entry_type_enum_notes"><p>Do not include a lens shading map in the capture result.<wbr/></p></span>
34980                  </li>
34981                  <li>
34982                    <span class="entry_type_enum_name">ON (v3.2)</span>
34983                    <span class="entry_type_enum_notes"><p>Include a lens shading map in the capture result.<wbr/></p></span>
34984                  </li>
34985                </ul>
34986
34987            </td> <!-- entry_type -->
34988
34989            <td class="entry_description">
34990              <p>Whether the camera device will output the lens
34991shading map in output result metadata.<wbr/></p>
34992            </td>
34993
34994            <td class="entry_units">
34995            </td>
34996
34997            <td class="entry_range">
34998              <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>
34999            </td>
35000
35001            <td class="entry_hal_version">
35002              <p>3.<wbr/>2</p>
35003            </td>
35004
35005            <td class="entry_tags">
35006              <ul class="entry_tags">
35007                  <li><a href="#tag_RAW">RAW</a></li>
35008              </ul>
35009            </td>
35010
35011          </tr>
35012          <tr class="entries_header">
35013            <th class="th_details" colspan="6">Details</th>
35014          </tr>
35015          <tr class="entry_cont">
35016            <td class="entry_details" colspan="6">
35017              <p>When set to ON,<wbr/>
35018<a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> will be provided in
35019the output result metadata.<wbr/></p>
35020<p>ON is always supported on devices with the RAW capability.<wbr/></p>
35021            </td>
35022          </tr>
35023
35024
35025          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
35026           <!-- end of entry -->
35027
35028
35029          <tr class="entry" id="dynamic_android.statistics.oisDataMode">
35030            <td class="entry_name
35031             " rowspan="3">
35032              android.<wbr/>statistics.<wbr/>ois<wbr/>Data<wbr/>Mode
35033            </td>
35034            <td class="entry_type">
35035                <span class="entry_type_name entry_type_name_enum">byte</span>
35036
35037              <span class="entry_type_visibility"> [public]</span>
35038
35039
35040
35041
35042
35043                <ul class="entry_type_enum">
35044                  <li>
35045                    <span class="entry_type_enum_name">OFF (v3.3)</span>
35046                    <span class="entry_type_enum_notes"><p>Do not include OIS data in the capture result.<wbr/></p></span>
35047                  </li>
35048                  <li>
35049                    <span class="entry_type_enum_name">ON (v3.3)</span>
35050                    <span class="entry_type_enum_notes"><p>Include OIS data in the capture result.<wbr/></p></span>
35051                  </li>
35052                </ul>
35053
35054            </td> <!-- entry_type -->
35055
35056            <td class="entry_description">
35057              <p>A control for selecting whether optical stabilization (OIS) position
35058information is included in output result metadata.<wbr/></p>
35059            </td>
35060
35061            <td class="entry_units">
35062            </td>
35063
35064            <td class="entry_range">
35065              <p><a href="#static_android.statistics.info.availableOisDataModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Ois<wbr/>Data<wbr/>Modes</a></p>
35066            </td>
35067
35068            <td class="entry_hal_version">
35069              <p>3.<wbr/>3</p>
35070            </td>
35071
35072            <td class="entry_tags">
35073            </td>
35074
35075          </tr>
35076          <tr class="entries_header">
35077            <th class="th_details" colspan="6">Details</th>
35078          </tr>
35079          <tr class="entry_cont">
35080            <td class="entry_details" colspan="6">
35081              <p>Since optical image stabilization generally involves motion much faster than the duration
35082of individual image exposure,<wbr/> multiple OIS samples can be included for a single capture
35083result.<wbr/> For example,<wbr/> if the OIS reporting operates at 200 Hz,<wbr/> a typical camera operating
35084at 30fps may have 6-7 OIS samples per capture result.<wbr/> This information can be combined
35085with the rolling shutter skew to account for lens motion during image exposure in
35086post-processing algorithms.<wbr/></p>
35087            </td>
35088          </tr>
35089
35090
35091          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
35092           <!-- end of entry -->
35093
35094
35095          <tr class="entry" id="dynamic_android.statistics.oisTimestamps">
35096            <td class="entry_name
35097             " rowspan="3">
35098              android.<wbr/>statistics.<wbr/>ois<wbr/>Timestamps
35099            </td>
35100            <td class="entry_type">
35101                <span class="entry_type_name">int64</span>
35102                <span class="entry_type_container">x</span>
35103
35104                <span class="entry_type_array">
35105                  n
35106                </span>
35107              <span class="entry_type_visibility"> [ndk_public]</span>
35108
35109
35110
35111
35112
35113
35114            </td> <!-- entry_type -->
35115
35116            <td class="entry_description">
35117              <p>An array of timestamps of OIS samples,<wbr/> in nanoseconds.<wbr/></p>
35118            </td>
35119
35120            <td class="entry_units">
35121              nanoseconds
35122            </td>
35123
35124            <td class="entry_range">
35125            </td>
35126
35127            <td class="entry_hal_version">
35128              <p>3.<wbr/>3</p>
35129            </td>
35130
35131            <td class="entry_tags">
35132            </td>
35133
35134          </tr>
35135          <tr class="entries_header">
35136            <th class="th_details" colspan="6">Details</th>
35137          </tr>
35138          <tr class="entry_cont">
35139            <td class="entry_details" colspan="6">
35140              <p>The array contains the timestamps of OIS samples.<wbr/> The timestamps are in the same
35141timebase as and comparable to <a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a>.<wbr/></p>
35142            </td>
35143          </tr>
35144
35145
35146          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
35147           <!-- end of entry -->
35148
35149
35150          <tr class="entry" id="dynamic_android.statistics.oisXShifts">
35151            <td class="entry_name
35152             " rowspan="3">
35153              android.<wbr/>statistics.<wbr/>ois<wbr/>XShifts
35154            </td>
35155            <td class="entry_type">
35156                <span class="entry_type_name">float</span>
35157                <span class="entry_type_container">x</span>
35158
35159                <span class="entry_type_array">
35160                  n
35161                </span>
35162              <span class="entry_type_visibility"> [ndk_public]</span>
35163
35164
35165
35166
35167
35168
35169            </td> <!-- entry_type -->
35170
35171            <td class="entry_description">
35172              <p>An array of shifts of OIS samples,<wbr/> in x direction.<wbr/></p>
35173            </td>
35174
35175            <td class="entry_units">
35176              Pixels in active array.<wbr/>
35177            </td>
35178
35179            <td class="entry_range">
35180            </td>
35181
35182            <td class="entry_hal_version">
35183              <p>3.<wbr/>3</p>
35184            </td>
35185
35186            <td class="entry_tags">
35187            </td>
35188
35189          </tr>
35190          <tr class="entries_header">
35191            <th class="th_details" colspan="6">Details</th>
35192          </tr>
35193          <tr class="entry_cont">
35194            <td class="entry_details" colspan="6">
35195              <p>The array contains the amount of shifts in x direction,<wbr/> in pixels,<wbr/> based on OIS samples.<wbr/>
35196A positive value is a shift from left to right in the pre-correction active array
35197coordinate system.<wbr/> For example,<wbr/> if the optical center is (1000,<wbr/> 500) in pre-correction
35198active array coordinates,<wbr/> a shift of (3,<wbr/> 0) puts the new optical center at (1003,<wbr/> 500).<wbr/></p>
35199<p>The number of shifts must match the number of timestamps in
35200<a href="#dynamic_android.statistics.oisTimestamps">android.<wbr/>statistics.<wbr/>ois<wbr/>Timestamps</a>.<wbr/></p>
35201<p>The OIS samples are not affected by whether lens distortion correction is enabled (on
35202supporting devices).<wbr/> They are always reported in pre-correction active array coordinates,<wbr/>
35203since the scaling of OIS shifts would depend on the specific spot on the sensor the shift
35204is needed.<wbr/></p>
35205            </td>
35206          </tr>
35207
35208
35209          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
35210           <!-- end of entry -->
35211
35212
35213          <tr class="entry" id="dynamic_android.statistics.oisYShifts">
35214            <td class="entry_name
35215             " rowspan="3">
35216              android.<wbr/>statistics.<wbr/>ois<wbr/>YShifts
35217            </td>
35218            <td class="entry_type">
35219                <span class="entry_type_name">float</span>
35220                <span class="entry_type_container">x</span>
35221
35222                <span class="entry_type_array">
35223                  n
35224                </span>
35225              <span class="entry_type_visibility"> [ndk_public]</span>
35226
35227
35228
35229
35230
35231
35232            </td> <!-- entry_type -->
35233
35234            <td class="entry_description">
35235              <p>An array of shifts of OIS samples,<wbr/> in y direction.<wbr/></p>
35236            </td>
35237
35238            <td class="entry_units">
35239              Pixels in active array.<wbr/>
35240            </td>
35241
35242            <td class="entry_range">
35243            </td>
35244
35245            <td class="entry_hal_version">
35246              <p>3.<wbr/>3</p>
35247            </td>
35248
35249            <td class="entry_tags">
35250            </td>
35251
35252          </tr>
35253          <tr class="entries_header">
35254            <th class="th_details" colspan="6">Details</th>
35255          </tr>
35256          <tr class="entry_cont">
35257            <td class="entry_details" colspan="6">
35258              <p>The array contains the amount of shifts in y direction,<wbr/> in pixels,<wbr/> based on OIS samples.<wbr/>
35259A positive value is a shift from top to bottom in pre-correction active array coordinate
35260system.<wbr/> For example,<wbr/> if the optical center is (1000,<wbr/> 500) in active array coordinates,<wbr/> a
35261shift of (0,<wbr/> 5) puts the new optical center at (1000,<wbr/> 505).<wbr/></p>
35262<p>The number of shifts must match the number of timestamps in
35263<a href="#dynamic_android.statistics.oisTimestamps">android.<wbr/>statistics.<wbr/>ois<wbr/>Timestamps</a>.<wbr/></p>
35264<p>The OIS samples are not affected by whether lens distortion correction is enabled (on
35265supporting devices).<wbr/> They are always reported in pre-correction active array coordinates,<wbr/>
35266since the scaling of OIS shifts would depend on the specific spot on the sensor the shift
35267is needed.<wbr/></p>
35268            </td>
35269          </tr>
35270
35271
35272          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
35273           <!-- end of entry -->
35274
35275
35276          <tr class="entry" id="dynamic_android.statistics.oisSamples">
35277            <td class="entry_name
35278             " rowspan="3">
35279              android.<wbr/>statistics.<wbr/>ois<wbr/>Samples
35280            </td>
35281            <td class="entry_type">
35282                <span class="entry_type_name">float</span>
35283                <span class="entry_type_container">x</span>
35284
35285                <span class="entry_type_array">
35286                  n
35287                </span>
35288              <span class="entry_type_visibility"> [java_public as oisSample]</span>
35289
35290              <span class="entry_type_synthetic">[synthetic] </span>
35291
35292
35293
35294
35295
35296            </td> <!-- entry_type -->
35297
35298            <td class="entry_description">
35299              <p>An array of optical stabilization (OIS) position samples.<wbr/></p>
35300            </td>
35301
35302            <td class="entry_units">
35303            </td>
35304
35305            <td class="entry_range">
35306            </td>
35307
35308            <td class="entry_hal_version">
35309              <p>3.<wbr/>3</p>
35310            </td>
35311
35312            <td class="entry_tags">
35313            </td>
35314
35315          </tr>
35316          <tr class="entries_header">
35317            <th class="th_details" colspan="6">Details</th>
35318          </tr>
35319          <tr class="entry_cont">
35320            <td class="entry_details" colspan="6">
35321              <p>Each OIS sample contains the timestamp and the amount of shifts in x and y direction,<wbr/>
35322in pixels,<wbr/> of the OIS sample.<wbr/></p>
35323<p>A positive value for a shift in x direction is a shift from left to right in the
35324pre-correction active array coordinate system.<wbr/> For example,<wbr/> if the optical center is
35325(1000,<wbr/> 500) in pre-correction active array coordinates,<wbr/> a shift of (3,<wbr/> 0) puts the new
35326optical center at (1003,<wbr/> 500).<wbr/></p>
35327<p>A positive value for a shift in y direction is a shift from top to bottom in
35328pre-correction active array coordinate system.<wbr/> For example,<wbr/> if the optical center is
35329(1000,<wbr/> 500) in active array coordinates,<wbr/> a shift of (0,<wbr/> 5) puts the new optical center at
35330(1000,<wbr/> 505).<wbr/></p>
35331<p>The OIS samples are not affected by whether lens distortion correction is enabled (on
35332supporting devices).<wbr/> They are always reported in pre-correction active array coordinates,<wbr/>
35333since the scaling of OIS shifts would depend on the specific spot on the sensor the shift
35334is needed.<wbr/></p>
35335            </td>
35336          </tr>
35337
35338
35339          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
35340           <!-- end of entry -->
35341
35342
35343          <tr class="entry" id="dynamic_android.statistics.lensIntrinsicsSamples">
35344            <td class="entry_name
35345             " rowspan="3">
35346              android.<wbr/>statistics.<wbr/>lens<wbr/>Intrinsics<wbr/>Samples
35347            </td>
35348            <td class="entry_type">
35349                <span class="entry_type_name">float</span>
35350                <span class="entry_type_container">x</span>
35351
35352                <span class="entry_type_array">
35353                  n
35354                </span>
35355              <span class="entry_type_visibility"> [java_public as lensIntrinsicsSample]</span>
35356
35357              <span class="entry_type_synthetic">[synthetic] </span>
35358
35359
35360
35361
35362
35363            </td> <!-- entry_type -->
35364
35365            <td class="entry_description">
35366              <p>An array of intra-frame lens intrinsic samples.<wbr/></p>
35367            </td>
35368
35369            <td class="entry_units">
35370            </td>
35371
35372            <td class="entry_range">
35373            </td>
35374
35375            <td class="entry_hal_version">
35376              <p>3.<wbr/>10</p>
35377            </td>
35378
35379            <td class="entry_tags">
35380            </td>
35381
35382          </tr>
35383          <tr class="entries_header">
35384            <th class="th_details" colspan="6">Details</th>
35385          </tr>
35386          <tr class="entry_cont">
35387            <td class="entry_details" colspan="6">
35388              <p>Contains an array of intra-frame <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> updates.<wbr/> This must
35389not be confused or compared to <a href="#dynamic_android.statistics.oisSamples">android.<wbr/>statistics.<wbr/>ois<wbr/>Samples</a>.<wbr/> Although OIS could be the
35390main driver,<wbr/> all relevant factors such as focus distance and optical zoom must also
35391be included.<wbr/> Do note that OIS samples must not be applied on top of the lens intrinsic
35392samples.<wbr/>
35393Support for this capture result can be queried via
35394<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureResultKeys">CameraCharacteristics#getAvailableCaptureResultKeys</a>.<wbr/>
35395If available,<wbr/> clients can expect multiple samples per capture result.<wbr/> The specific
35396amount will depend on current frame duration and sampling rate.<wbr/> Generally a sampling rate
35397greater than or equal to 200Hz is considered sufficient for high quality results.<wbr/></p>
35398            </td>
35399          </tr>
35400
35401
35402          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
35403           <!-- end of entry -->
35404
35405
35406          <tr class="entry" id="dynamic_android.statistics.lensIntrinsicTimestamps">
35407            <td class="entry_name
35408             " rowspan="3">
35409              android.<wbr/>statistics.<wbr/>lens<wbr/>Intrinsic<wbr/>Timestamps
35410            </td>
35411            <td class="entry_type">
35412                <span class="entry_type_name">int64</span>
35413                <span class="entry_type_container">x</span>
35414
35415                <span class="entry_type_array">
35416                  n
35417                </span>
35418              <span class="entry_type_visibility"> [ndk_public]</span>
35419
35420
35421
35422
35423
35424
35425            </td> <!-- entry_type -->
35426
35427            <td class="entry_description">
35428              <p>An array of timestamps of lens intrinsics samples,<wbr/> in nanoseconds.<wbr/></p>
35429            </td>
35430
35431            <td class="entry_units">
35432              nanoseconds
35433            </td>
35434
35435            <td class="entry_range">
35436            </td>
35437
35438            <td class="entry_hal_version">
35439              <p>3.<wbr/>10</p>
35440            </td>
35441
35442            <td class="entry_tags">
35443            </td>
35444
35445          </tr>
35446          <tr class="entries_header">
35447            <th class="th_details" colspan="6">Details</th>
35448          </tr>
35449          <tr class="entry_cont">
35450            <td class="entry_details" colspan="6">
35451              <p>The array contains the timestamps of lens intrinsics samples.<wbr/> The timestamps are in the
35452same timebase as and comparable to <a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a>.<wbr/></p>
35453            </td>
35454          </tr>
35455
35456
35457          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
35458           <!-- end of entry -->
35459
35460
35461          <tr class="entry" id="dynamic_android.statistics.lensIntrinsicSamples">
35462            <td class="entry_name
35463             " rowspan="3">
35464              android.<wbr/>statistics.<wbr/>lens<wbr/>Intrinsic<wbr/>Samples
35465            </td>
35466            <td class="entry_type">
35467                <span class="entry_type_name">float</span>
35468                <span class="entry_type_container">x</span>
35469
35470                <span class="entry_type_array">
35471                  5 x n
35472                </span>
35473              <span class="entry_type_visibility"> [ndk_public]</span>
35474
35475
35476
35477
35478
35479
35480            </td> <!-- entry_type -->
35481
35482            <td class="entry_description">
35483              <p>An array of intra-frame lens intrinsics.<wbr/></p>
35484            </td>
35485
35486            <td class="entry_units">
35487
35488          Pixels in the android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size coordinate system.<wbr/>
35489
35490            </td>
35491
35492            <td class="entry_range">
35493            </td>
35494
35495            <td class="entry_hal_version">
35496              <p>3.<wbr/>10</p>
35497            </td>
35498
35499            <td class="entry_tags">
35500            </td>
35501
35502          </tr>
35503          <tr class="entries_header">
35504            <th class="th_details" colspan="6">Details</th>
35505          </tr>
35506          <tr class="entry_cont">
35507            <td class="entry_details" colspan="6">
35508              <p>The data layout and contents of individual array entries matches with
35509<a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a>.<wbr/></p>
35510            </td>
35511          </tr>
35512
35513
35514          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
35515           <!-- end of entry -->
35516
35517
35518
35519      <!-- end of kind -->
35520      </tbody>
35521
35522  <!-- end of section -->
35523  <tr><td colspan="7" id="section_tonemap" class="section">tonemap</td></tr>
35524
35525
35526      <tr><td colspan="7" class="kind">controls</td></tr>
35527
35528      <thead class="entries_header">
35529        <tr>
35530          <th class="th_name">Property Name</th>
35531          <th class="th_type">Type</th>
35532          <th class="th_description">Description</th>
35533          <th class="th_units">Units</th>
35534          <th class="th_range">Range</th>
35535          <th class="th_hal_version">Initial HIDL HAL version</th>
35536          <th class="th_tags">Tags</th>
35537        </tr>
35538      </thead>
35539
35540      <tbody>
35541
35542
35543
35544
35545
35546
35547
35548
35549
35550
35551          <tr class="entry" id="controls_android.tonemap.curveBlue">
35552            <td class="entry_name
35553             " rowspan="3">
35554              android.<wbr/>tonemap.<wbr/>curve<wbr/>Blue
35555            </td>
35556            <td class="entry_type">
35557                <span class="entry_type_name">float</span>
35558                <span class="entry_type_container">x</span>
35559
35560                <span class="entry_type_array">
35561                  n x 2
35562                </span>
35563              <span class="entry_type_visibility"> [ndk_public]</span>
35564
35565
35566              <span class="entry_type_hwlevel">[full] </span>
35567
35568
35569                <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>
35570
35571
35572            </td> <!-- entry_type -->
35573
35574            <td class="entry_description">
35575              <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the blue
35576channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
35577CONTRAST_<wbr/>CURVE.<wbr/></p>
35578            </td>
35579
35580            <td class="entry_units">
35581            </td>
35582
35583            <td class="entry_range">
35584            </td>
35585
35586            <td class="entry_hal_version">
35587              <p>3.<wbr/>2</p>
35588            </td>
35589
35590            <td class="entry_tags">
35591            </td>
35592
35593          </tr>
35594          <tr class="entries_header">
35595            <th class="th_details" colspan="6">Details</th>
35596          </tr>
35597          <tr class="entry_cont">
35598            <td class="entry_details" colspan="6">
35599              <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
35600            </td>
35601          </tr>
35602
35603
35604          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
35605           <!-- end of entry -->
35606
35607
35608          <tr class="entry" id="controls_android.tonemap.curveGreen">
35609            <td class="entry_name
35610             " rowspan="3">
35611              android.<wbr/>tonemap.<wbr/>curve<wbr/>Green
35612            </td>
35613            <td class="entry_type">
35614                <span class="entry_type_name">float</span>
35615                <span class="entry_type_container">x</span>
35616
35617                <span class="entry_type_array">
35618                  n x 2
35619                </span>
35620              <span class="entry_type_visibility"> [ndk_public]</span>
35621
35622
35623              <span class="entry_type_hwlevel">[full] </span>
35624
35625
35626                <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>
35627
35628
35629            </td> <!-- entry_type -->
35630
35631            <td class="entry_description">
35632              <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the green
35633channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
35634CONTRAST_<wbr/>CURVE.<wbr/></p>
35635            </td>
35636
35637            <td class="entry_units">
35638            </td>
35639
35640            <td class="entry_range">
35641            </td>
35642
35643            <td class="entry_hal_version">
35644              <p>3.<wbr/>2</p>
35645            </td>
35646
35647            <td class="entry_tags">
35648            </td>
35649
35650          </tr>
35651          <tr class="entries_header">
35652            <th class="th_details" colspan="6">Details</th>
35653          </tr>
35654          <tr class="entry_cont">
35655            <td class="entry_details" colspan="6">
35656              <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
35657            </td>
35658          </tr>
35659
35660
35661          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
35662           <!-- end of entry -->
35663
35664
35665          <tr class="entry" id="controls_android.tonemap.curveRed">
35666            <td class="entry_name
35667             " rowspan="5">
35668              android.<wbr/>tonemap.<wbr/>curve<wbr/>Red
35669            </td>
35670            <td class="entry_type">
35671                <span class="entry_type_name">float</span>
35672                <span class="entry_type_container">x</span>
35673
35674                <span class="entry_type_array">
35675                  n x 2
35676                </span>
35677              <span class="entry_type_visibility"> [ndk_public]</span>
35678
35679
35680              <span class="entry_type_hwlevel">[full] </span>
35681
35682
35683                <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>
35684
35685
35686            </td> <!-- entry_type -->
35687
35688            <td class="entry_description">
35689              <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the red
35690channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
35691CONTRAST_<wbr/>CURVE.<wbr/></p>
35692            </td>
35693
35694            <td class="entry_units">
35695            </td>
35696
35697            <td class="entry_range">
35698              <p>0-1 on both input and output coordinates,<wbr/> normalized
35699as a floating-point value such that 0 == black and 1 == white.<wbr/></p>
35700            </td>
35701
35702            <td class="entry_hal_version">
35703              <p>3.<wbr/>2</p>
35704            </td>
35705
35706            <td class="entry_tags">
35707            </td>
35708
35709          </tr>
35710          <tr class="entries_header">
35711            <th class="th_details" colspan="6">Details</th>
35712          </tr>
35713          <tr class="entry_cont">
35714            <td class="entry_details" colspan="6">
35715              <p>Each channel's curve is defined by an array of control points:</p>
35716<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> =
35717  [ P0in,<wbr/> P0out,<wbr/> P1in,<wbr/> P1out,<wbr/> P2in,<wbr/> P2out,<wbr/> P3in,<wbr/> P3out,<wbr/> ...,<wbr/> PNin,<wbr/> PNout ]
357182 &lt;= N &lt;= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
35719<p>These are sorted in order of increasing <code>Pin</code>; it is
35720required that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
35721define a complete mapping.<wbr/> For input values between control points,<wbr/>
35722the camera device must linearly interpolate between the control
35723points.<wbr/></p>
35724<p>Each curve can have an independent number of points,<wbr/> and the number
35725of points can be less than max (that is,<wbr/> the request doesn't have to
35726always provide a curve with number of points equivalent to
35727<a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
35728<p>For devices with MONOCHROME capability,<wbr/> all three channels must have the same set of
35729control points.<wbr/></p>
35730<p>A few examples,<wbr/> and their corresponding graphical mappings; these
35731only specify the red channel and the precision is limited to 4
35732digits,<wbr/> for conciseness.<wbr/></p>
35733<p>Linear mapping:</p>
35734<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 ]
35735</code></pre>
35736<p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
35737<p>Invert mapping:</p>
35738<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 ]
35739</code></pre>
35740<p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
35741<p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
35742<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
35743  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/>
35744  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/>
35745  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/>
35746  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 ]
35747</code></pre>
35748<p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
35749<p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
35750<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
35751  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/>
35752  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/>
35753  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/>
35754  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 ]
35755</code></pre>
35756<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
35757            </td>
35758          </tr>
35759
35760          <tr class="entries_header">
35761            <th class="th_details" colspan="6">HAL Implementation Details</th>
35762          </tr>
35763          <tr class="entry_cont">
35764            <td class="entry_details" colspan="6">
35765              <p>For good quality of mapping,<wbr/> at least 128 control points are
35766preferred.<wbr/></p>
35767<p>A typical use case of this would be a gamma-1/<wbr/>2.<wbr/>2 curve,<wbr/> with as many
35768control points used as are available.<wbr/></p>
35769            </td>
35770          </tr>
35771
35772          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
35773           <!-- end of entry -->
35774
35775
35776          <tr class="entry" id="controls_android.tonemap.curve">
35777            <td class="entry_name
35778             " rowspan="5">
35779              android.<wbr/>tonemap.<wbr/>curve
35780            </td>
35781            <td class="entry_type">
35782                <span class="entry_type_name">float</span>
35783
35784              <span class="entry_type_visibility"> [java_public as tonemapCurve]</span>
35785
35786              <span class="entry_type_synthetic">[synthetic] </span>
35787
35788              <span class="entry_type_hwlevel">[full] </span>
35789
35790
35791
35792
35793            </td> <!-- entry_type -->
35794
35795            <td class="entry_description">
35796              <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a>
35797is CONTRAST_<wbr/>CURVE.<wbr/></p>
35798            </td>
35799
35800            <td class="entry_units">
35801            </td>
35802
35803            <td class="entry_range">
35804            </td>
35805
35806            <td class="entry_hal_version">
35807              <p>3.<wbr/>2</p>
35808            </td>
35809
35810            <td class="entry_tags">
35811            </td>
35812
35813          </tr>
35814          <tr class="entries_header">
35815            <th class="th_details" colspan="6">Details</th>
35816          </tr>
35817          <tr class="entry_cont">
35818            <td class="entry_details" colspan="6">
35819              <p>The tonemapCurve consist of three curves for each of red,<wbr/> green,<wbr/> and blue
35820channels respectively.<wbr/> The following example uses the red channel as an
35821example.<wbr/> The same logic applies to green and blue channel.<wbr/>
35822Each channel's curve is defined by an array of control points:</p>
35823<pre><code>curveRed =
35824  [ 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) ]
358252 &lt;= N &lt;= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
35826<p>These are sorted in order of increasing <code>Pin</code>; it is always
35827guaranteed that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
35828define a complete mapping.<wbr/> For input values between control points,<wbr/>
35829the camera device must linearly interpolate between the control
35830points.<wbr/></p>
35831<p>Each curve can have an independent number of points,<wbr/> and the number
35832of points can be less than max (that is,<wbr/> the request doesn't have to
35833always provide a curve with number of points equivalent to
35834<a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
35835<p>For devices with MONOCHROME capability,<wbr/> all three channels must have the same set of
35836control points.<wbr/></p>
35837<p>A few examples,<wbr/> and their corresponding graphical mappings; these
35838only specify the red channel and the precision is limited to 4
35839digits,<wbr/> for conciseness.<wbr/></p>
35840<p>Linear mapping:</p>
35841<pre><code>curveRed = [ (0,<wbr/> 0),<wbr/> (1.<wbr/>0,<wbr/> 1.<wbr/>0) ]
35842</code></pre>
35843<p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
35844<p>Invert mapping:</p>
35845<pre><code>curveRed = [ (0,<wbr/> 1.<wbr/>0),<wbr/> (1.<wbr/>0,<wbr/> 0) ]
35846</code></pre>
35847<p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
35848<p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
35849<pre><code>curveRed = [
35850  (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/>
35851  (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/>
35852  (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/>
35853  (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) ]
35854</code></pre>
35855<p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
35856<p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
35857<pre><code>curveRed = [
35858  (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/>
35859  (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/>
35860  (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/>
35861  (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) ]
35862</code></pre>
35863<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
35864            </td>
35865          </tr>
35866
35867          <tr class="entries_header">
35868            <th class="th_details" colspan="6">HAL Implementation Details</th>
35869          </tr>
35870          <tr class="entry_cont">
35871            <td class="entry_details" colspan="6">
35872              <p>This entry is created by the framework from the curveRed,<wbr/> curveGreen and
35873curveBlue entries.<wbr/></p>
35874            </td>
35875          </tr>
35876
35877          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
35878           <!-- end of entry -->
35879
35880
35881          <tr class="entry" id="controls_android.tonemap.mode">
35882            <td class="entry_name
35883             " rowspan="3">
35884              android.<wbr/>tonemap.<wbr/>mode
35885            </td>
35886            <td class="entry_type">
35887                <span class="entry_type_name entry_type_name_enum">byte</span>
35888
35889              <span class="entry_type_visibility"> [public]</span>
35890
35891
35892              <span class="entry_type_hwlevel">[full] </span>
35893
35894
35895
35896                <ul class="entry_type_enum">
35897                  <li>
35898                    <span class="entry_type_enum_name">CONTRAST_CURVE (v3.2)</span>
35899                    <span class="entry_type_enum_notes"><p>Use the tone mapping curve specified in
35900the <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>* entries.<wbr/></p>
35901<p>All color enhancement and tonemapping must be disabled,<wbr/> except
35902for applying the tonemapping curve specified by
35903<a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p>
35904<p>Must not slow down frame rate relative to raw
35905sensor output.<wbr/></p></span>
35906                  </li>
35907                  <li>
35908                    <span class="entry_type_enum_name">FAST (v3.2)</span>
35909                    <span class="entry_type_enum_notes"><p>Advanced gamma mapping and color enhancement may be applied,<wbr/> without
35910reducing frame rate compared to raw sensor output.<wbr/></p></span>
35911                  </li>
35912                  <li>
35913                    <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
35914                    <span class="entry_type_enum_notes"><p>High-quality gamma mapping and color enhancement will be applied,<wbr/> at
35915the cost of possibly reduced frame rate compared to raw sensor output.<wbr/></p></span>
35916                  </li>
35917                  <li>
35918                    <span class="entry_type_enum_name">GAMMA_VALUE (v3.2)</span>
35919                    <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 perform
35920tonemapping.<wbr/></p>
35921<p>All color enhancement and tonemapping must be disabled,<wbr/> except
35922for applying the tonemapping curve specified by <a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a>.<wbr/></p>
35923<p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
35924                  </li>
35925                  <li>
35926                    <span class="entry_type_enum_name">PRESET_CURVE (v3.2)</span>
35927                    <span class="entry_type_enum_notes"><p>Use the preset tonemapping curve specified in
35928<a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a> to perform tonemapping.<wbr/></p>
35929<p>All color enhancement and tonemapping must be disabled,<wbr/> except
35930for applying the tonemapping curve specified by
35931<a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a>.<wbr/></p>
35932<p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
35933                  </li>
35934                </ul>
35935
35936            </td> <!-- entry_type -->
35937
35938            <td class="entry_description">
35939              <p>High-level global contrast/<wbr/>gamma/<wbr/>tonemapping control.<wbr/></p>
35940            </td>
35941
35942            <td class="entry_units">
35943            </td>
35944
35945            <td class="entry_range">
35946              <p><a href="#static_android.tonemap.availableToneMapModes">android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes</a></p>
35947            </td>
35948
35949            <td class="entry_hal_version">
35950              <p>3.<wbr/>2</p>
35951            </td>
35952
35953            <td class="entry_tags">
35954            </td>
35955
35956          </tr>
35957          <tr class="entries_header">
35958            <th class="th_details" colspan="6">Details</th>
35959          </tr>
35960          <tr class="entry_cont">
35961            <td class="entry_details" colspan="6">
35962              <p>When switching to an application-defined contrast curve by setting
35963<a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> to CONTRAST_<wbr/>CURVE,<wbr/> the curve is defined
35964per-channel with a set of <code>(in,<wbr/> out)</code> points that specify the
35965mapping from input high-bit-depth pixel value to the output
35966low-bit-depth value.<wbr/>  Since the actual pixel ranges of both input
35967and output may change depending on the camera pipeline,<wbr/> the values
35968are specified by normalized floating-point numbers.<wbr/></p>
35969<p>More-complex color mapping operations such as 3D color look-up
35970tables,<wbr/> selective chroma enhancement,<wbr/> or other non-linear color
35971transforms will be disabled when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
35972CONTRAST_<wbr/>CURVE.<wbr/></p>
35973<p>When using either FAST or HIGH_<wbr/>QUALITY,<wbr/> the camera device will
35974emit its own tonemap curve in <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/>
35975These values are always available,<wbr/> and as close as possible to the
35976actually used nonlinear/<wbr/>nonglobal transforms.<wbr/></p>
35977<p>If a request is sent with CONTRAST_<wbr/>CURVE with the camera device's
35978provided curve in FAST or HIGH_<wbr/>QUALITY,<wbr/> the image's tonemap will be
35979roughly the same.<wbr/></p>
35980            </td>
35981          </tr>
35982
35983
35984          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
35985           <!-- end of entry -->
35986
35987
35988          <tr class="entry" id="controls_android.tonemap.gamma">
35989            <td class="entry_name
35990             " rowspan="3">
35991              android.<wbr/>tonemap.<wbr/>gamma
35992            </td>
35993            <td class="entry_type">
35994                <span class="entry_type_name">float</span>
35995
35996              <span class="entry_type_visibility"> [public]</span>
35997
35998
35999
36000
36001
36002
36003            </td> <!-- entry_type -->
36004
36005            <td class="entry_description">
36006              <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
36007GAMMA_<wbr/>VALUE</p>
36008            </td>
36009
36010            <td class="entry_units">
36011            </td>
36012
36013            <td class="entry_range">
36014            </td>
36015
36016            <td class="entry_hal_version">
36017              <p>3.<wbr/>2</p>
36018            </td>
36019
36020            <td class="entry_tags">
36021            </td>
36022
36023          </tr>
36024          <tr class="entries_header">
36025            <th class="th_details" colspan="6">Details</th>
36026          </tr>
36027          <tr class="entry_cont">
36028            <td class="entry_details" colspan="6">
36029              <p>The tonemap curve will be defined the following formula:</p>
36030<ul>
36031<li>OUT = pow(IN,<wbr/> 1.<wbr/>0 /<wbr/> gamma)</li>
36032</ul>
36033<p>where IN and OUT is the input pixel value scaled to range [0.<wbr/>0,<wbr/> 1.<wbr/>0],<wbr/>
36034pow is the power function and gamma is the gamma value specified by this
36035key.<wbr/></p>
36036<p>The same curve will be applied to all color channels.<wbr/> The camera device
36037may clip the input gamma value to its supported range.<wbr/> The actual applied
36038value will be returned in capture result.<wbr/></p>
36039<p>The valid range of gamma value varies on different devices,<wbr/> but values
36040within [1.<wbr/>0,<wbr/> 5.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
36041            </td>
36042          </tr>
36043
36044
36045          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
36046           <!-- end of entry -->
36047
36048
36049          <tr class="entry" id="controls_android.tonemap.presetCurve">
36050            <td class="entry_name
36051             " rowspan="3">
36052              android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve
36053            </td>
36054            <td class="entry_type">
36055                <span class="entry_type_name entry_type_name_enum">byte</span>
36056
36057              <span class="entry_type_visibility"> [public]</span>
36058
36059
36060
36061
36062
36063                <ul class="entry_type_enum">
36064                  <li>
36065                    <span class="entry_type_enum_name">SRGB (v3.2)</span>
36066                    <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by sRGB</p></span>
36067                  </li>
36068                  <li>
36069                    <span class="entry_type_enum_name">REC709 (v3.2)</span>
36070                    <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by ITU-R BT.<wbr/>709</p></span>
36071                  </li>
36072                </ul>
36073
36074            </td> <!-- entry_type -->
36075
36076            <td class="entry_description">
36077              <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
36078PRESET_<wbr/>CURVE</p>
36079            </td>
36080
36081            <td class="entry_units">
36082            </td>
36083
36084            <td class="entry_range">
36085            </td>
36086
36087            <td class="entry_hal_version">
36088              <p>3.<wbr/>2</p>
36089            </td>
36090
36091            <td class="entry_tags">
36092            </td>
36093
36094          </tr>
36095          <tr class="entries_header">
36096            <th class="th_details" colspan="6">Details</th>
36097          </tr>
36098          <tr class="entry_cont">
36099            <td class="entry_details" colspan="6">
36100              <p>The tonemap curve will be defined by specified standard.<wbr/></p>
36101<p>sRGB (approximated by 16 control points):</p>
36102<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
36103<p>Rec.<wbr/> 709 (approximated by 16 control points):</p>
36104<p><img alt="Rec. 709 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/rec709_tonemap.png"/></p>
36105<p>Note that above figures show a 16 control points approximation of preset
36106curves.<wbr/> Camera devices may apply a different approximation to the curve.<wbr/></p>
36107            </td>
36108          </tr>
36109
36110
36111          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
36112           <!-- end of entry -->
36113
36114
36115
36116      <!-- end of kind -->
36117      </tbody>
36118      <tr><td colspan="7" class="kind">static</td></tr>
36119
36120      <thead class="entries_header">
36121        <tr>
36122          <th class="th_name">Property Name</th>
36123          <th class="th_type">Type</th>
36124          <th class="th_description">Description</th>
36125          <th class="th_units">Units</th>
36126          <th class="th_range">Range</th>
36127          <th class="th_hal_version">Initial HIDL HAL version</th>
36128          <th class="th_tags">Tags</th>
36129        </tr>
36130      </thead>
36131
36132      <tbody>
36133
36134
36135
36136
36137
36138
36139
36140
36141
36142
36143          <tr class="entry" id="static_android.tonemap.maxCurvePoints">
36144            <td class="entry_name
36145             " rowspan="5">
36146              android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points
36147            </td>
36148            <td class="entry_type">
36149                <span class="entry_type_name">int32</span>
36150
36151              <span class="entry_type_visibility"> [public]</span>
36152
36153
36154              <span class="entry_type_hwlevel">[full] </span>
36155
36156
36157
36158
36159            </td> <!-- entry_type -->
36160
36161            <td class="entry_description">
36162              <p>Maximum number of supported points in the
36163tonemap curve that can be used for <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p>
36164            </td>
36165
36166            <td class="entry_units">
36167            </td>
36168
36169            <td class="entry_range">
36170            </td>
36171
36172            <td class="entry_hal_version">
36173              <p>3.<wbr/>2</p>
36174            </td>
36175
36176            <td class="entry_tags">
36177            </td>
36178
36179          </tr>
36180          <tr class="entries_header">
36181            <th class="th_details" colspan="6">Details</th>
36182          </tr>
36183          <tr class="entry_cont">
36184            <td class="entry_details" colspan="6">
36185              <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
36186less than this maximum,<wbr/> the camera device will resample the curve to its internal
36187representation,<wbr/> using linear interpolation.<wbr/></p>
36188<p>The output curves in the result metadata may have a different number
36189of points than the input curves,<wbr/> and will represent the actual
36190hardware curves used as closely as possible when linearly interpolated.<wbr/></p>
36191            </td>
36192          </tr>
36193
36194          <tr class="entries_header">
36195            <th class="th_details" colspan="6">HAL Implementation Details</th>
36196          </tr>
36197          <tr class="entry_cont">
36198            <td class="entry_details" colspan="6">
36199              <p>This value must be at least 64.<wbr/> This should be at least 128.<wbr/></p>
36200            </td>
36201          </tr>
36202
36203          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
36204           <!-- end of entry -->
36205
36206
36207          <tr class="entry" id="static_android.tonemap.availableToneMapModes">
36208            <td class="entry_name
36209             " rowspan="5">
36210              android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes
36211            </td>
36212            <td class="entry_type">
36213                <span class="entry_type_name">byte</span>
36214                <span class="entry_type_container">x</span>
36215
36216                <span class="entry_type_array">
36217                  n
36218                </span>
36219              <span class="entry_type_visibility"> [public as enumList]</span>
36220
36221
36222              <span class="entry_type_hwlevel">[full] </span>
36223
36224
36225                <div class="entry_type_notes">list of enums</div>
36226
36227
36228            </td> <!-- entry_type -->
36229
36230            <td class="entry_description">
36231              <p>List of tonemapping modes for <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> that are supported by this camera
36232device.<wbr/></p>
36233            </td>
36234
36235            <td class="entry_units">
36236            </td>
36237
36238            <td class="entry_range">
36239              <p>Any value listed in <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a></p>
36240            </td>
36241
36242            <td class="entry_hal_version">
36243              <p>3.<wbr/>2</p>
36244            </td>
36245
36246            <td class="entry_tags">
36247            </td>
36248
36249          </tr>
36250          <tr class="entries_header">
36251            <th class="th_details" colspan="6">Details</th>
36252          </tr>
36253          <tr class="entry_cont">
36254            <td class="entry_details" colspan="6">
36255              <p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always contain
36256at least one of below mode combinations:</p>
36257<ul>
36258<li>CONTRAST_<wbr/>CURVE,<wbr/> FAST and HIGH_<wbr/>QUALITY</li>
36259<li>GAMMA_<wbr/>VALUE,<wbr/> PRESET_<wbr/>CURVE,<wbr/> FAST and HIGH_<wbr/>QUALITY</li>
36260</ul>
36261<p>This includes all FULL level devices.<wbr/></p>
36262            </td>
36263          </tr>
36264
36265          <tr class="entries_header">
36266            <th class="th_details" colspan="6">HAL Implementation Details</th>
36267          </tr>
36268          <tr class="entry_cont">
36269            <td class="entry_details" colspan="6">
36270              <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if automatic tonemap control is available
36271on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
36272That is,<wbr/> if the highest quality implementation on the camera device does not slow down
36273capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
36274            </td>
36275          </tr>
36276
36277          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
36278           <!-- end of entry -->
36279
36280
36281
36282      <!-- end of kind -->
36283      </tbody>
36284      <tr><td colspan="7" class="kind">dynamic</td></tr>
36285
36286      <thead class="entries_header">
36287        <tr>
36288          <th class="th_name">Property Name</th>
36289          <th class="th_type">Type</th>
36290          <th class="th_description">Description</th>
36291          <th class="th_units">Units</th>
36292          <th class="th_range">Range</th>
36293          <th class="th_hal_version">Initial HIDL HAL version</th>
36294          <th class="th_tags">Tags</th>
36295        </tr>
36296      </thead>
36297
36298      <tbody>
36299
36300
36301
36302
36303
36304
36305
36306
36307
36308
36309          <tr class="entry" id="dynamic_android.tonemap.curveBlue">
36310            <td class="entry_name
36311             " rowspan="3">
36312              android.<wbr/>tonemap.<wbr/>curve<wbr/>Blue
36313            </td>
36314            <td class="entry_type">
36315                <span class="entry_type_name">float</span>
36316                <span class="entry_type_container">x</span>
36317
36318                <span class="entry_type_array">
36319                  n x 2
36320                </span>
36321              <span class="entry_type_visibility"> [ndk_public]</span>
36322
36323
36324              <span class="entry_type_hwlevel">[full] </span>
36325
36326
36327                <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>
36328
36329
36330            </td> <!-- entry_type -->
36331
36332            <td class="entry_description">
36333              <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the blue
36334channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
36335CONTRAST_<wbr/>CURVE.<wbr/></p>
36336            </td>
36337
36338            <td class="entry_units">
36339            </td>
36340
36341            <td class="entry_range">
36342            </td>
36343
36344            <td class="entry_hal_version">
36345              <p>3.<wbr/>2</p>
36346            </td>
36347
36348            <td class="entry_tags">
36349            </td>
36350
36351          </tr>
36352          <tr class="entries_header">
36353            <th class="th_details" colspan="6">Details</th>
36354          </tr>
36355          <tr class="entry_cont">
36356            <td class="entry_details" colspan="6">
36357              <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
36358            </td>
36359          </tr>
36360
36361
36362          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
36363           <!-- end of entry -->
36364
36365
36366          <tr class="entry" id="dynamic_android.tonemap.curveGreen">
36367            <td class="entry_name
36368             " rowspan="3">
36369              android.<wbr/>tonemap.<wbr/>curve<wbr/>Green
36370            </td>
36371            <td class="entry_type">
36372                <span class="entry_type_name">float</span>
36373                <span class="entry_type_container">x</span>
36374
36375                <span class="entry_type_array">
36376                  n x 2
36377                </span>
36378              <span class="entry_type_visibility"> [ndk_public]</span>
36379
36380
36381              <span class="entry_type_hwlevel">[full] </span>
36382
36383
36384                <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>
36385
36386
36387            </td> <!-- entry_type -->
36388
36389            <td class="entry_description">
36390              <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the green
36391channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
36392CONTRAST_<wbr/>CURVE.<wbr/></p>
36393            </td>
36394
36395            <td class="entry_units">
36396            </td>
36397
36398            <td class="entry_range">
36399            </td>
36400
36401            <td class="entry_hal_version">
36402              <p>3.<wbr/>2</p>
36403            </td>
36404
36405            <td class="entry_tags">
36406            </td>
36407
36408          </tr>
36409          <tr class="entries_header">
36410            <th class="th_details" colspan="6">Details</th>
36411          </tr>
36412          <tr class="entry_cont">
36413            <td class="entry_details" colspan="6">
36414              <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
36415            </td>
36416          </tr>
36417
36418
36419          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
36420           <!-- end of entry -->
36421
36422
36423          <tr class="entry" id="dynamic_android.tonemap.curveRed">
36424            <td class="entry_name
36425             " rowspan="5">
36426              android.<wbr/>tonemap.<wbr/>curve<wbr/>Red
36427            </td>
36428            <td class="entry_type">
36429                <span class="entry_type_name">float</span>
36430                <span class="entry_type_container">x</span>
36431
36432                <span class="entry_type_array">
36433                  n x 2
36434                </span>
36435              <span class="entry_type_visibility"> [ndk_public]</span>
36436
36437
36438              <span class="entry_type_hwlevel">[full] </span>
36439
36440
36441                <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>
36442
36443
36444            </td> <!-- entry_type -->
36445
36446            <td class="entry_description">
36447              <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the red
36448channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
36449CONTRAST_<wbr/>CURVE.<wbr/></p>
36450            </td>
36451
36452            <td class="entry_units">
36453            </td>
36454
36455            <td class="entry_range">
36456              <p>0-1 on both input and output coordinates,<wbr/> normalized
36457as a floating-point value such that 0 == black and 1 == white.<wbr/></p>
36458            </td>
36459
36460            <td class="entry_hal_version">
36461              <p>3.<wbr/>2</p>
36462            </td>
36463
36464            <td class="entry_tags">
36465            </td>
36466
36467          </tr>
36468          <tr class="entries_header">
36469            <th class="th_details" colspan="6">Details</th>
36470          </tr>
36471          <tr class="entry_cont">
36472            <td class="entry_details" colspan="6">
36473              <p>Each channel's curve is defined by an array of control points:</p>
36474<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> =
36475  [ P0in,<wbr/> P0out,<wbr/> P1in,<wbr/> P1out,<wbr/> P2in,<wbr/> P2out,<wbr/> P3in,<wbr/> P3out,<wbr/> ...,<wbr/> PNin,<wbr/> PNout ]
364762 &lt;= N &lt;= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
36477<p>These are sorted in order of increasing <code>Pin</code>; it is
36478required that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
36479define a complete mapping.<wbr/> For input values between control points,<wbr/>
36480the camera device must linearly interpolate between the control
36481points.<wbr/></p>
36482<p>Each curve can have an independent number of points,<wbr/> and the number
36483of points can be less than max (that is,<wbr/> the request doesn't have to
36484always provide a curve with number of points equivalent to
36485<a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
36486<p>For devices with MONOCHROME capability,<wbr/> all three channels must have the same set of
36487control points.<wbr/></p>
36488<p>A few examples,<wbr/> and their corresponding graphical mappings; these
36489only specify the red channel and the precision is limited to 4
36490digits,<wbr/> for conciseness.<wbr/></p>
36491<p>Linear mapping:</p>
36492<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 ]
36493</code></pre>
36494<p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
36495<p>Invert mapping:</p>
36496<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 ]
36497</code></pre>
36498<p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
36499<p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
36500<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
36501  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/>
36502  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/>
36503  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/>
36504  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 ]
36505</code></pre>
36506<p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
36507<p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
36508<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
36509  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/>
36510  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/>
36511  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/>
36512  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 ]
36513</code></pre>
36514<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
36515            </td>
36516          </tr>
36517
36518          <tr class="entries_header">
36519            <th class="th_details" colspan="6">HAL Implementation Details</th>
36520          </tr>
36521          <tr class="entry_cont">
36522            <td class="entry_details" colspan="6">
36523              <p>For good quality of mapping,<wbr/> at least 128 control points are
36524preferred.<wbr/></p>
36525<p>A typical use case of this would be a gamma-1/<wbr/>2.<wbr/>2 curve,<wbr/> with as many
36526control points used as are available.<wbr/></p>
36527            </td>
36528          </tr>
36529
36530          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
36531           <!-- end of entry -->
36532
36533
36534          <tr class="entry" id="dynamic_android.tonemap.curve">
36535            <td class="entry_name
36536             " rowspan="5">
36537              android.<wbr/>tonemap.<wbr/>curve
36538            </td>
36539            <td class="entry_type">
36540                <span class="entry_type_name">float</span>
36541
36542              <span class="entry_type_visibility"> [java_public as tonemapCurve]</span>
36543
36544              <span class="entry_type_synthetic">[synthetic] </span>
36545
36546              <span class="entry_type_hwlevel">[full] </span>
36547
36548
36549
36550
36551            </td> <!-- entry_type -->
36552
36553            <td class="entry_description">
36554              <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a>
36555is CONTRAST_<wbr/>CURVE.<wbr/></p>
36556            </td>
36557
36558            <td class="entry_units">
36559            </td>
36560
36561            <td class="entry_range">
36562            </td>
36563
36564            <td class="entry_hal_version">
36565              <p>3.<wbr/>2</p>
36566            </td>
36567
36568            <td class="entry_tags">
36569            </td>
36570
36571          </tr>
36572          <tr class="entries_header">
36573            <th class="th_details" colspan="6">Details</th>
36574          </tr>
36575          <tr class="entry_cont">
36576            <td class="entry_details" colspan="6">
36577              <p>The tonemapCurve consist of three curves for each of red,<wbr/> green,<wbr/> and blue
36578channels respectively.<wbr/> The following example uses the red channel as an
36579example.<wbr/> The same logic applies to green and blue channel.<wbr/>
36580Each channel's curve is defined by an array of control points:</p>
36581<pre><code>curveRed =
36582  [ 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) ]
365832 &lt;= N &lt;= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
36584<p>These are sorted in order of increasing <code>Pin</code>; it is always
36585guaranteed that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
36586define a complete mapping.<wbr/> For input values between control points,<wbr/>
36587the camera device must linearly interpolate between the control
36588points.<wbr/></p>
36589<p>Each curve can have an independent number of points,<wbr/> and the number
36590of points can be less than max (that is,<wbr/> the request doesn't have to
36591always provide a curve with number of points equivalent to
36592<a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
36593<p>For devices with MONOCHROME capability,<wbr/> all three channels must have the same set of
36594control points.<wbr/></p>
36595<p>A few examples,<wbr/> and their corresponding graphical mappings; these
36596only specify the red channel and the precision is limited to 4
36597digits,<wbr/> for conciseness.<wbr/></p>
36598<p>Linear mapping:</p>
36599<pre><code>curveRed = [ (0,<wbr/> 0),<wbr/> (1.<wbr/>0,<wbr/> 1.<wbr/>0) ]
36600</code></pre>
36601<p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
36602<p>Invert mapping:</p>
36603<pre><code>curveRed = [ (0,<wbr/> 1.<wbr/>0),<wbr/> (1.<wbr/>0,<wbr/> 0) ]
36604</code></pre>
36605<p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
36606<p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
36607<pre><code>curveRed = [
36608  (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/>
36609  (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/>
36610  (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/>
36611  (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) ]
36612</code></pre>
36613<p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
36614<p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
36615<pre><code>curveRed = [
36616  (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/>
36617  (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/>
36618  (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/>
36619  (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) ]
36620</code></pre>
36621<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
36622            </td>
36623          </tr>
36624
36625          <tr class="entries_header">
36626            <th class="th_details" colspan="6">HAL Implementation Details</th>
36627          </tr>
36628          <tr class="entry_cont">
36629            <td class="entry_details" colspan="6">
36630              <p>This entry is created by the framework from the curveRed,<wbr/> curveGreen and
36631curveBlue entries.<wbr/></p>
36632            </td>
36633          </tr>
36634
36635          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
36636           <!-- end of entry -->
36637
36638
36639          <tr class="entry" id="dynamic_android.tonemap.mode">
36640            <td class="entry_name
36641             " rowspan="3">
36642              android.<wbr/>tonemap.<wbr/>mode
36643            </td>
36644            <td class="entry_type">
36645                <span class="entry_type_name entry_type_name_enum">byte</span>
36646
36647              <span class="entry_type_visibility"> [public]</span>
36648
36649
36650              <span class="entry_type_hwlevel">[full] </span>
36651
36652
36653
36654                <ul class="entry_type_enum">
36655                  <li>
36656                    <span class="entry_type_enum_name">CONTRAST_CURVE (v3.2)</span>
36657                    <span class="entry_type_enum_notes"><p>Use the tone mapping curve specified in
36658the <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>* entries.<wbr/></p>
36659<p>All color enhancement and tonemapping must be disabled,<wbr/> except
36660for applying the tonemapping curve specified by
36661<a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p>
36662<p>Must not slow down frame rate relative to raw
36663sensor output.<wbr/></p></span>
36664                  </li>
36665                  <li>
36666                    <span class="entry_type_enum_name">FAST (v3.2)</span>
36667                    <span class="entry_type_enum_notes"><p>Advanced gamma mapping and color enhancement may be applied,<wbr/> without
36668reducing frame rate compared to raw sensor output.<wbr/></p></span>
36669                  </li>
36670                  <li>
36671                    <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
36672                    <span class="entry_type_enum_notes"><p>High-quality gamma mapping and color enhancement will be applied,<wbr/> at
36673the cost of possibly reduced frame rate compared to raw sensor output.<wbr/></p></span>
36674                  </li>
36675                  <li>
36676                    <span class="entry_type_enum_name">GAMMA_VALUE (v3.2)</span>
36677                    <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 perform
36678tonemapping.<wbr/></p>
36679<p>All color enhancement and tonemapping must be disabled,<wbr/> except
36680for applying the tonemapping curve specified by <a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a>.<wbr/></p>
36681<p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
36682                  </li>
36683                  <li>
36684                    <span class="entry_type_enum_name">PRESET_CURVE (v3.2)</span>
36685                    <span class="entry_type_enum_notes"><p>Use the preset tonemapping curve specified in
36686<a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a> to perform tonemapping.<wbr/></p>
36687<p>All color enhancement and tonemapping must be disabled,<wbr/> except
36688for applying the tonemapping curve specified by
36689<a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a>.<wbr/></p>
36690<p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
36691                  </li>
36692                </ul>
36693
36694            </td> <!-- entry_type -->
36695
36696            <td class="entry_description">
36697              <p>High-level global contrast/<wbr/>gamma/<wbr/>tonemapping control.<wbr/></p>
36698            </td>
36699
36700            <td class="entry_units">
36701            </td>
36702
36703            <td class="entry_range">
36704              <p><a href="#static_android.tonemap.availableToneMapModes">android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes</a></p>
36705            </td>
36706
36707            <td class="entry_hal_version">
36708              <p>3.<wbr/>2</p>
36709            </td>
36710
36711            <td class="entry_tags">
36712            </td>
36713
36714          </tr>
36715          <tr class="entries_header">
36716            <th class="th_details" colspan="6">Details</th>
36717          </tr>
36718          <tr class="entry_cont">
36719            <td class="entry_details" colspan="6">
36720              <p>When switching to an application-defined contrast curve by setting
36721<a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> to CONTRAST_<wbr/>CURVE,<wbr/> the curve is defined
36722per-channel with a set of <code>(in,<wbr/> out)</code> points that specify the
36723mapping from input high-bit-depth pixel value to the output
36724low-bit-depth value.<wbr/>  Since the actual pixel ranges of both input
36725and output may change depending on the camera pipeline,<wbr/> the values
36726are specified by normalized floating-point numbers.<wbr/></p>
36727<p>More-complex color mapping operations such as 3D color look-up
36728tables,<wbr/> selective chroma enhancement,<wbr/> or other non-linear color
36729transforms will be disabled when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
36730CONTRAST_<wbr/>CURVE.<wbr/></p>
36731<p>When using either FAST or HIGH_<wbr/>QUALITY,<wbr/> the camera device will
36732emit its own tonemap curve in <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/>
36733These values are always available,<wbr/> and as close as possible to the
36734actually used nonlinear/<wbr/>nonglobal transforms.<wbr/></p>
36735<p>If a request is sent with CONTRAST_<wbr/>CURVE with the camera device's
36736provided curve in FAST or HIGH_<wbr/>QUALITY,<wbr/> the image's tonemap will be
36737roughly the same.<wbr/></p>
36738            </td>
36739          </tr>
36740
36741
36742          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
36743           <!-- end of entry -->
36744
36745
36746          <tr class="entry" id="dynamic_android.tonemap.gamma">
36747            <td class="entry_name
36748             " rowspan="3">
36749              android.<wbr/>tonemap.<wbr/>gamma
36750            </td>
36751            <td class="entry_type">
36752                <span class="entry_type_name">float</span>
36753
36754              <span class="entry_type_visibility"> [public]</span>
36755
36756
36757
36758
36759
36760
36761            </td> <!-- entry_type -->
36762
36763            <td class="entry_description">
36764              <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
36765GAMMA_<wbr/>VALUE</p>
36766            </td>
36767
36768            <td class="entry_units">
36769            </td>
36770
36771            <td class="entry_range">
36772            </td>
36773
36774            <td class="entry_hal_version">
36775              <p>3.<wbr/>2</p>
36776            </td>
36777
36778            <td class="entry_tags">
36779            </td>
36780
36781          </tr>
36782          <tr class="entries_header">
36783            <th class="th_details" colspan="6">Details</th>
36784          </tr>
36785          <tr class="entry_cont">
36786            <td class="entry_details" colspan="6">
36787              <p>The tonemap curve will be defined the following formula:</p>
36788<ul>
36789<li>OUT = pow(IN,<wbr/> 1.<wbr/>0 /<wbr/> gamma)</li>
36790</ul>
36791<p>where IN and OUT is the input pixel value scaled to range [0.<wbr/>0,<wbr/> 1.<wbr/>0],<wbr/>
36792pow is the power function and gamma is the gamma value specified by this
36793key.<wbr/></p>
36794<p>The same curve will be applied to all color channels.<wbr/> The camera device
36795may clip the input gamma value to its supported range.<wbr/> The actual applied
36796value will be returned in capture result.<wbr/></p>
36797<p>The valid range of gamma value varies on different devices,<wbr/> but values
36798within [1.<wbr/>0,<wbr/> 5.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
36799            </td>
36800          </tr>
36801
36802
36803          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
36804           <!-- end of entry -->
36805
36806
36807          <tr class="entry" id="dynamic_android.tonemap.presetCurve">
36808            <td class="entry_name
36809             " rowspan="3">
36810              android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve
36811            </td>
36812            <td class="entry_type">
36813                <span class="entry_type_name entry_type_name_enum">byte</span>
36814
36815              <span class="entry_type_visibility"> [public]</span>
36816
36817
36818
36819
36820
36821                <ul class="entry_type_enum">
36822                  <li>
36823                    <span class="entry_type_enum_name">SRGB (v3.2)</span>
36824                    <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by sRGB</p></span>
36825                  </li>
36826                  <li>
36827                    <span class="entry_type_enum_name">REC709 (v3.2)</span>
36828                    <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by ITU-R BT.<wbr/>709</p></span>
36829                  </li>
36830                </ul>
36831
36832            </td> <!-- entry_type -->
36833
36834            <td class="entry_description">
36835              <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
36836PRESET_<wbr/>CURVE</p>
36837            </td>
36838
36839            <td class="entry_units">
36840            </td>
36841
36842            <td class="entry_range">
36843            </td>
36844
36845            <td class="entry_hal_version">
36846              <p>3.<wbr/>2</p>
36847            </td>
36848
36849            <td class="entry_tags">
36850            </td>
36851
36852          </tr>
36853          <tr class="entries_header">
36854            <th class="th_details" colspan="6">Details</th>
36855          </tr>
36856          <tr class="entry_cont">
36857            <td class="entry_details" colspan="6">
36858              <p>The tonemap curve will be defined by specified standard.<wbr/></p>
36859<p>sRGB (approximated by 16 control points):</p>
36860<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
36861<p>Rec.<wbr/> 709 (approximated by 16 control points):</p>
36862<p><img alt="Rec. 709 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/rec709_tonemap.png"/></p>
36863<p>Note that above figures show a 16 control points approximation of preset
36864curves.<wbr/> Camera devices may apply a different approximation to the curve.<wbr/></p>
36865            </td>
36866          </tr>
36867
36868
36869          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
36870           <!-- end of entry -->
36871
36872
36873
36874      <!-- end of kind -->
36875      </tbody>
36876
36877  <!-- end of section -->
36878  <tr><td colspan="7" id="section_led" class="section">led</td></tr>
36879
36880
36881      <tr><td colspan="7" class="kind">controls</td></tr>
36882
36883      <thead class="entries_header">
36884        <tr>
36885          <th class="th_name">Property Name</th>
36886          <th class="th_type">Type</th>
36887          <th class="th_description">Description</th>
36888          <th class="th_units">Units</th>
36889          <th class="th_range">Range</th>
36890          <th class="th_hal_version">Initial HIDL HAL version</th>
36891          <th class="th_tags">Tags</th>
36892        </tr>
36893      </thead>
36894
36895      <tbody>
36896
36897
36898
36899
36900
36901
36902
36903
36904
36905
36906          <tr class="entry" id="controls_android.led.transmit">
36907            <td class="entry_name
36908             " rowspan="1">
36909              android.<wbr/>led.<wbr/>transmit
36910            </td>
36911            <td class="entry_type">
36912                <span class="entry_type_name entry_type_name_enum">byte</span>
36913
36914              <span class="entry_type_visibility"> [hidden as boolean]</span>
36915
36916
36917
36918
36919
36920                <ul class="entry_type_enum">
36921                  <li>
36922                    <span class="entry_type_enum_name">OFF (v3.2)</span>
36923                  </li>
36924                  <li>
36925                    <span class="entry_type_enum_name">ON (v3.2)</span>
36926                  </li>
36927                </ul>
36928
36929            </td> <!-- entry_type -->
36930
36931            <td class="entry_description">
36932              <p>This LED is nominally used to indicate to the user
36933that the camera is powered on and may be streaming images back to the
36934Application Processor.<wbr/> In certain rare circumstances,<wbr/> the OS may
36935disable this when video is processed locally and not transmitted to
36936any untrusted applications.<wbr/></p>
36937<p>In particular,<wbr/> the LED <em>must</em> always be on when the data could be
36938transmitted off the device.<wbr/> The LED <em>should</em> always be on whenever
36939data is stored locally on the device.<wbr/></p>
36940<p>The LED <em>may</em> be off if a trusted application is using the data that
36941doesn't violate the above rules.<wbr/></p>
36942            </td>
36943
36944            <td class="entry_units">
36945            </td>
36946
36947            <td class="entry_range">
36948            </td>
36949
36950            <td class="entry_hal_version">
36951              <p>3.<wbr/>2</p>
36952            </td>
36953
36954            <td class="entry_tags">
36955            </td>
36956
36957          </tr>
36958
36959
36960          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
36961           <!-- end of entry -->
36962
36963
36964
36965      <!-- end of kind -->
36966      </tbody>
36967      <tr><td colspan="7" class="kind">dynamic</td></tr>
36968
36969      <thead class="entries_header">
36970        <tr>
36971          <th class="th_name">Property Name</th>
36972          <th class="th_type">Type</th>
36973          <th class="th_description">Description</th>
36974          <th class="th_units">Units</th>
36975          <th class="th_range">Range</th>
36976          <th class="th_hal_version">Initial HIDL HAL version</th>
36977          <th class="th_tags">Tags</th>
36978        </tr>
36979      </thead>
36980
36981      <tbody>
36982
36983
36984
36985
36986
36987
36988
36989
36990
36991
36992          <tr class="entry" id="dynamic_android.led.transmit">
36993            <td class="entry_name
36994             " rowspan="1">
36995              android.<wbr/>led.<wbr/>transmit
36996            </td>
36997            <td class="entry_type">
36998                <span class="entry_type_name entry_type_name_enum">byte</span>
36999
37000              <span class="entry_type_visibility"> [hidden as boolean]</span>
37001
37002
37003
37004
37005
37006                <ul class="entry_type_enum">
37007                  <li>
37008                    <span class="entry_type_enum_name">OFF (v3.2)</span>
37009                  </li>
37010                  <li>
37011                    <span class="entry_type_enum_name">ON (v3.2)</span>
37012                  </li>
37013                </ul>
37014
37015            </td> <!-- entry_type -->
37016
37017            <td class="entry_description">
37018              <p>This LED is nominally used to indicate to the user
37019that the camera is powered on and may be streaming images back to the
37020Application Processor.<wbr/> In certain rare circumstances,<wbr/> the OS may
37021disable this when video is processed locally and not transmitted to
37022any untrusted applications.<wbr/></p>
37023<p>In particular,<wbr/> the LED <em>must</em> always be on when the data could be
37024transmitted off the device.<wbr/> The LED <em>should</em> always be on whenever
37025data is stored locally on the device.<wbr/></p>
37026<p>The LED <em>may</em> be off if a trusted application is using the data that
37027doesn't violate the above rules.<wbr/></p>
37028            </td>
37029
37030            <td class="entry_units">
37031            </td>
37032
37033            <td class="entry_range">
37034            </td>
37035
37036            <td class="entry_hal_version">
37037              <p>3.<wbr/>2</p>
37038            </td>
37039
37040            <td class="entry_tags">
37041            </td>
37042
37043          </tr>
37044
37045
37046          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
37047           <!-- end of entry -->
37048
37049
37050
37051      <!-- end of kind -->
37052      </tbody>
37053      <tr><td colspan="7" class="kind">static</td></tr>
37054
37055      <thead class="entries_header">
37056        <tr>
37057          <th class="th_name">Property Name</th>
37058          <th class="th_type">Type</th>
37059          <th class="th_description">Description</th>
37060          <th class="th_units">Units</th>
37061          <th class="th_range">Range</th>
37062          <th class="th_hal_version">Initial HIDL HAL version</th>
37063          <th class="th_tags">Tags</th>
37064        </tr>
37065      </thead>
37066
37067      <tbody>
37068
37069
37070
37071
37072
37073
37074
37075
37076
37077
37078          <tr class="entry" id="static_android.led.availableLeds">
37079            <td class="entry_name
37080             " rowspan="1">
37081              android.<wbr/>led.<wbr/>available<wbr/>Leds
37082            </td>
37083            <td class="entry_type">
37084                <span class="entry_type_name entry_type_name_enum">byte</span>
37085                <span class="entry_type_container">x</span>
37086
37087                <span class="entry_type_array">
37088                  n
37089                </span>
37090              <span class="entry_type_visibility"> [hidden]</span>
37091
37092
37093
37094
37095
37096                <ul class="entry_type_enum">
37097                  <li>
37098                    <span class="entry_type_enum_name">TRANSMIT (v3.2)</span>
37099                    <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>
37100                  </li>
37101                </ul>
37102
37103            </td> <!-- entry_type -->
37104
37105            <td class="entry_description">
37106              <p>A list of camera LEDs that are available on this system.<wbr/></p>
37107            </td>
37108
37109            <td class="entry_units">
37110            </td>
37111
37112            <td class="entry_range">
37113            </td>
37114
37115            <td class="entry_hal_version">
37116              <p>3.<wbr/>2</p>
37117            </td>
37118
37119            <td class="entry_tags">
37120            </td>
37121
37122          </tr>
37123
37124
37125          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
37126           <!-- end of entry -->
37127
37128
37129
37130      <!-- end of kind -->
37131      </tbody>
37132
37133  <!-- end of section -->
37134  <tr><td colspan="7" id="section_info" class="section">info</td></tr>
37135
37136
37137      <tr><td colspan="7" class="kind">static</td></tr>
37138
37139      <thead class="entries_header">
37140        <tr>
37141          <th class="th_name">Property Name</th>
37142          <th class="th_type">Type</th>
37143          <th class="th_description">Description</th>
37144          <th class="th_units">Units</th>
37145          <th class="th_range">Range</th>
37146          <th class="th_hal_version">Initial HIDL HAL version</th>
37147          <th class="th_tags">Tags</th>
37148        </tr>
37149      </thead>
37150
37151      <tbody>
37152
37153
37154
37155
37156
37157
37158
37159
37160
37161
37162          <tr class="entry" id="static_android.info.supportedHardwareLevel">
37163            <td class="entry_name
37164             " rowspan="5">
37165              android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level
37166            </td>
37167            <td class="entry_type">
37168                <span class="entry_type_name entry_type_name_enum">byte</span>
37169
37170              <span class="entry_type_visibility"> [public]</span>
37171
37172
37173              <span class="entry_type_hwlevel">[legacy] </span>
37174
37175
37176
37177                <ul class="entry_type_enum">
37178                  <li>
37179                    <span class="entry_type_enum_name">LIMITED (v3.2)</span>
37180                    <span class="entry_type_enum_notes"><p>This camera device does not have enough capabilities to qualify as a <code>FULL</code> device or
37181better.<wbr/></p>
37182<p>Only the stream configurations listed in the <code>LEGACY</code> and <code>LIMITED</code>
37183<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice#limited-level-additional-guaranteed-configurations">tables</a>
37184in the documentation are guaranteed to be supported.<wbr/></p>
37185<p>All <code>LIMITED</code> devices support the <code>BACKWARDS_<wbr/>COMPATIBLE</code> capability,<wbr/> indicating basic
37186support for color image capture.<wbr/> The only exception is that the device may
37187alternatively support only the <code>DEPTH_<wbr/>OUTPUT</code> capability,<wbr/> if it can only output depth
37188measurements and not color images.<wbr/></p>
37189<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>
37190to lock exposure metering (and calculate flash power,<wbr/> for cameras with flash) before
37191capturing a high-quality still image.<wbr/></p>
37192<p>A <code>LIMITED</code> device that only lists the <code>BACKWARDS_<wbr/>COMPATIBLE</code> capability is only
37193required to support full-automatic operation and post-processing (<code>OFF</code> is not
37194supported 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
37195<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>)</p>
37196<p>Additional capabilities may optionally be supported by a <code>LIMITED</code>-level device,<wbr/> and
37197can be checked for in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p></span>
37198                  </li>
37199                  <li>
37200                    <span class="entry_type_enum_name">FULL (v3.2)</span>
37201                    <span class="entry_type_enum_notes"><p>This camera device is capable of supporting advanced imaging applications.<wbr/></p>
37202<p>The stream configurations listed in the <code>FULL</code>,<wbr/> <code>LEGACY</code> and <code>LIMITED</code>
37203<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice#full-level-additional-guaranteed-configurations">tables</a>
37204in the documentation are guaranteed to be supported.<wbr/></p>
37205<p>A <code>FULL</code> device will support below capabilities:</p>
37206<ul>
37207<li><code>BURST_<wbr/>CAPTURE</code> capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
37208  <code>BURST_<wbr/>CAPTURE</code>)</li>
37209<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>
37210<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>
37211<li>Manual post-processing control (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
37212  <code>MANUAL_<wbr/>POST_<wbr/>PROCESSING</code>)</li>
37213<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>
37214<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>
37215</ul>
37216<p>Note:
37217Pre-API level 23,<wbr/> FULL devices also supported arbitrary cropping region
37218(<a href="#static_android.scaler.croppingType">android.<wbr/>scaler.<wbr/>cropping<wbr/>Type</a> <code>== FREEFORM</code>); this requirement was relaxed in API level
3721923,<wbr/> and <code>FULL</code> devices may only support <code>CENTERED</code> cropping.<wbr/></p></span>
37220                  </li>
37221                  <li>
37222                    <span class="entry_type_enum_name">LEGACY (v3.2)</span>
37223                    <span class="entry_type_enum_notes"><p>This camera device is running in backward compatibility mode.<wbr/></p>
37224<p>Only the stream configurations listed in the <code>LEGACY</code>
37225<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice#legacy-level-guaranteed-configurations">table</a>
37226in the documentation are supported.<wbr/></p>
37227<p>A <code>LEGACY</code> device does not support per-frame control,<wbr/> manual sensor control,<wbr/> manual
37228post-processing,<wbr/> arbitrary cropping regions,<wbr/> and has relaxed performance constraints.<wbr/>
37229No additional capabilities beyond <code>BACKWARD_<wbr/>COMPATIBLE</code> will ever be listed by a
37230<code>LEGACY</code> device in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
37231<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>
37232devices.<wbr/> Instead,<wbr/> every request that includes a JPEG-format output target is treated
37233as triggering a still capture,<wbr/> internally executing a precapture trigger.<wbr/>  This may
37234fire the flash for flash power metering during precapture,<wbr/> and then fire the flash
37235for the final capture,<wbr/> if a flash is available on the device and the AE mode is set to
37236enable the flash.<wbr/></p>
37237<p>Devices that initially shipped with Android version <a href="https://developer.android.com/reference/android/os/Build.VERSION_CODES.html#Q">Q</a> or newer will not include any LEGACY-level devices.<wbr/></p></span>
37238                  </li>
37239                  <li>
37240                    <span class="entry_type_enum_name">3 (v3.2)</span>
37241                    <span class="entry_type_enum_notes"><p>This camera device is capable of YUV reprocessing and RAW data capture,<wbr/> in addition to
37242FULL-level capabilities.<wbr/></p>
37243<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
37244<code>LIMITED</code>
37245<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice#level-3-additional-guaranteed-configurations">tables</a>
37246in the documentation are guaranteed to be supported.<wbr/></p>
37247<p>The following additional capabilities are guaranteed to be supported:</p>
37248<ul>
37249<li><code>YUV_<wbr/>REPROCESSING</code> capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
37250  <code>YUV_<wbr/>REPROCESSING</code>)</li>
37251<li><code>RAW</code> capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
37252  <code>RAW</code>)</li>
37253</ul></span>
37254                  </li>
37255                  <li>
37256                    <span class="entry_type_enum_name">EXTERNAL (v3.3)</span>
37257                    <span class="entry_type_enum_notes"><p>This camera device is backed by an external camera connected to this Android device.<wbr/></p>
37258<p>The device has capability identical to a LIMITED level device,<wbr/> with the following
37259exceptions:</p>
37260<ul>
37261<li>The device may not report lens/<wbr/>sensor related information such as<ul>
37262<li><a href="#controls_android.lens.focalLength">android.<wbr/>lens.<wbr/>focal<wbr/>Length</a></li>
37263<li><a href="#static_android.lens.info.hyperfocalDistance">android.<wbr/>lens.<wbr/>info.<wbr/>hyperfocal<wbr/>Distance</a></li>
37264<li><a href="#static_android.sensor.info.physicalSize">android.<wbr/>sensor.<wbr/>info.<wbr/>physical<wbr/>Size</a></li>
37265<li><a href="#static_android.sensor.info.whiteLevel">android.<wbr/>sensor.<wbr/>info.<wbr/>white<wbr/>Level</a></li>
37266<li><a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a></li>
37267<li><a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a></li>
37268<li><a href="#dynamic_android.sensor.rollingShutterSkew">android.<wbr/>sensor.<wbr/>rolling<wbr/>Shutter<wbr/>Skew</a></li>
37269</ul>
37270</li>
37271<li>The device will report 0 for <a href="#static_android.sensor.orientation">android.<wbr/>sensor.<wbr/>orientation</a></li>
37272<li>The device has less guarantee on stable framerate,<wbr/> as the framerate partly depends
37273  on the external camera being used.<wbr/></li>
37274</ul></span>
37275                  </li>
37276                </ul>
37277
37278            </td> <!-- entry_type -->
37279
37280            <td class="entry_description">
37281              <p>Generally classifies the overall set of the camera device functionality.<wbr/></p>
37282            </td>
37283
37284            <td class="entry_units">
37285            </td>
37286
37287            <td class="entry_range">
37288            </td>
37289
37290            <td class="entry_hal_version">
37291              <p>3.<wbr/>2</p>
37292            </td>
37293
37294            <td class="entry_tags">
37295            </td>
37296
37297          </tr>
37298          <tr class="entries_header">
37299            <th class="th_details" colspan="6">Details</th>
37300          </tr>
37301          <tr class="entry_cont">
37302            <td class="entry_details" colspan="6">
37303              <p>The supported hardware level is a high-level description of the camera device's
37304capabilities,<wbr/> summarizing several capabilities into one field.<wbr/>  Each level adds additional
37305features to the previous one,<wbr/> and is always a strict superset of the previous level.<wbr/>
37306The ordering is <code>LEGACY &lt; LIMITED &lt; FULL &lt; LEVEL_<wbr/>3</code>.<wbr/></p>
37307<p>Starting from <code>LEVEL_<wbr/>3</code>,<wbr/> the level enumerations are guaranteed to be in increasing
37308numerical value as well.<wbr/> To check if a given device is at least at a given hardware level,<wbr/>
37309the following code snippet can be used:</p>
37310<pre><code>//<wbr/> Returns true if the device supports the required hardware level,<wbr/> or better.<wbr/>
37311boolean isHardwareLevelSupported(CameraCharacteristics c,<wbr/> int requiredLevel) {
37312    final int[] sortedHwLevels = {
37313        Camera<wbr/>Characteristics.<wbr/>INFO_<wbr/>SUPPORTED_<wbr/>HARDWARE_<wbr/>LEVEL_<wbr/>LEGACY,<wbr/>
37314        Camera<wbr/>Characteristics.<wbr/>INFO_<wbr/>SUPPORTED_<wbr/>HARDWARE_<wbr/>LEVEL_<wbr/>EXTERNAL,<wbr/>
37315        Camera<wbr/>Characteristics.<wbr/>INFO_<wbr/>SUPPORTED_<wbr/>HARDWARE_<wbr/>LEVEL_<wbr/>LIMITED,<wbr/>
37316        Camera<wbr/>Characteristics.<wbr/>INFO_<wbr/>SUPPORTED_<wbr/>HARDWARE_<wbr/>LEVEL_<wbr/>FULL,<wbr/>
37317        Camera<wbr/>Characteristics.<wbr/>INFO_<wbr/>SUPPORTED_<wbr/>HARDWARE_<wbr/>LEVEL_<wbr/>3
37318    };
37319    int deviceLevel = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>INFO_<wbr/>SUPPORTED_<wbr/>HARDWARE_<wbr/>LEVEL);
37320    if (requiredLevel == deviceLevel) {
37321        return true;
37322    }
37323
37324    for (int sortedlevel : sortedHwLevels) {
37325        if (sortedlevel == requiredLevel) {
37326            return true;
37327        } else if (sortedlevel == deviceLevel) {
37328            return false;
37329        }
37330    }
37331    return false; //<wbr/> Should never reach here
37332}
37333</code></pre>
37334<p>At a high level,<wbr/> the levels are:</p>
37335<ul>
37336<li><code>LEGACY</code> devices operate in a backwards-compatibility mode for older
37337  Android devices,<wbr/> and have very limited capabilities.<wbr/></li>
37338<li><code>LIMITED</code> devices represent the
37339  baseline feature set,<wbr/> and may also include additional capabilities that are
37340  subsets of <code>FULL</code>.<wbr/></li>
37341<li><code>FULL</code> devices additionally support per-frame manual control of sensor,<wbr/> flash,<wbr/> lens and
37342  post-processing settings,<wbr/> and image capture at a high rate.<wbr/></li>
37343<li><code>LEVEL_<wbr/>3</code> devices additionally support YUV reprocessing and RAW image capture,<wbr/> along
37344  with additional output stream configurations.<wbr/></li>
37345<li><code>EXTERNAL</code> devices are similar to <code>LIMITED</code> devices with exceptions like some sensor or
37346  lens information not reported or less stable framerates.<wbr/></li>
37347</ul>
37348<p>See the individual level enums for full descriptions of the supported capabilities.<wbr/>  The
37349<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> entry describes the device's capabilities at a
37350finer-grain level,<wbr/> if needed.<wbr/> In addition,<wbr/> many controls have their available settings or
37351ranges defined in individual entries from <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html">CameraCharacteristics</a>.<wbr/></p>
37352<p>Some features are not part of any particular hardware level or capability and must be
37353queried separately.<wbr/> These include:</p>
37354<ul>
37355<li>Calibrated timestamps (<a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME)</li>
37356<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>
37357<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>
37358<li>Optical or electrical image stabilization
37359  (<a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a>,<wbr/>
37360   <a href="#static_android.control.availableVideoStabilizationModes">android.<wbr/>control.<wbr/>available<wbr/>Video<wbr/>Stabilization<wbr/>Modes</a>)</li>
37361</ul>
37362            </td>
37363          </tr>
37364
37365          <tr class="entries_header">
37366            <th class="th_details" colspan="6">HAL Implementation Details</th>
37367          </tr>
37368          <tr class="entry_cont">
37369            <td class="entry_details" colspan="6">
37370              <p>A camera HALv3 device can implement one of three possible operational modes; LIMITED,<wbr/>
37371FULL,<wbr/> and LEVEL_<wbr/>3.<wbr/></p>
37372<p>FULL support or better is expected from new higher-end devices.<wbr/> Limited
37373mode has hardware requirements roughly in line with those for a camera HAL device v1
37374implementation,<wbr/> and is expected from older or inexpensive devices.<wbr/> Each level is a strict
37375superset of the previous level,<wbr/> and they share the same essential operational flow.<wbr/></p>
37376<p>For full details refer to "S3.<wbr/> Operational Modes" in camera3.<wbr/>h</p>
37377<p>Camera HAL3+ must not implement LEGACY mode.<wbr/> It is there for backwards compatibility in
37378the <code>android.<wbr/>hardware.<wbr/>camera2</code> user-facing API only on legacy HALv1 devices,<wbr/> and is
37379implemented by the camera framework code.<wbr/></p>
37380<p>EXTERNAL level devices have lower performance bar in CTS since the performance might depend
37381on the external camera being used and is not fully controlled by the device manufacturer.<wbr/>
37382The ITS test suite is exempted for the same reason.<wbr/></p>
37383            </td>
37384          </tr>
37385
37386          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
37387           <!-- end of entry -->
37388
37389
37390          <tr class="entry" id="static_android.info.version">
37391            <td class="entry_name
37392             " rowspan="5">
37393              android.<wbr/>info.<wbr/>version
37394            </td>
37395            <td class="entry_type">
37396                <span class="entry_type_name">byte</span>
37397
37398              <span class="entry_type_visibility"> [public as string]</span>
37399
37400
37401
37402
37403
37404
37405            </td> <!-- entry_type -->
37406
37407            <td class="entry_description">
37408              <p>A short string for manufacturer version information about the camera device,<wbr/> such as
37409ISP hardware,<wbr/> sensors,<wbr/> etc.<wbr/></p>
37410            </td>
37411
37412            <td class="entry_units">
37413            </td>
37414
37415            <td class="entry_range">
37416            </td>
37417
37418            <td class="entry_hal_version">
37419              <p>3.<wbr/>3</p>
37420            </td>
37421
37422            <td class="entry_tags">
37423            </td>
37424
37425          </tr>
37426          <tr class="entries_header">
37427            <th class="th_details" colspan="6">Details</th>
37428          </tr>
37429          <tr class="entry_cont">
37430            <td class="entry_details" colspan="6">
37431              <p>This can be used in <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_IMAGE_DESCRIPTION">TAG_<wbr/>IMAGE_<wbr/>DESCRIPTION</a>
37432in jpeg EXIF.<wbr/> This key may be absent if no version information is available on the
37433device.<wbr/></p>
37434            </td>
37435          </tr>
37436
37437          <tr class="entries_header">
37438            <th class="th_details" colspan="6">HAL Implementation Details</th>
37439          </tr>
37440          <tr class="entry_cont">
37441            <td class="entry_details" colspan="6">
37442              <p>The string must consist of only alphanumeric characters,<wbr/> punctuation,<wbr/> and
37443whitespace,<wbr/> i.<wbr/>e.<wbr/> it must match regular expression "[\p{Alnum}\p{Punct}\p{Space}]*".<wbr/>
37444It must not exceed 256 characters.<wbr/></p>
37445            </td>
37446          </tr>
37447
37448          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
37449           <!-- end of entry -->
37450
37451
37452          <tr class="entry" id="static_android.info.supportedBufferManagementVersion">
37453            <td class="entry_name
37454             " rowspan="3">
37455              android.<wbr/>info.<wbr/>supported<wbr/>Buffer<wbr/>Management<wbr/>Version
37456            </td>
37457            <td class="entry_type">
37458                <span class="entry_type_name entry_type_name_enum">byte</span>
37459
37460              <span class="entry_type_visibility"> [system]</span>
37461
37462
37463
37464
37465
37466                <ul class="entry_type_enum">
37467                  <li>
37468                    <span class="entry_type_enum_name">HIDL_DEVICE_3_5 (v3.4)</span>
37469                    <span class="entry_type_enum_notes"><p>This camera device supports and opts in to the buffer management APIs provided by
37470HIDL ICameraDevice version 3.<wbr/>5.<wbr/></p></span>
37471                  </li>
37472                  <li>
37473                    <span class="entry_type_enum_name">SESSION_CONFIGURABLE (v3.10)</span>
37474                    <span class="entry_type_enum_notes"><p>This camera device supports the buffer management APIs provided by AIDL ICameraDevice
37475version 1.<wbr/> It also supports the ICameraDeviceSession.<wbr/>configureStreamsV2 call to
37476inform the camera framework whether HAL buffer manager must be used for the
37477particular session configured.<wbr/></p></span>
37478                  </li>
37479                </ul>
37480
37481            </td> <!-- entry_type -->
37482
37483            <td class="entry_description">
37484              <p>The version of buffer management API this camera device supports and opts into.<wbr/></p>
37485            </td>
37486
37487            <td class="entry_units">
37488            </td>
37489
37490            <td class="entry_range">
37491            </td>
37492
37493            <td class="entry_hal_version">
37494              <p>3.<wbr/>4</p>
37495            </td>
37496
37497            <td class="entry_tags">
37498            </td>
37499
37500          </tr>
37501          <tr class="entries_header">
37502            <th class="th_details" colspan="6">Details</th>
37503          </tr>
37504          <tr class="entry_cont">
37505            <td class="entry_details" colspan="6">
37506              <p>When this key is not present,<wbr/> camera framework will interact with this camera device
37507without any buffer management HAL API.<wbr/> When this key is present and camera framework
37508supports the buffer management API version,<wbr/> camera framework will interact with camera
37509HAL using such version of buffer management API.<wbr/></p>
37510            </td>
37511          </tr>
37512
37513
37514          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
37515           <!-- end of entry -->
37516
37517
37518          <tr class="entry" id="static_android.info.deviceStateSensorOrientationMap">
37519            <td class="entry_name
37520             " rowspan="3">
37521              android.<wbr/>info.<wbr/>device<wbr/>State<wbr/>Sensor<wbr/>Orientation<wbr/>Map
37522            </td>
37523            <td class="entry_type">
37524                <span class="entry_type_name">int64</span>
37525
37526              <span class="entry_type_visibility"> [java_public as deviceStateSensorOrientationMap]</span>
37527
37528              <span class="entry_type_synthetic">[synthetic] </span>
37529
37530              <span class="entry_type_hwlevel">[limited] </span>
37531
37532
37533
37534
37535            </td> <!-- entry_type -->
37536
37537            <td class="entry_description">
37538              <p>This lists the mapping between a device folding state and
37539specific camera sensor orientation for logical cameras on a foldable device.<wbr/></p>
37540            </td>
37541
37542            <td class="entry_units">
37543            </td>
37544
37545            <td class="entry_range">
37546            </td>
37547
37548            <td class="entry_hal_version">
37549              <p>3.<wbr/>2</p>
37550            </td>
37551
37552            <td class="entry_tags">
37553            </td>
37554
37555          </tr>
37556          <tr class="entries_header">
37557            <th class="th_details" colspan="6">Details</th>
37558          </tr>
37559          <tr class="entry_cont">
37560            <td class="entry_details" colspan="6">
37561              <p>Logical cameras on foldable devices can support sensors with different orientation
37562values.<wbr/> The orientation value may need to change depending on the specific folding
37563state.<wbr/> Information about the mapping between the device folding state and the
37564sensor orientation can be obtained in
37565<a href="https://developer.android.com/reference/android/hardware/camera2/params/DeviceStateSensorOrientationMap.html">DeviceStateSensorOrientationMap</a>.<wbr/>
37566Device state orientation maps are optional and maybe present on devices that support
37567<a href="#controls_android.scaler.rotateAndCrop">android.<wbr/>scaler.<wbr/>rotate<wbr/>And<wbr/>Crop</a>.<wbr/></p>
37568            </td>
37569          </tr>
37570
37571
37572          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
37573           <!-- end of entry -->
37574
37575
37576          <tr class="entry" id="static_android.info.deviceStateOrientations">
37577            <td class="entry_name
37578             " rowspan="3">
37579              android.<wbr/>info.<wbr/>device<wbr/>State<wbr/>Orientations
37580            </td>
37581            <td class="entry_type">
37582                <span class="entry_type_name">int64</span>
37583                <span class="entry_type_container">x</span>
37584
37585                <span class="entry_type_array">
37586                  2 x n
37587                </span>
37588              <span class="entry_type_visibility"> [ndk_public]</span>
37589
37590
37591              <span class="entry_type_hwlevel">[limited] </span>
37592
37593
37594
37595
37596            </td> <!-- entry_type -->
37597
37598            <td class="entry_description">
37599            </td>
37600
37601            <td class="entry_units">
37602              (device fold state,<wbr/> sensor orientation) x n
37603            </td>
37604
37605            <td class="entry_range">
37606            </td>
37607
37608            <td class="entry_hal_version">
37609              <p>3.<wbr/>7</p>
37610            </td>
37611
37612            <td class="entry_tags">
37613            </td>
37614
37615          </tr>
37616          <tr class="entries_header">
37617            <th class="th_details" colspan="6">Details</th>
37618          </tr>
37619          <tr class="entry_cont">
37620            <td class="entry_details" colspan="6">
37621              <p>HAL must populate the array with
37622(hardware::camera::provider::V2_<wbr/>5::DeviceState,<wbr/> sensorOrientation) pairs for each
37623supported device state bitwise combination.<wbr/></p>
37624            </td>
37625          </tr>
37626
37627
37628          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
37629           <!-- end of entry -->
37630
37631
37632          <tr class="entry" id="static_android.info.sessionConfigurationQueryVersion">
37633            <td class="entry_name
37634             " rowspan="5">
37635              android.<wbr/>info.<wbr/>session<wbr/>Configuration<wbr/>Query<wbr/>Version
37636            </td>
37637            <td class="entry_type">
37638                <span class="entry_type_name entry_type_name_enum">int32</span>
37639
37640              <span class="entry_type_visibility"> [fwk_java_public as versionCode]</span>
37641
37642
37643              <span class="entry_type_hwlevel">[legacy] </span>
37644
37645
37646
37647                <ul class="entry_type_enum">
37648                  <li>
37649                    <span class="entry_type_enum_name">UPSIDE_DOWN_CAKE (v3.10)</span>
37650                    <span class="entry_type_enum_value">34</span>
37651                  </li>
37652                  <li>
37653                    <span class="entry_type_enum_name">VANILLA_ICE_CREAM (v3.10)</span>
37654                    <span class="entry_type_enum_value">35</span>
37655                  </li>
37656                  <li>
37657                    <span class="entry_type_enum_name">BAKLAVA (v3.11)</span>
37658                    <span class="entry_type_enum_value">36</span>
37659                  </li>
37660                </ul>
37661
37662            </td> <!-- entry_type -->
37663
37664            <td class="entry_description">
37665              <p>The version of the session configuration query
37666<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice/CameraDeviceSetup.html#isSessionConfigurationSupported">CameraDeviceSetup#isSessionConfigurationSupported</a>
37667and <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice/CameraDeviceSetup.html#getSessionCharacteristics">CameraDeviceSetup#getSessionCharacteristics</a>
37668APIs.<wbr/></p>
37669            </td>
37670
37671            <td class="entry_units">
37672            </td>
37673
37674            <td class="entry_range">
37675            </td>
37676
37677            <td class="entry_hal_version">
37678              <p>3.<wbr/>10</p>
37679            </td>
37680
37681            <td class="entry_tags">
37682            </td>
37683
37684          </tr>
37685          <tr class="entries_header">
37686            <th class="th_details" colspan="6">Details</th>
37687          </tr>
37688          <tr class="entry_cont">
37689            <td class="entry_details" colspan="6">
37690              <p>The possible values in this key correspond to the values defined in
37691android.<wbr/>os.<wbr/>Build.<wbr/>VERSION_<wbr/>CODES.<wbr/> Each version defines a set of feature combinations the
37692camera device must reliably report whether they are supported via
37693<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice/CameraDeviceSetup.html#isSessionConfigurationSupported">CameraDeviceSetup#isSessionConfigurationSupported</a>.<wbr/>
37694It also defines the set of session specific keys in CameraCharacteristics when returned from
37695<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice/CameraDeviceSetup.html#getSessionCharacteristics">CameraDeviceSetup#getSessionCharacteristics</a>.<wbr/>
37696The version is always less or equal to android.<wbr/>os.<wbr/>Build.<wbr/>VERSION.<wbr/>SDK_<wbr/>INT.<wbr/></p>
37697<p>If set to UPSIDE_<wbr/>DOWN_<wbr/>CAKE,<wbr/> this camera device doesn't support the
37698<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice/CameraDeviceSetup.html">CameraDeviceSetup</a> API.<wbr/>
37699Trying to create a CameraDeviceSetup instance throws an UnsupportedOperationException.<wbr/></p>
37700<p>From VANILLA_<wbr/>ICE_<wbr/>CREAM onwards,<wbr/> the camera compliance tests verify a set of
37701commonly used SessionConfigurations to ensure that the outputs of
37702<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice/CameraDeviceSetup.html#isSessionConfigurationSupported">CameraDeviceSetup#isSessionConfigurationSupported</a>
37703and <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice/CameraDeviceSetup.html#getSessionCharacteristics">CameraDeviceSetup#getSessionCharacteristics</a>
37704are accurate.<wbr/> The application is encouraged to use these SessionConfigurations when turning on
37705multiple features at the same time.<wbr/></p>
37706<p>When set to VANILLA_<wbr/>ICE_<wbr/>CREAM,<wbr/> the combinations of the following configurations are verified
37707by the compliance tests:</p>
37708<ul>
37709<li>
37710<p>A set of commonly used stream combinations:</p>
37711<table>
37712<thead>
37713<tr>
37714<th style="text-align: center;">Target 1</th>
37715<th style="text-align: center;">Size</th>
37716<th style="text-align: center;">Target 2</th>
37717<th style="text-align: center;">Size</th>
37718</tr>
37719</thead>
37720<tbody>
37721<tr>
37722<td style="text-align: center;">PRIV</td>
37723<td style="text-align: center;">S1080P</td>
37724<td style="text-align: center;"></td>
37725<td style="text-align: center;"></td>
37726</tr>
37727<tr>
37728<td style="text-align: center;">PRIV</td>
37729<td style="text-align: center;">S720P</td>
37730<td style="text-align: center;"></td>
37731<td style="text-align: center;"></td>
37732</tr>
37733<tr>
37734<td style="text-align: center;">PRIV</td>
37735<td style="text-align: center;">S1080P</td>
37736<td style="text-align: center;">JPEG/<wbr/>JPEG_<wbr/>R</td>
37737<td style="text-align: center;">MAXIMUM_<wbr/>16_<wbr/>9</td>
37738</tr>
37739<tr>
37740<td style="text-align: center;">PRIV</td>
37741<td style="text-align: center;">S1080P</td>
37742<td style="text-align: center;">JPEG/<wbr/>JPEG_<wbr/>R</td>
37743<td style="text-align: center;">UHD</td>
37744</tr>
37745<tr>
37746<td style="text-align: center;">PRIV</td>
37747<td style="text-align: center;">S1080P</td>
37748<td style="text-align: center;">JPEG/<wbr/>JPEG_<wbr/>R</td>
37749<td style="text-align: center;">S1440P</td>
37750</tr>
37751<tr>
37752<td style="text-align: center;">PRIV</td>
37753<td style="text-align: center;">S1080P</td>
37754<td style="text-align: center;">JPEG/<wbr/>JPEG_<wbr/>R</td>
37755<td style="text-align: center;">S1080P</td>
37756</tr>
37757<tr>
37758<td style="text-align: center;">PRIV</td>
37759<td style="text-align: center;">S1080P</td>
37760<td style="text-align: center;">PRIV</td>
37761<td style="text-align: center;">UHD</td>
37762</tr>
37763<tr>
37764<td style="text-align: center;">PRIV</td>
37765<td style="text-align: center;">S720P</td>
37766<td style="text-align: center;">JPEG/<wbr/>JPEG_<wbr/>R</td>
37767<td style="text-align: center;">MAXIMUM_<wbr/>16_<wbr/>9</td>
37768</tr>
37769<tr>
37770<td style="text-align: center;">PRIV</td>
37771<td style="text-align: center;">S720P</td>
37772<td style="text-align: center;">JPEG/<wbr/>JPEG_<wbr/>R</td>
37773<td style="text-align: center;">UHD</td>
37774</tr>
37775<tr>
37776<td style="text-align: center;">PRIV</td>
37777<td style="text-align: center;">S720P</td>
37778<td style="text-align: center;">JPEG/<wbr/>JPEG_<wbr/>R</td>
37779<td style="text-align: center;">S1080P</td>
37780</tr>
37781<tr>
37782<td style="text-align: center;">PRIV</td>
37783<td style="text-align: center;">XVGA</td>
37784<td style="text-align: center;">JPEG/<wbr/>JPEG_<wbr/>R</td>
37785<td style="text-align: center;">MAXIMUM_<wbr/>4_<wbr/>3</td>
37786</tr>
37787<tr>
37788<td style="text-align: center;">PRIV</td>
37789<td style="text-align: center;">S1080P_<wbr/>4_<wbr/>3</td>
37790<td style="text-align: center;">JPEG/<wbr/>JPEG_<wbr/>R</td>
37791<td style="text-align: center;">MAXIMUM_<wbr/>4_<wbr/>3</td>
37792</tr>
37793</tbody>
37794</table>
37795<ul>
37796<li>{@code MAXIMUM_<wbr/>4_<wbr/>3} refers to the camera device's maximum output resolution with
37797  4:3 aspect ratio for that format from {@code StreamConfigurationMap#getOutputSizes}.<wbr/></li>
37798<li>{@code MAXIMUM_<wbr/>16_<wbr/>9} is the maximum output resolution with 16:9 aspect ratio.<wbr/></li>
37799<li>{@code S1440P} refers to {@code 2560x1440 (16:9)}.<wbr/></li>
37800<li>{@code S1080P} refers to {@code 1920x1080 (16:9)}.<wbr/></li>
37801<li>{@code S720P} refers to {@code 1280x720 (16:9)}.<wbr/></li>
37802<li>{@code UHD} refers to {@code 3840x2160 (16:9)}.<wbr/></li>
37803<li>{@code XVGA} refers to {@code 1024x768 (4:3)}.<wbr/></li>
37804<li>{@code S1080P_<wbr/>43} refers to {@code 1440x1080 (4:3)}.<wbr/></li>
37805</ul>
37806</li>
37807<li>
37808<p>VIDEO_<wbr/>STABILIZATION_<wbr/>MODE: {OFF,<wbr/> PREVIEW}</p>
37809</li>
37810<li>
37811<p>AE_<wbr/>TARGET_<wbr/>FPS_<wbr/>RANGE: { {*,<wbr/> 30},<wbr/> {*,<wbr/> 60} }</p>
37812</li>
37813<li>
37814<p>DYNAMIC_<wbr/>RANGE_<wbr/>PROFILE: {STANDARD,<wbr/> HLG10}</p>
37815</li>
37816</ul>
37817<p>All of the above configurations can be set up with a SessionConfiguration.<wbr/> The list of
37818OutputConfiguration contains the stream configurations and DYNAMIC_<wbr/>RANGE_<wbr/>PROFILE,<wbr/> and
37819the AE_<wbr/>TARGET_<wbr/>FPS_<wbr/>RANGE and VIDEO_<wbr/>STABILIZATION_<wbr/>MODE are set as session parameters.<wbr/></p>
37820<p>When set to BAKLAVA,<wbr/> the additional stream combinations below are verified
37821by the compliance tests:</p>
37822<table>
37823<thead>
37824<tr>
37825<th style="text-align: center;">Target 1</th>
37826<th style="text-align: center;">Size</th>
37827<th style="text-align: center;">Target 2</th>
37828<th style="text-align: center;">Size</th>
37829</tr>
37830</thead>
37831<tbody>
37832<tr>
37833<td style="text-align: center;">PRIV</td>
37834<td style="text-align: center;">S1080P</td>
37835<td style="text-align: center;">PRIV</td>
37836<td style="text-align: center;">S1080P</td>
37837</tr>
37838<tr>
37839<td style="text-align: center;">PRIV</td>
37840<td style="text-align: center;">S1080P</td>
37841<td style="text-align: center;">PRIV</td>
37842<td style="text-align: center;">S1440P</td>
37843</tr>
37844</tbody>
37845</table>
37846            </td>
37847          </tr>
37848
37849          <tr class="entries_header">
37850            <th class="th_details" colspan="6">HAL Implementation Details</th>
37851          </tr>
37852          <tr class="entry_cont">
37853            <td class="entry_details" colspan="6">
37854              <p>Preview stabilization must be orthogonal to other features.<wbr/> In other words,<wbr/> if preview
37855stabilization is supported by the camera device,<wbr/> the return value of
37856isStreamCombinationWithSettingsSupported for a particular combination must return
37857the same value between stabilization off and preview stabilization on.<wbr/> This reduces the
37858search space for feature combination queries.<wbr/></p>
37859            </td>
37860          </tr>
37861
37862          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
37863           <!-- end of entry -->
37864
37865
37866          <tr class="entry" id="static_android.info.deviceId">
37867            <td class="entry_name
37868             " rowspan="3">
37869              android.<wbr/>info.<wbr/>device<wbr/>Id
37870            </td>
37871            <td class="entry_type">
37872                <span class="entry_type_name">int32</span>
37873
37874              <span class="entry_type_visibility"> [fwk_only]</span>
37875
37876
37877
37878
37879
37880
37881            </td> <!-- entry_type -->
37882
37883            <td class="entry_description">
37884              <p>Id of the device that owns this camera.<wbr/></p>
37885            </td>
37886
37887            <td class="entry_units">
37888            </td>
37889
37890            <td class="entry_range">
37891            </td>
37892
37893            <td class="entry_hal_version">
37894              <p>3.<wbr/>2</p>
37895            </td>
37896
37897            <td class="entry_tags">
37898            </td>
37899
37900          </tr>
37901          <tr class="entries_header">
37902            <th class="th_details" colspan="6">Details</th>
37903          </tr>
37904          <tr class="entry_cont">
37905            <td class="entry_details" colspan="6">
37906              <p>In case of a virtual camera,<wbr/> this would be the id of the virtual device
37907owning the camera.<wbr/> For any other camera,<wbr/> this key would not be present.<wbr/>
37908Callers should assume <a href="https://developer.android.com/reference/android/content/Context.html#DEVICE_ID_DEFAULT">Context#DEVICE_<wbr/>ID_<wbr/>DEFAULT</a>
37909in case this key is not present.<wbr/></p>
37910            </td>
37911          </tr>
37912
37913
37914          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
37915           <!-- end of entry -->
37916
37917
37918
37919      <!-- end of kind -->
37920      </tbody>
37921
37922  <!-- end of section -->
37923  <tr><td colspan="7" id="section_blackLevel" class="section">blackLevel</td></tr>
37924
37925
37926      <tr><td colspan="7" class="kind">controls</td></tr>
37927
37928      <thead class="entries_header">
37929        <tr>
37930          <th class="th_name">Property Name</th>
37931          <th class="th_type">Type</th>
37932          <th class="th_description">Description</th>
37933          <th class="th_units">Units</th>
37934          <th class="th_range">Range</th>
37935          <th class="th_hal_version">Initial HIDL HAL version</th>
37936          <th class="th_tags">Tags</th>
37937        </tr>
37938      </thead>
37939
37940      <tbody>
37941
37942
37943
37944
37945
37946
37947
37948
37949
37950
37951          <tr class="entry" id="controls_android.blackLevel.lock">
37952            <td class="entry_name
37953             " rowspan="5">
37954              android.<wbr/>black<wbr/>Level.<wbr/>lock
37955            </td>
37956            <td class="entry_type">
37957                <span class="entry_type_name entry_type_name_enum">byte</span>
37958
37959              <span class="entry_type_visibility"> [public as boolean]</span>
37960
37961
37962              <span class="entry_type_hwlevel">[full] </span>
37963
37964
37965
37966                <ul class="entry_type_enum">
37967                  <li>
37968                    <span class="entry_type_enum_name">OFF (v3.2)</span>
37969                  </li>
37970                  <li>
37971                    <span class="entry_type_enum_name">ON (v3.2)</span>
37972                  </li>
37973                </ul>
37974
37975            </td> <!-- entry_type -->
37976
37977            <td class="entry_description">
37978              <p>Whether black-level compensation is locked
37979to its current values,<wbr/> or is free to vary.<wbr/></p>
37980            </td>
37981
37982            <td class="entry_units">
37983            </td>
37984
37985            <td class="entry_range">
37986            </td>
37987
37988            <td class="entry_hal_version">
37989              <p>3.<wbr/>2</p>
37990            </td>
37991
37992            <td class="entry_tags">
37993              <ul class="entry_tags">
37994                  <li><a href="#tag_HAL2">HAL2</a></li>
37995              </ul>
37996            </td>
37997
37998          </tr>
37999          <tr class="entries_header">
38000            <th class="th_details" colspan="6">Details</th>
38001          </tr>
38002          <tr class="entry_cont">
38003            <td class="entry_details" colspan="6">
38004              <p>When set to <code>true</code> (ON),<wbr/> the values used for black-level
38005compensation will not change until the lock is set to
38006<code>false</code> (OFF).<wbr/></p>
38007<p>Since changes to certain capture parameters (such as
38008exposure time) may require resetting of black level
38009compensation,<wbr/> the camera device must report whether setting
38010the black level lock was successful in the output result
38011metadata.<wbr/></p>
38012<p>For example,<wbr/> if a sequence of requests is as follows:</p>
38013<ul>
38014<li>Request 1: Exposure = 10ms,<wbr/> Black level lock = OFF</li>
38015<li>Request 2: Exposure = 10ms,<wbr/> Black level lock = ON</li>
38016<li>Request 3: Exposure = 10ms,<wbr/> Black level lock = ON</li>
38017<li>Request 4: Exposure = 20ms,<wbr/> Black level lock = ON</li>
38018<li>Request 5: Exposure = 20ms,<wbr/> Black level lock = ON</li>
38019<li>Request 6: Exposure = 20ms,<wbr/> Black level lock = ON</li>
38020</ul>
38021<p>And the exposure change in Request 4 requires the camera
38022device to reset the black level offsets,<wbr/> then the output
38023result metadata is expected to be:</p>
38024<ul>
38025<li>Result 1: Exposure = 10ms,<wbr/> Black level lock = OFF</li>
38026<li>Result 2: Exposure = 10ms,<wbr/> Black level lock = ON</li>
38027<li>Result 3: Exposure = 10ms,<wbr/> Black level lock = ON</li>
38028<li>Result 4: Exposure = 20ms,<wbr/> Black level lock = OFF</li>
38029<li>Result 5: Exposure = 20ms,<wbr/> Black level lock = ON</li>
38030<li>Result 6: Exposure = 20ms,<wbr/> Black level lock = ON</li>
38031</ul>
38032<p>This indicates to the application that on frame 4,<wbr/> black
38033levels were reset due to exposure value changes,<wbr/> and pixel
38034values may not be consistent across captures.<wbr/></p>
38035<p>The camera device will maintain the lock to the extent
38036possible,<wbr/> only overriding the lock to OFF when changes to
38037other request parameters require a black level recalculation
38038or reset.<wbr/></p>
38039            </td>
38040          </tr>
38041
38042          <tr class="entries_header">
38043            <th class="th_details" colspan="6">HAL Implementation Details</th>
38044          </tr>
38045          <tr class="entry_cont">
38046            <td class="entry_details" colspan="6">
38047              <p>If for some reason black level locking is no longer possible
38048(for example,<wbr/> the analog gain has changed,<wbr/> which forces
38049black level offsets to be recalculated),<wbr/> then the HAL must
38050override this request (and it must report 'OFF' when this
38051does happen) until the next capture for which locking is
38052possible again.<wbr/></p>
38053            </td>
38054          </tr>
38055
38056          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
38057           <!-- end of entry -->
38058
38059
38060
38061      <!-- end of kind -->
38062      </tbody>
38063      <tr><td colspan="7" class="kind">dynamic</td></tr>
38064
38065      <thead class="entries_header">
38066        <tr>
38067          <th class="th_name">Property Name</th>
38068          <th class="th_type">Type</th>
38069          <th class="th_description">Description</th>
38070          <th class="th_units">Units</th>
38071          <th class="th_range">Range</th>
38072          <th class="th_hal_version">Initial HIDL HAL version</th>
38073          <th class="th_tags">Tags</th>
38074        </tr>
38075      </thead>
38076
38077      <tbody>
38078
38079
38080
38081
38082
38083
38084
38085
38086
38087
38088          <tr class="entry" id="dynamic_android.blackLevel.lock">
38089            <td class="entry_name
38090             " rowspan="5">
38091              android.<wbr/>black<wbr/>Level.<wbr/>lock
38092            </td>
38093            <td class="entry_type">
38094                <span class="entry_type_name entry_type_name_enum">byte</span>
38095
38096              <span class="entry_type_visibility"> [public as boolean]</span>
38097
38098
38099              <span class="entry_type_hwlevel">[full] </span>
38100
38101
38102
38103                <ul class="entry_type_enum">
38104                  <li>
38105                    <span class="entry_type_enum_name">OFF (v3.2)</span>
38106                  </li>
38107                  <li>
38108                    <span class="entry_type_enum_name">ON (v3.2)</span>
38109                  </li>
38110                </ul>
38111
38112            </td> <!-- entry_type -->
38113
38114            <td class="entry_description">
38115              <p>Whether black-level compensation is locked
38116to its current values,<wbr/> or is free to vary.<wbr/></p>
38117            </td>
38118
38119            <td class="entry_units">
38120            </td>
38121
38122            <td class="entry_range">
38123            </td>
38124
38125            <td class="entry_hal_version">
38126              <p>3.<wbr/>2</p>
38127            </td>
38128
38129            <td class="entry_tags">
38130              <ul class="entry_tags">
38131                  <li><a href="#tag_HAL2">HAL2</a></li>
38132              </ul>
38133            </td>
38134
38135          </tr>
38136          <tr class="entries_header">
38137            <th class="th_details" colspan="6">Details</th>
38138          </tr>
38139          <tr class="entry_cont">
38140            <td class="entry_details" colspan="6">
38141              <p>Whether the black level offset was locked for this frame.<wbr/>  Should be
38142ON if <a href="#controls_android.blackLevel.lock">android.<wbr/>black<wbr/>Level.<wbr/>lock</a> was ON in the capture request,<wbr/> unless
38143a change in other capture settings forced the camera device to
38144perform a black level reset.<wbr/></p>
38145            </td>
38146          </tr>
38147
38148          <tr class="entries_header">
38149            <th class="th_details" colspan="6">HAL Implementation Details</th>
38150          </tr>
38151          <tr class="entry_cont">
38152            <td class="entry_details" colspan="6">
38153              <p>If for some reason black level locking is no longer possible
38154(for example,<wbr/> the analog gain has changed,<wbr/> which forces
38155black level offsets to be recalculated),<wbr/> then the HAL must
38156override this request (and it must report 'OFF' when this
38157does happen) until the next capture for which locking is
38158possible again.<wbr/></p>
38159            </td>
38160          </tr>
38161
38162          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
38163           <!-- end of entry -->
38164
38165
38166
38167      <!-- end of kind -->
38168      </tbody>
38169
38170  <!-- end of section -->
38171  <tr><td colspan="7" id="section_sync" class="section">sync</td></tr>
38172
38173
38174      <tr><td colspan="7" class="kind">dynamic</td></tr>
38175
38176      <thead class="entries_header">
38177        <tr>
38178          <th class="th_name">Property Name</th>
38179          <th class="th_type">Type</th>
38180          <th class="th_description">Description</th>
38181          <th class="th_units">Units</th>
38182          <th class="th_range">Range</th>
38183          <th class="th_hal_version">Initial HIDL HAL version</th>
38184          <th class="th_tags">Tags</th>
38185        </tr>
38186      </thead>
38187
38188      <tbody>
38189
38190
38191
38192
38193
38194
38195
38196
38197
38198
38199          <tr class="entry" id="dynamic_android.sync.frameNumber">
38200            <td class="entry_name
38201             " rowspan="5">
38202              android.<wbr/>sync.<wbr/>frame<wbr/>Number
38203            </td>
38204            <td class="entry_type">
38205                <span class="entry_type_name entry_type_name_enum">int64</span>
38206
38207              <span class="entry_type_visibility"> [ndk_public]</span>
38208
38209
38210              <span class="entry_type_hwlevel">[legacy] </span>
38211
38212
38213
38214                <ul class="entry_type_enum">
38215                  <li>
38216                    <span class="entry_type_enum_name">CONVERGING (v3.2)</span>
38217                    <span class="entry_type_enum_value">-1</span>
38218                    <span class="entry_type_enum_notes"><p>The current result is not yet fully synchronized to any request.<wbr/></p>
38219<p>Synchronization is in progress,<wbr/> and reading metadata from this
38220result may include a mix of data that have taken effect since the
38221last synchronization time.<wbr/></p>
38222<p>In some future result,<wbr/> within <a href="#static_android.sync.maxLatency">android.<wbr/>sync.<wbr/>max<wbr/>Latency</a> frames,<wbr/>
38223this value will update to the actual frame number frame number
38224the result is guaranteed to be synchronized to (as long as the
38225request settings remain constant).<wbr/></p></span>
38226                  </li>
38227                  <li>
38228                    <span class="entry_type_enum_name">UNKNOWN (v3.2)</span>
38229                    <span class="entry_type_enum_value">-2</span>
38230                    <span class="entry_type_enum_notes"><p>The current result's synchronization status is unknown.<wbr/></p>
38231<p>The result may have already converged,<wbr/> or it may be in
38232progress.<wbr/>  Reading from this result may include some mix
38233of settings from past requests.<wbr/></p>
38234<p>After a settings change,<wbr/> the new settings will eventually all
38235take effect for the output buffers and results.<wbr/> However,<wbr/> this
38236value will not change when that happens.<wbr/> Altering settings
38237rapidly may provide outcomes using mixes of settings from recent
38238requests.<wbr/></p>
38239<p>This value is intended primarily for backwards compatibility with
38240the older camera implementations (for android.<wbr/>hardware.<wbr/>Camera).<wbr/></p></span>
38241                  </li>
38242                </ul>
38243
38244            </td> <!-- entry_type -->
38245
38246            <td class="entry_description">
38247              <p>The frame number corresponding to the last request
38248with which the output result (metadata + buffers) has been fully
38249synchronized.<wbr/></p>
38250            </td>
38251
38252            <td class="entry_units">
38253            </td>
38254
38255            <td class="entry_range">
38256              <p>Either a non-negative value corresponding to a
38257<code>frame_<wbr/>number</code>,<wbr/> or one of the two enums (CONVERGING /<wbr/> UNKNOWN).<wbr/></p>
38258            </td>
38259
38260            <td class="entry_hal_version">
38261              <p>3.<wbr/>2</p>
38262            </td>
38263
38264            <td class="entry_tags">
38265              <ul class="entry_tags">
38266                  <li><a href="#tag_V1">V1</a></li>
38267              </ul>
38268            </td>
38269
38270          </tr>
38271          <tr class="entries_header">
38272            <th class="th_details" colspan="6">Details</th>
38273          </tr>
38274          <tr class="entry_cont">
38275            <td class="entry_details" colspan="6">
38276              <p>When a request is submitted to the camera device,<wbr/> there is usually a
38277delay of several frames before the controls get applied.<wbr/> A camera
38278device may either choose to account for this delay by implementing a
38279pipeline and carefully submit well-timed atomic control updates,<wbr/> or
38280it may start streaming control changes that span over several frame
38281boundaries.<wbr/></p>
38282<p>In the latter case,<wbr/> whenever a request's settings change relative to
38283the previous submitted request,<wbr/> the full set of changes may take
38284multiple frame durations to fully take effect.<wbr/> Some settings may
38285take effect sooner (in less frame durations) than others.<wbr/></p>
38286<p>While a set of control changes are being propagated,<wbr/> this value
38287will be CONVERGING.<wbr/></p>
38288<p>Once it is fully known that a set of control changes have been
38289finished propagating,<wbr/> and the resulting updated control settings
38290have been read back by the camera device,<wbr/> this value will be set
38291to a non-negative frame number (corresponding to the request to
38292which the results have synchronized to).<wbr/></p>
38293<p>Older camera device implementations may not have a way to detect
38294when all camera controls have been applied,<wbr/> and will always set this
38295value to UNKNOWN.<wbr/></p>
38296<p>FULL capability devices will always have this value set to the
38297frame number of the request corresponding to this result.<wbr/></p>
38298<p><em>Further details</em>:</p>
38299<ul>
38300<li>Whenever a request differs from the last request,<wbr/> any future
38301results not yet returned may have this value set to CONVERGING (this
38302could include any in-progress captures not yet returned by the camera
38303device,<wbr/> for more details see pipeline considerations below).<wbr/></li>
38304<li>Submitting a series of multiple requests that differ from the
38305previous request (e.<wbr/>g.<wbr/> r1,<wbr/> r2,<wbr/> r3 s.<wbr/>t.<wbr/> r1 != r2 != r3)
38306moves the new synchronization frame to the last non-repeating
38307request (using the smallest frame number from the contiguous list of
38308repeating requests).<wbr/></li>
38309<li>Submitting the same request repeatedly will not change this value
38310to CONVERGING,<wbr/> if it was already a non-negative value.<wbr/></li>
38311<li>When this value changes to non-negative,<wbr/> that means that all of the
38312metadata controls from the request have been applied,<wbr/> all of the
38313metadata controls from the camera device have been read to the
38314updated values (into the result),<wbr/> and all of the graphics buffers
38315corresponding to this result are also synchronized to the request.<wbr/></li>
38316</ul>
38317<p><em>Pipeline considerations</em>:</p>
38318<p>Submitting a request with updated controls relative to the previously
38319submitted requests may also invalidate the synchronization state
38320of all the results corresponding to currently in-flight requests.<wbr/></p>
38321<p>In other words,<wbr/> results for this current request and up to
38322<a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a> prior requests may have their
38323<a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> change to CONVERGING.<wbr/></p>
38324            </td>
38325          </tr>
38326
38327          <tr class="entries_header">
38328            <th class="th_details" colspan="6">HAL Implementation Details</th>
38329          </tr>
38330          <tr class="entry_cont">
38331            <td class="entry_details" colspan="6">
38332              <p>Using UNKNOWN here is illegal unless <a href="#static_android.sync.maxLatency">android.<wbr/>sync.<wbr/>max<wbr/>Latency</a>
38333is also UNKNOWN.<wbr/></p>
38334<p>FULL capability devices should simply set this value to the
38335<code>frame_<wbr/>number</code> of the request this result corresponds to.<wbr/></p>
38336            </td>
38337          </tr>
38338
38339          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
38340           <!-- end of entry -->
38341
38342
38343
38344      <!-- end of kind -->
38345      </tbody>
38346      <tr><td colspan="7" class="kind">static</td></tr>
38347
38348      <thead class="entries_header">
38349        <tr>
38350          <th class="th_name">Property Name</th>
38351          <th class="th_type">Type</th>
38352          <th class="th_description">Description</th>
38353          <th class="th_units">Units</th>
38354          <th class="th_range">Range</th>
38355          <th class="th_hal_version">Initial HIDL HAL version</th>
38356          <th class="th_tags">Tags</th>
38357        </tr>
38358      </thead>
38359
38360      <tbody>
38361
38362
38363
38364
38365
38366
38367
38368
38369
38370
38371          <tr class="entry" id="static_android.sync.maxLatency">
38372            <td class="entry_name
38373             " rowspan="5">
38374              android.<wbr/>sync.<wbr/>max<wbr/>Latency
38375            </td>
38376            <td class="entry_type">
38377                <span class="entry_type_name entry_type_name_enum">int32</span>
38378
38379              <span class="entry_type_visibility"> [public]</span>
38380
38381
38382              <span class="entry_type_hwlevel">[legacy] </span>
38383
38384
38385
38386                <ul class="entry_type_enum">
38387                  <li>
38388                    <span class="entry_type_enum_name">PER_FRAME_CONTROL (v3.2)</span>
38389                    <span class="entry_type_enum_value">0</span>
38390                    <span class="entry_type_enum_notes"><p>Every frame has the requests immediately applied.<wbr/></p>
38391<p>Changing controls over multiple requests one after another will
38392produce results that have those controls applied atomically
38393each frame.<wbr/></p>
38394<p>All FULL capability devices will have this as their maxLatency.<wbr/></p></span>
38395                  </li>
38396                  <li>
38397                    <span class="entry_type_enum_name">UNKNOWN (v3.2)</span>
38398                    <span class="entry_type_enum_value">-1</span>
38399                    <span class="entry_type_enum_notes"><p>Each new frame has some subset (potentially the entire set)
38400of the past requests applied to the camera settings.<wbr/></p>
38401<p>By submitting a series of identical requests,<wbr/> the camera device
38402will eventually have the camera settings applied,<wbr/> but it is
38403unknown when that exact point will be.<wbr/></p>
38404<p>All LEGACY capability devices will have this as their maxLatency.<wbr/></p></span>
38405                  </li>
38406                </ul>
38407
38408            </td> <!-- entry_type -->
38409
38410            <td class="entry_description">
38411              <p>The maximum number of frames that can occur after a request
38412(different than the previous) has been submitted,<wbr/> and before the
38413result's state becomes synchronized.<wbr/></p>
38414            </td>
38415
38416            <td class="entry_units">
38417              Frame counts
38418            </td>
38419
38420            <td class="entry_range">
38421              <p>A positive value,<wbr/> PER_<wbr/>FRAME_<wbr/>CONTROL,<wbr/> or UNKNOWN.<wbr/></p>
38422            </td>
38423
38424            <td class="entry_hal_version">
38425              <p>3.<wbr/>2</p>
38426            </td>
38427
38428            <td class="entry_tags">
38429              <ul class="entry_tags">
38430                  <li><a href="#tag_V1">V1</a></li>
38431              </ul>
38432            </td>
38433
38434          </tr>
38435          <tr class="entries_header">
38436            <th class="th_details" colspan="6">Details</th>
38437          </tr>
38438          <tr class="entry_cont">
38439            <td class="entry_details" colspan="6">
38440              <p>This defines the maximum distance (in number of metadata results),<wbr/>
38441between the frame number of the request that has new controls to apply
38442and the frame number of the result that has all the controls applied.<wbr/></p>
38443<p>In other words this acts as an upper boundary for how many frames
38444must occur before the camera device knows for a fact that the new
38445submitted camera settings have been applied in outgoing frames.<wbr/></p>
38446            </td>
38447          </tr>
38448
38449          <tr class="entries_header">
38450            <th class="th_details" colspan="6">HAL Implementation Details</th>
38451          </tr>
38452          <tr class="entry_cont">
38453            <td class="entry_details" colspan="6">
38454              <p>For example if maxLatency was 2,<wbr/></p>
38455<pre><code>initial request = X (repeating)
38456request1 = X
38457request2 = Y
38458request3 = Y
38459request4 = Y
38460
38461where requestN has frameNumber N,<wbr/> and the first of the repeating
38462initial request's has frameNumber F (and F &lt; 1).<wbr/>
38463
38464initial result = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == F }
38465result1 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == F }
38466result2 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == CONVERGING }
38467result3 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == CONVERGING }
38468result4 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == 2 }
38469
38470where resultN has frameNumber N.<wbr/>
38471</code></pre>
38472<p>Since <code>result4</code> has a <code>frameNumber == 4</code> and
38473<code><a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == 2</code>,<wbr/> the distance is clearly
38474<code>4 - 2 = 2</code>.<wbr/></p>
38475<p>Use <code>frame_<wbr/>count</code> from camera3_<wbr/>request_<wbr/>t instead of
38476<a href="#controls_android.request.frameCount">android.<wbr/>request.<wbr/>frame<wbr/>Count</a> or
38477<code><a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html#getFrameNumber">CaptureResult#getFrameNumber</a></code>.<wbr/></p>
38478<p>LIMITED devices are strongly encouraged to use a non-negative
38479value.<wbr/> If UNKNOWN is used here then app developers do not have a way
38480to know when sensor settings have been applied.<wbr/></p>
38481            </td>
38482          </tr>
38483
38484          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
38485           <!-- end of entry -->
38486
38487
38488
38489      <!-- end of kind -->
38490      </tbody>
38491
38492  <!-- end of section -->
38493  <tr><td colspan="7" id="section_reprocess" class="section">reprocess</td></tr>
38494
38495
38496      <tr><td colspan="7" class="kind">controls</td></tr>
38497
38498      <thead class="entries_header">
38499        <tr>
38500          <th class="th_name">Property Name</th>
38501          <th class="th_type">Type</th>
38502          <th class="th_description">Description</th>
38503          <th class="th_units">Units</th>
38504          <th class="th_range">Range</th>
38505          <th class="th_hal_version">Initial HIDL HAL version</th>
38506          <th class="th_tags">Tags</th>
38507        </tr>
38508      </thead>
38509
38510      <tbody>
38511
38512
38513
38514
38515
38516
38517
38518
38519
38520
38521          <tr class="entry" id="controls_android.reprocess.effectiveExposureFactor">
38522            <td class="entry_name
38523             " rowspan="3">
38524              android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor
38525            </td>
38526            <td class="entry_type">
38527                <span class="entry_type_name">float</span>
38528
38529              <span class="entry_type_visibility"> [java_public]</span>
38530
38531
38532              <span class="entry_type_hwlevel">[limited] </span>
38533
38534
38535
38536
38537            </td> <!-- entry_type -->
38538
38539            <td class="entry_description">
38540              <p>The amount of exposure time increase factor applied to the original output
38541frame by the application processing before sending for reprocessing.<wbr/></p>
38542            </td>
38543
38544            <td class="entry_units">
38545              Relative exposure time increase factor.<wbr/>
38546            </td>
38547
38548            <td class="entry_range">
38549              <p>&gt;= 1.<wbr/>0</p>
38550            </td>
38551
38552            <td class="entry_hal_version">
38553              <p>3.<wbr/>2</p>
38554            </td>
38555
38556            <td class="entry_tags">
38557              <ul class="entry_tags">
38558                  <li><a href="#tag_REPROC">REPROC</a></li>
38559              </ul>
38560            </td>
38561
38562          </tr>
38563          <tr class="entries_header">
38564            <th class="th_details" colspan="6">Details</th>
38565          </tr>
38566          <tr class="entry_cont">
38567            <td class="entry_details" colspan="6">
38568              <p>This is optional,<wbr/> and will be supported if the camera device supports YUV_<wbr/>REPROCESSING
38569capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains YUV_<wbr/>REPROCESSING).<wbr/></p>
38570<p>For some YUV reprocessing use cases,<wbr/> the application may choose to filter the original
38571output frames to effectively reduce the noise to the same level as a frame that was
38572captured with longer exposure time.<wbr/> To be more specific,<wbr/> assuming the original captured
38573images were captured with a sensitivity of S and an exposure time of T,<wbr/> the model in
38574the camera device is that the amount of noise in the image would be approximately what
38575would be expected if the original capture parameters had been a sensitivity of
38576S/<wbr/>effectiveExposureFactor and an exposure time of T*effectiveExposureFactor,<wbr/> rather
38577than S and T respectively.<wbr/> If the captured images were processed by the application
38578before being sent for reprocessing,<wbr/> then the application may have used image processing
38579algorithms and/<wbr/>or multi-frame image fusion to reduce the noise in the
38580application-processed images (input images).<wbr/> By using the effectiveExposureFactor
38581control,<wbr/> the application can communicate to the camera device the actual noise level
38582improvement in the application-processed image.<wbr/> With this information,<wbr/> the camera
38583device can select appropriate noise reduction and edge enhancement parameters to avoid
38584excessive noise reduction (<a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a>) and insufficient edge
38585enhancement (<a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a>) being applied to the reprocessed frames.<wbr/></p>
38586<p>For example,<wbr/> for multi-frame image fusion use case,<wbr/> the application may fuse
38587multiple output frames together to a final frame for reprocessing.<wbr/> When N image are
38588fused into 1 image for reprocessing,<wbr/> the exposure time increase factor could be up to
38589square root of N (based on a simple photon shot noise model).<wbr/> The camera device will
38590adjust the reprocessing noise reduction and edge enhancement parameters accordingly to
38591produce the best quality images.<wbr/></p>
38592<p>This is relative factor,<wbr/> 1.<wbr/>0 indicates the application hasn't processed the input
38593buffer in a way that affects its effective exposure time.<wbr/></p>
38594<p>This control is only effective for YUV reprocessing capture request.<wbr/> For noise
38595reduction 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/>
38596Similarly,<wbr/> for edge enhancement reprocessing,<wbr/> it is only effective when
38597<code><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a> != OFF</code>.<wbr/></p>
38598            </td>
38599          </tr>
38600
38601
38602          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
38603           <!-- end of entry -->
38604
38605
38606
38607      <!-- end of kind -->
38608      </tbody>
38609      <tr><td colspan="7" class="kind">dynamic</td></tr>
38610
38611      <thead class="entries_header">
38612        <tr>
38613          <th class="th_name">Property Name</th>
38614          <th class="th_type">Type</th>
38615          <th class="th_description">Description</th>
38616          <th class="th_units">Units</th>
38617          <th class="th_range">Range</th>
38618          <th class="th_hal_version">Initial HIDL HAL version</th>
38619          <th class="th_tags">Tags</th>
38620        </tr>
38621      </thead>
38622
38623      <tbody>
38624
38625
38626
38627
38628
38629
38630
38631
38632
38633
38634          <tr class="entry" id="dynamic_android.reprocess.effectiveExposureFactor">
38635            <td class="entry_name
38636             " rowspan="3">
38637              android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor
38638            </td>
38639            <td class="entry_type">
38640                <span class="entry_type_name">float</span>
38641
38642              <span class="entry_type_visibility"> [java_public]</span>
38643
38644
38645              <span class="entry_type_hwlevel">[limited] </span>
38646
38647
38648
38649
38650            </td> <!-- entry_type -->
38651
38652            <td class="entry_description">
38653              <p>The amount of exposure time increase factor applied to the original output
38654frame by the application processing before sending for reprocessing.<wbr/></p>
38655            </td>
38656
38657            <td class="entry_units">
38658              Relative exposure time increase factor.<wbr/>
38659            </td>
38660
38661            <td class="entry_range">
38662              <p>&gt;= 1.<wbr/>0</p>
38663            </td>
38664
38665            <td class="entry_hal_version">
38666              <p>3.<wbr/>2</p>
38667            </td>
38668
38669            <td class="entry_tags">
38670              <ul class="entry_tags">
38671                  <li><a href="#tag_REPROC">REPROC</a></li>
38672              </ul>
38673            </td>
38674
38675          </tr>
38676          <tr class="entries_header">
38677            <th class="th_details" colspan="6">Details</th>
38678          </tr>
38679          <tr class="entry_cont">
38680            <td class="entry_details" colspan="6">
38681              <p>This is optional,<wbr/> and will be supported if the camera device supports YUV_<wbr/>REPROCESSING
38682capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains YUV_<wbr/>REPROCESSING).<wbr/></p>
38683<p>For some YUV reprocessing use cases,<wbr/> the application may choose to filter the original
38684output frames to effectively reduce the noise to the same level as a frame that was
38685captured with longer exposure time.<wbr/> To be more specific,<wbr/> assuming the original captured
38686images were captured with a sensitivity of S and an exposure time of T,<wbr/> the model in
38687the camera device is that the amount of noise in the image would be approximately what
38688would be expected if the original capture parameters had been a sensitivity of
38689S/<wbr/>effectiveExposureFactor and an exposure time of T*effectiveExposureFactor,<wbr/> rather
38690than S and T respectively.<wbr/> If the captured images were processed by the application
38691before being sent for reprocessing,<wbr/> then the application may have used image processing
38692algorithms and/<wbr/>or multi-frame image fusion to reduce the noise in the
38693application-processed images (input images).<wbr/> By using the effectiveExposureFactor
38694control,<wbr/> the application can communicate to the camera device the actual noise level
38695improvement in the application-processed image.<wbr/> With this information,<wbr/> the camera
38696device can select appropriate noise reduction and edge enhancement parameters to avoid
38697excessive noise reduction (<a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a>) and insufficient edge
38698enhancement (<a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a>) being applied to the reprocessed frames.<wbr/></p>
38699<p>For example,<wbr/> for multi-frame image fusion use case,<wbr/> the application may fuse
38700multiple output frames together to a final frame for reprocessing.<wbr/> When N image are
38701fused into 1 image for reprocessing,<wbr/> the exposure time increase factor could be up to
38702square root of N (based on a simple photon shot noise model).<wbr/> The camera device will
38703adjust the reprocessing noise reduction and edge enhancement parameters accordingly to
38704produce the best quality images.<wbr/></p>
38705<p>This is relative factor,<wbr/> 1.<wbr/>0 indicates the application hasn't processed the input
38706buffer in a way that affects its effective exposure time.<wbr/></p>
38707<p>This control is only effective for YUV reprocessing capture request.<wbr/> For noise
38708reduction 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/>
38709Similarly,<wbr/> for edge enhancement reprocessing,<wbr/> it is only effective when
38710<code><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a> != OFF</code>.<wbr/></p>
38711            </td>
38712          </tr>
38713
38714
38715          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
38716           <!-- end of entry -->
38717
38718
38719
38720      <!-- end of kind -->
38721      </tbody>
38722      <tr><td colspan="7" class="kind">static</td></tr>
38723
38724      <thead class="entries_header">
38725        <tr>
38726          <th class="th_name">Property Name</th>
38727          <th class="th_type">Type</th>
38728          <th class="th_description">Description</th>
38729          <th class="th_units">Units</th>
38730          <th class="th_range">Range</th>
38731          <th class="th_hal_version">Initial HIDL HAL version</th>
38732          <th class="th_tags">Tags</th>
38733        </tr>
38734      </thead>
38735
38736      <tbody>
38737
38738
38739
38740
38741
38742
38743
38744
38745
38746
38747          <tr class="entry" id="static_android.reprocess.maxCaptureStall">
38748            <td class="entry_name
38749             " rowspan="3">
38750              android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall
38751            </td>
38752            <td class="entry_type">
38753                <span class="entry_type_name">int32</span>
38754
38755              <span class="entry_type_visibility"> [java_public]</span>
38756
38757
38758              <span class="entry_type_hwlevel">[limited] </span>
38759
38760
38761
38762
38763            </td> <!-- entry_type -->
38764
38765            <td class="entry_description">
38766              <p>The maximal camera capture pipeline stall (in unit of frame count) introduced by a
38767reprocess capture request.<wbr/></p>
38768            </td>
38769
38770            <td class="entry_units">
38771              Number of frames.<wbr/>
38772            </td>
38773
38774            <td class="entry_range">
38775              <p>&lt;= 4</p>
38776            </td>
38777
38778            <td class="entry_hal_version">
38779              <p>3.<wbr/>2</p>
38780            </td>
38781
38782            <td class="entry_tags">
38783              <ul class="entry_tags">
38784                  <li><a href="#tag_REPROC">REPROC</a></li>
38785              </ul>
38786            </td>
38787
38788          </tr>
38789          <tr class="entries_header">
38790            <th class="th_details" colspan="6">Details</th>
38791          </tr>
38792          <tr class="entry_cont">
38793            <td class="entry_details" colspan="6">
38794              <p>The key describes the maximal interference that one reprocess (input) request
38795can introduce to the camera simultaneous streaming of regular (output) capture
38796requests,<wbr/> including repeating requests.<wbr/></p>
38797<p>When a reprocessing capture request is submitted while a camera output repeating request
38798(e.<wbr/>g.<wbr/> preview) is being served by the camera device,<wbr/> it may preempt the camera capture
38799pipeline for at least one frame duration so that the camera device is unable to process
38800the following capture request in time for the next sensor start of exposure boundary.<wbr/>
38801When this happens,<wbr/> the application may observe a capture time gap (longer than one frame
38802duration) between adjacent capture output frames,<wbr/> which usually exhibits as preview
38803glitch if the repeating request output targets include a preview surface.<wbr/> This key gives
38804the worst-case number of frame stall introduced by one reprocess request with any kind of
38805formats/<wbr/>sizes combination.<wbr/></p>
38806<p>If this key reports 0,<wbr/> it means a reprocess request doesn't introduce any glitch to the
38807ongoing camera repeating request outputs,<wbr/> as if this reprocess request is never issued.<wbr/></p>
38808<p>This key is supported if the camera device supports PRIVATE or YUV reprocessing (
38809i.<wbr/>e.<wbr/> <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains PRIVATE_<wbr/>REPROCESSING or
38810YUV_<wbr/>REPROCESSING).<wbr/></p>
38811            </td>
38812          </tr>
38813
38814
38815          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
38816           <!-- end of entry -->
38817
38818
38819
38820      <!-- end of kind -->
38821      </tbody>
38822
38823  <!-- end of section -->
38824  <tr><td colspan="7" id="section_depth" class="section">depth</td></tr>
38825
38826
38827      <tr><td colspan="7" class="kind">static</td></tr>
38828
38829      <thead class="entries_header">
38830        <tr>
38831          <th class="th_name">Property Name</th>
38832          <th class="th_type">Type</th>
38833          <th class="th_description">Description</th>
38834          <th class="th_units">Units</th>
38835          <th class="th_range">Range</th>
38836          <th class="th_hal_version">Initial HIDL HAL version</th>
38837          <th class="th_tags">Tags</th>
38838        </tr>
38839      </thead>
38840
38841      <tbody>
38842
38843
38844
38845
38846
38847
38848
38849
38850
38851
38852          <tr class="entry" id="static_android.depth.maxDepthSamples">
38853            <td class="entry_name
38854             " rowspan="3">
38855              android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples
38856            </td>
38857            <td class="entry_type">
38858                <span class="entry_type_name">int32</span>
38859
38860              <span class="entry_type_visibility"> [system]</span>
38861
38862
38863              <span class="entry_type_hwlevel">[limited] </span>
38864
38865
38866
38867
38868            </td> <!-- entry_type -->
38869
38870            <td class="entry_description">
38871              <p>Maximum number of points that a depth point cloud may contain.<wbr/></p>
38872            </td>
38873
38874            <td class="entry_units">
38875            </td>
38876
38877            <td class="entry_range">
38878            </td>
38879
38880            <td class="entry_hal_version">
38881              <p>3.<wbr/>2</p>
38882            </td>
38883
38884            <td class="entry_tags">
38885              <ul class="entry_tags">
38886                  <li><a href="#tag_DEPTH">DEPTH</a></li>
38887              </ul>
38888            </td>
38889
38890          </tr>
38891          <tr class="entries_header">
38892            <th class="th_details" colspan="6">Details</th>
38893          </tr>
38894          <tr class="entry_cont">
38895            <td class="entry_details" colspan="6">
38896              <p>If a camera device supports outputting depth range data in the form of a depth point
38897cloud (<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
38898number of points an output buffer may contain.<wbr/></p>
38899<p>Any given buffer may contain between 0 and maxDepthSamples points,<wbr/> inclusive.<wbr/>
38900If output in the depth point cloud format is not supported,<wbr/> this entry will
38901not be defined.<wbr/></p>
38902            </td>
38903          </tr>
38904
38905
38906          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
38907           <!-- end of entry -->
38908
38909
38910          <tr class="entry" id="static_android.depth.availableDepthStreamConfigurations">
38911            <td class="entry_name
38912             " rowspan="3">
38913              android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stream<wbr/>Configurations
38914            </td>
38915            <td class="entry_type">
38916                <span class="entry_type_name entry_type_name_enum">int32</span>
38917                <span class="entry_type_container">x</span>
38918
38919                <span class="entry_type_array">
38920                  n x 4
38921                </span>
38922              <span class="entry_type_visibility"> [ndk_public as streamConfiguration]</span>
38923
38924
38925              <span class="entry_type_hwlevel">[limited] </span>
38926
38927
38928
38929                <ul class="entry_type_enum">
38930                  <li>
38931                    <span class="entry_type_enum_name">OUTPUT (v3.2)</span>
38932                  </li>
38933                  <li>
38934                    <span class="entry_type_enum_name">INPUT (v3.2)</span>
38935                  </li>
38936                </ul>
38937
38938            </td> <!-- entry_type -->
38939
38940            <td class="entry_description">
38941              <p>The available depth dataspace stream
38942configurations that this camera device supports
38943(i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p>
38944            </td>
38945
38946            <td class="entry_units">
38947            </td>
38948
38949            <td class="entry_range">
38950            </td>
38951
38952            <td class="entry_hal_version">
38953              <p>3.<wbr/>2</p>
38954            </td>
38955
38956            <td class="entry_tags">
38957              <ul class="entry_tags">
38958                  <li><a href="#tag_DEPTH">DEPTH</a></li>
38959              </ul>
38960            </td>
38961
38962          </tr>
38963          <tr class="entries_header">
38964            <th class="th_details" colspan="6">Details</th>
38965          </tr>
38966          <tr class="entry_cont">
38967            <td class="entry_details" colspan="6">
38968              <p>These are output stream configurations for use with
38969dataSpace HAL_<wbr/>DATASPACE_<wbr/>DEPTH.<wbr/> The configurations are
38970listed as <code>(format,<wbr/> width,<wbr/> height,<wbr/> input?)</code> tuples.<wbr/></p>
38971<p>Only devices that support depth output for at least
38972the HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>Y16 dense depth map may include
38973this entry.<wbr/></p>
38974<p>A device that also supports the HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>BLOB
38975sparse depth point cloud must report a single entry for
38976the format in this list as <code>(HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>BLOB,<wbr/>
38977<a href="#static_android.depth.maxDepthSamples">android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples</a>,<wbr/> 1,<wbr/> OUTPUT)</code> in addition to
38978the entries for HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>Y16.<wbr/></p>
38979            </td>
38980          </tr>
38981
38982
38983          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
38984           <!-- end of entry -->
38985
38986
38987          <tr class="entry" id="static_android.depth.availableDepthMinFrameDurations">
38988            <td class="entry_name
38989             " rowspan="3">
38990              android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Min<wbr/>Frame<wbr/>Durations
38991            </td>
38992            <td class="entry_type">
38993                <span class="entry_type_name">int64</span>
38994                <span class="entry_type_container">x</span>
38995
38996                <span class="entry_type_array">
38997                  4 x n
38998                </span>
38999              <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
39000
39001
39002              <span class="entry_type_hwlevel">[limited] </span>
39003
39004
39005
39006
39007            </td> <!-- entry_type -->
39008
39009            <td class="entry_description">
39010              <p>This lists the minimum frame duration for each
39011format/<wbr/>size combination for depth output formats.<wbr/></p>
39012            </td>
39013
39014            <td class="entry_units">
39015              (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
39016            </td>
39017
39018            <td class="entry_range">
39019            </td>
39020
39021            <td class="entry_hal_version">
39022              <p>3.<wbr/>2</p>
39023            </td>
39024
39025            <td class="entry_tags">
39026              <ul class="entry_tags">
39027                  <li><a href="#tag_DEPTH">DEPTH</a></li>
39028              </ul>
39029            </td>
39030
39031          </tr>
39032          <tr class="entries_header">
39033            <th class="th_details" colspan="6">Details</th>
39034          </tr>
39035          <tr class="entry_cont">
39036            <td class="entry_details" colspan="6">
39037              <p>This should correspond to the frame duration when only that
39038stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode)
39039set to either OFF or FAST.<wbr/></p>
39040<p>When multiple streams are used in a request,<wbr/> the minimum frame
39041duration will be max(individual stream min durations).<wbr/></p>
39042<p>The minimum frame duration of a stream (of a particular format,<wbr/> size)
39043is the same regardless of whether the stream is input or output.<wbr/></p>
39044<p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> and
39045<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for more details about
39046calculating the max frame rate.<wbr/></p>
39047            </td>
39048          </tr>
39049
39050
39051          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
39052           <!-- end of entry -->
39053
39054
39055          <tr class="entry" id="static_android.depth.availableDepthStallDurations">
39056            <td class="entry_name
39057             " rowspan="3">
39058              android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stall<wbr/>Durations
39059            </td>
39060            <td class="entry_type">
39061                <span class="entry_type_name">int64</span>
39062                <span class="entry_type_container">x</span>
39063
39064                <span class="entry_type_array">
39065                  4 x n
39066                </span>
39067              <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
39068
39069
39070              <span class="entry_type_hwlevel">[limited] </span>
39071
39072
39073
39074
39075            </td> <!-- entry_type -->
39076
39077            <td class="entry_description">
39078              <p>This lists the maximum stall duration for each
39079output format/<wbr/>size combination for depth streams.<wbr/></p>
39080            </td>
39081
39082            <td class="entry_units">
39083              (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
39084            </td>
39085
39086            <td class="entry_range">
39087            </td>
39088
39089            <td class="entry_hal_version">
39090              <p>3.<wbr/>2</p>
39091            </td>
39092
39093            <td class="entry_tags">
39094              <ul class="entry_tags">
39095                  <li><a href="#tag_DEPTH">DEPTH</a></li>
39096              </ul>
39097            </td>
39098
39099          </tr>
39100          <tr class="entries_header">
39101            <th class="th_details" colspan="6">Details</th>
39102          </tr>
39103          <tr class="entry_cont">
39104            <td class="entry_details" colspan="6">
39105              <p>A stall duration is how much extra time would get added
39106to the normal minimum frame duration for a repeating request
39107that has streams with non-zero stall.<wbr/></p>
39108<p>This functions similarly to
39109<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for depth
39110streams.<wbr/></p>
39111<p>All depth output stream formats may have a nonzero stall
39112duration.<wbr/></p>
39113            </td>
39114          </tr>
39115
39116
39117          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
39118           <!-- end of entry -->
39119
39120
39121          <tr class="entry" id="static_android.depth.depthIsExclusive">
39122            <td class="entry_name
39123             " rowspan="3">
39124              android.<wbr/>depth.<wbr/>depth<wbr/>Is<wbr/>Exclusive
39125            </td>
39126            <td class="entry_type">
39127                <span class="entry_type_name entry_type_name_enum">byte</span>
39128
39129              <span class="entry_type_visibility"> [public as boolean]</span>
39130
39131
39132              <span class="entry_type_hwlevel">[limited] </span>
39133
39134
39135
39136                <ul class="entry_type_enum">
39137                  <li>
39138                    <span class="entry_type_enum_name">FALSE (v3.2)</span>
39139                  </li>
39140                  <li>
39141                    <span class="entry_type_enum_name">TRUE (v3.2)</span>
39142                  </li>
39143                </ul>
39144
39145            </td> <!-- entry_type -->
39146
39147            <td class="entry_description">
39148              <p>Indicates whether a capture request may target both a
39149DEPTH16 /<wbr/> DEPTH_<wbr/>POINT_<wbr/>CLOUD output,<wbr/> and normal color outputs (such as
39150YUV_<wbr/>420_<wbr/>888,<wbr/> JPEG,<wbr/> or RAW) simultaneously.<wbr/></p>
39151            </td>
39152
39153            <td class="entry_units">
39154            </td>
39155
39156            <td class="entry_range">
39157            </td>
39158
39159            <td class="entry_hal_version">
39160              <p>3.<wbr/>2</p>
39161            </td>
39162
39163            <td class="entry_tags">
39164            </td>
39165
39166          </tr>
39167          <tr class="entries_header">
39168            <th class="th_details" colspan="6">Details</th>
39169          </tr>
39170          <tr class="entry_cont">
39171            <td class="entry_details" colspan="6">
39172              <p>If TRUE,<wbr/> including both depth and color outputs in a single
39173capture request is not supported.<wbr/> An application must interleave color
39174and depth requests.<wbr/>  If FALSE,<wbr/> a single request can target both types
39175of output.<wbr/></p>
39176<p>Typically,<wbr/> this restriction exists on camera devices that
39177need to emit a specific pattern or wavelength of light to
39178measure depth values,<wbr/> which causes the color image to be
39179corrupted during depth measurement.<wbr/></p>
39180            </td>
39181          </tr>
39182
39183
39184          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
39185           <!-- end of entry -->
39186
39187
39188          <tr class="entry" id="static_android.depth.availableRecommendedDepthStreamConfigurations">
39189            <td class="entry_name
39190             " rowspan="5">
39191              android.<wbr/>depth.<wbr/>available<wbr/>Recommended<wbr/>Depth<wbr/>Stream<wbr/>Configurations
39192            </td>
39193            <td class="entry_type">
39194                <span class="entry_type_name">int32</span>
39195                <span class="entry_type_container">x</span>
39196
39197                <span class="entry_type_array">
39198                  n x 5
39199                </span>
39200              <span class="entry_type_visibility"> [ndk_public as recommendedStreamConfiguration]</span>
39201
39202
39203
39204
39205
39206
39207            </td> <!-- entry_type -->
39208
39209            <td class="entry_description">
39210              <p>Recommended depth stream configurations for common client use cases.<wbr/></p>
39211            </td>
39212
39213            <td class="entry_units">
39214            </td>
39215
39216            <td class="entry_range">
39217            </td>
39218
39219            <td class="entry_hal_version">
39220              <p>3.<wbr/>4</p>
39221            </td>
39222
39223            <td class="entry_tags">
39224            </td>
39225
39226          </tr>
39227          <tr class="entries_header">
39228            <th class="th_details" colspan="6">Details</th>
39229          </tr>
39230          <tr class="entry_cont">
39231            <td class="entry_details" colspan="6">
39232              <p>Optional subset of the <a href="#static_android.depth.availableDepthStreamConfigurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stream<wbr/>Configurations</a> that
39233contains similar tuples listed as
39234(i.<wbr/>e.<wbr/> width,<wbr/> height,<wbr/> format,<wbr/> output/<wbr/>input stream,<wbr/> usecase bit field).<wbr/>
39235Camera devices will be able to suggest particular depth stream configurations which are
39236power and performance efficient for specific use cases.<wbr/> For more information about
39237retrieving the suggestions see
39238<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getRecommendedStreamConfigurationMap">CameraCharacteristics#getRecommendedStreamConfigurationMap</a>.<wbr/></p>
39239            </td>
39240          </tr>
39241
39242          <tr class="entries_header">
39243            <th class="th_details" colspan="6">HAL Implementation Details</th>
39244          </tr>
39245          <tr class="entry_cont">
39246            <td class="entry_details" colspan="6">
39247              <p>Recommended depth configurations are expected to be declared with SNAPSHOT and/<wbr/>or
39248ZSL if supported by the device.<wbr/>
39249For additional details on how to declare recommended stream configurations,<wbr/> check
39250<a href="#static_android.scaler.availableRecommendedStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Recommended<wbr/>Stream<wbr/>Configurations</a>.<wbr/>
39251For additional requirements on depth streams please consider
39252<a href="#static_android.depth.availableDepthStreamConfigurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stream<wbr/>Configurations</a>.<wbr/></p>
39253            </td>
39254          </tr>
39255
39256          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
39257           <!-- end of entry -->
39258
39259
39260          <tr class="entry" id="static_android.depth.availableDynamicDepthStreamConfigurations">
39261            <td class="entry_name
39262             " rowspan="5">
39263              android.<wbr/>depth.<wbr/>available<wbr/>Dynamic<wbr/>Depth<wbr/>Stream<wbr/>Configurations
39264            </td>
39265            <td class="entry_type">
39266                <span class="entry_type_name entry_type_name_enum">int32</span>
39267                <span class="entry_type_container">x</span>
39268
39269                <span class="entry_type_array">
39270                  n x 4
39271                </span>
39272              <span class="entry_type_visibility"> [ndk_public as streamConfiguration]</span>
39273
39274
39275
39276
39277
39278                <ul class="entry_type_enum">
39279                  <li>
39280                    <span class="entry_type_enum_name">OUTPUT (v3.4)</span>
39281                  </li>
39282                  <li>
39283                    <span class="entry_type_enum_name">INPUT (v3.4)</span>
39284                  </li>
39285                </ul>
39286
39287            </td> <!-- entry_type -->
39288
39289            <td class="entry_description">
39290              <p>The available dynamic depth dataspace stream
39291configurations that this camera device supports
39292(i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p>
39293            </td>
39294
39295            <td class="entry_units">
39296            </td>
39297
39298            <td class="entry_range">
39299            </td>
39300
39301            <td class="entry_hal_version">
39302              <p>3.<wbr/>4</p>
39303            </td>
39304
39305            <td class="entry_tags">
39306              <ul class="entry_tags">
39307                  <li><a href="#tag_DEPTH">DEPTH</a></li>
39308              </ul>
39309            </td>
39310
39311          </tr>
39312          <tr class="entries_header">
39313            <th class="th_details" colspan="6">Details</th>
39314          </tr>
39315          <tr class="entry_cont">
39316            <td class="entry_details" colspan="6">
39317              <p>These are output stream configurations for use with
39318dataSpace DYNAMIC_<wbr/>DEPTH.<wbr/> The configurations are
39319listed as <code>(format,<wbr/> width,<wbr/> height,<wbr/> input?)</code> tuples.<wbr/></p>
39320<p>Only devices that support depth output for at least
39321the HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>Y16 dense depth map along with
39322HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>BLOB with the same size or size with
39323the same aspect ratio can have dynamic depth dataspace
39324stream configuration.<wbr/> <a href="#static_android.depth.depthIsExclusive">android.<wbr/>depth.<wbr/>depth<wbr/>Is<wbr/>Exclusive</a> also
39325needs to be set to FALSE.<wbr/></p>
39326            </td>
39327          </tr>
39328
39329          <tr class="entries_header">
39330            <th class="th_details" colspan="6">HAL Implementation Details</th>
39331          </tr>
39332          <tr class="entry_cont">
39333            <td class="entry_details" colspan="6">
39334              <p>Do not set this property directly.<wbr/>
39335It is populated by camera framework and must not be set
39336at the HAL layer.<wbr/></p>
39337            </td>
39338          </tr>
39339
39340          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
39341           <!-- end of entry -->
39342
39343
39344          <tr class="entry" id="static_android.depth.availableDynamicDepthMinFrameDurations">
39345            <td class="entry_name
39346             " rowspan="5">
39347              android.<wbr/>depth.<wbr/>available<wbr/>Dynamic<wbr/>Depth<wbr/>Min<wbr/>Frame<wbr/>Durations
39348            </td>
39349            <td class="entry_type">
39350                <span class="entry_type_name">int64</span>
39351                <span class="entry_type_container">x</span>
39352
39353                <span class="entry_type_array">
39354                  4 x n
39355                </span>
39356              <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
39357
39358
39359
39360
39361
39362
39363            </td> <!-- entry_type -->
39364
39365            <td class="entry_description">
39366              <p>This lists the minimum frame duration for each
39367format/<wbr/>size combination for dynamic depth output streams.<wbr/></p>
39368            </td>
39369
39370            <td class="entry_units">
39371              (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
39372            </td>
39373
39374            <td class="entry_range">
39375            </td>
39376
39377            <td class="entry_hal_version">
39378              <p>3.<wbr/>4</p>
39379            </td>
39380
39381            <td class="entry_tags">
39382              <ul class="entry_tags">
39383                  <li><a href="#tag_DEPTH">DEPTH</a></li>
39384              </ul>
39385            </td>
39386
39387          </tr>
39388          <tr class="entries_header">
39389            <th class="th_details" colspan="6">Details</th>
39390          </tr>
39391          <tr class="entry_cont">
39392            <td class="entry_details" colspan="6">
39393              <p>This should correspond to the frame duration when only that
39394stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode)
39395set to either OFF or FAST.<wbr/></p>
39396<p>When multiple streams are used in a request,<wbr/> the minimum frame
39397duration will be max(individual stream min durations).<wbr/></p>
39398<p>The minimum frame duration of a stream (of a particular format,<wbr/> size)
39399is the same regardless of whether the stream is input or output.<wbr/></p>
39400            </td>
39401          </tr>
39402
39403          <tr class="entries_header">
39404            <th class="th_details" colspan="6">HAL Implementation Details</th>
39405          </tr>
39406          <tr class="entry_cont">
39407            <td class="entry_details" colspan="6">
39408              <p>Do not set this property directly.<wbr/>
39409It is populated by camera framework and must not be set
39410at the HAL layer.<wbr/></p>
39411            </td>
39412          </tr>
39413
39414          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
39415           <!-- end of entry -->
39416
39417
39418          <tr class="entry" id="static_android.depth.availableDynamicDepthStallDurations">
39419            <td class="entry_name
39420             " rowspan="5">
39421              android.<wbr/>depth.<wbr/>available<wbr/>Dynamic<wbr/>Depth<wbr/>Stall<wbr/>Durations
39422            </td>
39423            <td class="entry_type">
39424                <span class="entry_type_name">int64</span>
39425                <span class="entry_type_container">x</span>
39426
39427                <span class="entry_type_array">
39428                  4 x n
39429                </span>
39430              <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
39431
39432
39433
39434
39435
39436
39437            </td> <!-- entry_type -->
39438
39439            <td class="entry_description">
39440              <p>This lists the maximum stall duration for each
39441output format/<wbr/>size combination for dynamic depth streams.<wbr/></p>
39442            </td>
39443
39444            <td class="entry_units">
39445              (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
39446            </td>
39447
39448            <td class="entry_range">
39449            </td>
39450
39451            <td class="entry_hal_version">
39452              <p>3.<wbr/>4</p>
39453            </td>
39454
39455            <td class="entry_tags">
39456              <ul class="entry_tags">
39457                  <li><a href="#tag_DEPTH">DEPTH</a></li>
39458              </ul>
39459            </td>
39460
39461          </tr>
39462          <tr class="entries_header">
39463            <th class="th_details" colspan="6">Details</th>
39464          </tr>
39465          <tr class="entry_cont">
39466            <td class="entry_details" colspan="6">
39467              <p>A stall duration is how much extra time would get added
39468to the normal minimum frame duration for a repeating request
39469that has streams with non-zero stall.<wbr/></p>
39470<p>All dynamic depth output streams may have a nonzero stall
39471duration.<wbr/></p>
39472            </td>
39473          </tr>
39474
39475          <tr class="entries_header">
39476            <th class="th_details" colspan="6">HAL Implementation Details</th>
39477          </tr>
39478          <tr class="entry_cont">
39479            <td class="entry_details" colspan="6">
39480              <p>Do not set this property directly.<wbr/>
39481It is populated by camera framework and must not be set
39482at the HAL layer.<wbr/></p>
39483            </td>
39484          </tr>
39485
39486          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
39487           <!-- end of entry -->
39488
39489
39490          <tr class="entry" id="static_android.depth.availableDepthStreamConfigurationsMaximumResolution">
39491            <td class="entry_name
39492             " rowspan="3">
39493              android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stream<wbr/>Configurations<wbr/>Maximum<wbr/>Resolution
39494            </td>
39495            <td class="entry_type">
39496                <span class="entry_type_name entry_type_name_enum">int32</span>
39497                <span class="entry_type_container">x</span>
39498
39499                <span class="entry_type_array">
39500                  n x 4
39501                </span>
39502              <span class="entry_type_visibility"> [ndk_public as streamConfiguration]</span>
39503
39504
39505
39506
39507
39508                <ul class="entry_type_enum">
39509                  <li>
39510                    <span class="entry_type_enum_name">OUTPUT (v3.6)</span>
39511                  </li>
39512                  <li>
39513                    <span class="entry_type_enum_name">INPUT (v3.6)</span>
39514                  </li>
39515                </ul>
39516
39517            </td> <!-- entry_type -->
39518
39519            <td class="entry_description">
39520              <p>The available depth dataspace stream
39521configurations that this camera device supports
39522(i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream) when a CaptureRequest is submitted with
39523<a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> set to
39524<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p>
39525            </td>
39526
39527            <td class="entry_units">
39528            </td>
39529
39530            <td class="entry_range">
39531            </td>
39532
39533            <td class="entry_hal_version">
39534              <p>3.<wbr/>6</p>
39535            </td>
39536
39537            <td class="entry_tags">
39538              <ul class="entry_tags">
39539                  <li><a href="#tag_DEPTH">DEPTH</a></li>
39540              </ul>
39541            </td>
39542
39543          </tr>
39544          <tr class="entries_header">
39545            <th class="th_details" colspan="6">Details</th>
39546          </tr>
39547          <tr class="entry_cont">
39548            <td class="entry_details" colspan="6">
39549              <p>Analogous to <a href="#static_android.depth.availableDepthStreamConfigurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stream<wbr/>Configurations</a>,<wbr/> for configurations which
39550are applicable when <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to
39551<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p>
39552            </td>
39553          </tr>
39554
39555
39556          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
39557           <!-- end of entry -->
39558
39559
39560          <tr class="entry" id="static_android.depth.availableDepthMinFrameDurationsMaximumResolution">
39561            <td class="entry_name
39562             " rowspan="3">
39563              android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Min<wbr/>Frame<wbr/>Durations<wbr/>Maximum<wbr/>Resolution
39564            </td>
39565            <td class="entry_type">
39566                <span class="entry_type_name">int64</span>
39567                <span class="entry_type_container">x</span>
39568
39569                <span class="entry_type_array">
39570                  4 x n
39571                </span>
39572              <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
39573
39574
39575
39576
39577
39578
39579            </td> <!-- entry_type -->
39580
39581            <td class="entry_description">
39582              <p>This lists the minimum frame duration for each
39583format/<wbr/>size combination for depth output formats when a CaptureRequest is submitted with
39584<a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> set to
39585<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p>
39586            </td>
39587
39588            <td class="entry_units">
39589              (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
39590            </td>
39591
39592            <td class="entry_range">
39593            </td>
39594
39595            <td class="entry_hal_version">
39596              <p>3.<wbr/>6</p>
39597            </td>
39598
39599            <td class="entry_tags">
39600              <ul class="entry_tags">
39601                  <li><a href="#tag_DEPTH">DEPTH</a></li>
39602              </ul>
39603            </td>
39604
39605          </tr>
39606          <tr class="entries_header">
39607            <th class="th_details" colspan="6">Details</th>
39608          </tr>
39609          <tr class="entry_cont">
39610            <td class="entry_details" colspan="6">
39611              <p>Analogous to <a href="#static_android.depth.availableDepthMinFrameDurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Min<wbr/>Frame<wbr/>Durations</a>,<wbr/> for configurations which
39612are applicable when <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to
39613<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p>
39614<p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> and
39615<a href="#static_android.scaler.availableStallDurationsMaximumResolution">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations<wbr/>Maximum<wbr/>Resolution</a> for more details about
39616calculating the max frame rate.<wbr/></p>
39617            </td>
39618          </tr>
39619
39620
39621          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
39622           <!-- end of entry -->
39623
39624
39625          <tr class="entry" id="static_android.depth.availableDepthStallDurationsMaximumResolution">
39626            <td class="entry_name
39627             " rowspan="3">
39628              android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stall<wbr/>Durations<wbr/>Maximum<wbr/>Resolution
39629            </td>
39630            <td class="entry_type">
39631                <span class="entry_type_name">int64</span>
39632                <span class="entry_type_container">x</span>
39633
39634                <span class="entry_type_array">
39635                  4 x n
39636                </span>
39637              <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
39638
39639
39640
39641
39642
39643
39644            </td> <!-- entry_type -->
39645
39646            <td class="entry_description">
39647              <p>This lists the maximum stall duration for each
39648output format/<wbr/>size combination for depth streams for CaptureRequests where
39649<a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to
39650<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p>
39651            </td>
39652
39653            <td class="entry_units">
39654              (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
39655            </td>
39656
39657            <td class="entry_range">
39658            </td>
39659
39660            <td class="entry_hal_version">
39661              <p>3.<wbr/>6</p>
39662            </td>
39663
39664            <td class="entry_tags">
39665              <ul class="entry_tags">
39666                  <li><a href="#tag_DEPTH">DEPTH</a></li>
39667              </ul>
39668            </td>
39669
39670          </tr>
39671          <tr class="entries_header">
39672            <th class="th_details" colspan="6">Details</th>
39673          </tr>
39674          <tr class="entry_cont">
39675            <td class="entry_details" colspan="6">
39676              <p>Analogous to <a href="#static_android.depth.availableDepthStallDurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stall<wbr/>Durations</a>,<wbr/> for configurations which
39677are applicable when <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to
39678<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p>
39679            </td>
39680          </tr>
39681
39682
39683          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
39684           <!-- end of entry -->
39685
39686
39687          <tr class="entry" id="static_android.depth.availableDynamicDepthStreamConfigurationsMaximumResolution">
39688            <td class="entry_name
39689             " rowspan="5">
39690              android.<wbr/>depth.<wbr/>available<wbr/>Dynamic<wbr/>Depth<wbr/>Stream<wbr/>Configurations<wbr/>Maximum<wbr/>Resolution
39691            </td>
39692            <td class="entry_type">
39693                <span class="entry_type_name entry_type_name_enum">int32</span>
39694                <span class="entry_type_container">x</span>
39695
39696                <span class="entry_type_array">
39697                  n x 4
39698                </span>
39699              <span class="entry_type_visibility"> [ndk_public as streamConfiguration]</span>
39700
39701
39702
39703
39704
39705                <ul class="entry_type_enum">
39706                  <li>
39707                    <span class="entry_type_enum_name">OUTPUT (v3.6)</span>
39708                  </li>
39709                  <li>
39710                    <span class="entry_type_enum_name">INPUT (v3.6)</span>
39711                  </li>
39712                </ul>
39713
39714            </td> <!-- entry_type -->
39715
39716            <td class="entry_description">
39717              <p>The available dynamic depth dataspace stream
39718configurations that this camera device supports (i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/>
39719output/<wbr/>input stream) for CaptureRequests where <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to
39720<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p>
39721            </td>
39722
39723            <td class="entry_units">
39724            </td>
39725
39726            <td class="entry_range">
39727            </td>
39728
39729            <td class="entry_hal_version">
39730              <p>3.<wbr/>6</p>
39731            </td>
39732
39733            <td class="entry_tags">
39734              <ul class="entry_tags">
39735                  <li><a href="#tag_DEPTH">DEPTH</a></li>
39736              </ul>
39737            </td>
39738
39739          </tr>
39740          <tr class="entries_header">
39741            <th class="th_details" colspan="6">Details</th>
39742          </tr>
39743          <tr class="entry_cont">
39744            <td class="entry_details" colspan="6">
39745              <p>Analogous to <a href="#static_android.depth.availableDynamicDepthStreamConfigurations">android.<wbr/>depth.<wbr/>available<wbr/>Dynamic<wbr/>Depth<wbr/>Stream<wbr/>Configurations</a>,<wbr/> for configurations
39746which are applicable when <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to
39747<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p>
39748            </td>
39749          </tr>
39750
39751          <tr class="entries_header">
39752            <th class="th_details" colspan="6">HAL Implementation Details</th>
39753          </tr>
39754          <tr class="entry_cont">
39755            <td class="entry_details" colspan="6">
39756              <p>Do not set this property directly.<wbr/>
39757It is populated by camera framework and must not be set
39758at the HAL layer.<wbr/></p>
39759            </td>
39760          </tr>
39761
39762          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
39763           <!-- end of entry -->
39764
39765
39766          <tr class="entry" id="static_android.depth.availableDynamicDepthMinFrameDurationsMaximumResolution">
39767            <td class="entry_name
39768             " rowspan="5">
39769              android.<wbr/>depth.<wbr/>available<wbr/>Dynamic<wbr/>Depth<wbr/>Min<wbr/>Frame<wbr/>Durations<wbr/>Maximum<wbr/>Resolution
39770            </td>
39771            <td class="entry_type">
39772                <span class="entry_type_name">int64</span>
39773                <span class="entry_type_container">x</span>
39774
39775                <span class="entry_type_array">
39776                  4 x n
39777                </span>
39778              <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
39779
39780
39781
39782
39783
39784
39785            </td> <!-- entry_type -->
39786
39787            <td class="entry_description">
39788              <p>This lists the minimum frame duration for each
39789format/<wbr/>size combination for dynamic depth output streams  for CaptureRequests where
39790<a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to
39791<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p>
39792            </td>
39793
39794            <td class="entry_units">
39795              (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
39796            </td>
39797
39798            <td class="entry_range">
39799            </td>
39800
39801            <td class="entry_hal_version">
39802              <p>3.<wbr/>6</p>
39803            </td>
39804
39805            <td class="entry_tags">
39806              <ul class="entry_tags">
39807                  <li><a href="#tag_DEPTH">DEPTH</a></li>
39808              </ul>
39809            </td>
39810
39811          </tr>
39812          <tr class="entries_header">
39813            <th class="th_details" colspan="6">Details</th>
39814          </tr>
39815          <tr class="entry_cont">
39816            <td class="entry_details" colspan="6">
39817              <p>Analogous to <a href="#static_android.depth.availableDynamicDepthMinFrameDurations">android.<wbr/>depth.<wbr/>available<wbr/>Dynamic<wbr/>Depth<wbr/>Min<wbr/>Frame<wbr/>Durations</a>,<wbr/> for configurations
39818which are applicable when <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to
39819<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p>
39820            </td>
39821          </tr>
39822
39823          <tr class="entries_header">
39824            <th class="th_details" colspan="6">HAL Implementation Details</th>
39825          </tr>
39826          <tr class="entry_cont">
39827            <td class="entry_details" colspan="6">
39828              <p>Do not set this property directly.<wbr/>
39829It is populated by camera framework and must not be set
39830at the HAL layer.<wbr/></p>
39831            </td>
39832          </tr>
39833
39834          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
39835           <!-- end of entry -->
39836
39837
39838          <tr class="entry" id="static_android.depth.availableDynamicDepthStallDurationsMaximumResolution">
39839            <td class="entry_name
39840             " rowspan="5">
39841              android.<wbr/>depth.<wbr/>available<wbr/>Dynamic<wbr/>Depth<wbr/>Stall<wbr/>Durations<wbr/>Maximum<wbr/>Resolution
39842            </td>
39843            <td class="entry_type">
39844                <span class="entry_type_name">int64</span>
39845                <span class="entry_type_container">x</span>
39846
39847                <span class="entry_type_array">
39848                  4 x n
39849                </span>
39850              <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
39851
39852
39853
39854
39855
39856
39857            </td> <!-- entry_type -->
39858
39859            <td class="entry_description">
39860              <p>This lists the maximum stall duration for each
39861output format/<wbr/>size combination for dynamic depth streams for CaptureRequests where
39862<a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to
39863<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p>
39864            </td>
39865
39866            <td class="entry_units">
39867              (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
39868            </td>
39869
39870            <td class="entry_range">
39871            </td>
39872
39873            <td class="entry_hal_version">
39874              <p>3.<wbr/>6</p>
39875            </td>
39876
39877            <td class="entry_tags">
39878              <ul class="entry_tags">
39879                  <li><a href="#tag_DEPTH">DEPTH</a></li>
39880              </ul>
39881            </td>
39882
39883          </tr>
39884          <tr class="entries_header">
39885            <th class="th_details" colspan="6">Details</th>
39886          </tr>
39887          <tr class="entry_cont">
39888            <td class="entry_details" colspan="6">
39889              <p>Analogous to <a href="#static_android.depth.availableDynamicDepthStallDurations">android.<wbr/>depth.<wbr/>available<wbr/>Dynamic<wbr/>Depth<wbr/>Stall<wbr/>Durations</a>,<wbr/> for configurations
39890which are applicable when <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to
39891<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p>
39892            </td>
39893          </tr>
39894
39895          <tr class="entries_header">
39896            <th class="th_details" colspan="6">HAL Implementation Details</th>
39897          </tr>
39898          <tr class="entry_cont">
39899            <td class="entry_details" colspan="6">
39900              <p>Do not set this property directly.<wbr/>
39901It is populated by camera framework and must not be set
39902at the HAL layer.<wbr/></p>
39903            </td>
39904          </tr>
39905
39906          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
39907           <!-- end of entry -->
39908
39909
39910
39911      <!-- end of kind -->
39912      </tbody>
39913
39914  <!-- end of section -->
39915  <tr><td colspan="7" id="section_logicalMultiCamera" class="section">logicalMultiCamera</td></tr>
39916
39917
39918      <tr><td colspan="7" class="kind">static</td></tr>
39919
39920      <thead class="entries_header">
39921        <tr>
39922          <th class="th_name">Property Name</th>
39923          <th class="th_type">Type</th>
39924          <th class="th_description">Description</th>
39925          <th class="th_units">Units</th>
39926          <th class="th_range">Range</th>
39927          <th class="th_hal_version">Initial HIDL HAL version</th>
39928          <th class="th_tags">Tags</th>
39929        </tr>
39930      </thead>
39931
39932      <tbody>
39933
39934
39935
39936
39937
39938
39939
39940
39941
39942
39943          <tr class="entry" id="static_android.logicalMultiCamera.physicalIds">
39944            <td class="entry_name
39945             " rowspan="5">
39946              android.<wbr/>logical<wbr/>Multi<wbr/>Camera.<wbr/>physical<wbr/>Ids
39947            </td>
39948            <td class="entry_type">
39949                <span class="entry_type_name">byte</span>
39950                <span class="entry_type_container">x</span>
39951
39952                <span class="entry_type_array">
39953                  n
39954                </span>
39955              <span class="entry_type_visibility"> [ndk_public]</span>
39956
39957
39958              <span class="entry_type_hwlevel">[limited] </span>
39959
39960
39961
39962
39963            </td> <!-- entry_type -->
39964
39965            <td class="entry_description">
39966              <p>String containing the ids of the underlying physical cameras.<wbr/></p>
39967            </td>
39968
39969            <td class="entry_units">
39970              UTF-8 null-terminated string
39971            </td>
39972
39973            <td class="entry_range">
39974            </td>
39975
39976            <td class="entry_hal_version">
39977              <p>3.<wbr/>3</p>
39978            </td>
39979
39980            <td class="entry_tags">
39981              <ul class="entry_tags">
39982                  <li><a href="#tag_LOGICALCAMERA">LOGICALCAMERA</a></li>
39983              </ul>
39984            </td>
39985
39986          </tr>
39987          <tr class="entries_header">
39988            <th class="th_details" colspan="6">Details</th>
39989          </tr>
39990          <tr class="entry_cont">
39991            <td class="entry_details" colspan="6">
39992              <p>For a logical camera,<wbr/> this is concatenation of all underlying physical camera IDs.<wbr/>
39993The null terminator for physical camera ID must be preserved so that the whole string
39994can be tokenized using '\0' to generate list of physical camera IDs.<wbr/></p>
39995<p>For example,<wbr/> if the physical camera IDs of the logical camera are "2" and "3",<wbr/> the
39996value of this tag will be ['2',<wbr/> '\0',<wbr/> '3',<wbr/> '\0'].<wbr/></p>
39997<p>The number of physical camera IDs must be no less than 2.<wbr/></p>
39998            </td>
39999          </tr>
40000
40001          <tr class="entries_header">
40002            <th class="th_details" colspan="6">HAL Implementation Details</th>
40003          </tr>
40004          <tr class="entry_cont">
40005            <td class="entry_details" colspan="6">
40006              <p>Each physical camera id should uniquely identify a camera lens in the system.<wbr/>
40007So if each camera lens only backs one logical camera,<wbr/> all camera IDs in the system,<wbr/>
40008physical IDs or non-physical IDs,<wbr/> should be unique.<wbr/></p>
40009<p>In rare cases,<wbr/> one camera lens backs two different logical cameras,<wbr/> the
40010physicalIds of both logical cameras should contain a physical camera ID
40011identifying that same camera lens.<wbr/> For example,<wbr/> if the mobile device has 3 rear facing
40012cameras and no front facing cameras,<wbr/> and the 3 rear facing lenses may be modelled as
400132 logical cameras:</p>
40014<ul>
40015<li>"device@1.<wbr/>0/<wbr/>internal/<wbr/>10": physicalIds: "camera0",<wbr/> "camera42"</li>
40016<li>"device@1.<wbr/>0/<wbr/>internal/<wbr/>11": physicalIds: "camera1",<wbr/> "camera42"</li>
40017</ul>
40018<p>In this case,<wbr/> the two logical cameras are conflicting devices because they are backed
40019by a common lens.<wbr/></p>
40020<p>Physical camera IDs can be an arbitrary string not containing '\0'.<wbr/></p>
40021            </td>
40022          </tr>
40023
40024          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
40025           <!-- end of entry -->
40026
40027
40028          <tr class="entry" id="static_android.logicalMultiCamera.sensorSyncType">
40029            <td class="entry_name
40030             " rowspan="3">
40031              android.<wbr/>logical<wbr/>Multi<wbr/>Camera.<wbr/>sensor<wbr/>Sync<wbr/>Type
40032            </td>
40033            <td class="entry_type">
40034                <span class="entry_type_name entry_type_name_enum">byte</span>
40035
40036              <span class="entry_type_visibility"> [public]</span>
40037
40038
40039              <span class="entry_type_hwlevel">[limited] </span>
40040
40041
40042
40043                <ul class="entry_type_enum">
40044                  <li>
40045                    <span class="entry_type_enum_name">APPROXIMATE (v3.3)</span>
40046                    <span class="entry_type_enum_notes"><p>A software mechanism is used to synchronize between the physical cameras.<wbr/> As a result,<wbr/>
40047the timestamp of an image from a physical stream is only an approximation of the
40048image sensor start-of-exposure time.<wbr/></p></span>
40049                  </li>
40050                  <li>
40051                    <span class="entry_type_enum_name">CALIBRATED (v3.3)</span>
40052                    <span class="entry_type_enum_notes"><p>The camera device supports frame timestamp synchronization at the hardware level,<wbr/>
40053and the timestamp of a physical stream image accurately reflects its
40054start-of-exposure time.<wbr/></p></span>
40055                  </li>
40056                </ul>
40057
40058            </td> <!-- entry_type -->
40059
40060            <td class="entry_description">
40061              <p>The accuracy of frame timestamp synchronization between physical cameras</p>
40062            </td>
40063
40064            <td class="entry_units">
40065            </td>
40066
40067            <td class="entry_range">
40068            </td>
40069
40070            <td class="entry_hal_version">
40071              <p>3.<wbr/>3</p>
40072            </td>
40073
40074            <td class="entry_tags">
40075              <ul class="entry_tags">
40076                  <li><a href="#tag_LOGICALCAMERA">LOGICALCAMERA</a></li>
40077              </ul>
40078            </td>
40079
40080          </tr>
40081          <tr class="entries_header">
40082            <th class="th_details" colspan="6">Details</th>
40083          </tr>
40084          <tr class="entry_cont">
40085            <td class="entry_details" colspan="6">
40086              <p>The accuracy of the frame timestamp synchronization determines the physical cameras'
40087ability to start exposure at the same time.<wbr/> If the sensorSyncType is CALIBRATED,<wbr/> the
40088physical camera sensors usually run in leader/<wbr/>follower mode where one sensor generates a
40089timing signal for the other,<wbr/> so that their shutter time is synchronized.<wbr/> For APPROXIMATE
40090sensorSyncType,<wbr/> the camera sensors usually run in leader/<wbr/>leader mode,<wbr/> where both sensors
40091use their own timing generator,<wbr/> and there could be offset between their start of exposure.<wbr/></p>
40092<p>In both cases,<wbr/> all images generated for a particular capture request still carry the same
40093timestamps,<wbr/> so that they can be used to look up the matching frame number and
40094onCaptureStarted callback.<wbr/></p>
40095<p>This tag is only applicable if the logical camera device supports concurrent physical
40096streams from different physical cameras.<wbr/></p>
40097            </td>
40098          </tr>
40099
40100
40101          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
40102           <!-- end of entry -->
40103
40104
40105
40106      <!-- end of kind -->
40107      </tbody>
40108      <tr><td colspan="7" class="kind">dynamic</td></tr>
40109
40110      <thead class="entries_header">
40111        <tr>
40112          <th class="th_name">Property Name</th>
40113          <th class="th_type">Type</th>
40114          <th class="th_description">Description</th>
40115          <th class="th_units">Units</th>
40116          <th class="th_range">Range</th>
40117          <th class="th_hal_version">Initial HIDL HAL version</th>
40118          <th class="th_tags">Tags</th>
40119        </tr>
40120      </thead>
40121
40122      <tbody>
40123
40124
40125
40126
40127
40128
40129
40130
40131
40132
40133          <tr class="entry" id="dynamic_android.logicalMultiCamera.activePhysicalId">
40134            <td class="entry_name
40135             " rowspan="5">
40136              android.<wbr/>logical<wbr/>Multi<wbr/>Camera.<wbr/>active<wbr/>Physical<wbr/>Id
40137            </td>
40138            <td class="entry_type">
40139                <span class="entry_type_name">byte</span>
40140
40141              <span class="entry_type_visibility"> [public as string]</span>
40142
40143
40144
40145
40146
40147
40148            </td> <!-- entry_type -->
40149
40150            <td class="entry_description">
40151              <p>String containing the ID of the underlying active physical camera.<wbr/></p>
40152            </td>
40153
40154            <td class="entry_units">
40155              UTF-8 null-terminated string
40156            </td>
40157
40158            <td class="entry_range">
40159            </td>
40160
40161            <td class="entry_hal_version">
40162              <p>3.<wbr/>4</p>
40163            </td>
40164
40165            <td class="entry_tags">
40166              <ul class="entry_tags">
40167                  <li><a href="#tag_LOGICALCAMERA">LOGICALCAMERA</a></li>
40168              </ul>
40169            </td>
40170
40171          </tr>
40172          <tr class="entries_header">
40173            <th class="th_details" colspan="6">Details</th>
40174          </tr>
40175          <tr class="entry_cont">
40176            <td class="entry_details" colspan="6">
40177              <p>The ID of the active physical camera that's backing the logical camera.<wbr/> All camera
40178streams and metadata that are not physical camera specific will be originating from this
40179physical camera.<wbr/></p>
40180<p>For a logical camera made up of physical cameras where each camera's lenses have
40181different characteristics,<wbr/> the camera device may choose to switch between the physical
40182cameras when application changes FOCAL_<wbr/>LENGTH or SCALER_<wbr/>CROP_<wbr/>REGION.<wbr/>
40183At the time of lens switch,<wbr/> this result metadata reflects the new active physical camera
40184ID.<wbr/></p>
40185<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/>
40186When available,<wbr/> this must be one of valid physical IDs backing this logical multi-camera.<wbr/>
40187If this key is not available for a logical multi-camera,<wbr/> the camera device implementation
40188may still switch between different active physical cameras based on use case,<wbr/> but the
40189current active physical camera information won't be available to the application.<wbr/></p>
40190            </td>
40191          </tr>
40192
40193          <tr class="entries_header">
40194            <th class="th_details" colspan="6">HAL Implementation Details</th>
40195          </tr>
40196          <tr class="entry_cont">
40197            <td class="entry_details" colspan="6">
40198              <p>Staring from HIDL ICameraDevice version 3.<wbr/>5,<wbr/> the tag must be available in the capture
40199result metadata to indicate current active physical camera ID.<wbr/></p>
40200            </td>
40201          </tr>
40202
40203          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
40204           <!-- end of entry -->
40205
40206
40207          <tr class="entry" id="dynamic_android.logicalMultiCamera.activePhysicalSensorCropRegion">
40208            <td class="entry_name
40209             " rowspan="5">
40210              android.<wbr/>logical<wbr/>Multi<wbr/>Camera.<wbr/>active<wbr/>Physical<wbr/>Sensor<wbr/>Crop<wbr/>Region
40211            </td>
40212            <td class="entry_type">
40213                <span class="entry_type_name">int32</span>
40214                <span class="entry_type_container">x</span>
40215
40216                <span class="entry_type_array">
40217                  4
40218                </span>
40219              <span class="entry_type_visibility"> [public as rectangle]</span>
40220
40221
40222
40223
40224
40225
40226            </td> <!-- entry_type -->
40227
40228            <td class="entry_description">
40229              <p>The current region of the active physical sensor that will be read out for this
40230capture.<wbr/></p>
40231            </td>
40232
40233            <td class="entry_units">
40234              Pixel coordinates relative to
40235        android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size or
40236        android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size of the currently
40237        android.<wbr/>logical<wbr/>Multi<wbr/>Camera.<wbr/>active<wbr/>Physical<wbr/>Id depending on distortion correction capability
40238        and mode
40239            </td>
40240
40241            <td class="entry_range">
40242            </td>
40243
40244            <td class="entry_hal_version">
40245              <p>3.<wbr/>10</p>
40246            </td>
40247
40248            <td class="entry_tags">
40249              <ul class="entry_tags">
40250                  <li><a href="#tag_LOGICALCAMERA">LOGICALCAMERA</a></li>
40251              </ul>
40252            </td>
40253
40254          </tr>
40255          <tr class="entries_header">
40256            <th class="th_details" colspan="6">Details</th>
40257          </tr>
40258          <tr class="entry_cont">
40259            <td class="entry_details" colspan="6">
40260              <p>This capture result matches with <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> on non-logical single
40261camera sensor devices.<wbr/> In case of logical cameras that can switch between several
40262physical devices in response to <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a>,<wbr/> this capture result will
40263not behave like <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> and <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a>,<wbr/> where the
40264combination of both reflects the effective zoom and crop of the logical camera output.<wbr/>
40265Instead,<wbr/> this capture result value will describe the zoom and crop of the active physical
40266device.<wbr/> Some examples of when the value of this capture result will change include
40267switches between different physical lenses,<wbr/> switches between regular and maximum
40268resolution pixel mode and going through the device digital or optical range.<wbr/>
40269This capture result is similar to <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> with respect to distortion
40270correction.<wbr/> When the distortion correction mode is OFF,<wbr/> the coordinate system follows
40271<a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>,<wbr/> with (0,<wbr/> 0) being the top-left pixel
40272of the pre-correction active array.<wbr/> When the distortion correction mode is not OFF,<wbr/>
40273the coordinate system follows <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> with (0,<wbr/> 0) being
40274the top-left pixel of the active array.<wbr/></p>
40275<p>For camera devices with the
40276<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR">Camera<wbr/>Metadata#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>ULTRA_<wbr/>HIGH_<wbr/>RESOLUTION_<wbr/>SENSOR</a>
40277capability or devices where <a href="https://developer.android.com/reference/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a>
40278lists <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a>,<wbr/>
40279the current active physical device
40280<a href="#static_android.sensor.info.activeArraySizeMaximumResolution">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution</a> /<wbr/>
40281<a href="#static_android.sensor.info.preCorrectionActiveArraySizeMaximumResolution">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution</a> must be used as the
40282coordinate system for requests where <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to
40283<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p>
40284            </td>
40285          </tr>
40286
40287          <tr class="entries_header">
40288            <th class="th_details" colspan="6">HAL Implementation Details</th>
40289          </tr>
40290          <tr class="entry_cont">
40291            <td class="entry_details" colspan="6">
40292              <p>The output streams must maintain square pixels at all
40293times,<wbr/> no matter what the relative aspect ratios of the
40294crop region and the stream are.<wbr/>  Negative values for
40295corner are allowed for raw output if full pixel array is
40296larger than active pixel array.<wbr/> Width and height may be
40297rounded to nearest larger supportable width,<wbr/> especially
40298for raw output,<wbr/> where only a few fixed scales may be
40299possible.<wbr/></p>
40300            </td>
40301          </tr>
40302
40303          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
40304           <!-- end of entry -->
40305
40306
40307
40308      <!-- end of kind -->
40309      </tbody>
40310
40311  <!-- end of section -->
40312  <tr><td colspan="7" id="section_distortionCorrection" class="section">distortionCorrection</td></tr>
40313
40314
40315      <tr><td colspan="7" class="kind">controls</td></tr>
40316
40317      <thead class="entries_header">
40318        <tr>
40319          <th class="th_name">Property Name</th>
40320          <th class="th_type">Type</th>
40321          <th class="th_description">Description</th>
40322          <th class="th_units">Units</th>
40323          <th class="th_range">Range</th>
40324          <th class="th_hal_version">Initial HIDL HAL version</th>
40325          <th class="th_tags">Tags</th>
40326        </tr>
40327      </thead>
40328
40329      <tbody>
40330
40331
40332
40333
40334
40335
40336
40337
40338
40339
40340          <tr class="entry" id="controls_android.distortionCorrection.mode">
40341            <td class="entry_name
40342             " rowspan="3">
40343              android.<wbr/>distortion<wbr/>Correction.<wbr/>mode
40344            </td>
40345            <td class="entry_type">
40346                <span class="entry_type_name entry_type_name_enum">byte</span>
40347
40348              <span class="entry_type_visibility"> [public]</span>
40349
40350
40351
40352
40353
40354                <ul class="entry_type_enum">
40355                  <li>
40356                    <span class="entry_type_enum_name">OFF (v3.3)</span>
40357                    <span class="entry_type_enum_notes"><p>No distortion correction is applied.<wbr/></p></span>
40358                  </li>
40359                  <li>
40360                    <span class="entry_type_enum_name">FAST (v3.3)</span>
40361                    <span class="entry_type_enum_notes"><p>Lens distortion correction is applied without reducing frame rate
40362relative to sensor output.<wbr/> It may be the same as OFF if distortion correction would
40363reduce frame rate relative to sensor.<wbr/></p></span>
40364                  </li>
40365                  <li>
40366                    <span class="entry_type_enum_name">HIGH_QUALITY (v3.3)</span>
40367                    <span class="entry_type_enum_notes"><p>High-quality distortion correction is applied,<wbr/> at the cost of
40368possibly reduced frame rate relative to sensor output.<wbr/></p></span>
40369                  </li>
40370                </ul>
40371
40372            </td> <!-- entry_type -->
40373
40374            <td class="entry_description">
40375              <p>Mode of operation for the lens distortion correction block.<wbr/></p>
40376            </td>
40377
40378            <td class="entry_units">
40379            </td>
40380
40381            <td class="entry_range">
40382              <p><a href="#static_android.distortionCorrection.availableModes">android.<wbr/>distortion<wbr/>Correction.<wbr/>available<wbr/>Modes</a></p>
40383            </td>
40384
40385            <td class="entry_hal_version">
40386              <p>3.<wbr/>3</p>
40387            </td>
40388
40389            <td class="entry_tags">
40390            </td>
40391
40392          </tr>
40393          <tr class="entries_header">
40394            <th class="th_details" colspan="6">Details</th>
40395          </tr>
40396          <tr class="entry_cont">
40397            <td class="entry_details" colspan="6">
40398              <p>The lens distortion correction block attempts to improve image quality by fixing
40399radial,<wbr/> tangential,<wbr/> or other geometric aberrations in the camera device's optics.<wbr/>  If
40400available,<wbr/> the <a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a> field documents the lens's distortion parameters.<wbr/></p>
40401<p>OFF means no distortion correction is done.<wbr/></p>
40402<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined distortion correction will be
40403applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device will use the highest-quality
40404correction algorithms,<wbr/> even if it slows down capture rate.<wbr/> FAST means the camera device
40405will not slow down capture rate when applying correction.<wbr/> FAST may be the same as OFF if
40406any correction at all would slow down capture rate.<wbr/>  Every output stream will have a
40407similar amount of enhancement applied.<wbr/></p>
40408<p>The correction only applies to processed outputs such as YUV,<wbr/> Y8,<wbr/> JPEG,<wbr/> or DEPTH16; it is
40409not applied to any RAW output.<wbr/></p>
40410<p>This control will be on by default on devices that support this control.<wbr/> Applications
40411disabling distortion correction need to pay extra attention with the coordinate system of
40412metering regions,<wbr/> crop region,<wbr/> and face rectangles.<wbr/> When distortion correction is OFF,<wbr/>
40413metadata coordinates follow the coordinate system of
40414<a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>.<wbr/> When distortion is not OFF,<wbr/> metadata
40415coordinates follow the coordinate system of <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>  The
40416camera device will map these metadata fields to match the corrected image produced by the
40417camera device,<wbr/> for both capture requests and results.<wbr/>  However,<wbr/> this mapping is not very
40418precise,<wbr/> since rectangles do not generally map to rectangles when corrected.<wbr/>  Only linear
40419scaling between the active array and precorrection active array coordinates is
40420performed.<wbr/> Applications that require precise correction of metadata need to undo that
40421linear scaling,<wbr/> and apply a more complete correction that takes into the account the app's
40422own requirements.<wbr/></p>
40423<p>The full list of metadata that is affected in this way by distortion correction is:</p>
40424<ul>
40425<li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li>
40426<li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li>
40427<li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li>
40428<li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li>
40429<li><a href="#dynamic_android.statistics.faces">android.<wbr/>statistics.<wbr/>faces</a></li>
40430</ul>
40431            </td>
40432          </tr>
40433
40434
40435          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
40436           <!-- end of entry -->
40437
40438
40439
40440      <!-- end of kind -->
40441      </tbody>
40442      <tr><td colspan="7" class="kind">static</td></tr>
40443
40444      <thead class="entries_header">
40445        <tr>
40446          <th class="th_name">Property Name</th>
40447          <th class="th_type">Type</th>
40448          <th class="th_description">Description</th>
40449          <th class="th_units">Units</th>
40450          <th class="th_range">Range</th>
40451          <th class="th_hal_version">Initial HIDL HAL version</th>
40452          <th class="th_tags">Tags</th>
40453        </tr>
40454      </thead>
40455
40456      <tbody>
40457
40458
40459
40460
40461
40462
40463
40464
40465
40466
40467          <tr class="entry" id="static_android.distortionCorrection.availableModes">
40468            <td class="entry_name
40469             " rowspan="5">
40470              android.<wbr/>distortion<wbr/>Correction.<wbr/>available<wbr/>Modes
40471            </td>
40472            <td class="entry_type">
40473                <span class="entry_type_name">byte</span>
40474                <span class="entry_type_container">x</span>
40475
40476                <span class="entry_type_array">
40477                  n
40478                </span>
40479              <span class="entry_type_visibility"> [public as enumList]</span>
40480
40481
40482
40483
40484                <div class="entry_type_notes">list of enums</div>
40485
40486
40487            </td> <!-- entry_type -->
40488
40489            <td class="entry_description">
40490              <p>List of distortion correction modes for <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> that are
40491supported by this camera device.<wbr/></p>
40492            </td>
40493
40494            <td class="entry_units">
40495            </td>
40496
40497            <td class="entry_range">
40498              <p>Any value listed in <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a></p>
40499            </td>
40500
40501            <td class="entry_hal_version">
40502              <p>3.<wbr/>3</p>
40503            </td>
40504
40505            <td class="entry_tags">
40506              <ul class="entry_tags">
40507                  <li><a href="#tag_V1">V1</a></li>
40508                  <li><a href="#tag_REPROC">REPROC</a></li>
40509              </ul>
40510            </td>
40511
40512          </tr>
40513          <tr class="entries_header">
40514            <th class="th_details" colspan="6">Details</th>
40515          </tr>
40516          <tr class="entry_cont">
40517            <td class="entry_details" colspan="6">
40518              <p>No device is required to support this API; such devices will always list only 'OFF'.<wbr/>
40519All devices that support this API will list both FAST and HIGH_<wbr/>QUALITY.<wbr/></p>
40520            </td>
40521          </tr>
40522
40523          <tr class="entries_header">
40524            <th class="th_details" colspan="6">HAL Implementation Details</th>
40525          </tr>
40526          <tr class="entry_cont">
40527            <td class="entry_details" colspan="6">
40528              <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if distortion correction is available
40529on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
40530That is,<wbr/> if the highest quality implementation on the camera device does not slow down
40531capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
40532            </td>
40533          </tr>
40534
40535          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
40536           <!-- end of entry -->
40537
40538
40539
40540      <!-- end of kind -->
40541      </tbody>
40542      <tr><td colspan="7" class="kind">dynamic</td></tr>
40543
40544      <thead class="entries_header">
40545        <tr>
40546          <th class="th_name">Property Name</th>
40547          <th class="th_type">Type</th>
40548          <th class="th_description">Description</th>
40549          <th class="th_units">Units</th>
40550          <th class="th_range">Range</th>
40551          <th class="th_hal_version">Initial HIDL HAL version</th>
40552          <th class="th_tags">Tags</th>
40553        </tr>
40554      </thead>
40555
40556      <tbody>
40557
40558
40559
40560
40561
40562
40563
40564
40565
40566
40567          <tr class="entry" id="dynamic_android.distortionCorrection.mode">
40568            <td class="entry_name
40569             " rowspan="3">
40570              android.<wbr/>distortion<wbr/>Correction.<wbr/>mode
40571            </td>
40572            <td class="entry_type">
40573                <span class="entry_type_name entry_type_name_enum">byte</span>
40574
40575              <span class="entry_type_visibility"> [public]</span>
40576
40577
40578
40579
40580
40581                <ul class="entry_type_enum">
40582                  <li>
40583                    <span class="entry_type_enum_name">OFF (v3.3)</span>
40584                    <span class="entry_type_enum_notes"><p>No distortion correction is applied.<wbr/></p></span>
40585                  </li>
40586                  <li>
40587                    <span class="entry_type_enum_name">FAST (v3.3)</span>
40588                    <span class="entry_type_enum_notes"><p>Lens distortion correction is applied without reducing frame rate
40589relative to sensor output.<wbr/> It may be the same as OFF if distortion correction would
40590reduce frame rate relative to sensor.<wbr/></p></span>
40591                  </li>
40592                  <li>
40593                    <span class="entry_type_enum_name">HIGH_QUALITY (v3.3)</span>
40594                    <span class="entry_type_enum_notes"><p>High-quality distortion correction is applied,<wbr/> at the cost of
40595possibly reduced frame rate relative to sensor output.<wbr/></p></span>
40596                  </li>
40597                </ul>
40598
40599            </td> <!-- entry_type -->
40600
40601            <td class="entry_description">
40602              <p>Mode of operation for the lens distortion correction block.<wbr/></p>
40603            </td>
40604
40605            <td class="entry_units">
40606            </td>
40607
40608            <td class="entry_range">
40609              <p><a href="#static_android.distortionCorrection.availableModes">android.<wbr/>distortion<wbr/>Correction.<wbr/>available<wbr/>Modes</a></p>
40610            </td>
40611
40612            <td class="entry_hal_version">
40613              <p>3.<wbr/>3</p>
40614            </td>
40615
40616            <td class="entry_tags">
40617            </td>
40618
40619          </tr>
40620          <tr class="entries_header">
40621            <th class="th_details" colspan="6">Details</th>
40622          </tr>
40623          <tr class="entry_cont">
40624            <td class="entry_details" colspan="6">
40625              <p>The lens distortion correction block attempts to improve image quality by fixing
40626radial,<wbr/> tangential,<wbr/> or other geometric aberrations in the camera device's optics.<wbr/>  If
40627available,<wbr/> the <a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a> field documents the lens's distortion parameters.<wbr/></p>
40628<p>OFF means no distortion correction is done.<wbr/></p>
40629<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined distortion correction will be
40630applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device will use the highest-quality
40631correction algorithms,<wbr/> even if it slows down capture rate.<wbr/> FAST means the camera device
40632will not slow down capture rate when applying correction.<wbr/> FAST may be the same as OFF if
40633any correction at all would slow down capture rate.<wbr/>  Every output stream will have a
40634similar amount of enhancement applied.<wbr/></p>
40635<p>The correction only applies to processed outputs such as YUV,<wbr/> Y8,<wbr/> JPEG,<wbr/> or DEPTH16; it is
40636not applied to any RAW output.<wbr/></p>
40637<p>This control will be on by default on devices that support this control.<wbr/> Applications
40638disabling distortion correction need to pay extra attention with the coordinate system of
40639metering regions,<wbr/> crop region,<wbr/> and face rectangles.<wbr/> When distortion correction is OFF,<wbr/>
40640metadata coordinates follow the coordinate system of
40641<a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>.<wbr/> When distortion is not OFF,<wbr/> metadata
40642coordinates follow the coordinate system of <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>  The
40643camera device will map these metadata fields to match the corrected image produced by the
40644camera device,<wbr/> for both capture requests and results.<wbr/>  However,<wbr/> this mapping is not very
40645precise,<wbr/> since rectangles do not generally map to rectangles when corrected.<wbr/>  Only linear
40646scaling between the active array and precorrection active array coordinates is
40647performed.<wbr/> Applications that require precise correction of metadata need to undo that
40648linear scaling,<wbr/> and apply a more complete correction that takes into the account the app's
40649own requirements.<wbr/></p>
40650<p>The full list of metadata that is affected in this way by distortion correction is:</p>
40651<ul>
40652<li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li>
40653<li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li>
40654<li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li>
40655<li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li>
40656<li><a href="#dynamic_android.statistics.faces">android.<wbr/>statistics.<wbr/>faces</a></li>
40657</ul>
40658            </td>
40659          </tr>
40660
40661
40662          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
40663           <!-- end of entry -->
40664
40665
40666
40667      <!-- end of kind -->
40668      </tbody>
40669
40670  <!-- end of section -->
40671  <tr><td colspan="7" id="section_heic" class="section">heic</td></tr>
40672
40673
40674      <tr><td colspan="7" class="kind">static</td></tr>
40675
40676      <thead class="entries_header">
40677        <tr>
40678          <th class="th_name">Property Name</th>
40679          <th class="th_type">Type</th>
40680          <th class="th_description">Description</th>
40681          <th class="th_units">Units</th>
40682          <th class="th_range">Range</th>
40683          <th class="th_hal_version">Initial HIDL HAL version</th>
40684          <th class="th_tags">Tags</th>
40685        </tr>
40686      </thead>
40687
40688      <tbody>
40689
40690
40691
40692
40693
40694
40695
40696
40697
40698
40699
40700
40701          <tr class="entry" id="static_android.heic.info.supported">
40702            <td class="entry_name
40703             " rowspan="3">
40704              android.<wbr/>heic.<wbr/>info.<wbr/>supported
40705            </td>
40706            <td class="entry_type">
40707                <span class="entry_type_name entry_type_name_enum">byte</span>
40708
40709              <span class="entry_type_visibility"> [system as boolean]</span>
40710
40711
40712              <span class="entry_type_hwlevel">[limited] </span>
40713
40714
40715
40716                <ul class="entry_type_enum">
40717                  <li>
40718                    <span class="entry_type_enum_name">FALSE (v3.4)</span>
40719                  </li>
40720                  <li>
40721                    <span class="entry_type_enum_name">TRUE (v3.4)</span>
40722                  </li>
40723                </ul>
40724
40725            </td> <!-- entry_type -->
40726
40727            <td class="entry_description">
40728              <p>Whether this camera device can support identical set of stream combinations
40729involving HEIC image format,<wbr/> compared to the
40730<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice#legacy-level-guaranteed-configurations">table of combinations</a>
40731involving JPEG image format required for the device's hardware
40732level and capabilities.<wbr/></p>
40733            </td>
40734
40735            <td class="entry_units">
40736            </td>
40737
40738            <td class="entry_range">
40739            </td>
40740
40741            <td class="entry_hal_version">
40742              <p>3.<wbr/>4</p>
40743            </td>
40744
40745            <td class="entry_tags">
40746              <ul class="entry_tags">
40747                  <li><a href="#tag_HEIC">HEIC</a></li>
40748              </ul>
40749            </td>
40750
40751          </tr>
40752          <tr class="entries_header">
40753            <th class="th_details" colspan="6">Details</th>
40754          </tr>
40755          <tr class="entry_cont">
40756            <td class="entry_details" colspan="6">
40757              <p>All the static,<wbr/> control and dynamic metadata tags related to JPEG apply to HEIC formats
40758as well.<wbr/> For example,<wbr/> the same <a href="#controls_android.jpeg.orientation">android.<wbr/>jpeg.<wbr/>orientation</a> and <a href="#controls_android.jpeg.quality">android.<wbr/>jpeg.<wbr/>quality</a> are
40759used to control the orientation and quality of the HEIC image.<wbr/> Configuring JPEG and
40760HEIC streams at the same time is not supported.<wbr/></p>
40761<p>If a camera device supports HEIC format (ISO/<wbr/>IEC 23008-12),<wbr/> not only does it
40762support the existing mandatory stream
40763<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice#legacy-level-guaranteed-configurations">combinations</a>
40764required for the device's hardware level and capabilities,<wbr/> it also
40765supports swapping each JPEG stream with HEIC stream in all guaranteed combinations.<wbr/></p>
40766<p>For every HEIC stream configured by the application,<wbr/> the camera framework sets up 2
40767internal streams with camera HAL:</p>
40768<ul>
40769<li>A YUV_<wbr/>420_<wbr/>888 or IMPLEMENTATION_<wbr/>DEFINED HAL stream as input to HEIC or HEVC encoder.<wbr/></li>
40770<li>A BLOB stream with JPEG_<wbr/>APPS_<wbr/>SEGMENTS dataspace to extract application markers
40771including EXIF and thumbnail to be saved in HEIF container.<wbr/></li>
40772</ul>
40773<p>A camera device can output HEIC format to the application if and only if:</p>
40774<ul>
40775<li>The system contains a HEIC or HEVC encoder with constant quality mode,<wbr/> and</li>
40776<li>This tag is set to TRUE,<wbr/> meaning that camera HAL supports replacing JPEG streams in
40777all mandatory stream combinations with a [YUV_<wbr/>420_<wbr/>888/<wbr/>IMPLEMENTATION_<wbr/>DEFINED stream +
40778JPEG_<wbr/>APPS_<wbr/>SEGMENT BLOB stream] combo.<wbr/></li>
40779</ul>
40780<p>As an example,<wbr/> if the camera device's hardware level is LIMITED,<wbr/> and it supports HEIC,<wbr/>
40781in addition to the required stream combinations,<wbr/> HAL must support below stream
40782combinations as well:</p>
40783<ul>
40784<li>IMPLEMENTATION_<wbr/>DEFINED/<wbr/>YUV_<wbr/>420_<wbr/>888 MAXIMUM + JPEG_<wbr/>SEGMENTS_<wbr/>BLOB,<wbr/></li>
40785<li>PRIV PREVIEW + IMPLEMENTATION_<wbr/>DEFINED/<wbr/>YUV_<wbr/>420_<wbr/>888 MAXIMUM + JPEG_<wbr/>SEGMENTS_<wbr/>BLOB,<wbr/></li>
40786<li>YUV PREVIEW + IMPLEMENTATION_<wbr/>DEFINED/<wbr/>YUV_<wbr/>420_<wbr/>888 MAXIMUM + JPEG_<wbr/>SEGMENTS_<wbr/>BLOB,<wbr/></li>
40787<li>PRIV PREVIEW + YUV PREVIEW + IMPLEMENTATION_<wbr/>DEFINED/<wbr/>YUV_<wbr/>420_<wbr/>888 MAXIMUM +
40788JPEG_<wbr/>SEGMENTS_<wbr/>BLOB</li>
40789</ul>
40790<p>The selection logic between YUV_<wbr/>420_<wbr/>888 and IMPLEMENTATION_<wbr/>DEFINED for HAL internal
40791stream is as follows:</p>
40792<pre><code>if (HEIC encoder exists and supports the size) {
40793    use IMPLEMENTATION_<wbr/>DEFINED with GRALLOC_<wbr/>USAGE_<wbr/>HW_<wbr/>IMAGE_<wbr/>ENCODER usage flag;
40794} else {
40795    //<wbr/> HVC encoder exists
40796    if (size is less than framework predefined tile size) {
40797        use IMPLEMENTATINO_<wbr/>DEFINED with GRALLOC_<wbr/>USAGE_<wbr/>HW_<wbr/>VIDEO_<wbr/>ENCODER usage flag;
40798    } else {
40799        use YUV_<wbr/>420_<wbr/>888;
40800    }
40801}
40802</code></pre>
40803            </td>
40804          </tr>
40805
40806
40807          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
40808           <!-- end of entry -->
40809
40810
40811          <tr class="entry" id="static_android.heic.info.maxJpegAppSegmentsCount">
40812            <td class="entry_name
40813             " rowspan="3">
40814              android.<wbr/>heic.<wbr/>info.<wbr/>max<wbr/>Jpeg<wbr/>App<wbr/>Segments<wbr/>Count
40815            </td>
40816            <td class="entry_type">
40817                <span class="entry_type_name">byte</span>
40818
40819              <span class="entry_type_visibility"> [system]</span>
40820
40821
40822              <span class="entry_type_hwlevel">[limited] </span>
40823
40824
40825
40826
40827            </td> <!-- entry_type -->
40828
40829            <td class="entry_description">
40830              <p>The maximum number of Jpeg APP segments supported by the camera HAL device.<wbr/></p>
40831            </td>
40832
40833            <td class="entry_units">
40834            </td>
40835
40836            <td class="entry_range">
40837            </td>
40838
40839            <td class="entry_hal_version">
40840              <p>3.<wbr/>4</p>
40841            </td>
40842
40843            <td class="entry_tags">
40844              <ul class="entry_tags">
40845                  <li><a href="#tag_HEIC">HEIC</a></li>
40846              </ul>
40847            </td>
40848
40849          </tr>
40850          <tr class="entries_header">
40851            <th class="th_details" colspan="6">Details</th>
40852          </tr>
40853          <tr class="entry_cont">
40854            <td class="entry_details" colspan="6">
40855              <p>The camera framework will use this value to derive the size of the BLOB buffer with
40856JPEG_<wbr/>APP_<wbr/>SEGMENTS dataspace,<wbr/> with each APP segment occupying at most 64K bytes.<wbr/> If the
40857value of this tag is n,<wbr/> the size of the framework allocated buffer will be:</p>
40858<pre><code>n * (2 + 0xFFFF) + sizeof(struct CameraBlob)
40859</code></pre>
40860<p>where 2 is number of bytes for APP marker,<wbr/> 0xFFFF is the maximum size per APP segment
40861(including segment size).<wbr/></p>
40862<p>The value of this tag must be at least 1,<wbr/> and APP1 marker (0xFFE1) segment must be the
40863first segment stored in the JPEG_<wbr/>APPS_<wbr/>SEGMENTS BLOB buffer.<wbr/> APP1 segment stores EXIF and
40864thumbnail.<wbr/></p>
40865<p>Since media encoder embeds the orientation in the metadata of the output image,<wbr/> to be
40866consistent between main image and thumbnail,<wbr/> camera HAL must not rotate the thumbnail
40867image data based on <a href="#controls_android.jpeg.orientation">android.<wbr/>jpeg.<wbr/>orientation</a>.<wbr/> The framework will write the orientation
40868into EXIF and HEIC container.<wbr/></p>
40869<p>APP1 segment is followed immediately by one or multiple APP2 segments,<wbr/> and APPn
40870segments.<wbr/> After the HAL fills and returns the JPEG_<wbr/>APP_<wbr/>SEGMENTS buffer,<wbr/> the camera
40871framework modifies the APP1 segment by filling in the EXIF tags that are related to
40872main image bitstream and the tags that can be derived from capture result metadata,<wbr/>
40873before saving them into the HEIC container.<wbr/></p>
40874<p>The value of this tag must not be more than 16.<wbr/></p>
40875            </td>
40876          </tr>
40877
40878
40879          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
40880           <!-- end of entry -->
40881
40882
40883
40884
40885
40886          <tr class="entry" id="static_android.heic.availableHeicStreamConfigurations">
40887            <td class="entry_name
40888             " rowspan="5">
40889              android.<wbr/>heic.<wbr/>available<wbr/>Heic<wbr/>Stream<wbr/>Configurations
40890            </td>
40891            <td class="entry_type">
40892                <span class="entry_type_name entry_type_name_enum">int32</span>
40893                <span class="entry_type_container">x</span>
40894
40895                <span class="entry_type_array">
40896                  n x 4
40897                </span>
40898              <span class="entry_type_visibility"> [ndk_public as streamConfiguration]</span>
40899
40900
40901              <span class="entry_type_hwlevel">[limited] </span>
40902
40903
40904
40905                <ul class="entry_type_enum">
40906                  <li>
40907                    <span class="entry_type_enum_name">OUTPUT (v3.4)</span>
40908                  </li>
40909                  <li>
40910                    <span class="entry_type_enum_name">INPUT (v3.4)</span>
40911                  </li>
40912                </ul>
40913
40914            </td> <!-- entry_type -->
40915
40916            <td class="entry_description">
40917              <p>The available HEIC (ISO/<wbr/>IEC 23008-12) stream
40918configurations that this camera device supports
40919(i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p>
40920            </td>
40921
40922            <td class="entry_units">
40923            </td>
40924
40925            <td class="entry_range">
40926            </td>
40927
40928            <td class="entry_hal_version">
40929              <p>3.<wbr/>4</p>
40930            </td>
40931
40932            <td class="entry_tags">
40933              <ul class="entry_tags">
40934                  <li><a href="#tag_HEIC">HEIC</a></li>
40935              </ul>
40936            </td>
40937
40938          </tr>
40939          <tr class="entries_header">
40940            <th class="th_details" colspan="6">Details</th>
40941          </tr>
40942          <tr class="entry_cont">
40943            <td class="entry_details" colspan="6">
40944              <p>The configurations are listed as <code>(format,<wbr/> width,<wbr/> height,<wbr/> input?)</code> tuples.<wbr/></p>
40945<p>If the camera device supports HEIC image format,<wbr/> it will support identical set of stream
40946combinations involving HEIC image format,<wbr/> compared to the combinations involving JPEG
40947image format as required by the device's hardware level and capabilities.<wbr/></p>
40948<p>All the static,<wbr/> control,<wbr/> and dynamic metadata tags related to JPEG apply to HEIC formats.<wbr/>
40949Configuring JPEG and HEIC streams at the same time is not supported.<wbr/></p>
40950            </td>
40951          </tr>
40952
40953          <tr class="entries_header">
40954            <th class="th_details" colspan="6">HAL Implementation Details</th>
40955          </tr>
40956          <tr class="entry_cont">
40957            <td class="entry_details" colspan="6">
40958              <p>These are output stream configurations for use with dataSpace HAL_<wbr/>DATASPACE_<wbr/>HEIF.<wbr/></p>
40959<p>Do not set this property directly.<wbr/> It is populated by camera framework and must not be
40960set by the HAL layer.<wbr/></p>
40961            </td>
40962          </tr>
40963
40964          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
40965           <!-- end of entry -->
40966
40967
40968          <tr class="entry" id="static_android.heic.availableHeicMinFrameDurations">
40969            <td class="entry_name
40970             " rowspan="5">
40971              android.<wbr/>heic.<wbr/>available<wbr/>Heic<wbr/>Min<wbr/>Frame<wbr/>Durations
40972            </td>
40973            <td class="entry_type">
40974                <span class="entry_type_name">int64</span>
40975                <span class="entry_type_container">x</span>
40976
40977                <span class="entry_type_array">
40978                  4 x n
40979                </span>
40980              <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
40981
40982
40983              <span class="entry_type_hwlevel">[limited] </span>
40984
40985
40986
40987
40988            </td> <!-- entry_type -->
40989
40990            <td class="entry_description">
40991              <p>This lists the minimum frame duration for each
40992format/<wbr/>size combination for HEIC output formats.<wbr/></p>
40993            </td>
40994
40995            <td class="entry_units">
40996              (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
40997            </td>
40998
40999            <td class="entry_range">
41000            </td>
41001
41002            <td class="entry_hal_version">
41003              <p>3.<wbr/>4</p>
41004            </td>
41005
41006            <td class="entry_tags">
41007              <ul class="entry_tags">
41008                  <li><a href="#tag_HEIC">HEIC</a></li>
41009              </ul>
41010            </td>
41011
41012          </tr>
41013          <tr class="entries_header">
41014            <th class="th_details" colspan="6">Details</th>
41015          </tr>
41016          <tr class="entry_cont">
41017            <td class="entry_details" colspan="6">
41018              <p>This should correspond to the frame duration when only that
41019stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode)
41020set to either OFF or FAST.<wbr/></p>
41021<p>When multiple streams are used in a request,<wbr/> the minimum frame
41022duration will be max(individual stream min durations).<wbr/></p>
41023<p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> and
41024<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for more details about
41025calculating the max frame rate.<wbr/></p>
41026            </td>
41027          </tr>
41028
41029          <tr class="entries_header">
41030            <th class="th_details" colspan="6">HAL Implementation Details</th>
41031          </tr>
41032          <tr class="entry_cont">
41033            <td class="entry_details" colspan="6">
41034              <p>Do not set this property directly.<wbr/> It is populated by camera framework and must not be
41035set by the HAL layer.<wbr/></p>
41036            </td>
41037          </tr>
41038
41039          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
41040           <!-- end of entry -->
41041
41042
41043          <tr class="entry" id="static_android.heic.availableHeicStallDurations">
41044            <td class="entry_name
41045             " rowspan="5">
41046              android.<wbr/>heic.<wbr/>available<wbr/>Heic<wbr/>Stall<wbr/>Durations
41047            </td>
41048            <td class="entry_type">
41049                <span class="entry_type_name">int64</span>
41050                <span class="entry_type_container">x</span>
41051
41052                <span class="entry_type_array">
41053                  4 x n
41054                </span>
41055              <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
41056
41057
41058              <span class="entry_type_hwlevel">[limited] </span>
41059
41060
41061
41062
41063            </td> <!-- entry_type -->
41064
41065            <td class="entry_description">
41066              <p>This lists the maximum stall duration for each
41067output format/<wbr/>size combination for HEIC streams.<wbr/></p>
41068            </td>
41069
41070            <td class="entry_units">
41071              (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
41072            </td>
41073
41074            <td class="entry_range">
41075            </td>
41076
41077            <td class="entry_hal_version">
41078              <p>3.<wbr/>4</p>
41079            </td>
41080
41081            <td class="entry_tags">
41082              <ul class="entry_tags">
41083                  <li><a href="#tag_HEIC">HEIC</a></li>
41084              </ul>
41085            </td>
41086
41087          </tr>
41088          <tr class="entries_header">
41089            <th class="th_details" colspan="6">Details</th>
41090          </tr>
41091          <tr class="entry_cont">
41092            <td class="entry_details" colspan="6">
41093              <p>A stall duration is how much extra time would get added
41094to the normal minimum frame duration for a repeating request
41095that has streams with non-zero stall.<wbr/></p>
41096<p>This functions similarly to
41097<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for HEIC
41098streams.<wbr/></p>
41099<p>All HEIC output stream formats may have a nonzero stall
41100duration.<wbr/></p>
41101            </td>
41102          </tr>
41103
41104          <tr class="entries_header">
41105            <th class="th_details" colspan="6">HAL Implementation Details</th>
41106          </tr>
41107          <tr class="entry_cont">
41108            <td class="entry_details" colspan="6">
41109              <p>Do not set this property directly.<wbr/> It is populated by camera framework and must not be
41110set by the HAL layer.<wbr/></p>
41111            </td>
41112          </tr>
41113
41114          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
41115           <!-- end of entry -->
41116
41117
41118          <tr class="entry" id="static_android.heic.availableHeicStreamConfigurationsMaximumResolution">
41119            <td class="entry_name
41120             " rowspan="5">
41121              android.<wbr/>heic.<wbr/>available<wbr/>Heic<wbr/>Stream<wbr/>Configurations<wbr/>Maximum<wbr/>Resolution
41122            </td>
41123            <td class="entry_type">
41124                <span class="entry_type_name entry_type_name_enum">int32</span>
41125                <span class="entry_type_container">x</span>
41126
41127                <span class="entry_type_array">
41128                  n x 4
41129                </span>
41130              <span class="entry_type_visibility"> [ndk_public as streamConfiguration]</span>
41131
41132
41133
41134
41135
41136                <ul class="entry_type_enum">
41137                  <li>
41138                    <span class="entry_type_enum_name">OUTPUT (v3.6)</span>
41139                  </li>
41140                  <li>
41141                    <span class="entry_type_enum_name">INPUT (v3.6)</span>
41142                  </li>
41143                </ul>
41144
41145            </td> <!-- entry_type -->
41146
41147            <td class="entry_description">
41148              <p>The available HEIC (ISO/<wbr/>IEC 23008-12) stream
41149configurations that this camera device supports
41150(i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p>
41151            </td>
41152
41153            <td class="entry_units">
41154            </td>
41155
41156            <td class="entry_range">
41157            </td>
41158
41159            <td class="entry_hal_version">
41160              <p>3.<wbr/>6</p>
41161            </td>
41162
41163            <td class="entry_tags">
41164              <ul class="entry_tags">
41165                  <li><a href="#tag_HEIC">HEIC</a></li>
41166              </ul>
41167            </td>
41168
41169          </tr>
41170          <tr class="entries_header">
41171            <th class="th_details" colspan="6">Details</th>
41172          </tr>
41173          <tr class="entry_cont">
41174            <td class="entry_details" colspan="6">
41175              <p>Refer to <a href="#static_android.heic.availableHeicStreamConfigurations">android.<wbr/>heic.<wbr/>available<wbr/>Heic<wbr/>Stream<wbr/>Configurations</a> for details.<wbr/></p>
41176            </td>
41177          </tr>
41178
41179          <tr class="entries_header">
41180            <th class="th_details" colspan="6">HAL Implementation Details</th>
41181          </tr>
41182          <tr class="entry_cont">
41183            <td class="entry_details" colspan="6">
41184              <p>These are output stream configurations for use with dataSpace HAL_<wbr/>DATASPACE_<wbr/>HEIF.<wbr/></p>
41185<p>Do not set this property directly.<wbr/> It is populated by camera framework and must not be
41186set by the HAL layer.<wbr/></p>
41187            </td>
41188          </tr>
41189
41190          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
41191           <!-- end of entry -->
41192
41193
41194          <tr class="entry" id="static_android.heic.availableHeicMinFrameDurationsMaximumResolution">
41195            <td class="entry_name
41196             " rowspan="5">
41197              android.<wbr/>heic.<wbr/>available<wbr/>Heic<wbr/>Min<wbr/>Frame<wbr/>Durations<wbr/>Maximum<wbr/>Resolution
41198            </td>
41199            <td class="entry_type">
41200                <span class="entry_type_name">int64</span>
41201                <span class="entry_type_container">x</span>
41202
41203                <span class="entry_type_array">
41204                  4 x n
41205                </span>
41206              <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
41207
41208
41209
41210
41211
41212
41213            </td> <!-- entry_type -->
41214
41215            <td class="entry_description">
41216              <p>This lists the minimum frame duration for each
41217format/<wbr/>size combination for HEIC output formats for CaptureRequests where
41218<a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to
41219<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p>
41220            </td>
41221
41222            <td class="entry_units">
41223              (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
41224            </td>
41225
41226            <td class="entry_range">
41227            </td>
41228
41229            <td class="entry_hal_version">
41230              <p>3.<wbr/>6</p>
41231            </td>
41232
41233            <td class="entry_tags">
41234              <ul class="entry_tags">
41235                  <li><a href="#tag_HEIC">HEIC</a></li>
41236              </ul>
41237            </td>
41238
41239          </tr>
41240          <tr class="entries_header">
41241            <th class="th_details" colspan="6">Details</th>
41242          </tr>
41243          <tr class="entry_cont">
41244            <td class="entry_details" colspan="6">
41245              <p>Refer to <a href="#static_android.heic.availableHeicMinFrameDurations">android.<wbr/>heic.<wbr/>available<wbr/>Heic<wbr/>Min<wbr/>Frame<wbr/>Durations</a> for details.<wbr/></p>
41246            </td>
41247          </tr>
41248
41249          <tr class="entries_header">
41250            <th class="th_details" colspan="6">HAL Implementation Details</th>
41251          </tr>
41252          <tr class="entry_cont">
41253            <td class="entry_details" colspan="6">
41254              <p>Do not set this property directly.<wbr/> It is populated by camera framework and must not be
41255set by the HAL layer.<wbr/></p>
41256            </td>
41257          </tr>
41258
41259          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
41260           <!-- end of entry -->
41261
41262
41263          <tr class="entry" id="static_android.heic.availableHeicStallDurationsMaximumResolution">
41264            <td class="entry_name
41265             " rowspan="5">
41266              android.<wbr/>heic.<wbr/>available<wbr/>Heic<wbr/>Stall<wbr/>Durations<wbr/>Maximum<wbr/>Resolution
41267            </td>
41268            <td class="entry_type">
41269                <span class="entry_type_name">int64</span>
41270                <span class="entry_type_container">x</span>
41271
41272                <span class="entry_type_array">
41273                  4 x n
41274                </span>
41275              <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
41276
41277
41278
41279
41280
41281
41282            </td> <!-- entry_type -->
41283
41284            <td class="entry_description">
41285              <p>This lists the maximum stall duration for each
41286output format/<wbr/>size combination for HEIC streams for CaptureRequests where
41287<a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to
41288<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p>
41289            </td>
41290
41291            <td class="entry_units">
41292              (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
41293            </td>
41294
41295            <td class="entry_range">
41296            </td>
41297
41298            <td class="entry_hal_version">
41299              <p>3.<wbr/>6</p>
41300            </td>
41301
41302            <td class="entry_tags">
41303              <ul class="entry_tags">
41304                  <li><a href="#tag_HEIC">HEIC</a></li>
41305              </ul>
41306            </td>
41307
41308          </tr>
41309          <tr class="entries_header">
41310            <th class="th_details" colspan="6">Details</th>
41311          </tr>
41312          <tr class="entry_cont">
41313            <td class="entry_details" colspan="6">
41314              <p>Refer to <a href="#static_android.heic.availableHeicStallDurations">android.<wbr/>heic.<wbr/>available<wbr/>Heic<wbr/>Stall<wbr/>Durations</a> for details.<wbr/></p>
41315            </td>
41316          </tr>
41317
41318          <tr class="entries_header">
41319            <th class="th_details" colspan="6">HAL Implementation Details</th>
41320          </tr>
41321          <tr class="entry_cont">
41322            <td class="entry_details" colspan="6">
41323              <p>Do not set this property directly.<wbr/> It is populated by camera framework and must not be
41324set by the HAL layer.<wbr/></p>
41325            </td>
41326          </tr>
41327
41328          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
41329           <!-- end of entry -->
41330
41331
41332          <tr class="entry" id="static_android.heic.availableHeicUltraHdrStreamConfigurations">
41333            <td class="entry_name
41334             " rowspan="5">
41335              android.<wbr/>heic.<wbr/>available<wbr/>Heic<wbr/>Ultra<wbr/>Hdr<wbr/>Stream<wbr/>Configurations
41336            </td>
41337            <td class="entry_type">
41338                <span class="entry_type_name entry_type_name_enum">int32</span>
41339                <span class="entry_type_container">x</span>
41340
41341                <span class="entry_type_array">
41342                  n x 4
41343                </span>
41344              <span class="entry_type_visibility"> [ndk_public as streamConfiguration]</span>
41345
41346
41347              <span class="entry_type_hwlevel">[limited] </span>
41348
41349
41350
41351                <ul class="entry_type_enum">
41352                  <li>
41353                    <span class="entry_type_enum_name">OUTPUT (v3.11)</span>
41354                  </li>
41355                  <li>
41356                    <span class="entry_type_enum_name">INPUT (v3.11)</span>
41357                  </li>
41358                </ul>
41359
41360            </td> <!-- entry_type -->
41361
41362            <td class="entry_description">
41363              <p>The available HEIC (ISO/<wbr/>IEC 23008-12/<wbr/>24) UltraHDR stream
41364configurations that this camera device supports
41365(i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p>
41366            </td>
41367
41368            <td class="entry_units">
41369            </td>
41370
41371            <td class="entry_range">
41372            </td>
41373
41374            <td class="entry_hal_version">
41375              <p>3.<wbr/>11</p>
41376            </td>
41377
41378            <td class="entry_tags">
41379              <ul class="entry_tags">
41380                  <li><a href="#tag_HEIC">HEIC</a></li>
41381              </ul>
41382            </td>
41383
41384          </tr>
41385          <tr class="entries_header">
41386            <th class="th_details" colspan="6">Details</th>
41387          </tr>
41388          <tr class="entry_cont">
41389            <td class="entry_details" colspan="6">
41390              <p>The configurations are listed as <code>(format,<wbr/> width,<wbr/> height,<wbr/> input?)</code> tuples.<wbr/></p>
41391<p>All the static,<wbr/> control,<wbr/> and dynamic metadata tags related to JPEG apply to HEIC formats.<wbr/>
41392Configuring JPEG and HEIC streams at the same time is not supported.<wbr/></p>
41393            </td>
41394          </tr>
41395
41396          <tr class="entries_header">
41397            <th class="th_details" colspan="6">HAL Implementation Details</th>
41398          </tr>
41399          <tr class="entry_cont">
41400            <td class="entry_details" colspan="6">
41401              <p>These are output stream configurations for use with dataSpace DATASPACE_<wbr/>HEIF_<wbr/>ULTRAHDR.<wbr/></p>
41402            </td>
41403          </tr>
41404
41405          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
41406           <!-- end of entry -->
41407
41408
41409          <tr class="entry" id="static_android.heic.availableHeicUltraHdrMinFrameDurations">
41410            <td class="entry_name
41411             " rowspan="3">
41412              android.<wbr/>heic.<wbr/>available<wbr/>Heic<wbr/>Ultra<wbr/>Hdr<wbr/>Min<wbr/>Frame<wbr/>Durations
41413            </td>
41414            <td class="entry_type">
41415                <span class="entry_type_name">int64</span>
41416                <span class="entry_type_container">x</span>
41417
41418                <span class="entry_type_array">
41419                  4 x n
41420                </span>
41421              <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
41422
41423
41424              <span class="entry_type_hwlevel">[limited] </span>
41425
41426
41427
41428
41429            </td> <!-- entry_type -->
41430
41431            <td class="entry_description">
41432              <p>This lists the minimum frame duration for each
41433format/<wbr/>size combination for HEIC UltraHDR output formats.<wbr/></p>
41434            </td>
41435
41436            <td class="entry_units">
41437              (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
41438            </td>
41439
41440            <td class="entry_range">
41441            </td>
41442
41443            <td class="entry_hal_version">
41444              <p>3.<wbr/>11</p>
41445            </td>
41446
41447            <td class="entry_tags">
41448              <ul class="entry_tags">
41449                  <li><a href="#tag_HEIC">HEIC</a></li>
41450              </ul>
41451            </td>
41452
41453          </tr>
41454          <tr class="entries_header">
41455            <th class="th_details" colspan="6">Details</th>
41456          </tr>
41457          <tr class="entry_cont">
41458            <td class="entry_details" colspan="6">
41459              <p>This should correspond to the frame duration when only that
41460stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode)
41461set to either OFF or FAST.<wbr/></p>
41462<p>When multiple streams are used in a request,<wbr/> the minimum frame
41463duration will be max(individual stream min durations).<wbr/></p>
41464<p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> and
41465<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for more details about
41466calculating the max frame rate.<wbr/></p>
41467            </td>
41468          </tr>
41469
41470
41471          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
41472           <!-- end of entry -->
41473
41474
41475          <tr class="entry" id="static_android.heic.availableHeicUltraHdrStallDurations">
41476            <td class="entry_name
41477             " rowspan="3">
41478              android.<wbr/>heic.<wbr/>available<wbr/>Heic<wbr/>Ultra<wbr/>Hdr<wbr/>Stall<wbr/>Durations
41479            </td>
41480            <td class="entry_type">
41481                <span class="entry_type_name">int64</span>
41482                <span class="entry_type_container">x</span>
41483
41484                <span class="entry_type_array">
41485                  4 x n
41486                </span>
41487              <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
41488
41489
41490              <span class="entry_type_hwlevel">[limited] </span>
41491
41492
41493
41494
41495            </td> <!-- entry_type -->
41496
41497            <td class="entry_description">
41498              <p>This lists the maximum stall duration for each
41499output format/<wbr/>size combination for HEIC UltraHDR streams.<wbr/></p>
41500            </td>
41501
41502            <td class="entry_units">
41503              (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
41504            </td>
41505
41506            <td class="entry_range">
41507            </td>
41508
41509            <td class="entry_hal_version">
41510              <p>3.<wbr/>11</p>
41511            </td>
41512
41513            <td class="entry_tags">
41514              <ul class="entry_tags">
41515                  <li><a href="#tag_HEIC">HEIC</a></li>
41516              </ul>
41517            </td>
41518
41519          </tr>
41520          <tr class="entries_header">
41521            <th class="th_details" colspan="6">Details</th>
41522          </tr>
41523          <tr class="entry_cont">
41524            <td class="entry_details" colspan="6">
41525              <p>A stall duration is how much extra time would get added
41526to the normal minimum frame duration for a repeating request
41527that has streams with non-zero stall.<wbr/></p>
41528<p>This functions similarly to
41529<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for HEIC UltraHDR
41530streams.<wbr/></p>
41531<p>All HEIC output stream formats may have a nonzero stall
41532duration.<wbr/></p>
41533            </td>
41534          </tr>
41535
41536
41537          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
41538           <!-- end of entry -->
41539
41540
41541          <tr class="entry" id="static_android.heic.availableHeicUltraHdrStreamConfigurationsMaximumResolution">
41542            <td class="entry_name
41543             " rowspan="5">
41544              android.<wbr/>heic.<wbr/>available<wbr/>Heic<wbr/>Ultra<wbr/>Hdr<wbr/>Stream<wbr/>Configurations<wbr/>Maximum<wbr/>Resolution
41545            </td>
41546            <td class="entry_type">
41547                <span class="entry_type_name entry_type_name_enum">int32</span>
41548                <span class="entry_type_container">x</span>
41549
41550                <span class="entry_type_array">
41551                  n x 4
41552                </span>
41553              <span class="entry_type_visibility"> [ndk_public as streamConfiguration]</span>
41554
41555
41556
41557
41558
41559                <ul class="entry_type_enum">
41560                  <li>
41561                    <span class="entry_type_enum_name">OUTPUT (v3.11)</span>
41562                  </li>
41563                  <li>
41564                    <span class="entry_type_enum_name">INPUT (v3.11)</span>
41565                  </li>
41566                </ul>
41567
41568            </td> <!-- entry_type -->
41569
41570            <td class="entry_description">
41571              <p>The available HEIC (ISO/<wbr/>IEC 23008-12/<wbr/>24) UltraHDR stream
41572configurations that this camera device supports
41573(i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream) for CaptureRequests where
41574<a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to
41575<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p>
41576            </td>
41577
41578            <td class="entry_units">
41579            </td>
41580
41581            <td class="entry_range">
41582            </td>
41583
41584            <td class="entry_hal_version">
41585              <p>3.<wbr/>11</p>
41586            </td>
41587
41588            <td class="entry_tags">
41589              <ul class="entry_tags">
41590                  <li><a href="#tag_HEIC">HEIC</a></li>
41591              </ul>
41592            </td>
41593
41594          </tr>
41595          <tr class="entries_header">
41596            <th class="th_details" colspan="6">Details</th>
41597          </tr>
41598          <tr class="entry_cont">
41599            <td class="entry_details" colspan="6">
41600              <p>Refer to <a href="#static_android.heic.availableHeicStreamConfigurations">android.<wbr/>heic.<wbr/>available<wbr/>Heic<wbr/>Stream<wbr/>Configurations</a> for details.<wbr/></p>
41601            </td>
41602          </tr>
41603
41604          <tr class="entries_header">
41605            <th class="th_details" colspan="6">HAL Implementation Details</th>
41606          </tr>
41607          <tr class="entry_cont">
41608            <td class="entry_details" colspan="6">
41609              <p>These are output stream configurations for use with dataSpace DATASPACE_<wbr/>HEIF_<wbr/>ULTRAHDR.<wbr/></p>
41610            </td>
41611          </tr>
41612
41613          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
41614           <!-- end of entry -->
41615
41616
41617          <tr class="entry" id="static_android.heic.availableHeicUltraHdrMinFrameDurationsMaximumResolution">
41618            <td class="entry_name
41619             " rowspan="3">
41620              android.<wbr/>heic.<wbr/>available<wbr/>Heic<wbr/>Ultra<wbr/>Hdr<wbr/>Min<wbr/>Frame<wbr/>Durations<wbr/>Maximum<wbr/>Resolution
41621            </td>
41622            <td class="entry_type">
41623                <span class="entry_type_name">int64</span>
41624                <span class="entry_type_container">x</span>
41625
41626                <span class="entry_type_array">
41627                  4 x n
41628                </span>
41629              <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
41630
41631
41632
41633
41634
41635
41636            </td> <!-- entry_type -->
41637
41638            <td class="entry_description">
41639              <p>This lists the minimum frame duration for each
41640format/<wbr/>size combination for HEIC UltraHDR output formats for CaptureRequests where
41641<a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to
41642<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p>
41643            </td>
41644
41645            <td class="entry_units">
41646              (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
41647            </td>
41648
41649            <td class="entry_range">
41650            </td>
41651
41652            <td class="entry_hal_version">
41653              <p>3.<wbr/>11</p>
41654            </td>
41655
41656            <td class="entry_tags">
41657              <ul class="entry_tags">
41658                  <li><a href="#tag_HEIC">HEIC</a></li>
41659              </ul>
41660            </td>
41661
41662          </tr>
41663          <tr class="entries_header">
41664            <th class="th_details" colspan="6">Details</th>
41665          </tr>
41666          <tr class="entry_cont">
41667            <td class="entry_details" colspan="6">
41668              <p>Refer to <a href="#static_android.heic.availableHeicMinFrameDurations">android.<wbr/>heic.<wbr/>available<wbr/>Heic<wbr/>Min<wbr/>Frame<wbr/>Durations</a> for details.<wbr/></p>
41669            </td>
41670          </tr>
41671
41672
41673          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
41674           <!-- end of entry -->
41675
41676
41677          <tr class="entry" id="static_android.heic.availableHeicUltraHdrStallDurationsMaximumResolution">
41678            <td class="entry_name
41679             " rowspan="3">
41680              android.<wbr/>heic.<wbr/>available<wbr/>Heic<wbr/>Ultra<wbr/>Hdr<wbr/>Stall<wbr/>Durations<wbr/>Maximum<wbr/>Resolution
41681            </td>
41682            <td class="entry_type">
41683                <span class="entry_type_name">int64</span>
41684                <span class="entry_type_container">x</span>
41685
41686                <span class="entry_type_array">
41687                  4 x n
41688                </span>
41689              <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
41690
41691
41692
41693
41694
41695
41696            </td> <!-- entry_type -->
41697
41698            <td class="entry_description">
41699              <p>This lists the maximum stall duration for each
41700output format/<wbr/>size combination for HEIC UltraHDR streams for CaptureRequests where
41701<a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to
41702<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p>
41703            </td>
41704
41705            <td class="entry_units">
41706              (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
41707            </td>
41708
41709            <td class="entry_range">
41710            </td>
41711
41712            <td class="entry_hal_version">
41713              <p>3.<wbr/>11</p>
41714            </td>
41715
41716            <td class="entry_tags">
41717              <ul class="entry_tags">
41718                  <li><a href="#tag_HEIC">HEIC</a></li>
41719              </ul>
41720            </td>
41721
41722          </tr>
41723          <tr class="entries_header">
41724            <th class="th_details" colspan="6">Details</th>
41725          </tr>
41726          <tr class="entry_cont">
41727            <td class="entry_details" colspan="6">
41728              <p>Refer to <a href="#static_android.heic.availableHeicStallDurations">android.<wbr/>heic.<wbr/>available<wbr/>Heic<wbr/>Stall<wbr/>Durations</a> for details.<wbr/></p>
41729            </td>
41730          </tr>
41731
41732
41733          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
41734           <!-- end of entry -->
41735
41736
41737
41738      <!-- end of kind -->
41739      </tbody>
41740
41741  <!-- end of section -->
41742  <tr><td colspan="7" id="section_automotive" class="section">automotive</td></tr>
41743
41744
41745      <tr><td colspan="7" class="kind">static</td></tr>
41746
41747      <thead class="entries_header">
41748        <tr>
41749          <th class="th_name">Property Name</th>
41750          <th class="th_type">Type</th>
41751          <th class="th_description">Description</th>
41752          <th class="th_units">Units</th>
41753          <th class="th_range">Range</th>
41754          <th class="th_hal_version">Initial HIDL HAL version</th>
41755          <th class="th_tags">Tags</th>
41756        </tr>
41757      </thead>
41758
41759      <tbody>
41760
41761
41762
41763
41764
41765
41766
41767
41768
41769
41770
41771
41772          <tr class="entry" id="static_android.automotive.lens.facing">
41773            <td class="entry_name
41774             " rowspan="3">
41775              android.<wbr/>automotive.<wbr/>lens.<wbr/>facing
41776            </td>
41777            <td class="entry_type">
41778                <span class="entry_type_name entry_type_name_enum">byte</span>
41779                <span class="entry_type_container">x</span>
41780
41781                <span class="entry_type_array">
41782                  n
41783                </span>
41784              <span class="entry_type_visibility"> [public]</span>
41785
41786
41787
41788
41789
41790                <ul class="entry_type_enum">
41791                  <li>
41792                    <span class="entry_type_enum_name">EXTERIOR_OTHER (v3.8)</span>
41793                    <span class="entry_type_enum_notes"><p>The camera device faces the outside of the vehicle body frame but not exactly
41794one of the exterior sides defined by this enum.<wbr/>  Applications should determine
41795the exact facing direction from <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> and
41796<a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a>.<wbr/></p></span>
41797                  </li>
41798                  <li>
41799                    <span class="entry_type_enum_name">EXTERIOR_FRONT (v3.8)</span>
41800                    <span class="entry_type_enum_notes"><p>The camera device faces the front of the vehicle body frame.<wbr/></p></span>
41801                  </li>
41802                  <li>
41803                    <span class="entry_type_enum_name">EXTERIOR_REAR (v3.8)</span>
41804                    <span class="entry_type_enum_notes"><p>The camera device faces the rear of the vehicle body frame.<wbr/></p></span>
41805                  </li>
41806                  <li>
41807                    <span class="entry_type_enum_name">EXTERIOR_LEFT (v3.8)</span>
41808                    <span class="entry_type_enum_notes"><p>The camera device faces the left side of the vehicle body frame.<wbr/></p></span>
41809                  </li>
41810                  <li>
41811                    <span class="entry_type_enum_name">EXTERIOR_RIGHT (v3.8)</span>
41812                    <span class="entry_type_enum_notes"><p>The camera device faces the right side of the vehicle body frame.<wbr/></p></span>
41813                  </li>
41814                  <li>
41815                    <span class="entry_type_enum_name">INTERIOR_OTHER (v3.8)</span>
41816                    <span class="entry_type_enum_notes"><p>The camera device faces the inside of the vehicle body frame but not exactly
41817one of seats described by this enum.<wbr/>  Applications should determine the exact
41818facing direction from <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> and <a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a>.<wbr/></p></span>
41819                  </li>
41820                  <li>
41821                    <span class="entry_type_enum_name">INTERIOR_SEAT_ROW_1_LEFT (v3.8)</span>
41822                    <span class="entry_type_enum_notes"><p>The camera device faces the left side seat of the first row.<wbr/></p></span>
41823                  </li>
41824                  <li>
41825                    <span class="entry_type_enum_name">INTERIOR_SEAT_ROW_1_CENTER (v3.8)</span>
41826                    <span class="entry_type_enum_notes"><p>The camera device faces the center seat of the first row.<wbr/></p></span>
41827                  </li>
41828                  <li>
41829                    <span class="entry_type_enum_name">INTERIOR_SEAT_ROW_1_RIGHT (v3.8)</span>
41830                    <span class="entry_type_enum_notes"><p>The camera device faces the right seat of the first row.<wbr/></p></span>
41831                  </li>
41832                  <li>
41833                    <span class="entry_type_enum_name">INTERIOR_SEAT_ROW_2_LEFT (v3.8)</span>
41834                    <span class="entry_type_enum_notes"><p>The camera device faces the left side seat of the second row.<wbr/></p></span>
41835                  </li>
41836                  <li>
41837                    <span class="entry_type_enum_name">INTERIOR_SEAT_ROW_2_CENTER (v3.8)</span>
41838                    <span class="entry_type_enum_notes"><p>The camera device faces the center seat of the second row.<wbr/></p></span>
41839                  </li>
41840                  <li>
41841                    <span class="entry_type_enum_name">INTERIOR_SEAT_ROW_2_RIGHT (v3.8)</span>
41842                    <span class="entry_type_enum_notes"><p>The camera device faces the right side seat of the second row.<wbr/></p></span>
41843                  </li>
41844                  <li>
41845                    <span class="entry_type_enum_name">INTERIOR_SEAT_ROW_3_LEFT (v3.8)</span>
41846                    <span class="entry_type_enum_notes"><p>The camera device faces the left side seat of the third row.<wbr/></p></span>
41847                  </li>
41848                  <li>
41849                    <span class="entry_type_enum_name">INTERIOR_SEAT_ROW_3_CENTER (v3.8)</span>
41850                    <span class="entry_type_enum_notes"><p>The camera device faces the center seat of the third row.<wbr/></p></span>
41851                  </li>
41852                  <li>
41853                    <span class="entry_type_enum_name">INTERIOR_SEAT_ROW_3_RIGHT (v3.8)</span>
41854                    <span class="entry_type_enum_notes"><p>The camera device faces the right seat of the third row.<wbr/></p></span>
41855                  </li>
41856                </ul>
41857
41858            </td> <!-- entry_type -->
41859
41860            <td class="entry_description">
41861              <p>The direction of the camera faces relative to the vehicle body frame and the
41862passenger seats.<wbr/></p>
41863            </td>
41864
41865            <td class="entry_units">
41866            </td>
41867
41868            <td class="entry_range">
41869            </td>
41870
41871            <td class="entry_hal_version">
41872              <p>3.<wbr/>8</p>
41873            </td>
41874
41875            <td class="entry_tags">
41876            </td>
41877
41878          </tr>
41879          <tr class="entries_header">
41880            <th class="th_details" colspan="6">Details</th>
41881          </tr>
41882          <tr class="entry_cont">
41883            <td class="entry_details" colspan="6">
41884              <p>This enum defines the lens facing characteristic of the cameras on the automotive
41885devices with locations <a href="#static_android.automotive.location">android.<wbr/>automotive.<wbr/>location</a> defines.<wbr/>  If the system has
41886FEATURE_<wbr/>AUTOMOTIVE,<wbr/> the camera will have this entry in its static metadata.<wbr/></p>
41887<p>When <a href="#static_android.automotive.location">android.<wbr/>automotive.<wbr/>location</a> is INTERIOR,<wbr/> this has one or more INTERIOR_<wbr/>*
41888values or a single EXTERIOR_<wbr/>* value.<wbr/>  When this has more than one INTERIOR_<wbr/>*,<wbr/>
41889the first value must be the one for the seat closest to the optical axis.<wbr/> If this
41890contains INTERIOR_<wbr/>OTHER,<wbr/> all other values will be ineffective.<wbr/></p>
41891<p>When <a href="#static_android.automotive.location">android.<wbr/>automotive.<wbr/>location</a> is EXTERIOR_<wbr/>* or EXTRA,<wbr/> this has a single
41892EXTERIOR_<wbr/>* value.<wbr/></p>
41893<p>If a camera has INTERIOR_<wbr/>OTHER or EXTERIOR_<wbr/>OTHER,<wbr/> or more than one camera is at the
41894same location and facing the same direction,<wbr/> their static metadata will list the
41895following entries,<wbr/> so that applications can determine their lenses' exact facing
41896directions:</p>
41897<ul>
41898<li><a href="#static_android.lens.poseReference">android.<wbr/>lens.<wbr/>pose<wbr/>Reference</a></li>
41899<li><a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a></li>
41900<li><a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a></li>
41901</ul>
41902            </td>
41903          </tr>
41904
41905
41906          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
41907           <!-- end of entry -->
41908
41909
41910
41911
41912
41913          <tr class="entry" id="static_android.automotive.location">
41914            <td class="entry_name
41915             " rowspan="3">
41916              android.<wbr/>automotive.<wbr/>location
41917            </td>
41918            <td class="entry_type">
41919                <span class="entry_type_name entry_type_name_enum">byte</span>
41920
41921              <span class="entry_type_visibility"> [public]</span>
41922
41923
41924
41925
41926
41927                <ul class="entry_type_enum">
41928                  <li>
41929                    <span class="entry_type_enum_name">INTERIOR (v3.8)</span>
41930                    <span class="entry_type_enum_notes"><p>The camera device exists inside of the vehicle cabin.<wbr/></p></span>
41931                  </li>
41932                  <li>
41933                    <span class="entry_type_enum_name">EXTERIOR_OTHER (v3.8)</span>
41934                    <span class="entry_type_enum_notes"><p>The camera exists outside of the vehicle body frame but not exactly on one of the
41935exterior locations this enum defines.<wbr/>  The applications should determine the exact
41936location from <a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a>.<wbr/></p></span>
41937                  </li>
41938                  <li>
41939                    <span class="entry_type_enum_name">EXTERIOR_FRONT (v3.8)</span>
41940                    <span class="entry_type_enum_notes"><p>The camera device exists outside of the vehicle body frame and on its front side.<wbr/></p></span>
41941                  </li>
41942                  <li>
41943                    <span class="entry_type_enum_name">EXTERIOR_REAR (v3.8)</span>
41944                    <span class="entry_type_enum_notes"><p>The camera device exists outside of the vehicle body frame and on its rear side.<wbr/></p></span>
41945                  </li>
41946                  <li>
41947                    <span class="entry_type_enum_name">EXTERIOR_LEFT (v3.8)</span>
41948                    <span class="entry_type_enum_notes"><p>The camera device exists outside and on left side of the vehicle body frame.<wbr/></p></span>
41949                  </li>
41950                  <li>
41951                    <span class="entry_type_enum_name">EXTERIOR_RIGHT (v3.8)</span>
41952                    <span class="entry_type_enum_notes"><p>The camera device exists outside and on right side of the vehicle body frame.<wbr/></p></span>
41953                  </li>
41954                  <li>
41955                    <span class="entry_type_enum_name">EXTRA_OTHER (v3.8)</span>
41956                    <span class="entry_type_enum_notes"><p>The camera device exists on an extra vehicle,<wbr/> such as the trailer,<wbr/> but not exactly
41957on one of front,<wbr/> rear,<wbr/> left,<wbr/> or right side.<wbr/>  Applications should determine the exact
41958location from <a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a>.<wbr/></p></span>
41959                  </li>
41960                  <li>
41961                    <span class="entry_type_enum_name">EXTRA_FRONT (v3.8)</span>
41962                    <span class="entry_type_enum_notes"><p>The camera device exists outside of the extra vehicle's body frame and on its front
41963side.<wbr/></p></span>
41964                  </li>
41965                  <li>
41966                    <span class="entry_type_enum_name">EXTRA_REAR (v3.8)</span>
41967                    <span class="entry_type_enum_notes"><p>The camera device exists outside of the extra vehicle's body frame and on its rear
41968side.<wbr/></p></span>
41969                  </li>
41970                  <li>
41971                    <span class="entry_type_enum_name">EXTRA_LEFT (v3.8)</span>
41972                    <span class="entry_type_enum_notes"><p>The camera device exists outside and on left side of the extra vehicle body.<wbr/></p></span>
41973                  </li>
41974                  <li>
41975                    <span class="entry_type_enum_name">EXTRA_RIGHT (v3.8)</span>
41976                    <span class="entry_type_enum_notes"><p>The camera device exists outside and on right side of the extra vehicle body.<wbr/></p></span>
41977                  </li>
41978                </ul>
41979
41980            </td> <!-- entry_type -->
41981
41982            <td class="entry_description">
41983              <p>Location of the cameras on the automotive devices.<wbr/></p>
41984            </td>
41985
41986            <td class="entry_units">
41987            </td>
41988
41989            <td class="entry_range">
41990            </td>
41991
41992            <td class="entry_hal_version">
41993              <p>3.<wbr/>8</p>
41994            </td>
41995
41996            <td class="entry_tags">
41997            </td>
41998
41999          </tr>
42000          <tr class="entries_header">
42001            <th class="th_details" colspan="6">Details</th>
42002          </tr>
42003          <tr class="entry_cont">
42004            <td class="entry_details" colspan="6">
42005              <p>This enum defines the locations of the cameras relative to the vehicle body frame on
42006<a href="https://source.android.com/devices/sensors/sensor-types#auto_axes">the automotive sensor coordinate system</a>.<wbr/>
42007If the system has FEATURE_<wbr/>AUTOMOTIVE,<wbr/> the camera will have this entry in its static
42008metadata.<wbr/></p>
42009<ul>
42010<li>INTERIOR is the inside of the vehicle body frame (or the passenger cabin).<wbr/></li>
42011<li>EXTERIOR is the outside of the vehicle body frame.<wbr/></li>
42012<li>EXTRA is the extra vehicle such as a trailer.<wbr/></li>
42013</ul>
42014<p>Each side of the vehicle body frame on this coordinate system is defined as below:</p>
42015<ul>
42016<li>FRONT is where the Y-axis increases toward.<wbr/></li>
42017<li>REAR is where the Y-axis decreases toward.<wbr/></li>
42018<li>LEFT is where the X-axis decreases toward.<wbr/></li>
42019<li>RIGHT is where the X-axis increases toward.<wbr/></li>
42020</ul>
42021<p>If the camera has either EXTERIOR_<wbr/>OTHER or EXTRA_<wbr/>OTHER,<wbr/> its static metadata will list
42022the following entries,<wbr/> so that applications can determine the camera's exact location:</p>
42023<ul>
42024<li><a href="#static_android.lens.poseReference">android.<wbr/>lens.<wbr/>pose<wbr/>Reference</a></li>
42025<li><a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a></li>
42026<li><a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a></li>
42027</ul>
42028            </td>
42029          </tr>
42030
42031
42032          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
42033           <!-- end of entry -->
42034
42035
42036
42037      <!-- end of kind -->
42038      </tbody>
42039
42040  <!-- end of section -->
42041  <tr><td colspan="7" id="section_extension" class="section">extension</td></tr>
42042
42043
42044      <tr><td colspan="7" class="kind">controls</td></tr>
42045
42046      <thead class="entries_header">
42047        <tr>
42048          <th class="th_name">Property Name</th>
42049          <th class="th_type">Type</th>
42050          <th class="th_description">Description</th>
42051          <th class="th_units">Units</th>
42052          <th class="th_range">Range</th>
42053          <th class="th_hal_version">Initial HIDL HAL version</th>
42054          <th class="th_tags">Tags</th>
42055        </tr>
42056      </thead>
42057
42058      <tbody>
42059
42060
42061
42062
42063
42064
42065
42066
42067
42068
42069          <tr class="entry" id="controls_android.extension.strength">
42070            <td class="entry_name
42071             " rowspan="3">
42072              android.<wbr/>extension.<wbr/>strength
42073            </td>
42074            <td class="entry_type">
42075                <span class="entry_type_name">int32</span>
42076
42077              <span class="entry_type_visibility"> [fwk_java_public]</span>
42078
42079
42080
42081
42082
42083
42084            </td> <!-- entry_type -->
42085
42086            <td class="entry_description">
42087              <p>Strength of the extension post-processing effect</p>
42088            </td>
42089
42090            <td class="entry_units">
42091            </td>
42092
42093            <td class="entry_range">
42094              <p>0 - 100</p>
42095            </td>
42096
42097            <td class="entry_hal_version">
42098              <p>3.<wbr/>9</p>
42099            </td>
42100
42101            <td class="entry_tags">
42102            </td>
42103
42104          </tr>
42105          <tr class="entries_header">
42106            <th class="th_details" colspan="6">Details</th>
42107          </tr>
42108          <tr class="entry_cont">
42109            <td class="entry_details" colspan="6">
42110              <p>This control allows Camera extension clients to configure the strength of the applied
42111extension effect.<wbr/> Strength equal to 0 means that the extension must not apply any
42112post-processing and return a regular captured frame.<wbr/> Strength equal to 100 is the
42113maximum level of post-processing.<wbr/> Values between 0 and 100 will have different effect
42114depending on the extension type as described below:</p>
42115<ul>
42116<li><a href="https://developer.android.com/reference/android/hardware/camera2/CameraExtensionCharacteristics.html#EXTENSION_BOKEH">BOKEH</a> -
42117the strength is expected to control the amount of blur.<wbr/></li>
42118<li><a href="https://developer.android.com/reference/android/hardware/camera2/CameraExtensionCharacteristics.html#EXTENSION_HDR">HDR</a> and
42119<a href="https://developer.android.com/reference/android/hardware/camera2/CameraExtensionCharacteristics.html#EXTENSION_NIGHT">NIGHT</a> -
42120the strength can control the amount of images fused and the brightness of the final image.<wbr/></li>
42121<li><a href="https://developer.android.com/reference/android/hardware/camera2/CameraExtensionCharacteristics.html#EXTENSION_FACE_RETOUCH">FACE_<wbr/>RETOUCH</a> -
42122the strength value will control the amount of cosmetic enhancement and skin
42123smoothing.<wbr/></li>
42124</ul>
42125<p>The control will be supported if the capture request key is part of the list generated by
42126<a href="https://developer.android.com/reference/android/hardware/camera2/CameraExtensionCharacteristics.html#getAvailableCaptureRequestKeys">CameraExtensionCharacteristics#getAvailableCaptureRequestKeys</a>.<wbr/>
42127The control is only defined and available to clients sending capture requests via
42128<a href="https://developer.android.com/reference/android/hardware/camera2/CameraExtensionSession.html">CameraExtensionSession</a>.<wbr/>
42129If the client doesn't specify the extension strength value,<wbr/> then a default value will
42130be set by the extension.<wbr/> Clients can retrieve the default value by checking the
42131corresponding capture result.<wbr/></p>
42132            </td>
42133          </tr>
42134
42135
42136          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
42137           <!-- end of entry -->
42138
42139
42140
42141      <!-- end of kind -->
42142      </tbody>
42143      <tr><td colspan="7" class="kind">dynamic</td></tr>
42144
42145      <thead class="entries_header">
42146        <tr>
42147          <th class="th_name">Property Name</th>
42148          <th class="th_type">Type</th>
42149          <th class="th_description">Description</th>
42150          <th class="th_units">Units</th>
42151          <th class="th_range">Range</th>
42152          <th class="th_hal_version">Initial HIDL HAL version</th>
42153          <th class="th_tags">Tags</th>
42154        </tr>
42155      </thead>
42156
42157      <tbody>
42158
42159
42160
42161
42162
42163
42164
42165
42166
42167
42168          <tr class="entry" id="dynamic_android.extension.currentType">
42169            <td class="entry_name
42170             " rowspan="3">
42171              android.<wbr/>extension.<wbr/>current<wbr/>Type
42172            </td>
42173            <td class="entry_type">
42174                <span class="entry_type_name">int32</span>
42175
42176              <span class="entry_type_visibility"> [fwk_java_public]</span>
42177
42178
42179
42180
42181
42182
42183            </td> <!-- entry_type -->
42184
42185            <td class="entry_description">
42186              <p>Contains the extension type of the currently active extension</p>
42187            </td>
42188
42189            <td class="entry_units">
42190            </td>
42191
42192            <td class="entry_range">
42193              <p>Extension type value listed in
42194<a href="https://developer.android.com/reference/android/hardware/camera2/CameraExtensionCharacteristics.html">CameraExtensionCharacteristics</a></p>
42195            </td>
42196
42197            <td class="entry_hal_version">
42198              <p>3.<wbr/>9</p>
42199            </td>
42200
42201            <td class="entry_tags">
42202            </td>
42203
42204          </tr>
42205          <tr class="entries_header">
42206            <th class="th_details" colspan="6">Details</th>
42207          </tr>
42208          <tr class="entry_cont">
42209            <td class="entry_details" colspan="6">
42210              <p>The capture result will only be supported and included by camera extension
42211<a href="https://developer.android.com/reference/android/hardware/camera2/CameraExtensionSession.html">sessions</a>.<wbr/>
42212In case the extension session was configured to use
42213<a href="https://developer.android.com/reference/android/hardware/camera2/CameraExtensionCharacteristics.html#EXTENSION_AUTOMATIC">AUTO</a>,<wbr/>
42214then the extension type value will indicate the currently active extension like
42215<a href="https://developer.android.com/reference/android/hardware/camera2/CameraExtensionCharacteristics.html#EXTENSION_HDR">HDR</a>,<wbr/>
42216<a href="https://developer.android.com/reference/android/hardware/camera2/CameraExtensionCharacteristics.html#EXTENSION_NIGHT">NIGHT</a> etc.<wbr/>
42217,<wbr/> and will never return
42218<a href="https://developer.android.com/reference/android/hardware/camera2/CameraExtensionCharacteristics.html#EXTENSION_AUTOMATIC">AUTO</a>.<wbr/>
42219In case the extension session was configured to use an extension different from
42220<a href="https://developer.android.com/reference/android/hardware/camera2/CameraExtensionCharacteristics.html#EXTENSION_AUTOMATIC">AUTO</a>,<wbr/>
42221then the result type will always match with the configured extension type.<wbr/></p>
42222            </td>
42223          </tr>
42224
42225
42226          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
42227           <!-- end of entry -->
42228
42229
42230          <tr class="entry" id="dynamic_android.extension.strength">
42231            <td class="entry_name
42232             " rowspan="3">
42233              android.<wbr/>extension.<wbr/>strength
42234            </td>
42235            <td class="entry_type">
42236                <span class="entry_type_name">int32</span>
42237
42238              <span class="entry_type_visibility"> [fwk_java_public]</span>
42239
42240
42241
42242
42243
42244
42245            </td> <!-- entry_type -->
42246
42247            <td class="entry_description">
42248              <p>Strength of the extension post-processing effect</p>
42249            </td>
42250
42251            <td class="entry_units">
42252            </td>
42253
42254            <td class="entry_range">
42255              <p>0 - 100</p>
42256            </td>
42257
42258            <td class="entry_hal_version">
42259              <p>3.<wbr/>9</p>
42260            </td>
42261
42262            <td class="entry_tags">
42263            </td>
42264
42265          </tr>
42266          <tr class="entries_header">
42267            <th class="th_details" colspan="6">Details</th>
42268          </tr>
42269          <tr class="entry_cont">
42270            <td class="entry_details" colspan="6">
42271              <p>This control allows Camera extension clients to configure the strength of the applied
42272extension effect.<wbr/> Strength equal to 0 means that the extension must not apply any
42273post-processing and return a regular captured frame.<wbr/> Strength equal to 100 is the
42274maximum level of post-processing.<wbr/> Values between 0 and 100 will have different effect
42275depending on the extension type as described below:</p>
42276<ul>
42277<li><a href="https://developer.android.com/reference/android/hardware/camera2/CameraExtensionCharacteristics.html#EXTENSION_BOKEH">BOKEH</a> -
42278the strength is expected to control the amount of blur.<wbr/></li>
42279<li><a href="https://developer.android.com/reference/android/hardware/camera2/CameraExtensionCharacteristics.html#EXTENSION_HDR">HDR</a> and
42280<a href="https://developer.android.com/reference/android/hardware/camera2/CameraExtensionCharacteristics.html#EXTENSION_NIGHT">NIGHT</a> -
42281the strength can control the amount of images fused and the brightness of the final image.<wbr/></li>
42282<li><a href="https://developer.android.com/reference/android/hardware/camera2/CameraExtensionCharacteristics.html#EXTENSION_FACE_RETOUCH">FACE_<wbr/>RETOUCH</a> -
42283the strength value will control the amount of cosmetic enhancement and skin
42284smoothing.<wbr/></li>
42285</ul>
42286<p>The control will be supported if the capture request key is part of the list generated by
42287<a href="https://developer.android.com/reference/android/hardware/camera2/CameraExtensionCharacteristics.html#getAvailableCaptureRequestKeys">CameraExtensionCharacteristics#getAvailableCaptureRequestKeys</a>.<wbr/>
42288The control is only defined and available to clients sending capture requests via
42289<a href="https://developer.android.com/reference/android/hardware/camera2/CameraExtensionSession.html">CameraExtensionSession</a>.<wbr/>
42290If the client doesn't specify the extension strength value,<wbr/> then a default value will
42291be set by the extension.<wbr/> Clients can retrieve the default value by checking the
42292corresponding capture result.<wbr/></p>
42293            </td>
42294          </tr>
42295
42296
42297          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
42298           <!-- end of entry -->
42299
42300
42301          <tr class="entry" id="dynamic_android.extension.nightModeIndicator">
42302            <td class="entry_name
42303             " rowspan="3">
42304              android.<wbr/>extension.<wbr/>night<wbr/>Mode<wbr/>Indicator
42305            </td>
42306            <td class="entry_type">
42307                <span class="entry_type_name entry_type_name_enum">int32</span>
42308
42309              <span class="entry_type_visibility"> [public]</span>
42310
42311
42312
42313
42314
42315                <ul class="entry_type_enum">
42316                  <li>
42317                    <span class="entry_type_enum_name">UNKNOWN (v3.11)</span>
42318                    <span class="entry_type_enum_notes"><p>The camera can't accurately assess the scene's lighting to determine if a Night Mode
42319Camera Extension capture would improve the photo.<wbr/> This can happen when the current
42320camera configuration doesn't support night mode indicator detection,<wbr/> such as when
42321the auto exposure mode is ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> ON_<wbr/>ALWAYS_<wbr/>FLASH,<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE,<wbr/> or
42322ON_<wbr/>EXTERNAL_<wbr/>FLASH.<wbr/></p></span>
42323                  </li>
42324                  <li>
42325                    <span class="entry_type_enum_name">OFF (v3.11)</span>
42326                    <span class="entry_type_enum_notes"><p>The camera has detected lighting conditions that are sufficiently bright.<wbr/> Night
42327Mode Camera Extensions is available but may not be able to optimize the camera
42328settings to take a higher quality photo.<wbr/></p></span>
42329                  </li>
42330                  <li>
42331                    <span class="entry_type_enum_name">ON (v3.11)</span>
42332                    <span class="entry_type_enum_notes"><p>The camera has detected low-light conditions.<wbr/> It is recommended to use Night Mode
42333Camera Extension to optimize the camera settings to take a high-quality photo in
42334the dark.<wbr/></p></span>
42335                  </li>
42336                </ul>
42337
42338            </td> <!-- entry_type -->
42339
42340            <td class="entry_description">
42341              <p>Indicates when to activate Night Mode Camera Extension for high-quality
42342still captures in low-light conditions.<wbr/></p>
42343            </td>
42344
42345            <td class="entry_units">
42346            </td>
42347
42348            <td class="entry_range">
42349            </td>
42350
42351            <td class="entry_hal_version">
42352              <p>3.<wbr/>11</p>
42353            </td>
42354
42355            <td class="entry_tags">
42356            </td>
42357
42358          </tr>
42359          <tr class="entries_header">
42360            <th class="th_details" colspan="6">Details</th>
42361          </tr>
42362          <tr class="entry_cont">
42363            <td class="entry_details" colspan="6">
42364              <p>Provides awareness to the application when the current scene can benefit from using a
42365Night Mode Camera Extension to take a high-quality photo.<wbr/></p>
42366<p>Support for this capture result can be queried via
42367<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureResultKeys">CameraCharacteristics#getAvailableCaptureResultKeys</a>.<wbr/></p>
42368<p>If the device supports this capability then it will also support
42369<a href="https://developer.android.com/reference/android/hardware/camera2/CameraExtensionCharacteristics.html#EXTENSION_NIGHT">NIGHT</a>
42370and will be available in both
42371<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCaptureSession.html">sessions</a> and
42372<a href="https://developer.android.com/reference/android/hardware/camera2/CameraExtensionSession.html">sessions</a>.<wbr/></p>
42373<p>The value will be {@code UNKNOWN} in the following auto exposure modes: ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/>
42374ON_<wbr/>ALWAYS_<wbr/>FLASH,<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE,<wbr/> or ON_<wbr/>EXTERNAL_<wbr/>FLASH.<wbr/></p>
42375            </td>
42376          </tr>
42377
42378
42379          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
42380           <!-- end of entry -->
42381
42382
42383
42384      <!-- end of kind -->
42385      </tbody>
42386
42387  <!-- end of section -->
42388  <tr><td colspan="7" id="section_jpegr" class="section">jpegr</td></tr>
42389
42390
42391      <tr><td colspan="7" class="kind">static</td></tr>
42392
42393      <thead class="entries_header">
42394        <tr>
42395          <th class="th_name">Property Name</th>
42396          <th class="th_type">Type</th>
42397          <th class="th_description">Description</th>
42398          <th class="th_units">Units</th>
42399          <th class="th_range">Range</th>
42400          <th class="th_hal_version">Initial HIDL HAL version</th>
42401          <th class="th_tags">Tags</th>
42402        </tr>
42403      </thead>
42404
42405      <tbody>
42406
42407
42408
42409
42410
42411
42412
42413
42414
42415
42416          <tr class="entry" id="static_android.jpegr.availableJpegRStreamConfigurations">
42417            <td class="entry_name
42418             " rowspan="3">
42419              android.<wbr/>jpegr.<wbr/>available<wbr/>Jpeg<wbr/>RStream<wbr/>Configurations
42420            </td>
42421            <td class="entry_type">
42422                <span class="entry_type_name entry_type_name_enum">int32</span>
42423                <span class="entry_type_container">x</span>
42424
42425                <span class="entry_type_array">
42426                  n x 4
42427                </span>
42428              <span class="entry_type_visibility"> [ndk_public as streamConfiguration]</span>
42429
42430
42431              <span class="entry_type_hwlevel">[limited] </span>
42432
42433
42434
42435                <ul class="entry_type_enum">
42436                  <li>
42437                    <span class="entry_type_enum_name">OUTPUT (v3.9)</span>
42438                  </li>
42439                  <li>
42440                    <span class="entry_type_enum_name">INPUT (v3.9)</span>
42441                  </li>
42442                </ul>
42443
42444            </td> <!-- entry_type -->
42445
42446            <td class="entry_description">
42447              <p>The available Jpeg/<wbr/>R stream
42448configurations that this camera device supports
42449(i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p>
42450            </td>
42451
42452            <td class="entry_units">
42453            </td>
42454
42455            <td class="entry_range">
42456            </td>
42457
42458            <td class="entry_hal_version">
42459              <p>3.<wbr/>9</p>
42460            </td>
42461
42462            <td class="entry_tags">
42463            </td>
42464
42465          </tr>
42466          <tr class="entries_header">
42467            <th class="th_details" colspan="6">Details</th>
42468          </tr>
42469          <tr class="entry_cont">
42470            <td class="entry_details" colspan="6">
42471              <p>The configurations are listed as <code>(format,<wbr/> width,<wbr/> height,<wbr/> input?)</code> tuples.<wbr/></p>
42472<p>If the camera device supports Jpeg/<wbr/>R,<wbr/> it will support the same stream combinations with
42473Jpeg/<wbr/>R as it does with P010.<wbr/> The stream combinations with Jpeg/<wbr/>R (or P010) supported
42474by the device is determined by the device's hardware level and capabilities.<wbr/></p>
42475<p>All the static,<wbr/> control,<wbr/> and dynamic metadata tags related to JPEG apply to Jpeg/<wbr/>R formats.<wbr/>
42476Configuring JPEG and Jpeg/<wbr/>R streams at the same time is not supported.<wbr/></p>
42477            </td>
42478          </tr>
42479
42480
42481          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
42482           <!-- end of entry -->
42483
42484
42485          <tr class="entry" id="static_android.jpegr.availableJpegRMinFrameDurations">
42486            <td class="entry_name
42487             " rowspan="3">
42488              android.<wbr/>jpegr.<wbr/>available<wbr/>Jpeg<wbr/>RMin<wbr/>Frame<wbr/>Durations
42489            </td>
42490            <td class="entry_type">
42491                <span class="entry_type_name">int64</span>
42492                <span class="entry_type_container">x</span>
42493
42494                <span class="entry_type_array">
42495                  4 x n
42496                </span>
42497              <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
42498
42499
42500              <span class="entry_type_hwlevel">[limited] </span>
42501
42502
42503
42504
42505            </td> <!-- entry_type -->
42506
42507            <td class="entry_description">
42508              <p>This lists the minimum frame duration for each
42509format/<wbr/>size combination for Jpeg/<wbr/>R output formats.<wbr/></p>
42510            </td>
42511
42512            <td class="entry_units">
42513              (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
42514            </td>
42515
42516            <td class="entry_range">
42517            </td>
42518
42519            <td class="entry_hal_version">
42520              <p>3.<wbr/>9</p>
42521            </td>
42522
42523            <td class="entry_tags">
42524            </td>
42525
42526          </tr>
42527          <tr class="entries_header">
42528            <th class="th_details" colspan="6">Details</th>
42529          </tr>
42530          <tr class="entry_cont">
42531            <td class="entry_details" colspan="6">
42532              <p>This should correspond to the frame duration when only that
42533stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode)
42534set to either OFF or FAST.<wbr/></p>
42535<p>When multiple streams are used in a request,<wbr/> the minimum frame
42536duration will be max(individual stream min durations).<wbr/></p>
42537<p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> and
42538<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for more details about
42539calculating the max frame rate.<wbr/></p>
42540            </td>
42541          </tr>
42542
42543
42544          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
42545           <!-- end of entry -->
42546
42547
42548          <tr class="entry" id="static_android.jpegr.availableJpegRStallDurations">
42549            <td class="entry_name
42550             " rowspan="3">
42551              android.<wbr/>jpegr.<wbr/>available<wbr/>Jpeg<wbr/>RStall<wbr/>Durations
42552            </td>
42553            <td class="entry_type">
42554                <span class="entry_type_name">int64</span>
42555                <span class="entry_type_container">x</span>
42556
42557                <span class="entry_type_array">
42558                  4 x n
42559                </span>
42560              <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
42561
42562
42563              <span class="entry_type_hwlevel">[limited] </span>
42564
42565
42566
42567
42568            </td> <!-- entry_type -->
42569
42570            <td class="entry_description">
42571              <p>This lists the maximum stall duration for each
42572output format/<wbr/>size combination for Jpeg/<wbr/>R streams.<wbr/></p>
42573            </td>
42574
42575            <td class="entry_units">
42576              (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
42577            </td>
42578
42579            <td class="entry_range">
42580            </td>
42581
42582            <td class="entry_hal_version">
42583              <p>3.<wbr/>9</p>
42584            </td>
42585
42586            <td class="entry_tags">
42587            </td>
42588
42589          </tr>
42590          <tr class="entries_header">
42591            <th class="th_details" colspan="6">Details</th>
42592          </tr>
42593          <tr class="entry_cont">
42594            <td class="entry_details" colspan="6">
42595              <p>A stall duration is how much extra time would get added
42596to the normal minimum frame duration for a repeating request
42597that has streams with non-zero stall.<wbr/></p>
42598<p>This functions similarly to
42599<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for Jpeg/<wbr/>R
42600streams.<wbr/></p>
42601<p>All Jpeg/<wbr/>R output stream formats may have a nonzero stall
42602duration.<wbr/></p>
42603            </td>
42604          </tr>
42605
42606
42607          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
42608           <!-- end of entry -->
42609
42610
42611          <tr class="entry" id="static_android.jpegr.availableJpegRStreamConfigurationsMaximumResolution">
42612            <td class="entry_name
42613             " rowspan="3">
42614              android.<wbr/>jpegr.<wbr/>available<wbr/>Jpeg<wbr/>RStream<wbr/>Configurations<wbr/>Maximum<wbr/>Resolution
42615            </td>
42616            <td class="entry_type">
42617                <span class="entry_type_name entry_type_name_enum">int32</span>
42618                <span class="entry_type_container">x</span>
42619
42620                <span class="entry_type_array">
42621                  n x 4
42622                </span>
42623              <span class="entry_type_visibility"> [ndk_public as streamConfiguration]</span>
42624
42625
42626
42627
42628
42629                <ul class="entry_type_enum">
42630                  <li>
42631                    <span class="entry_type_enum_name">OUTPUT (v3.9)</span>
42632                  </li>
42633                  <li>
42634                    <span class="entry_type_enum_name">INPUT (v3.9)</span>
42635                  </li>
42636                </ul>
42637
42638            </td> <!-- entry_type -->
42639
42640            <td class="entry_description">
42641              <p>The available Jpeg/<wbr/>R stream
42642configurations that this camera device supports
42643(i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p>
42644            </td>
42645
42646            <td class="entry_units">
42647            </td>
42648
42649            <td class="entry_range">
42650            </td>
42651
42652            <td class="entry_hal_version">
42653              <p>3.<wbr/>9</p>
42654            </td>
42655
42656            <td class="entry_tags">
42657            </td>
42658
42659          </tr>
42660          <tr class="entries_header">
42661            <th class="th_details" colspan="6">Details</th>
42662          </tr>
42663          <tr class="entry_cont">
42664            <td class="entry_details" colspan="6">
42665              <p>Refer to <a href="#static_android.jpegr.availableJpegRStreamConfigurations">android.<wbr/>jpegr.<wbr/>available<wbr/>Jpeg<wbr/>RStream<wbr/>Configurations</a> for details.<wbr/></p>
42666            </td>
42667          </tr>
42668
42669
42670          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
42671           <!-- end of entry -->
42672
42673
42674          <tr class="entry" id="static_android.jpegr.availableJpegRMinFrameDurationsMaximumResolution">
42675            <td class="entry_name
42676             " rowspan="3">
42677              android.<wbr/>jpegr.<wbr/>available<wbr/>Jpeg<wbr/>RMin<wbr/>Frame<wbr/>Durations<wbr/>Maximum<wbr/>Resolution
42678            </td>
42679            <td class="entry_type">
42680                <span class="entry_type_name">int64</span>
42681                <span class="entry_type_container">x</span>
42682
42683                <span class="entry_type_array">
42684                  4 x n
42685                </span>
42686              <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
42687
42688
42689
42690
42691
42692
42693            </td> <!-- entry_type -->
42694
42695            <td class="entry_description">
42696              <p>This lists the minimum frame duration for each
42697format/<wbr/>size combination for Jpeg/<wbr/>R output formats for CaptureRequests where
42698<a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to
42699<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p>
42700            </td>
42701
42702            <td class="entry_units">
42703              (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
42704            </td>
42705
42706            <td class="entry_range">
42707            </td>
42708
42709            <td class="entry_hal_version">
42710              <p>3.<wbr/>9</p>
42711            </td>
42712
42713            <td class="entry_tags">
42714            </td>
42715
42716          </tr>
42717          <tr class="entries_header">
42718            <th class="th_details" colspan="6">Details</th>
42719          </tr>
42720          <tr class="entry_cont">
42721            <td class="entry_details" colspan="6">
42722              <p>Refer to <a href="#static_android.jpegr.availableJpegRMinFrameDurations">android.<wbr/>jpegr.<wbr/>available<wbr/>Jpeg<wbr/>RMin<wbr/>Frame<wbr/>Durations</a> for details.<wbr/></p>
42723            </td>
42724          </tr>
42725
42726
42727          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
42728           <!-- end of entry -->
42729
42730
42731          <tr class="entry" id="static_android.jpegr.availableJpegRStallDurationsMaximumResolution">
42732            <td class="entry_name
42733             " rowspan="3">
42734              android.<wbr/>jpegr.<wbr/>available<wbr/>Jpeg<wbr/>RStall<wbr/>Durations<wbr/>Maximum<wbr/>Resolution
42735            </td>
42736            <td class="entry_type">
42737                <span class="entry_type_name">int64</span>
42738                <span class="entry_type_container">x</span>
42739
42740                <span class="entry_type_array">
42741                  4 x n
42742                </span>
42743              <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
42744
42745
42746
42747
42748
42749
42750            </td> <!-- entry_type -->
42751
42752            <td class="entry_description">
42753              <p>This lists the maximum stall duration for each
42754output format/<wbr/>size combination for Jpeg/<wbr/>R streams for CaptureRequests where
42755<a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to
42756<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p>
42757            </td>
42758
42759            <td class="entry_units">
42760              (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
42761            </td>
42762
42763            <td class="entry_range">
42764            </td>
42765
42766            <td class="entry_hal_version">
42767              <p>3.<wbr/>9</p>
42768            </td>
42769
42770            <td class="entry_tags">
42771            </td>
42772
42773          </tr>
42774          <tr class="entries_header">
42775            <th class="th_details" colspan="6">Details</th>
42776          </tr>
42777          <tr class="entry_cont">
42778            <td class="entry_details" colspan="6">
42779              <p>Refer to <a href="#static_android.jpegr.availableJpegRStallDurations">android.<wbr/>jpegr.<wbr/>available<wbr/>Jpeg<wbr/>RStall<wbr/>Durations</a> for details.<wbr/></p>
42780            </td>
42781          </tr>
42782
42783
42784          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
42785           <!-- end of entry -->
42786
42787
42788
42789      <!-- end of kind -->
42790      </tbody>
42791
42792  <!-- end of section -->
42793  <tr><td colspan="7" id="section_sharedSession" class="section">sharedSession</td></tr>
42794
42795
42796      <tr><td colspan="7" class="kind">static</td></tr>
42797
42798      <thead class="entries_header">
42799        <tr>
42800          <th class="th_name">Property Name</th>
42801          <th class="th_type">Type</th>
42802          <th class="th_description">Description</th>
42803          <th class="th_units">Units</th>
42804          <th class="th_range">Range</th>
42805          <th class="th_hal_version">Initial HIDL HAL version</th>
42806          <th class="th_tags">Tags</th>
42807        </tr>
42808      </thead>
42809
42810      <tbody>
42811
42812
42813
42814
42815
42816
42817
42818
42819
42820
42821          <tr class="entry" id="static_android.sharedSession.colorSpace">
42822            <td class="entry_name
42823             " rowspan="3">
42824              android.<wbr/>shared<wbr/>Session.<wbr/>color<wbr/>Space
42825            </td>
42826            <td class="entry_type">
42827                <span class="entry_type_name entry_type_name_enum">byte</span>
42828
42829              <span class="entry_type_visibility"> [fwk_only]</span>
42830
42831
42832
42833
42834
42835                <ul class="entry_type_enum">
42836                  <li>
42837                    <span class="entry_type_enum_name">UNSPECIFIED (v3.11)</span>
42838                    <span class="entry_type_enum_value">-1</span>
42839                  </li>
42840                  <li>
42841                    <span class="entry_type_enum_name">SRGB (v3.11)</span>
42842                    <span class="entry_type_enum_value">0</span>
42843                  </li>
42844                  <li>
42845                    <span class="entry_type_enum_name">DISPLAY_P3 (v3.11)</span>
42846                    <span class="entry_type_enum_value">7</span>
42847                  </li>
42848                  <li>
42849                    <span class="entry_type_enum_name">BT2020_HLG (v3.11)</span>
42850                    <span class="entry_type_enum_value">16</span>
42851                  </li>
42852                </ul>
42853
42854            </td> <!-- entry_type -->
42855
42856            <td class="entry_description">
42857              <p>Color space used for shared session configuration for all the output targets
42858when camera is opened in shared mode.<wbr/> This should be one of the values specified in
42859availableColorSpaceProfilesMap.<wbr/></p>
42860            </td>
42861
42862            <td class="entry_units">
42863            </td>
42864
42865            <td class="entry_range">
42866            </td>
42867
42868            <td class="entry_hal_version">
42869              <p>3.<wbr/>11</p>
42870            </td>
42871
42872            <td class="entry_tags">
42873            </td>
42874
42875          </tr>
42876
42877          <tr class="entries_header">
42878            <th class="th_details" colspan="6">HAL Implementation Details</th>
42879          </tr>
42880          <tr class="entry_cont">
42881            <td class="entry_details" colspan="6">
42882              <p>Do not set this property directly.<wbr/> Android camera framework will generate this tag if the
42883camera device can be opened in shared mode.<wbr/></p>
42884            </td>
42885          </tr>
42886
42887          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
42888           <!-- end of entry -->
42889
42890
42891          <tr class="entry" id="static_android.sharedSession.outputConfigurations">
42892            <td class="entry_name
42893             " rowspan="3">
42894              android.<wbr/>shared<wbr/>Session.<wbr/>output<wbr/>Configurations
42895            </td>
42896            <td class="entry_type">
42897                <span class="entry_type_name">int64</span>
42898                <span class="entry_type_container">x</span>
42899
42900                <span class="entry_type_array">
42901                  n
42902                </span>
42903              <span class="entry_type_visibility"> [fwk_only]</span>
42904
42905
42906
42907
42908
42909
42910            </td> <!-- entry_type -->
42911
42912            <td class="entry_description">
42913              <p>List of shared output configurations that this camera device supports when
42914camera is opened in shared mode.<wbr/> Array contains following entries for each supported
42915shared configuration:
429161) surface type
429172) width
429183) height
429194) format
429205) mirrorMode
429216) useReadoutTimestamp
429227) timestampBase
429238) dataspace
429249) usage
4292510) streamUsecase
4292611) physical camera id len
4292712) physical camera id as UTF-8 null terminated string.<wbr/></p>
42928            </td>
42929
42930            <td class="entry_units">
42931            </td>
42932
42933            <td class="entry_range">
42934            </td>
42935
42936            <td class="entry_hal_version">
42937              <p>3.<wbr/>11</p>
42938            </td>
42939
42940            <td class="entry_tags">
42941            </td>
42942
42943          </tr>
42944
42945          <tr class="entries_header">
42946            <th class="th_details" colspan="6">HAL Implementation Details</th>
42947          </tr>
42948          <tr class="entry_cont">
42949            <td class="entry_details" colspan="6">
42950              <p>Do not set this property directly.<wbr/> Android camera framework will generate this tag if the
42951camera device can be opened in shared mode.<wbr/></p>
42952            </td>
42953          </tr>
42954
42955          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
42956           <!-- end of entry -->
42957
42958
42959          <tr class="entry" id="static_android.sharedSession.configuration">
42960            <td class="entry_name
42961             " rowspan="3">
42962              android.<wbr/>shared<wbr/>Session.<wbr/>configuration
42963            </td>
42964            <td class="entry_type">
42965                <span class="entry_type_name">byte</span>
42966
42967              <span class="entry_type_visibility"> [fwk_system_public as sharedSessionConfiguration]</span>
42968
42969              <span class="entry_type_synthetic">[synthetic] </span>
42970
42971
42972
42973
42974
42975            </td> <!-- entry_type -->
42976
42977            <td class="entry_description">
42978              <p>The available stream configurations that this camera device supports for
42979shared capture session when camera is opened in shared mode.<wbr/> Android camera framework
42980will generate this tag if the camera device can be opened in shared mode.<wbr/></p>
42981            </td>
42982
42983            <td class="entry_units">
42984            </td>
42985
42986            <td class="entry_range">
42987            </td>
42988
42989            <td class="entry_hal_version">
42990              <p>3.<wbr/>2</p>
42991            </td>
42992
42993            <td class="entry_tags">
42994            </td>
42995
42996          </tr>
42997
42998          <tr class="entries_header">
42999            <th class="th_details" colspan="6">HAL Implementation Details</th>
43000          </tr>
43001          <tr class="entry_cont">
43002            <td class="entry_details" colspan="6">
43003              <p>Do not set this property directly (it is synthetic and will not be available at the
43004HAL layer);</p>
43005            </td>
43006          </tr>
43007
43008          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
43009           <!-- end of entry -->
43010
43011
43012
43013      <!-- end of kind -->
43014      </tbody>
43015
43016  <!-- end of section -->
43017  <tr><td colspan="7" id="section_desktopEffects" class="section">desktopEffects</td></tr>
43018
43019
43020      <tr><td colspan="7" class="kind">static</td></tr>
43021
43022      <thead class="entries_header">
43023        <tr>
43024          <th class="th_name">Property Name</th>
43025          <th class="th_type">Type</th>
43026          <th class="th_description">Description</th>
43027          <th class="th_units">Units</th>
43028          <th class="th_range">Range</th>
43029          <th class="th_hal_version">Initial HIDL HAL version</th>
43030          <th class="th_tags">Tags</th>
43031        </tr>
43032      </thead>
43033
43034      <tbody>
43035
43036
43037
43038
43039
43040
43041
43042
43043
43044
43045          <tr class="entry" id="static_android.desktopEffects.capabilities">
43046            <td class="entry_name
43047             " rowspan="3">
43048              android.<wbr/>desktop<wbr/>Effects.<wbr/>capabilities
43049            </td>
43050            <td class="entry_type">
43051                <span class="entry_type_name entry_type_name_enum">byte</span>
43052                <span class="entry_type_container">x</span>
43053
43054                <span class="entry_type_array">
43055                  n
43056                </span>
43057              <span class="entry_type_visibility"> [system as enumList]</span>
43058
43059
43060
43061
43062                <div class="entry_type_notes">list of enums</div>
43063
43064                <ul class="entry_type_enum">
43065                  <li>
43066                    <span class="entry_type_enum_name">BACKGROUND_BLUR (v3.2)</span>
43067                    <span class="entry_type_enum_notes"><p>Background blur can be activated via <a href="#controls_android.desktopEffects.backgroundBlurMode">android.<wbr/>desktop<wbr/>Effects.<wbr/>background<wbr/>Blur<wbr/>Mode</a></p></span>
43068                  </li>
43069                  <li>
43070                    <span class="entry_type_enum_name">FACE_RETOUCH (v3.2)</span>
43071                    <span class="entry_type_enum_notes"><p>Face retouch can be activated via <a href="#controls_android.desktopEffects.faceRetouchMode">android.<wbr/>desktop<wbr/>Effects.<wbr/>face<wbr/>Retouch<wbr/>Mode</a></p></span>
43072                  </li>
43073                  <li>
43074                    <span class="entry_type_enum_name">PORTRAIT_RELIGHT (v3.2)</span>
43075                    <span class="entry_type_enum_notes"><p>Portrait relight can be activated via <a href="#controls_android.desktopEffects.portraitRelightMode">android.<wbr/>desktop<wbr/>Effects.<wbr/>portrait<wbr/>Relight<wbr/>Mode</a></p></span>
43076                  </li>
43077                </ul>
43078
43079            </td> <!-- entry_type -->
43080
43081            <td class="entry_description">
43082              <p>List of special effects supported by the camera device.<wbr/></p>
43083            </td>
43084
43085            <td class="entry_units">
43086            </td>
43087
43088            <td class="entry_range">
43089            </td>
43090
43091            <td class="entry_hal_version">
43092              <p>3.<wbr/>2</p>
43093            </td>
43094
43095            <td class="entry_tags">
43096            </td>
43097
43098          </tr>
43099          <tr class="entries_header">
43100            <th class="th_details" colspan="6">Details</th>
43101          </tr>
43102          <tr class="entry_cont">
43103            <td class="entry_details" colspan="6">
43104              <p>Available features supported by the camera device for large screen video conferencing.<wbr/></p>
43105            </td>
43106          </tr>
43107
43108
43109          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
43110           <!-- end of entry -->
43111
43112
43113          <tr class="entry" id="static_android.desktopEffects.backgroundBlurModes">
43114            <td class="entry_name
43115             " rowspan="3">
43116              android.<wbr/>desktop<wbr/>Effects.<wbr/>background<wbr/>Blur<wbr/>Modes
43117            </td>
43118            <td class="entry_type">
43119                <span class="entry_type_name">byte</span>
43120                <span class="entry_type_container">x</span>
43121
43122                <span class="entry_type_array">
43123                  n
43124                </span>
43125              <span class="entry_type_visibility"> [system as enumList]</span>
43126
43127
43128
43129
43130                <div class="entry_type_notes">list of enums (android.<wbr/>desktop<wbr/>Effects.<wbr/>background<wbr/>Blur<wbr/>Mode)</div>
43131
43132
43133            </td> <!-- entry_type -->
43134
43135            <td class="entry_description">
43136              <p>List of background blur modes supported by the camera device.<wbr/> The key will only exist
43137if BACKGROUND_<wbr/>BLUR is listed by <a href="#static_android.desktopEffects.capabilities">android.<wbr/>desktop<wbr/>Effects.<wbr/>capabilities</a>.<wbr/></p>
43138            </td>
43139
43140            <td class="entry_units">
43141            </td>
43142
43143            <td class="entry_range">
43144              <p>Any value listed in <a href="#controls_android.desktopEffects.backgroundBlurMode">android.<wbr/>desktop<wbr/>Effects.<wbr/>background<wbr/>Blur<wbr/>Mode</a></p>
43145            </td>
43146
43147            <td class="entry_hal_version">
43148              <p>3.<wbr/>2</p>
43149            </td>
43150
43151            <td class="entry_tags">
43152            </td>
43153
43154          </tr>
43155          <tr class="entries_header">
43156            <th class="th_details" colspan="6">Details</th>
43157          </tr>
43158          <tr class="entry_cont">
43159            <td class="entry_details" colspan="6">
43160              <p>Lists the valid modes for <a href="#controls_android.desktopEffects.backgroundBlurMode">android.<wbr/>desktop<wbr/>Effects.<wbr/>background<wbr/>Blur<wbr/>Mode</a>.<wbr/></p>
43161            </td>
43162          </tr>
43163
43164
43165          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
43166           <!-- end of entry -->
43167
43168
43169
43170      <!-- end of kind -->
43171      </tbody>
43172      <tr><td colspan="7" class="kind">controls</td></tr>
43173
43174      <thead class="entries_header">
43175        <tr>
43176          <th class="th_name">Property Name</th>
43177          <th class="th_type">Type</th>
43178          <th class="th_description">Description</th>
43179          <th class="th_units">Units</th>
43180          <th class="th_range">Range</th>
43181          <th class="th_hal_version">Initial HIDL HAL version</th>
43182          <th class="th_tags">Tags</th>
43183        </tr>
43184      </thead>
43185
43186      <tbody>
43187
43188
43189
43190
43191
43192
43193
43194
43195
43196
43197          <tr class="entry" id="controls_android.desktopEffects.backgroundBlurMode">
43198            <td class="entry_name
43199             " rowspan="1">
43200              android.<wbr/>desktop<wbr/>Effects.<wbr/>background<wbr/>Blur<wbr/>Mode
43201            </td>
43202            <td class="entry_type">
43203                <span class="entry_type_name entry_type_name_enum">byte</span>
43204
43205              <span class="entry_type_visibility"> [system]</span>
43206
43207
43208
43209
43210
43211                <ul class="entry_type_enum">
43212                  <li>
43213                    <span class="entry_type_enum_name">OFF (v3.2)</span>
43214                    <span class="entry_type_enum_notes"><p>Don't use background blur</p></span>
43215                  </li>
43216                  <li>
43217                    <span class="entry_type_enum_name">LIGHT (v3.2)</span>
43218                    <span class="entry_type_enum_notes"><p>Blur the background with light blur strength</p></span>
43219                  </li>
43220                  <li>
43221                    <span class="entry_type_enum_name">FULL (v3.2)</span>
43222                    <span class="entry_type_enum_notes"><p>Blur the background with full blur strength</p></span>
43223                  </li>
43224                </ul>
43225
43226            </td> <!-- entry_type -->
43227
43228            <td class="entry_description">
43229              <p>Control how the background should be blurred.<wbr/> Supported modes are listed in
43230<a href="#static_android.desktopEffects.backgroundBlurModes">android.<wbr/>desktop<wbr/>Effects.<wbr/>background<wbr/>Blur<wbr/>Modes</a> by the camera device.<wbr/></p>
43231            </td>
43232
43233            <td class="entry_units">
43234            </td>
43235
43236            <td class="entry_range">
43237            </td>
43238
43239            <td class="entry_hal_version">
43240              <p>3.<wbr/>2</p>
43241            </td>
43242
43243            <td class="entry_tags">
43244            </td>
43245
43246          </tr>
43247
43248
43249          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
43250           <!-- end of entry -->
43251
43252
43253          <tr class="entry" id="controls_android.desktopEffects.faceRetouchMode">
43254            <td class="entry_name
43255             " rowspan="1">
43256              android.<wbr/>desktop<wbr/>Effects.<wbr/>face<wbr/>Retouch<wbr/>Mode
43257            </td>
43258            <td class="entry_type">
43259                <span class="entry_type_name entry_type_name_enum">byte</span>
43260
43261              <span class="entry_type_visibility"> [system as boolean]</span>
43262
43263
43264
43265
43266
43267                <ul class="entry_type_enum">
43268                  <li>
43269                    <span class="entry_type_enum_name">OFF (v3.2)</span>
43270                    <span class="entry_type_enum_notes"><p>Turn off face retouch</p></span>
43271                  </li>
43272                  <li>
43273                    <span class="entry_type_enum_name">ON (v3.2)</span>
43274                    <span class="entry_type_enum_notes"><p>Turn on face retouch.<wbr/> A strength can be set by <a href="#controls_android.desktopEffects.faceRetouchStrength">android.<wbr/>desktop<wbr/>Effects.<wbr/>face<wbr/>Retouch<wbr/>Strength</a></p></span>
43275                  </li>
43276                </ul>
43277
43278            </td> <!-- entry_type -->
43279
43280            <td class="entry_description">
43281              <p>Whether to enable face retouch effect.<wbr/></p>
43282            </td>
43283
43284            <td class="entry_units">
43285            </td>
43286
43287            <td class="entry_range">
43288            </td>
43289
43290            <td class="entry_hal_version">
43291              <p>3.<wbr/>2</p>
43292            </td>
43293
43294            <td class="entry_tags">
43295            </td>
43296
43297          </tr>
43298
43299
43300          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
43301           <!-- end of entry -->
43302
43303
43304          <tr class="entry" id="controls_android.desktopEffects.faceRetouchStrength">
43305            <td class="entry_name
43306             " rowspan="1">
43307              android.<wbr/>desktop<wbr/>Effects.<wbr/>face<wbr/>Retouch<wbr/>Strength
43308            </td>
43309            <td class="entry_type">
43310                <span class="entry_type_name">byte</span>
43311
43312              <span class="entry_type_visibility"> [system]</span>
43313
43314
43315
43316
43317
43318
43319            </td> <!-- entry_type -->
43320
43321            <td class="entry_description">
43322              <p>Control the strength of face retouch applied to the frames.<wbr/> If
43323<a href="#controls_android.desktopEffects.faceRetouchMode">android.<wbr/>desktop<wbr/>Effects.<wbr/>face<wbr/>Retouch<wbr/>Mode</a> in ON without a faceRetouchStrength,<wbr/>
43324a default will be set by the camera device.<wbr/></p>
43325            </td>
43326
43327            <td class="entry_units">
43328              1-100; 100 is maximum strength.<wbr/>
43329            </td>
43330
43331            <td class="entry_range">
43332            </td>
43333
43334            <td class="entry_hal_version">
43335              <p>3.<wbr/>2</p>
43336            </td>
43337
43338            <td class="entry_tags">
43339            </td>
43340
43341          </tr>
43342
43343
43344          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
43345           <!-- end of entry -->
43346
43347
43348          <tr class="entry" id="controls_android.desktopEffects.portraitRelightMode">
43349            <td class="entry_name
43350             " rowspan="1">
43351              android.<wbr/>desktop<wbr/>Effects.<wbr/>portrait<wbr/>Relight<wbr/>Mode
43352            </td>
43353            <td class="entry_type">
43354                <span class="entry_type_name entry_type_name_enum">byte</span>
43355
43356              <span class="entry_type_visibility"> [system as boolean]</span>
43357
43358
43359
43360
43361
43362                <ul class="entry_type_enum">
43363                  <li>
43364                    <span class="entry_type_enum_name">OFF (v3.2)</span>
43365                    <span class="entry_type_enum_notes"><p>Do not use portrait relight</p></span>
43366                  </li>
43367                  <li>
43368                    <span class="entry_type_enum_name">ON (v3.2)</span>
43369                    <span class="entry_type_enum_notes"><p>Use portrait relight</p></span>
43370                  </li>
43371                </ul>
43372
43373            </td> <!-- entry_type -->
43374
43375            <td class="entry_description">
43376              <p>Whether to enable portrait relighting effect.<wbr/></p>
43377            </td>
43378
43379            <td class="entry_units">
43380            </td>
43381
43382            <td class="entry_range">
43383            </td>
43384
43385            <td class="entry_hal_version">
43386              <p>3.<wbr/>2</p>
43387            </td>
43388
43389            <td class="entry_tags">
43390            </td>
43391
43392          </tr>
43393
43394
43395          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
43396           <!-- end of entry -->
43397
43398
43399
43400      <!-- end of kind -->
43401      </tbody>
43402
43403  <!-- end of section -->
43404<!-- </namespace> -->
43405  </table>
43406
43407  <div class="tags" id="tag_index">
43408    <h2>Tags</h2>
43409    <ul>
43410      <li id="tag_BC">BC -
43411        Needed for backwards compatibility with old Java API
43412
43413        <ul class="tags_entries">
43414          <li><a href="#controls_android.control.aeAntibandingMode">android.control.aeAntibandingMode</a> (controls)</li>
43415          <li><a href="#controls_android.control.aeExposureCompensation">android.control.aeExposureCompensation</a> (controls)</li>
43416          <li><a href="#controls_android.control.aeLock">android.control.aeLock</a> (controls)</li>
43417          <li><a href="#controls_android.control.aeMode">android.control.aeMode</a> (controls)</li>
43418          <li><a href="#controls_android.control.aeRegions">android.control.aeRegions</a> (controls)</li>
43419          <li><a href="#controls_android.control.aeTargetFpsRange">android.control.aeTargetFpsRange</a> (controls)</li>
43420          <li><a href="#controls_android.control.aePrecaptureTrigger">android.control.aePrecaptureTrigger</a> (controls)</li>
43421          <li><a href="#controls_android.control.afMode">android.control.afMode</a> (controls)</li>
43422          <li><a href="#controls_android.control.afRegions">android.control.afRegions</a> (controls)</li>
43423          <li><a href="#controls_android.control.afTrigger">android.control.afTrigger</a> (controls)</li>
43424          <li><a href="#controls_android.control.awbLock">android.control.awbLock</a> (controls)</li>
43425          <li><a href="#controls_android.control.awbMode">android.control.awbMode</a> (controls)</li>
43426          <li><a href="#controls_android.control.awbRegions">android.control.awbRegions</a> (controls)</li>
43427          <li><a href="#controls_android.control.captureIntent">android.control.captureIntent</a> (controls)</li>
43428          <li><a href="#controls_android.control.effectMode">android.control.effectMode</a> (controls)</li>
43429          <li><a href="#controls_android.control.mode">android.control.mode</a> (controls)</li>
43430          <li><a href="#controls_android.control.sceneMode">android.control.sceneMode</a> (controls)</li>
43431          <li><a href="#controls_android.control.videoStabilizationMode">android.control.videoStabilizationMode</a> (controls)</li>
43432          <li><a href="#static_android.control.aeAvailableAntibandingModes">android.control.aeAvailableAntibandingModes</a> (static)</li>
43433          <li><a href="#static_android.control.aeAvailableModes">android.control.aeAvailableModes</a> (static)</li>
43434          <li><a href="#static_android.control.aeAvailableTargetFpsRanges">android.control.aeAvailableTargetFpsRanges</a> (static)</li>
43435          <li><a href="#static_android.control.aeCompensationRange">android.control.aeCompensationRange</a> (static)</li>
43436          <li><a href="#static_android.control.aeCompensationStep">android.control.aeCompensationStep</a> (static)</li>
43437          <li><a href="#static_android.control.afAvailableModes">android.control.afAvailableModes</a> (static)</li>
43438          <li><a href="#static_android.control.availableEffects">android.control.availableEffects</a> (static)</li>
43439          <li><a href="#static_android.control.availableSceneModes">android.control.availableSceneModes</a> (static)</li>
43440          <li><a href="#static_android.control.availableVideoStabilizationModes">android.control.availableVideoStabilizationModes</a> (static)</li>
43441          <li><a href="#static_android.control.awbAvailableModes">android.control.awbAvailableModes</a> (static)</li>
43442          <li><a href="#static_android.control.maxRegions">android.control.maxRegions</a> (static)</li>
43443          <li><a href="#static_android.control.sceneModeOverrides">android.control.sceneModeOverrides</a> (static)</li>
43444          <li><a href="#static_android.control.aeLockAvailable">android.control.aeLockAvailable</a> (static)</li>
43445          <li><a href="#static_android.control.awbLockAvailable">android.control.awbLockAvailable</a> (static)</li>
43446          <li><a href="#controls_android.flash.mode">android.flash.mode</a> (controls)</li>
43447          <li><a href="#static_android.flash.info.available">android.flash.info.available</a> (static)</li>
43448          <li><a href="#controls_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a> (controls)</li>
43449          <li><a href="#controls_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a> (controls)</li>
43450          <li><a href="#controls_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a> (controls)</li>
43451          <li><a href="#controls_android.jpeg.orientation">android.jpeg.orientation</a> (controls)</li>
43452          <li><a href="#controls_android.jpeg.quality">android.jpeg.quality</a> (controls)</li>
43453          <li><a href="#controls_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a> (controls)</li>
43454          <li><a href="#controls_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a> (controls)</li>
43455          <li><a href="#static_android.jpeg.availableThumbnailSizes">android.jpeg.availableThumbnailSizes</a> (static)</li>
43456          <li><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a> (controls)</li>
43457          <li><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a> (static)</li>
43458          <li><a href="#dynamic_android.lens.focusRange">android.lens.focusRange</a> (dynamic)</li>
43459          <li><a href="#static_android.request.maxNumOutputStreams">android.request.maxNumOutputStreams</a> (static)</li>
43460          <li><a href="#controls_android.scaler.cropRegion">android.scaler.cropRegion</a> (controls)</li>
43461          <li><a href="#static_android.scaler.availableFormats">android.scaler.availableFormats</a> (static)</li>
43462          <li><a href="#static_android.scaler.availableJpegMinDurations">android.scaler.availableJpegMinDurations</a> (static)</li>
43463          <li><a href="#static_android.scaler.availableJpegSizes">android.scaler.availableJpegSizes</a> (static)</li>
43464          <li><a href="#static_android.scaler.availableMaxDigitalZoom">android.scaler.availableMaxDigitalZoom</a> (static)</li>
43465          <li><a href="#static_android.scaler.availableProcessedMinDurations">android.scaler.availableProcessedMinDurations</a> (static)</li>
43466          <li><a href="#static_android.scaler.availableProcessedSizes">android.scaler.availableProcessedSizes</a> (static)</li>
43467          <li><a href="#static_android.scaler.availableRawMinDurations">android.scaler.availableRawMinDurations</a> (static)</li>
43468          <li><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a> (static)</li>
43469          <li><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a> (static)</li>
43470          <li><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a> (static)</li>
43471          <li><a href="#static_android.sensor.orientation">android.sensor.orientation</a> (static)</li>
43472          <li><a href="#dynamic_android.sensor.timestamp">android.sensor.timestamp</a> (dynamic)</li>
43473          <li><a href="#controls_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a> (controls)</li>
43474          <li><a href="#static_android.statistics.info.maxFaceCount">android.statistics.info.maxFaceCount</a> (static)</li>
43475          <li><a href="#dynamic_android.statistics.faceIds">android.statistics.faceIds</a> (dynamic)</li>
43476          <li><a href="#dynamic_android.statistics.faceLandmarks">android.statistics.faceLandmarks</a> (dynamic)</li>
43477          <li><a href="#dynamic_android.statistics.faceRectangles">android.statistics.faceRectangles</a> (dynamic)</li>
43478          <li><a href="#dynamic_android.statistics.faceScores">android.statistics.faceScores</a> (dynamic)</li>
43479          <li><a href="#dynamic_android.lens.focalLength">android.lens.focalLength</a> (dynamic)</li>
43480          <li><a href="#dynamic_android.lens.focusDistance">android.lens.focusDistance</a> (dynamic)</li>
43481        </ul>
43482      </li> <!-- tag_BC -->
43483      <li id="tag_V1">V1 -
43484        New features for first camera 2 release (API1)
43485
43486        <ul class="tags_entries">
43487          <li><a href="#static_android.colorCorrection.availableAberrationModes">android.colorCorrection.availableAberrationModes</a> (static)</li>
43488          <li><a href="#static_android.control.availableHighSpeedVideoConfigurations">android.control.availableHighSpeedVideoConfigurations</a> (static)</li>
43489          <li><a href="#static_android.control.availableHighSpeedVideoConfigurationsMaximumResolution">android.control.availableHighSpeedVideoConfigurationsMaximumResolution</a> (static)</li>
43490          <li><a href="#controls_android.edge.mode">android.edge.mode</a> (controls)</li>
43491          <li><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a> (static)</li>
43492          <li><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a> (controls)</li>
43493          <li><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a> (static)</li>
43494          <li><a href="#controls_android.lens.aperture">android.lens.aperture</a> (controls)</li>
43495          <li><a href="#controls_android.lens.filterDensity">android.lens.filterDensity</a> (controls)</li>
43496          <li><a href="#controls_android.lens.focalLength">android.lens.focalLength</a> (controls)</li>
43497          <li><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a> (controls)</li>
43498          <li><a href="#controls_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a> (controls)</li>
43499          <li><a href="#static_android.lens.info.availableApertures">android.lens.info.availableApertures</a> (static)</li>
43500          <li><a href="#static_android.lens.info.availableFilterDensities">android.lens.info.availableFilterDensities</a> (static)</li>
43501          <li><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a> (static)</li>
43502          <li><a href="#static_android.lens.info.availableOpticalStabilization">android.lens.info.availableOpticalStabilization</a> (static)</li>
43503          <li><a href="#static_android.lens.info.minimumFocusDistance">android.lens.info.minimumFocusDistance</a> (static)</li>
43504          <li><a href="#static_android.lens.info.shadingMapSize">android.lens.info.shadingMapSize</a> (static)</li>
43505          <li><a href="#static_android.lens.info.focusDistanceCalibration">android.lens.info.focusDistanceCalibration</a> (static)</li>
43506          <li><a href="#dynamic_android.lens.state">android.lens.state</a> (dynamic)</li>
43507          <li><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a> (controls)</li>
43508          <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a> (static)</li>
43509          <li><a href="#controls_android.request.id">android.request.id</a> (controls)</li>
43510          <li><a href="#static_android.scaler.availableMinFrameDurations">android.scaler.availableMinFrameDurations</a> (static)</li>
43511          <li><a href="#static_android.scaler.availableStallDurations">android.scaler.availableStallDurations</a> (static)</li>
43512          <li><a href="#controls_android.sensor.exposureTime">android.sensor.exposureTime</a> (controls)</li>
43513          <li><a href="#controls_android.sensor.frameDuration">android.sensor.frameDuration</a> (controls)</li>
43514          <li><a href="#controls_android.sensor.sensitivity">android.sensor.sensitivity</a> (controls)</li>
43515          <li><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a> (static)</li>
43516          <li><a href="#static_android.sensor.info.exposureTimeRange">android.sensor.info.exposureTimeRange</a> (static)</li>
43517          <li><a href="#static_android.sensor.info.maxFrameDuration">android.sensor.info.maxFrameDuration</a> (static)</li>
43518          <li><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a> (static)</li>
43519          <li><a href="#static_android.sensor.info.timestampSource">android.sensor.info.timestampSource</a> (static)</li>
43520          <li><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a> (static)</li>
43521          <li><a href="#dynamic_android.sensor.rollingShutterSkew">android.sensor.rollingShutterSkew</a> (dynamic)</li>
43522          <li><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a> (controls)</li>
43523          <li><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a> (static)</li>
43524          <li><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a> (dynamic)</li>
43525          <li><a href="#dynamic_android.sync.frameNumber">android.sync.frameNumber</a> (dynamic)</li>
43526          <li><a href="#static_android.sync.maxLatency">android.sync.maxLatency</a> (static)</li>
43527          <li><a href="#static_android.distortionCorrection.availableModes">android.distortionCorrection.availableModes</a> (static)</li>
43528          <li><a href="#dynamic_android.edge.mode">android.edge.mode</a> (dynamic)</li>
43529          <li><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a> (dynamic)</li>
43530          <li><a href="#dynamic_android.lens.aperture">android.lens.aperture</a> (dynamic)</li>
43531          <li><a href="#dynamic_android.lens.filterDensity">android.lens.filterDensity</a> (dynamic)</li>
43532          <li><a href="#dynamic_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a> (dynamic)</li>
43533          <li><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a> (dynamic)</li>
43534        </ul>
43535      </li> <!-- tag_V1 -->
43536      <li id="tag_RAW">RAW -
43537        Needed for useful RAW image processing and DNG file support
43538
43539        <ul class="tags_entries">
43540          <li><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a> (controls)</li>
43541          <li><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a> (static)</li>
43542          <li><a href="#static_android.sensor.info.activeArraySize">android.sensor.info.activeArraySize</a> (static)</li>
43543          <li><a href="#static_android.sensor.info.colorFilterArrangement">android.sensor.info.colorFilterArrangement</a> (static)</li>
43544          <li><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a> (static)</li>
43545          <li><a href="#static_android.sensor.info.whiteLevel">android.sensor.info.whiteLevel</a> (static)</li>
43546          <li><a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.sensor.info.preCorrectionActiveArraySize</a> (static)</li>
43547          <li><a href="#static_android.sensor.info.activeArraySizeMaximumResolution">android.sensor.info.activeArraySizeMaximumResolution</a> (static)</li>
43548          <li><a href="#static_android.sensor.info.pixelArraySizeMaximumResolution">android.sensor.info.pixelArraySizeMaximumResolution</a> (static)</li>
43549          <li><a href="#static_android.sensor.info.preCorrectionActiveArraySizeMaximumResolution">android.sensor.info.preCorrectionActiveArraySizeMaximumResolution</a> (static)</li>
43550          <li><a href="#static_android.sensor.referenceIlluminant1">android.sensor.referenceIlluminant1</a> (static)</li>
43551          <li><a href="#static_android.sensor.referenceIlluminant2">android.sensor.referenceIlluminant2</a> (static)</li>
43552          <li><a href="#static_android.sensor.calibrationTransform1">android.sensor.calibrationTransform1</a> (static)</li>
43553          <li><a href="#static_android.sensor.calibrationTransform2">android.sensor.calibrationTransform2</a> (static)</li>
43554          <li><a href="#static_android.sensor.colorTransform1">android.sensor.colorTransform1</a> (static)</li>
43555          <li><a href="#static_android.sensor.colorTransform2">android.sensor.colorTransform2</a> (static)</li>
43556          <li><a href="#static_android.sensor.forwardMatrix1">android.sensor.forwardMatrix1</a> (static)</li>
43557          <li><a href="#static_android.sensor.forwardMatrix2">android.sensor.forwardMatrix2</a> (static)</li>
43558          <li><a href="#static_android.sensor.blackLevelPattern">android.sensor.blackLevelPattern</a> (static)</li>
43559          <li><a href="#static_android.sensor.profileHueSatMapDimensions">android.sensor.profileHueSatMapDimensions</a> (static)</li>
43560          <li><a href="#dynamic_android.sensor.neutralColorPoint">android.sensor.neutralColorPoint</a> (dynamic)</li>
43561          <li><a href="#dynamic_android.sensor.noiseProfile">android.sensor.noiseProfile</a> (dynamic)</li>
43562          <li><a href="#dynamic_android.sensor.profileHueSatMap">android.sensor.profileHueSatMap</a> (dynamic)</li>
43563          <li><a href="#dynamic_android.sensor.profileToneCurve">android.sensor.profileToneCurve</a> (dynamic)</li>
43564          <li><a href="#dynamic_android.sensor.greenSplit">android.sensor.greenSplit</a> (dynamic)</li>
43565          <li><a href="#dynamic_android.sensor.dynamicBlackLevel">android.sensor.dynamicBlackLevel</a> (dynamic)</li>
43566          <li><a href="#dynamic_android.sensor.dynamicWhiteLevel">android.sensor.dynamicWhiteLevel</a> (dynamic)</li>
43567          <li><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a> (controls)</li>
43568          <li><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a> (static)</li>
43569          <li><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a> (dynamic)</li>
43570          <li><a href="#controls_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a> (controls)</li>
43571          <li><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a> (dynamic)</li>
43572        </ul>
43573      </li> <!-- tag_RAW -->
43574      <li id="tag_HAL2">HAL2 -
43575        Entry is only used by camera device legacy HAL 2.x
43576
43577        <ul class="tags_entries">
43578          <li><a href="#controls_android.request.inputStreams">android.request.inputStreams</a> (controls)</li>
43579          <li><a href="#controls_android.request.outputStreams">android.request.outputStreams</a> (controls)</li>
43580          <li><a href="#controls_android.request.type">android.request.type</a> (controls)</li>
43581          <li><a href="#static_android.request.maxNumReprocessStreams">android.request.maxNumReprocessStreams</a> (static)</li>
43582          <li><a href="#controls_android.blackLevel.lock">android.blackLevel.lock</a> (controls)</li>
43583        </ul>
43584      </li> <!-- tag_HAL2 -->
43585      <li id="tag_FULL">FULL -
43586        Entry is required for full hardware level devices, and optional for other hardware levels
43587
43588        <ul class="tags_entries">
43589          <li><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a> (static)</li>
43590        </ul>
43591      </li> <!-- tag_FULL -->
43592      <li id="tag_DEPTH">DEPTH -
43593        Entry is required for the depth capability.
43594
43595        <ul class="tags_entries">
43596          <li><a href="#static_android.lens.poseRotation">android.lens.poseRotation</a> (static)</li>
43597          <li><a href="#static_android.lens.poseTranslation">android.lens.poseTranslation</a> (static)</li>
43598          <li><a href="#static_android.lens.intrinsicCalibration">android.lens.intrinsicCalibration</a> (static)</li>
43599          <li><a href="#static_android.lens.radialDistortion">android.lens.radialDistortion</a> (static)</li>
43600          <li><a href="#static_android.lens.distortion">android.lens.distortion</a> (static)</li>
43601          <li><a href="#static_android.lens.distortionMaximumResolution">android.lens.distortionMaximumResolution</a> (static)</li>
43602          <li><a href="#static_android.lens.intrinsicCalibrationMaximumResolution">android.lens.intrinsicCalibrationMaximumResolution</a> (static)</li>
43603          <li><a href="#static_android.depth.maxDepthSamples">android.depth.maxDepthSamples</a> (static)</li>
43604          <li><a href="#static_android.depth.availableDepthStreamConfigurations">android.depth.availableDepthStreamConfigurations</a> (static)</li>
43605          <li><a href="#static_android.depth.availableDepthMinFrameDurations">android.depth.availableDepthMinFrameDurations</a> (static)</li>
43606          <li><a href="#static_android.depth.availableDepthStallDurations">android.depth.availableDepthStallDurations</a> (static)</li>
43607          <li><a href="#static_android.depth.availableDynamicDepthStreamConfigurations">android.depth.availableDynamicDepthStreamConfigurations</a> (static)</li>
43608          <li><a href="#static_android.depth.availableDynamicDepthMinFrameDurations">android.depth.availableDynamicDepthMinFrameDurations</a> (static)</li>
43609          <li><a href="#static_android.depth.availableDynamicDepthStallDurations">android.depth.availableDynamicDepthStallDurations</a> (static)</li>
43610          <li><a href="#static_android.depth.availableDepthStreamConfigurationsMaximumResolution">android.depth.availableDepthStreamConfigurationsMaximumResolution</a> (static)</li>
43611          <li><a href="#static_android.depth.availableDepthMinFrameDurationsMaximumResolution">android.depth.availableDepthMinFrameDurationsMaximumResolution</a> (static)</li>
43612          <li><a href="#static_android.depth.availableDepthStallDurationsMaximumResolution">android.depth.availableDepthStallDurationsMaximumResolution</a> (static)</li>
43613          <li><a href="#static_android.depth.availableDynamicDepthStreamConfigurationsMaximumResolution">android.depth.availableDynamicDepthStreamConfigurationsMaximumResolution</a> (static)</li>
43614          <li><a href="#static_android.depth.availableDynamicDepthMinFrameDurationsMaximumResolution">android.depth.availableDynamicDepthMinFrameDurationsMaximumResolution</a> (static)</li>
43615          <li><a href="#static_android.depth.availableDynamicDepthStallDurationsMaximumResolution">android.depth.availableDynamicDepthStallDurationsMaximumResolution</a> (static)</li>
43616        </ul>
43617      </li> <!-- tag_DEPTH -->
43618      <li id="tag_REPROC">REPROC -
43619        Entry is required for the YUV or PRIVATE reprocessing capability.
43620
43621        <ul class="tags_entries">
43622          <li><a href="#controls_android.edge.mode">android.edge.mode</a> (controls)</li>
43623          <li><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a> (static)</li>
43624          <li><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a> (controls)</li>
43625          <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a> (static)</li>
43626          <li><a href="#static_android.request.maxNumInputStreams">android.request.maxNumInputStreams</a> (static)</li>
43627          <li><a href="#static_android.scaler.availableInputOutputFormatsMap">android.scaler.availableInputOutputFormatsMap</a> (static)</li>
43628          <li><a href="#static_android.scaler.availableRecommendedInputOutputFormatsMap">android.scaler.availableRecommendedInputOutputFormatsMap</a> (static)</li>
43629          <li><a href="#static_android.scaler.availableInputOutputFormatsMapMaximumResolution">android.scaler.availableInputOutputFormatsMapMaximumResolution</a> (static)</li>
43630          <li><a href="#controls_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a> (controls)</li>
43631          <li><a href="#static_android.reprocess.maxCaptureStall">android.reprocess.maxCaptureStall</a> (static)</li>
43632          <li><a href="#static_android.distortionCorrection.availableModes">android.distortionCorrection.availableModes</a> (static)</li>
43633          <li><a href="#dynamic_android.edge.mode">android.edge.mode</a> (dynamic)</li>
43634          <li><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a> (dynamic)</li>
43635        </ul>
43636      </li> <!-- tag_REPROC -->
43637      <li id="tag_LOGICALCAMERA">LOGICALCAMERA -
43638        Entry is required for logical multi-camera capability.
43639
43640        <ul class="tags_entries">
43641          <li><a href="#static_android.logicalMultiCamera.physicalIds">android.logicalMultiCamera.physicalIds</a> (static)</li>
43642          <li><a href="#static_android.logicalMultiCamera.sensorSyncType">android.logicalMultiCamera.sensorSyncType</a> (static)</li>
43643          <li><a href="#dynamic_android.logicalMultiCamera.activePhysicalId">android.logicalMultiCamera.activePhysicalId</a> (dynamic)</li>
43644          <li><a href="#dynamic_android.logicalMultiCamera.activePhysicalSensorCropRegion">android.logicalMultiCamera.activePhysicalSensorCropRegion</a> (dynamic)</li>
43645        </ul>
43646      </li> <!-- tag_LOGICALCAMERA -->
43647      <li id="tag_HEIC">HEIC -
43648        Entry is required for devices with HEIC (High Efficiency Image Format) support.
43649
43650        <ul class="tags_entries">
43651          <li><a href="#static_android.heic.info.supported">android.heic.info.supported</a> (static)</li>
43652          <li><a href="#static_android.heic.info.maxJpegAppSegmentsCount">android.heic.info.maxJpegAppSegmentsCount</a> (static)</li>
43653          <li><a href="#static_android.heic.availableHeicStreamConfigurations">android.heic.availableHeicStreamConfigurations</a> (static)</li>
43654          <li><a href="#static_android.heic.availableHeicMinFrameDurations">android.heic.availableHeicMinFrameDurations</a> (static)</li>
43655          <li><a href="#static_android.heic.availableHeicStallDurations">android.heic.availableHeicStallDurations</a> (static)</li>
43656          <li><a href="#static_android.heic.availableHeicStreamConfigurationsMaximumResolution">android.heic.availableHeicStreamConfigurationsMaximumResolution</a> (static)</li>
43657          <li><a href="#static_android.heic.availableHeicMinFrameDurationsMaximumResolution">android.heic.availableHeicMinFrameDurationsMaximumResolution</a> (static)</li>
43658          <li><a href="#static_android.heic.availableHeicStallDurationsMaximumResolution">android.heic.availableHeicStallDurationsMaximumResolution</a> (static)</li>
43659          <li><a href="#static_android.heic.availableHeicUltraHdrStreamConfigurations">android.heic.availableHeicUltraHdrStreamConfigurations</a> (static)</li>
43660          <li><a href="#static_android.heic.availableHeicUltraHdrMinFrameDurations">android.heic.availableHeicUltraHdrMinFrameDurations</a> (static)</li>
43661          <li><a href="#static_android.heic.availableHeicUltraHdrStallDurations">android.heic.availableHeicUltraHdrStallDurations</a> (static)</li>
43662          <li><a href="#static_android.heic.availableHeicUltraHdrStreamConfigurationsMaximumResolution">android.heic.availableHeicUltraHdrStreamConfigurationsMaximumResolution</a> (static)</li>
43663          <li><a href="#static_android.heic.availableHeicUltraHdrMinFrameDurationsMaximumResolution">android.heic.availableHeicUltraHdrMinFrameDurationsMaximumResolution</a> (static)</li>
43664          <li><a href="#static_android.heic.availableHeicUltraHdrStallDurationsMaximumResolution">android.heic.availableHeicUltraHdrStallDurationsMaximumResolution</a> (static)</li>
43665        </ul>
43666      </li> <!-- tag_HEIC -->
43667      <li id="tag_FUTURE">FUTURE -
43668        Entry is  under-specified and is not required for now. This is for book-keeping purpose,
43669        do not implement or use it, it may be revised for future.
43670
43671        <ul class="tags_entries">
43672          <li><a href="#controls_android.demosaic.mode">android.demosaic.mode</a> (controls)</li>
43673          <li><a href="#controls_android.edge.strength">android.edge.strength</a> (controls)</li>
43674          <li><a href="#controls_android.flash.firingPower">android.flash.firingPower</a> (controls)</li>
43675          <li><a href="#controls_android.flash.firingTime">android.flash.firingTime</a> (controls)</li>
43676          <li><a href="#static_android.flash.info.chargeDuration">android.flash.info.chargeDuration</a> (static)</li>
43677          <li><a href="#static_android.flash.colorTemperature">android.flash.colorTemperature</a> (static)</li>
43678          <li><a href="#static_android.flash.maxEnergy">android.flash.maxEnergy</a> (static)</li>
43679          <li><a href="#dynamic_android.jpeg.size">android.jpeg.size</a> (dynamic)</li>
43680          <li><a href="#controls_android.noiseReduction.strength">android.noiseReduction.strength</a> (controls)</li>
43681          <li><a href="#controls_android.request.metadataMode">android.request.metadataMode</a> (controls)</li>
43682          <li><a href="#static_android.sensor.baseGainFactor">android.sensor.baseGainFactor</a> (static)</li>
43683          <li><a href="#dynamic_android.sensor.temperature">android.sensor.temperature</a> (dynamic)</li>
43684          <li><a href="#controls_android.shading.strength">android.shading.strength</a> (controls)</li>
43685          <li><a href="#controls_android.statistics.histogramMode">android.statistics.histogramMode</a> (controls)</li>
43686          <li><a href="#controls_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a> (controls)</li>
43687          <li><a href="#static_android.statistics.info.histogramBucketCount">android.statistics.info.histogramBucketCount</a> (static)</li>
43688          <li><a href="#static_android.statistics.info.maxHistogramCount">android.statistics.info.maxHistogramCount</a> (static)</li>
43689          <li><a href="#static_android.statistics.info.maxSharpnessMapValue">android.statistics.info.maxSharpnessMapValue</a> (static)</li>
43690          <li><a href="#static_android.statistics.info.sharpnessMapSize">android.statistics.info.sharpnessMapSize</a> (static)</li>
43691          <li><a href="#dynamic_android.statistics.histogram">android.statistics.histogram</a> (dynamic)</li>
43692          <li><a href="#dynamic_android.statistics.sharpnessMap">android.statistics.sharpnessMap</a> (dynamic)</li>
43693        </ul>
43694      </li> <!-- tag_FUTURE -->
43695    </ul>
43696  </div>
43697
43698  [ <a href="#">top</a> ]
43699
43700</body>
43701</html>
43702