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          </ul>
127        </li>
128        <li>
129          <span class="toc_kind_header">dynamic</span>
130          <ul class="toc_section">
131            <li
132            ><a href="#dynamic_android.colorCorrection.mode">android.colorCorrection.mode</a></li>
133            <li
134            ><a href="#dynamic_android.colorCorrection.transform">android.colorCorrection.transform</a></li>
135            <li
136            ><a href="#dynamic_android.colorCorrection.gains">android.colorCorrection.gains</a></li>
137            <li
138            ><a href="#dynamic_android.colorCorrection.aberrationMode">android.colorCorrection.aberrationMode</a></li>
139          </ul>
140        </li>
141        <li>
142          <span class="toc_kind_header">static</span>
143          <ul class="toc_section">
144            <li
145            ><a href="#static_android.colorCorrection.availableAberrationModes">android.colorCorrection.availableAberrationModes</a></li>
146          </ul>
147        </li>
148      </ul> <!-- toc_section -->
149    </li>
150    <li>
151      <span class="toc_section_header"><a href="#section_control">control</a></span>
152      <ul class="toc_section">
153        <li>
154          <span class="toc_kind_header">controls</span>
155          <ul class="toc_section">
156            <li
157            ><a href="#controls_android.control.aeAntibandingMode">android.control.aeAntibandingMode</a></li>
158            <li
159            ><a href="#controls_android.control.aeExposureCompensation">android.control.aeExposureCompensation</a></li>
160            <li
161            ><a href="#controls_android.control.aeLock">android.control.aeLock</a></li>
162            <li
163            ><a href="#controls_android.control.aeMode">android.control.aeMode</a></li>
164            <li
165            ><a href="#controls_android.control.aeRegions">android.control.aeRegions</a></li>
166            <li
167            ><a href="#controls_android.control.aeTargetFpsRange">android.control.aeTargetFpsRange</a></li>
168            <li
169            ><a href="#controls_android.control.aePrecaptureTrigger">android.control.aePrecaptureTrigger</a></li>
170            <li
171            ><a href="#controls_android.control.afMode">android.control.afMode</a></li>
172            <li
173            ><a href="#controls_android.control.afRegions">android.control.afRegions</a></li>
174            <li
175            ><a href="#controls_android.control.afTrigger">android.control.afTrigger</a></li>
176            <li
177            ><a href="#controls_android.control.awbLock">android.control.awbLock</a></li>
178            <li
179            ><a href="#controls_android.control.awbMode">android.control.awbMode</a></li>
180            <li
181            ><a href="#controls_android.control.awbRegions">android.control.awbRegions</a></li>
182            <li
183            ><a href="#controls_android.control.captureIntent">android.control.captureIntent</a></li>
184            <li
185            ><a href="#controls_android.control.effectMode">android.control.effectMode</a></li>
186            <li
187            ><a href="#controls_android.control.mode">android.control.mode</a></li>
188            <li
189            ><a href="#controls_android.control.sceneMode">android.control.sceneMode</a></li>
190            <li
191            ><a href="#controls_android.control.videoStabilizationMode">android.control.videoStabilizationMode</a></li>
192            <li
193            ><a href="#controls_android.control.postRawSensitivityBoost">android.control.postRawSensitivityBoost</a></li>
194            <li
195            ><a href="#controls_android.control.enableZsl">android.control.enableZsl</a></li>
196            <li
197            ><a href="#controls_android.control.extendedSceneMode">android.control.extendedSceneMode</a></li>
198            <li
199            ><a href="#controls_android.control.zoomRatio">android.control.zoomRatio</a></li>
200            <li
201            ><a href="#controls_android.control.afRegionsSet">android.control.afRegionsSet</a></li>
202            <li
203            ><a href="#controls_android.control.aeRegionsSet">android.control.aeRegionsSet</a></li>
204            <li
205            ><a href="#controls_android.control.awbRegionsSet">android.control.awbRegionsSet</a></li>
206          </ul>
207        </li>
208        <li>
209          <span class="toc_kind_header">static</span>
210          <ul class="toc_section">
211            <li
212            ><a href="#static_android.control.aeAvailableAntibandingModes">android.control.aeAvailableAntibandingModes</a></li>
213            <li
214            ><a href="#static_android.control.aeAvailableModes">android.control.aeAvailableModes</a></li>
215            <li
216            ><a href="#static_android.control.aeAvailableTargetFpsRanges">android.control.aeAvailableTargetFpsRanges</a></li>
217            <li
218            ><a href="#static_android.control.aeCompensationRange">android.control.aeCompensationRange</a></li>
219            <li
220            ><a href="#static_android.control.aeCompensationStep">android.control.aeCompensationStep</a></li>
221            <li
222            ><a href="#static_android.control.afAvailableModes">android.control.afAvailableModes</a></li>
223            <li
224            ><a href="#static_android.control.availableEffects">android.control.availableEffects</a></li>
225            <li
226            ><a href="#static_android.control.availableSceneModes">android.control.availableSceneModes</a></li>
227            <li
228            ><a href="#static_android.control.availableVideoStabilizationModes">android.control.availableVideoStabilizationModes</a></li>
229            <li
230            ><a href="#static_android.control.awbAvailableModes">android.control.awbAvailableModes</a></li>
231            <li
232            ><a href="#static_android.control.maxRegions">android.control.maxRegions</a></li>
233            <li
234            ><a href="#static_android.control.maxRegionsAe">android.control.maxRegionsAe</a></li>
235            <li
236            ><a href="#static_android.control.maxRegionsAwb">android.control.maxRegionsAwb</a></li>
237            <li
238            ><a href="#static_android.control.maxRegionsAf">android.control.maxRegionsAf</a></li>
239            <li
240            ><a href="#static_android.control.sceneModeOverrides">android.control.sceneModeOverrides</a></li>
241            <li
242            ><a href="#static_android.control.availableHighSpeedVideoConfigurations">android.control.availableHighSpeedVideoConfigurations</a></li>
243            <li
244            ><a href="#static_android.control.aeLockAvailable">android.control.aeLockAvailable</a></li>
245            <li
246            ><a href="#static_android.control.awbLockAvailable">android.control.awbLockAvailable</a></li>
247            <li
248            ><a href="#static_android.control.availableModes">android.control.availableModes</a></li>
249            <li
250            ><a href="#static_android.control.postRawSensitivityBoostRange">android.control.postRawSensitivityBoostRange</a></li>
251            <li
252            ><a href="#static_android.control.availableExtendedSceneModeMaxSizes">android.control.availableExtendedSceneModeMaxSizes</a></li>
253            <li
254            ><a href="#static_android.control.availableExtendedSceneModeZoomRatioRanges">android.control.availableExtendedSceneModeZoomRatioRanges</a></li>
255            <li
256            ><a href="#static_android.control.availableExtendedSceneModeCapabilities">android.control.availableExtendedSceneModeCapabilities</a></li>
257            <li
258            ><a href="#static_android.control.zoomRatioRange">android.control.zoomRatioRange</a></li>
259            <li
260            ><a href="#static_android.control.availableHighSpeedVideoConfigurationsMaximumResolution">android.control.availableHighSpeedVideoConfigurationsMaximumResolution</a></li>
261          </ul>
262        </li>
263        <li>
264          <span class="toc_kind_header">dynamic</span>
265          <ul class="toc_section">
266            <li
267                class="toc_deprecated"
268            ><a href="#dynamic_android.control.aePrecaptureId">android.control.aePrecaptureId</a></li>
269            <li
270            ><a href="#dynamic_android.control.aeAntibandingMode">android.control.aeAntibandingMode</a></li>
271            <li
272            ><a href="#dynamic_android.control.aeExposureCompensation">android.control.aeExposureCompensation</a></li>
273            <li
274            ><a href="#dynamic_android.control.aeLock">android.control.aeLock</a></li>
275            <li
276            ><a href="#dynamic_android.control.aeMode">android.control.aeMode</a></li>
277            <li
278            ><a href="#dynamic_android.control.aeRegions">android.control.aeRegions</a></li>
279            <li
280            ><a href="#dynamic_android.control.aeTargetFpsRange">android.control.aeTargetFpsRange</a></li>
281            <li
282            ><a href="#dynamic_android.control.aePrecaptureTrigger">android.control.aePrecaptureTrigger</a></li>
283            <li
284            ><a href="#dynamic_android.control.aeState">android.control.aeState</a></li>
285            <li
286            ><a href="#dynamic_android.control.afMode">android.control.afMode</a></li>
287            <li
288            ><a href="#dynamic_android.control.afRegions">android.control.afRegions</a></li>
289            <li
290            ><a href="#dynamic_android.control.afTrigger">android.control.afTrigger</a></li>
291            <li
292            ><a href="#dynamic_android.control.afState">android.control.afState</a></li>
293            <li
294                class="toc_deprecated"
295            ><a href="#dynamic_android.control.afTriggerId">android.control.afTriggerId</a></li>
296            <li
297            ><a href="#dynamic_android.control.awbLock">android.control.awbLock</a></li>
298            <li
299            ><a href="#dynamic_android.control.awbMode">android.control.awbMode</a></li>
300            <li
301            ><a href="#dynamic_android.control.awbRegions">android.control.awbRegions</a></li>
302            <li
303            ><a href="#dynamic_android.control.captureIntent">android.control.captureIntent</a></li>
304            <li
305            ><a href="#dynamic_android.control.awbState">android.control.awbState</a></li>
306            <li
307            ><a href="#dynamic_android.control.effectMode">android.control.effectMode</a></li>
308            <li
309            ><a href="#dynamic_android.control.mode">android.control.mode</a></li>
310            <li
311            ><a href="#dynamic_android.control.sceneMode">android.control.sceneMode</a></li>
312            <li
313            ><a href="#dynamic_android.control.videoStabilizationMode">android.control.videoStabilizationMode</a></li>
314            <li
315            ><a href="#dynamic_android.control.postRawSensitivityBoost">android.control.postRawSensitivityBoost</a></li>
316            <li
317            ><a href="#dynamic_android.control.enableZsl">android.control.enableZsl</a></li>
318            <li
319            ><a href="#dynamic_android.control.afSceneChange">android.control.afSceneChange</a></li>
320            <li
321            ><a href="#dynamic_android.control.extendedSceneMode">android.control.extendedSceneMode</a></li>
322            <li
323            ><a href="#dynamic_android.control.zoomRatio">android.control.zoomRatio</a></li>
324          </ul>
325        </li>
326      </ul> <!-- toc_section -->
327    </li>
328    <li>
329      <span class="toc_section_header"><a href="#section_demosaic">demosaic</a></span>
330      <ul class="toc_section">
331        <li>
332          <span class="toc_kind_header">controls</span>
333          <ul class="toc_section">
334            <li
335            ><a href="#controls_android.demosaic.mode">android.demosaic.mode</a></li>
336          </ul>
337        </li>
338      </ul> <!-- toc_section -->
339    </li>
340    <li>
341      <span class="toc_section_header"><a href="#section_edge">edge</a></span>
342      <ul class="toc_section">
343        <li>
344          <span class="toc_kind_header">controls</span>
345          <ul class="toc_section">
346            <li
347            ><a href="#controls_android.edge.mode">android.edge.mode</a></li>
348            <li
349            ><a href="#controls_android.edge.strength">android.edge.strength</a></li>
350          </ul>
351        </li>
352        <li>
353          <span class="toc_kind_header">static</span>
354          <ul class="toc_section">
355            <li
356            ><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a></li>
357          </ul>
358        </li>
359        <li>
360          <span class="toc_kind_header">dynamic</span>
361          <ul class="toc_section">
362            <li
363            ><a href="#dynamic_android.edge.mode">android.edge.mode</a></li>
364          </ul>
365        </li>
366      </ul> <!-- toc_section -->
367    </li>
368    <li>
369      <span class="toc_section_header"><a href="#section_flash">flash</a></span>
370      <ul class="toc_section">
371        <li>
372          <span class="toc_kind_header">controls</span>
373          <ul class="toc_section">
374            <li
375            ><a href="#controls_android.flash.firingPower">android.flash.firingPower</a></li>
376            <li
377            ><a href="#controls_android.flash.firingTime">android.flash.firingTime</a></li>
378            <li
379            ><a href="#controls_android.flash.mode">android.flash.mode</a></li>
380          </ul>
381        </li>
382        <li>
383          <span class="toc_kind_header">static</span>
384          <ul class="toc_section">
385
386            <li
387            ><a href="#static_android.flash.info.available">android.flash.info.available</a></li>
388            <li
389            ><a href="#static_android.flash.info.chargeDuration">android.flash.info.chargeDuration</a></li>
390
391            <li
392            ><a href="#static_android.flash.colorTemperature">android.flash.colorTemperature</a></li>
393            <li
394            ><a href="#static_android.flash.maxEnergy">android.flash.maxEnergy</a></li>
395          </ul>
396        </li>
397        <li>
398          <span class="toc_kind_header">dynamic</span>
399          <ul class="toc_section">
400            <li
401            ><a href="#dynamic_android.flash.firingPower">android.flash.firingPower</a></li>
402            <li
403            ><a href="#dynamic_android.flash.firingTime">android.flash.firingTime</a></li>
404            <li
405            ><a href="#dynamic_android.flash.mode">android.flash.mode</a></li>
406            <li
407            ><a href="#dynamic_android.flash.state">android.flash.state</a></li>
408          </ul>
409        </li>
410      </ul> <!-- toc_section -->
411    </li>
412    <li>
413      <span class="toc_section_header"><a href="#section_hotPixel">hotPixel</a></span>
414      <ul class="toc_section">
415        <li>
416          <span class="toc_kind_header">controls</span>
417          <ul class="toc_section">
418            <li
419            ><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a></li>
420          </ul>
421        </li>
422        <li>
423          <span class="toc_kind_header">static</span>
424          <ul class="toc_section">
425            <li
426            ><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a></li>
427          </ul>
428        </li>
429        <li>
430          <span class="toc_kind_header">dynamic</span>
431          <ul class="toc_section">
432            <li
433            ><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a></li>
434          </ul>
435        </li>
436      </ul> <!-- toc_section -->
437    </li>
438    <li>
439      <span class="toc_section_header"><a href="#section_jpeg">jpeg</a></span>
440      <ul class="toc_section">
441        <li>
442          <span class="toc_kind_header">controls</span>
443          <ul class="toc_section">
444            <li
445            ><a href="#controls_android.jpeg.gpsLocation">android.jpeg.gpsLocation</a></li>
446            <li
447            ><a href="#controls_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a></li>
448            <li
449            ><a href="#controls_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a></li>
450            <li
451            ><a href="#controls_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a></li>
452            <li
453            ><a href="#controls_android.jpeg.orientation">android.jpeg.orientation</a></li>
454            <li
455            ><a href="#controls_android.jpeg.quality">android.jpeg.quality</a></li>
456            <li
457            ><a href="#controls_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a></li>
458            <li
459            ><a href="#controls_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a></li>
460          </ul>
461        </li>
462        <li>
463          <span class="toc_kind_header">static</span>
464          <ul class="toc_section">
465            <li
466            ><a href="#static_android.jpeg.availableThumbnailSizes">android.jpeg.availableThumbnailSizes</a></li>
467            <li
468            ><a href="#static_android.jpeg.maxSize">android.jpeg.maxSize</a></li>
469          </ul>
470        </li>
471        <li>
472          <span class="toc_kind_header">dynamic</span>
473          <ul class="toc_section">
474            <li
475            ><a href="#dynamic_android.jpeg.gpsLocation">android.jpeg.gpsLocation</a></li>
476            <li
477            ><a href="#dynamic_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a></li>
478            <li
479            ><a href="#dynamic_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a></li>
480            <li
481            ><a href="#dynamic_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a></li>
482            <li
483            ><a href="#dynamic_android.jpeg.orientation">android.jpeg.orientation</a></li>
484            <li
485            ><a href="#dynamic_android.jpeg.quality">android.jpeg.quality</a></li>
486            <li
487            ><a href="#dynamic_android.jpeg.size">android.jpeg.size</a></li>
488            <li
489            ><a href="#dynamic_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a></li>
490            <li
491            ><a href="#dynamic_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a></li>
492          </ul>
493        </li>
494      </ul> <!-- toc_section -->
495    </li>
496    <li>
497      <span class="toc_section_header"><a href="#section_lens">lens</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.lens.aperture">android.lens.aperture</a></li>
504            <li
505            ><a href="#controls_android.lens.filterDensity">android.lens.filterDensity</a></li>
506            <li
507            ><a href="#controls_android.lens.focalLength">android.lens.focalLength</a></li>
508            <li
509            ><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a></li>
510            <li
511            ><a href="#controls_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a></li>
512          </ul>
513        </li>
514        <li>
515          <span class="toc_kind_header">static</span>
516          <ul class="toc_section">
517
518            <li
519            ><a href="#static_android.lens.info.availableApertures">android.lens.info.availableApertures</a></li>
520            <li
521            ><a href="#static_android.lens.info.availableFilterDensities">android.lens.info.availableFilterDensities</a></li>
522            <li
523            ><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a></li>
524            <li
525            ><a href="#static_android.lens.info.availableOpticalStabilization">android.lens.info.availableOpticalStabilization</a></li>
526            <li
527            ><a href="#static_android.lens.info.hyperfocalDistance">android.lens.info.hyperfocalDistance</a></li>
528            <li
529            ><a href="#static_android.lens.info.minimumFocusDistance">android.lens.info.minimumFocusDistance</a></li>
530            <li
531            ><a href="#static_android.lens.info.shadingMapSize">android.lens.info.shadingMapSize</a></li>
532            <li
533            ><a href="#static_android.lens.info.focusDistanceCalibration">android.lens.info.focusDistanceCalibration</a></li>
534
535            <li
536            ><a href="#static_android.lens.facing">android.lens.facing</a></li>
537            <li
538            ><a href="#static_android.lens.poseRotation">android.lens.poseRotation</a></li>
539            <li
540            ><a href="#static_android.lens.poseTranslation">android.lens.poseTranslation</a></li>
541            <li
542            ><a href="#static_android.lens.intrinsicCalibration">android.lens.intrinsicCalibration</a></li>
543            <li
544                class="toc_deprecated"
545            ><a href="#static_android.lens.radialDistortion">android.lens.radialDistortion</a></li>
546            <li
547            ><a href="#static_android.lens.poseReference">android.lens.poseReference</a></li>
548            <li
549            ><a href="#static_android.lens.distortion">android.lens.distortion</a></li>
550            <li
551            ><a href="#static_android.lens.distortionMaximumResolution">android.lens.distortionMaximumResolution</a></li>
552            <li
553            ><a href="#static_android.lens.intrinsicCalibrationMaximumResolution">android.lens.intrinsicCalibrationMaximumResolution</a></li>
554          </ul>
555        </li>
556        <li>
557          <span class="toc_kind_header">dynamic</span>
558          <ul class="toc_section">
559            <li
560            ><a href="#dynamic_android.lens.aperture">android.lens.aperture</a></li>
561            <li
562            ><a href="#dynamic_android.lens.filterDensity">android.lens.filterDensity</a></li>
563            <li
564            ><a href="#dynamic_android.lens.focalLength">android.lens.focalLength</a></li>
565            <li
566            ><a href="#dynamic_android.lens.focusDistance">android.lens.focusDistance</a></li>
567            <li
568            ><a href="#dynamic_android.lens.focusRange">android.lens.focusRange</a></li>
569            <li
570            ><a href="#dynamic_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a></li>
571            <li
572            ><a href="#dynamic_android.lens.state">android.lens.state</a></li>
573            <li
574            ><a href="#dynamic_android.lens.poseRotation">android.lens.poseRotation</a></li>
575            <li
576            ><a href="#dynamic_android.lens.poseTranslation">android.lens.poseTranslation</a></li>
577            <li
578            ><a href="#dynamic_android.lens.intrinsicCalibration">android.lens.intrinsicCalibration</a></li>
579            <li
580                class="toc_deprecated"
581            ><a href="#dynamic_android.lens.radialDistortion">android.lens.radialDistortion</a></li>
582            <li
583            ><a href="#dynamic_android.lens.distortion">android.lens.distortion</a></li>
584          </ul>
585        </li>
586      </ul> <!-- toc_section -->
587    </li>
588    <li>
589      <span class="toc_section_header"><a href="#section_noiseReduction">noiseReduction</a></span>
590      <ul class="toc_section">
591        <li>
592          <span class="toc_kind_header">controls</span>
593          <ul class="toc_section">
594            <li
595            ><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a></li>
596            <li
597            ><a href="#controls_android.noiseReduction.strength">android.noiseReduction.strength</a></li>
598          </ul>
599        </li>
600        <li>
601          <span class="toc_kind_header">static</span>
602          <ul class="toc_section">
603            <li
604            ><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a></li>
605          </ul>
606        </li>
607        <li>
608          <span class="toc_kind_header">dynamic</span>
609          <ul class="toc_section">
610            <li
611            ><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a></li>
612          </ul>
613        </li>
614      </ul> <!-- toc_section -->
615    </li>
616    <li>
617      <span class="toc_section_header"><a href="#section_quirks">quirks</a></span>
618      <ul class="toc_section">
619        <li>
620          <span class="toc_kind_header">static</span>
621          <ul class="toc_section">
622            <li
623                class="toc_deprecated"
624            ><a href="#static_android.quirks.meteringCropRegion">android.quirks.meteringCropRegion</a></li>
625            <li
626                class="toc_deprecated"
627            ><a href="#static_android.quirks.triggerAfWithAuto">android.quirks.triggerAfWithAuto</a></li>
628            <li
629                class="toc_deprecated"
630            ><a href="#static_android.quirks.useZslFormat">android.quirks.useZslFormat</a></li>
631            <li
632                class="toc_deprecated"
633            ><a href="#static_android.quirks.usePartialResult">android.quirks.usePartialResult</a></li>
634          </ul>
635        </li>
636        <li>
637          <span class="toc_kind_header">dynamic</span>
638          <ul class="toc_section">
639            <li
640                class="toc_deprecated"
641            ><a href="#dynamic_android.quirks.partialResult">android.quirks.partialResult</a></li>
642          </ul>
643        </li>
644      </ul> <!-- toc_section -->
645    </li>
646    <li>
647      <span class="toc_section_header"><a href="#section_request">request</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                class="toc_deprecated"
654            ><a href="#controls_android.request.frameCount">android.request.frameCount</a></li>
655            <li
656            ><a href="#controls_android.request.id">android.request.id</a></li>
657            <li
658                class="toc_deprecated"
659            ><a href="#controls_android.request.inputStreams">android.request.inputStreams</a></li>
660            <li
661            ><a href="#controls_android.request.metadataMode">android.request.metadataMode</a></li>
662            <li
663                class="toc_deprecated"
664            ><a href="#controls_android.request.outputStreams">android.request.outputStreams</a></li>
665            <li
666                class="toc_deprecated"
667            ><a href="#controls_android.request.type">android.request.type</a></li>
668          </ul>
669        </li>
670        <li>
671          <span class="toc_kind_header">static</span>
672          <ul class="toc_section">
673            <li
674            ><a href="#static_android.request.maxNumOutputStreams">android.request.maxNumOutputStreams</a></li>
675            <li
676            ><a href="#static_android.request.maxNumOutputRaw">android.request.maxNumOutputRaw</a></li>
677            <li
678            ><a href="#static_android.request.maxNumOutputProc">android.request.maxNumOutputProc</a></li>
679            <li
680            ><a href="#static_android.request.maxNumOutputProcStalling">android.request.maxNumOutputProcStalling</a></li>
681            <li
682                class="toc_deprecated"
683            ><a href="#static_android.request.maxNumReprocessStreams">android.request.maxNumReprocessStreams</a></li>
684            <li
685            ><a href="#static_android.request.maxNumInputStreams">android.request.maxNumInputStreams</a></li>
686            <li
687            ><a href="#static_android.request.pipelineMaxDepth">android.request.pipelineMaxDepth</a></li>
688            <li
689            ><a href="#static_android.request.partialResultCount">android.request.partialResultCount</a></li>
690            <li
691            ><a href="#static_android.request.availableCapabilities">android.request.availableCapabilities</a></li>
692            <li
693            ><a href="#static_android.request.availableRequestKeys">android.request.availableRequestKeys</a></li>
694            <li
695            ><a href="#static_android.request.availableResultKeys">android.request.availableResultKeys</a></li>
696            <li
697            ><a href="#static_android.request.availableCharacteristicsKeys">android.request.availableCharacteristicsKeys</a></li>
698            <li
699            ><a href="#static_android.request.availableSessionKeys">android.request.availableSessionKeys</a></li>
700            <li
701            ><a href="#static_android.request.availablePhysicalCameraRequestKeys">android.request.availablePhysicalCameraRequestKeys</a></li>
702            <li
703            ><a href="#static_android.request.characteristicKeysNeedingPermission">android.request.characteristicKeysNeedingPermission</a></li>
704          </ul>
705        </li>
706        <li>
707          <span class="toc_kind_header">dynamic</span>
708          <ul class="toc_section">
709            <li
710                class="toc_deprecated"
711            ><a href="#dynamic_android.request.frameCount">android.request.frameCount</a></li>
712            <li
713            ><a href="#dynamic_android.request.id">android.request.id</a></li>
714            <li
715            ><a href="#dynamic_android.request.metadataMode">android.request.metadataMode</a></li>
716            <li
717                class="toc_deprecated"
718            ><a href="#dynamic_android.request.outputStreams">android.request.outputStreams</a></li>
719            <li
720            ><a href="#dynamic_android.request.pipelineDepth">android.request.pipelineDepth</a></li>
721          </ul>
722        </li>
723      </ul> <!-- toc_section -->
724    </li>
725    <li>
726      <span class="toc_section_header"><a href="#section_scaler">scaler</a></span>
727      <ul class="toc_section">
728        <li>
729          <span class="toc_kind_header">controls</span>
730          <ul class="toc_section">
731            <li
732            ><a href="#controls_android.scaler.cropRegion">android.scaler.cropRegion</a></li>
733            <li
734            ><a href="#controls_android.scaler.rotateAndCrop">android.scaler.rotateAndCrop</a></li>
735            <li
736            ><a href="#controls_android.scaler.cropRegionSet">android.scaler.cropRegionSet</a></li>
737          </ul>
738        </li>
739        <li>
740          <span class="toc_kind_header">static</span>
741          <ul class="toc_section">
742            <li
743                class="toc_deprecated"
744            ><a href="#static_android.scaler.availableFormats">android.scaler.availableFormats</a></li>
745            <li
746                class="toc_deprecated"
747            ><a href="#static_android.scaler.availableJpegMinDurations">android.scaler.availableJpegMinDurations</a></li>
748            <li
749                class="toc_deprecated"
750            ><a href="#static_android.scaler.availableJpegSizes">android.scaler.availableJpegSizes</a></li>
751            <li
752            ><a href="#static_android.scaler.availableMaxDigitalZoom">android.scaler.availableMaxDigitalZoom</a></li>
753            <li
754                class="toc_deprecated"
755            ><a href="#static_android.scaler.availableProcessedMinDurations">android.scaler.availableProcessedMinDurations</a></li>
756            <li
757                class="toc_deprecated"
758            ><a href="#static_android.scaler.availableProcessedSizes">android.scaler.availableProcessedSizes</a></li>
759            <li
760                class="toc_deprecated"
761            ><a href="#static_android.scaler.availableRawMinDurations">android.scaler.availableRawMinDurations</a></li>
762            <li
763                class="toc_deprecated"
764            ><a href="#static_android.scaler.availableRawSizes">android.scaler.availableRawSizes</a></li>
765            <li
766            ><a href="#static_android.scaler.availableInputOutputFormatsMap">android.scaler.availableInputOutputFormatsMap</a></li>
767            <li
768            ><a href="#static_android.scaler.availableStreamConfigurations">android.scaler.availableStreamConfigurations</a></li>
769            <li
770            ><a href="#static_android.scaler.availableMinFrameDurations">android.scaler.availableMinFrameDurations</a></li>
771            <li
772            ><a href="#static_android.scaler.availableStallDurations">android.scaler.availableStallDurations</a></li>
773            <li
774            ><a href="#static_android.scaler.streamConfigurationMap">android.scaler.streamConfigurationMap</a></li>
775            <li
776            ><a href="#static_android.scaler.croppingType">android.scaler.croppingType</a></li>
777            <li
778            ><a href="#static_android.scaler.availableRecommendedStreamConfigurations">android.scaler.availableRecommendedStreamConfigurations</a></li>
779            <li
780            ><a href="#static_android.scaler.availableRecommendedInputOutputFormatsMap">android.scaler.availableRecommendedInputOutputFormatsMap</a></li>
781            <li
782            ><a href="#static_android.scaler.mandatoryStreamCombinations">android.scaler.mandatoryStreamCombinations</a></li>
783            <li
784            ><a href="#static_android.scaler.mandatoryConcurrentStreamCombinations">android.scaler.mandatoryConcurrentStreamCombinations</a></li>
785            <li
786            ><a href="#static_android.scaler.availableRotateAndCropModes">android.scaler.availableRotateAndCropModes</a></li>
787            <li
788            ><a href="#static_android.scaler.defaultSecureImageSize">android.scaler.defaultSecureImageSize</a></li>
789            <li
790            ><a href="#static_android.scaler.physicalCameraMultiResolutionStreamConfigurations">android.scaler.physicalCameraMultiResolutionStreamConfigurations</a></li>
791            <li
792            ><a href="#static_android.scaler.multiResolutionStreamConfigurationMap">android.scaler.multiResolutionStreamConfigurationMap</a></li>
793            <li
794            ><a href="#static_android.scaler.availableStreamConfigurationsMaximumResolution">android.scaler.availableStreamConfigurationsMaximumResolution</a></li>
795            <li
796            ><a href="#static_android.scaler.availableMinFrameDurationsMaximumResolution">android.scaler.availableMinFrameDurationsMaximumResolution</a></li>
797            <li
798            ><a href="#static_android.scaler.availableStallDurationsMaximumResolution">android.scaler.availableStallDurationsMaximumResolution</a></li>
799            <li
800            ><a href="#static_android.scaler.streamConfigurationMapMaximumResolution">android.scaler.streamConfigurationMapMaximumResolution</a></li>
801            <li
802            ><a href="#static_android.scaler.availableInputOutputFormatsMapMaximumResolution">android.scaler.availableInputOutputFormatsMapMaximumResolution</a></li>
803            <li
804            ><a href="#static_android.scaler.mandatoryMaximumResolutionStreamCombinations">android.scaler.mandatoryMaximumResolutionStreamCombinations</a></li>
805            <li
806            ><a href="#static_android.scaler.multiResolutionStreamSupported">android.scaler.multiResolutionStreamSupported</a></li>
807          </ul>
808        </li>
809        <li>
810          <span class="toc_kind_header">dynamic</span>
811          <ul class="toc_section">
812            <li
813            ><a href="#dynamic_android.scaler.cropRegion">android.scaler.cropRegion</a></li>
814            <li
815            ><a href="#dynamic_android.scaler.rotateAndCrop">android.scaler.rotateAndCrop</a></li>
816          </ul>
817        </li>
818      </ul> <!-- toc_section -->
819    </li>
820    <li>
821      <span class="toc_section_header"><a href="#section_sensor">sensor</a></span>
822      <ul class="toc_section">
823        <li>
824          <span class="toc_kind_header">controls</span>
825          <ul class="toc_section">
826            <li
827            ><a href="#controls_android.sensor.exposureTime">android.sensor.exposureTime</a></li>
828            <li
829            ><a href="#controls_android.sensor.frameDuration">android.sensor.frameDuration</a></li>
830            <li
831            ><a href="#controls_android.sensor.sensitivity">android.sensor.sensitivity</a></li>
832            <li
833            ><a href="#controls_android.sensor.testPatternData">android.sensor.testPatternData</a></li>
834            <li
835            ><a href="#controls_android.sensor.testPatternMode">android.sensor.testPatternMode</a></li>
836            <li
837            ><a href="#controls_android.sensor.pixelMode">android.sensor.pixelMode</a></li>
838          </ul>
839        </li>
840        <li>
841          <span class="toc_kind_header">static</span>
842          <ul class="toc_section">
843
844            <li
845            ><a href="#static_android.sensor.info.activeArraySize">android.sensor.info.activeArraySize</a></li>
846            <li
847            ><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a></li>
848            <li
849            ><a href="#static_android.sensor.info.colorFilterArrangement">android.sensor.info.colorFilterArrangement</a></li>
850            <li
851            ><a href="#static_android.sensor.info.exposureTimeRange">android.sensor.info.exposureTimeRange</a></li>
852            <li
853            ><a href="#static_android.sensor.info.maxFrameDuration">android.sensor.info.maxFrameDuration</a></li>
854            <li
855            ><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a></li>
856            <li
857            ><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a></li>
858            <li
859            ><a href="#static_android.sensor.info.whiteLevel">android.sensor.info.whiteLevel</a></li>
860            <li
861            ><a href="#static_android.sensor.info.timestampSource">android.sensor.info.timestampSource</a></li>
862            <li
863            ><a href="#static_android.sensor.info.lensShadingApplied">android.sensor.info.lensShadingApplied</a></li>
864            <li
865            ><a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.sensor.info.preCorrectionActiveArraySize</a></li>
866            <li
867            ><a href="#static_android.sensor.info.activeArraySizeMaximumResolution">android.sensor.info.activeArraySizeMaximumResolution</a></li>
868            <li
869            ><a href="#static_android.sensor.info.pixelArraySizeMaximumResolution">android.sensor.info.pixelArraySizeMaximumResolution</a></li>
870            <li
871            ><a href="#static_android.sensor.info.preCorrectionActiveArraySizeMaximumResolution">android.sensor.info.preCorrectionActiveArraySizeMaximumResolution</a></li>
872            <li
873            ><a href="#static_android.sensor.info.binningFactor">android.sensor.info.binningFactor</a></li>
874
875            <li
876            ><a href="#static_android.sensor.referenceIlluminant1">android.sensor.referenceIlluminant1</a></li>
877            <li
878            ><a href="#static_android.sensor.referenceIlluminant2">android.sensor.referenceIlluminant2</a></li>
879            <li
880            ><a href="#static_android.sensor.calibrationTransform1">android.sensor.calibrationTransform1</a></li>
881            <li
882            ><a href="#static_android.sensor.calibrationTransform2">android.sensor.calibrationTransform2</a></li>
883            <li
884            ><a href="#static_android.sensor.colorTransform1">android.sensor.colorTransform1</a></li>
885            <li
886            ><a href="#static_android.sensor.colorTransform2">android.sensor.colorTransform2</a></li>
887            <li
888            ><a href="#static_android.sensor.forwardMatrix1">android.sensor.forwardMatrix1</a></li>
889            <li
890            ><a href="#static_android.sensor.forwardMatrix2">android.sensor.forwardMatrix2</a></li>
891            <li
892            ><a href="#static_android.sensor.baseGainFactor">android.sensor.baseGainFactor</a></li>
893            <li
894            ><a href="#static_android.sensor.blackLevelPattern">android.sensor.blackLevelPattern</a></li>
895            <li
896            ><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a></li>
897            <li
898            ><a href="#static_android.sensor.orientation">android.sensor.orientation</a></li>
899            <li
900            ><a href="#static_android.sensor.profileHueSatMapDimensions">android.sensor.profileHueSatMapDimensions</a></li>
901            <li
902            ><a href="#static_android.sensor.availableTestPatternModes">android.sensor.availableTestPatternModes</a></li>
903            <li
904            ><a href="#static_android.sensor.opticalBlackRegions">android.sensor.opticalBlackRegions</a></li>
905            <li
906            ><a href="#static_android.sensor.opaqueRawSize">android.sensor.opaqueRawSize</a></li>
907            <li
908            ><a href="#static_android.sensor.opaqueRawSizeMaximumResolution">android.sensor.opaqueRawSizeMaximumResolution</a></li>
909          </ul>
910        </li>
911        <li>
912          <span class="toc_kind_header">dynamic</span>
913          <ul class="toc_section">
914            <li
915            ><a href="#dynamic_android.sensor.exposureTime">android.sensor.exposureTime</a></li>
916            <li
917            ><a href="#dynamic_android.sensor.frameDuration">android.sensor.frameDuration</a></li>
918            <li
919            ><a href="#dynamic_android.sensor.sensitivity">android.sensor.sensitivity</a></li>
920            <li
921            ><a href="#dynamic_android.sensor.timestamp">android.sensor.timestamp</a></li>
922            <li
923            ><a href="#dynamic_android.sensor.temperature">android.sensor.temperature</a></li>
924            <li
925            ><a href="#dynamic_android.sensor.neutralColorPoint">android.sensor.neutralColorPoint</a></li>
926            <li
927            ><a href="#dynamic_android.sensor.noiseProfile">android.sensor.noiseProfile</a></li>
928            <li
929            ><a href="#dynamic_android.sensor.profileHueSatMap">android.sensor.profileHueSatMap</a></li>
930            <li
931            ><a href="#dynamic_android.sensor.profileToneCurve">android.sensor.profileToneCurve</a></li>
932            <li
933            ><a href="#dynamic_android.sensor.greenSplit">android.sensor.greenSplit</a></li>
934            <li
935            ><a href="#dynamic_android.sensor.testPatternData">android.sensor.testPatternData</a></li>
936            <li
937            ><a href="#dynamic_android.sensor.testPatternMode">android.sensor.testPatternMode</a></li>
938            <li
939            ><a href="#dynamic_android.sensor.rollingShutterSkew">android.sensor.rollingShutterSkew</a></li>
940            <li
941            ><a href="#dynamic_android.sensor.dynamicBlackLevel">android.sensor.dynamicBlackLevel</a></li>
942            <li
943            ><a href="#dynamic_android.sensor.dynamicWhiteLevel">android.sensor.dynamicWhiteLevel</a></li>
944            <li
945            ><a href="#dynamic_android.sensor.pixelMode">android.sensor.pixelMode</a></li>
946            <li
947            ><a href="#dynamic_android.sensor.rawBinningFactorUsed">android.sensor.rawBinningFactorUsed</a></li>
948          </ul>
949        </li>
950      </ul> <!-- toc_section -->
951    </li>
952    <li>
953      <span class="toc_section_header"><a href="#section_shading">shading</a></span>
954      <ul class="toc_section">
955        <li>
956          <span class="toc_kind_header">controls</span>
957          <ul class="toc_section">
958            <li
959            ><a href="#controls_android.shading.mode">android.shading.mode</a></li>
960            <li
961            ><a href="#controls_android.shading.strength">android.shading.strength</a></li>
962          </ul>
963        </li>
964        <li>
965          <span class="toc_kind_header">dynamic</span>
966          <ul class="toc_section">
967            <li
968            ><a href="#dynamic_android.shading.mode">android.shading.mode</a></li>
969          </ul>
970        </li>
971        <li>
972          <span class="toc_kind_header">static</span>
973          <ul class="toc_section">
974            <li
975            ><a href="#static_android.shading.availableModes">android.shading.availableModes</a></li>
976          </ul>
977        </li>
978      </ul> <!-- toc_section -->
979    </li>
980    <li>
981      <span class="toc_section_header"><a href="#section_statistics">statistics</a></span>
982      <ul class="toc_section">
983        <li>
984          <span class="toc_kind_header">controls</span>
985          <ul class="toc_section">
986            <li
987            ><a href="#controls_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a></li>
988            <li
989            ><a href="#controls_android.statistics.histogramMode">android.statistics.histogramMode</a></li>
990            <li
991            ><a href="#controls_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a></li>
992            <li
993            ><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a></li>
994            <li
995            ><a href="#controls_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a></li>
996            <li
997            ><a href="#controls_android.statistics.oisDataMode">android.statistics.oisDataMode</a></li>
998          </ul>
999        </li>
1000        <li>
1001          <span class="toc_kind_header">static</span>
1002          <ul class="toc_section">
1003
1004            <li
1005            ><a href="#static_android.statistics.info.availableFaceDetectModes">android.statistics.info.availableFaceDetectModes</a></li>
1006            <li
1007            ><a href="#static_android.statistics.info.histogramBucketCount">android.statistics.info.histogramBucketCount</a></li>
1008            <li
1009            ><a href="#static_android.statistics.info.maxFaceCount">android.statistics.info.maxFaceCount</a></li>
1010            <li
1011            ><a href="#static_android.statistics.info.maxHistogramCount">android.statistics.info.maxHistogramCount</a></li>
1012            <li
1013            ><a href="#static_android.statistics.info.maxSharpnessMapValue">android.statistics.info.maxSharpnessMapValue</a></li>
1014            <li
1015            ><a href="#static_android.statistics.info.sharpnessMapSize">android.statistics.info.sharpnessMapSize</a></li>
1016            <li
1017            ><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a></li>
1018            <li
1019            ><a href="#static_android.statistics.info.availableLensShadingMapModes">android.statistics.info.availableLensShadingMapModes</a></li>
1020            <li
1021            ><a href="#static_android.statistics.info.availableOisDataModes">android.statistics.info.availableOisDataModes</a></li>
1022
1023          </ul>
1024        </li>
1025        <li>
1026          <span class="toc_kind_header">dynamic</span>
1027          <ul class="toc_section">
1028            <li
1029            ><a href="#dynamic_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a></li>
1030            <li
1031            ><a href="#dynamic_android.statistics.faceIds">android.statistics.faceIds</a></li>
1032            <li
1033            ><a href="#dynamic_android.statistics.faceLandmarks">android.statistics.faceLandmarks</a></li>
1034            <li
1035            ><a href="#dynamic_android.statistics.faceRectangles">android.statistics.faceRectangles</a></li>
1036            <li
1037            ><a href="#dynamic_android.statistics.faceScores">android.statistics.faceScores</a></li>
1038            <li
1039            ><a href="#dynamic_android.statistics.faces">android.statistics.faces</a></li>
1040            <li
1041            ><a href="#dynamic_android.statistics.histogram">android.statistics.histogram</a></li>
1042            <li
1043            ><a href="#dynamic_android.statistics.histogramMode">android.statistics.histogramMode</a></li>
1044            <li
1045            ><a href="#dynamic_android.statistics.sharpnessMap">android.statistics.sharpnessMap</a></li>
1046            <li
1047            ><a href="#dynamic_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a></li>
1048            <li
1049            ><a href="#dynamic_android.statistics.lensShadingCorrectionMap">android.statistics.lensShadingCorrectionMap</a></li>
1050            <li
1051            ><a href="#dynamic_android.statistics.lensShadingMap">android.statistics.lensShadingMap</a></li>
1052            <li
1053                class="toc_deprecated"
1054            ><a href="#dynamic_android.statistics.predictedColorGains">android.statistics.predictedColorGains</a></li>
1055            <li
1056                class="toc_deprecated"
1057            ><a href="#dynamic_android.statistics.predictedColorTransform">android.statistics.predictedColorTransform</a></li>
1058            <li
1059            ><a href="#dynamic_android.statistics.sceneFlicker">android.statistics.sceneFlicker</a></li>
1060            <li
1061            ><a href="#dynamic_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a></li>
1062            <li
1063            ><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a></li>
1064            <li
1065            ><a href="#dynamic_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a></li>
1066            <li
1067            ><a href="#dynamic_android.statistics.oisDataMode">android.statistics.oisDataMode</a></li>
1068            <li
1069            ><a href="#dynamic_android.statistics.oisTimestamps">android.statistics.oisTimestamps</a></li>
1070            <li
1071            ><a href="#dynamic_android.statistics.oisXShifts">android.statistics.oisXShifts</a></li>
1072            <li
1073            ><a href="#dynamic_android.statistics.oisYShifts">android.statistics.oisYShifts</a></li>
1074            <li
1075            ><a href="#dynamic_android.statistics.oisSamples">android.statistics.oisSamples</a></li>
1076          </ul>
1077        </li>
1078      </ul> <!-- toc_section -->
1079    </li>
1080    <li>
1081      <span class="toc_section_header"><a href="#section_tonemap">tonemap</a></span>
1082      <ul class="toc_section">
1083        <li>
1084          <span class="toc_kind_header">controls</span>
1085          <ul class="toc_section">
1086            <li
1087            ><a href="#controls_android.tonemap.curveBlue">android.tonemap.curveBlue</a></li>
1088            <li
1089            ><a href="#controls_android.tonemap.curveGreen">android.tonemap.curveGreen</a></li>
1090            <li
1091            ><a href="#controls_android.tonemap.curveRed">android.tonemap.curveRed</a></li>
1092            <li
1093            ><a href="#controls_android.tonemap.curve">android.tonemap.curve</a></li>
1094            <li
1095            ><a href="#controls_android.tonemap.mode">android.tonemap.mode</a></li>
1096            <li
1097            ><a href="#controls_android.tonemap.gamma">android.tonemap.gamma</a></li>
1098            <li
1099            ><a href="#controls_android.tonemap.presetCurve">android.tonemap.presetCurve</a></li>
1100          </ul>
1101        </li>
1102        <li>
1103          <span class="toc_kind_header">static</span>
1104          <ul class="toc_section">
1105            <li
1106            ><a href="#static_android.tonemap.maxCurvePoints">android.tonemap.maxCurvePoints</a></li>
1107            <li
1108            ><a href="#static_android.tonemap.availableToneMapModes">android.tonemap.availableToneMapModes</a></li>
1109          </ul>
1110        </li>
1111        <li>
1112          <span class="toc_kind_header">dynamic</span>
1113          <ul class="toc_section">
1114            <li
1115            ><a href="#dynamic_android.tonemap.curveBlue">android.tonemap.curveBlue</a></li>
1116            <li
1117            ><a href="#dynamic_android.tonemap.curveGreen">android.tonemap.curveGreen</a></li>
1118            <li
1119            ><a href="#dynamic_android.tonemap.curveRed">android.tonemap.curveRed</a></li>
1120            <li
1121            ><a href="#dynamic_android.tonemap.curve">android.tonemap.curve</a></li>
1122            <li
1123            ><a href="#dynamic_android.tonemap.mode">android.tonemap.mode</a></li>
1124            <li
1125            ><a href="#dynamic_android.tonemap.gamma">android.tonemap.gamma</a></li>
1126            <li
1127            ><a href="#dynamic_android.tonemap.presetCurve">android.tonemap.presetCurve</a></li>
1128          </ul>
1129        </li>
1130      </ul> <!-- toc_section -->
1131    </li>
1132    <li>
1133      <span class="toc_section_header"><a href="#section_led">led</a></span>
1134      <ul class="toc_section">
1135        <li>
1136          <span class="toc_kind_header">controls</span>
1137          <ul class="toc_section">
1138            <li
1139            ><a href="#controls_android.led.transmit">android.led.transmit</a></li>
1140          </ul>
1141        </li>
1142        <li>
1143          <span class="toc_kind_header">dynamic</span>
1144          <ul class="toc_section">
1145            <li
1146            ><a href="#dynamic_android.led.transmit">android.led.transmit</a></li>
1147          </ul>
1148        </li>
1149        <li>
1150          <span class="toc_kind_header">static</span>
1151          <ul class="toc_section">
1152            <li
1153            ><a href="#static_android.led.availableLeds">android.led.availableLeds</a></li>
1154          </ul>
1155        </li>
1156      </ul> <!-- toc_section -->
1157    </li>
1158    <li>
1159      <span class="toc_section_header"><a href="#section_info">info</a></span>
1160      <ul class="toc_section">
1161        <li>
1162          <span class="toc_kind_header">static</span>
1163          <ul class="toc_section">
1164            <li
1165            ><a href="#static_android.info.supportedHardwareLevel">android.info.supportedHardwareLevel</a></li>
1166            <li
1167            ><a href="#static_android.info.version">android.info.version</a></li>
1168            <li
1169            ><a href="#static_android.info.supportedBufferManagementVersion">android.info.supportedBufferManagementVersion</a></li>
1170            <li
1171            ><a href="#static_android.info.deviceStateSensorOrientationMap">android.info.deviceStateSensorOrientationMap</a></li>
1172            <li
1173            ><a href="#static_android.info.deviceStateOrientations">android.info.deviceStateOrientations</a></li>
1174          </ul>
1175        </li>
1176      </ul> <!-- toc_section -->
1177    </li>
1178    <li>
1179      <span class="toc_section_header"><a href="#section_blackLevel">blackLevel</a></span>
1180      <ul class="toc_section">
1181        <li>
1182          <span class="toc_kind_header">controls</span>
1183          <ul class="toc_section">
1184            <li
1185            ><a href="#controls_android.blackLevel.lock">android.blackLevel.lock</a></li>
1186          </ul>
1187        </li>
1188        <li>
1189          <span class="toc_kind_header">dynamic</span>
1190          <ul class="toc_section">
1191            <li
1192            ><a href="#dynamic_android.blackLevel.lock">android.blackLevel.lock</a></li>
1193          </ul>
1194        </li>
1195      </ul> <!-- toc_section -->
1196    </li>
1197    <li>
1198      <span class="toc_section_header"><a href="#section_sync">sync</a></span>
1199      <ul class="toc_section">
1200        <li>
1201          <span class="toc_kind_header">dynamic</span>
1202          <ul class="toc_section">
1203            <li
1204            ><a href="#dynamic_android.sync.frameNumber">android.sync.frameNumber</a></li>
1205          </ul>
1206        </li>
1207        <li>
1208          <span class="toc_kind_header">static</span>
1209          <ul class="toc_section">
1210            <li
1211            ><a href="#static_android.sync.maxLatency">android.sync.maxLatency</a></li>
1212          </ul>
1213        </li>
1214      </ul> <!-- toc_section -->
1215    </li>
1216    <li>
1217      <span class="toc_section_header"><a href="#section_reprocess">reprocess</a></span>
1218      <ul class="toc_section">
1219        <li>
1220          <span class="toc_kind_header">controls</span>
1221          <ul class="toc_section">
1222            <li
1223            ><a href="#controls_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a></li>
1224          </ul>
1225        </li>
1226        <li>
1227          <span class="toc_kind_header">dynamic</span>
1228          <ul class="toc_section">
1229            <li
1230            ><a href="#dynamic_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a></li>
1231          </ul>
1232        </li>
1233        <li>
1234          <span class="toc_kind_header">static</span>
1235          <ul class="toc_section">
1236            <li
1237            ><a href="#static_android.reprocess.maxCaptureStall">android.reprocess.maxCaptureStall</a></li>
1238          </ul>
1239        </li>
1240      </ul> <!-- toc_section -->
1241    </li>
1242    <li>
1243      <span class="toc_section_header"><a href="#section_depth">depth</a></span>
1244      <ul class="toc_section">
1245        <li>
1246          <span class="toc_kind_header">static</span>
1247          <ul class="toc_section">
1248            <li
1249            ><a href="#static_android.depth.maxDepthSamples">android.depth.maxDepthSamples</a></li>
1250            <li
1251            ><a href="#static_android.depth.availableDepthStreamConfigurations">android.depth.availableDepthStreamConfigurations</a></li>
1252            <li
1253            ><a href="#static_android.depth.availableDepthMinFrameDurations">android.depth.availableDepthMinFrameDurations</a></li>
1254            <li
1255            ><a href="#static_android.depth.availableDepthStallDurations">android.depth.availableDepthStallDurations</a></li>
1256            <li
1257            ><a href="#static_android.depth.depthIsExclusive">android.depth.depthIsExclusive</a></li>
1258            <li
1259            ><a href="#static_android.depth.availableRecommendedDepthStreamConfigurations">android.depth.availableRecommendedDepthStreamConfigurations</a></li>
1260            <li
1261            ><a href="#static_android.depth.availableDynamicDepthStreamConfigurations">android.depth.availableDynamicDepthStreamConfigurations</a></li>
1262            <li
1263            ><a href="#static_android.depth.availableDynamicDepthMinFrameDurations">android.depth.availableDynamicDepthMinFrameDurations</a></li>
1264            <li
1265            ><a href="#static_android.depth.availableDynamicDepthStallDurations">android.depth.availableDynamicDepthStallDurations</a></li>
1266            <li
1267            ><a href="#static_android.depth.availableDepthStreamConfigurationsMaximumResolution">android.depth.availableDepthStreamConfigurationsMaximumResolution</a></li>
1268            <li
1269            ><a href="#static_android.depth.availableDepthMinFrameDurationsMaximumResolution">android.depth.availableDepthMinFrameDurationsMaximumResolution</a></li>
1270            <li
1271            ><a href="#static_android.depth.availableDepthStallDurationsMaximumResolution">android.depth.availableDepthStallDurationsMaximumResolution</a></li>
1272            <li
1273            ><a href="#static_android.depth.availableDynamicDepthStreamConfigurationsMaximumResolution">android.depth.availableDynamicDepthStreamConfigurationsMaximumResolution</a></li>
1274            <li
1275            ><a href="#static_android.depth.availableDynamicDepthMinFrameDurationsMaximumResolution">android.depth.availableDynamicDepthMinFrameDurationsMaximumResolution</a></li>
1276            <li
1277            ><a href="#static_android.depth.availableDynamicDepthStallDurationsMaximumResolution">android.depth.availableDynamicDepthStallDurationsMaximumResolution</a></li>
1278          </ul>
1279        </li>
1280      </ul> <!-- toc_section -->
1281    </li>
1282    <li>
1283      <span class="toc_section_header"><a href="#section_logicalMultiCamera">logicalMultiCamera</a></span>
1284      <ul class="toc_section">
1285        <li>
1286          <span class="toc_kind_header">static</span>
1287          <ul class="toc_section">
1288            <li
1289            ><a href="#static_android.logicalMultiCamera.physicalIds">android.logicalMultiCamera.physicalIds</a></li>
1290            <li
1291            ><a href="#static_android.logicalMultiCamera.sensorSyncType">android.logicalMultiCamera.sensorSyncType</a></li>
1292          </ul>
1293        </li>
1294        <li>
1295          <span class="toc_kind_header">dynamic</span>
1296          <ul class="toc_section">
1297            <li
1298            ><a href="#dynamic_android.logicalMultiCamera.activePhysicalId">android.logicalMultiCamera.activePhysicalId</a></li>
1299          </ul>
1300        </li>
1301      </ul> <!-- toc_section -->
1302    </li>
1303    <li>
1304      <span class="toc_section_header"><a href="#section_distortionCorrection">distortionCorrection</a></span>
1305      <ul class="toc_section">
1306        <li>
1307          <span class="toc_kind_header">controls</span>
1308          <ul class="toc_section">
1309            <li
1310            ><a href="#controls_android.distortionCorrection.mode">android.distortionCorrection.mode</a></li>
1311          </ul>
1312        </li>
1313        <li>
1314          <span class="toc_kind_header">static</span>
1315          <ul class="toc_section">
1316            <li
1317            ><a href="#static_android.distortionCorrection.availableModes">android.distortionCorrection.availableModes</a></li>
1318          </ul>
1319        </li>
1320        <li>
1321          <span class="toc_kind_header">dynamic</span>
1322          <ul class="toc_section">
1323            <li
1324            ><a href="#dynamic_android.distortionCorrection.mode">android.distortionCorrection.mode</a></li>
1325          </ul>
1326        </li>
1327      </ul> <!-- toc_section -->
1328    </li>
1329    <li>
1330      <span class="toc_section_header"><a href="#section_heic">heic</a></span>
1331      <ul class="toc_section">
1332        <li>
1333          <span class="toc_kind_header">static</span>
1334          <ul class="toc_section">
1335
1336            <li
1337            ><a href="#static_android.heic.info.supported">android.heic.info.supported</a></li>
1338            <li
1339            ><a href="#static_android.heic.info.maxJpegAppSegmentsCount">android.heic.info.maxJpegAppSegmentsCount</a></li>
1340
1341            <li
1342            ><a href="#static_android.heic.availableHeicStreamConfigurations">android.heic.availableHeicStreamConfigurations</a></li>
1343            <li
1344            ><a href="#static_android.heic.availableHeicMinFrameDurations">android.heic.availableHeicMinFrameDurations</a></li>
1345            <li
1346            ><a href="#static_android.heic.availableHeicStallDurations">android.heic.availableHeicStallDurations</a></li>
1347            <li
1348            ><a href="#static_android.heic.availableHeicStreamConfigurationsMaximumResolution">android.heic.availableHeicStreamConfigurationsMaximumResolution</a></li>
1349            <li
1350            ><a href="#static_android.heic.availableHeicMinFrameDurationsMaximumResolution">android.heic.availableHeicMinFrameDurationsMaximumResolution</a></li>
1351            <li
1352            ><a href="#static_android.heic.availableHeicStallDurationsMaximumResolution">android.heic.availableHeicStallDurationsMaximumResolution</a></li>
1353          </ul>
1354        </li>
1355      </ul> <!-- toc_section -->
1356    </li>
1357  </ul>
1358
1359
1360  <h1>Properties</h1>
1361  <table class="properties">
1362
1363    <thead class="thead_dummy">
1364      <tr>
1365        <th class="th_name">Property Name</th>
1366        <th class="th_type">Type</th>
1367        <th class="th_description">Description</th>
1368        <th class="th_units">Units</th>
1369        <th class="th_range">Range</th>
1370        <th class="th_hal_version">HIDL HAL version</th>
1371        <th class="th_tags">Tags</th>
1372      </tr>
1373    </thead> <!-- so that the first occurrence of thead is not
1374                         above the first occurrence of tr -->
1375<!-- <namespace name="android"> -->
1376  <tr><td colspan="7" id="section_colorCorrection" class="section">colorCorrection</td></tr>
1377
1378
1379      <tr><td colspan="7" class="kind">controls</td></tr>
1380
1381      <thead class="entries_header">
1382        <tr>
1383          <th class="th_name">Property Name</th>
1384          <th class="th_type">Type</th>
1385          <th class="th_description">Description</th>
1386          <th class="th_units">Units</th>
1387          <th class="th_range">Range</th>
1388          <th class="th_hal_version">Initial HIDL HAL version</th>
1389          <th class="th_tags">Tags</th>
1390        </tr>
1391      </thead>
1392
1393      <tbody>
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404          <tr class="entry" id="controls_android.colorCorrection.mode">
1405            <td class="entry_name
1406             " rowspan="5">
1407              android.<wbr/>color<wbr/>Correction.<wbr/>mode
1408            </td>
1409            <td class="entry_type">
1410                <span class="entry_type_name entry_type_name_enum">byte</span>
1411
1412              <span class="entry_type_visibility"> [public]</span>
1413
1414
1415              <span class="entry_type_hwlevel">[full] </span>
1416
1417
1418
1419                <ul class="entry_type_enum">
1420                  <li>
1421                    <span class="entry_type_enum_name">TRANSFORM_MATRIX (v3.2)</span>
1422                    <span class="entry_type_enum_notes"><p>Use the <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> matrix
1423and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> to do color conversion.<wbr/></p>
1424<p>All advanced white balance adjustments (not specified
1425by our white balance pipeline) must be disabled.<wbr/></p>
1426<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
1427TRANSFORM_<wbr/>MATRIX is ignored.<wbr/> The camera device will override
1428this value to either FAST or HIGH_<wbr/>QUALITY.<wbr/></p></span>
1429                  </li>
1430                  <li>
1431                    <span class="entry_type_enum_name">FAST (v3.2)</span>
1432                    <span class="entry_type_enum_notes"><p>Color correction processing must not slow down
1433capture rate relative to sensor raw output.<wbr/></p>
1434<p>Advanced white balance adjustments above and beyond
1435the specified white balance pipeline may be applied.<wbr/></p>
1436<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
1437the camera device uses the last frame's AWB values
1438(or defaults if AWB has never been run).<wbr/></p></span>
1439                  </li>
1440                  <li>
1441                    <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
1442                    <span class="entry_type_enum_notes"><p>Color correction processing operates at improved
1443quality but the capture rate might be reduced (relative to sensor
1444raw output rate)</p>
1445<p>Advanced white balance adjustments above and beyond
1446the specified white balance pipeline may be applied.<wbr/></p>
1447<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
1448the camera device uses the last frame's AWB values
1449(or defaults if AWB has never been run).<wbr/></p></span>
1450                  </li>
1451                </ul>
1452
1453            </td> <!-- entry_type -->
1454
1455            <td class="entry_description">
1456              <p>The mode control selects how the image data is converted from the
1457sensor's native color into linear sRGB color.<wbr/></p>
1458            </td>
1459
1460            <td class="entry_units">
1461            </td>
1462
1463            <td class="entry_range">
1464            </td>
1465
1466            <td class="entry_hal_version">
1467              <p>3.<wbr/>2</p>
1468            </td>
1469
1470            <td class="entry_tags">
1471            </td>
1472
1473          </tr>
1474          <tr class="entries_header">
1475            <th class="th_details" colspan="6">Details</th>
1476          </tr>
1477          <tr class="entry_cont">
1478            <td class="entry_details" colspan="6">
1479              <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
1480control is overridden by the AWB routine.<wbr/> When AWB is disabled,<wbr/> the
1481application controls how the color mapping is performed.<wbr/></p>
1482<p>We define the expected processing pipeline below.<wbr/> For consistency
1483across devices,<wbr/> this is always the case with TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1484<p>When either FAST or HIGH_<wbr/>QUALITY is used,<wbr/> the camera device may
1485do additional processing but <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
1486<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> will still be provided by the
1487camera device (in the results) and be roughly correct.<wbr/></p>
1488<p>Switching to TRANSFORM_<wbr/>MATRIX and using the data provided from
1489FAST or HIGH_<wbr/>QUALITY will yield a picture with the same white point
1490as what was produced by the camera device in the earlier frame.<wbr/></p>
1491<p>The expected processing pipeline is as follows:</p>
1492<p><img alt="White balance processing pipeline" src="images/camera2/metadata/android.colorCorrection.mode/processing_pipeline.png"/></p>
1493<p>The white balance is encoded by two values,<wbr/> a 4-channel white-balance
1494gain vector (applied in the Bayer domain),<wbr/> and a 3x3 color transform
1495matrix (applied after demosaic).<wbr/></p>
1496<p>The 4-channel white-balance gains are defined as:</p>
1497<pre><code><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> = [ R G_<wbr/>even G_<wbr/>odd B ]
1498</code></pre>
1499<p>where <code>G_<wbr/>even</code> is the gain for green pixels on even rows of the
1500output,<wbr/> and <code>G_<wbr/>odd</code> is the gain for green pixels on the odd rows.<wbr/>
1501These may be identical for a given camera device implementation; if
1502the camera device does not support a separate gain for even/<wbr/>odd green
1503channels,<wbr/> it will use the <code>G_<wbr/>even</code> value,<wbr/> and write <code>G_<wbr/>odd</code> equal to
1504<code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
1505<p>The matrices for color transforms are defined as a 9-entry vector:</p>
1506<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 ]
1507</code></pre>
1508<p>which define a transform from input sensor colors,<wbr/> <code>P_<wbr/>in = [ r g b ]</code>,<wbr/>
1509to output linear sRGB,<wbr/> <code>P_<wbr/>out = [ r' g' b' ]</code>,<wbr/></p>
1510<p>with colors as follows:</p>
1511<pre><code>r' = I0r + I1g + I2b
1512g' = I3r + I4g + I5b
1513b' = I6r + I7g + I8b
1514</code></pre>
1515<p>Both the input and output value ranges must match.<wbr/> Overflow/<wbr/>underflow
1516values are clipped to fit within the range.<wbr/></p>
1517            </td>
1518          </tr>
1519
1520          <tr class="entries_header">
1521            <th class="th_details" colspan="6">HAL Implementation Details</th>
1522          </tr>
1523          <tr class="entry_cont">
1524            <td class="entry_details" colspan="6">
1525              <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if color correction control is available
1526on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
1527That is,<wbr/> if the highest quality implementation on the camera device does not slow down
1528capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY should generate the same output.<wbr/></p>
1529            </td>
1530          </tr>
1531
1532          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
1533           <!-- end of entry -->
1534
1535
1536          <tr class="entry" id="controls_android.colorCorrection.transform">
1537            <td class="entry_name
1538             " rowspan="3">
1539              android.<wbr/>color<wbr/>Correction.<wbr/>transform
1540            </td>
1541            <td class="entry_type">
1542                <span class="entry_type_name">rational</span>
1543                <span class="entry_type_container">x</span>
1544
1545                <span class="entry_type_array">
1546                  3 x 3
1547                </span>
1548              <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
1549
1550
1551              <span class="entry_type_hwlevel">[full] </span>
1552
1553
1554                <div class="entry_type_notes">3x3 rational matrix in row-major order</div>
1555
1556
1557            </td> <!-- entry_type -->
1558
1559            <td class="entry_description">
1560              <p>A color transform matrix to use to transform
1561from sensor RGB color space to output linear sRGB color space.<wbr/></p>
1562            </td>
1563
1564            <td class="entry_units">
1565              Unitless scale factors
1566            </td>
1567
1568            <td class="entry_range">
1569            </td>
1570
1571            <td class="entry_hal_version">
1572              <p>3.<wbr/>2</p>
1573            </td>
1574
1575            <td class="entry_tags">
1576            </td>
1577
1578          </tr>
1579          <tr class="entries_header">
1580            <th class="th_details" colspan="6">Details</th>
1581          </tr>
1582          <tr class="entry_cont">
1583            <td class="entry_details" colspan="6">
1584              <p>This matrix is either set by the camera device when the request
1585<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not TRANSFORM_<wbr/>MATRIX,<wbr/> or
1586directly by the application in the request when the
1587<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1588<p>In the latter case,<wbr/> the camera device may round the matrix to account
1589for precision issues; the final rounded matrix should be reported back
1590in this matrix result metadata.<wbr/> The transform should keep the magnitude
1591of the output color values within <code>[0,<wbr/> 1.<wbr/>0]</code> (assuming input color
1592values is within the normalized range <code>[0,<wbr/> 1.<wbr/>0]</code>),<wbr/> or clipping may occur.<wbr/></p>
1593<p>The valid range of each matrix element varies on different devices,<wbr/> but
1594values within [-1.<wbr/>5,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
1595            </td>
1596          </tr>
1597
1598
1599          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
1600           <!-- end of entry -->
1601
1602
1603          <tr class="entry" id="controls_android.colorCorrection.gains">
1604            <td class="entry_name
1605             " rowspan="5">
1606              android.<wbr/>color<wbr/>Correction.<wbr/>gains
1607            </td>
1608            <td class="entry_type">
1609                <span class="entry_type_name">float</span>
1610                <span class="entry_type_container">x</span>
1611
1612                <span class="entry_type_array">
1613                  4
1614                </span>
1615              <span class="entry_type_visibility"> [public as rggbChannelVector]</span>
1616
1617
1618              <span class="entry_type_hwlevel">[full] </span>
1619
1620
1621                <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div>
1622
1623
1624            </td> <!-- entry_type -->
1625
1626            <td class="entry_description">
1627              <p>Gains applying to Bayer raw color channels for
1628white-balance.<wbr/></p>
1629            </td>
1630
1631            <td class="entry_units">
1632              Unitless gain factors
1633            </td>
1634
1635            <td class="entry_range">
1636            </td>
1637
1638            <td class="entry_hal_version">
1639              <p>3.<wbr/>2</p>
1640            </td>
1641
1642            <td class="entry_tags">
1643            </td>
1644
1645          </tr>
1646          <tr class="entries_header">
1647            <th class="th_details" colspan="6">Details</th>
1648          </tr>
1649          <tr class="entry_cont">
1650            <td class="entry_details" colspan="6">
1651              <p>These per-channel gains are either set by the camera device
1652when the request <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not
1653TRANSFORM_<wbr/>MATRIX,<wbr/> or directly by the application in the
1654request when the <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is
1655TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1656<p>The gains in the result metadata are the gains actually
1657applied by the camera device to the current frame.<wbr/></p>
1658<p>The valid range of gains varies on different devices,<wbr/> but gains
1659between [1.<wbr/>0,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/> Even if a given
1660device allows gains below 1.<wbr/>0,<wbr/> this is usually not recommended because
1661this can create color artifacts.<wbr/></p>
1662            </td>
1663          </tr>
1664
1665          <tr class="entries_header">
1666            <th class="th_details" colspan="6">HAL Implementation Details</th>
1667          </tr>
1668          <tr class="entry_cont">
1669            <td class="entry_details" colspan="6">
1670              <p>The 4-channel white-balance gains are defined in
1671the order of <code>[R G_<wbr/>even G_<wbr/>odd B]</code>,<wbr/> where <code>G_<wbr/>even</code> is the gain
1672for green pixels on even rows of the output,<wbr/> and <code>G_<wbr/>odd</code>
1673is the gain for green pixels on the odd rows.<wbr/></p>
1674<p>If a HAL does not support a separate gain for even/<wbr/>odd green
1675channels,<wbr/> it must use the <code>G_<wbr/>even</code> value,<wbr/> and write
1676<code>G_<wbr/>odd</code> equal to <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
1677            </td>
1678          </tr>
1679
1680          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
1681           <!-- end of entry -->
1682
1683
1684          <tr class="entry" id="controls_android.colorCorrection.aberrationMode">
1685            <td class="entry_name
1686             " rowspan="3">
1687              android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode
1688            </td>
1689            <td class="entry_type">
1690                <span class="entry_type_name entry_type_name_enum">byte</span>
1691
1692              <span class="entry_type_visibility"> [public]</span>
1693
1694
1695              <span class="entry_type_hwlevel">[legacy] </span>
1696
1697
1698
1699                <ul class="entry_type_enum">
1700                  <li>
1701                    <span class="entry_type_enum_name">OFF (v3.2)</span>
1702                    <span class="entry_type_enum_notes"><p>No aberration correction is applied.<wbr/></p></span>
1703                  </li>
1704                  <li>
1705                    <span class="entry_type_enum_name">FAST (v3.2)</span>
1706                    <span class="entry_type_enum_notes"><p>Aberration correction will not slow down capture rate
1707relative to sensor raw output.<wbr/></p></span>
1708                  </li>
1709                  <li>
1710                    <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
1711                    <span class="entry_type_enum_notes"><p>Aberration correction operates at improved quality but the capture rate might be
1712reduced (relative to sensor raw output rate)</p></span>
1713                  </li>
1714                </ul>
1715
1716            </td> <!-- entry_type -->
1717
1718            <td class="entry_description">
1719              <p>Mode of operation for the chromatic aberration correction algorithm.<wbr/></p>
1720            </td>
1721
1722            <td class="entry_units">
1723            </td>
1724
1725            <td class="entry_range">
1726              <p><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></p>
1727            </td>
1728
1729            <td class="entry_hal_version">
1730              <p>3.<wbr/>2</p>
1731            </td>
1732
1733            <td class="entry_tags">
1734            </td>
1735
1736          </tr>
1737          <tr class="entries_header">
1738            <th class="th_details" colspan="6">Details</th>
1739          </tr>
1740          <tr class="entry_cont">
1741            <td class="entry_details" colspan="6">
1742              <p>Chromatic (color) aberration is caused by the fact that different wavelengths of light
1743can not focus on the same point after exiting from the lens.<wbr/> This metadata defines
1744the high level control of chromatic aberration correction algorithm,<wbr/> which aims to
1745minimize the chromatic artifacts that may occur along the object boundaries in an
1746image.<wbr/></p>
1747<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean that camera device determined aberration
1748correction will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device will
1749use the highest-quality aberration correction algorithms,<wbr/> even if it slows down
1750capture rate.<wbr/> FAST means the camera device will not slow down capture rate when
1751applying aberration correction.<wbr/></p>
1752<p>LEGACY devices will always be in FAST mode.<wbr/></p>
1753            </td>
1754          </tr>
1755
1756
1757          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
1758           <!-- end of entry -->
1759
1760
1761
1762      <!-- end of kind -->
1763      </tbody>
1764      <tr><td colspan="7" class="kind">dynamic</td></tr>
1765
1766      <thead class="entries_header">
1767        <tr>
1768          <th class="th_name">Property Name</th>
1769          <th class="th_type">Type</th>
1770          <th class="th_description">Description</th>
1771          <th class="th_units">Units</th>
1772          <th class="th_range">Range</th>
1773          <th class="th_hal_version">Initial HIDL HAL version</th>
1774          <th class="th_tags">Tags</th>
1775        </tr>
1776      </thead>
1777
1778      <tbody>
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789          <tr class="entry" id="dynamic_android.colorCorrection.mode">
1790            <td class="entry_name
1791             " rowspan="5">
1792              android.<wbr/>color<wbr/>Correction.<wbr/>mode
1793            </td>
1794            <td class="entry_type">
1795                <span class="entry_type_name entry_type_name_enum">byte</span>
1796
1797              <span class="entry_type_visibility"> [public]</span>
1798
1799
1800              <span class="entry_type_hwlevel">[full] </span>
1801
1802
1803
1804                <ul class="entry_type_enum">
1805                  <li>
1806                    <span class="entry_type_enum_name">TRANSFORM_MATRIX (v3.2)</span>
1807                    <span class="entry_type_enum_notes"><p>Use the <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> matrix
1808and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> to do color conversion.<wbr/></p>
1809<p>All advanced white balance adjustments (not specified
1810by our white balance pipeline) must be disabled.<wbr/></p>
1811<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
1812TRANSFORM_<wbr/>MATRIX is ignored.<wbr/> The camera device will override
1813this value to either FAST or HIGH_<wbr/>QUALITY.<wbr/></p></span>
1814                  </li>
1815                  <li>
1816                    <span class="entry_type_enum_name">FAST (v3.2)</span>
1817                    <span class="entry_type_enum_notes"><p>Color correction processing must not slow down
1818capture rate relative to sensor raw output.<wbr/></p>
1819<p>Advanced white balance adjustments above and beyond
1820the specified white balance pipeline may be applied.<wbr/></p>
1821<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
1822the camera device uses the last frame's AWB values
1823(or defaults if AWB has never been run).<wbr/></p></span>
1824                  </li>
1825                  <li>
1826                    <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
1827                    <span class="entry_type_enum_notes"><p>Color correction processing operates at improved
1828quality but the capture rate might be reduced (relative to sensor
1829raw output rate)</p>
1830<p>Advanced white balance adjustments above and beyond
1831the specified white balance pipeline may be applied.<wbr/></p>
1832<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
1833the camera device uses the last frame's AWB values
1834(or defaults if AWB has never been run).<wbr/></p></span>
1835                  </li>
1836                </ul>
1837
1838            </td> <!-- entry_type -->
1839
1840            <td class="entry_description">
1841              <p>The mode control selects how the image data is converted from the
1842sensor's native color into linear sRGB color.<wbr/></p>
1843            </td>
1844
1845            <td class="entry_units">
1846            </td>
1847
1848            <td class="entry_range">
1849            </td>
1850
1851            <td class="entry_hal_version">
1852              <p>3.<wbr/>2</p>
1853            </td>
1854
1855            <td class="entry_tags">
1856            </td>
1857
1858          </tr>
1859          <tr class="entries_header">
1860            <th class="th_details" colspan="6">Details</th>
1861          </tr>
1862          <tr class="entry_cont">
1863            <td class="entry_details" colspan="6">
1864              <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
1865control is overridden by the AWB routine.<wbr/> When AWB is disabled,<wbr/> the
1866application controls how the color mapping is performed.<wbr/></p>
1867<p>We define the expected processing pipeline below.<wbr/> For consistency
1868across devices,<wbr/> this is always the case with TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1869<p>When either FAST or HIGH_<wbr/>QUALITY is used,<wbr/> the camera device may
1870do additional processing but <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
1871<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> will still be provided by the
1872camera device (in the results) and be roughly correct.<wbr/></p>
1873<p>Switching to TRANSFORM_<wbr/>MATRIX and using the data provided from
1874FAST or HIGH_<wbr/>QUALITY will yield a picture with the same white point
1875as what was produced by the camera device in the earlier frame.<wbr/></p>
1876<p>The expected processing pipeline is as follows:</p>
1877<p><img alt="White balance processing pipeline" src="images/camera2/metadata/android.colorCorrection.mode/processing_pipeline.png"/></p>
1878<p>The white balance is encoded by two values,<wbr/> a 4-channel white-balance
1879gain vector (applied in the Bayer domain),<wbr/> and a 3x3 color transform
1880matrix (applied after demosaic).<wbr/></p>
1881<p>The 4-channel white-balance gains are defined as:</p>
1882<pre><code><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> = [ R G_<wbr/>even G_<wbr/>odd B ]
1883</code></pre>
1884<p>where <code>G_<wbr/>even</code> is the gain for green pixels on even rows of the
1885output,<wbr/> and <code>G_<wbr/>odd</code> is the gain for green pixels on the odd rows.<wbr/>
1886These may be identical for a given camera device implementation; if
1887the camera device does not support a separate gain for even/<wbr/>odd green
1888channels,<wbr/> it will use the <code>G_<wbr/>even</code> value,<wbr/> and write <code>G_<wbr/>odd</code> equal to
1889<code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
1890<p>The matrices for color transforms are defined as a 9-entry vector:</p>
1891<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 ]
1892</code></pre>
1893<p>which define a transform from input sensor colors,<wbr/> <code>P_<wbr/>in = [ r g b ]</code>,<wbr/>
1894to output linear sRGB,<wbr/> <code>P_<wbr/>out = [ r' g' b' ]</code>,<wbr/></p>
1895<p>with colors as follows:</p>
1896<pre><code>r' = I0r + I1g + I2b
1897g' = I3r + I4g + I5b
1898b' = I6r + I7g + I8b
1899</code></pre>
1900<p>Both the input and output value ranges must match.<wbr/> Overflow/<wbr/>underflow
1901values are clipped to fit within the range.<wbr/></p>
1902            </td>
1903          </tr>
1904
1905          <tr class="entries_header">
1906            <th class="th_details" colspan="6">HAL Implementation Details</th>
1907          </tr>
1908          <tr class="entry_cont">
1909            <td class="entry_details" colspan="6">
1910              <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if color correction control is available
1911on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
1912That is,<wbr/> if the highest quality implementation on the camera device does not slow down
1913capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY should generate the same output.<wbr/></p>
1914            </td>
1915          </tr>
1916
1917          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
1918           <!-- end of entry -->
1919
1920
1921          <tr class="entry" id="dynamic_android.colorCorrection.transform">
1922            <td class="entry_name
1923             " rowspan="3">
1924              android.<wbr/>color<wbr/>Correction.<wbr/>transform
1925            </td>
1926            <td class="entry_type">
1927                <span class="entry_type_name">rational</span>
1928                <span class="entry_type_container">x</span>
1929
1930                <span class="entry_type_array">
1931                  3 x 3
1932                </span>
1933              <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
1934
1935
1936              <span class="entry_type_hwlevel">[full] </span>
1937
1938
1939                <div class="entry_type_notes">3x3 rational matrix in row-major order</div>
1940
1941
1942            </td> <!-- entry_type -->
1943
1944            <td class="entry_description">
1945              <p>A color transform matrix to use to transform
1946from sensor RGB color space to output linear sRGB color space.<wbr/></p>
1947            </td>
1948
1949            <td class="entry_units">
1950              Unitless scale factors
1951            </td>
1952
1953            <td class="entry_range">
1954            </td>
1955
1956            <td class="entry_hal_version">
1957              <p>3.<wbr/>2</p>
1958            </td>
1959
1960            <td class="entry_tags">
1961            </td>
1962
1963          </tr>
1964          <tr class="entries_header">
1965            <th class="th_details" colspan="6">Details</th>
1966          </tr>
1967          <tr class="entry_cont">
1968            <td class="entry_details" colspan="6">
1969              <p>This matrix is either set by the camera device when the request
1970<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not TRANSFORM_<wbr/>MATRIX,<wbr/> or
1971directly by the application in the request when the
1972<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1973<p>In the latter case,<wbr/> the camera device may round the matrix to account
1974for precision issues; the final rounded matrix should be reported back
1975in this matrix result metadata.<wbr/> The transform should keep the magnitude
1976of the output color values within <code>[0,<wbr/> 1.<wbr/>0]</code> (assuming input color
1977values is within the normalized range <code>[0,<wbr/> 1.<wbr/>0]</code>),<wbr/> or clipping may occur.<wbr/></p>
1978<p>The valid range of each matrix element varies on different devices,<wbr/> but
1979values within [-1.<wbr/>5,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
1980            </td>
1981          </tr>
1982
1983
1984          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
1985           <!-- end of entry -->
1986
1987
1988          <tr class="entry" id="dynamic_android.colorCorrection.gains">
1989            <td class="entry_name
1990             " rowspan="5">
1991              android.<wbr/>color<wbr/>Correction.<wbr/>gains
1992            </td>
1993            <td class="entry_type">
1994                <span class="entry_type_name">float</span>
1995                <span class="entry_type_container">x</span>
1996
1997                <span class="entry_type_array">
1998                  4
1999                </span>
2000              <span class="entry_type_visibility"> [public as rggbChannelVector]</span>
2001
2002
2003              <span class="entry_type_hwlevel">[full] </span>
2004
2005
2006                <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div>
2007
2008
2009            </td> <!-- entry_type -->
2010
2011            <td class="entry_description">
2012              <p>Gains applying to Bayer raw color channels for
2013white-balance.<wbr/></p>
2014            </td>
2015
2016            <td class="entry_units">
2017              Unitless gain factors
2018            </td>
2019
2020            <td class="entry_range">
2021            </td>
2022
2023            <td class="entry_hal_version">
2024              <p>3.<wbr/>2</p>
2025            </td>
2026
2027            <td class="entry_tags">
2028            </td>
2029
2030          </tr>
2031          <tr class="entries_header">
2032            <th class="th_details" colspan="6">Details</th>
2033          </tr>
2034          <tr class="entry_cont">
2035            <td class="entry_details" colspan="6">
2036              <p>These per-channel gains are either set by the camera device
2037when the request <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not
2038TRANSFORM_<wbr/>MATRIX,<wbr/> or directly by the application in the
2039request when the <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is
2040TRANSFORM_<wbr/>MATRIX.<wbr/></p>
2041<p>The gains in the result metadata are the gains actually
2042applied by the camera device to the current frame.<wbr/></p>
2043<p>The valid range of gains varies on different devices,<wbr/> but gains
2044between [1.<wbr/>0,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/> Even if a given
2045device allows gains below 1.<wbr/>0,<wbr/> this is usually not recommended because
2046this can create color artifacts.<wbr/></p>
2047            </td>
2048          </tr>
2049
2050          <tr class="entries_header">
2051            <th class="th_details" colspan="6">HAL Implementation Details</th>
2052          </tr>
2053          <tr class="entry_cont">
2054            <td class="entry_details" colspan="6">
2055              <p>The 4-channel white-balance gains are defined in
2056the order of <code>[R G_<wbr/>even G_<wbr/>odd B]</code>,<wbr/> where <code>G_<wbr/>even</code> is the gain
2057for green pixels on even rows of the output,<wbr/> and <code>G_<wbr/>odd</code>
2058is the gain for green pixels on the odd rows.<wbr/></p>
2059<p>If a HAL does not support a separate gain for even/<wbr/>odd green
2060channels,<wbr/> it must use the <code>G_<wbr/>even</code> value,<wbr/> and write
2061<code>G_<wbr/>odd</code> equal to <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
2062            </td>
2063          </tr>
2064
2065          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2066           <!-- end of entry -->
2067
2068
2069          <tr class="entry" id="dynamic_android.colorCorrection.aberrationMode">
2070            <td class="entry_name
2071             " rowspan="3">
2072              android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode
2073            </td>
2074            <td class="entry_type">
2075                <span class="entry_type_name entry_type_name_enum">byte</span>
2076
2077              <span class="entry_type_visibility"> [public]</span>
2078
2079
2080              <span class="entry_type_hwlevel">[legacy] </span>
2081
2082
2083
2084                <ul class="entry_type_enum">
2085                  <li>
2086                    <span class="entry_type_enum_name">OFF (v3.2)</span>
2087                    <span class="entry_type_enum_notes"><p>No aberration correction is applied.<wbr/></p></span>
2088                  </li>
2089                  <li>
2090                    <span class="entry_type_enum_name">FAST (v3.2)</span>
2091                    <span class="entry_type_enum_notes"><p>Aberration correction will not slow down capture rate
2092relative to sensor raw output.<wbr/></p></span>
2093                  </li>
2094                  <li>
2095                    <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
2096                    <span class="entry_type_enum_notes"><p>Aberration correction operates at improved quality but the capture rate might be
2097reduced (relative to sensor raw output rate)</p></span>
2098                  </li>
2099                </ul>
2100
2101            </td> <!-- entry_type -->
2102
2103            <td class="entry_description">
2104              <p>Mode of operation for the chromatic aberration correction algorithm.<wbr/></p>
2105            </td>
2106
2107            <td class="entry_units">
2108            </td>
2109
2110            <td class="entry_range">
2111              <p><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></p>
2112            </td>
2113
2114            <td class="entry_hal_version">
2115              <p>3.<wbr/>2</p>
2116            </td>
2117
2118            <td class="entry_tags">
2119            </td>
2120
2121          </tr>
2122          <tr class="entries_header">
2123            <th class="th_details" colspan="6">Details</th>
2124          </tr>
2125          <tr class="entry_cont">
2126            <td class="entry_details" colspan="6">
2127              <p>Chromatic (color) aberration is caused by the fact that different wavelengths of light
2128can not focus on the same point after exiting from the lens.<wbr/> This metadata defines
2129the high level control of chromatic aberration correction algorithm,<wbr/> which aims to
2130minimize the chromatic artifacts that may occur along the object boundaries in an
2131image.<wbr/></p>
2132<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean that camera device determined aberration
2133correction will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device will
2134use the highest-quality aberration correction algorithms,<wbr/> even if it slows down
2135capture rate.<wbr/> FAST means the camera device will not slow down capture rate when
2136applying aberration correction.<wbr/></p>
2137<p>LEGACY devices will always be in FAST mode.<wbr/></p>
2138            </td>
2139          </tr>
2140
2141
2142          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2143           <!-- end of entry -->
2144
2145
2146
2147      <!-- end of kind -->
2148      </tbody>
2149      <tr><td colspan="7" class="kind">static</td></tr>
2150
2151      <thead class="entries_header">
2152        <tr>
2153          <th class="th_name">Property Name</th>
2154          <th class="th_type">Type</th>
2155          <th class="th_description">Description</th>
2156          <th class="th_units">Units</th>
2157          <th class="th_range">Range</th>
2158          <th class="th_hal_version">Initial HIDL HAL version</th>
2159          <th class="th_tags">Tags</th>
2160        </tr>
2161      </thead>
2162
2163      <tbody>
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
2174          <tr class="entry" id="static_android.colorCorrection.availableAberrationModes">
2175            <td class="entry_name
2176             " rowspan="5">
2177              android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes
2178            </td>
2179            <td class="entry_type">
2180                <span class="entry_type_name">byte</span>
2181                <span class="entry_type_container">x</span>
2182
2183                <span class="entry_type_array">
2184                  n
2185                </span>
2186              <span class="entry_type_visibility"> [public as enumList]</span>
2187
2188
2189              <span class="entry_type_hwlevel">[legacy] </span>
2190
2191
2192                <div class="entry_type_notes">list of enums</div>
2193
2194
2195            </td> <!-- entry_type -->
2196
2197            <td class="entry_description">
2198              <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
2199supported by this camera device.<wbr/></p>
2200            </td>
2201
2202            <td class="entry_units">
2203            </td>
2204
2205            <td class="entry_range">
2206              <p>Any value listed in <a href="#controls_android.colorCorrection.aberrationMode">android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode</a></p>
2207            </td>
2208
2209            <td class="entry_hal_version">
2210              <p>3.<wbr/>2</p>
2211            </td>
2212
2213            <td class="entry_tags">
2214              <ul class="entry_tags">
2215                  <li><a href="#tag_V1">V1</a></li>
2216              </ul>
2217            </td>
2218
2219          </tr>
2220          <tr class="entries_header">
2221            <th class="th_details" colspan="6">Details</th>
2222          </tr>
2223          <tr class="entry_cont">
2224            <td class="entry_details" colspan="6">
2225              <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
2226aberration correction modes are available for a device,<wbr/> this list will solely include
2227OFF mode.<wbr/> All camera devices will support either OFF or FAST mode.<wbr/></p>
2228<p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always list
2229OFF mode.<wbr/> This includes all FULL level devices.<wbr/></p>
2230<p>LEGACY devices will always only support FAST mode.<wbr/></p>
2231            </td>
2232          </tr>
2233
2234          <tr class="entries_header">
2235            <th class="th_details" colspan="6">HAL Implementation Details</th>
2236          </tr>
2237          <tr class="entry_cont">
2238            <td class="entry_details" colspan="6">
2239              <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if chromatic aberration control is available
2240on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
2241That is,<wbr/> if the highest quality implementation on the camera device does not slow down
2242capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
2243            </td>
2244          </tr>
2245
2246          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2247           <!-- end of entry -->
2248
2249
2250
2251      <!-- end of kind -->
2252      </tbody>
2253
2254  <!-- end of section -->
2255  <tr><td colspan="7" id="section_control" class="section">control</td></tr>
2256
2257
2258      <tr><td colspan="7" class="kind">controls</td></tr>
2259
2260      <thead class="entries_header">
2261        <tr>
2262          <th class="th_name">Property Name</th>
2263          <th class="th_type">Type</th>
2264          <th class="th_description">Description</th>
2265          <th class="th_units">Units</th>
2266          <th class="th_range">Range</th>
2267          <th class="th_hal_version">Initial HIDL HAL version</th>
2268          <th class="th_tags">Tags</th>
2269        </tr>
2270      </thead>
2271
2272      <tbody>
2273
2274
2275
2276
2277
2278
2279
2280
2281
2282
2283          <tr class="entry" id="controls_android.control.aeAntibandingMode">
2284            <td class="entry_name
2285             " rowspan="5">
2286              android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode
2287            </td>
2288            <td class="entry_type">
2289                <span class="entry_type_name entry_type_name_enum">byte</span>
2290
2291              <span class="entry_type_visibility"> [public]</span>
2292
2293
2294              <span class="entry_type_hwlevel">[legacy] </span>
2295
2296
2297
2298                <ul class="entry_type_enum">
2299                  <li>
2300                    <span class="entry_type_enum_name">OFF (v3.2)</span>
2301                    <span class="entry_type_enum_notes"><p>The camera device will not adjust exposure duration to
2302avoid banding problems.<wbr/></p></span>
2303                  </li>
2304                  <li>
2305                    <span class="entry_type_enum_name">50HZ (v3.2)</span>
2306                    <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
2307avoid banding problems with 50Hz illumination sources.<wbr/></p></span>
2308                  </li>
2309                  <li>
2310                    <span class="entry_type_enum_name">60HZ (v3.2)</span>
2311                    <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
2312avoid banding problems with 60Hz illumination
2313sources.<wbr/></p></span>
2314                  </li>
2315                  <li>
2316                    <span class="entry_type_enum_name">AUTO (v3.2)</span>
2317                    <span class="entry_type_enum_notes"><p>The camera device will automatically adapt its
2318antibanding routine to the current illumination
2319condition.<wbr/> This is the default mode if AUTO is
2320available on given camera device.<wbr/></p></span>
2321                  </li>
2322                </ul>
2323
2324            </td> <!-- entry_type -->
2325
2326            <td class="entry_description">
2327              <p>The desired setting for the camera device's auto-exposure
2328algorithm's antibanding compensation.<wbr/></p>
2329            </td>
2330
2331            <td class="entry_units">
2332            </td>
2333
2334            <td class="entry_range">
2335              <p><a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a></p>
2336            </td>
2337
2338            <td class="entry_hal_version">
2339              <p>3.<wbr/>2</p>
2340            </td>
2341
2342            <td class="entry_tags">
2343              <ul class="entry_tags">
2344                  <li><a href="#tag_BC">BC</a></li>
2345              </ul>
2346            </td>
2347
2348          </tr>
2349          <tr class="entries_header">
2350            <th class="th_details" colspan="6">Details</th>
2351          </tr>
2352          <tr class="entry_cont">
2353            <td class="entry_details" colspan="6">
2354              <p>Some kinds of lighting fixtures,<wbr/> such as some fluorescent
2355lights,<wbr/> flicker at the rate of the power supply frequency
2356(60Hz or 50Hz,<wbr/> depending on country).<wbr/> While this is
2357typically not noticeable to a person,<wbr/> it can be visible to
2358a camera device.<wbr/> If a camera sets its exposure time to the
2359wrong value,<wbr/> the flicker may become visible in the
2360viewfinder as flicker or in a final captured image,<wbr/> as a
2361set of variable-brightness bands across the image.<wbr/></p>
2362<p>Therefore,<wbr/> the auto-exposure routines of camera devices
2363include antibanding routines that ensure that the chosen
2364exposure value will not cause such banding.<wbr/> The choice of
2365exposure time depends on the rate of flicker,<wbr/> which the
2366camera device can detect automatically,<wbr/> or the expected
2367rate can be selected by the application using this
2368control.<wbr/></p>
2369<p>A given camera device may not support all of the possible
2370options for the antibanding mode.<wbr/> The
2371<a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a> key contains
2372the available modes for a given camera device.<wbr/></p>
2373<p>AUTO mode is the default if it is available on given
2374camera device.<wbr/> When AUTO mode is not available,<wbr/> the
2375default will be either 50HZ or 60HZ,<wbr/> and both 50HZ
2376and 60HZ will be available.<wbr/></p>
2377<p>If manual exposure control is enabled (by setting
2378<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/>
2379then this setting has no effect,<wbr/> and the application must
2380ensure it selects exposure times that do not cause banding
2381issues.<wbr/> The <a href="#dynamic_android.statistics.sceneFlicker">android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker</a> key can assist
2382the application in this.<wbr/></p>
2383            </td>
2384          </tr>
2385
2386          <tr class="entries_header">
2387            <th class="th_details" colspan="6">HAL Implementation Details</th>
2388          </tr>
2389          <tr class="entry_cont">
2390            <td class="entry_details" colspan="6">
2391              <p>For all capture request templates,<wbr/> this field must be set
2392to AUTO if AUTO mode is available.<wbr/> If AUTO is not available,<wbr/>
2393the default must be either 50HZ or 60HZ,<wbr/> and both 50HZ and
239460HZ must be available.<wbr/></p>
2395<p>If manual exposure control is enabled (by setting
2396<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/>
2397then the exposure values provided by the application must not be
2398adjusted for antibanding.<wbr/></p>
2399            </td>
2400          </tr>
2401
2402          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2403           <!-- end of entry -->
2404
2405
2406          <tr class="entry" id="controls_android.control.aeExposureCompensation">
2407            <td class="entry_name
2408             " rowspan="3">
2409              android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation
2410            </td>
2411            <td class="entry_type">
2412                <span class="entry_type_name">int32</span>
2413
2414              <span class="entry_type_visibility"> [public]</span>
2415
2416
2417              <span class="entry_type_hwlevel">[legacy] </span>
2418
2419
2420
2421
2422            </td> <!-- entry_type -->
2423
2424            <td class="entry_description">
2425              <p>Adjustment to auto-exposure (AE) target image
2426brightness.<wbr/></p>
2427            </td>
2428
2429            <td class="entry_units">
2430              Compensation steps
2431            </td>
2432
2433            <td class="entry_range">
2434              <p><a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a></p>
2435            </td>
2436
2437            <td class="entry_hal_version">
2438              <p>3.<wbr/>2</p>
2439            </td>
2440
2441            <td class="entry_tags">
2442              <ul class="entry_tags">
2443                  <li><a href="#tag_BC">BC</a></li>
2444              </ul>
2445            </td>
2446
2447          </tr>
2448          <tr class="entries_header">
2449            <th class="th_details" colspan="6">Details</th>
2450          </tr>
2451          <tr class="entry_cont">
2452            <td class="entry_details" colspan="6">
2453              <p>The adjustment is measured as a count of steps,<wbr/> with the
2454step size defined by <a href="#static_android.control.aeCompensationStep">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step</a> and the
2455allowed range by <a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a>.<wbr/></p>
2456<p>For example,<wbr/> if the exposure value (EV) step is 0.<wbr/>333,<wbr/> '6'
2457will mean an exposure compensation of +2 EV; -3 will mean an
2458exposure compensation of -1 EV.<wbr/> One EV represents a doubling
2459of image brightness.<wbr/> Note that this control will only be
2460effective if <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>!=</code> OFF.<wbr/> This control
2461will take effect even when <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> <code>== true</code>.<wbr/></p>
2462<p>In the event of exposure compensation value being changed,<wbr/> camera device
2463may take several frames to reach the newly requested exposure target.<wbr/>
2464During that time,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> field will be in the SEARCHING
2465state.<wbr/> Once the new exposure target is reached,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> will
2466change from SEARCHING to either CONVERGED,<wbr/> LOCKED (if AE lock is enabled),<wbr/> or
2467FLASH_<wbr/>REQUIRED (if the scene is too dark for still capture).<wbr/></p>
2468            </td>
2469          </tr>
2470
2471
2472          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2473           <!-- end of entry -->
2474
2475
2476          <tr class="entry" id="controls_android.control.aeLock">
2477            <td class="entry_name
2478             " rowspan="3">
2479              android.<wbr/>control.<wbr/>ae<wbr/>Lock
2480            </td>
2481            <td class="entry_type">
2482                <span class="entry_type_name entry_type_name_enum">byte</span>
2483
2484              <span class="entry_type_visibility"> [public as boolean]</span>
2485
2486
2487              <span class="entry_type_hwlevel">[legacy] </span>
2488
2489
2490
2491                <ul class="entry_type_enum">
2492                  <li>
2493                    <span class="entry_type_enum_name">OFF (v3.2)</span>
2494                    <span class="entry_type_enum_notes"><p>Auto-exposure lock is disabled; the AE algorithm
2495is free to update its parameters.<wbr/></p></span>
2496                  </li>
2497                  <li>
2498                    <span class="entry_type_enum_name">ON (v3.2)</span>
2499                    <span class="entry_type_enum_notes"><p>Auto-exposure lock is enabled; the AE algorithm
2500must not update the exposure and sensitivity parameters
2501while the lock is active.<wbr/></p>
2502<p><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a> setting changes
2503will still take effect while auto-exposure is locked.<wbr/></p>
2504<p>Some rare LEGACY devices may not support
2505this,<wbr/> in which case the value will always be overridden to OFF.<wbr/></p></span>
2506                  </li>
2507                </ul>
2508
2509            </td> <!-- entry_type -->
2510
2511            <td class="entry_description">
2512              <p>Whether auto-exposure (AE) is currently locked to its latest
2513calculated values.<wbr/></p>
2514            </td>
2515
2516            <td class="entry_units">
2517            </td>
2518
2519            <td class="entry_range">
2520            </td>
2521
2522            <td class="entry_hal_version">
2523              <p>3.<wbr/>2</p>
2524            </td>
2525
2526            <td class="entry_tags">
2527              <ul class="entry_tags">
2528                  <li><a href="#tag_BC">BC</a></li>
2529              </ul>
2530            </td>
2531
2532          </tr>
2533          <tr class="entries_header">
2534            <th class="th_details" colspan="6">Details</th>
2535          </tr>
2536          <tr class="entry_cont">
2537            <td class="entry_details" colspan="6">
2538              <p>When set to <code>true</code> (ON),<wbr/> the AE algorithm is locked to its latest parameters,<wbr/>
2539and will not change exposure settings until the lock is set to <code>false</code> (OFF).<wbr/></p>
2540<p>Note that even when AE is locked,<wbr/> the flash may be fired if
2541the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is ON_<wbr/>AUTO_<wbr/>FLASH /<wbr/>
2542ON_<wbr/>ALWAYS_<wbr/>FLASH /<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE.<wbr/></p>
2543<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
2544is ON,<wbr/> the camera device will still adjust its exposure value.<wbr/></p>
2545<p>If AE precapture is triggered (see <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>)
2546when AE is already locked,<wbr/> the camera device will not change the exposure time
2547(<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>)
2548parameters.<wbr/> The flash may be fired if the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>
2549is ON_<wbr/>AUTO_<wbr/>FLASH/<wbr/>ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE and the scene is too dark.<wbr/> If the
2550<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/>
2551Similarly,<wbr/> AE precapture trigger CANCEL has no effect when AE is already locked.<wbr/></p>
2552<p>When an AE precapture sequence is triggered,<wbr/> AE unlock will not be able to unlock
2553the AE if AE is locked by the camera device internally during precapture metering
2554sequence In other words,<wbr/> submitting requests with AE unlock has no effect for an
2555ongoing precapture metering sequence.<wbr/> Otherwise,<wbr/> the precapture metering sequence
2556will never succeed in a sequence of preview requests where AE lock is always set
2557to <code>false</code>.<wbr/></p>
2558<p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that
2559get locked do not necessarily correspond to the settings that were present in the
2560latest capture result received from the camera device,<wbr/> since additional captures
2561and AE updates may have occurred even before the result was sent out.<wbr/> If an
2562application is switching between automatic and manual control and wishes to eliminate
2563any flicker during the switch,<wbr/> the following procedure is recommended:</p>
2564<ol>
2565<li>Starting in auto-AE mode:</li>
2566<li>Lock AE</li>
2567<li>Wait for the first result to be output that has the AE locked</li>
2568<li>Copy exposure settings from that result into a request,<wbr/> set the request to manual AE</li>
2569<li>Submit the capture request,<wbr/> proceed to run manual AE as desired.<wbr/></li>
2570</ol>
2571<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>
2572            </td>
2573          </tr>
2574
2575
2576          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2577           <!-- end of entry -->
2578
2579
2580          <tr class="entry" id="controls_android.control.aeMode">
2581            <td class="entry_name
2582             " rowspan="3">
2583              android.<wbr/>control.<wbr/>ae<wbr/>Mode
2584            </td>
2585            <td class="entry_type">
2586                <span class="entry_type_name entry_type_name_enum">byte</span>
2587
2588              <span class="entry_type_visibility"> [public]</span>
2589
2590
2591              <span class="entry_type_hwlevel">[legacy] </span>
2592
2593
2594
2595                <ul class="entry_type_enum">
2596                  <li>
2597                    <span class="entry_type_enum_name">OFF (v3.2)</span>
2598                    <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is disabled.<wbr/></p>
2599<p>The application-selected <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
2600<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> and
2601<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are used by the camera
2602device,<wbr/> along with android.<wbr/>flash.<wbr/>* fields,<wbr/> if there's
2603a flash unit for this camera device.<wbr/></p>
2604<p>Note that auto-white balance (AWB) and auto-focus (AF)
2605behavior is device dependent when AE is in OFF mode.<wbr/>
2606To have consistent behavior across different devices,<wbr/>
2607it is recommended to either set AWB and AF to OFF mode
2608or lock AWB and AF before setting AE to OFF.<wbr/>
2609See <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/>
2610<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>
2611for more details.<wbr/></p>
2612<p>LEGACY devices do not support the OFF mode and will
2613override attempts to use this value to ON.<wbr/></p></span>
2614                  </li>
2615                  <li>
2616                    <span class="entry_type_enum_name">ON (v3.2)</span>
2617                    <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is active,<wbr/>
2618with no flash control.<wbr/></p>
2619<p>The application's values for
2620<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
2621<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
2622<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are ignored.<wbr/> The
2623application has control over the various
2624android.<wbr/>flash.<wbr/>* fields.<wbr/></p></span>
2625                  </li>
2626                  <li>
2627                    <span class="entry_type_enum_name">ON_AUTO_FLASH (v3.2)</span>
2628                    <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
2629the camera's flash unit,<wbr/> firing it in low-light
2630conditions.<wbr/></p>
2631<p>The flash may be fired during a precapture sequence
2632(triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and
2633may be fired for captures for which the
2634<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to
2635STILL_<wbr/>CAPTURE</p></span>
2636                  </li>
2637                  <li>
2638                    <span class="entry_type_enum_name">ON_ALWAYS_FLASH (v3.2)</span>
2639                    <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
2640the camera's flash unit,<wbr/> always firing it for still
2641captures.<wbr/></p>
2642<p>The flash may be fired during a precapture sequence
2643(triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and
2644will always be fired for captures for which the
2645<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to
2646STILL_<wbr/>CAPTURE</p></span>
2647                  </li>
2648                  <li>
2649                    <span class="entry_type_enum_name">ON_AUTO_FLASH_REDEYE (v3.2)</span>
2650                    <span class="entry_type_enum_notes"><p>Like ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> but with automatic red eye
2651reduction.<wbr/></p>
2652<p>If deemed necessary by the camera device,<wbr/> a red eye
2653reduction flash will fire during the precapture
2654sequence.<wbr/></p></span>
2655                  </li>
2656                  <li>
2657                    <span class="entry_type_enum_name">ON_EXTERNAL_FLASH (v3.3)</span>
2658                    <span class="entry_type_enum_notes"><p>An external flash has been turned on.<wbr/></p>
2659<p>It informs the camera device that an external flash has been turned on,<wbr/> and that
2660metering (and continuous focus if active) should be quickly recaculated to account
2661for the external flash.<wbr/> Otherwise,<wbr/> this mode acts like ON.<wbr/></p>
2662<p>When the external flash is turned off,<wbr/> AE mode should be changed to one of the
2663other available AE modes.<wbr/></p>
2664<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
2665be FLASH_<wbr/>REQUIRED after the camera device finishes AE scan and it's too dark without
2666flash.<wbr/></p></span>
2667                  </li>
2668                </ul>
2669
2670            </td> <!-- entry_type -->
2671
2672            <td class="entry_description">
2673              <p>The desired mode for the camera device's
2674auto-exposure routine.<wbr/></p>
2675            </td>
2676
2677            <td class="entry_units">
2678            </td>
2679
2680            <td class="entry_range">
2681              <p><a href="#static_android.control.aeAvailableModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes</a></p>
2682            </td>
2683
2684            <td class="entry_hal_version">
2685              <p>3.<wbr/>2</p>
2686            </td>
2687
2688            <td class="entry_tags">
2689              <ul class="entry_tags">
2690                  <li><a href="#tag_BC">BC</a></li>
2691              </ul>
2692            </td>
2693
2694          </tr>
2695          <tr class="entries_header">
2696            <th class="th_details" colspan="6">Details</th>
2697          </tr>
2698          <tr class="entry_cont">
2699            <td class="entry_details" colspan="6">
2700              <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is
2701AUTO.<wbr/></p>
2702<p>When set to any of the ON modes,<wbr/> the camera device's
2703auto-exposure routine is enabled,<wbr/> overriding the
2704application's selected exposure time,<wbr/> sensor sensitivity,<wbr/>
2705and frame duration (<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
2706<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
2707<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>).<wbr/> If one of the FLASH modes
2708is selected,<wbr/> the camera device's flash unit controls are
2709also overridden.<wbr/></p>
2710<p>The FLASH modes are only available if the camera device
2711has a flash unit (<a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> is <code>true</code>).<wbr/></p>
2712<p>If flash TORCH mode is desired,<wbr/> this field must be set to
2713ON or OFF,<wbr/> and <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> set to TORCH.<wbr/></p>
2714<p>When set to any of the ON modes,<wbr/> the values chosen by the
2715camera device auto-exposure routine for the overridden
2716fields for a given capture will be available in its
2717CaptureResult.<wbr/></p>
2718            </td>
2719          </tr>
2720
2721
2722          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2723           <!-- end of entry -->
2724
2725
2726          <tr class="entry" id="controls_android.control.aeRegions">
2727            <td class="entry_name
2728             " rowspan="5">
2729              android.<wbr/>control.<wbr/>ae<wbr/>Regions
2730            </td>
2731            <td class="entry_type">
2732                <span class="entry_type_name">int32</span>
2733                <span class="entry_type_container">x</span>
2734
2735                <span class="entry_type_array">
2736                  5 x area_count
2737                </span>
2738              <span class="entry_type_visibility"> [public as meteringRectangle]</span>
2739
2740
2741
2742
2743
2744
2745            </td> <!-- entry_type -->
2746
2747            <td class="entry_description">
2748              <p>List of metering areas to use for auto-exposure adjustment.<wbr/></p>
2749            </td>
2750
2751            <td class="entry_units">
2752              Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size or
2753            android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size depending on
2754            distortion correction capability and mode
2755            </td>
2756
2757            <td class="entry_range">
2758              <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
2759<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>
2760depending on distortion correction capability and mode</p>
2761            </td>
2762
2763            <td class="entry_hal_version">
2764              <p>3.<wbr/>2</p>
2765            </td>
2766
2767            <td class="entry_tags">
2768              <ul class="entry_tags">
2769                  <li><a href="#tag_BC">BC</a></li>
2770              </ul>
2771            </td>
2772
2773          </tr>
2774          <tr class="entries_header">
2775            <th class="th_details" colspan="6">Details</th>
2776          </tr>
2777          <tr class="entry_cont">
2778            <td class="entry_details" colspan="6">
2779              <p>Not available if <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a> is 0.<wbr/>
2780Otherwise will always be present.<wbr/></p>
2781<p>The maximum number of regions supported by the device is determined by the value
2782of <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a>.<wbr/></p>
2783<p>For devices not supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate
2784system 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
2785the top-left pixel in the active pixel array,<wbr/> and
2786(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
2787<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
2788active pixel array.<wbr/></p>
2789<p>For devices supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate
2790system depends on the mode being set.<wbr/>
2791When the distortion correction mode is OFF,<wbr/> the coordinate system follows
2792<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
2793<code>(0,<wbr/> 0)</code> being the top-left pixel of the pre-correction active array,<wbr/> and
2794(<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/>
2795<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
2796pixel in the pre-correction active pixel array.<wbr/>
2797When the distortion correction mode is not OFF,<wbr/> the coordinate system follows
2798<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> with
2799<code>(0,<wbr/> 0)</code> being the top-left pixel of the active array,<wbr/> and
2800(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
2801<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
2802active pixel array.<wbr/></p>
2803<p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight
2804for every pixel in the area.<wbr/> This means that a large metering area
2805with the same weight as a smaller area will have more effect in
2806the metering result.<wbr/> Metering areas can partially overlap and the
2807camera device will add the weights in the overlap region.<wbr/></p>
2808<p>The weights are relative to weights of other exposure metering regions,<wbr/> so if only one
2809region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0
2810weight is ignored.<wbr/></p>
2811<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
2812camera device.<wbr/></p>
2813<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
2814capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
2815region and output only the intersection rectangle as the metering region in the result
2816metadata.<wbr/>  If the region is entirely outside the crop region,<wbr/> it will be ignored and
2817not reported in the result metadata.<wbr/></p>
2818<p>Starting from API level 30,<wbr/> the coordinate system of activeArraySize or
2819preCorrectionActiveArraySize is used to represent post-zoomRatio field of view,<wbr/> not
2820pre-zoom field of view.<wbr/> This means that the same aeRegions values at different
2821<a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> represent different parts of the scene.<wbr/> The aeRegions
2822coordinates are relative to the activeArray/<wbr/>preCorrectionActiveArray representing the
2823zoomed 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
2824aeRegions at different <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> still represent the same parts of the
2825scene 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
2826activeArraySize or preCorrectionActiveArraySize still depends on distortion correction
2827mode.<wbr/></p>
2828<p>For camera devices with the
2829<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>
2830capability,<wbr/>
2831<a href="#static_android.sensor.info.activeArraySizeMaximumResolution">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution</a> /<wbr/>
2832<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
2833coordinate system for requests where <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to
2834<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>
2835            </td>
2836          </tr>
2837
2838          <tr class="entries_header">
2839            <th class="th_details" colspan="6">HAL Implementation Details</th>
2840          </tr>
2841          <tr class="entry_cont">
2842            <td class="entry_details" colspan="6">
2843              <p>The HAL level representation of MeteringRectangle[] is a
2844int[5 * area_<wbr/>count].<wbr/>
2845Every five elements represent a metering region of
2846(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
2847The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
2848exclusive on xmax and ymax.<wbr/>
2849HAL must always report metering regions in the coordinate system of pre-correction
2850active array.<wbr/></p>
2851            </td>
2852          </tr>
2853
2854          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2855           <!-- end of entry -->
2856
2857
2858          <tr class="entry" id="controls_android.control.aeTargetFpsRange">
2859            <td class="entry_name
2860             " rowspan="3">
2861              android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range
2862            </td>
2863            <td class="entry_type">
2864                <span class="entry_type_name">int32</span>
2865                <span class="entry_type_container">x</span>
2866
2867                <span class="entry_type_array">
2868                  2
2869                </span>
2870              <span class="entry_type_visibility"> [public as rangeInt]</span>
2871
2872
2873              <span class="entry_type_hwlevel">[legacy] </span>
2874
2875
2876
2877
2878            </td> <!-- entry_type -->
2879
2880            <td class="entry_description">
2881              <p>Range over which the auto-exposure routine can
2882adjust the capture frame rate to maintain good
2883exposure.<wbr/></p>
2884            </td>
2885
2886            <td class="entry_units">
2887              Frames per second (FPS)
2888            </td>
2889
2890            <td class="entry_range">
2891              <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>
2892            </td>
2893
2894            <td class="entry_hal_version">
2895              <p>3.<wbr/>2</p>
2896            </td>
2897
2898            <td class="entry_tags">
2899              <ul class="entry_tags">
2900                  <li><a href="#tag_BC">BC</a></li>
2901              </ul>
2902            </td>
2903
2904          </tr>
2905          <tr class="entries_header">
2906            <th class="th_details" colspan="6">Details</th>
2907          </tr>
2908          <tr class="entry_cont">
2909            <td class="entry_details" colspan="6">
2910              <p>Only constrains auto-exposure (AE) algorithm,<wbr/> not
2911manual control of <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> and
2912<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>.<wbr/></p>
2913            </td>
2914          </tr>
2915
2916
2917          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2918           <!-- end of entry -->
2919
2920
2921          <tr class="entry" id="controls_android.control.aePrecaptureTrigger">
2922            <td class="entry_name
2923             " rowspan="5">
2924              android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger
2925            </td>
2926            <td class="entry_type">
2927                <span class="entry_type_name entry_type_name_enum">byte</span>
2928
2929              <span class="entry_type_visibility"> [public]</span>
2930
2931
2932              <span class="entry_type_hwlevel">[limited] </span>
2933
2934
2935
2936                <ul class="entry_type_enum">
2937                  <li>
2938                    <span class="entry_type_enum_name">IDLE (v3.2)</span>
2939                    <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
2940                  </li>
2941                  <li>
2942                    <span class="entry_type_enum_name">START (v3.2)</span>
2943                    <span class="entry_type_enum_notes"><p>The precapture metering sequence will be started
2944by the camera device.<wbr/></p>
2945<p>The exact effect of the precapture trigger depends on
2946the current AE mode and state.<wbr/></p></span>
2947                  </li>
2948                  <li>
2949                    <span class="entry_type_enum_name">CANCEL (v3.2)</span>
2950                    <span class="entry_type_enum_notes"><p>The camera device will cancel any currently active or completed
2951precapture metering sequence,<wbr/> the auto-exposure routine will return to its
2952initial state.<wbr/></p></span>
2953                  </li>
2954                </ul>
2955
2956            </td> <!-- entry_type -->
2957
2958            <td class="entry_description">
2959              <p>Whether the camera device will trigger a precapture
2960metering sequence when it processes this request.<wbr/></p>
2961            </td>
2962
2963            <td class="entry_units">
2964            </td>
2965
2966            <td class="entry_range">
2967            </td>
2968
2969            <td class="entry_hal_version">
2970              <p>3.<wbr/>2</p>
2971            </td>
2972
2973            <td class="entry_tags">
2974              <ul class="entry_tags">
2975                  <li><a href="#tag_BC">BC</a></li>
2976              </ul>
2977            </td>
2978
2979          </tr>
2980          <tr class="entries_header">
2981            <th class="th_details" colspan="6">Details</th>
2982          </tr>
2983          <tr class="entry_cont">
2984            <td class="entry_details" colspan="6">
2985              <p>This entry is normally set to IDLE,<wbr/> or is not
2986included at all in the request settings.<wbr/> When included and
2987set to START,<wbr/> the camera device will trigger the auto-exposure (AE)
2988precapture metering sequence.<wbr/></p>
2989<p>When set to CANCEL,<wbr/> the camera device will cancel any active
2990precapture metering trigger,<wbr/> and return to its initial AE state.<wbr/>
2991If a precapture metering sequence is already completed,<wbr/> and the camera
2992device has implicitly locked the AE for subsequent still capture,<wbr/> the
2993CANCEL trigger will unlock the AE and return to its initial AE state.<wbr/></p>
2994<p>The precapture sequence should be triggered before starting a
2995high-quality still capture for final metering decisions to
2996be made,<wbr/> and for firing pre-capture flash pulses to estimate
2997scene brightness and required final capture flash power,<wbr/> when
2998the flash is enabled.<wbr/></p>
2999<p>Normally,<wbr/> this entry should be set to START for only a
3000single request,<wbr/> and the application should wait until the
3001sequence completes before starting a new one.<wbr/></p>
3002<p>When a precapture metering sequence is finished,<wbr/> the camera device
3003may lock the auto-exposure routine internally to be able to accurately expose the
3004subsequent still capture image (<code><a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE</code>).<wbr/>
3005For this case,<wbr/> the AE may not resume normal scan if no subsequent still capture is
3006submitted.<wbr/> To ensure that the AE routine restarts normal scan,<wbr/> the application should
3007submit 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
3008with <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
3009still capture request after the precapture sequence completes.<wbr/> Alternatively,<wbr/> for
3010API level 23 or newer devices,<wbr/> the CANCEL can be used to unlock the camera device
3011internally locked AE if the application doesn't submit a still capture request after
3012the AE precapture trigger.<wbr/> Note that,<wbr/> the CANCEL was added in API level 23,<wbr/> and must not
3013be used in devices that have earlier API levels.<wbr/></p>
3014<p>The exact effect of auto-exposure (AE) precapture trigger
3015depends on the current AE mode and state; see
3016<a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> for AE precapture state transition
3017details.<wbr/></p>
3018<p>On LEGACY-level devices,<wbr/> the precapture trigger is not supported;
3019capturing a high-resolution JPEG image will automatically trigger a
3020precapture sequence before the high-resolution capture,<wbr/> including
3021potentially firing a pre-capture flash.<wbr/></p>
3022<p>Using the precapture trigger and the auto-focus trigger <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>
3023simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between
3024the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a
3025focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous
3026trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and
3027changes to <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> indicating the start of the precapture sequence,<wbr/> for
3028example.<wbr/></p>
3029<p>If both the precapture and the auto-focus trigger are activated on the same request,<wbr/> then
3030the camera device will complete them in the optimal order for that device.<wbr/></p>
3031            </td>
3032          </tr>
3033
3034          <tr class="entries_header">
3035            <th class="th_details" colspan="6">HAL Implementation Details</th>
3036          </tr>
3037          <tr class="entry_cont">
3038            <td class="entry_details" colspan="6">
3039              <p>The HAL must support triggering the AE precapture trigger while an AF trigger is active
3040(and vice versa),<wbr/> or at the same time as the AF trigger.<wbr/>  It is acceptable for the HAL to
3041treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the
3042AE trigger.<wbr/>  Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/>
3043to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p>
3044            </td>
3045          </tr>
3046
3047          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3048           <!-- end of entry -->
3049
3050
3051          <tr class="entry" id="controls_android.control.afMode">
3052            <td class="entry_name
3053             " rowspan="5">
3054              android.<wbr/>control.<wbr/>af<wbr/>Mode
3055            </td>
3056            <td class="entry_type">
3057                <span class="entry_type_name entry_type_name_enum">byte</span>
3058
3059              <span class="entry_type_visibility"> [public]</span>
3060
3061
3062              <span class="entry_type_hwlevel">[legacy] </span>
3063
3064
3065
3066                <ul class="entry_type_enum">
3067                  <li>
3068                    <span class="entry_type_enum_name">OFF (v3.2)</span>
3069                    <span class="entry_type_enum_notes"><p>The auto-focus routine does not control the lens;
3070<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> is controlled by the
3071application.<wbr/></p></span>
3072                  </li>
3073                  <li>
3074                    <span class="entry_type_enum_name">AUTO (v3.2)</span>
3075                    <span class="entry_type_enum_notes"><p>Basic automatic focus mode.<wbr/></p>
3076<p>In this mode,<wbr/> the lens does not move unless
3077the autofocus trigger action is called.<wbr/> When that trigger
3078is activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
3079the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/></p>
3080<p>Always supported if lens is not fixed focus.<wbr/></p>
3081<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
3082is fixed-focus.<wbr/></p>
3083<p>Triggering AF_<wbr/>CANCEL resets the lens position to default,<wbr/>
3084and sets the AF state to INACTIVE.<wbr/></p></span>
3085                  </li>
3086                  <li>
3087                    <span class="entry_type_enum_name">MACRO (v3.2)</span>
3088                    <span class="entry_type_enum_notes"><p>Close-up focusing mode.<wbr/></p>
3089<p>In this mode,<wbr/> the lens does not move unless the
3090autofocus trigger action is called.<wbr/> When that trigger is
3091activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
3092the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/> This
3093mode is optimized for focusing on objects very close to
3094the camera.<wbr/></p>
3095<p>When that trigger is activated,<wbr/> AF will transition to
3096ACTIVE_<wbr/>SCAN,<wbr/> then to the outcome of the scan (FOCUSED or
3097NOT_<wbr/>FOCUSED).<wbr/> Triggering cancel AF resets the lens
3098position to default,<wbr/> and sets the AF state to
3099INACTIVE.<wbr/></p></span>
3100                  </li>
3101                  <li>
3102                    <span class="entry_type_enum_name">CONTINUOUS_VIDEO (v3.2)</span>
3103                    <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
3104position continually to attempt to provide a
3105constantly-in-focus image stream.<wbr/></p>
3106<p>The focusing behavior should be suitable for good quality
3107video recording; typically this means slower focus
3108movement and no overshoots.<wbr/> When the AF trigger is not
3109involved,<wbr/> the AF algorithm should start in INACTIVE state,<wbr/>
3110and then transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED
3111states as appropriate.<wbr/> When the AF trigger is activated,<wbr/>
3112the algorithm should immediately transition into
3113AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the
3114lens position until a cancel AF trigger is received.<wbr/></p>
3115<p>Once cancel is received,<wbr/> the algorithm should transition
3116back to INACTIVE and resume passive scan.<wbr/> Note that this
3117behavior is not identical to CONTINUOUS_<wbr/>PICTURE,<wbr/> since an
3118ongoing PASSIVE_<wbr/>SCAN must immediately be
3119canceled.<wbr/></p></span>
3120                  </li>
3121                  <li>
3122                    <span class="entry_type_enum_name">CONTINUOUS_PICTURE (v3.2)</span>
3123                    <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
3124position continually to attempt to provide a
3125constantly-in-focus image stream.<wbr/></p>
3126<p>The focusing behavior should be suitable for still image
3127capture; typically this means focusing as fast as
3128possible.<wbr/> When the AF trigger is not involved,<wbr/> the AF
3129algorithm should start in INACTIVE state,<wbr/> and then
3130transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED states as
3131appropriate as it attempts to maintain focus.<wbr/> When the AF
3132trigger is activated,<wbr/> the algorithm should finish its
3133PASSIVE_<wbr/>SCAN if active,<wbr/> and then transition into
3134AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the
3135lens position until a cancel AF trigger is received.<wbr/></p>
3136<p>When the AF cancel trigger is activated,<wbr/> the algorithm
3137should transition back to INACTIVE and then act as if it
3138has just been started.<wbr/></p></span>
3139                  </li>
3140                  <li>
3141                    <span class="entry_type_enum_name">EDOF (v3.2)</span>
3142                    <span class="entry_type_enum_notes"><p>Extended depth of field (digital focus) mode.<wbr/></p>
3143<p>The camera device will produce images with an extended
3144depth of field automatically; no special focusing
3145operations need to be done before taking a picture.<wbr/></p>
3146<p>AF triggers are ignored,<wbr/> and the AF state will always be
3147INACTIVE.<wbr/></p></span>
3148                  </li>
3149                </ul>
3150
3151            </td> <!-- entry_type -->
3152
3153            <td class="entry_description">
3154              <p>Whether auto-focus (AF) is currently enabled,<wbr/> and what
3155mode it is set to.<wbr/></p>
3156            </td>
3157
3158            <td class="entry_units">
3159            </td>
3160
3161            <td class="entry_range">
3162              <p><a href="#static_android.control.afAvailableModes">android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes</a></p>
3163            </td>
3164
3165            <td class="entry_hal_version">
3166              <p>3.<wbr/>2</p>
3167            </td>
3168
3169            <td class="entry_tags">
3170              <ul class="entry_tags">
3171                  <li><a href="#tag_BC">BC</a></li>
3172              </ul>
3173            </td>
3174
3175          </tr>
3176          <tr class="entries_header">
3177            <th class="th_details" colspan="6">Details</th>
3178          </tr>
3179          <tr class="entry_cont">
3180            <td class="entry_details" colspan="6">
3181              <p>Only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> = AUTO and the lens is not fixed focus
3182(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
3183when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> the behavior of AF is device
3184dependent.<wbr/> It is recommended to lock AF by using <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a> before
3185setting <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>
3186<p>If the lens is controlled by the camera device auto-focus algorithm,<wbr/>
3187the camera device will report the current AF status in <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>
3188in result metadata.<wbr/></p>
3189            </td>
3190          </tr>
3191
3192          <tr class="entries_header">
3193            <th class="th_details" colspan="6">HAL Implementation Details</th>
3194          </tr>
3195          <tr class="entry_cont">
3196            <td class="entry_details" colspan="6">
3197              <p>When afMode is AUTO or MACRO,<wbr/> the lens must not move until an AF trigger is sent in a
3198request (<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
3199up with either FOCUSED_<wbr/>LOCKED or NOT_<wbr/>FOCUSED_<wbr/>LOCKED state (see
3200<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
3201locked and will not move.<wbr/> If camera movement (e.<wbr/>g.<wbr/> tilting camera) causes the lens to move
3202after the lens is locked,<wbr/> the HAL must compensate this movement appropriately such that
3203the same focal plane remains in focus.<wbr/></p>
3204<p>When afMode is one of the continuous auto focus modes,<wbr/> the HAL is free to start a AF
3205scan whenever it's not locked.<wbr/> When the lens is locked after an AF trigger
3206(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
3207same lock behavior as above.<wbr/></p>
3208<p>When afMode is OFF,<wbr/> the application controls focus manually.<wbr/> The accuracy of the
3209focus 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/>
3210However,<wbr/> the lens must not move regardless of the camera movement for any focus distance
3211manual control.<wbr/></p>
3212<p>To put this in concrete terms,<wbr/> if the camera has lens elements which may move based on
3213camera orientation or motion (e.<wbr/>g.<wbr/> due to gravity),<wbr/> then the HAL must drive the lens to
3214remain in a fixed position invariant to the camera's orientation or motion,<wbr/> for example,<wbr/>
3215by using accelerometer measurements in the lens control logic.<wbr/> This is a typical issue
3216that will arise on camera modules with open-loop VCMs.<wbr/></p>
3217            </td>
3218          </tr>
3219
3220          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3221           <!-- end of entry -->
3222
3223
3224          <tr class="entry" id="controls_android.control.afRegions">
3225            <td class="entry_name
3226             " rowspan="5">
3227              android.<wbr/>control.<wbr/>af<wbr/>Regions
3228            </td>
3229            <td class="entry_type">
3230                <span class="entry_type_name">int32</span>
3231                <span class="entry_type_container">x</span>
3232
3233                <span class="entry_type_array">
3234                  5 x area_count
3235                </span>
3236              <span class="entry_type_visibility"> [public as meteringRectangle]</span>
3237
3238
3239
3240
3241
3242
3243            </td> <!-- entry_type -->
3244
3245            <td class="entry_description">
3246              <p>List of metering areas to use for auto-focus.<wbr/></p>
3247            </td>
3248
3249            <td class="entry_units">
3250              Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size or
3251            android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size depending on
3252            distortion correction capability and mode
3253            </td>
3254
3255            <td class="entry_range">
3256              <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
3257<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>
3258depending on distortion correction capability and mode</p>
3259            </td>
3260
3261            <td class="entry_hal_version">
3262              <p>3.<wbr/>2</p>
3263            </td>
3264
3265            <td class="entry_tags">
3266              <ul class="entry_tags">
3267                  <li><a href="#tag_BC">BC</a></li>
3268              </ul>
3269            </td>
3270
3271          </tr>
3272          <tr class="entries_header">
3273            <th class="th_details" colspan="6">Details</th>
3274          </tr>
3275          <tr class="entry_cont">
3276            <td class="entry_details" colspan="6">
3277              <p>Not available if <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a> is 0.<wbr/>
3278Otherwise will always be present.<wbr/></p>
3279<p>The maximum number of focus areas supported by the device is determined by the value
3280of <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a>.<wbr/></p>
3281<p>For devices not supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate
3282system 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
3283the top-left pixel in the active pixel array,<wbr/> and
3284(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
3285<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
3286active pixel array.<wbr/></p>
3287<p>For devices supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate
3288system depends on the mode being set.<wbr/>
3289When the distortion correction mode is OFF,<wbr/> the coordinate system follows
3290<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
3291<code>(0,<wbr/> 0)</code> being the top-left pixel of the pre-correction active array,<wbr/> and
3292(<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/>
3293<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
3294pixel in the pre-correction active pixel array.<wbr/>
3295When the distortion correction mode is not OFF,<wbr/> the coordinate system follows
3296<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> with
3297<code>(0,<wbr/> 0)</code> being the top-left pixel of the active array,<wbr/> and
3298(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
3299<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
3300active pixel array.<wbr/></p>
3301<p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight
3302for every pixel in the area.<wbr/> This means that a large metering area
3303with the same weight as a smaller area will have more effect in
3304the metering result.<wbr/> Metering areas can partially overlap and the
3305camera device will add the weights in the overlap region.<wbr/></p>
3306<p>The weights are relative to weights of other metering regions,<wbr/> so if only one region
3307is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0 weight is
3308ignored.<wbr/></p>
3309<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
3310camera device.<wbr/> The capture result will either be a zero weight region as well,<wbr/> or
3311the region selected by the camera device as the focus area of interest.<wbr/></p>
3312<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
3313capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
3314region and output only the intersection rectangle as the metering region in the result
3315metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and
3316not reported in the result metadata.<wbr/></p>
3317<p>Starting from API level 30,<wbr/> the coordinate system of activeArraySize or
3318preCorrectionActiveArraySize is used to represent post-zoomRatio field of view,<wbr/> not
3319pre-zoom field of view.<wbr/> This means that the same afRegions values at different
3320<a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> represent different parts of the scene.<wbr/> The afRegions
3321coordinates are relative to the activeArray/<wbr/>preCorrectionActiveArray representing the
3322zoomed 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
3323afRegions at different <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> still represent the same parts of the
3324scene 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
3325activeArraySize or preCorrectionActiveArraySize still depends on distortion correction
3326mode.<wbr/></p>
3327<p>For camera devices with the
3328<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>
3329capability,<wbr/> <a href="#static_android.sensor.info.activeArraySizeMaximumResolution">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution</a> /<wbr/>
3330<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
3331coordinate system for requests where <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to
3332<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>
3333            </td>
3334          </tr>
3335
3336          <tr class="entries_header">
3337            <th class="th_details" colspan="6">HAL Implementation Details</th>
3338          </tr>
3339          <tr class="entry_cont">
3340            <td class="entry_details" colspan="6">
3341              <p>The HAL level representation of MeteringRectangle[] is a
3342int[5 * area_<wbr/>count].<wbr/>
3343Every five elements represent a metering region of
3344(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
3345The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
3346exclusive on xmax and ymax.<wbr/>
3347HAL must always report metering regions in the coordinate system of pre-correction
3348active array.<wbr/></p>
3349            </td>
3350          </tr>
3351
3352          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3353           <!-- end of entry -->
3354
3355
3356          <tr class="entry" id="controls_android.control.afTrigger">
3357            <td class="entry_name
3358             " rowspan="5">
3359              android.<wbr/>control.<wbr/>af<wbr/>Trigger
3360            </td>
3361            <td class="entry_type">
3362                <span class="entry_type_name entry_type_name_enum">byte</span>
3363
3364              <span class="entry_type_visibility"> [public]</span>
3365
3366
3367              <span class="entry_type_hwlevel">[legacy] </span>
3368
3369
3370
3371                <ul class="entry_type_enum">
3372                  <li>
3373                    <span class="entry_type_enum_name">IDLE (v3.2)</span>
3374                    <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
3375                  </li>
3376                  <li>
3377                    <span class="entry_type_enum_name">START (v3.2)</span>
3378                    <span class="entry_type_enum_notes"><p>Autofocus will trigger now.<wbr/></p></span>
3379                  </li>
3380                  <li>
3381                    <span class="entry_type_enum_name">CANCEL (v3.2)</span>
3382                    <span class="entry_type_enum_notes"><p>Autofocus will return to its initial
3383state,<wbr/> and cancel any currently active trigger.<wbr/></p></span>
3384                  </li>
3385                </ul>
3386
3387            </td> <!-- entry_type -->
3388
3389            <td class="entry_description">
3390              <p>Whether the camera device will trigger autofocus for this request.<wbr/></p>
3391            </td>
3392
3393            <td class="entry_units">
3394            </td>
3395
3396            <td class="entry_range">
3397            </td>
3398
3399            <td class="entry_hal_version">
3400              <p>3.<wbr/>2</p>
3401            </td>
3402
3403            <td class="entry_tags">
3404              <ul class="entry_tags">
3405                  <li><a href="#tag_BC">BC</a></li>
3406              </ul>
3407            </td>
3408
3409          </tr>
3410          <tr class="entries_header">
3411            <th class="th_details" colspan="6">Details</th>
3412          </tr>
3413          <tr class="entry_cont">
3414            <td class="entry_details" colspan="6">
3415              <p>This entry is normally set to IDLE,<wbr/> or is not
3416included at all in the request settings.<wbr/></p>
3417<p>When included and set to START,<wbr/> the camera device will trigger the
3418autofocus algorithm.<wbr/> If autofocus is disabled,<wbr/> this trigger has no effect.<wbr/></p>
3419<p>When set to CANCEL,<wbr/> the camera device will cancel any active trigger,<wbr/>
3420and return to its initial AF state.<wbr/></p>
3421<p>Generally,<wbr/> applications should set this entry to START or CANCEL for only a
3422single capture,<wbr/> and then return it to IDLE (or not set at all).<wbr/> Specifying
3423START for multiple captures in a row means restarting the AF operation over
3424and over again.<wbr/></p>
3425<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>
3426<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>
3427simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between
3428the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a
3429focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous
3430trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and
3431changes to <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>,<wbr/> for example.<wbr/></p>
3432            </td>
3433          </tr>
3434
3435          <tr class="entries_header">
3436            <th class="th_details" colspan="6">HAL Implementation Details</th>
3437          </tr>
3438          <tr class="entry_cont">
3439            <td class="entry_details" colspan="6">
3440              <p>The HAL must support triggering the AF trigger while an AE precapture trigger is active
3441(and vice versa),<wbr/> or at the same time as the AE trigger.<wbr/>  It is acceptable for the HAL to
3442treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the
3443AE trigger.<wbr/>  Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/>
3444to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p>
3445            </td>
3446          </tr>
3447
3448          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3449           <!-- end of entry -->
3450
3451
3452          <tr class="entry" id="controls_android.control.awbLock">
3453            <td class="entry_name
3454             " rowspan="3">
3455              android.<wbr/>control.<wbr/>awb<wbr/>Lock
3456            </td>
3457            <td class="entry_type">
3458                <span class="entry_type_name entry_type_name_enum">byte</span>
3459
3460              <span class="entry_type_visibility"> [public as boolean]</span>
3461
3462
3463              <span class="entry_type_hwlevel">[legacy] </span>
3464
3465
3466
3467                <ul class="entry_type_enum">
3468                  <li>
3469                    <span class="entry_type_enum_name">OFF (v3.2)</span>
3470                    <span class="entry_type_enum_notes"><p>Auto-white balance lock is disabled; the AWB
3471algorithm is free to update its parameters if in AUTO
3472mode.<wbr/></p></span>
3473                  </li>
3474                  <li>
3475                    <span class="entry_type_enum_name">ON (v3.2)</span>
3476                    <span class="entry_type_enum_notes"><p>Auto-white balance lock is enabled; the AWB
3477algorithm will not update its parameters while the lock
3478is active.<wbr/></p></span>
3479                  </li>
3480                </ul>
3481
3482            </td> <!-- entry_type -->
3483
3484            <td class="entry_description">
3485              <p>Whether auto-white balance (AWB) is currently locked to its
3486latest calculated values.<wbr/></p>
3487            </td>
3488
3489            <td class="entry_units">
3490            </td>
3491
3492            <td class="entry_range">
3493            </td>
3494
3495            <td class="entry_hal_version">
3496              <p>3.<wbr/>2</p>
3497            </td>
3498
3499            <td class="entry_tags">
3500              <ul class="entry_tags">
3501                  <li><a href="#tag_BC">BC</a></li>
3502              </ul>
3503            </td>
3504
3505          </tr>
3506          <tr class="entries_header">
3507            <th class="th_details" colspan="6">Details</th>
3508          </tr>
3509          <tr class="entry_cont">
3510            <td class="entry_details" colspan="6">
3511              <p>When set to <code>true</code> (ON),<wbr/> the AWB algorithm is locked to its latest parameters,<wbr/>
3512and will not change color balance settings until the lock is set to <code>false</code> (OFF).<wbr/></p>
3513<p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that
3514get locked do not necessarily correspond to the settings that were present in the
3515latest capture result received from the camera device,<wbr/> since additional captures
3516and AWB updates may have occurred even before the result was sent out.<wbr/> If an
3517application is switching between automatic and manual control and wishes to eliminate
3518any flicker during the switch,<wbr/> the following procedure is recommended:</p>
3519<ol>
3520<li>Starting in auto-AWB mode:</li>
3521<li>Lock AWB</li>
3522<li>Wait for the first result to be output that has the AWB locked</li>
3523<li>Copy AWB settings from that result into a request,<wbr/> set the request to manual AWB</li>
3524<li>Submit the capture request,<wbr/> proceed to run manual AWB as desired.<wbr/></li>
3525</ol>
3526<p>Note that AWB lock is only meaningful when
3527<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is in the AUTO mode; in other modes,<wbr/>
3528AWB is already fixed to a specific setting.<wbr/></p>
3529<p>Some LEGACY devices may not support ON; the value is then overridden to OFF.<wbr/></p>
3530            </td>
3531          </tr>
3532
3533
3534          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3535           <!-- end of entry -->
3536
3537
3538          <tr class="entry" id="controls_android.control.awbMode">
3539            <td class="entry_name
3540             " rowspan="3">
3541              android.<wbr/>control.<wbr/>awb<wbr/>Mode
3542            </td>
3543            <td class="entry_type">
3544                <span class="entry_type_name entry_type_name_enum">byte</span>
3545
3546              <span class="entry_type_visibility"> [public]</span>
3547
3548
3549              <span class="entry_type_hwlevel">[legacy] </span>
3550
3551
3552
3553                <ul class="entry_type_enum">
3554                  <li>
3555                    <span class="entry_type_enum_name">OFF (v3.2)</span>
3556                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled.<wbr/></p>
3557<p>The application-selected color transform matrix
3558(<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>) and gains
3559(<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a>) are used by the camera
3560device for manual white balance control.<wbr/></p></span>
3561                  </li>
3562                  <li>
3563                    <span class="entry_type_enum_name">AUTO (v3.2)</span>
3564                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is active.<wbr/></p>
3565<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3566and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3567For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3568values used by the camera device for the transform and gains
3569will be available in the capture result for this request.<wbr/></p></span>
3570                  </li>
3571                  <li>
3572                    <span class="entry_type_enum_name">INCANDESCENT (v3.2)</span>
3573                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3574the camera device uses incandescent light as the assumed scene
3575illumination for white balance.<wbr/></p>
3576<p>While the exact white balance transforms are up to the
3577camera device,<wbr/> they will approximately match the CIE
3578standard illuminant A.<wbr/></p>
3579<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3580and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3581For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3582values used by the camera device for the transform and gains
3583will be available in the capture result for this request.<wbr/></p></span>
3584                  </li>
3585                  <li>
3586                    <span class="entry_type_enum_name">FLUORESCENT (v3.2)</span>
3587                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3588the camera device uses fluorescent light as the assumed scene
3589illumination for white balance.<wbr/></p>
3590<p>While the exact white balance transforms are up to the
3591camera device,<wbr/> they will approximately match the CIE
3592standard illuminant F2.<wbr/></p>
3593<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3594and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3595For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3596values used by the camera device for the transform and gains
3597will be available in the capture result for this request.<wbr/></p></span>
3598                  </li>
3599                  <li>
3600                    <span class="entry_type_enum_name">WARM_FLUORESCENT (v3.2)</span>
3601                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3602the camera device uses warm fluorescent light as the assumed scene
3603illumination for white balance.<wbr/></p>
3604<p>While the exact white balance transforms are up to the
3605camera device,<wbr/> they will approximately match the CIE
3606standard illuminant F4.<wbr/></p>
3607<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3608and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3609For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3610values used by the camera device for the transform and gains
3611will be available in the capture result for this request.<wbr/></p></span>
3612                  </li>
3613                  <li>
3614                    <span class="entry_type_enum_name">DAYLIGHT (v3.2)</span>
3615                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3616the camera device uses daylight light as the assumed scene
3617illumination for white balance.<wbr/></p>
3618<p>While the exact white balance transforms are up to the
3619camera device,<wbr/> they will approximately match the CIE
3620standard illuminant D65.<wbr/></p>
3621<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3622and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3623For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3624values used by the camera device for the transform and gains
3625will be available in the capture result for this request.<wbr/></p></span>
3626                  </li>
3627                  <li>
3628                    <span class="entry_type_enum_name">CLOUDY_DAYLIGHT (v3.2)</span>
3629                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3630the camera device uses cloudy daylight light as the assumed scene
3631illumination for white balance.<wbr/></p>
3632<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3633and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3634For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3635values used by the camera device for the transform and gains
3636will be available in the capture result for this request.<wbr/></p></span>
3637                  </li>
3638                  <li>
3639                    <span class="entry_type_enum_name">TWILIGHT (v3.2)</span>
3640                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3641the camera device uses twilight light as the assumed scene
3642illumination for white balance.<wbr/></p>
3643<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3644and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3645For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3646values used by the camera device for the transform and gains
3647will be available in the capture result for this request.<wbr/></p></span>
3648                  </li>
3649                  <li>
3650                    <span class="entry_type_enum_name">SHADE (v3.2)</span>
3651                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3652the camera device uses shade light as the assumed scene
3653illumination for white balance.<wbr/></p>
3654<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3655and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3656For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3657values used by the camera device for the transform and gains
3658will be available in the capture result for this request.<wbr/></p></span>
3659                  </li>
3660                </ul>
3661
3662            </td> <!-- entry_type -->
3663
3664            <td class="entry_description">
3665              <p>Whether auto-white balance (AWB) is currently setting the color
3666transform fields,<wbr/> and what its illumination target
3667is.<wbr/></p>
3668            </td>
3669
3670            <td class="entry_units">
3671            </td>
3672
3673            <td class="entry_range">
3674              <p><a href="#static_android.control.awbAvailableModes">android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes</a></p>
3675            </td>
3676
3677            <td class="entry_hal_version">
3678              <p>3.<wbr/>2</p>
3679            </td>
3680
3681            <td class="entry_tags">
3682              <ul class="entry_tags">
3683                  <li><a href="#tag_BC">BC</a></li>
3684              </ul>
3685            </td>
3686
3687          </tr>
3688          <tr class="entries_header">
3689            <th class="th_details" colspan="6">Details</th>
3690          </tr>
3691          <tr class="entry_cont">
3692            <td class="entry_details" colspan="6">
3693              <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is AUTO.<wbr/></p>
3694<p>When set to the AUTO mode,<wbr/> the camera device's auto-white balance
3695routine is enabled,<wbr/> overriding the application's selected
3696<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
3697<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>
3698is OFF,<wbr/> the behavior of AWB is device dependent.<wbr/> It is recommened to
3699also 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
3700setting AE mode to OFF.<wbr/></p>
3701<p>When set to the OFF mode,<wbr/> the camera device's auto-white balance
3702routine is disabled.<wbr/> The application manually controls the white
3703balance 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>
3704and <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/></p>
3705<p>When set to any other modes,<wbr/> the camera device's auto-white
3706balance routine is disabled.<wbr/> The camera device uses each
3707particular illumination target for white balance
3708adjustment.<wbr/> The application's values for
3709<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>,<wbr/>
3710<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
3711<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> are ignored.<wbr/></p>
3712            </td>
3713          </tr>
3714
3715
3716          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3717           <!-- end of entry -->
3718
3719
3720          <tr class="entry" id="controls_android.control.awbRegions">
3721            <td class="entry_name
3722             " rowspan="5">
3723              android.<wbr/>control.<wbr/>awb<wbr/>Regions
3724            </td>
3725            <td class="entry_type">
3726                <span class="entry_type_name">int32</span>
3727                <span class="entry_type_container">x</span>
3728
3729                <span class="entry_type_array">
3730                  5 x area_count
3731                </span>
3732              <span class="entry_type_visibility"> [public as meteringRectangle]</span>
3733
3734
3735
3736
3737
3738
3739            </td> <!-- entry_type -->
3740
3741            <td class="entry_description">
3742              <p>List of metering areas to use for auto-white-balance illuminant
3743estimation.<wbr/></p>
3744            </td>
3745
3746            <td class="entry_units">
3747              Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size or
3748            android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size depending on
3749            distortion correction capability and mode
3750            </td>
3751
3752            <td class="entry_range">
3753              <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
3754<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>
3755depending on distortion correction capability and mode</p>
3756            </td>
3757
3758            <td class="entry_hal_version">
3759              <p>3.<wbr/>2</p>
3760            </td>
3761
3762            <td class="entry_tags">
3763              <ul class="entry_tags">
3764                  <li><a href="#tag_BC">BC</a></li>
3765              </ul>
3766            </td>
3767
3768          </tr>
3769          <tr class="entries_header">
3770            <th class="th_details" colspan="6">Details</th>
3771          </tr>
3772          <tr class="entry_cont">
3773            <td class="entry_details" colspan="6">
3774              <p>Not available if <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a> is 0.<wbr/>
3775Otherwise will always be present.<wbr/></p>
3776<p>The maximum number of regions supported by the device is determined by the value
3777of <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a>.<wbr/></p>
3778<p>For devices not supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate
3779system 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
3780the top-left pixel in the active pixel array,<wbr/> and
3781(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
3782<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
3783active pixel array.<wbr/></p>
3784<p>For devices supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate
3785system depends on the mode being set.<wbr/>
3786When the distortion correction mode is OFF,<wbr/> the coordinate system follows
3787<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
3788<code>(0,<wbr/> 0)</code> being the top-left pixel of the pre-correction active array,<wbr/> and
3789(<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/>
3790<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
3791pixel in the pre-correction active pixel array.<wbr/>
3792When the distortion correction mode is not OFF,<wbr/> the coordinate system follows
3793<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> with
3794<code>(0,<wbr/> 0)</code> being the top-left pixel of the active array,<wbr/> and
3795(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
3796<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
3797active pixel array.<wbr/></p>
3798<p>The weight must range from 0 to 1000,<wbr/> and represents a weight
3799for every pixel in the area.<wbr/> This means that a large metering area
3800with the same weight as a smaller area will have more effect in
3801the metering result.<wbr/> Metering areas can partially overlap and the
3802camera device will add the weights in the overlap region.<wbr/></p>
3803<p>The weights are relative to weights of other white balance metering regions,<wbr/> so if
3804only one region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with
38050 weight is ignored.<wbr/></p>
3806<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
3807camera device.<wbr/></p>
3808<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
3809capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
3810region and output only the intersection rectangle as the metering region in the result
3811metadata.<wbr/>  If the region is entirely outside the crop region,<wbr/> it will be ignored and
3812not reported in the result metadata.<wbr/></p>
3813<p>Starting from API level 30,<wbr/> the coordinate system of activeArraySize or
3814preCorrectionActiveArraySize is used to represent post-zoomRatio field of view,<wbr/> not
3815pre-zoom field of view.<wbr/> This means that the same awbRegions values at different
3816<a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> represent different parts of the scene.<wbr/> The awbRegions
3817coordinates are relative to the activeArray/<wbr/>preCorrectionActiveArray representing the
3818zoomed 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
3819awbRegions at different <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> still represent the same parts of
3820the 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
3821activeArraySize or preCorrectionActiveArraySize still depends on distortion correction
3822mode.<wbr/></p>
3823<p>For camera devices with the
3824<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>
3825capability,<wbr/> <a href="#static_android.sensor.info.activeArraySizeMaximumResolution">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution</a> /<wbr/>
3826<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
3827coordinate system for requests where <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to
3828<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>
3829            </td>
3830          </tr>
3831
3832          <tr class="entries_header">
3833            <th class="th_details" colspan="6">HAL Implementation Details</th>
3834          </tr>
3835          <tr class="entry_cont">
3836            <td class="entry_details" colspan="6">
3837              <p>The HAL level representation of MeteringRectangle[] is a
3838int[5 * area_<wbr/>count].<wbr/>
3839Every five elements represent a metering region of
3840(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
3841The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
3842exclusive on xmax and ymax.<wbr/>
3843HAL must always report metering regions in the coordinate system of pre-correction
3844active array.<wbr/></p>
3845            </td>
3846          </tr>
3847
3848          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3849           <!-- end of entry -->
3850
3851
3852          <tr class="entry" id="controls_android.control.captureIntent">
3853            <td class="entry_name
3854             " rowspan="3">
3855              android.<wbr/>control.<wbr/>capture<wbr/>Intent
3856            </td>
3857            <td class="entry_type">
3858                <span class="entry_type_name entry_type_name_enum">byte</span>
3859
3860              <span class="entry_type_visibility"> [public]</span>
3861
3862
3863              <span class="entry_type_hwlevel">[legacy] </span>
3864
3865
3866
3867                <ul class="entry_type_enum">
3868                  <li>
3869                    <span class="entry_type_enum_name">CUSTOM (v3.2)</span>
3870                    <span class="entry_type_enum_notes"><p>The goal of this request doesn't fall into the other
3871categories.<wbr/> The camera device will default to preview-like
3872behavior.<wbr/></p></span>
3873                  </li>
3874                  <li>
3875                    <span class="entry_type_enum_name">PREVIEW (v3.2)</span>
3876                    <span class="entry_type_enum_notes"><p>This request is for a preview-like use case.<wbr/></p>
3877<p>The precapture trigger may be used to start off a metering
3878w/<wbr/>flash sequence.<wbr/></p></span>
3879                  </li>
3880                  <li>
3881                    <span class="entry_type_enum_name">STILL_CAPTURE (v3.2)</span>
3882                    <span class="entry_type_enum_notes"><p>This request is for a still capture-type
3883use case.<wbr/></p>
3884<p>If the flash unit is under automatic control,<wbr/> it may fire as needed.<wbr/></p></span>
3885                  </li>
3886                  <li>
3887                    <span class="entry_type_enum_name">VIDEO_RECORD (v3.2)</span>
3888                    <span class="entry_type_enum_notes"><p>This request is for a video recording
3889use case.<wbr/></p></span>
3890                  </li>
3891                  <li>
3892                    <span class="entry_type_enum_name">VIDEO_SNAPSHOT (v3.2)</span>
3893                    <span class="entry_type_enum_notes"><p>This request is for a video snapshot (still
3894image while recording video) use case.<wbr/></p>
3895<p>The camera device should take the highest-quality image
3896possible (given the other settings) without disrupting the
3897frame rate of video recording.<wbr/>  </p></span>
3898                  </li>
3899                  <li>
3900                    <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span>
3901                    <span class="entry_type_enum_notes"><p>This request is for a ZSL usecase; the
3902application will stream full-resolution images and
3903reprocess one or several later for a final
3904capture.<wbr/></p></span>
3905                  </li>
3906                  <li>
3907                    <span class="entry_type_enum_name">MANUAL (v3.2)</span>
3908                    <span class="entry_type_enum_notes"><p>This request is for manual capture use case where
3909the applications want to directly control the capture parameters.<wbr/></p>
3910<p>For example,<wbr/> the application may wish to manually control
3911<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>
3912                  </li>
3913                  <li>
3914                    <span class="entry_type_enum_name">MOTION_TRACKING (v3.3)</span>
3915                    <span class="entry_type_enum_notes"><p>This request is for a motion tracking use case,<wbr/> where
3916the application will use camera and inertial sensor data to
3917locate and track objects in the world.<wbr/></p>
3918<p>The camera device auto-exposure routine will limit the exposure time
3919of the camera to no more than 20 milliseconds,<wbr/> to minimize motion blur.<wbr/></p></span>
3920                  </li>
3921                </ul>
3922
3923            </td> <!-- entry_type -->
3924
3925            <td class="entry_description">
3926              <p>Information to the camera device 3A (auto-exposure,<wbr/>
3927auto-focus,<wbr/> auto-white balance) routines about the purpose
3928of this capture,<wbr/> to help the camera device to decide optimal 3A
3929strategy.<wbr/></p>
3930            </td>
3931
3932            <td class="entry_units">
3933            </td>
3934
3935            <td class="entry_range">
3936            </td>
3937
3938            <td class="entry_hal_version">
3939              <p>3.<wbr/>2</p>
3940            </td>
3941
3942            <td class="entry_tags">
3943              <ul class="entry_tags">
3944                  <li><a href="#tag_BC">BC</a></li>
3945              </ul>
3946            </td>
3947
3948          </tr>
3949          <tr class="entries_header">
3950            <th class="th_details" colspan="6">Details</th>
3951          </tr>
3952          <tr class="entry_cont">
3953            <td class="entry_details" colspan="6">
3954              <p>This control (except for MANUAL) is only effective if
3955<code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF</code> and any 3A routine is active.<wbr/></p>
3956<p>All intents are supported by all devices,<wbr/> except that:
3957  * ZERO_<wbr/>SHUTTER_<wbr/>LAG will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
3958PRIVATE_<wbr/>REPROCESSING or YUV_<wbr/>REPROCESSING.<wbr/>
3959  * MANUAL will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
3960MANUAL_<wbr/>SENSOR.<wbr/>
3961  * MOTION_<wbr/>TRACKING will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
3962MOTION_<wbr/>TRACKING.<wbr/></p>
3963            </td>
3964          </tr>
3965
3966
3967          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3968           <!-- end of entry -->
3969
3970
3971          <tr class="entry" id="controls_android.control.effectMode">
3972            <td class="entry_name
3973             " rowspan="3">
3974              android.<wbr/>control.<wbr/>effect<wbr/>Mode
3975            </td>
3976            <td class="entry_type">
3977                <span class="entry_type_name entry_type_name_enum">byte</span>
3978
3979              <span class="entry_type_visibility"> [public]</span>
3980
3981
3982              <span class="entry_type_hwlevel">[legacy] </span>
3983
3984
3985
3986                <ul class="entry_type_enum">
3987                  <li>
3988                    <span class="entry_type_enum_name">OFF (v3.2)</span>
3989                    <span class="entry_type_enum_notes"><p>No color effect will be applied.<wbr/></p></span>
3990                  </li>
3991                  <li>
3992                    <span class="entry_type_enum_name">MONO (v3.2)</span>
3993                    <span class="entry_type_enum_optional">[optional]</span>
3994                    <span class="entry_type_enum_notes"><p>A "monocolor" effect where the image is mapped into
3995a single color.<wbr/></p>
3996<p>This will typically be grayscale.<wbr/></p></span>
3997                  </li>
3998                  <li>
3999                    <span class="entry_type_enum_name">NEGATIVE (v3.2)</span>
4000                    <span class="entry_type_enum_optional">[optional]</span>
4001                    <span class="entry_type_enum_notes"><p>A "photo-negative" effect where the image's colors
4002are inverted.<wbr/></p></span>
4003                  </li>
4004                  <li>
4005                    <span class="entry_type_enum_name">SOLARIZE (v3.2)</span>
4006                    <span class="entry_type_enum_optional">[optional]</span>
4007                    <span class="entry_type_enum_notes"><p>A "solarisation" effect (Sabattier effect) where the
4008image is wholly or partially reversed in
4009tone.<wbr/></p></span>
4010                  </li>
4011                  <li>
4012                    <span class="entry_type_enum_name">SEPIA (v3.2)</span>
4013                    <span class="entry_type_enum_optional">[optional]</span>
4014                    <span class="entry_type_enum_notes"><p>A "sepia" effect where the image is mapped into warm
4015gray,<wbr/> red,<wbr/> and brown tones.<wbr/></p></span>
4016                  </li>
4017                  <li>
4018                    <span class="entry_type_enum_name">POSTERIZE (v3.2)</span>
4019                    <span class="entry_type_enum_optional">[optional]</span>
4020                    <span class="entry_type_enum_notes"><p>A "posterization" effect where the image uses
4021discrete regions of tone rather than a continuous
4022gradient of tones.<wbr/></p></span>
4023                  </li>
4024                  <li>
4025                    <span class="entry_type_enum_name">WHITEBOARD (v3.2)</span>
4026                    <span class="entry_type_enum_optional">[optional]</span>
4027                    <span class="entry_type_enum_notes"><p>A "whiteboard" effect where the image is typically displayed
4028as regions of white,<wbr/> with black or grey details.<wbr/></p></span>
4029                  </li>
4030                  <li>
4031                    <span class="entry_type_enum_name">BLACKBOARD (v3.2)</span>
4032                    <span class="entry_type_enum_optional">[optional]</span>
4033                    <span class="entry_type_enum_notes"><p>A "blackboard" effect where the image is typically displayed
4034as regions of black,<wbr/> with white or grey details.<wbr/></p></span>
4035                  </li>
4036                  <li>
4037                    <span class="entry_type_enum_name">AQUA (v3.2)</span>
4038                    <span class="entry_type_enum_optional">[optional]</span>
4039                    <span class="entry_type_enum_notes"><p>An "aqua" effect where a blue hue is added to the image.<wbr/></p></span>
4040                  </li>
4041                </ul>
4042
4043            </td> <!-- entry_type -->
4044
4045            <td class="entry_description">
4046              <p>A special color effect to apply.<wbr/></p>
4047            </td>
4048
4049            <td class="entry_units">
4050            </td>
4051
4052            <td class="entry_range">
4053              <p><a href="#static_android.control.availableEffects">android.<wbr/>control.<wbr/>available<wbr/>Effects</a></p>
4054            </td>
4055
4056            <td class="entry_hal_version">
4057              <p>3.<wbr/>2</p>
4058            </td>
4059
4060            <td class="entry_tags">
4061              <ul class="entry_tags">
4062                  <li><a href="#tag_BC">BC</a></li>
4063              </ul>
4064            </td>
4065
4066          </tr>
4067          <tr class="entries_header">
4068            <th class="th_details" colspan="6">Details</th>
4069          </tr>
4070          <tr class="entry_cont">
4071            <td class="entry_details" colspan="6">
4072              <p>When this mode is set,<wbr/> a color effect will be applied
4073to images produced by the camera device.<wbr/> The interpretation
4074and implementation of these color effects is left to the
4075implementor of the camera device,<wbr/> and should not be
4076depended on to be consistent (or present) across all
4077devices.<wbr/></p>
4078            </td>
4079          </tr>
4080
4081
4082          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4083           <!-- end of entry -->
4084
4085
4086          <tr class="entry" id="controls_android.control.mode">
4087            <td class="entry_name
4088             " rowspan="3">
4089              android.<wbr/>control.<wbr/>mode
4090            </td>
4091            <td class="entry_type">
4092                <span class="entry_type_name entry_type_name_enum">byte</span>
4093
4094              <span class="entry_type_visibility"> [public]</span>
4095
4096
4097              <span class="entry_type_hwlevel">[legacy] </span>
4098
4099
4100
4101                <ul class="entry_type_enum">
4102                  <li>
4103                    <span class="entry_type_enum_name">OFF (v3.2)</span>
4104                    <span class="entry_type_enum_notes"><p>Full application control of pipeline.<wbr/></p>
4105<p>All control by the device's metering and focusing (3A)
4106routines is disabled,<wbr/> and no other settings in
4107android.<wbr/>control.<wbr/>* have any effect,<wbr/> except that
4108<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> may be used by the camera
4109device to select post-processing values for processing
4110blocks that do not allow for manual control,<wbr/> or are not
4111exposed by the camera API.<wbr/></p>
4112<p>However,<wbr/> the camera device's 3A routines may continue to
4113collect statistics and update their internal state so that
4114when control is switched to AUTO mode,<wbr/> good control values
4115can be immediately applied.<wbr/></p></span>
4116                  </li>
4117                  <li>
4118                    <span class="entry_type_enum_name">AUTO (v3.2)</span>
4119                    <span class="entry_type_enum_notes"><p>Use settings for each individual 3A routine.<wbr/></p>
4120<p>Manual control of capture parameters is disabled.<wbr/> All
4121controls in android.<wbr/>control.<wbr/>* besides sceneMode take
4122effect.<wbr/></p></span>
4123                  </li>
4124                  <li>
4125                    <span class="entry_type_enum_name">USE_SCENE_MODE (v3.2)</span>
4126                    <span class="entry_type_enum_optional">[optional]</span>
4127                    <span class="entry_type_enum_notes"><p>Use a specific scene mode.<wbr/></p>
4128<p>Enabling this disables control.<wbr/>aeMode,<wbr/> control.<wbr/>awbMode and
4129control.<wbr/>afMode controls; the camera device will ignore
4130those settings while USE_<wbr/>SCENE_<wbr/>MODE is active (except for
4131FACE_<wbr/>PRIORITY scene mode).<wbr/> Other control entries are still active.<wbr/>
4132This setting can only be used if scene mode is supported (i.<wbr/>e.<wbr/>
4133<a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a>
4134contain some modes other than DISABLED).<wbr/></p>
4135<p>For extended scene modes such as BOKEH,<wbr/> please use USE_<wbr/>EXTENDED_<wbr/>SCENE_<wbr/>MODE instead.<wbr/></p></span>
4136                  </li>
4137                  <li>
4138                    <span class="entry_type_enum_name">OFF_KEEP_STATE (v3.2)</span>
4139                    <span class="entry_type_enum_optional">[optional]</span>
4140                    <span class="entry_type_enum_notes"><p>Same as OFF mode,<wbr/> except that this capture will not be
4141used by camera device background auto-exposure,<wbr/> auto-white balance and
4142auto-focus algorithms (3A) to update their statistics.<wbr/></p>
4143<p>Specifically,<wbr/> the 3A routines are locked to the last
4144values set from a request with AUTO,<wbr/> OFF,<wbr/> or
4145USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> and any statistics or state updates
4146collected from manual captures with OFF_<wbr/>KEEP_<wbr/>STATE will be
4147discarded by the camera device.<wbr/></p></span>
4148                  </li>
4149                  <li>
4150                    <span class="entry_type_enum_name">USE_EXTENDED_SCENE_MODE (v3.5)</span>
4151                    <span class="entry_type_enum_optional">[optional]</span>
4152                    <span class="entry_type_enum_notes"><p>Use a specific extended scene mode.<wbr/></p>
4153<p>When extended scene mode is on,<wbr/> the camera device may override certain control
4154parameters,<wbr/> such as targetFpsRange,<wbr/> AE,<wbr/> AWB,<wbr/> and AF modes,<wbr/> to achieve best power and
4155quality tradeoffs.<wbr/> Only the mandatory stream combinations of LIMITED hardware level
4156are guaranteed.<wbr/></p>
4157<p>This setting can only be used if extended scene mode is supported (i.<wbr/>e.<wbr/>
4158android.<wbr/>control.<wbr/>available<wbr/>Extended<wbr/>Scene<wbr/>Modes
4159contains some modes other than DISABLED).<wbr/></p></span>
4160                  </li>
4161                </ul>
4162
4163            </td> <!-- entry_type -->
4164
4165            <td class="entry_description">
4166              <p>Overall mode of 3A (auto-exposure,<wbr/> auto-white-balance,<wbr/> auto-focus) control
4167routines.<wbr/></p>
4168            </td>
4169
4170            <td class="entry_units">
4171            </td>
4172
4173            <td class="entry_range">
4174              <p><a href="#static_android.control.availableModes">android.<wbr/>control.<wbr/>available<wbr/>Modes</a></p>
4175            </td>
4176
4177            <td class="entry_hal_version">
4178              <p>3.<wbr/>2</p>
4179            </td>
4180
4181            <td class="entry_tags">
4182              <ul class="entry_tags">
4183                  <li><a href="#tag_BC">BC</a></li>
4184              </ul>
4185            </td>
4186
4187          </tr>
4188          <tr class="entries_header">
4189            <th class="th_details" colspan="6">Details</th>
4190          </tr>
4191          <tr class="entry_cont">
4192            <td class="entry_details" colspan="6">
4193              <p>This is a top-level 3A control switch.<wbr/> When set to OFF,<wbr/> all 3A control
4194by the camera device is disabled.<wbr/> The application must set the fields for
4195capture parameters itself.<wbr/></p>
4196<p>When set to AUTO,<wbr/> the individual algorithm controls in
4197android.<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>
4198<p>When set to USE_<wbr/>SCENE_<wbr/>MODE or USE_<wbr/>EXTENDED_<wbr/>SCENE_<wbr/>MODE,<wbr/> the individual controls in
4199android.<wbr/>control.<wbr/>* are mostly disabled,<wbr/> and the camera device
4200implements one of the scene mode or extended scene mode settings (such as ACTION,<wbr/>
4201SUNSET,<wbr/> PARTY,<wbr/> or BOKEH) as it wishes.<wbr/> The camera device scene mode
42023A settings are provided by <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">capture results</a>.<wbr/></p>
4203<p>When set to OFF_<wbr/>KEEP_<wbr/>STATE,<wbr/> it is similar to OFF mode,<wbr/> the only difference
4204is that this frame will not be used by camera device background 3A statistics
4205update,<wbr/> as if this frame is never captured.<wbr/> This mode can be used in the scenario
4206where the application doesn't want a 3A manual control capture to affect
4207the subsequent auto 3A capture results.<wbr/></p>
4208            </td>
4209          </tr>
4210
4211
4212          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4213           <!-- end of entry -->
4214
4215
4216          <tr class="entry" id="controls_android.control.sceneMode">
4217            <td class="entry_name
4218             " rowspan="5">
4219              android.<wbr/>control.<wbr/>scene<wbr/>Mode
4220            </td>
4221            <td class="entry_type">
4222                <span class="entry_type_name entry_type_name_enum">byte</span>
4223
4224              <span class="entry_type_visibility"> [public]</span>
4225
4226
4227              <span class="entry_type_hwlevel">[legacy] </span>
4228
4229
4230
4231                <ul class="entry_type_enum">
4232                  <li>
4233                    <span class="entry_type_enum_name">DISABLED (v3.2)</span>
4234                    <span class="entry_type_enum_value">0</span>
4235                    <span class="entry_type_enum_notes"><p>Indicates that no scene modes are set for a given capture request.<wbr/></p></span>
4236                  </li>
4237                  <li>
4238                    <span class="entry_type_enum_name">FACE_PRIORITY (v3.2)</span>
4239                    <span class="entry_type_enum_notes"><p>If face detection support exists,<wbr/> use face
4240detection data for auto-focus,<wbr/> auto-white balance,<wbr/> and
4241auto-exposure routines.<wbr/></p>
4242<p>If face detection statistics are disabled
4243(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/>
4244this should still operate correctly (but will not return
4245face detection statistics to the framework).<wbr/></p>
4246<p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
4247<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>
4248remain active when FACE_<wbr/>PRIORITY is set.<wbr/></p></span>
4249                  </li>
4250                  <li>
4251                    <span class="entry_type_enum_name">ACTION (v3.2)</span>
4252                    <span class="entry_type_enum_optional">[optional]</span>
4253                    <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving objects.<wbr/></p>
4254<p>Similar to SPORTS.<wbr/></p></span>
4255                  </li>
4256                  <li>
4257                    <span class="entry_type_enum_name">PORTRAIT (v3.2)</span>
4258                    <span class="entry_type_enum_optional">[optional]</span>
4259                    <span class="entry_type_enum_notes"><p>Optimized for still photos of people.<wbr/></p></span>
4260                  </li>
4261                  <li>
4262                    <span class="entry_type_enum_name">LANDSCAPE (v3.2)</span>
4263                    <span class="entry_type_enum_optional">[optional]</span>
4264                    <span class="entry_type_enum_notes"><p>Optimized for photos of distant macroscopic objects.<wbr/></p></span>
4265                  </li>
4266                  <li>
4267                    <span class="entry_type_enum_name">NIGHT (v3.2)</span>
4268                    <span class="entry_type_enum_optional">[optional]</span>
4269                    <span class="entry_type_enum_notes"><p>Optimized for low-light settings.<wbr/></p></span>
4270                  </li>
4271                  <li>
4272                    <span class="entry_type_enum_name">NIGHT_PORTRAIT (v3.2)</span>
4273                    <span class="entry_type_enum_optional">[optional]</span>
4274                    <span class="entry_type_enum_notes"><p>Optimized for still photos of people in low-light
4275settings.<wbr/></p></span>
4276                  </li>
4277                  <li>
4278                    <span class="entry_type_enum_name">THEATRE (v3.2)</span>
4279                    <span class="entry_type_enum_optional">[optional]</span>
4280                    <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings where flash must
4281remain off.<wbr/></p></span>
4282                  </li>
4283                  <li>
4284                    <span class="entry_type_enum_name">BEACH (v3.2)</span>
4285                    <span class="entry_type_enum_optional">[optional]</span>
4286                    <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor beach settings.<wbr/></p></span>
4287                  </li>
4288                  <li>
4289                    <span class="entry_type_enum_name">SNOW (v3.2)</span>
4290                    <span class="entry_type_enum_optional">[optional]</span>
4291                    <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor settings containing snow.<wbr/></p></span>
4292                  </li>
4293                  <li>
4294                    <span class="entry_type_enum_name">SUNSET (v3.2)</span>
4295                    <span class="entry_type_enum_optional">[optional]</span>
4296                    <span class="entry_type_enum_notes"><p>Optimized for scenes of the setting sun.<wbr/></p></span>
4297                  </li>
4298                  <li>
4299                    <span class="entry_type_enum_name">STEADYPHOTO (v3.2)</span>
4300                    <span class="entry_type_enum_optional">[optional]</span>
4301                    <span class="entry_type_enum_notes"><p>Optimized to avoid blurry photos due to small amounts of
4302device motion (for example: due to hand shake).<wbr/></p></span>
4303                  </li>
4304                  <li>
4305                    <span class="entry_type_enum_name">FIREWORKS (v3.2)</span>
4306                    <span class="entry_type_enum_optional">[optional]</span>
4307                    <span class="entry_type_enum_notes"><p>Optimized for nighttime photos of fireworks.<wbr/></p></span>
4308                  </li>
4309                  <li>
4310                    <span class="entry_type_enum_name">SPORTS (v3.2)</span>
4311                    <span class="entry_type_enum_optional">[optional]</span>
4312                    <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving people.<wbr/></p>
4313<p>Similar to ACTION.<wbr/></p></span>
4314                  </li>
4315                  <li>
4316                    <span class="entry_type_enum_name">PARTY (v3.2)</span>
4317                    <span class="entry_type_enum_optional">[optional]</span>
4318                    <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings with multiple moving
4319people.<wbr/></p></span>
4320                  </li>
4321                  <li>
4322                    <span class="entry_type_enum_name">CANDLELIGHT (v3.2)</span>
4323                    <span class="entry_type_enum_optional">[optional]</span>
4324                    <span class="entry_type_enum_notes"><p>Optimized for dim settings where the main light source
4325is a candle.<wbr/></p></span>
4326                  </li>
4327                  <li>
4328                    <span class="entry_type_enum_name">BARCODE (v3.2)</span>
4329                    <span class="entry_type_enum_optional">[optional]</span>
4330                    <span class="entry_type_enum_notes"><p>Optimized for accurately capturing a photo of barcode
4331for use by camera applications that wish to read the
4332barcode value.<wbr/></p></span>
4333                  </li>
4334                  <li>
4335                    <span class="entry_type_enum_name">HIGH_SPEED_VIDEO (v3.2)</span>
4336                    <span class="entry_type_enum_deprecated">[deprecated]</span>
4337                    <span class="entry_type_enum_optional">[optional]</span>
4338                    <span class="entry_type_enum_hidden">[java_public]</span>
4339                    <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>
4340and <a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a>
4341for high speed video recording.<wbr/></p>
4342<p>Optimized for high speed video recording (frame rate &gt;=60fps) use case.<wbr/></p>
4343<p>The supported high speed video sizes and fps ranges are specified in
4344<a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/> To get desired
4345output frame rates,<wbr/> the application is only allowed to select video size
4346and fps range combinations listed in this static metadata.<wbr/> The fps range
4347can be control via <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a>.<wbr/></p>
4348<p>In this mode,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to
4349ON,<wbr/> ON,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode
4350controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture
4351and post-processing parameters is possible.<wbr/> All other controls operate the
4352same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other
4353android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p>
4354<ul>
4355<li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li>
4356<li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li>
4357<li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li>
4358<li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li>
4359<li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li>
4360<li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li>
4361<li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li>
4362<li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li>
4363<li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li>
4364<li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li>
4365<li><a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a></li>
4366</ul>
4367<p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p>
4368<ul>
4369<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>
4370<li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li>
4371<li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li>
4372<li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></li>
4373</ul>
4374<p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may
4375be lower than what camera can output,<wbr/> depending on the destination Surfaces for
4376the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/>
4377the application need check if the video encoder is capable of supporting the
4378high frame rate for a given video size,<wbr/> or it will end up with lower recording
4379frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the preview frame
4380rate will be bounded by the screen refresh rate.<wbr/></p>
4381<p>The camera device will only support up to 2 output high speed streams
4382(processed non-stalling format defined in <a href="#static_android.request.maxNumOutputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams</a>)
4383in this mode.<wbr/> This control will be effective only if all of below conditions are true:</p>
4384<ul>
4385<li>The application created no more than maxNumHighSpeedStreams processed non-stalling
4386format output streams,<wbr/> where maxNumHighSpeedStreams is calculated as
4387min(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>
4388<li>The stream sizes are selected from the sizes reported by
4389<a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/></li>
4390<li>No processed non-stalling or raw streams are configured.<wbr/></li>
4391</ul>
4392<p>When above conditions are NOT satistied,<wbr/> the controls of this mode and
4393<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/>
4394the camera device will fall back to <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> <code>==</code> AUTO,<wbr/>
4395and the returned capture result metadata will give the fps range choosen
4396by the camera device.<wbr/></p>
4397<p>Switching into or out of this mode may trigger some camera ISP/<wbr/>sensor
4398reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that
4399the application avoids unnecessary scene mode switch as much as possible.<wbr/></p></span>
4400                  </li>
4401                  <li>
4402                    <span class="entry_type_enum_name">HDR (v3.2)</span>
4403                    <span class="entry_type_enum_optional">[optional]</span>
4404                    <span class="entry_type_enum_notes"><p>Turn on a device-specific high dynamic range (HDR) mode.<wbr/></p>
4405<p>In this scene mode,<wbr/> the camera device captures images
4406that keep a larger range of scene illumination levels
4407visible in the final image.<wbr/> For example,<wbr/> when taking a
4408picture of a object in front of a bright window,<wbr/> both
4409the object and the scene through the window may be
4410visible when using HDR mode,<wbr/> while in normal AUTO mode,<wbr/>
4411one or the other may be poorly exposed.<wbr/> As a tradeoff,<wbr/>
4412HDR mode generally takes much longer to capture a single
4413image,<wbr/> has no user control,<wbr/> and may have other artifacts
4414depending on the HDR method used.<wbr/></p>
4415<p>Therefore,<wbr/> HDR captures operate at a much slower rate
4416than regular captures.<wbr/></p>
4417<p>In this mode,<wbr/> on LIMITED or FULL devices,<wbr/> when a request
4418is made with a <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> of
4419STILL_<wbr/>CAPTURE,<wbr/> the camera device will capture an image
4420using a high dynamic range capture technique.<wbr/>  On LEGACY
4421devices,<wbr/> captures that target a JPEG-format output will
4422be captured with HDR,<wbr/> and the capture intent is not
4423relevant.<wbr/></p>
4424<p>The HDR capture may involve the device capturing a burst
4425of images internally and combining them into one,<wbr/> or it
4426may involve the device using specialized high dynamic
4427range capture hardware.<wbr/> In all cases,<wbr/> a single image is
4428produced in response to a capture request submitted
4429while in HDR mode.<wbr/></p>
4430<p>Since substantial post-processing is generally needed to
4431produce an HDR image,<wbr/> only YUV,<wbr/> PRIVATE,<wbr/> and JPEG
4432outputs are supported for LIMITED/<wbr/>FULL device HDR
4433captures,<wbr/> and only JPEG outputs are supported for LEGACY
4434HDR captures.<wbr/> Using a RAW output for HDR capture is not
4435supported.<wbr/></p>
4436<p>Some devices may also support always-on HDR,<wbr/> which
4437applies HDR processing at full frame rate.<wbr/>  For these
4438devices,<wbr/> intents other than STILL_<wbr/>CAPTURE will also
4439produce an HDR output with no frame rate impact compared
4440to normal operation,<wbr/> though the quality may be lower
4441than for STILL_<wbr/>CAPTURE intents.<wbr/></p>
4442<p>If SCENE_<wbr/>MODE_<wbr/>HDR is used with unsupported output types
4443or capture intents,<wbr/> the images captured will be as if
4444the SCENE_<wbr/>MODE was not enabled at all.<wbr/></p></span>
4445                  </li>
4446                  <li>
4447                    <span class="entry_type_enum_name">FACE_PRIORITY_LOW_LIGHT (v3.2)</span>
4448                    <span class="entry_type_enum_optional">[optional]</span>
4449                    <span class="entry_type_enum_hidden">[hidden]</span>
4450                    <span class="entry_type_enum_notes"><p>Same as FACE_<wbr/>PRIORITY scene mode,<wbr/> except that the camera
4451device will choose higher sensitivity values (<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>)
4452under low light conditions.<wbr/></p>
4453<p>The camera device may be tuned to expose the images in a reduced
4454sensitivity range to produce the best quality images.<wbr/> For example,<wbr/>
4455if 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/>
4456the camera device auto-exposure routine tuning process may limit the actual
4457exposure sensitivity range to [100,<wbr/> 1200] to ensure that the noise level isn't
4458exessive in order to preserve the image quality.<wbr/> Under this situation,<wbr/> the image under
4459low light may be under-exposed when the sensor max exposure time (bounded by the
4460<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
4461ON_<wbr/>* modes) and effective max sensitivity are reached.<wbr/> This scene mode allows the
4462camera device auto-exposure routine to increase the sensitivity up to the max
4463sensitivity specified by <a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a> when the scene is too
4464dark and the max exposure time is reached.<wbr/> The captured images may be noisier
4465compared with the images captured in normal FACE_<wbr/>PRIORITY mode; therefore,<wbr/> it is
4466recommended that the application only use this scene mode when it is capable of
4467reducing the noise level of the captured images.<wbr/></p>
4468<p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
4469<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>
4470remain active when FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT is set.<wbr/></p></span>
4471                  </li>
4472                  <li>
4473                    <span class="entry_type_enum_name">DEVICE_CUSTOM_START (v3.2)</span>
4474                    <span class="entry_type_enum_optional">[optional]</span>
4475                    <span class="entry_type_enum_hidden">[hidden]</span>
4476                    <span class="entry_type_enum_value">100</span>
4477                    <span class="entry_type_enum_notes"><p>Scene mode values within the range of
4478<code>[DEVICE_<wbr/>CUSTOM_<wbr/>START,<wbr/> DEVICE_<wbr/>CUSTOM_<wbr/>END]</code> are reserved for device specific
4479customized scene modes.<wbr/></p></span>
4480                  </li>
4481                  <li>
4482                    <span class="entry_type_enum_name">DEVICE_CUSTOM_END (v3.2)</span>
4483                    <span class="entry_type_enum_optional">[optional]</span>
4484                    <span class="entry_type_enum_hidden">[hidden]</span>
4485                    <span class="entry_type_enum_value">127</span>
4486                    <span class="entry_type_enum_notes"><p>Scene mode values within the range of
4487<code>[DEVICE_<wbr/>CUSTOM_<wbr/>START,<wbr/> DEVICE_<wbr/>CUSTOM_<wbr/>END]</code> are reserved for device specific
4488customized scene modes.<wbr/></p></span>
4489                  </li>
4490                </ul>
4491
4492            </td> <!-- entry_type -->
4493
4494            <td class="entry_description">
4495              <p>Control for which scene mode is currently active.<wbr/></p>
4496            </td>
4497
4498            <td class="entry_units">
4499            </td>
4500
4501            <td class="entry_range">
4502              <p><a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a></p>
4503            </td>
4504
4505            <td class="entry_hal_version">
4506              <p>3.<wbr/>2</p>
4507            </td>
4508
4509            <td class="entry_tags">
4510              <ul class="entry_tags">
4511                  <li><a href="#tag_BC">BC</a></li>
4512              </ul>
4513            </td>
4514
4515          </tr>
4516          <tr class="entries_header">
4517            <th class="th_details" colspan="6">Details</th>
4518          </tr>
4519          <tr class="entry_cont">
4520            <td class="entry_details" colspan="6">
4521              <p>Scene modes are custom camera modes optimized for a certain set of conditions and
4522capture settings.<wbr/></p>
4523<p>This is the mode that that is active when
4524<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
4525disable <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>
4526while in use.<wbr/></p>
4527<p>The interpretation and implementation of these scene modes is left
4528to the implementor of the camera device.<wbr/> Their behavior will not be
4529consistent across all devices,<wbr/> and any given device may only implement
4530a subset of these modes.<wbr/></p>
4531            </td>
4532          </tr>
4533
4534          <tr class="entries_header">
4535            <th class="th_details" colspan="6">HAL Implementation Details</th>
4536          </tr>
4537          <tr class="entry_cont">
4538            <td class="entry_details" colspan="6">
4539              <p>HAL implementations that include scene modes are expected to provide
4540the per-scene settings to use for <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
4541<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
4542<a href="#static_android.control.sceneModeOverrides">android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides</a>.<wbr/></p>
4543<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
4544HAL must list supported video size and fps range in
4545<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/>
4546if the HAL has two different sensor configurations for normal streaming mode and high
4547speed streaming,<wbr/> when this scene mode is set/<wbr/>reset in a sequence of capture requests,<wbr/> the
4548HAL may have to switch between different sensor modes.<wbr/>  This mode is deprecated in legacy
4549HAL3.<wbr/>3,<wbr/> to support high speed video recording,<wbr/> please implement
4550<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
4551capbility defined in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
4552            </td>
4553          </tr>
4554
4555          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4556           <!-- end of entry -->
4557
4558
4559          <tr class="entry" id="controls_android.control.videoStabilizationMode">
4560            <td class="entry_name
4561             " rowspan="3">
4562              android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode
4563            </td>
4564            <td class="entry_type">
4565                <span class="entry_type_name entry_type_name_enum">byte</span>
4566
4567              <span class="entry_type_visibility"> [public]</span>
4568
4569
4570              <span class="entry_type_hwlevel">[legacy] </span>
4571
4572
4573
4574                <ul class="entry_type_enum">
4575                  <li>
4576                    <span class="entry_type_enum_name">OFF (v3.2)</span>
4577                    <span class="entry_type_enum_notes"><p>Video stabilization is disabled.<wbr/></p></span>
4578                  </li>
4579                  <li>
4580                    <span class="entry_type_enum_name">ON (v3.2)</span>
4581                    <span class="entry_type_enum_notes"><p>Video stabilization is enabled.<wbr/></p></span>
4582                  </li>
4583                </ul>
4584
4585            </td> <!-- entry_type -->
4586
4587            <td class="entry_description">
4588              <p>Whether video stabilization is
4589active.<wbr/></p>
4590            </td>
4591
4592            <td class="entry_units">
4593            </td>
4594
4595            <td class="entry_range">
4596            </td>
4597
4598            <td class="entry_hal_version">
4599              <p>3.<wbr/>2</p>
4600            </td>
4601
4602            <td class="entry_tags">
4603              <ul class="entry_tags">
4604                  <li><a href="#tag_BC">BC</a></li>
4605              </ul>
4606            </td>
4607
4608          </tr>
4609          <tr class="entries_header">
4610            <th class="th_details" colspan="6">Details</th>
4611          </tr>
4612          <tr class="entry_cont">
4613            <td class="entry_details" colspan="6">
4614              <p>Video stabilization automatically warps images from
4615the camera in order to stabilize motion between consecutive frames.<wbr/></p>
4616<p>If enabled,<wbr/> video stabilization can modify the
4617<a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> to keep the video stream stabilized.<wbr/></p>
4618<p>Switching between different video stabilization modes may take several
4619frames to initialize,<wbr/> the camera device will report the current mode
4620in capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/>
4621the video stabilization modes in the first several capture results may
4622still be "OFF",<wbr/> and it will become "ON" when the initialization is
4623done.<wbr/></p>
4624<p>In addition,<wbr/> not all recording sizes or frame rates may be supported for
4625stabilization by a device that reports stabilization support.<wbr/> It is guaranteed
4626that an output targeting a MediaRecorder or MediaCodec will be stabilized if
4627the recording resolution is less than or equal to 1920 x 1080 (width less than
4628or equal to 1920,<wbr/> height less than or equal to 1080),<wbr/> and the recording
4629frame rate is less than or equal to 30fps.<wbr/>  At other sizes,<wbr/> the CaptureResult
4630<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a> field will return
4631OFF if the recording output is not stabilized,<wbr/> or if there are no output
4632Surface types that can be stabilized.<wbr/></p>
4633<p>If a camera device supports both this mode and OIS
4634(<a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may
4635produce undesirable interaction,<wbr/> so it is recommended not to enable
4636both at the same time.<wbr/></p>
4637            </td>
4638          </tr>
4639
4640
4641          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4642           <!-- end of entry -->
4643
4644
4645          <tr class="entry" id="controls_android.control.postRawSensitivityBoost">
4646            <td class="entry_name
4647             " rowspan="3">
4648              android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost
4649            </td>
4650            <td class="entry_type">
4651                <span class="entry_type_name">int32</span>
4652
4653              <span class="entry_type_visibility"> [public]</span>
4654
4655
4656
4657
4658
4659
4660            </td> <!-- entry_type -->
4661
4662            <td class="entry_description">
4663              <p>The amount of additional sensitivity boost applied to output images
4664after RAW sensor data is captured.<wbr/></p>
4665            </td>
4666
4667            <td class="entry_units">
4668              ISO arithmetic units,<wbr/> the same as android.<wbr/>sensor.<wbr/>sensitivity
4669            </td>
4670
4671            <td class="entry_range">
4672              <p><a href="#static_android.control.postRawSensitivityBoostRange">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost<wbr/>Range</a></p>
4673            </td>
4674
4675            <td class="entry_hal_version">
4676              <p>3.<wbr/>2</p>
4677            </td>
4678
4679            <td class="entry_tags">
4680            </td>
4681
4682          </tr>
4683          <tr class="entries_header">
4684            <th class="th_details" colspan="6">Details</th>
4685          </tr>
4686          <tr class="entry_cont">
4687            <td class="entry_details" colspan="6">
4688              <p>Some camera devices support additional digital sensitivity boosting in the
4689camera processing pipeline after sensor RAW image is captured.<wbr/>
4690Such a boost will be applied to YUV/<wbr/>JPEG format output images but will not
4691have effect on RAW output formats like RAW_<wbr/>SENSOR,<wbr/> RAW10,<wbr/> RAW12 or RAW_<wbr/>OPAQUE.<wbr/></p>
4692<p>This key will be <code>null</code> for devices that do not support any RAW format
4693outputs.<wbr/> For devices that do support RAW format outputs,<wbr/> this key will always
4694present,<wbr/> and if a device does not support post RAW sensitivity boost,<wbr/> it will
4695list <code>100</code> in this key.<wbr/></p>
4696<p>If the camera device cannot apply the exact boost requested,<wbr/> it will reduce the
4697boost to the nearest supported value.<wbr/>
4698The final boost value used will be available in the output capture result.<wbr/></p>
4699<p>For devices that support post RAW sensitivity boost,<wbr/> the YUV/<wbr/>JPEG output images
4700of such device will have the total sensitivity of
4701<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>
4702The sensitivity of RAW format images will always be <code><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></code></p>
4703<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
4704OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
4705            </td>
4706          </tr>
4707
4708
4709          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4710           <!-- end of entry -->
4711
4712
4713          <tr class="entry" id="controls_android.control.enableZsl">
4714            <td class="entry_name
4715             " rowspan="5">
4716              android.<wbr/>control.<wbr/>enable<wbr/>Zsl
4717            </td>
4718            <td class="entry_type">
4719                <span class="entry_type_name entry_type_name_enum">byte</span>
4720
4721              <span class="entry_type_visibility"> [public as boolean]</span>
4722
4723
4724
4725
4726
4727                <ul class="entry_type_enum">
4728                  <li>
4729                    <span class="entry_type_enum_name">FALSE (v3.2)</span>
4730                    <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
4731after previous requests.<wbr/></p></span>
4732                  </li>
4733                  <li>
4734                    <span class="entry_type_enum_name">TRUE (v3.2)</span>
4735                    <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
4736captured before previous requests.<wbr/></p></span>
4737                  </li>
4738                </ul>
4739
4740            </td> <!-- entry_type -->
4741
4742            <td class="entry_description">
4743              <p>Allow camera device to enable zero-shutter-lag mode for requests with
4744<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE.<wbr/></p>
4745            </td>
4746
4747            <td class="entry_units">
4748            </td>
4749
4750            <td class="entry_range">
4751            </td>
4752
4753            <td class="entry_hal_version">
4754              <p>3.<wbr/>2</p>
4755            </td>
4756
4757            <td class="entry_tags">
4758            </td>
4759
4760          </tr>
4761          <tr class="entries_header">
4762            <th class="th_details" colspan="6">Details</th>
4763          </tr>
4764          <tr class="entry_cont">
4765            <td class="entry_details" colspan="6">
4766              <p>If enableZsl is <code>true</code>,<wbr/> the camera device may enable zero-shutter-lag mode for requests with
4767STILL_<wbr/>CAPTURE capture intent.<wbr/> The camera device may use images captured in the past to
4768produce output images for a zero-shutter-lag request.<wbr/> The result metadata including the
4769<a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a> reflects the source frames used to produce output images.<wbr/>
4770Therefore,<wbr/> the contents of the output images and the result metadata may be out of order
4771compared to previous regular requests.<wbr/> enableZsl does not affect requests with other
4772capture intents.<wbr/></p>
4773<p>For example,<wbr/> when requests are submitted in the following order:
4774  Request A: enableZsl is ON,<wbr/> <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> is PREVIEW
4775  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>
4776<p>The output images for request B may have contents captured before the output images for
4777request A,<wbr/> and the result metadata for request B may be older than the result metadata for
4778request A.<wbr/></p>
4779<p>Note that when enableZsl is <code>true</code>,<wbr/> it is not guaranteed to get output images captured in
4780the past for requests with STILL_<wbr/>CAPTURE capture intent.<wbr/></p>
4781<p>For applications targeting SDK versions O and newer,<wbr/> the value of enableZsl in
4782TEMPLATE_<wbr/>STILL_<wbr/>CAPTURE template may be <code>true</code>.<wbr/> The value in other templates is always
4783<code>false</code> if present.<wbr/></p>
4784<p>For applications targeting SDK versions older than O,<wbr/> the value of enableZsl in all
4785capture templates is always <code>false</code> if present.<wbr/></p>
4786<p>For application-operated ZSL,<wbr/> use CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p>
4787            </td>
4788          </tr>
4789
4790          <tr class="entries_header">
4791            <th class="th_details" colspan="6">HAL Implementation Details</th>
4792          </tr>
4793          <tr class="entry_cont">
4794            <td class="entry_details" colspan="6">
4795              <p>It is valid for HAL to produce regular output images for requests with STILL_<wbr/>CAPTURE
4796capture intent.<wbr/></p>
4797            </td>
4798          </tr>
4799
4800          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4801           <!-- end of entry -->
4802
4803
4804          <tr class="entry" id="controls_android.control.extendedSceneMode">
4805            <td class="entry_name
4806             " rowspan="3">
4807              android.<wbr/>control.<wbr/>extended<wbr/>Scene<wbr/>Mode
4808            </td>
4809            <td class="entry_type">
4810                <span class="entry_type_name entry_type_name_enum">byte</span>
4811
4812              <span class="entry_type_visibility"> [public]</span>
4813
4814
4815
4816
4817
4818                <ul class="entry_type_enum">
4819                  <li>
4820                    <span class="entry_type_enum_name">DISABLED (v3.5)</span>
4821                    <span class="entry_type_enum_value">0</span>
4822                    <span class="entry_type_enum_notes"><p>Extended scene mode is disabled.<wbr/></p></span>
4823                  </li>
4824                  <li>
4825                    <span class="entry_type_enum_name">BOKEH_STILL_CAPTURE (v3.5)</span>
4826                    <span class="entry_type_enum_notes"><p>High quality bokeh mode is enabled for all non-raw streams (including YUV,<wbr/>
4827JPEG,<wbr/> and IMPLEMENTATION_<wbr/>DEFINED) when capture intent is STILL_<wbr/>CAPTURE.<wbr/> Due to the
4828extra image processing,<wbr/> this mode may introduce additional stall to non-raw streams.<wbr/>
4829This mode should be used in high quality still capture use case.<wbr/></p></span>
4830                  </li>
4831                  <li>
4832                    <span class="entry_type_enum_name">BOKEH_CONTINUOUS (v3.5)</span>
4833                    <span class="entry_type_enum_notes"><p>Bokeh effect must not slow down capture rate relative to sensor raw output,<wbr/>
4834and the effect is applied to all processed streams no larger than the maximum
4835streaming dimension.<wbr/> This mode should be used if performance and power are a
4836priority,<wbr/> such as video recording.<wbr/></p></span>
4837                  </li>
4838                  <li>
4839                    <span class="entry_type_enum_name">VENDOR_START (v3.5)</span>
4840                    <span class="entry_type_enum_hidden">[hidden]</span>
4841                    <span class="entry_type_enum_value">0x40</span>
4842                    <span class="entry_type_enum_notes"><p>Vendor defined extended scene modes.<wbr/> These depend on vendor implementation.<wbr/></p></span>
4843                  </li>
4844                </ul>
4845
4846            </td> <!-- entry_type -->
4847
4848            <td class="entry_description">
4849              <p>Whether extended scene mode is enabled for a particular capture request.<wbr/></p>
4850            </td>
4851
4852            <td class="entry_units">
4853            </td>
4854
4855            <td class="entry_range">
4856            </td>
4857
4858            <td class="entry_hal_version">
4859              <p>3.<wbr/>5</p>
4860            </td>
4861
4862            <td class="entry_tags">
4863            </td>
4864
4865          </tr>
4866          <tr class="entries_header">
4867            <th class="th_details" colspan="6">Details</th>
4868          </tr>
4869          <tr class="entry_cont">
4870            <td class="entry_details" colspan="6">
4871              <p>With bokeh mode,<wbr/> the camera device may blur out the parts of scene that are not in
4872focus,<wbr/> creating a bokeh (or shallow depth of field) effect for people or objects.<wbr/></p>
4873<p>When set to BOKEH_<wbr/>STILL_<wbr/>CAPTURE mode with STILL_<wbr/>CAPTURE capture intent,<wbr/> due to the extra
4874processing needed for high quality bokeh effect,<wbr/> the stall may be longer than when
4875capture intent is not STILL_<wbr/>CAPTURE.<wbr/></p>
4876<p>When set to BOKEH_<wbr/>STILL_<wbr/>CAPTURE mode with PREVIEW capture intent,<wbr/></p>
4877<ul>
4878<li>If the camera device has BURST_<wbr/>CAPTURE capability,<wbr/> the frame rate requirement of
4879BURST_<wbr/>CAPTURE must still be met.<wbr/></li>
4880<li>All streams not larger than the maximum streaming dimension for BOKEH_<wbr/>STILL_<wbr/>CAPTURE mode
4881(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>)
4882will have preview bokeh effect applied.<wbr/></li>
4883</ul>
4884<p>When set to BOKEH_<wbr/>CONTINUOUS mode,<wbr/> configured streams dimension should not exceed this mode's
4885maximum streaming dimension in order to have bokeh effect applied.<wbr/> Bokeh effect may not
4886be available for streams larger than the maximum streaming dimension.<wbr/></p>
4887<p>Switching between different extended scene modes may involve reconfiguration of the camera
4888pipeline,<wbr/> resulting in long latency.<wbr/> The application should check this key against the
4889available session keys queried via
4890<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableSessionKeys">CameraCharacteristics#getAvailableSessionKeys</a>.<wbr/></p>
4891<p>For a logical multi-camera,<wbr/> bokeh may be implemented by stereo vision from sub-cameras
4892with different field of view.<wbr/> As a result,<wbr/> when bokeh mode is enabled,<wbr/> the camera device
4893may 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
4894view may be smaller than when bokeh mode is off.<wbr/></p>
4895            </td>
4896          </tr>
4897
4898
4899          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4900           <!-- end of entry -->
4901
4902
4903          <tr class="entry" id="controls_android.control.zoomRatio">
4904            <td class="entry_name
4905             " rowspan="5">
4906              android.<wbr/>control.<wbr/>zoom<wbr/>Ratio
4907            </td>
4908            <td class="entry_type">
4909                <span class="entry_type_name">float</span>
4910
4911              <span class="entry_type_visibility"> [public]</span>
4912
4913
4914              <span class="entry_type_hwlevel">[limited] </span>
4915
4916
4917
4918
4919            </td> <!-- entry_type -->
4920
4921            <td class="entry_description">
4922              <p>The desired zoom ratio</p>
4923            </td>
4924
4925            <td class="entry_units">
4926            </td>
4927
4928            <td class="entry_range">
4929              <p><a href="#static_android.control.zoomRatioRange">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio<wbr/>Range</a></p>
4930            </td>
4931
4932            <td class="entry_hal_version">
4933              <p>3.<wbr/>5</p>
4934            </td>
4935
4936            <td class="entry_tags">
4937            </td>
4938
4939          </tr>
4940          <tr class="entries_header">
4941            <th class="th_details" colspan="6">Details</th>
4942          </tr>
4943          <tr class="entry_cont">
4944            <td class="entry_details" colspan="6">
4945              <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
4946use this tag to specify the desired zoom level.<wbr/></p>
4947<p>By using this control,<wbr/> the application gains a simpler way to control zoom,<wbr/> which can
4948be a combination of optical and digital zoom.<wbr/> For example,<wbr/> a multi-camera system may
4949contain more than one lens with different focal lengths,<wbr/> and the user can use optical
4950zoom by switching between lenses.<wbr/> Using zoomRatio has benefits in the scenarios below:</p>
4951<ul>
4952<li>Zooming in from a wide-angle lens to a telephoto lens: A floating-point ratio provides
4953  better precision compared to an integer value of <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></li>
4954<li>Zooming out from a wide lens to an ultrawide lens: zoomRatio supports zoom-out whereas
4955  <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> doesn't.<wbr/></li>
4956</ul>
4957<p>To illustrate,<wbr/> here are several scenarios of different zoom ratios,<wbr/> crop regions,<wbr/>
4958and output streams,<wbr/> for a hypothetical camera device with an active array of size
4959<code>(2000,<wbr/>1500)</code>.<wbr/></p>
4960<ul>
4961<li>Camera Configuration:<ul>
4962<li>Active array size: <code>2000x1500</code> (3 MP,<wbr/> 4:3 aspect ratio)</li>
4963<li>Output stream #1: <code>640x480</code> (VGA,<wbr/> 4:3 aspect ratio)</li>
4964<li>Output stream #2: <code>1280x720</code> (720p,<wbr/> 16:9 aspect ratio)</li>
4965</ul>
4966</li>
4967<li>Case #1: 4:3 crop region with 2.<wbr/>0x zoom ratio<ul>
4968<li>Zoomed field of view: 1/<wbr/>4 of original field of view</li>
4969<li>Crop region: <code>Rect(0,<wbr/> 0,<wbr/> 2000,<wbr/> 1500) //<wbr/> (left,<wbr/> top,<wbr/> right,<wbr/> bottom)</code> (post zoom)</li>
4970</ul>
4971</li>
4972<li><img alt="4:3 aspect ratio crop diagram" src="images/camera2/metadata/android.control.zoomRatio/zoom-ratio-2-crop-43.png"/><ul>
4973<li><code>640x480</code> stream source area: <code>(0,<wbr/> 0,<wbr/> 2000,<wbr/> 1500)</code> (equal to crop region)</li>
4974<li><code>1280x720</code> stream source area: <code>(0,<wbr/> 187,<wbr/> 2000,<wbr/> 1312)</code> (letterboxed)</li>
4975</ul>
4976</li>
4977<li>Case #2: 16:9 crop region with 2.<wbr/>0x zoom.<wbr/><ul>
4978<li>Zoomed field of view: 1/<wbr/>4 of original field of view</li>
4979<li>Crop region: <code>Rect(0,<wbr/> 187,<wbr/> 2000,<wbr/> 1312)</code></li>
4980<li><img alt="16:9 aspect ratio crop diagram" src="images/camera2/metadata/android.control.zoomRatio/zoom-ratio-2-crop-169.png"/></li>
4981<li><code>640x480</code> stream source area: <code>(250,<wbr/> 187,<wbr/> 1750,<wbr/> 1312)</code> (pillarboxed)</li>
4982<li><code>1280x720</code> stream source area: <code>(0,<wbr/> 187,<wbr/> 2000,<wbr/> 1312)</code> (equal to crop region)</li>
4983</ul>
4984</li>
4985<li>Case #3: 1:1 crop region with 0.<wbr/>5x zoom out to ultrawide lens.<wbr/><ul>
4986<li>Zoomed field of view: 4x of original field of view (switched from wide lens to ultrawide lens)</li>
4987<li>Crop region: <code>Rect(250,<wbr/> 0,<wbr/> 1750,<wbr/> 1500)</code></li>
4988<li><img alt="1:1 aspect ratio crop diagram" src="images/camera2/metadata/android.control.zoomRatio/zoom-ratio-0.5-crop-11.png"/></li>
4989<li><code>640x480</code> stream source area: <code>(250,<wbr/> 187,<wbr/> 1750,<wbr/> 1312)</code> (letterboxed)</li>
4990<li><code>1280x720</code> stream source area: <code>(250,<wbr/> 328,<wbr/> 1750,<wbr/> 1172)</code> (letterboxed)</li>
4991</ul>
4992</li>
4993</ul>
4994<p>As seen from the graphs above,<wbr/> the coordinate system of cropRegion now changes to the
4995effective after-zoom field-of-view,<wbr/> and is represented by the rectangle of (0,<wbr/> 0,<wbr/>
4996activeArrayWith,<wbr/> activeArrayHeight).<wbr/> The same applies to AE/<wbr/>AWB/<wbr/>AF regions,<wbr/> and faces.<wbr/>
4997This coordinate system change isn't applicable to RAW capture and its related
4998metadata such as intrinsicCalibration and lensShadingMap.<wbr/></p>
4999<p>Using the same hypothetical example above,<wbr/> and assuming output stream #1 (640x480) is
5000the viewfinder stream,<wbr/> the application can achieve 2.<wbr/>0x zoom in one of two ways:</p>
5001<ul>
5002<li>zoomRatio = 2.<wbr/>0,<wbr/> scaler.<wbr/>cropRegion = (0,<wbr/> 0,<wbr/> 2000,<wbr/> 1500)</li>
5003<li>zoomRatio = 1.<wbr/>0 (default),<wbr/> scaler.<wbr/>cropRegion = (500,<wbr/> 375,<wbr/> 1500,<wbr/> 1125)</li>
5004</ul>
5005<p>If the application intends to set aeRegions to be top-left quarter of the viewfinder
5006field-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
5007zoomRatio set to 2.<wbr/>0.<wbr/> Alternatively,<wbr/> the application can set aeRegions to the equivalent
5008region of (500,<wbr/> 375,<wbr/> 1000,<wbr/> 750) for zoomRatio of 1.<wbr/>0.<wbr/> If the application doesn't
5009explicitly 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>
5010<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>
5011must only be used for letterboxing or pillarboxing of the sensor active array,<wbr/> and no
5012FREEFORM 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
5013<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
5014windowboxing,<wbr/> the camera framework will override the <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> to be
5015the active array.<wbr/></p>
5016<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
5017value != 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
5018effective zoom ratio achieved by the camera device,<wbr/> and the <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>
5019adjusts for additional crops that are not zoom related.<wbr/> Otherwise,<wbr/> if the application
5020sets <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
5021<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>
5022<p>When the application requests a physical stream for a logical multi-camera,<wbr/> the
5023<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
5024the <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
5025physical camera device.<wbr/></p>
5026            </td>
5027          </tr>
5028
5029          <tr class="entries_header">
5030            <th class="th_details" colspan="6">HAL Implementation Details</th>
5031          </tr>
5032          <tr class="entry_cont">
5033            <td class="entry_details" colspan="6">
5034              <p>For all capture request templates,<wbr/> this field must be set to 1.<wbr/>0 in order to have
5035consistent field of views between different modes.<wbr/></p>
5036            </td>
5037          </tr>
5038
5039          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5040           <!-- end of entry -->
5041
5042
5043          <tr class="entry" id="controls_android.control.afRegionsSet">
5044            <td class="entry_name
5045             " rowspan="3">
5046              android.<wbr/>control.<wbr/>af<wbr/>Regions<wbr/>Set
5047            </td>
5048            <td class="entry_type">
5049                <span class="entry_type_name entry_type_name_enum">byte</span>
5050
5051              <span class="entry_type_visibility"> [fwk_only as boolean]</span>
5052
5053
5054
5055
5056
5057                <ul class="entry_type_enum">
5058                  <li>
5059                    <span class="entry_type_enum_name">FALSE (v3.2)</span>
5060                    <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>
5061                  </li>
5062                  <li>
5063                    <span class="entry_type_enum_name">TRUE (v3.2)</span>
5064                    <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>
5065                  </li>
5066                </ul>
5067
5068            </td> <!-- entry_type -->
5069
5070            <td class="entry_description">
5071              <p>Framework-only private key which informs camera fwk that the AF regions has been set
5072by 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
5073set to MAXIMUM_<wbr/>RESOLUTION.<wbr/></p>
5074            </td>
5075
5076            <td class="entry_units">
5077            </td>
5078
5079            <td class="entry_range">
5080            </td>
5081
5082            <td class="entry_hal_version">
5083              <p>3.<wbr/>2</p>
5084            </td>
5085
5086            <td class="entry_tags">
5087            </td>
5088
5089          </tr>
5090          <tr class="entries_header">
5091            <th class="th_details" colspan="6">Details</th>
5092          </tr>
5093          <tr class="entry_cont">
5094            <td class="entry_details" colspan="6">
5095              <p>This must be set to TRUE by the camera2 java fwk when the camera client sets
5096<a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a>.<wbr/></p>
5097            </td>
5098          </tr>
5099
5100
5101          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5102           <!-- end of entry -->
5103
5104
5105          <tr class="entry" id="controls_android.control.aeRegionsSet">
5106            <td class="entry_name
5107             " rowspan="3">
5108              android.<wbr/>control.<wbr/>ae<wbr/>Regions<wbr/>Set
5109            </td>
5110            <td class="entry_type">
5111                <span class="entry_type_name entry_type_name_enum">byte</span>
5112
5113              <span class="entry_type_visibility"> [fwk_only as boolean]</span>
5114
5115
5116
5117
5118
5119                <ul class="entry_type_enum">
5120                  <li>
5121                    <span class="entry_type_enum_name">FALSE (v3.2)</span>
5122                    <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>
5123                  </li>
5124                  <li>
5125                    <span class="entry_type_enum_name">TRUE (v3.2)</span>
5126                    <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>
5127                  </li>
5128                </ul>
5129
5130            </td> <!-- entry_type -->
5131
5132            <td class="entry_description">
5133              <p>Framework-only private key which informs camera fwk that the AE regions has been set
5134by 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
5135set to MAXIMUM_<wbr/>RESOLUTION.<wbr/></p>
5136            </td>
5137
5138            <td class="entry_units">
5139            </td>
5140
5141            <td class="entry_range">
5142            </td>
5143
5144            <td class="entry_hal_version">
5145              <p>3.<wbr/>2</p>
5146            </td>
5147
5148            <td class="entry_tags">
5149            </td>
5150
5151          </tr>
5152          <tr class="entries_header">
5153            <th class="th_details" colspan="6">Details</th>
5154          </tr>
5155          <tr class="entry_cont">
5156            <td class="entry_details" colspan="6">
5157              <p>This must be set to TRUE by the camera2 java fwk when the camera client sets
5158<a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a>.<wbr/></p>
5159            </td>
5160          </tr>
5161
5162
5163          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5164           <!-- end of entry -->
5165
5166
5167          <tr class="entry" id="controls_android.control.awbRegionsSet">
5168            <td class="entry_name
5169             " rowspan="3">
5170              android.<wbr/>control.<wbr/>awb<wbr/>Regions<wbr/>Set
5171            </td>
5172            <td class="entry_type">
5173                <span class="entry_type_name entry_type_name_enum">byte</span>
5174
5175              <span class="entry_type_visibility"> [fwk_only as boolean]</span>
5176
5177
5178
5179
5180
5181                <ul class="entry_type_enum">
5182                  <li>
5183                    <span class="entry_type_enum_name">FALSE (v3.2)</span>
5184                    <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>
5185                  </li>
5186                  <li>
5187                    <span class="entry_type_enum_name">TRUE (v3.2)</span>
5188                    <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>
5189                  </li>
5190                </ul>
5191
5192            </td> <!-- entry_type -->
5193
5194            <td class="entry_description">
5195              <p>Framework-only private key which informs camera fwk that the AF regions has been set
5196by 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
5197set to MAXIMUM_<wbr/>RESOLUTION.<wbr/></p>
5198            </td>
5199
5200            <td class="entry_units">
5201            </td>
5202
5203            <td class="entry_range">
5204            </td>
5205
5206            <td class="entry_hal_version">
5207              <p>3.<wbr/>2</p>
5208            </td>
5209
5210            <td class="entry_tags">
5211            </td>
5212
5213          </tr>
5214          <tr class="entries_header">
5215            <th class="th_details" colspan="6">Details</th>
5216          </tr>
5217          <tr class="entry_cont">
5218            <td class="entry_details" colspan="6">
5219              <p>This must be set to TRUE by the camera2 java fwk when the camera client sets
5220<a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a>.<wbr/></p>
5221            </td>
5222          </tr>
5223
5224
5225          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5226           <!-- end of entry -->
5227
5228
5229
5230      <!-- end of kind -->
5231      </tbody>
5232      <tr><td colspan="7" class="kind">static</td></tr>
5233
5234      <thead class="entries_header">
5235        <tr>
5236          <th class="th_name">Property Name</th>
5237          <th class="th_type">Type</th>
5238          <th class="th_description">Description</th>
5239          <th class="th_units">Units</th>
5240          <th class="th_range">Range</th>
5241          <th class="th_hal_version">Initial HIDL HAL version</th>
5242          <th class="th_tags">Tags</th>
5243        </tr>
5244      </thead>
5245
5246      <tbody>
5247
5248
5249
5250
5251
5252
5253
5254
5255
5256
5257          <tr class="entry" id="static_android.control.aeAvailableAntibandingModes">
5258            <td class="entry_name
5259             " rowspan="3">
5260              android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes
5261            </td>
5262            <td class="entry_type">
5263                <span class="entry_type_name">byte</span>
5264                <span class="entry_type_container">x</span>
5265
5266                <span class="entry_type_array">
5267                  n
5268                </span>
5269              <span class="entry_type_visibility"> [public as enumList]</span>
5270
5271
5272              <span class="entry_type_hwlevel">[legacy] </span>
5273
5274
5275                <div class="entry_type_notes">list of enums</div>
5276
5277
5278            </td> <!-- entry_type -->
5279
5280            <td class="entry_description">
5281              <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
5282supported by this camera device.<wbr/></p>
5283            </td>
5284
5285            <td class="entry_units">
5286            </td>
5287
5288            <td class="entry_range">
5289              <p>Any value listed in <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a></p>
5290            </td>
5291
5292            <td class="entry_hal_version">
5293              <p>3.<wbr/>2</p>
5294            </td>
5295
5296            <td class="entry_tags">
5297              <ul class="entry_tags">
5298                  <li><a href="#tag_BC">BC</a></li>
5299              </ul>
5300            </td>
5301
5302          </tr>
5303          <tr class="entries_header">
5304            <th class="th_details" colspan="6">Details</th>
5305          </tr>
5306          <tr class="entry_cont">
5307            <td class="entry_details" colspan="6">
5308              <p>Not all of the auto-exposure anti-banding modes may be
5309supported by a given camera device.<wbr/> This field lists the
5310valid anti-banding modes that the application may request
5311for this camera device with the
5312<a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> control.<wbr/></p>
5313            </td>
5314          </tr>
5315
5316
5317          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5318           <!-- end of entry -->
5319
5320
5321          <tr class="entry" id="static_android.control.aeAvailableModes">
5322            <td class="entry_name
5323             " rowspan="3">
5324              android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes
5325            </td>
5326            <td class="entry_type">
5327                <span class="entry_type_name">byte</span>
5328                <span class="entry_type_container">x</span>
5329
5330                <span class="entry_type_array">
5331                  n
5332                </span>
5333              <span class="entry_type_visibility"> [public as enumList]</span>
5334
5335
5336              <span class="entry_type_hwlevel">[legacy] </span>
5337
5338
5339                <div class="entry_type_notes">list of enums</div>
5340
5341
5342            </td> <!-- entry_type -->
5343
5344            <td class="entry_description">
5345              <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
5346device.<wbr/></p>
5347            </td>
5348
5349            <td class="entry_units">
5350            </td>
5351
5352            <td class="entry_range">
5353              <p>Any value listed in <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a></p>
5354            </td>
5355
5356            <td class="entry_hal_version">
5357              <p>3.<wbr/>2</p>
5358            </td>
5359
5360            <td class="entry_tags">
5361              <ul class="entry_tags">
5362                  <li><a href="#tag_BC">BC</a></li>
5363              </ul>
5364            </td>
5365
5366          </tr>
5367          <tr class="entries_header">
5368            <th class="th_details" colspan="6">Details</th>
5369          </tr>
5370          <tr class="entry_cont">
5371            <td class="entry_details" colspan="6">
5372              <p>Not all the auto-exposure modes may be supported by a
5373given camera device,<wbr/> especially if no flash unit is
5374available.<wbr/> This entry lists the valid modes for
5375<a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> for this camera device.<wbr/></p>
5376<p>All camera devices support ON,<wbr/> and all camera devices with flash
5377units support ON_<wbr/>AUTO_<wbr/>FLASH and ON_<wbr/>ALWAYS_<wbr/>FLASH.<wbr/></p>
5378<p>FULL mode camera devices always support OFF mode,<wbr/>
5379which enables application control of camera exposure time,<wbr/>
5380sensitivity,<wbr/> and frame duration.<wbr/></p>
5381<p>LEGACY mode camera devices never support OFF mode.<wbr/>
5382LIMITED mode devices support OFF if they support the MANUAL_<wbr/>SENSOR
5383capability.<wbr/></p>
5384            </td>
5385          </tr>
5386
5387
5388          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5389           <!-- end of entry -->
5390
5391
5392          <tr class="entry" id="static_android.control.aeAvailableTargetFpsRanges">
5393            <td class="entry_name
5394             " rowspan="3">
5395              android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Target<wbr/>Fps<wbr/>Ranges
5396            </td>
5397            <td class="entry_type">
5398                <span class="entry_type_name">int32</span>
5399                <span class="entry_type_container">x</span>
5400
5401                <span class="entry_type_array">
5402                  2 x n
5403                </span>
5404              <span class="entry_type_visibility"> [public as rangeInt]</span>
5405
5406
5407              <span class="entry_type_hwlevel">[legacy] </span>
5408
5409
5410                <div class="entry_type_notes">list of pairs of frame rates</div>
5411
5412
5413            </td> <!-- entry_type -->
5414
5415            <td class="entry_description">
5416              <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
5417this camera device.<wbr/></p>
5418            </td>
5419
5420            <td class="entry_units">
5421              Frames per second (FPS)
5422            </td>
5423
5424            <td class="entry_range">
5425            </td>
5426
5427            <td class="entry_hal_version">
5428              <p>3.<wbr/>2</p>
5429            </td>
5430
5431            <td class="entry_tags">
5432              <ul class="entry_tags">
5433                  <li><a href="#tag_BC">BC</a></li>
5434              </ul>
5435            </td>
5436
5437          </tr>
5438          <tr class="entries_header">
5439            <th class="th_details" colspan="6">Details</th>
5440          </tr>
5441          <tr class="entry_cont">
5442            <td class="entry_details" colspan="6">
5443              <p>For devices at the LEGACY level or above:</p>
5444<ul>
5445<li>
5446<p>For constant-framerate recording,<wbr/> for each normal
5447<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a>,<wbr/> that is,<wbr/> a
5448<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a> that has
5449<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#quality">quality</a> in
5450the range [<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#QUALITY_LOW">QUALITY_<wbr/>LOW</a>,<wbr/>
5451<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#QUALITY_2160P">QUALITY_<wbr/>2160P</a>],<wbr/> if the profile is
5452supported by the device and has
5453<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#videoFrameRate">videoFrameRate</a> <code>x</code>,<wbr/> this list will
5454always include (<code>x</code>,<wbr/><code>x</code>).<wbr/></p>
5455</li>
5456<li>
5457<p>Also,<wbr/> a camera device must either not support any
5458<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a>,<wbr/>
5459or support at least one
5460normal <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a> that has
5461<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#videoFrameRate">videoFrameRate</a> <code>x</code> &gt;= 24.<wbr/></p>
5462</li>
5463</ul>
5464<p>For devices at the LIMITED level or above:</p>
5465<ul>
5466<li>For devices that advertise NIR color filter arrangement in
5467<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
5468(<code>max</code>,<wbr/> <code>max</code>) where <code>max</code> = the maximum output frame rate of the maximum YUV_<wbr/>420_<wbr/>888
5469output size.<wbr/></li>
5470<li>For devices advertising any color filter arrangement other than NIR,<wbr/> or devices not
5471advertising color filter arrangement,<wbr/> this list will always include (<code>min</code>,<wbr/> <code>max</code>) and
5472(<code>max</code>,<wbr/> <code>max</code>) where <code>min</code> &lt;= 15 and <code>max</code> = the maximum output frame rate of the
5473maximum YUV_<wbr/>420_<wbr/>888 output size.<wbr/></li>
5474</ul>
5475            </td>
5476          </tr>
5477
5478
5479          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5480           <!-- end of entry -->
5481
5482
5483          <tr class="entry" id="static_android.control.aeCompensationRange">
5484            <td class="entry_name
5485             " rowspan="1">
5486              android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range
5487            </td>
5488            <td class="entry_type">
5489                <span class="entry_type_name">int32</span>
5490                <span class="entry_type_container">x</span>
5491
5492                <span class="entry_type_array">
5493                  2
5494                </span>
5495              <span class="entry_type_visibility"> [public as rangeInt]</span>
5496
5497
5498              <span class="entry_type_hwlevel">[legacy] </span>
5499
5500
5501
5502
5503            </td> <!-- entry_type -->
5504
5505            <td class="entry_description">
5506              <p>Maximum and minimum exposure compensation values for
5507<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/>
5508that are supported by this camera device.<wbr/></p>
5509            </td>
5510
5511            <td class="entry_units">
5512            </td>
5513
5514            <td class="entry_range">
5515              <p>Range [0,<wbr/>0] indicates that exposure compensation is not supported.<wbr/></p>
5516<p>For LIMITED and FULL devices,<wbr/> range must follow below requirements if exposure
5517compensation is supported (<code>range != [0,<wbr/> 0]</code>):</p>
5518<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>
5519<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>
5520<p>LEGACY devices may support a smaller range than this.<wbr/></p>
5521            </td>
5522
5523            <td class="entry_hal_version">
5524              <p>3.<wbr/>2</p>
5525            </td>
5526
5527            <td class="entry_tags">
5528              <ul class="entry_tags">
5529                  <li><a href="#tag_BC">BC</a></li>
5530              </ul>
5531            </td>
5532
5533          </tr>
5534
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="static_android.control.aeCompensationStep">
5541            <td class="entry_name
5542             " rowspan="5">
5543              android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step
5544            </td>
5545            <td class="entry_type">
5546                <span class="entry_type_name">rational</span>
5547
5548              <span class="entry_type_visibility"> [public]</span>
5549
5550
5551              <span class="entry_type_hwlevel">[legacy] </span>
5552
5553
5554
5555
5556            </td> <!-- entry_type -->
5557
5558            <td class="entry_description">
5559              <p>Smallest step by which the exposure compensation
5560can be changed.<wbr/></p>
5561            </td>
5562
5563            <td class="entry_units">
5564              Exposure Value (EV)
5565            </td>
5566
5567            <td class="entry_range">
5568            </td>
5569
5570            <td class="entry_hal_version">
5571              <p>3.<wbr/>2</p>
5572            </td>
5573
5574            <td class="entry_tags">
5575              <ul class="entry_tags">
5576                  <li><a href="#tag_BC">BC</a></li>
5577              </ul>
5578            </td>
5579
5580          </tr>
5581          <tr class="entries_header">
5582            <th class="th_details" colspan="6">Details</th>
5583          </tr>
5584          <tr class="entry_cont">
5585            <td class="entry_details" colspan="6">
5586              <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
5587a 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
5588that the target EV offset for the auto-exposure routine is -1 EV.<wbr/></p>
5589<p>One unit of EV compensation changes the brightness of the captured image by a factor
5590of two.<wbr/> +1 EV doubles the image brightness,<wbr/> while -1 EV halves the image brightness.<wbr/></p>
5591            </td>
5592          </tr>
5593
5594          <tr class="entries_header">
5595            <th class="th_details" colspan="6">HAL Implementation Details</th>
5596          </tr>
5597          <tr class="entry_cont">
5598            <td class="entry_details" colspan="6">
5599              <p>This must be less than or equal to 1/<wbr/>2.<wbr/></p>
5600            </td>
5601          </tr>
5602
5603          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5604           <!-- end of entry -->
5605
5606
5607          <tr class="entry" id="static_android.control.afAvailableModes">
5608            <td class="entry_name
5609             " rowspan="3">
5610              android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes
5611            </td>
5612            <td class="entry_type">
5613                <span class="entry_type_name">byte</span>
5614                <span class="entry_type_container">x</span>
5615
5616                <span class="entry_type_array">
5617                  n
5618                </span>
5619              <span class="entry_type_visibility"> [public as enumList]</span>
5620
5621
5622              <span class="entry_type_hwlevel">[legacy] </span>
5623
5624
5625                <div class="entry_type_notes">List of enums</div>
5626
5627
5628            </td> <!-- entry_type -->
5629
5630            <td class="entry_description">
5631              <p>List of auto-focus (AF) modes for <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> that are
5632supported by this camera device.<wbr/></p>
5633            </td>
5634
5635            <td class="entry_units">
5636            </td>
5637
5638            <td class="entry_range">
5639              <p>Any value listed in <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a></p>
5640            </td>
5641
5642            <td class="entry_hal_version">
5643              <p>3.<wbr/>2</p>
5644            </td>
5645
5646            <td class="entry_tags">
5647              <ul class="entry_tags">
5648                  <li><a href="#tag_BC">BC</a></li>
5649              </ul>
5650            </td>
5651
5652          </tr>
5653          <tr class="entries_header">
5654            <th class="th_details" colspan="6">Details</th>
5655          </tr>
5656          <tr class="entry_cont">
5657            <td class="entry_details" colspan="6">
5658              <p>Not all the auto-focus modes may be supported by a
5659given camera device.<wbr/> This entry lists the valid modes for
5660<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> for this camera device.<wbr/></p>
5661<p>All LIMITED and FULL mode camera devices will support OFF mode,<wbr/> and all
5662camera devices with adjustable focuser units
5663(<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>
5664<p>LEGACY devices will support OFF mode only if they support
5665focusing to infinity (by also setting <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> to
5666<code>0.<wbr/>0f</code>).<wbr/></p>
5667            </td>
5668          </tr>
5669
5670
5671          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5672           <!-- end of entry -->
5673
5674
5675          <tr class="entry" id="static_android.control.availableEffects">
5676            <td class="entry_name
5677             " rowspan="3">
5678              android.<wbr/>control.<wbr/>available<wbr/>Effects
5679            </td>
5680            <td class="entry_type">
5681                <span class="entry_type_name">byte</span>
5682                <span class="entry_type_container">x</span>
5683
5684                <span class="entry_type_array">
5685                  n
5686                </span>
5687              <span class="entry_type_visibility"> [public as enumList]</span>
5688
5689
5690              <span class="entry_type_hwlevel">[legacy] </span>
5691
5692
5693                <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>effect<wbr/>Mode).<wbr/></div>
5694
5695
5696            </td> <!-- entry_type -->
5697
5698            <td class="entry_description">
5699              <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
5700device.<wbr/></p>
5701            </td>
5702
5703            <td class="entry_units">
5704            </td>
5705
5706            <td class="entry_range">
5707              <p>Any value listed in <a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></p>
5708            </td>
5709
5710            <td class="entry_hal_version">
5711              <p>3.<wbr/>2</p>
5712            </td>
5713
5714            <td class="entry_tags">
5715              <ul class="entry_tags">
5716                  <li><a href="#tag_BC">BC</a></li>
5717              </ul>
5718            </td>
5719
5720          </tr>
5721          <tr class="entries_header">
5722            <th class="th_details" colspan="6">Details</th>
5723          </tr>
5724          <tr class="entry_cont">
5725            <td class="entry_details" colspan="6">
5726              <p>This list contains the color effect modes that can be applied to
5727images produced by the camera device.<wbr/>
5728Implementations are not expected to be consistent across all devices.<wbr/>
5729If no color effect modes are available for a device,<wbr/> this will only list
5730OFF.<wbr/></p>
5731<p>A color effect will only be applied if
5732<a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF.<wbr/>  OFF is always included in this list.<wbr/></p>
5733<p>This control has no effect on the operation of other control routines such
5734as auto-exposure,<wbr/> white balance,<wbr/> or focus.<wbr/></p>
5735            </td>
5736          </tr>
5737
5738
5739          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5740           <!-- end of entry -->
5741
5742
5743          <tr class="entry" id="static_android.control.availableSceneModes">
5744            <td class="entry_name
5745             " rowspan="3">
5746              android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes
5747            </td>
5748            <td class="entry_type">
5749                <span class="entry_type_name">byte</span>
5750                <span class="entry_type_container">x</span>
5751
5752                <span class="entry_type_array">
5753                  n
5754                </span>
5755              <span class="entry_type_visibility"> [public as enumList]</span>
5756
5757
5758              <span class="entry_type_hwlevel">[legacy] </span>
5759
5760
5761                <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>scene<wbr/>Mode).<wbr/></div>
5762
5763
5764            </td> <!-- entry_type -->
5765
5766            <td class="entry_description">
5767              <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
5768device.<wbr/></p>
5769            </td>
5770
5771            <td class="entry_units">
5772            </td>
5773
5774            <td class="entry_range">
5775              <p>Any value listed in <a href="#controls_android.control.sceneMode">android.<wbr/>control.<wbr/>scene<wbr/>Mode</a></p>
5776            </td>
5777
5778            <td class="entry_hal_version">
5779              <p>3.<wbr/>2</p>
5780            </td>
5781
5782            <td class="entry_tags">
5783              <ul class="entry_tags">
5784                  <li><a href="#tag_BC">BC</a></li>
5785              </ul>
5786            </td>
5787
5788          </tr>
5789          <tr class="entries_header">
5790            <th class="th_details" colspan="6">Details</th>
5791          </tr>
5792          <tr class="entry_cont">
5793            <td class="entry_details" colspan="6">
5794              <p>This list contains scene modes that can be set for the camera device.<wbr/>
5795Only scene modes that have been fully implemented for the
5796camera device may be included here.<wbr/> Implementations are not expected
5797to be consistent across all devices.<wbr/></p>
5798<p>If no scene modes are supported by the camera device,<wbr/> this
5799will be set to DISABLED.<wbr/> Otherwise DISABLED will not be listed.<wbr/></p>
5800<p>FACE_<wbr/>PRIORITY is always listed if face detection is
5801supported (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;
58020</code>).<wbr/></p>
5803            </td>
5804          </tr>
5805
5806
5807          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5808           <!-- end of entry -->
5809
5810
5811          <tr class="entry" id="static_android.control.availableVideoStabilizationModes">
5812            <td class="entry_name
5813             " rowspan="3">
5814              android.<wbr/>control.<wbr/>available<wbr/>Video<wbr/>Stabilization<wbr/>Modes
5815            </td>
5816            <td class="entry_type">
5817                <span class="entry_type_name">byte</span>
5818                <span class="entry_type_container">x</span>
5819
5820                <span class="entry_type_array">
5821                  n
5822                </span>
5823              <span class="entry_type_visibility"> [public as enumList]</span>
5824
5825
5826              <span class="entry_type_hwlevel">[legacy] </span>
5827
5828
5829                <div class="entry_type_notes">List of enums.<wbr/></div>
5830
5831
5832            </td> <!-- entry_type -->
5833
5834            <td class="entry_description">
5835              <p>List of video stabilization modes for <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>
5836that are supported by this camera device.<wbr/></p>
5837            </td>
5838
5839            <td class="entry_units">
5840            </td>
5841
5842            <td class="entry_range">
5843              <p>Any value listed in <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a></p>
5844            </td>
5845
5846            <td class="entry_hal_version">
5847              <p>3.<wbr/>2</p>
5848            </td>
5849
5850            <td class="entry_tags">
5851              <ul class="entry_tags">
5852                  <li><a href="#tag_BC">BC</a></li>
5853              </ul>
5854            </td>
5855
5856          </tr>
5857          <tr class="entries_header">
5858            <th class="th_details" colspan="6">Details</th>
5859          </tr>
5860          <tr class="entry_cont">
5861            <td class="entry_details" colspan="6">
5862              <p>OFF will always be listed.<wbr/></p>
5863            </td>
5864          </tr>
5865
5866
5867          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5868           <!-- end of entry -->
5869
5870
5871          <tr class="entry" id="static_android.control.awbAvailableModes">
5872            <td class="entry_name
5873             " rowspan="3">
5874              android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes
5875            </td>
5876            <td class="entry_type">
5877                <span class="entry_type_name">byte</span>
5878                <span class="entry_type_container">x</span>
5879
5880                <span class="entry_type_array">
5881                  n
5882                </span>
5883              <span class="entry_type_visibility"> [public as enumList]</span>
5884
5885
5886              <span class="entry_type_hwlevel">[legacy] </span>
5887
5888
5889                <div class="entry_type_notes">List of enums</div>
5890
5891
5892            </td> <!-- entry_type -->
5893
5894            <td class="entry_description">
5895              <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
5896camera device.<wbr/></p>
5897            </td>
5898
5899            <td class="entry_units">
5900            </td>
5901
5902            <td class="entry_range">
5903              <p>Any value listed in <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a></p>
5904            </td>
5905
5906            <td class="entry_hal_version">
5907              <p>3.<wbr/>2</p>
5908            </td>
5909
5910            <td class="entry_tags">
5911              <ul class="entry_tags">
5912                  <li><a href="#tag_BC">BC</a></li>
5913              </ul>
5914            </td>
5915
5916          </tr>
5917          <tr class="entries_header">
5918            <th class="th_details" colspan="6">Details</th>
5919          </tr>
5920          <tr class="entry_cont">
5921            <td class="entry_details" colspan="6">
5922              <p>Not all the auto-white-balance modes may be supported by a
5923given camera device.<wbr/> This entry lists the valid modes for
5924<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> for this camera device.<wbr/></p>
5925<p>All camera devices will support ON mode.<wbr/></p>
5926<p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always support OFF
5927mode,<wbr/> which enables application control of white balance,<wbr/> by using
5928<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
5929mode camera devices.<wbr/></p>
5930            </td>
5931          </tr>
5932
5933
5934          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5935           <!-- end of entry -->
5936
5937
5938          <tr class="entry" id="static_android.control.maxRegions">
5939            <td class="entry_name
5940             " rowspan="1">
5941              android.<wbr/>control.<wbr/>max<wbr/>Regions
5942            </td>
5943            <td class="entry_type">
5944                <span class="entry_type_name">int32</span>
5945                <span class="entry_type_container">x</span>
5946
5947                <span class="entry_type_array">
5948                  3
5949                </span>
5950              <span class="entry_type_visibility"> [ndk_public]</span>
5951
5952
5953              <span class="entry_type_hwlevel">[legacy] </span>
5954
5955
5956
5957
5958            </td> <!-- entry_type -->
5959
5960            <td class="entry_description">
5961              <p>List of the maximum number of regions that can be used for metering in
5962auto-exposure (AE),<wbr/> auto-white balance (AWB),<wbr/> and auto-focus (AF);
5963this corresponds to the maximum number of elements in
5964<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/>
5965and <a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a>.<wbr/></p>
5966            </td>
5967
5968            <td class="entry_units">
5969            </td>
5970
5971            <td class="entry_range">
5972              <p>Value must be &gt;= 0 for each element.<wbr/> For full-capability devices
5973this value must be &gt;= 1 for AE and AF.<wbr/> The order of the elements is:
5974<code>(AE,<wbr/> AWB,<wbr/> AF)</code>.<wbr/></p>
5975            </td>
5976
5977            <td class="entry_hal_version">
5978              <p>3.<wbr/>2</p>
5979            </td>
5980
5981            <td class="entry_tags">
5982              <ul class="entry_tags">
5983                  <li><a href="#tag_BC">BC</a></li>
5984              </ul>
5985            </td>
5986
5987          </tr>
5988
5989
5990          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5991           <!-- end of entry -->
5992
5993
5994          <tr class="entry" id="static_android.control.maxRegionsAe">
5995            <td class="entry_name
5996             " rowspan="5">
5997              android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae
5998            </td>
5999            <td class="entry_type">
6000                <span class="entry_type_name">int32</span>
6001
6002              <span class="entry_type_visibility"> [java_public]</span>
6003
6004              <span class="entry_type_synthetic">[synthetic] </span>
6005
6006              <span class="entry_type_hwlevel">[legacy] </span>
6007
6008
6009
6010
6011            </td> <!-- entry_type -->
6012
6013            <td class="entry_description">
6014              <p>The maximum number of metering regions that can be used by the auto-exposure (AE)
6015routine.<wbr/></p>
6016            </td>
6017
6018            <td class="entry_units">
6019            </td>
6020
6021            <td class="entry_range">
6022              <p>Value will be &gt;= 0.<wbr/> For FULL-capability devices,<wbr/> this
6023value will be &gt;= 1.<wbr/></p>
6024            </td>
6025
6026            <td class="entry_hal_version">
6027              <p>3.<wbr/>2</p>
6028            </td>
6029
6030            <td class="entry_tags">
6031            </td>
6032
6033          </tr>
6034          <tr class="entries_header">
6035            <th class="th_details" colspan="6">Details</th>
6036          </tr>
6037          <tr class="entry_cont">
6038            <td class="entry_details" colspan="6">
6039              <p>This corresponds to the maximum allowed number of elements in
6040<a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a>.<wbr/></p>
6041            </td>
6042          </tr>
6043
6044          <tr class="entries_header">
6045            <th class="th_details" colspan="6">HAL Implementation Details</th>
6046          </tr>
6047          <tr class="entry_cont">
6048            <td class="entry_details" colspan="6">
6049              <p>This entry is private to the framework.<wbr/> Fill in
6050maxRegions to have this entry be automatically populated.<wbr/></p>
6051            </td>
6052          </tr>
6053
6054          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6055           <!-- end of entry -->
6056
6057
6058          <tr class="entry" id="static_android.control.maxRegionsAwb">
6059            <td class="entry_name
6060             " rowspan="5">
6061              android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb
6062            </td>
6063            <td class="entry_type">
6064                <span class="entry_type_name">int32</span>
6065
6066              <span class="entry_type_visibility"> [java_public]</span>
6067
6068              <span class="entry_type_synthetic">[synthetic] </span>
6069
6070              <span class="entry_type_hwlevel">[legacy] </span>
6071
6072
6073
6074
6075            </td> <!-- entry_type -->
6076
6077            <td class="entry_description">
6078              <p>The maximum number of metering regions that can be used by the auto-white balance (AWB)
6079routine.<wbr/></p>
6080            </td>
6081
6082            <td class="entry_units">
6083            </td>
6084
6085            <td class="entry_range">
6086              <p>Value will be &gt;= 0.<wbr/></p>
6087            </td>
6088
6089            <td class="entry_hal_version">
6090              <p>3.<wbr/>2</p>
6091            </td>
6092
6093            <td class="entry_tags">
6094            </td>
6095
6096          </tr>
6097          <tr class="entries_header">
6098            <th class="th_details" colspan="6">Details</th>
6099          </tr>
6100          <tr class="entry_cont">
6101            <td class="entry_details" colspan="6">
6102              <p>This corresponds to the maximum allowed number of elements in
6103<a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a>.<wbr/></p>
6104            </td>
6105          </tr>
6106
6107          <tr class="entries_header">
6108            <th class="th_details" colspan="6">HAL Implementation Details</th>
6109          </tr>
6110          <tr class="entry_cont">
6111            <td class="entry_details" colspan="6">
6112              <p>This entry is private to the framework.<wbr/> Fill in
6113maxRegions to have this entry be automatically populated.<wbr/></p>
6114            </td>
6115          </tr>
6116
6117          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6118           <!-- end of entry -->
6119
6120
6121          <tr class="entry" id="static_android.control.maxRegionsAf">
6122            <td class="entry_name
6123             " rowspan="5">
6124              android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af
6125            </td>
6126            <td class="entry_type">
6127                <span class="entry_type_name">int32</span>
6128
6129              <span class="entry_type_visibility"> [java_public]</span>
6130
6131              <span class="entry_type_synthetic">[synthetic] </span>
6132
6133              <span class="entry_type_hwlevel">[legacy] </span>
6134
6135
6136
6137
6138            </td> <!-- entry_type -->
6139
6140            <td class="entry_description">
6141              <p>The maximum number of metering regions that can be used by the auto-focus (AF) routine.<wbr/></p>
6142            </td>
6143
6144            <td class="entry_units">
6145            </td>
6146
6147            <td class="entry_range">
6148              <p>Value will be &gt;= 0.<wbr/> For FULL-capability devices,<wbr/> this
6149value will be &gt;= 1.<wbr/></p>
6150            </td>
6151
6152            <td class="entry_hal_version">
6153              <p>3.<wbr/>2</p>
6154            </td>
6155
6156            <td class="entry_tags">
6157            </td>
6158
6159          </tr>
6160          <tr class="entries_header">
6161            <th class="th_details" colspan="6">Details</th>
6162          </tr>
6163          <tr class="entry_cont">
6164            <td class="entry_details" colspan="6">
6165              <p>This corresponds to the maximum allowed number of elements in
6166<a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a>.<wbr/></p>
6167            </td>
6168          </tr>
6169
6170          <tr class="entries_header">
6171            <th class="th_details" colspan="6">HAL Implementation Details</th>
6172          </tr>
6173          <tr class="entry_cont">
6174            <td class="entry_details" colspan="6">
6175              <p>This entry is private to the framework.<wbr/> Fill in
6176maxRegions to have this entry be automatically populated.<wbr/></p>
6177            </td>
6178          </tr>
6179
6180          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6181           <!-- end of entry -->
6182
6183
6184          <tr class="entry" id="static_android.control.sceneModeOverrides">
6185            <td class="entry_name
6186             " rowspan="5">
6187              android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides
6188            </td>
6189            <td class="entry_type">
6190                <span class="entry_type_name">byte</span>
6191                <span class="entry_type_container">x</span>
6192
6193                <span class="entry_type_array">
6194                  3 x length(availableSceneModes)
6195                </span>
6196              <span class="entry_type_visibility"> [system]</span>
6197
6198
6199              <span class="entry_type_hwlevel">[limited] </span>
6200
6201
6202
6203
6204            </td> <!-- entry_type -->
6205
6206            <td class="entry_description">
6207              <p>Ordered list of auto-exposure,<wbr/> auto-white balance,<wbr/> and auto-focus
6208settings to use with each available scene mode.<wbr/></p>
6209            </td>
6210
6211            <td class="entry_units">
6212            </td>
6213
6214            <td class="entry_range">
6215              <p>For each available scene mode,<wbr/> the list must contain three
6216entries containing the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
6217<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
6218by the camera device.<wbr/> The entry order is <code>(aeMode,<wbr/> awbMode,<wbr/> afMode)</code>
6219where aeMode has the lowest index position.<wbr/></p>
6220            </td>
6221
6222            <td class="entry_hal_version">
6223              <p>3.<wbr/>2</p>
6224            </td>
6225
6226            <td class="entry_tags">
6227              <ul class="entry_tags">
6228                  <li><a href="#tag_BC">BC</a></li>
6229              </ul>
6230            </td>
6231
6232          </tr>
6233          <tr class="entries_header">
6234            <th class="th_details" colspan="6">Details</th>
6235          </tr>
6236          <tr class="entry_cont">
6237            <td class="entry_details" colspan="6">
6238              <p>When a scene mode is enabled,<wbr/> the camera device is expected
6239to 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/>
6240and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> with its preferred settings for
6241that scene mode.<wbr/></p>
6242<p>The order of this list matches that of availableSceneModes,<wbr/>
6243with 3 entries for each mode.<wbr/>  The overrides listed
6244for FACE_<wbr/>PRIORITY and FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT (if supported) are ignored,<wbr/>
6245since for that mode the application-set <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
6246<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
6247used instead,<wbr/> matching the behavior when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>
6248is set to AUTO.<wbr/> It is recommended that the FACE_<wbr/>PRIORITY and
6249FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT (if supported) overrides should be set to 0.<wbr/></p>
6250<p>For example,<wbr/> if availableSceneModes contains
6251<code>(FACE_<wbr/>PRIORITY,<wbr/> ACTION,<wbr/> NIGHT)</code>,<wbr/>  then the camera framework
6252expects sceneModeOverrides to have 9 entries formatted like:
6253<code>(0,<wbr/> 0,<wbr/> 0,<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> AUTO,<wbr/> CONTINUOUS_<wbr/>PICTURE,<wbr/>
6254ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> INCANDESCENT,<wbr/> AUTO)</code>.<wbr/></p>
6255            </td>
6256          </tr>
6257
6258          <tr class="entries_header">
6259            <th class="th_details" colspan="6">HAL Implementation Details</th>
6260          </tr>
6261          <tr class="entry_cont">
6262            <td class="entry_details" colspan="6">
6263              <p>To maintain backward compatibility,<wbr/> this list will be made available
6264in the static metadata of the camera service.<wbr/>  The camera service will
6265use these values to set <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
6266<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
6267mode other than FACE_<wbr/>PRIORITY and FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT (if supported).<wbr/></p>
6268            </td>
6269          </tr>
6270
6271          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6272           <!-- end of entry -->
6273
6274
6275          <tr class="entry" id="static_android.control.availableHighSpeedVideoConfigurations">
6276            <td class="entry_name
6277             " rowspan="5">
6278              android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations
6279            </td>
6280            <td class="entry_type">
6281                <span class="entry_type_name">int32</span>
6282                <span class="entry_type_container">x</span>
6283
6284                <span class="entry_type_array">
6285                  5 x n
6286                </span>
6287              <span class="entry_type_visibility"> [hidden as highSpeedVideoConfiguration]</span>
6288
6289
6290              <span class="entry_type_hwlevel">[limited] </span>
6291
6292
6293
6294
6295            </td> <!-- entry_type -->
6296
6297            <td class="entry_description">
6298              <p>List of available high speed video size,<wbr/> fps range and max batch size configurations
6299supported 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>
6300            </td>
6301
6302            <td class="entry_units">
6303            </td>
6304
6305            <td class="entry_range">
6306              <p>For each configuration,<wbr/> the fps_<wbr/>max &gt;= 120fps.<wbr/></p>
6307            </td>
6308
6309            <td class="entry_hal_version">
6310              <p>3.<wbr/>2</p>
6311            </td>
6312
6313            <td class="entry_tags">
6314              <ul class="entry_tags">
6315                  <li><a href="#tag_V1">V1</a></li>
6316              </ul>
6317            </td>
6318
6319          </tr>
6320          <tr class="entries_header">
6321            <th class="th_details" colspan="6">Details</th>
6322          </tr>
6323          <tr class="entry_cont">
6324            <td class="entry_details" colspan="6">
6325              <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/>
6326this metadata will list the supported high speed video size,<wbr/> fps range and max batch size
6327configurations.<wbr/> All the sizes listed in this configuration will be a subset of the sizes
6328reported by <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputSizes">StreamConfigurationMap#getOutputSizes</a>
6329for processed non-stalling formats.<wbr/></p>
6330<p>For the high speed video use case,<wbr/> the application must
6331select the video size and fps range from this metadata to configure the recording and
6332preview streams and setup the recording requests.<wbr/> For example,<wbr/> if the application intends
6333to do high speed recording,<wbr/> it can select the maximum size reported by this metadata to
6334configure output streams.<wbr/> Once the size is selected,<wbr/> application can filter this metadata
6335by selected size and get the supported fps ranges,<wbr/> and use these fps ranges to setup the
6336recording requests.<wbr/> Note that for the use case of multiple output streams,<wbr/> application
6337must select one unique size from this metadata to use (e.<wbr/>g.,<wbr/> preview and recording streams
6338must have the same size).<wbr/> Otherwise,<wbr/> the high speed capture session creation will fail.<wbr/></p>
6339<p>The min and max fps will be multiple times of 30fps.<wbr/></p>
6340<p>High speed video streaming extends significant performance pressue to camera hardware,<wbr/>
6341to achieve efficient high speed streaming,<wbr/> the camera device may have to aggregate
6342multiple frames together and send to camera device for processing where the request
6343controls are same for all the frames in this batch.<wbr/> Max batch size indicates
6344the max possible number of frames the camera device will group together for this high
6345speed stream configuration.<wbr/> This max batch size will be used to generate a high speed
6346recording request list by
6347<a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a>.<wbr/>
6348The max batch size for each configuration will satisfy below conditions:</p>
6349<ul>
6350<li>Each max batch size will be a divisor of its corresponding fps_<wbr/>max /<wbr/> 30.<wbr/> For example,<wbr/>
6351if max_<wbr/>fps is 300,<wbr/> max batch size will only be 1,<wbr/> 2,<wbr/> 5,<wbr/> or 10.<wbr/></li>
6352<li>The camera device may choose smaller internal batch size for each configuration,<wbr/> but
6353the actual batch size will be a divisor of max batch size.<wbr/> For example,<wbr/> if the max batch
6354size is 8,<wbr/> the actual batch size used by camera device will only be 1,<wbr/> 2,<wbr/> 4,<wbr/> or 8.<wbr/></li>
6355<li>The max batch size in each configuration entry must be no larger than 32.<wbr/></li>
6356</ul>
6357<p>The camera device doesn't have to support batch mode to achieve high speed video recording,<wbr/>
6358in such case,<wbr/> batch_<wbr/>size_<wbr/>max will be reported as 1 in each configuration entry.<wbr/></p>
6359<p>This fps ranges in this configuration list can only be used to create requests
6360that are submitted to a high speed camera capture session created by
6361<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>.<wbr/>
6362The fps ranges reported in this metadata must not be used to setup capture requests for
6363normal capture session,<wbr/> or it will cause request error.<wbr/></p>
6364            </td>
6365          </tr>
6366
6367          <tr class="entries_header">
6368            <th class="th_details" colspan="6">HAL Implementation Details</th>
6369          </tr>
6370          <tr class="entry_cont">
6371            <td class="entry_details" colspan="6">
6372              <p>All the sizes listed in this configuration will be a subset of the sizes reported by
6373<a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> for processed non-stalling output formats.<wbr/>
6374Note that for all high speed video configurations,<wbr/> HAL must be able to support a minimum
6375of two streams,<wbr/> though the application might choose to configure just one stream.<wbr/></p>
6376<p>The HAL may support multiple sensor modes for high speed outputs,<wbr/> for example,<wbr/> 120fps
6377sensor mode and 120fps recording,<wbr/> 240fps sensor mode for 240fps recording.<wbr/> The application
6378usually starts preview first,<wbr/> then starts recording.<wbr/> To avoid sensor mode switch caused
6379stutter when starting recording as much as possible,<wbr/> the application may want to ensure
6380the same sensor mode is used for preview and recording.<wbr/> Therefore,<wbr/> The HAL must advertise
6381the variable fps range [30,<wbr/> fps_<wbr/>max] for each fixed fps range in this configuration list.<wbr/>
6382For example,<wbr/> if the HAL advertises [120,<wbr/> 120] and [240,<wbr/> 240],<wbr/> the HAL must also advertise
6383[30,<wbr/> 120] and [30,<wbr/> 240] for each configuration.<wbr/> In doing so,<wbr/> if the application intends to
6384do 120fps recording,<wbr/> it can select [30,<wbr/> 120] to start preview,<wbr/> and [120,<wbr/> 120] to start
6385recording.<wbr/> For these variable fps ranges,<wbr/> it's up to the HAL to decide the actual fps
6386values that are suitable for smooth preview streaming.<wbr/> If the HAL sees different max_<wbr/>fps
6387values that fall into different sensor modes in a sequence of requests,<wbr/> the HAL must
6388switch the sensor mode as quick as possible to minimize the mode switch caused stutter.<wbr/></p>
6389            </td>
6390          </tr>
6391
6392          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6393           <!-- end of entry -->
6394
6395
6396          <tr class="entry" id="static_android.control.aeLockAvailable">
6397            <td class="entry_name
6398             " rowspan="3">
6399              android.<wbr/>control.<wbr/>ae<wbr/>Lock<wbr/>Available
6400            </td>
6401            <td class="entry_type">
6402                <span class="entry_type_name entry_type_name_enum">byte</span>
6403
6404              <span class="entry_type_visibility"> [public as boolean]</span>
6405
6406
6407              <span class="entry_type_hwlevel">[legacy] </span>
6408
6409
6410
6411                <ul class="entry_type_enum">
6412                  <li>
6413                    <span class="entry_type_enum_name">FALSE (v3.2)</span>
6414                  </li>
6415                  <li>
6416                    <span class="entry_type_enum_name">TRUE (v3.2)</span>
6417                  </li>
6418                </ul>
6419
6420            </td> <!-- entry_type -->
6421
6422            <td class="entry_description">
6423              <p>Whether the camera device supports <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></p>
6424            </td>
6425
6426            <td class="entry_units">
6427            </td>
6428
6429            <td class="entry_range">
6430            </td>
6431
6432            <td class="entry_hal_version">
6433              <p>3.<wbr/>2</p>
6434            </td>
6435
6436            <td class="entry_tags">
6437              <ul class="entry_tags">
6438                  <li><a href="#tag_BC">BC</a></li>
6439              </ul>
6440            </td>
6441
6442          </tr>
6443          <tr class="entries_header">
6444            <th class="th_details" colspan="6">Details</th>
6445          </tr>
6446          <tr class="entry_cont">
6447            <td class="entry_details" colspan="6">
6448              <p>Devices with MANUAL_<wbr/>SENSOR capability or BURST_<wbr/>CAPTURE capability will always
6449list <code>true</code>.<wbr/> This includes FULL devices.<wbr/></p>
6450            </td>
6451          </tr>
6452
6453
6454          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6455           <!-- end of entry -->
6456
6457
6458          <tr class="entry" id="static_android.control.awbLockAvailable">
6459            <td class="entry_name
6460             " rowspan="3">
6461              android.<wbr/>control.<wbr/>awb<wbr/>Lock<wbr/>Available
6462            </td>
6463            <td class="entry_type">
6464                <span class="entry_type_name entry_type_name_enum">byte</span>
6465
6466              <span class="entry_type_visibility"> [public as boolean]</span>
6467
6468
6469              <span class="entry_type_hwlevel">[legacy] </span>
6470
6471
6472
6473                <ul class="entry_type_enum">
6474                  <li>
6475                    <span class="entry_type_enum_name">FALSE (v3.2)</span>
6476                  </li>
6477                  <li>
6478                    <span class="entry_type_enum_name">TRUE (v3.2)</span>
6479                  </li>
6480                </ul>
6481
6482            </td> <!-- entry_type -->
6483
6484            <td class="entry_description">
6485              <p>Whether the camera device supports <a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></p>
6486            </td>
6487
6488            <td class="entry_units">
6489            </td>
6490
6491            <td class="entry_range">
6492            </td>
6493
6494            <td class="entry_hal_version">
6495              <p>3.<wbr/>2</p>
6496            </td>
6497
6498            <td class="entry_tags">
6499              <ul class="entry_tags">
6500                  <li><a href="#tag_BC">BC</a></li>
6501              </ul>
6502            </td>
6503
6504          </tr>
6505          <tr class="entries_header">
6506            <th class="th_details" colspan="6">Details</th>
6507          </tr>
6508          <tr class="entry_cont">
6509            <td class="entry_details" colspan="6">
6510              <p>Devices with MANUAL_<wbr/>POST_<wbr/>PROCESSING capability or BURST_<wbr/>CAPTURE capability will
6511always list <code>true</code>.<wbr/> This includes FULL devices.<wbr/></p>
6512            </td>
6513          </tr>
6514
6515
6516          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6517           <!-- end of entry -->
6518
6519
6520          <tr class="entry" id="static_android.control.availableModes">
6521            <td class="entry_name
6522             " rowspan="3">
6523              android.<wbr/>control.<wbr/>available<wbr/>Modes
6524            </td>
6525            <td class="entry_type">
6526                <span class="entry_type_name">byte</span>
6527                <span class="entry_type_container">x</span>
6528
6529                <span class="entry_type_array">
6530                  n
6531                </span>
6532              <span class="entry_type_visibility"> [public as enumList]</span>
6533
6534
6535              <span class="entry_type_hwlevel">[legacy] </span>
6536
6537
6538                <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>mode).<wbr/></div>
6539
6540
6541            </td> <!-- entry_type -->
6542
6543            <td class="entry_description">
6544              <p>List of control modes for <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> that are supported by this camera
6545device.<wbr/></p>
6546            </td>
6547
6548            <td class="entry_units">
6549            </td>
6550
6551            <td class="entry_range">
6552              <p>Any value listed in <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a></p>
6553            </td>
6554
6555            <td class="entry_hal_version">
6556              <p>3.<wbr/>2</p>
6557            </td>
6558
6559            <td class="entry_tags">
6560            </td>
6561
6562          </tr>
6563          <tr class="entries_header">
6564            <th class="th_details" colspan="6">Details</th>
6565          </tr>
6566          <tr class="entry_cont">
6567            <td class="entry_details" colspan="6">
6568              <p>This list contains control modes that can be set for the camera device.<wbr/>
6569LEGACY mode devices will always support AUTO mode.<wbr/> LIMITED and FULL
6570devices will always support OFF,<wbr/> AUTO modes.<wbr/></p>
6571            </td>
6572          </tr>
6573
6574
6575          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6576           <!-- end of entry -->
6577
6578
6579          <tr class="entry" id="static_android.control.postRawSensitivityBoostRange">
6580            <td class="entry_name
6581             " rowspan="5">
6582              android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost<wbr/>Range
6583            </td>
6584            <td class="entry_type">
6585                <span class="entry_type_name">int32</span>
6586                <span class="entry_type_container">x</span>
6587
6588                <span class="entry_type_array">
6589                  2
6590                </span>
6591              <span class="entry_type_visibility"> [public as rangeInt]</span>
6592
6593
6594
6595
6596                <div class="entry_type_notes">Range of supported post RAW sensitivitiy boosts</div>
6597
6598
6599            </td> <!-- entry_type -->
6600
6601            <td class="entry_description">
6602              <p>Range of boosts for <a href="#controls_android.control.postRawSensitivityBoost">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost</a> supported
6603by this camera device.<wbr/></p>
6604            </td>
6605
6606            <td class="entry_units">
6607              ISO arithmetic units,<wbr/> the same as android.<wbr/>sensor.<wbr/>sensitivity
6608            </td>
6609
6610            <td class="entry_range">
6611            </td>
6612
6613            <td class="entry_hal_version">
6614              <p>3.<wbr/>2</p>
6615            </td>
6616
6617            <td class="entry_tags">
6618            </td>
6619
6620          </tr>
6621          <tr class="entries_header">
6622            <th class="th_details" colspan="6">Details</th>
6623          </tr>
6624          <tr class="entry_cont">
6625            <td class="entry_details" colspan="6">
6626              <p>Devices support post RAW sensitivity boost  will advertise
6627<a href="#controls_android.control.postRawSensitivityBoost">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost</a> key for controling
6628post RAW sensitivity boost.<wbr/></p>
6629<p>This key will be <code>null</code> for devices that do not support any RAW format
6630outputs.<wbr/> For devices that do support RAW format outputs,<wbr/> this key will always
6631present,<wbr/> and if a device does not support post RAW sensitivity boost,<wbr/> it will
6632list <code>(100,<wbr/> 100)</code> in this key.<wbr/></p>
6633            </td>
6634          </tr>
6635
6636          <tr class="entries_header">
6637            <th class="th_details" colspan="6">HAL Implementation Details</th>
6638          </tr>
6639          <tr class="entry_cont">
6640            <td class="entry_details" colspan="6">
6641              <p>This key is added in legacy HAL3.<wbr/>4.<wbr/> For legacy HAL3.<wbr/>3 or earlier devices,<wbr/> camera
6642framework will generate this key as <code>(100,<wbr/> 100)</code> if device supports any of RAW output
6643formats.<wbr/>  All legacy HAL3.<wbr/>4 and above devices should list this key if device supports
6644any of RAW output formats.<wbr/></p>
6645            </td>
6646          </tr>
6647
6648          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6649           <!-- end of entry -->
6650
6651
6652          <tr class="entry" id="static_android.control.availableExtendedSceneModeMaxSizes">
6653            <td class="entry_name
6654             " rowspan="5">
6655              android.<wbr/>control.<wbr/>available<wbr/>Extended<wbr/>Scene<wbr/>Mode<wbr/>Max<wbr/>Sizes
6656            </td>
6657            <td class="entry_type">
6658                <span class="entry_type_name">int32</span>
6659                <span class="entry_type_container">x</span>
6660
6661                <span class="entry_type_array">
6662                  3 x n
6663                </span>
6664              <span class="entry_type_visibility"> [ndk_public]</span>
6665
6666
6667              <span class="entry_type_hwlevel">[limited] </span>
6668
6669
6670                <div class="entry_type_notes">List of extended scene modes and the corresponding max streaming sizes.<wbr/></div>
6671
6672
6673            </td> <!-- entry_type -->
6674
6675            <td class="entry_description">
6676              <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
6677by this camera device,<wbr/> and each extended scene mode's maximum streaming (non-stall) size
6678with  effect.<wbr/></p>
6679            </td>
6680
6681            <td class="entry_units">
6682              (mode,<wbr/> width,<wbr/> height)
6683            </td>
6684
6685            <td class="entry_range">
6686            </td>
6687
6688            <td class="entry_hal_version">
6689              <p>3.<wbr/>5</p>
6690            </td>
6691
6692            <td class="entry_tags">
6693            </td>
6694
6695          </tr>
6696          <tr class="entries_header">
6697            <th class="th_details" colspan="6">Details</th>
6698          </tr>
6699          <tr class="entry_cont">
6700            <td class="entry_details" colspan="6">
6701              <p>For DISABLED mode,<wbr/> the camera behaves normally with no extended scene mode enabled.<wbr/></p>
6702<p>For BOKEH_<wbr/>STILL_<wbr/>CAPTURE mode,<wbr/> the maximum streaming dimension specifies the limit
6703under which bokeh is effective when capture intent is PREVIEW.<wbr/> Note that when capture
6704intent is PREVIEW,<wbr/> the bokeh effect may not be as high in quality compared to
6705STILL_<wbr/>CAPTURE intent in order to maintain reasonable frame rate.<wbr/> The maximum streaming
6706dimension must be one of the YUV_<wbr/>420_<wbr/>888 or PRIVATE resolutions in
6707availableStreamConfigurations,<wbr/> or (0,<wbr/> 0) if preview bokeh is not supported.<wbr/> If the
6708application configures a stream larger than the maximum streaming dimension,<wbr/> bokeh
6709effect may not be applied for this stream for PREVIEW intent.<wbr/></p>
6710<p>For BOKEH_<wbr/>CONTINUOUS mode,<wbr/> the maximum streaming dimension specifies the limit under
6711which bokeh is effective.<wbr/> This dimension must be one of the YUV_<wbr/>420_<wbr/>888 or PRIVATE
6712resolutions in availableStreamConfigurations,<wbr/> and if the sensor maximum resolution is
6713larger than or equal to 1080p,<wbr/> the maximum streaming dimension must be at least 1080p.<wbr/>
6714If the application configures a stream with larger dimension,<wbr/> the stream may not have
6715bokeh effect applied.<wbr/></p>
6716            </td>
6717          </tr>
6718
6719          <tr class="entries_header">
6720            <th class="th_details" colspan="6">HAL Implementation Details</th>
6721          </tr>
6722          <tr class="entry_cont">
6723            <td class="entry_details" colspan="6">
6724              <p>For available extended scene modes,<wbr/> DISABLED will always be listed.<wbr/></p>
6725<p>HAL must support at list one non-OFF extended scene mode if extendedSceneMode control is
6726available on the camera device.<wbr/> For DISABLED mode,<wbr/> the maximum streaming resolution must
6727be set to (0,<wbr/> 0).<wbr/></p>
6728            </td>
6729          </tr>
6730
6731          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6732           <!-- end of entry -->
6733
6734
6735          <tr class="entry" id="static_android.control.availableExtendedSceneModeZoomRatioRanges">
6736            <td class="entry_name
6737             " rowspan="3">
6738              android.<wbr/>control.<wbr/>available<wbr/>Extended<wbr/>Scene<wbr/>Mode<wbr/>Zoom<wbr/>Ratio<wbr/>Ranges
6739            </td>
6740            <td class="entry_type">
6741                <span class="entry_type_name">float</span>
6742                <span class="entry_type_container">x</span>
6743
6744                <span class="entry_type_array">
6745                  2 x n
6746                </span>
6747              <span class="entry_type_visibility"> [ndk_public]</span>
6748
6749
6750              <span class="entry_type_hwlevel">[limited] </span>
6751
6752
6753                <div class="entry_type_notes">Zoom ranges for all supported non-OFF extended scene modes.<wbr/></div>
6754
6755
6756            </td> <!-- entry_type -->
6757
6758            <td class="entry_description">
6759              <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>
6760            </td>
6761
6762            <td class="entry_units">
6763              (minZoom,<wbr/> maxZoom)
6764            </td>
6765
6766            <td class="entry_range">
6767            </td>
6768
6769            <td class="entry_hal_version">
6770              <p>3.<wbr/>5</p>
6771            </td>
6772
6773            <td class="entry_tags">
6774            </td>
6775
6776          </tr>
6777          <tr class="entries_header">
6778            <th class="th_details" colspan="6">Details</th>
6779          </tr>
6780          <tr class="entry_cont">
6781            <td class="entry_details" colspan="6">
6782              <p>When extended scene mode is set,<wbr/> the camera device may have limited range of zoom ratios
6783compared to when extended scene mode is DISABLED.<wbr/> This tag lists the zoom ratio ranges
6784for all supported non-DISABLED extended scene modes,<wbr/> in the same order as in
6785android.<wbr/>control.<wbr/>available<wbr/>Extended.<wbr/></p>
6786<p>Range [1.<wbr/>0,<wbr/> 1.<wbr/>0] means that no zoom (optical or digital) is supported.<wbr/></p>
6787            </td>
6788          </tr>
6789
6790
6791          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6792           <!-- end of entry -->
6793
6794
6795          <tr class="entry" id="static_android.control.availableExtendedSceneModeCapabilities">
6796            <td class="entry_name
6797             " rowspan="3">
6798              android.<wbr/>control.<wbr/>available<wbr/>Extended<wbr/>Scene<wbr/>Mode<wbr/>Capabilities
6799            </td>
6800            <td class="entry_type">
6801                <span class="entry_type_name">int32</span>
6802                <span class="entry_type_container">x</span>
6803
6804                <span class="entry_type_array">
6805                  n
6806                </span>
6807              <span class="entry_type_visibility"> [public as capability]</span>
6808
6809              <span class="entry_type_synthetic">[synthetic] </span>
6810
6811
6812
6813
6814
6815            </td> <!-- entry_type -->
6816
6817            <td class="entry_description">
6818              <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
6819are supported by this camera device,<wbr/> and each extended scene mode's capabilities such
6820as maximum streaming size,<wbr/> and supported zoom ratio ranges.<wbr/></p>
6821            </td>
6822
6823            <td class="entry_units">
6824            </td>
6825
6826            <td class="entry_range">
6827            </td>
6828
6829            <td class="entry_hal_version">
6830              <p>3.<wbr/>5</p>
6831            </td>
6832
6833            <td class="entry_tags">
6834            </td>
6835
6836          </tr>
6837          <tr class="entries_header">
6838            <th class="th_details" colspan="6">Details</th>
6839          </tr>
6840          <tr class="entry_cont">
6841            <td class="entry_details" colspan="6">
6842              <p>For DISABLED mode,<wbr/> the camera behaves normally with no extended scene mode enabled.<wbr/></p>
6843<p>For BOKEH_<wbr/>STILL_<wbr/>CAPTURE mode,<wbr/> the maximum streaming dimension specifies the limit
6844under which bokeh is effective when capture intent is PREVIEW.<wbr/> Note that when capture
6845intent is PREVIEW,<wbr/> the bokeh effect may not be as high quality compared to STILL_<wbr/>CAPTURE
6846intent in order to maintain reasonable frame rate.<wbr/> The maximum streaming dimension must
6847be one of the YUV_<wbr/>420_<wbr/>888 or PRIVATE resolutions in availableStreamConfigurations,<wbr/> or
6848(0,<wbr/> 0) if preview bokeh is not supported.<wbr/> If the application configures a stream
6849larger than the maximum streaming dimension,<wbr/> bokeh effect may not be applied for this
6850stream for PREVIEW intent.<wbr/></p>
6851<p>For BOKEH_<wbr/>CONTINUOUS mode,<wbr/> the maximum streaming dimension specifies the limit under
6852which bokeh is effective.<wbr/> This dimension must be one of the YUV_<wbr/>420_<wbr/>888 or PRIVATE
6853resolutions in availableStreamConfigurations,<wbr/> and if the sensor maximum resolution is
6854larger than or equal to 1080p,<wbr/> the maximum streaming dimension must be at least 1080p.<wbr/>
6855If the application configures a stream with larger dimension,<wbr/> the stream may not have
6856bokeh effect applied.<wbr/></p>
6857<p>When extended scene mode is set,<wbr/> the camera device may have limited range of zoom ratios
6858compared to when the mode is DISABLED.<wbr/> availableExtendedSceneModeCapabilities lists the
6859zoom ranges for all supported extended modes.<wbr/> A range of (1.<wbr/>0,<wbr/> 1.<wbr/>0) means that no zoom
6860(optical or digital) is supported.<wbr/></p>
6861            </td>
6862          </tr>
6863
6864
6865          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6866           <!-- end of entry -->
6867
6868
6869          <tr class="entry" id="static_android.control.zoomRatioRange">
6870            <td class="entry_name
6871             " rowspan="5">
6872              android.<wbr/>control.<wbr/>zoom<wbr/>Ratio<wbr/>Range
6873            </td>
6874            <td class="entry_type">
6875                <span class="entry_type_name">float</span>
6876                <span class="entry_type_container">x</span>
6877
6878                <span class="entry_type_array">
6879                  2
6880                </span>
6881              <span class="entry_type_visibility"> [public as rangeFloat]</span>
6882
6883
6884              <span class="entry_type_hwlevel">[limited] </span>
6885
6886
6887                <div class="entry_type_notes">The range of zoom ratios that this camera device supports.<wbr/></div>
6888
6889
6890            </td> <!-- entry_type -->
6891
6892            <td class="entry_description">
6893              <p>Minimum and maximum zoom ratios supported by this camera device.<wbr/></p>
6894            </td>
6895
6896            <td class="entry_units">
6897              A pair of zoom ratio in floating-points: (minZoom,<wbr/> maxZoom)
6898            </td>
6899
6900            <td class="entry_range">
6901              <p>maxZoom &gt;= 1.<wbr/>0 &gt;= minZoom</p>
6902            </td>
6903
6904            <td class="entry_hal_version">
6905              <p>3.<wbr/>5</p>
6906            </td>
6907
6908            <td class="entry_tags">
6909            </td>
6910
6911          </tr>
6912          <tr class="entries_header">
6913            <th class="th_details" colspan="6">Details</th>
6914          </tr>
6915          <tr class="entry_cont">
6916            <td class="entry_details" colspan="6">
6917              <p>If the camera device supports zoom-out from 1x zoom,<wbr/> minZoom will be less than 1.<wbr/>0,<wbr/> and
6918setting <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
6919of view.<wbr/></p>
6920            </td>
6921          </tr>
6922
6923          <tr class="entries_header">
6924            <th class="th_details" colspan="6">HAL Implementation Details</th>
6925          </tr>
6926          <tr class="entry_cont">
6927            <td class="entry_details" colspan="6">
6928              <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>
6929must be less than or equal to maxZoom.<wbr/> The camera framework makes sure to always
6930control 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
6931used to do horizontal or vertical cropping (but not both) to achieve aspect ratio
6932different than the camera sensor's native aspect ratio.<wbr/></p>
6933<p>For a logical multi-camera device,<wbr/> this key must either be reported for both the logical
6934camera device and all its physical sub-cameras,<wbr/> or none of them.<wbr/></p>
6935<p>When the key is not reported,<wbr/> camera framework derives the application-facing
6936zoomRatioRange to be (1,<wbr/> <a href="#static_android.scaler.availableMaxDigitalZoom">android.<wbr/>scaler.<wbr/>available<wbr/>Max<wbr/>Digital<wbr/>Zoom</a>).<wbr/></p>
6937            </td>
6938          </tr>
6939
6940          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6941           <!-- end of entry -->
6942
6943
6944          <tr class="entry" id="static_android.control.availableHighSpeedVideoConfigurationsMaximumResolution">
6945            <td class="entry_name
6946             " rowspan="5">
6947              android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations<wbr/>Maximum<wbr/>Resolution
6948            </td>
6949            <td class="entry_type">
6950                <span class="entry_type_name">int32</span>
6951                <span class="entry_type_container">x</span>
6952
6953                <span class="entry_type_array">
6954                  5 x n
6955                </span>
6956              <span class="entry_type_visibility"> [hidden as highSpeedVideoConfiguration]</span>
6957
6958
6959
6960
6961
6962
6963            </td> <!-- entry_type -->
6964
6965            <td class="entry_description">
6966              <p>List of available high speed video size,<wbr/> fps range and max batch size configurations
6967supported by the camera device,<wbr/> in the format of
6968(width,<wbr/> height,<wbr/> fps_<wbr/>min,<wbr/> fps_<wbr/>max,<wbr/> batch_<wbr/>size_<wbr/>max),<wbr/>
6969when <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to
6970<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>
6971            </td>
6972
6973            <td class="entry_units">
6974            </td>
6975
6976            <td class="entry_range">
6977              <p>For each configuration,<wbr/> the fps_<wbr/>max &gt;= 120fps.<wbr/></p>
6978            </td>
6979
6980            <td class="entry_hal_version">
6981              <p>3.<wbr/>6</p>
6982            </td>
6983
6984            <td class="entry_tags">
6985              <ul class="entry_tags">
6986                  <li><a href="#tag_V1">V1</a></li>
6987              </ul>
6988            </td>
6989
6990          </tr>
6991          <tr class="entries_header">
6992            <th class="th_details" colspan="6">Details</th>
6993          </tr>
6994          <tr class="entry_cont">
6995            <td class="entry_details" colspan="6">
6996              <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
6997which are applicable when <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to
6998<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>
6999            </td>
7000          </tr>
7001
7002          <tr class="entries_header">
7003            <th class="th_details" colspan="6">HAL Implementation Details</th>
7004          </tr>
7005          <tr class="entry_cont">
7006            <td class="entry_details" colspan="6">
7007              <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>
7008            </td>
7009          </tr>
7010
7011          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
7012           <!-- end of entry -->
7013
7014
7015
7016      <!-- end of kind -->
7017      </tbody>
7018      <tr><td colspan="7" class="kind">dynamic</td></tr>
7019
7020      <thead class="entries_header">
7021        <tr>
7022          <th class="th_name">Property Name</th>
7023          <th class="th_type">Type</th>
7024          <th class="th_description">Description</th>
7025          <th class="th_units">Units</th>
7026          <th class="th_range">Range</th>
7027          <th class="th_hal_version">Initial HIDL HAL version</th>
7028          <th class="th_tags">Tags</th>
7029        </tr>
7030      </thead>
7031
7032      <tbody>
7033
7034
7035
7036
7037
7038
7039
7040
7041
7042
7043          <tr class="entry" id="dynamic_android.control.aePrecaptureId">
7044            <td class="entry_name
7045                entry_name_deprecated
7046             " rowspan="3">
7047              android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Id
7048            </td>
7049            <td class="entry_type">
7050                <span class="entry_type_name">int32</span>
7051
7052              <span class="entry_type_visibility"> [system]</span>
7053
7054
7055
7056              <span class="entry_type_deprecated">[deprecated] </span>
7057
7058
7059
7060            </td> <!-- entry_type -->
7061
7062            <td class="entry_description">
7063              <p>The ID sent with the latest
7064CAMERA2_<wbr/>TRIGGER_<wbr/>PRECAPTURE_<wbr/>METERING call</p>
7065            </td>
7066
7067            <td class="entry_units">
7068            </td>
7069
7070            <td class="entry_range">
7071              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
7072            </td>
7073
7074            <td class="entry_hal_version">
7075              <p>3.<wbr/>2</p>
7076            </td>
7077
7078            <td class="entry_tags">
7079            </td>
7080
7081          </tr>
7082          <tr class="entries_header">
7083            <th class="th_details" colspan="6">Details</th>
7084          </tr>
7085          <tr class="entry_cont">
7086            <td class="entry_details" colspan="6">
7087              <p>Must be 0 if no
7088CAMERA2_<wbr/>TRIGGER_<wbr/>PRECAPTURE_<wbr/>METERING trigger received yet
7089by HAL.<wbr/> Always updated even if AE algorithm ignores the
7090trigger</p>
7091            </td>
7092          </tr>
7093
7094
7095          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
7096           <!-- end of entry -->
7097
7098
7099          <tr class="entry" id="dynamic_android.control.aeAntibandingMode">
7100            <td class="entry_name
7101             " rowspan="5">
7102              android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode
7103            </td>
7104            <td class="entry_type">
7105                <span class="entry_type_name entry_type_name_enum">byte</span>
7106
7107              <span class="entry_type_visibility"> [public]</span>
7108
7109
7110              <span class="entry_type_hwlevel">[legacy] </span>
7111
7112
7113
7114                <ul class="entry_type_enum">
7115                  <li>
7116                    <span class="entry_type_enum_name">OFF (v3.2)</span>
7117                    <span class="entry_type_enum_notes"><p>The camera device will not adjust exposure duration to
7118avoid banding problems.<wbr/></p></span>
7119                  </li>
7120                  <li>
7121                    <span class="entry_type_enum_name">50HZ (v3.2)</span>
7122                    <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
7123avoid banding problems with 50Hz illumination sources.<wbr/></p></span>
7124                  </li>
7125                  <li>
7126                    <span class="entry_type_enum_name">60HZ (v3.2)</span>
7127                    <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
7128avoid banding problems with 60Hz illumination
7129sources.<wbr/></p></span>
7130                  </li>
7131                  <li>
7132                    <span class="entry_type_enum_name">AUTO (v3.2)</span>
7133                    <span class="entry_type_enum_notes"><p>The camera device will automatically adapt its
7134antibanding routine to the current illumination
7135condition.<wbr/> This is the default mode if AUTO is
7136available on given camera device.<wbr/></p></span>
7137                  </li>
7138                </ul>
7139
7140            </td> <!-- entry_type -->
7141
7142            <td class="entry_description">
7143              <p>The desired setting for the camera device's auto-exposure
7144algorithm's antibanding compensation.<wbr/></p>
7145            </td>
7146
7147            <td class="entry_units">
7148            </td>
7149
7150            <td class="entry_range">
7151              <p><a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a></p>
7152            </td>
7153
7154            <td class="entry_hal_version">
7155              <p>3.<wbr/>2</p>
7156            </td>
7157
7158            <td class="entry_tags">
7159              <ul class="entry_tags">
7160                  <li><a href="#tag_BC">BC</a></li>
7161              </ul>
7162            </td>
7163
7164          </tr>
7165          <tr class="entries_header">
7166            <th class="th_details" colspan="6">Details</th>
7167          </tr>
7168          <tr class="entry_cont">
7169            <td class="entry_details" colspan="6">
7170              <p>Some kinds of lighting fixtures,<wbr/> such as some fluorescent
7171lights,<wbr/> flicker at the rate of the power supply frequency
7172(60Hz or 50Hz,<wbr/> depending on country).<wbr/> While this is
7173typically not noticeable to a person,<wbr/> it can be visible to
7174a camera device.<wbr/> If a camera sets its exposure time to the
7175wrong value,<wbr/> the flicker may become visible in the
7176viewfinder as flicker or in a final captured image,<wbr/> as a
7177set of variable-brightness bands across the image.<wbr/></p>
7178<p>Therefore,<wbr/> the auto-exposure routines of camera devices
7179include antibanding routines that ensure that the chosen
7180exposure value will not cause such banding.<wbr/> The choice of
7181exposure time depends on the rate of flicker,<wbr/> which the
7182camera device can detect automatically,<wbr/> or the expected
7183rate can be selected by the application using this
7184control.<wbr/></p>
7185<p>A given camera device may not support all of the possible
7186options for the antibanding mode.<wbr/> The
7187<a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a> key contains
7188the available modes for a given camera device.<wbr/></p>
7189<p>AUTO mode is the default if it is available on given
7190camera device.<wbr/> When AUTO mode is not available,<wbr/> the
7191default will be either 50HZ or 60HZ,<wbr/> and both 50HZ
7192and 60HZ will be available.<wbr/></p>
7193<p>If manual exposure control is enabled (by setting
7194<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/>
7195then this setting has no effect,<wbr/> and the application must
7196ensure it selects exposure times that do not cause banding
7197issues.<wbr/> The <a href="#dynamic_android.statistics.sceneFlicker">android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker</a> key can assist
7198the application in this.<wbr/></p>
7199            </td>
7200          </tr>
7201
7202          <tr class="entries_header">
7203            <th class="th_details" colspan="6">HAL Implementation Details</th>
7204          </tr>
7205          <tr class="entry_cont">
7206            <td class="entry_details" colspan="6">
7207              <p>For all capture request templates,<wbr/> this field must be set
7208to AUTO if AUTO mode is available.<wbr/> If AUTO is not available,<wbr/>
7209the default must be either 50HZ or 60HZ,<wbr/> and both 50HZ and
721060HZ must be available.<wbr/></p>
7211<p>If manual exposure control is enabled (by setting
7212<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/>
7213then the exposure values provided by the application must not be
7214adjusted for antibanding.<wbr/></p>
7215            </td>
7216          </tr>
7217
7218          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
7219           <!-- end of entry -->
7220
7221
7222          <tr class="entry" id="dynamic_android.control.aeExposureCompensation">
7223            <td class="entry_name
7224             " rowspan="3">
7225              android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation
7226            </td>
7227            <td class="entry_type">
7228                <span class="entry_type_name">int32</span>
7229
7230              <span class="entry_type_visibility"> [public]</span>
7231
7232
7233              <span class="entry_type_hwlevel">[legacy] </span>
7234
7235
7236
7237
7238            </td> <!-- entry_type -->
7239
7240            <td class="entry_description">
7241              <p>Adjustment to auto-exposure (AE) target image
7242brightness.<wbr/></p>
7243            </td>
7244
7245            <td class="entry_units">
7246              Compensation steps
7247            </td>
7248
7249            <td class="entry_range">
7250              <p><a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a></p>
7251            </td>
7252
7253            <td class="entry_hal_version">
7254              <p>3.<wbr/>2</p>
7255            </td>
7256
7257            <td class="entry_tags">
7258              <ul class="entry_tags">
7259                  <li><a href="#tag_BC">BC</a></li>
7260              </ul>
7261            </td>
7262
7263          </tr>
7264          <tr class="entries_header">
7265            <th class="th_details" colspan="6">Details</th>
7266          </tr>
7267          <tr class="entry_cont">
7268            <td class="entry_details" colspan="6">
7269              <p>The adjustment is measured as a count of steps,<wbr/> with the
7270step size defined by <a href="#static_android.control.aeCompensationStep">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step</a> and the
7271allowed range by <a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a>.<wbr/></p>
7272<p>For example,<wbr/> if the exposure value (EV) step is 0.<wbr/>333,<wbr/> '6'
7273will mean an exposure compensation of +2 EV; -3 will mean an
7274exposure compensation of -1 EV.<wbr/> One EV represents a doubling
7275of image brightness.<wbr/> Note that this control will only be
7276effective if <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>!=</code> OFF.<wbr/> This control
7277will take effect even when <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> <code>== true</code>.<wbr/></p>
7278<p>In the event of exposure compensation value being changed,<wbr/> camera device
7279may take several frames to reach the newly requested exposure target.<wbr/>
7280During that time,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> field will be in the SEARCHING
7281state.<wbr/> Once the new exposure target is reached,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> will
7282change from SEARCHING to either CONVERGED,<wbr/> LOCKED (if AE lock is enabled),<wbr/> or
7283FLASH_<wbr/>REQUIRED (if the scene is too dark for still capture).<wbr/></p>
7284            </td>
7285          </tr>
7286
7287
7288          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
7289           <!-- end of entry -->
7290
7291
7292          <tr class="entry" id="dynamic_android.control.aeLock">
7293            <td class="entry_name
7294             " rowspan="3">
7295              android.<wbr/>control.<wbr/>ae<wbr/>Lock
7296            </td>
7297            <td class="entry_type">
7298                <span class="entry_type_name entry_type_name_enum">byte</span>
7299
7300              <span class="entry_type_visibility"> [public as boolean]</span>
7301
7302
7303              <span class="entry_type_hwlevel">[legacy] </span>
7304
7305
7306
7307                <ul class="entry_type_enum">
7308                  <li>
7309                    <span class="entry_type_enum_name">OFF (v3.2)</span>
7310                    <span class="entry_type_enum_notes"><p>Auto-exposure lock is disabled; the AE algorithm
7311is free to update its parameters.<wbr/></p></span>
7312                  </li>
7313                  <li>
7314                    <span class="entry_type_enum_name">ON (v3.2)</span>
7315                    <span class="entry_type_enum_notes"><p>Auto-exposure lock is enabled; the AE algorithm
7316must not update the exposure and sensitivity parameters
7317while the lock is active.<wbr/></p>
7318<p><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a> setting changes
7319will still take effect while auto-exposure is locked.<wbr/></p>
7320<p>Some rare LEGACY devices may not support
7321this,<wbr/> in which case the value will always be overridden to OFF.<wbr/></p></span>
7322                  </li>
7323                </ul>
7324
7325            </td> <!-- entry_type -->
7326
7327            <td class="entry_description">
7328              <p>Whether auto-exposure (AE) is currently locked to its latest
7329calculated values.<wbr/></p>
7330            </td>
7331
7332            <td class="entry_units">
7333            </td>
7334
7335            <td class="entry_range">
7336            </td>
7337
7338            <td class="entry_hal_version">
7339              <p>3.<wbr/>2</p>
7340            </td>
7341
7342            <td class="entry_tags">
7343              <ul class="entry_tags">
7344                  <li><a href="#tag_BC">BC</a></li>
7345              </ul>
7346            </td>
7347
7348          </tr>
7349          <tr class="entries_header">
7350            <th class="th_details" colspan="6">Details</th>
7351          </tr>
7352          <tr class="entry_cont">
7353            <td class="entry_details" colspan="6">
7354              <p>When set to <code>true</code> (ON),<wbr/> the AE algorithm is locked to its latest parameters,<wbr/>
7355and will not change exposure settings until the lock is set to <code>false</code> (OFF).<wbr/></p>
7356<p>Note that even when AE is locked,<wbr/> the flash may be fired if
7357the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is ON_<wbr/>AUTO_<wbr/>FLASH /<wbr/>
7358ON_<wbr/>ALWAYS_<wbr/>FLASH /<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE.<wbr/></p>
7359<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
7360is ON,<wbr/> the camera device will still adjust its exposure value.<wbr/></p>
7361<p>If AE precapture is triggered (see <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>)
7362when AE is already locked,<wbr/> the camera device will not change the exposure time
7363(<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>)
7364parameters.<wbr/> The flash may be fired if the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>
7365is ON_<wbr/>AUTO_<wbr/>FLASH/<wbr/>ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE and the scene is too dark.<wbr/> If the
7366<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/>
7367Similarly,<wbr/> AE precapture trigger CANCEL has no effect when AE is already locked.<wbr/></p>
7368<p>When an AE precapture sequence is triggered,<wbr/> AE unlock will not be able to unlock
7369the AE if AE is locked by the camera device internally during precapture metering
7370sequence In other words,<wbr/> submitting requests with AE unlock has no effect for an
7371ongoing precapture metering sequence.<wbr/> Otherwise,<wbr/> the precapture metering sequence
7372will never succeed in a sequence of preview requests where AE lock is always set
7373to <code>false</code>.<wbr/></p>
7374<p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that
7375get locked do not necessarily correspond to the settings that were present in the
7376latest capture result received from the camera device,<wbr/> since additional captures
7377and AE updates may have occurred even before the result was sent out.<wbr/> If an
7378application is switching between automatic and manual control and wishes to eliminate
7379any flicker during the switch,<wbr/> the following procedure is recommended:</p>
7380<ol>
7381<li>Starting in auto-AE mode:</li>
7382<li>Lock AE</li>
7383<li>Wait for the first result to be output that has the AE locked</li>
7384<li>Copy exposure settings from that result into a request,<wbr/> set the request to manual AE</li>
7385<li>Submit the capture request,<wbr/> proceed to run manual AE as desired.<wbr/></li>
7386</ol>
7387<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>
7388            </td>
7389          </tr>
7390
7391
7392          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
7393           <!-- end of entry -->
7394
7395
7396          <tr class="entry" id="dynamic_android.control.aeMode">
7397            <td class="entry_name
7398             " rowspan="3">
7399              android.<wbr/>control.<wbr/>ae<wbr/>Mode
7400            </td>
7401            <td class="entry_type">
7402                <span class="entry_type_name entry_type_name_enum">byte</span>
7403
7404              <span class="entry_type_visibility"> [public]</span>
7405
7406
7407              <span class="entry_type_hwlevel">[legacy] </span>
7408
7409
7410
7411                <ul class="entry_type_enum">
7412                  <li>
7413                    <span class="entry_type_enum_name">OFF (v3.2)</span>
7414                    <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is disabled.<wbr/></p>
7415<p>The application-selected <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
7416<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> and
7417<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are used by the camera
7418device,<wbr/> along with android.<wbr/>flash.<wbr/>* fields,<wbr/> if there's
7419a flash unit for this camera device.<wbr/></p>
7420<p>Note that auto-white balance (AWB) and auto-focus (AF)
7421behavior is device dependent when AE is in OFF mode.<wbr/>
7422To have consistent behavior across different devices,<wbr/>
7423it is recommended to either set AWB and AF to OFF mode
7424or lock AWB and AF before setting AE to OFF.<wbr/>
7425See <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/>
7426<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>
7427for more details.<wbr/></p>
7428<p>LEGACY devices do not support the OFF mode and will
7429override attempts to use this value to ON.<wbr/></p></span>
7430                  </li>
7431                  <li>
7432                    <span class="entry_type_enum_name">ON (v3.2)</span>
7433                    <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is active,<wbr/>
7434with no flash control.<wbr/></p>
7435<p>The application's values for
7436<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
7437<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
7438<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are ignored.<wbr/> The
7439application has control over the various
7440android.<wbr/>flash.<wbr/>* fields.<wbr/></p></span>
7441                  </li>
7442                  <li>
7443                    <span class="entry_type_enum_name">ON_AUTO_FLASH (v3.2)</span>
7444                    <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
7445the camera's flash unit,<wbr/> firing it in low-light
7446conditions.<wbr/></p>
7447<p>The flash may be fired during a precapture sequence
7448(triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and
7449may be fired for captures for which the
7450<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to
7451STILL_<wbr/>CAPTURE</p></span>
7452                  </li>
7453                  <li>
7454                    <span class="entry_type_enum_name">ON_ALWAYS_FLASH (v3.2)</span>
7455                    <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
7456the camera's flash unit,<wbr/> always firing it for still
7457captures.<wbr/></p>
7458<p>The flash may be fired during a precapture sequence
7459(triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and
7460will always be fired for captures for which the
7461<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to
7462STILL_<wbr/>CAPTURE</p></span>
7463                  </li>
7464                  <li>
7465                    <span class="entry_type_enum_name">ON_AUTO_FLASH_REDEYE (v3.2)</span>
7466                    <span class="entry_type_enum_notes"><p>Like ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> but with automatic red eye
7467reduction.<wbr/></p>
7468<p>If deemed necessary by the camera device,<wbr/> a red eye
7469reduction flash will fire during the precapture
7470sequence.<wbr/></p></span>
7471                  </li>
7472                  <li>
7473                    <span class="entry_type_enum_name">ON_EXTERNAL_FLASH (v3.3)</span>
7474                    <span class="entry_type_enum_notes"><p>An external flash has been turned on.<wbr/></p>
7475<p>It informs the camera device that an external flash has been turned on,<wbr/> and that
7476metering (and continuous focus if active) should be quickly recaculated to account
7477for the external flash.<wbr/> Otherwise,<wbr/> this mode acts like ON.<wbr/></p>
7478<p>When the external flash is turned off,<wbr/> AE mode should be changed to one of the
7479other available AE modes.<wbr/></p>
7480<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
7481be FLASH_<wbr/>REQUIRED after the camera device finishes AE scan and it's too dark without
7482flash.<wbr/></p></span>
7483                  </li>
7484                </ul>
7485
7486            </td> <!-- entry_type -->
7487
7488            <td class="entry_description">
7489              <p>The desired mode for the camera device's
7490auto-exposure routine.<wbr/></p>
7491            </td>
7492
7493            <td class="entry_units">
7494            </td>
7495
7496            <td class="entry_range">
7497              <p><a href="#static_android.control.aeAvailableModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes</a></p>
7498            </td>
7499
7500            <td class="entry_hal_version">
7501              <p>3.<wbr/>2</p>
7502            </td>
7503
7504            <td class="entry_tags">
7505              <ul class="entry_tags">
7506                  <li><a href="#tag_BC">BC</a></li>
7507              </ul>
7508            </td>
7509
7510          </tr>
7511          <tr class="entries_header">
7512            <th class="th_details" colspan="6">Details</th>
7513          </tr>
7514          <tr class="entry_cont">
7515            <td class="entry_details" colspan="6">
7516              <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is
7517AUTO.<wbr/></p>
7518<p>When set to any of the ON modes,<wbr/> the camera device's
7519auto-exposure routine is enabled,<wbr/> overriding the
7520application's selected exposure time,<wbr/> sensor sensitivity,<wbr/>
7521and frame duration (<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
7522<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
7523<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>).<wbr/> If one of the FLASH modes
7524is selected,<wbr/> the camera device's flash unit controls are
7525also overridden.<wbr/></p>
7526<p>The FLASH modes are only available if the camera device
7527has a flash unit (<a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> is <code>true</code>).<wbr/></p>
7528<p>If flash TORCH mode is desired,<wbr/> this field must be set to
7529ON or OFF,<wbr/> and <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> set to TORCH.<wbr/></p>
7530<p>When set to any of the ON modes,<wbr/> the values chosen by the
7531camera device auto-exposure routine for the overridden
7532fields for a given capture will be available in its
7533CaptureResult.<wbr/></p>
7534            </td>
7535          </tr>
7536
7537
7538          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
7539           <!-- end of entry -->
7540
7541
7542          <tr class="entry" id="dynamic_android.control.aeRegions">
7543            <td class="entry_name
7544             " rowspan="5">
7545              android.<wbr/>control.<wbr/>ae<wbr/>Regions
7546            </td>
7547            <td class="entry_type">
7548                <span class="entry_type_name">int32</span>
7549                <span class="entry_type_container">x</span>
7550
7551                <span class="entry_type_array">
7552                  5 x area_count
7553                </span>
7554              <span class="entry_type_visibility"> [public as meteringRectangle]</span>
7555
7556
7557
7558
7559
7560
7561            </td> <!-- entry_type -->
7562
7563            <td class="entry_description">
7564              <p>List of metering areas to use for auto-exposure adjustment.<wbr/></p>
7565            </td>
7566
7567            <td class="entry_units">
7568              Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size or
7569            android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size depending on
7570            distortion correction capability and mode
7571            </td>
7572
7573            <td class="entry_range">
7574              <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
7575<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>
7576depending on distortion correction capability and mode</p>
7577            </td>
7578
7579            <td class="entry_hal_version">
7580              <p>3.<wbr/>2</p>
7581            </td>
7582
7583            <td class="entry_tags">
7584              <ul class="entry_tags">
7585                  <li><a href="#tag_BC">BC</a></li>
7586              </ul>
7587            </td>
7588
7589          </tr>
7590          <tr class="entries_header">
7591            <th class="th_details" colspan="6">Details</th>
7592          </tr>
7593          <tr class="entry_cont">
7594            <td class="entry_details" colspan="6">
7595              <p>Not available if <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a> is 0.<wbr/>
7596Otherwise will always be present.<wbr/></p>
7597<p>The maximum number of regions supported by the device is determined by the value
7598of <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a>.<wbr/></p>
7599<p>For devices not supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate
7600system 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
7601the top-left pixel in the active pixel array,<wbr/> and
7602(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
7603<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
7604active pixel array.<wbr/></p>
7605<p>For devices supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate
7606system depends on the mode being set.<wbr/>
7607When the distortion correction mode is OFF,<wbr/> the coordinate system follows
7608<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
7609<code>(0,<wbr/> 0)</code> being the top-left pixel of the pre-correction active array,<wbr/> and
7610(<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/>
7611<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
7612pixel in the pre-correction active pixel array.<wbr/>
7613When the distortion correction mode is not OFF,<wbr/> the coordinate system follows
7614<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> with
7615<code>(0,<wbr/> 0)</code> being the top-left pixel of the active array,<wbr/> and
7616(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
7617<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
7618active pixel array.<wbr/></p>
7619<p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight
7620for every pixel in the area.<wbr/> This means that a large metering area
7621with the same weight as a smaller area will have more effect in
7622the metering result.<wbr/> Metering areas can partially overlap and the
7623camera device will add the weights in the overlap region.<wbr/></p>
7624<p>The weights are relative to weights of other exposure metering regions,<wbr/> so if only one
7625region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0
7626weight is ignored.<wbr/></p>
7627<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
7628camera device.<wbr/></p>
7629<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
7630capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
7631region and output only the intersection rectangle as the metering region in the result
7632metadata.<wbr/>  If the region is entirely outside the crop region,<wbr/> it will be ignored and
7633not reported in the result metadata.<wbr/></p>
7634<p>Starting from API level 30,<wbr/> the coordinate system of activeArraySize or
7635preCorrectionActiveArraySize is used to represent post-zoomRatio field of view,<wbr/> not
7636pre-zoom field of view.<wbr/> This means that the same aeRegions values at different
7637<a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> represent different parts of the scene.<wbr/> The aeRegions
7638coordinates are relative to the activeArray/<wbr/>preCorrectionActiveArray representing the
7639zoomed 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
7640aeRegions at different <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> still represent the same parts of the
7641scene 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
7642activeArraySize or preCorrectionActiveArraySize still depends on distortion correction
7643mode.<wbr/></p>
7644<p>For camera devices with the
7645<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>
7646capability,<wbr/>
7647<a href="#static_android.sensor.info.activeArraySizeMaximumResolution">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution</a> /<wbr/>
7648<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
7649coordinate system for requests where <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to
7650<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>
7651            </td>
7652          </tr>
7653
7654          <tr class="entries_header">
7655            <th class="th_details" colspan="6">HAL Implementation Details</th>
7656          </tr>
7657          <tr class="entry_cont">
7658            <td class="entry_details" colspan="6">
7659              <p>The HAL level representation of MeteringRectangle[] is a
7660int[5 * area_<wbr/>count].<wbr/>
7661Every five elements represent a metering region of
7662(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
7663The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
7664exclusive on xmax and ymax.<wbr/>
7665HAL must always report metering regions in the coordinate system of pre-correction
7666active array.<wbr/></p>
7667            </td>
7668          </tr>
7669
7670          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
7671           <!-- end of entry -->
7672
7673
7674          <tr class="entry" id="dynamic_android.control.aeTargetFpsRange">
7675            <td class="entry_name
7676             " rowspan="3">
7677              android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range
7678            </td>
7679            <td class="entry_type">
7680                <span class="entry_type_name">int32</span>
7681                <span class="entry_type_container">x</span>
7682
7683                <span class="entry_type_array">
7684                  2
7685                </span>
7686              <span class="entry_type_visibility"> [public as rangeInt]</span>
7687
7688
7689              <span class="entry_type_hwlevel">[legacy] </span>
7690
7691
7692
7693
7694            </td> <!-- entry_type -->
7695
7696            <td class="entry_description">
7697              <p>Range over which the auto-exposure routine can
7698adjust the capture frame rate to maintain good
7699exposure.<wbr/></p>
7700            </td>
7701
7702            <td class="entry_units">
7703              Frames per second (FPS)
7704            </td>
7705
7706            <td class="entry_range">
7707              <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>
7708            </td>
7709
7710            <td class="entry_hal_version">
7711              <p>3.<wbr/>2</p>
7712            </td>
7713
7714            <td class="entry_tags">
7715              <ul class="entry_tags">
7716                  <li><a href="#tag_BC">BC</a></li>
7717              </ul>
7718            </td>
7719
7720          </tr>
7721          <tr class="entries_header">
7722            <th class="th_details" colspan="6">Details</th>
7723          </tr>
7724          <tr class="entry_cont">
7725            <td class="entry_details" colspan="6">
7726              <p>Only constrains auto-exposure (AE) algorithm,<wbr/> not
7727manual control of <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> and
7728<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>.<wbr/></p>
7729            </td>
7730          </tr>
7731
7732
7733          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
7734           <!-- end of entry -->
7735
7736
7737          <tr class="entry" id="dynamic_android.control.aePrecaptureTrigger">
7738            <td class="entry_name
7739             " rowspan="5">
7740              android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger
7741            </td>
7742            <td class="entry_type">
7743                <span class="entry_type_name entry_type_name_enum">byte</span>
7744
7745              <span class="entry_type_visibility"> [public]</span>
7746
7747
7748              <span class="entry_type_hwlevel">[limited] </span>
7749
7750
7751
7752                <ul class="entry_type_enum">
7753                  <li>
7754                    <span class="entry_type_enum_name">IDLE (v3.2)</span>
7755                    <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
7756                  </li>
7757                  <li>
7758                    <span class="entry_type_enum_name">START (v3.2)</span>
7759                    <span class="entry_type_enum_notes"><p>The precapture metering sequence will be started
7760by the camera device.<wbr/></p>
7761<p>The exact effect of the precapture trigger depends on
7762the current AE mode and state.<wbr/></p></span>
7763                  </li>
7764                  <li>
7765                    <span class="entry_type_enum_name">CANCEL (v3.2)</span>
7766                    <span class="entry_type_enum_notes"><p>The camera device will cancel any currently active or completed
7767precapture metering sequence,<wbr/> the auto-exposure routine will return to its
7768initial state.<wbr/></p></span>
7769                  </li>
7770                </ul>
7771
7772            </td> <!-- entry_type -->
7773
7774            <td class="entry_description">
7775              <p>Whether the camera device will trigger a precapture
7776metering sequence when it processes this request.<wbr/></p>
7777            </td>
7778
7779            <td class="entry_units">
7780            </td>
7781
7782            <td class="entry_range">
7783            </td>
7784
7785            <td class="entry_hal_version">
7786              <p>3.<wbr/>2</p>
7787            </td>
7788
7789            <td class="entry_tags">
7790              <ul class="entry_tags">
7791                  <li><a href="#tag_BC">BC</a></li>
7792              </ul>
7793            </td>
7794
7795          </tr>
7796          <tr class="entries_header">
7797            <th class="th_details" colspan="6">Details</th>
7798          </tr>
7799          <tr class="entry_cont">
7800            <td class="entry_details" colspan="6">
7801              <p>This entry is normally set to IDLE,<wbr/> or is not
7802included at all in the request settings.<wbr/> When included and
7803set to START,<wbr/> the camera device will trigger the auto-exposure (AE)
7804precapture metering sequence.<wbr/></p>
7805<p>When set to CANCEL,<wbr/> the camera device will cancel any active
7806precapture metering trigger,<wbr/> and return to its initial AE state.<wbr/>
7807If a precapture metering sequence is already completed,<wbr/> and the camera
7808device has implicitly locked the AE for subsequent still capture,<wbr/> the
7809CANCEL trigger will unlock the AE and return to its initial AE state.<wbr/></p>
7810<p>The precapture sequence should be triggered before starting a
7811high-quality still capture for final metering decisions to
7812be made,<wbr/> and for firing pre-capture flash pulses to estimate
7813scene brightness and required final capture flash power,<wbr/> when
7814the flash is enabled.<wbr/></p>
7815<p>Normally,<wbr/> this entry should be set to START for only a
7816single request,<wbr/> and the application should wait until the
7817sequence completes before starting a new one.<wbr/></p>
7818<p>When a precapture metering sequence is finished,<wbr/> the camera device
7819may lock the auto-exposure routine internally to be able to accurately expose the
7820subsequent still capture image (<code><a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE</code>).<wbr/>
7821For this case,<wbr/> the AE may not resume normal scan if no subsequent still capture is
7822submitted.<wbr/> To ensure that the AE routine restarts normal scan,<wbr/> the application should
7823submit 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
7824with <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
7825still capture request after the precapture sequence completes.<wbr/> Alternatively,<wbr/> for
7826API level 23 or newer devices,<wbr/> the CANCEL can be used to unlock the camera device
7827internally locked AE if the application doesn't submit a still capture request after
7828the AE precapture trigger.<wbr/> Note that,<wbr/> the CANCEL was added in API level 23,<wbr/> and must not
7829be used in devices that have earlier API levels.<wbr/></p>
7830<p>The exact effect of auto-exposure (AE) precapture trigger
7831depends on the current AE mode and state; see
7832<a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> for AE precapture state transition
7833details.<wbr/></p>
7834<p>On LEGACY-level devices,<wbr/> the precapture trigger is not supported;
7835capturing a high-resolution JPEG image will automatically trigger a
7836precapture sequence before the high-resolution capture,<wbr/> including
7837potentially firing a pre-capture flash.<wbr/></p>
7838<p>Using the precapture trigger and the auto-focus trigger <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>
7839simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between
7840the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a
7841focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous
7842trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and
7843changes to <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> indicating the start of the precapture sequence,<wbr/> for
7844example.<wbr/></p>
7845<p>If both the precapture and the auto-focus trigger are activated on the same request,<wbr/> then
7846the camera device will complete them in the optimal order for that device.<wbr/></p>
7847            </td>
7848          </tr>
7849
7850          <tr class="entries_header">
7851            <th class="th_details" colspan="6">HAL Implementation Details</th>
7852          </tr>
7853          <tr class="entry_cont">
7854            <td class="entry_details" colspan="6">
7855              <p>The HAL must support triggering the AE precapture trigger while an AF trigger is active
7856(and vice versa),<wbr/> or at the same time as the AF trigger.<wbr/>  It is acceptable for the HAL to
7857treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the
7858AE trigger.<wbr/>  Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/>
7859to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p>
7860            </td>
7861          </tr>
7862
7863          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
7864           <!-- end of entry -->
7865
7866
7867          <tr class="entry" id="dynamic_android.control.aeState">
7868            <td class="entry_name
7869             " rowspan="3">
7870              android.<wbr/>control.<wbr/>ae<wbr/>State
7871            </td>
7872            <td class="entry_type">
7873                <span class="entry_type_name entry_type_name_enum">byte</span>
7874
7875              <span class="entry_type_visibility"> [public]</span>
7876
7877
7878              <span class="entry_type_hwlevel">[limited] </span>
7879
7880
7881
7882                <ul class="entry_type_enum">
7883                  <li>
7884                    <span class="entry_type_enum_name">INACTIVE (v3.2)</span>
7885                    <span class="entry_type_enum_notes"><p>AE is off or recently reset.<wbr/></p>
7886<p>When a camera device is opened,<wbr/> it starts in
7887this state.<wbr/> This is a transient state,<wbr/> the camera device may skip reporting
7888this state in capture result.<wbr/></p></span>
7889                  </li>
7890                  <li>
7891                    <span class="entry_type_enum_name">SEARCHING (v3.2)</span>
7892                    <span class="entry_type_enum_notes"><p>AE doesn't yet have a good set of control values
7893for the current scene.<wbr/></p>
7894<p>This is a transient state,<wbr/> the camera device may skip
7895reporting this state in capture result.<wbr/></p></span>
7896                  </li>
7897                  <li>
7898                    <span class="entry_type_enum_name">CONVERGED (v3.2)</span>
7899                    <span class="entry_type_enum_notes"><p>AE has a good set of control values for the
7900current scene.<wbr/></p></span>
7901                  </li>
7902                  <li>
7903                    <span class="entry_type_enum_name">LOCKED (v3.2)</span>
7904                    <span class="entry_type_enum_notes"><p>AE has been locked.<wbr/></p></span>
7905                  </li>
7906                  <li>
7907                    <span class="entry_type_enum_name">FLASH_REQUIRED (v3.2)</span>
7908                    <span class="entry_type_enum_notes"><p>AE has a good set of control values,<wbr/> but flash
7909needs to be fired for good quality still
7910capture.<wbr/></p></span>
7911                  </li>
7912                  <li>
7913                    <span class="entry_type_enum_name">PRECAPTURE (v3.2)</span>
7914                    <span class="entry_type_enum_notes"><p>AE has been asked to do a precapture sequence
7915and is currently executing it.<wbr/></p>
7916<p>Precapture can be triggered through setting
7917<a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> to START.<wbr/> Currently
7918active and completed (if it causes camera device internal AE lock) precapture
7919metering sequence can be canceled through setting
7920<a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> to CANCEL.<wbr/></p>
7921<p>Once PRECAPTURE completes,<wbr/> AE will transition to CONVERGED
7922or FLASH_<wbr/>REQUIRED as appropriate.<wbr/> This is a transient
7923state,<wbr/> the camera device may skip reporting this state in
7924capture result.<wbr/></p></span>
7925                  </li>
7926                </ul>
7927
7928            </td> <!-- entry_type -->
7929
7930            <td class="entry_description">
7931              <p>Current state of the auto-exposure (AE) algorithm.<wbr/></p>
7932            </td>
7933
7934            <td class="entry_units">
7935            </td>
7936
7937            <td class="entry_range">
7938            </td>
7939
7940            <td class="entry_hal_version">
7941              <p>3.<wbr/>2</p>
7942            </td>
7943
7944            <td class="entry_tags">
7945            </td>
7946
7947          </tr>
7948          <tr class="entries_header">
7949            <th class="th_details" colspan="6">Details</th>
7950          </tr>
7951          <tr class="entry_cont">
7952            <td class="entry_details" colspan="6">
7953              <p>Switching between or enabling AE modes (<a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>) always
7954resets the AE state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/>
7955or <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
7956the algorithm states to INACTIVE.<wbr/></p>
7957<p>The camera device can do several state transitions between two results,<wbr/> if it is
7958allowed by the state transition table.<wbr/> For example: INACTIVE may never actually be
7959seen in a result.<wbr/></p>
7960<p>The state in the result is the state for this image (in sync with this image): if
7961AE state becomes CONVERGED,<wbr/> then the image data associated with this result should
7962be good to use.<wbr/></p>
7963<p>Below are state transition tables for different AE modes.<wbr/></p>
7964<table>
7965<thead>
7966<tr>
7967<th align="center">State</th>
7968<th align="center">Transition Cause</th>
7969<th align="center">New State</th>
7970<th align="center">Notes</th>
7971</tr>
7972</thead>
7973<tbody>
7974<tr>
7975<td align="center">INACTIVE</td>
7976<td align="center"></td>
7977<td align="center">INACTIVE</td>
7978<td align="center">Camera device auto exposure algorithm is disabled</td>
7979</tr>
7980</tbody>
7981</table>
7982<p>When <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is AE_<wbr/>MODE_<wbr/>ON*:</p>
7983<table>
7984<thead>
7985<tr>
7986<th align="center">State</th>
7987<th align="center">Transition Cause</th>
7988<th align="center">New State</th>
7989<th align="center">Notes</th>
7990</tr>
7991</thead>
7992<tbody>
7993<tr>
7994<td align="center">INACTIVE</td>
7995<td align="center">Camera device initiates AE scan</td>
7996<td align="center">SEARCHING</td>
7997<td align="center">Values changing</td>
7998</tr>
7999<tr>
8000<td align="center">INACTIVE</td>
8001<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
8002<td align="center">LOCKED</td>
8003<td align="center">Values locked</td>
8004</tr>
8005<tr>
8006<td align="center">SEARCHING</td>
8007<td align="center">Camera device finishes AE scan</td>
8008<td align="center">CONVERGED</td>
8009<td align="center">Good values,<wbr/> not changing</td>
8010</tr>
8011<tr>
8012<td align="center">SEARCHING</td>
8013<td align="center">Camera device finishes AE scan</td>
8014<td align="center">FLASH_<wbr/>REQUIRED</td>
8015<td align="center">Converged but too dark w/<wbr/>o flash</td>
8016</tr>
8017<tr>
8018<td align="center">SEARCHING</td>
8019<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
8020<td align="center">LOCKED</td>
8021<td align="center">Values locked</td>
8022</tr>
8023<tr>
8024<td align="center">CONVERGED</td>
8025<td align="center">Camera device initiates AE scan</td>
8026<td align="center">SEARCHING</td>
8027<td align="center">Values changing</td>
8028</tr>
8029<tr>
8030<td align="center">CONVERGED</td>
8031<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
8032<td align="center">LOCKED</td>
8033<td align="center">Values locked</td>
8034</tr>
8035<tr>
8036<td align="center">FLASH_<wbr/>REQUIRED</td>
8037<td align="center">Camera device initiates AE scan</td>
8038<td align="center">SEARCHING</td>
8039<td align="center">Values changing</td>
8040</tr>
8041<tr>
8042<td align="center">FLASH_<wbr/>REQUIRED</td>
8043<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
8044<td align="center">LOCKED</td>
8045<td align="center">Values locked</td>
8046</tr>
8047<tr>
8048<td align="center">LOCKED</td>
8049<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td>
8050<td align="center">SEARCHING</td>
8051<td align="center">Values not good after unlock</td>
8052</tr>
8053<tr>
8054<td align="center">LOCKED</td>
8055<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td>
8056<td align="center">CONVERGED</td>
8057<td align="center">Values good after unlock</td>
8058</tr>
8059<tr>
8060<td align="center">LOCKED</td>
8061<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td>
8062<td align="center">FLASH_<wbr/>REQUIRED</td>
8063<td align="center">Exposure good,<wbr/> but too dark</td>
8064</tr>
8065<tr>
8066<td align="center">PRECAPTURE</td>
8067<td align="center">Sequence done.<wbr/> <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td>
8068<td align="center">CONVERGED</td>
8069<td align="center">Ready for high-quality capture</td>
8070</tr>
8071<tr>
8072<td align="center">PRECAPTURE</td>
8073<td align="center">Sequence done.<wbr/> <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
8074<td align="center">LOCKED</td>
8075<td align="center">Ready for high-quality capture</td>
8076</tr>
8077<tr>
8078<td align="center">LOCKED</td>
8079<td align="center">aeLock is ON and aePrecaptureTrigger is START</td>
8080<td align="center">LOCKED</td>
8081<td align="center">Precapture trigger is ignored when AE is already locked</td>
8082</tr>
8083<tr>
8084<td align="center">LOCKED</td>
8085<td align="center">aeLock is ON and aePrecaptureTrigger is CANCEL</td>
8086<td align="center">LOCKED</td>
8087<td align="center">Precapture trigger is ignored when AE is already locked</td>
8088</tr>
8089<tr>
8090<td align="center">Any state (excluding LOCKED)</td>
8091<td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is START</td>
8092<td align="center">PRECAPTURE</td>
8093<td align="center">Start AE precapture metering sequence</td>
8094</tr>
8095<tr>
8096<td align="center">Any state (excluding LOCKED)</td>
8097<td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL</td>
8098<td align="center">INACTIVE</td>
8099<td align="center">Currently active precapture metering sequence is canceled</td>
8100</tr>
8101</tbody>
8102</table>
8103<p>If the camera device supports AE external flash mode (ON_<wbr/>EXTERNAL_<wbr/>FLASH is included in
8104<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
8105the camera device finishes AE scan and it's too dark without flash.<wbr/></p>
8106<p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen
8107without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that
8108can be skipped in that manner is called a transient state.<wbr/></p>
8109<p>For example,<wbr/> for above AE modes (AE_<wbr/>MODE_<wbr/>ON*),<wbr/> in addition to the state transitions
8110listed in above table,<wbr/> it is also legal for the camera device to skip one or more
8111transient states between two results.<wbr/> See below table for examples:</p>
8112<table>
8113<thead>
8114<tr>
8115<th align="center">State</th>
8116<th align="center">Transition Cause</th>
8117<th align="center">New State</th>
8118<th align="center">Notes</th>
8119</tr>
8120</thead>
8121<tbody>
8122<tr>
8123<td align="center">INACTIVE</td>
8124<td align="center">Camera device finished AE scan</td>
8125<td align="center">CONVERGED</td>
8126<td align="center">Values are already good,<wbr/> transient states are skipped by camera device.<wbr/></td>
8127</tr>
8128<tr>
8129<td align="center">Any state (excluding LOCKED)</td>
8130<td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is START,<wbr/> sequence done</td>
8131<td align="center">FLASH_<wbr/>REQUIRED</td>
8132<td align="center">Converged but too dark w/<wbr/>o flash after a precapture sequence,<wbr/> transient states are skipped by camera device.<wbr/></td>
8133</tr>
8134<tr>
8135<td align="center">Any state (excluding LOCKED)</td>
8136<td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is START,<wbr/> sequence done</td>
8137<td align="center">CONVERGED</td>
8138<td align="center">Converged after a precapture sequence,<wbr/> transient states are skipped by camera device.<wbr/></td>
8139</tr>
8140<tr>
8141<td align="center">Any state (excluding LOCKED)</td>
8142<td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL,<wbr/> converged</td>
8143<td align="center">FLASH_<wbr/>REQUIRED</td>
8144<td align="center">Converged but too dark w/<wbr/>o flash after a precapture sequence is canceled,<wbr/> transient states are skipped by camera device.<wbr/></td>
8145</tr>
8146<tr>
8147<td align="center">Any state (excluding LOCKED)</td>
8148<td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL,<wbr/> converged</td>
8149<td align="center">CONVERGED</td>
8150<td align="center">Converged after a precapture sequenceis canceled,<wbr/> transient states are skipped by camera device.<wbr/></td>
8151</tr>
8152<tr>
8153<td align="center">CONVERGED</td>
8154<td align="center">Camera device finished AE scan</td>
8155<td align="center">FLASH_<wbr/>REQUIRED</td>
8156<td align="center">Converged but too dark w/<wbr/>o flash after a new scan,<wbr/> transient states are skipped by camera device.<wbr/></td>
8157</tr>
8158<tr>
8159<td align="center">FLASH_<wbr/>REQUIRED</td>
8160<td align="center">Camera device finished AE scan</td>
8161<td align="center">CONVERGED</td>
8162<td align="center">Converged after a new scan,<wbr/> transient states are skipped by camera device.<wbr/></td>
8163</tr>
8164</tbody>
8165</table>
8166            </td>
8167          </tr>
8168
8169
8170          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
8171           <!-- end of entry -->
8172
8173
8174          <tr class="entry" id="dynamic_android.control.afMode">
8175            <td class="entry_name
8176             " rowspan="5">
8177              android.<wbr/>control.<wbr/>af<wbr/>Mode
8178            </td>
8179            <td class="entry_type">
8180                <span class="entry_type_name entry_type_name_enum">byte</span>
8181
8182              <span class="entry_type_visibility"> [public]</span>
8183
8184
8185              <span class="entry_type_hwlevel">[legacy] </span>
8186
8187
8188
8189                <ul class="entry_type_enum">
8190                  <li>
8191                    <span class="entry_type_enum_name">OFF (v3.2)</span>
8192                    <span class="entry_type_enum_notes"><p>The auto-focus routine does not control the lens;
8193<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> is controlled by the
8194application.<wbr/></p></span>
8195                  </li>
8196                  <li>
8197                    <span class="entry_type_enum_name">AUTO (v3.2)</span>
8198                    <span class="entry_type_enum_notes"><p>Basic automatic focus mode.<wbr/></p>
8199<p>In this mode,<wbr/> the lens does not move unless
8200the autofocus trigger action is called.<wbr/> When that trigger
8201is activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
8202the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/></p>
8203<p>Always supported if lens is not fixed focus.<wbr/></p>
8204<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
8205is fixed-focus.<wbr/></p>
8206<p>Triggering AF_<wbr/>CANCEL resets the lens position to default,<wbr/>
8207and sets the AF state to INACTIVE.<wbr/></p></span>
8208                  </li>
8209                  <li>
8210                    <span class="entry_type_enum_name">MACRO (v3.2)</span>
8211                    <span class="entry_type_enum_notes"><p>Close-up focusing mode.<wbr/></p>
8212<p>In this mode,<wbr/> the lens does not move unless the
8213autofocus trigger action is called.<wbr/> When that trigger is
8214activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
8215the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/> This
8216mode is optimized for focusing on objects very close to
8217the camera.<wbr/></p>
8218<p>When that trigger is activated,<wbr/> AF will transition to
8219ACTIVE_<wbr/>SCAN,<wbr/> then to the outcome of the scan (FOCUSED or
8220NOT_<wbr/>FOCUSED).<wbr/> Triggering cancel AF resets the lens
8221position to default,<wbr/> and sets the AF state to
8222INACTIVE.<wbr/></p></span>
8223                  </li>
8224                  <li>
8225                    <span class="entry_type_enum_name">CONTINUOUS_VIDEO (v3.2)</span>
8226                    <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
8227position continually to attempt to provide a
8228constantly-in-focus image stream.<wbr/></p>
8229<p>The focusing behavior should be suitable for good quality
8230video recording; typically this means slower focus
8231movement and no overshoots.<wbr/> When the AF trigger is not
8232involved,<wbr/> the AF algorithm should start in INACTIVE state,<wbr/>
8233and then transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED
8234states as appropriate.<wbr/> When the AF trigger is activated,<wbr/>
8235the algorithm should immediately transition into
8236AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the
8237lens position until a cancel AF trigger is received.<wbr/></p>
8238<p>Once cancel is received,<wbr/> the algorithm should transition
8239back to INACTIVE and resume passive scan.<wbr/> Note that this
8240behavior is not identical to CONTINUOUS_<wbr/>PICTURE,<wbr/> since an
8241ongoing PASSIVE_<wbr/>SCAN must immediately be
8242canceled.<wbr/></p></span>
8243                  </li>
8244                  <li>
8245                    <span class="entry_type_enum_name">CONTINUOUS_PICTURE (v3.2)</span>
8246                    <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
8247position continually to attempt to provide a
8248constantly-in-focus image stream.<wbr/></p>
8249<p>The focusing behavior should be suitable for still image
8250capture; typically this means focusing as fast as
8251possible.<wbr/> When the AF trigger is not involved,<wbr/> the AF
8252algorithm should start in INACTIVE state,<wbr/> and then
8253transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED states as
8254appropriate as it attempts to maintain focus.<wbr/> When the AF
8255trigger is activated,<wbr/> the algorithm should finish its
8256PASSIVE_<wbr/>SCAN if active,<wbr/> and then transition into
8257AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the
8258lens position until a cancel AF trigger is received.<wbr/></p>
8259<p>When the AF cancel trigger is activated,<wbr/> the algorithm
8260should transition back to INACTIVE and then act as if it
8261has just been started.<wbr/></p></span>
8262                  </li>
8263                  <li>
8264                    <span class="entry_type_enum_name">EDOF (v3.2)</span>
8265                    <span class="entry_type_enum_notes"><p>Extended depth of field (digital focus) mode.<wbr/></p>
8266<p>The camera device will produce images with an extended
8267depth of field automatically; no special focusing
8268operations need to be done before taking a picture.<wbr/></p>
8269<p>AF triggers are ignored,<wbr/> and the AF state will always be
8270INACTIVE.<wbr/></p></span>
8271                  </li>
8272                </ul>
8273
8274            </td> <!-- entry_type -->
8275
8276            <td class="entry_description">
8277              <p>Whether auto-focus (AF) is currently enabled,<wbr/> and what
8278mode it is set to.<wbr/></p>
8279            </td>
8280
8281            <td class="entry_units">
8282            </td>
8283
8284            <td class="entry_range">
8285              <p><a href="#static_android.control.afAvailableModes">android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes</a></p>
8286            </td>
8287
8288            <td class="entry_hal_version">
8289              <p>3.<wbr/>2</p>
8290            </td>
8291
8292            <td class="entry_tags">
8293              <ul class="entry_tags">
8294                  <li><a href="#tag_BC">BC</a></li>
8295              </ul>
8296            </td>
8297
8298          </tr>
8299          <tr class="entries_header">
8300            <th class="th_details" colspan="6">Details</th>
8301          </tr>
8302          <tr class="entry_cont">
8303            <td class="entry_details" colspan="6">
8304              <p>Only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> = AUTO and the lens is not fixed focus
8305(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
8306when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> the behavior of AF is device
8307dependent.<wbr/> It is recommended to lock AF by using <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a> before
8308setting <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>
8309<p>If the lens is controlled by the camera device auto-focus algorithm,<wbr/>
8310the camera device will report the current AF status in <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>
8311in result metadata.<wbr/></p>
8312            </td>
8313          </tr>
8314
8315          <tr class="entries_header">
8316            <th class="th_details" colspan="6">HAL Implementation Details</th>
8317          </tr>
8318          <tr class="entry_cont">
8319            <td class="entry_details" colspan="6">
8320              <p>When afMode is AUTO or MACRO,<wbr/> the lens must not move until an AF trigger is sent in a
8321request (<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
8322up with either FOCUSED_<wbr/>LOCKED or NOT_<wbr/>FOCUSED_<wbr/>LOCKED state (see
8323<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
8324locked and will not move.<wbr/> If camera movement (e.<wbr/>g.<wbr/> tilting camera) causes the lens to move
8325after the lens is locked,<wbr/> the HAL must compensate this movement appropriately such that
8326the same focal plane remains in focus.<wbr/></p>
8327<p>When afMode is one of the continuous auto focus modes,<wbr/> the HAL is free to start a AF
8328scan whenever it's not locked.<wbr/> When the lens is locked after an AF trigger
8329(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
8330same lock behavior as above.<wbr/></p>
8331<p>When afMode is OFF,<wbr/> the application controls focus manually.<wbr/> The accuracy of the
8332focus 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/>
8333However,<wbr/> the lens must not move regardless of the camera movement for any focus distance
8334manual control.<wbr/></p>
8335<p>To put this in concrete terms,<wbr/> if the camera has lens elements which may move based on
8336camera orientation or motion (e.<wbr/>g.<wbr/> due to gravity),<wbr/> then the HAL must drive the lens to
8337remain in a fixed position invariant to the camera's orientation or motion,<wbr/> for example,<wbr/>
8338by using accelerometer measurements in the lens control logic.<wbr/> This is a typical issue
8339that will arise on camera modules with open-loop VCMs.<wbr/></p>
8340            </td>
8341          </tr>
8342
8343          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
8344           <!-- end of entry -->
8345
8346
8347          <tr class="entry" id="dynamic_android.control.afRegions">
8348            <td class="entry_name
8349             " rowspan="5">
8350              android.<wbr/>control.<wbr/>af<wbr/>Regions
8351            </td>
8352            <td class="entry_type">
8353                <span class="entry_type_name">int32</span>
8354                <span class="entry_type_container">x</span>
8355
8356                <span class="entry_type_array">
8357                  5 x area_count
8358                </span>
8359              <span class="entry_type_visibility"> [public as meteringRectangle]</span>
8360
8361
8362
8363
8364
8365
8366            </td> <!-- entry_type -->
8367
8368            <td class="entry_description">
8369              <p>List of metering areas to use for auto-focus.<wbr/></p>
8370            </td>
8371
8372            <td class="entry_units">
8373              Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size or
8374            android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size depending on
8375            distortion correction capability and mode
8376            </td>
8377
8378            <td class="entry_range">
8379              <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
8380<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>
8381depending on distortion correction capability and mode</p>
8382            </td>
8383
8384            <td class="entry_hal_version">
8385              <p>3.<wbr/>2</p>
8386            </td>
8387
8388            <td class="entry_tags">
8389              <ul class="entry_tags">
8390                  <li><a href="#tag_BC">BC</a></li>
8391              </ul>
8392            </td>
8393
8394          </tr>
8395          <tr class="entries_header">
8396            <th class="th_details" colspan="6">Details</th>
8397          </tr>
8398          <tr class="entry_cont">
8399            <td class="entry_details" colspan="6">
8400              <p>Not available if <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a> is 0.<wbr/>
8401Otherwise will always be present.<wbr/></p>
8402<p>The maximum number of focus areas supported by the device is determined by the value
8403of <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a>.<wbr/></p>
8404<p>For devices not supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate
8405system 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
8406the top-left pixel in the active pixel array,<wbr/> and
8407(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
8408<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
8409active pixel array.<wbr/></p>
8410<p>For devices supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate
8411system depends on the mode being set.<wbr/>
8412When the distortion correction mode is OFF,<wbr/> the coordinate system follows
8413<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
8414<code>(0,<wbr/> 0)</code> being the top-left pixel of the pre-correction active array,<wbr/> and
8415(<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/>
8416<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
8417pixel in the pre-correction active pixel array.<wbr/>
8418When the distortion correction mode is not OFF,<wbr/> the coordinate system follows
8419<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> with
8420<code>(0,<wbr/> 0)</code> being the top-left pixel of the active array,<wbr/> and
8421(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
8422<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
8423active pixel array.<wbr/></p>
8424<p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight
8425for every pixel in the area.<wbr/> This means that a large metering area
8426with the same weight as a smaller area will have more effect in
8427the metering result.<wbr/> Metering areas can partially overlap and the
8428camera device will add the weights in the overlap region.<wbr/></p>
8429<p>The weights are relative to weights of other metering regions,<wbr/> so if only one region
8430is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0 weight is
8431ignored.<wbr/></p>
8432<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
8433camera device.<wbr/> The capture result will either be a zero weight region as well,<wbr/> or
8434the region selected by the camera device as the focus area of interest.<wbr/></p>
8435<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
8436capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
8437region and output only the intersection rectangle as the metering region in the result
8438metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and
8439not reported in the result metadata.<wbr/></p>
8440<p>Starting from API level 30,<wbr/> the coordinate system of activeArraySize or
8441preCorrectionActiveArraySize is used to represent post-zoomRatio field of view,<wbr/> not
8442pre-zoom field of view.<wbr/> This means that the same afRegions values at different
8443<a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> represent different parts of the scene.<wbr/> The afRegions
8444coordinates are relative to the activeArray/<wbr/>preCorrectionActiveArray representing the
8445zoomed 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
8446afRegions at different <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> still represent the same parts of the
8447scene 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
8448activeArraySize or preCorrectionActiveArraySize still depends on distortion correction
8449mode.<wbr/></p>
8450<p>For camera devices with the
8451<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>
8452capability,<wbr/> <a href="#static_android.sensor.info.activeArraySizeMaximumResolution">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution</a> /<wbr/>
8453<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
8454coordinate system for requests where <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to
8455<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>
8456            </td>
8457          </tr>
8458
8459          <tr class="entries_header">
8460            <th class="th_details" colspan="6">HAL Implementation Details</th>
8461          </tr>
8462          <tr class="entry_cont">
8463            <td class="entry_details" colspan="6">
8464              <p>The HAL level representation of MeteringRectangle[] is a
8465int[5 * area_<wbr/>count].<wbr/>
8466Every five elements represent a metering region of
8467(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
8468The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
8469exclusive on xmax and ymax.<wbr/>
8470HAL must always report metering regions in the coordinate system of pre-correction
8471active array.<wbr/></p>
8472            </td>
8473          </tr>
8474
8475          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
8476           <!-- end of entry -->
8477
8478
8479          <tr class="entry" id="dynamic_android.control.afTrigger">
8480            <td class="entry_name
8481             " rowspan="5">
8482              android.<wbr/>control.<wbr/>af<wbr/>Trigger
8483            </td>
8484            <td class="entry_type">
8485                <span class="entry_type_name entry_type_name_enum">byte</span>
8486
8487              <span class="entry_type_visibility"> [public]</span>
8488
8489
8490              <span class="entry_type_hwlevel">[legacy] </span>
8491
8492
8493
8494                <ul class="entry_type_enum">
8495                  <li>
8496                    <span class="entry_type_enum_name">IDLE (v3.2)</span>
8497                    <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
8498                  </li>
8499                  <li>
8500                    <span class="entry_type_enum_name">START (v3.2)</span>
8501                    <span class="entry_type_enum_notes"><p>Autofocus will trigger now.<wbr/></p></span>
8502                  </li>
8503                  <li>
8504                    <span class="entry_type_enum_name">CANCEL (v3.2)</span>
8505                    <span class="entry_type_enum_notes"><p>Autofocus will return to its initial
8506state,<wbr/> and cancel any currently active trigger.<wbr/></p></span>
8507                  </li>
8508                </ul>
8509
8510            </td> <!-- entry_type -->
8511
8512            <td class="entry_description">
8513              <p>Whether the camera device will trigger autofocus for this request.<wbr/></p>
8514            </td>
8515
8516            <td class="entry_units">
8517            </td>
8518
8519            <td class="entry_range">
8520            </td>
8521
8522            <td class="entry_hal_version">
8523              <p>3.<wbr/>2</p>
8524            </td>
8525
8526            <td class="entry_tags">
8527              <ul class="entry_tags">
8528                  <li><a href="#tag_BC">BC</a></li>
8529              </ul>
8530            </td>
8531
8532          </tr>
8533          <tr class="entries_header">
8534            <th class="th_details" colspan="6">Details</th>
8535          </tr>
8536          <tr class="entry_cont">
8537            <td class="entry_details" colspan="6">
8538              <p>This entry is normally set to IDLE,<wbr/> or is not
8539included at all in the request settings.<wbr/></p>
8540<p>When included and set to START,<wbr/> the camera device will trigger the
8541autofocus algorithm.<wbr/> If autofocus is disabled,<wbr/> this trigger has no effect.<wbr/></p>
8542<p>When set to CANCEL,<wbr/> the camera device will cancel any active trigger,<wbr/>
8543and return to its initial AF state.<wbr/></p>
8544<p>Generally,<wbr/> applications should set this entry to START or CANCEL for only a
8545single capture,<wbr/> and then return it to IDLE (or not set at all).<wbr/> Specifying
8546START for multiple captures in a row means restarting the AF operation over
8547and over again.<wbr/></p>
8548<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>
8549<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>
8550simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between
8551the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a
8552focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous
8553trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and
8554changes to <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>,<wbr/> for example.<wbr/></p>
8555            </td>
8556          </tr>
8557
8558          <tr class="entries_header">
8559            <th class="th_details" colspan="6">HAL Implementation Details</th>
8560          </tr>
8561          <tr class="entry_cont">
8562            <td class="entry_details" colspan="6">
8563              <p>The HAL must support triggering the AF trigger while an AE precapture trigger is active
8564(and vice versa),<wbr/> or at the same time as the AE trigger.<wbr/>  It is acceptable for the HAL to
8565treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the
8566AE trigger.<wbr/>  Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/>
8567to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p>
8568            </td>
8569          </tr>
8570
8571          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
8572           <!-- end of entry -->
8573
8574
8575          <tr class="entry" id="dynamic_android.control.afState">
8576            <td class="entry_name
8577             " rowspan="3">
8578              android.<wbr/>control.<wbr/>af<wbr/>State
8579            </td>
8580            <td class="entry_type">
8581                <span class="entry_type_name entry_type_name_enum">byte</span>
8582
8583              <span class="entry_type_visibility"> [public]</span>
8584
8585
8586              <span class="entry_type_hwlevel">[legacy] </span>
8587
8588
8589
8590                <ul class="entry_type_enum">
8591                  <li>
8592                    <span class="entry_type_enum_name">INACTIVE (v3.2)</span>
8593                    <span class="entry_type_enum_notes"><p>AF is off or has not yet tried to scan/<wbr/>been asked
8594to scan.<wbr/></p>
8595<p>When a camera device is opened,<wbr/> it starts in this
8596state.<wbr/> This is a transient state,<wbr/> the camera device may
8597skip reporting this state in capture
8598result.<wbr/></p></span>
8599                  </li>
8600                  <li>
8601                    <span class="entry_type_enum_name">PASSIVE_SCAN (v3.2)</span>
8602                    <span class="entry_type_enum_notes"><p>AF is currently performing an AF scan initiated the
8603camera device in a continuous autofocus mode.<wbr/></p>
8604<p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient
8605state,<wbr/> the camera device may skip reporting this state in
8606capture result.<wbr/></p></span>
8607                  </li>
8608                  <li>
8609                    <span class="entry_type_enum_name">PASSIVE_FOCUSED (v3.2)</span>
8610                    <span class="entry_type_enum_notes"><p>AF currently believes it is in focus,<wbr/> but may
8611restart scanning at any time.<wbr/></p>
8612<p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient
8613state,<wbr/> the camera device may skip reporting this state in
8614capture result.<wbr/></p></span>
8615                  </li>
8616                  <li>
8617                    <span class="entry_type_enum_name">ACTIVE_SCAN (v3.2)</span>
8618                    <span class="entry_type_enum_notes"><p>AF is performing an AF scan because it was
8619triggered by AF trigger.<wbr/></p>
8620<p>Only used by AUTO or MACRO AF modes.<wbr/> This is a transient
8621state,<wbr/> the camera device may skip reporting this state in
8622capture result.<wbr/></p></span>
8623                  </li>
8624                  <li>
8625                    <span class="entry_type_enum_name">FOCUSED_LOCKED (v3.2)</span>
8626                    <span class="entry_type_enum_notes"><p>AF believes it is focused correctly and has locked
8627focus.<wbr/></p>
8628<p>This state is reached only after an explicit START AF trigger has been
8629sent (<a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>),<wbr/> when good focus has been obtained.<wbr/></p>
8630<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
8631a 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>
8632                  </li>
8633                  <li>
8634                    <span class="entry_type_enum_name">NOT_FOCUSED_LOCKED (v3.2)</span>
8635                    <span class="entry_type_enum_notes"><p>AF has failed to focus successfully and has locked
8636focus.<wbr/></p>
8637<p>This state is reached only after an explicit START AF trigger has been
8638sent (<a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>),<wbr/> when good focus cannot be obtained.<wbr/></p>
8639<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
8640a 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>
8641                  </li>
8642                  <li>
8643                    <span class="entry_type_enum_name">PASSIVE_UNFOCUSED (v3.2)</span>
8644                    <span class="entry_type_enum_notes"><p>AF finished a passive scan without finding focus,<wbr/>
8645and may restart scanning at any time.<wbr/></p>
8646<p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient state,<wbr/> the camera
8647device may skip reporting this state in capture result.<wbr/></p>
8648<p>LEGACY camera devices do not support this state.<wbr/> When a passive
8649scan has finished,<wbr/> it will always go to PASSIVE_<wbr/>FOCUSED.<wbr/></p></span>
8650                  </li>
8651                </ul>
8652
8653            </td> <!-- entry_type -->
8654
8655            <td class="entry_description">
8656              <p>Current state of auto-focus (AF) algorithm.<wbr/></p>
8657            </td>
8658
8659            <td class="entry_units">
8660            </td>
8661
8662            <td class="entry_range">
8663            </td>
8664
8665            <td class="entry_hal_version">
8666              <p>3.<wbr/>2</p>
8667            </td>
8668
8669            <td class="entry_tags">
8670            </td>
8671
8672          </tr>
8673          <tr class="entries_header">
8674            <th class="th_details" colspan="6">Details</th>
8675          </tr>
8676          <tr class="entry_cont">
8677            <td class="entry_details" colspan="6">
8678              <p>Switching between or enabling AF modes (<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>) always
8679resets the AF state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/>
8680or <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
8681the algorithm states to INACTIVE.<wbr/></p>
8682<p>The camera device can do several state transitions between two results,<wbr/> if it is
8683allowed by the state transition table.<wbr/> For example: INACTIVE may never actually be
8684seen in a result.<wbr/></p>
8685<p>The state in the result is the state for this image (in sync with this image): if
8686AF state becomes FOCUSED,<wbr/> then the image data associated with this result should
8687be sharp.<wbr/></p>
8688<p>Below are state transition tables for different AF modes.<wbr/></p>
8689<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>
8690<table>
8691<thead>
8692<tr>
8693<th align="center">State</th>
8694<th align="center">Transition Cause</th>
8695<th align="center">New State</th>
8696<th align="center">Notes</th>
8697</tr>
8698</thead>
8699<tbody>
8700<tr>
8701<td align="center">INACTIVE</td>
8702<td align="center"></td>
8703<td align="center">INACTIVE</td>
8704<td align="center">Never changes</td>
8705</tr>
8706</tbody>
8707</table>
8708<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>
8709<table>
8710<thead>
8711<tr>
8712<th align="center">State</th>
8713<th align="center">Transition Cause</th>
8714<th align="center">New State</th>
8715<th align="center">Notes</th>
8716</tr>
8717</thead>
8718<tbody>
8719<tr>
8720<td align="center">INACTIVE</td>
8721<td align="center">AF_<wbr/>TRIGGER</td>
8722<td align="center">ACTIVE_<wbr/>SCAN</td>
8723<td align="center">Start AF sweep,<wbr/> Lens now moving</td>
8724</tr>
8725<tr>
8726<td align="center">ACTIVE_<wbr/>SCAN</td>
8727<td align="center">AF sweep done</td>
8728<td align="center">FOCUSED_<wbr/>LOCKED</td>
8729<td align="center">Focused,<wbr/> Lens now locked</td>
8730</tr>
8731<tr>
8732<td align="center">ACTIVE_<wbr/>SCAN</td>
8733<td align="center">AF sweep done</td>
8734<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
8735<td align="center">Not focused,<wbr/> Lens now locked</td>
8736</tr>
8737<tr>
8738<td align="center">ACTIVE_<wbr/>SCAN</td>
8739<td align="center">AF_<wbr/>CANCEL</td>
8740<td align="center">INACTIVE</td>
8741<td align="center">Cancel/<wbr/>reset AF,<wbr/> Lens now locked</td>
8742</tr>
8743<tr>
8744<td align="center">FOCUSED_<wbr/>LOCKED</td>
8745<td align="center">AF_<wbr/>CANCEL</td>
8746<td align="center">INACTIVE</td>
8747<td align="center">Cancel/<wbr/>reset AF</td>
8748</tr>
8749<tr>
8750<td align="center">FOCUSED_<wbr/>LOCKED</td>
8751<td align="center">AF_<wbr/>TRIGGER</td>
8752<td align="center">ACTIVE_<wbr/>SCAN</td>
8753<td align="center">Start new sweep,<wbr/> Lens now moving</td>
8754</tr>
8755<tr>
8756<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
8757<td align="center">AF_<wbr/>CANCEL</td>
8758<td align="center">INACTIVE</td>
8759<td align="center">Cancel/<wbr/>reset AF</td>
8760</tr>
8761<tr>
8762<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
8763<td align="center">AF_<wbr/>TRIGGER</td>
8764<td align="center">ACTIVE_<wbr/>SCAN</td>
8765<td align="center">Start new sweep,<wbr/> Lens now moving</td>
8766</tr>
8767<tr>
8768<td align="center">Any state</td>
8769<td align="center">Mode change</td>
8770<td align="center">INACTIVE</td>
8771<td align="center"></td>
8772</tr>
8773</tbody>
8774</table>
8775<p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen
8776without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that
8777can be skipped in that manner is called a transient state.<wbr/></p>
8778<p>For example,<wbr/> for these AF modes (AF_<wbr/>MODE_<wbr/>AUTO and AF_<wbr/>MODE_<wbr/>MACRO),<wbr/> in addition to the
8779state transitions listed in above table,<wbr/> it is also legal for the camera device to skip
8780one or more transient states between two results.<wbr/> See below table for examples:</p>
8781<table>
8782<thead>
8783<tr>
8784<th align="center">State</th>
8785<th align="center">Transition Cause</th>
8786<th align="center">New State</th>
8787<th align="center">Notes</th>
8788</tr>
8789</thead>
8790<tbody>
8791<tr>
8792<td align="center">INACTIVE</td>
8793<td align="center">AF_<wbr/>TRIGGER</td>
8794<td align="center">FOCUSED_<wbr/>LOCKED</td>
8795<td align="center">Focus is already good or good after a scan,<wbr/> lens is now locked.<wbr/></td>
8796</tr>
8797<tr>
8798<td align="center">INACTIVE</td>
8799<td align="center">AF_<wbr/>TRIGGER</td>
8800<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
8801<td align="center">Focus failed after a scan,<wbr/> lens is now locked.<wbr/></td>
8802</tr>
8803<tr>
8804<td align="center">FOCUSED_<wbr/>LOCKED</td>
8805<td align="center">AF_<wbr/>TRIGGER</td>
8806<td align="center">FOCUSED_<wbr/>LOCKED</td>
8807<td align="center">Focus is already good or good after a scan,<wbr/> lens is now locked.<wbr/></td>
8808</tr>
8809<tr>
8810<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
8811<td align="center">AF_<wbr/>TRIGGER</td>
8812<td align="center">FOCUSED_<wbr/>LOCKED</td>
8813<td align="center">Focus is good after a scan,<wbr/> lens is not locked.<wbr/></td>
8814</tr>
8815</tbody>
8816</table>
8817<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>
8818<table>
8819<thead>
8820<tr>
8821<th align="center">State</th>
8822<th align="center">Transition Cause</th>
8823<th align="center">New State</th>
8824<th align="center">Notes</th>
8825</tr>
8826</thead>
8827<tbody>
8828<tr>
8829<td align="center">INACTIVE</td>
8830<td align="center">Camera device initiates new scan</td>
8831<td align="center">PASSIVE_<wbr/>SCAN</td>
8832<td align="center">Start AF scan,<wbr/> Lens now moving</td>
8833</tr>
8834<tr>
8835<td align="center">INACTIVE</td>
8836<td align="center">AF_<wbr/>TRIGGER</td>
8837<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
8838<td align="center">AF state query,<wbr/> Lens now locked</td>
8839</tr>
8840<tr>
8841<td align="center">PASSIVE_<wbr/>SCAN</td>
8842<td align="center">Camera device completes current scan</td>
8843<td align="center">PASSIVE_<wbr/>FOCUSED</td>
8844<td align="center">End AF scan,<wbr/> Lens now locked</td>
8845</tr>
8846<tr>
8847<td align="center">PASSIVE_<wbr/>SCAN</td>
8848<td align="center">Camera device fails current scan</td>
8849<td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
8850<td align="center">End AF scan,<wbr/> Lens now locked</td>
8851</tr>
8852<tr>
8853<td align="center">PASSIVE_<wbr/>SCAN</td>
8854<td align="center">AF_<wbr/>TRIGGER</td>
8855<td align="center">FOCUSED_<wbr/>LOCKED</td>
8856<td align="center">Immediate transition,<wbr/> if focus is good.<wbr/> Lens now locked</td>
8857</tr>
8858<tr>
8859<td align="center">PASSIVE_<wbr/>SCAN</td>
8860<td align="center">AF_<wbr/>TRIGGER</td>
8861<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
8862<td align="center">Immediate transition,<wbr/> if focus is bad.<wbr/> Lens now locked</td>
8863</tr>
8864<tr>
8865<td align="center">PASSIVE_<wbr/>SCAN</td>
8866<td align="center">AF_<wbr/>CANCEL</td>
8867<td align="center">INACTIVE</td>
8868<td align="center">Reset lens position,<wbr/> Lens now locked</td>
8869</tr>
8870<tr>
8871<td align="center">PASSIVE_<wbr/>FOCUSED</td>
8872<td align="center">Camera device initiates new scan</td>
8873<td align="center">PASSIVE_<wbr/>SCAN</td>
8874<td align="center">Start AF scan,<wbr/> Lens now moving</td>
8875</tr>
8876<tr>
8877<td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
8878<td align="center">Camera device initiates new scan</td>
8879<td align="center">PASSIVE_<wbr/>SCAN</td>
8880<td align="center">Start AF scan,<wbr/> Lens now moving</td>
8881</tr>
8882<tr>
8883<td align="center">PASSIVE_<wbr/>FOCUSED</td>
8884<td align="center">AF_<wbr/>TRIGGER</td>
8885<td align="center">FOCUSED_<wbr/>LOCKED</td>
8886<td align="center">Immediate transition,<wbr/> lens now locked</td>
8887</tr>
8888<tr>
8889<td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
8890<td align="center">AF_<wbr/>TRIGGER</td>
8891<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
8892<td align="center">Immediate transition,<wbr/> lens now locked</td>
8893</tr>
8894<tr>
8895<td align="center">FOCUSED_<wbr/>LOCKED</td>
8896<td align="center">AF_<wbr/>TRIGGER</td>
8897<td align="center">FOCUSED_<wbr/>LOCKED</td>
8898<td align="center">No effect</td>
8899</tr>
8900<tr>
8901<td align="center">FOCUSED_<wbr/>LOCKED</td>
8902<td align="center">AF_<wbr/>CANCEL</td>
8903<td align="center">INACTIVE</td>
8904<td align="center">Restart AF scan</td>
8905</tr>
8906<tr>
8907<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
8908<td align="center">AF_<wbr/>TRIGGER</td>
8909<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
8910<td align="center">No effect</td>
8911</tr>
8912<tr>
8913<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
8914<td align="center">AF_<wbr/>CANCEL</td>
8915<td align="center">INACTIVE</td>
8916<td align="center">Restart AF scan</td>
8917</tr>
8918</tbody>
8919</table>
8920<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>
8921<table>
8922<thead>
8923<tr>
8924<th align="center">State</th>
8925<th align="center">Transition Cause</th>
8926<th align="center">New State</th>
8927<th align="center">Notes</th>
8928</tr>
8929</thead>
8930<tbody>
8931<tr>
8932<td align="center">INACTIVE</td>
8933<td align="center">Camera device initiates new scan</td>
8934<td align="center">PASSIVE_<wbr/>SCAN</td>
8935<td align="center">Start AF scan,<wbr/> Lens now moving</td>
8936</tr>
8937<tr>
8938<td align="center">INACTIVE</td>
8939<td align="center">AF_<wbr/>TRIGGER</td>
8940<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
8941<td align="center">AF state query,<wbr/> Lens now locked</td>
8942</tr>
8943<tr>
8944<td align="center">PASSIVE_<wbr/>SCAN</td>
8945<td align="center">Camera device completes current scan</td>
8946<td align="center">PASSIVE_<wbr/>FOCUSED</td>
8947<td align="center">End AF scan,<wbr/> Lens now locked</td>
8948</tr>
8949<tr>
8950<td align="center">PASSIVE_<wbr/>SCAN</td>
8951<td align="center">Camera device fails current scan</td>
8952<td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
8953<td align="center">End AF scan,<wbr/> Lens now locked</td>
8954</tr>
8955<tr>
8956<td align="center">PASSIVE_<wbr/>SCAN</td>
8957<td align="center">AF_<wbr/>TRIGGER</td>
8958<td align="center">FOCUSED_<wbr/>LOCKED</td>
8959<td align="center">Eventual transition once the focus is good.<wbr/> Lens now locked</td>
8960</tr>
8961<tr>
8962<td align="center">PASSIVE_<wbr/>SCAN</td>
8963<td align="center">AF_<wbr/>TRIGGER</td>
8964<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
8965<td align="center">Eventual transition if cannot find focus.<wbr/> Lens now locked</td>
8966</tr>
8967<tr>
8968<td align="center">PASSIVE_<wbr/>SCAN</td>
8969<td align="center">AF_<wbr/>CANCEL</td>
8970<td align="center">INACTIVE</td>
8971<td align="center">Reset lens position,<wbr/> Lens now locked</td>
8972</tr>
8973<tr>
8974<td align="center">PASSIVE_<wbr/>FOCUSED</td>
8975<td align="center">Camera device initiates new scan</td>
8976<td align="center">PASSIVE_<wbr/>SCAN</td>
8977<td align="center">Start AF scan,<wbr/> Lens now moving</td>
8978</tr>
8979<tr>
8980<td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
8981<td align="center">Camera device initiates new scan</td>
8982<td align="center">PASSIVE_<wbr/>SCAN</td>
8983<td align="center">Start AF scan,<wbr/> Lens now moving</td>
8984</tr>
8985<tr>
8986<td align="center">PASSIVE_<wbr/>FOCUSED</td>
8987<td align="center">AF_<wbr/>TRIGGER</td>
8988<td align="center">FOCUSED_<wbr/>LOCKED</td>
8989<td align="center">Immediate trans.<wbr/> Lens now locked</td>
8990</tr>
8991<tr>
8992<td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
8993<td align="center">AF_<wbr/>TRIGGER</td>
8994<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
8995<td align="center">Immediate trans.<wbr/> Lens now locked</td>
8996</tr>
8997<tr>
8998<td align="center">FOCUSED_<wbr/>LOCKED</td>
8999<td align="center">AF_<wbr/>TRIGGER</td>
9000<td align="center">FOCUSED_<wbr/>LOCKED</td>
9001<td align="center">No effect</td>
9002</tr>
9003<tr>
9004<td align="center">FOCUSED_<wbr/>LOCKED</td>
9005<td align="center">AF_<wbr/>CANCEL</td>
9006<td align="center">INACTIVE</td>
9007<td align="center">Restart AF scan</td>
9008</tr>
9009<tr>
9010<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
9011<td align="center">AF_<wbr/>TRIGGER</td>
9012<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
9013<td align="center">No effect</td>
9014</tr>
9015<tr>
9016<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
9017<td align="center">AF_<wbr/>CANCEL</td>
9018<td align="center">INACTIVE</td>
9019<td align="center">Restart AF scan</td>
9020</tr>
9021</tbody>
9022</table>
9023<p>When switch between AF_<wbr/>MODE_<wbr/>CONTINUOUS_<wbr/>* (CAF modes) and AF_<wbr/>MODE_<wbr/>AUTO/<wbr/>AF_<wbr/>MODE_<wbr/>MACRO
9024(AUTO modes),<wbr/> the initial INACTIVE or PASSIVE_<wbr/>SCAN states may be skipped by the
9025camera device.<wbr/> When a trigger is included in a mode switch request,<wbr/> the trigger
9026will be evaluated in the context of the new mode in the request.<wbr/>
9027See below table for examples:</p>
9028<table>
9029<thead>
9030<tr>
9031<th align="center">State</th>
9032<th align="center">Transition Cause</th>
9033<th align="center">New State</th>
9034<th align="center">Notes</th>
9035</tr>
9036</thead>
9037<tbody>
9038<tr>
9039<td align="center">any state</td>
9040<td align="center">CAF--&gt;AUTO mode switch</td>
9041<td align="center">INACTIVE</td>
9042<td align="center">Mode switch without trigger,<wbr/> initial state must be INACTIVE</td>
9043</tr>
9044<tr>
9045<td align="center">any state</td>
9046<td align="center">CAF--&gt;AUTO mode switch with AF_<wbr/>TRIGGER</td>
9047<td align="center">trigger-reachable states from INACTIVE</td>
9048<td align="center">Mode switch with trigger,<wbr/> INACTIVE is skipped</td>
9049</tr>
9050<tr>
9051<td align="center">any state</td>
9052<td align="center">AUTO--&gt;CAF mode switch</td>
9053<td align="center">passively reachable states from INACTIVE</td>
9054<td align="center">Mode switch without trigger,<wbr/> passive transient state is skipped</td>
9055</tr>
9056</tbody>
9057</table>
9058            </td>
9059          </tr>
9060
9061
9062          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9063           <!-- end of entry -->
9064
9065
9066          <tr class="entry" id="dynamic_android.control.afTriggerId">
9067            <td class="entry_name
9068                entry_name_deprecated
9069             " rowspan="3">
9070              android.<wbr/>control.<wbr/>af<wbr/>Trigger<wbr/>Id
9071            </td>
9072            <td class="entry_type">
9073                <span class="entry_type_name">int32</span>
9074
9075              <span class="entry_type_visibility"> [system]</span>
9076
9077
9078
9079              <span class="entry_type_deprecated">[deprecated] </span>
9080
9081
9082
9083            </td> <!-- entry_type -->
9084
9085            <td class="entry_description">
9086              <p>The ID sent with the latest
9087CAMERA2_<wbr/>TRIGGER_<wbr/>AUTOFOCUS call</p>
9088            </td>
9089
9090            <td class="entry_units">
9091            </td>
9092
9093            <td class="entry_range">
9094              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
9095            </td>
9096
9097            <td class="entry_hal_version">
9098              <p>3.<wbr/>2</p>
9099            </td>
9100
9101            <td class="entry_tags">
9102            </td>
9103
9104          </tr>
9105          <tr class="entries_header">
9106            <th class="th_details" colspan="6">Details</th>
9107          </tr>
9108          <tr class="entry_cont">
9109            <td class="entry_details" colspan="6">
9110              <p>Must be 0 if no CAMERA2_<wbr/>TRIGGER_<wbr/>AUTOFOCUS trigger
9111received yet by HAL.<wbr/> Always updated even if AF algorithm
9112ignores the trigger</p>
9113            </td>
9114          </tr>
9115
9116
9117          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9118           <!-- end of entry -->
9119
9120
9121          <tr class="entry" id="dynamic_android.control.awbLock">
9122            <td class="entry_name
9123             " rowspan="3">
9124              android.<wbr/>control.<wbr/>awb<wbr/>Lock
9125            </td>
9126            <td class="entry_type">
9127                <span class="entry_type_name entry_type_name_enum">byte</span>
9128
9129              <span class="entry_type_visibility"> [public as boolean]</span>
9130
9131
9132              <span class="entry_type_hwlevel">[legacy] </span>
9133
9134
9135
9136                <ul class="entry_type_enum">
9137                  <li>
9138                    <span class="entry_type_enum_name">OFF (v3.2)</span>
9139                    <span class="entry_type_enum_notes"><p>Auto-white balance lock is disabled; the AWB
9140algorithm is free to update its parameters if in AUTO
9141mode.<wbr/></p></span>
9142                  </li>
9143                  <li>
9144                    <span class="entry_type_enum_name">ON (v3.2)</span>
9145                    <span class="entry_type_enum_notes"><p>Auto-white balance lock is enabled; the AWB
9146algorithm will not update its parameters while the lock
9147is active.<wbr/></p></span>
9148                  </li>
9149                </ul>
9150
9151            </td> <!-- entry_type -->
9152
9153            <td class="entry_description">
9154              <p>Whether auto-white balance (AWB) is currently locked to its
9155latest calculated values.<wbr/></p>
9156            </td>
9157
9158            <td class="entry_units">
9159            </td>
9160
9161            <td class="entry_range">
9162            </td>
9163
9164            <td class="entry_hal_version">
9165              <p>3.<wbr/>2</p>
9166            </td>
9167
9168            <td class="entry_tags">
9169              <ul class="entry_tags">
9170                  <li><a href="#tag_BC">BC</a></li>
9171              </ul>
9172            </td>
9173
9174          </tr>
9175          <tr class="entries_header">
9176            <th class="th_details" colspan="6">Details</th>
9177          </tr>
9178          <tr class="entry_cont">
9179            <td class="entry_details" colspan="6">
9180              <p>When set to <code>true</code> (ON),<wbr/> the AWB algorithm is locked to its latest parameters,<wbr/>
9181and will not change color balance settings until the lock is set to <code>false</code> (OFF).<wbr/></p>
9182<p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that
9183get locked do not necessarily correspond to the settings that were present in the
9184latest capture result received from the camera device,<wbr/> since additional captures
9185and AWB updates may have occurred even before the result was sent out.<wbr/> If an
9186application is switching between automatic and manual control and wishes to eliminate
9187any flicker during the switch,<wbr/> the following procedure is recommended:</p>
9188<ol>
9189<li>Starting in auto-AWB mode:</li>
9190<li>Lock AWB</li>
9191<li>Wait for the first result to be output that has the AWB locked</li>
9192<li>Copy AWB settings from that result into a request,<wbr/> set the request to manual AWB</li>
9193<li>Submit the capture request,<wbr/> proceed to run manual AWB as desired.<wbr/></li>
9194</ol>
9195<p>Note that AWB lock is only meaningful when
9196<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is in the AUTO mode; in other modes,<wbr/>
9197AWB is already fixed to a specific setting.<wbr/></p>
9198<p>Some LEGACY devices may not support ON; the value is then overridden to OFF.<wbr/></p>
9199            </td>
9200          </tr>
9201
9202
9203          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9204           <!-- end of entry -->
9205
9206
9207          <tr class="entry" id="dynamic_android.control.awbMode">
9208            <td class="entry_name
9209             " rowspan="3">
9210              android.<wbr/>control.<wbr/>awb<wbr/>Mode
9211            </td>
9212            <td class="entry_type">
9213                <span class="entry_type_name entry_type_name_enum">byte</span>
9214
9215              <span class="entry_type_visibility"> [public]</span>
9216
9217
9218              <span class="entry_type_hwlevel">[legacy] </span>
9219
9220
9221
9222                <ul class="entry_type_enum">
9223                  <li>
9224                    <span class="entry_type_enum_name">OFF (v3.2)</span>
9225                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled.<wbr/></p>
9226<p>The application-selected color transform matrix
9227(<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>) and gains
9228(<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a>) are used by the camera
9229device for manual white balance control.<wbr/></p></span>
9230                  </li>
9231                  <li>
9232                    <span class="entry_type_enum_name">AUTO (v3.2)</span>
9233                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is active.<wbr/></p>
9234<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
9235and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
9236For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
9237values used by the camera device for the transform and gains
9238will be available in the capture result for this request.<wbr/></p></span>
9239                  </li>
9240                  <li>
9241                    <span class="entry_type_enum_name">INCANDESCENT (v3.2)</span>
9242                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
9243the camera device uses incandescent light as the assumed scene
9244illumination for white balance.<wbr/></p>
9245<p>While the exact white balance transforms are up to the
9246camera device,<wbr/> they will approximately match the CIE
9247standard illuminant A.<wbr/></p>
9248<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
9249and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
9250For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
9251values used by the camera device for the transform and gains
9252will be available in the capture result for this request.<wbr/></p></span>
9253                  </li>
9254                  <li>
9255                    <span class="entry_type_enum_name">FLUORESCENT (v3.2)</span>
9256                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
9257the camera device uses fluorescent light as the assumed scene
9258illumination for white balance.<wbr/></p>
9259<p>While the exact white balance transforms are up to the
9260camera device,<wbr/> they will approximately match the CIE
9261standard illuminant F2.<wbr/></p>
9262<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
9263and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
9264For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
9265values used by the camera device for the transform and gains
9266will be available in the capture result for this request.<wbr/></p></span>
9267                  </li>
9268                  <li>
9269                    <span class="entry_type_enum_name">WARM_FLUORESCENT (v3.2)</span>
9270                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
9271the camera device uses warm fluorescent light as the assumed scene
9272illumination for white balance.<wbr/></p>
9273<p>While the exact white balance transforms are up to the
9274camera device,<wbr/> they will approximately match the CIE
9275standard illuminant F4.<wbr/></p>
9276<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
9277and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
9278For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
9279values used by the camera device for the transform and gains
9280will be available in the capture result for this request.<wbr/></p></span>
9281                  </li>
9282                  <li>
9283                    <span class="entry_type_enum_name">DAYLIGHT (v3.2)</span>
9284                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
9285the camera device uses daylight light as the assumed scene
9286illumination for white balance.<wbr/></p>
9287<p>While the exact white balance transforms are up to the
9288camera device,<wbr/> they will approximately match the CIE
9289standard illuminant D65.<wbr/></p>
9290<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
9291and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
9292For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
9293values used by the camera device for the transform and gains
9294will be available in the capture result for this request.<wbr/></p></span>
9295                  </li>
9296                  <li>
9297                    <span class="entry_type_enum_name">CLOUDY_DAYLIGHT (v3.2)</span>
9298                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
9299the camera device uses cloudy daylight light as the assumed scene
9300illumination for white balance.<wbr/></p>
9301<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
9302and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
9303For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
9304values used by the camera device for the transform and gains
9305will be available in the capture result for this request.<wbr/></p></span>
9306                  </li>
9307                  <li>
9308                    <span class="entry_type_enum_name">TWILIGHT (v3.2)</span>
9309                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
9310the camera device uses twilight light as the assumed scene
9311illumination for white balance.<wbr/></p>
9312<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
9313and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
9314For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
9315values used by the camera device for the transform and gains
9316will be available in the capture result for this request.<wbr/></p></span>
9317                  </li>
9318                  <li>
9319                    <span class="entry_type_enum_name">SHADE (v3.2)</span>
9320                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
9321the camera device uses shade light as the assumed scene
9322illumination for white balance.<wbr/></p>
9323<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
9324and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
9325For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
9326values used by the camera device for the transform and gains
9327will be available in the capture result for this request.<wbr/></p></span>
9328                  </li>
9329                </ul>
9330
9331            </td> <!-- entry_type -->
9332
9333            <td class="entry_description">
9334              <p>Whether auto-white balance (AWB) is currently setting the color
9335transform fields,<wbr/> and what its illumination target
9336is.<wbr/></p>
9337            </td>
9338
9339            <td class="entry_units">
9340            </td>
9341
9342            <td class="entry_range">
9343              <p><a href="#static_android.control.awbAvailableModes">android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes</a></p>
9344            </td>
9345
9346            <td class="entry_hal_version">
9347              <p>3.<wbr/>2</p>
9348            </td>
9349
9350            <td class="entry_tags">
9351              <ul class="entry_tags">
9352                  <li><a href="#tag_BC">BC</a></li>
9353              </ul>
9354            </td>
9355
9356          </tr>
9357          <tr class="entries_header">
9358            <th class="th_details" colspan="6">Details</th>
9359          </tr>
9360          <tr class="entry_cont">
9361            <td class="entry_details" colspan="6">
9362              <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is AUTO.<wbr/></p>
9363<p>When set to the AUTO mode,<wbr/> the camera device's auto-white balance
9364routine is enabled,<wbr/> overriding the application's selected
9365<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
9366<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>
9367is OFF,<wbr/> the behavior of AWB is device dependent.<wbr/> It is recommened to
9368also 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
9369setting AE mode to OFF.<wbr/></p>
9370<p>When set to the OFF mode,<wbr/> the camera device's auto-white balance
9371routine is disabled.<wbr/> The application manually controls the white
9372balance 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>
9373and <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/></p>
9374<p>When set to any other modes,<wbr/> the camera device's auto-white
9375balance routine is disabled.<wbr/> The camera device uses each
9376particular illumination target for white balance
9377adjustment.<wbr/> The application's values for
9378<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>,<wbr/>
9379<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
9380<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> are ignored.<wbr/></p>
9381            </td>
9382          </tr>
9383
9384
9385          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9386           <!-- end of entry -->
9387
9388
9389          <tr class="entry" id="dynamic_android.control.awbRegions">
9390            <td class="entry_name
9391             " rowspan="5">
9392              android.<wbr/>control.<wbr/>awb<wbr/>Regions
9393            </td>
9394            <td class="entry_type">
9395                <span class="entry_type_name">int32</span>
9396                <span class="entry_type_container">x</span>
9397
9398                <span class="entry_type_array">
9399                  5 x area_count
9400                </span>
9401              <span class="entry_type_visibility"> [public as meteringRectangle]</span>
9402
9403
9404
9405
9406
9407
9408            </td> <!-- entry_type -->
9409
9410            <td class="entry_description">
9411              <p>List of metering areas to use for auto-white-balance illuminant
9412estimation.<wbr/></p>
9413            </td>
9414
9415            <td class="entry_units">
9416              Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size or
9417            android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size depending on
9418            distortion correction capability and mode
9419            </td>
9420
9421            <td class="entry_range">
9422              <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
9423<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>
9424depending on distortion correction capability and mode</p>
9425            </td>
9426
9427            <td class="entry_hal_version">
9428              <p>3.<wbr/>2</p>
9429            </td>
9430
9431            <td class="entry_tags">
9432              <ul class="entry_tags">
9433                  <li><a href="#tag_BC">BC</a></li>
9434              </ul>
9435            </td>
9436
9437          </tr>
9438          <tr class="entries_header">
9439            <th class="th_details" colspan="6">Details</th>
9440          </tr>
9441          <tr class="entry_cont">
9442            <td class="entry_details" colspan="6">
9443              <p>Not available if <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a> is 0.<wbr/>
9444Otherwise will always be present.<wbr/></p>
9445<p>The maximum number of regions supported by the device is determined by the value
9446of <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a>.<wbr/></p>
9447<p>For devices not supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate
9448system 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
9449the top-left pixel in the active pixel array,<wbr/> and
9450(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
9451<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
9452active pixel array.<wbr/></p>
9453<p>For devices supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate
9454system depends on the mode being set.<wbr/>
9455When the distortion correction mode is OFF,<wbr/> the coordinate system follows
9456<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
9457<code>(0,<wbr/> 0)</code> being the top-left pixel of the pre-correction active array,<wbr/> and
9458(<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/>
9459<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
9460pixel in the pre-correction active pixel array.<wbr/>
9461When the distortion correction mode is not OFF,<wbr/> the coordinate system follows
9462<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> with
9463<code>(0,<wbr/> 0)</code> being the top-left pixel of the active array,<wbr/> and
9464(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
9465<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
9466active pixel array.<wbr/></p>
9467<p>The weight must range from 0 to 1000,<wbr/> and represents a weight
9468for every pixel in the area.<wbr/> This means that a large metering area
9469with the same weight as a smaller area will have more effect in
9470the metering result.<wbr/> Metering areas can partially overlap and the
9471camera device will add the weights in the overlap region.<wbr/></p>
9472<p>The weights are relative to weights of other white balance metering regions,<wbr/> so if
9473only one region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with
94740 weight is ignored.<wbr/></p>
9475<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
9476camera device.<wbr/></p>
9477<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
9478capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
9479region and output only the intersection rectangle as the metering region in the result
9480metadata.<wbr/>  If the region is entirely outside the crop region,<wbr/> it will be ignored and
9481not reported in the result metadata.<wbr/></p>
9482<p>Starting from API level 30,<wbr/> the coordinate system of activeArraySize or
9483preCorrectionActiveArraySize is used to represent post-zoomRatio field of view,<wbr/> not
9484pre-zoom field of view.<wbr/> This means that the same awbRegions values at different
9485<a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> represent different parts of the scene.<wbr/> The awbRegions
9486coordinates are relative to the activeArray/<wbr/>preCorrectionActiveArray representing the
9487zoomed 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
9488awbRegions at different <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> still represent the same parts of
9489the 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
9490activeArraySize or preCorrectionActiveArraySize still depends on distortion correction
9491mode.<wbr/></p>
9492<p>For camera devices with the
9493<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>
9494capability,<wbr/> <a href="#static_android.sensor.info.activeArraySizeMaximumResolution">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution</a> /<wbr/>
9495<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
9496coordinate system for requests where <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to
9497<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>
9498            </td>
9499          </tr>
9500
9501          <tr class="entries_header">
9502            <th class="th_details" colspan="6">HAL Implementation Details</th>
9503          </tr>
9504          <tr class="entry_cont">
9505            <td class="entry_details" colspan="6">
9506              <p>The HAL level representation of MeteringRectangle[] is a
9507int[5 * area_<wbr/>count].<wbr/>
9508Every five elements represent a metering region of
9509(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
9510The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
9511exclusive on xmax and ymax.<wbr/>
9512HAL must always report metering regions in the coordinate system of pre-correction
9513active array.<wbr/></p>
9514            </td>
9515          </tr>
9516
9517          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9518           <!-- end of entry -->
9519
9520
9521          <tr class="entry" id="dynamic_android.control.captureIntent">
9522            <td class="entry_name
9523             " rowspan="3">
9524              android.<wbr/>control.<wbr/>capture<wbr/>Intent
9525            </td>
9526            <td class="entry_type">
9527                <span class="entry_type_name entry_type_name_enum">byte</span>
9528
9529              <span class="entry_type_visibility"> [public]</span>
9530
9531
9532              <span class="entry_type_hwlevel">[legacy] </span>
9533
9534
9535
9536                <ul class="entry_type_enum">
9537                  <li>
9538                    <span class="entry_type_enum_name">CUSTOM (v3.2)</span>
9539                    <span class="entry_type_enum_notes"><p>The goal of this request doesn't fall into the other
9540categories.<wbr/> The camera device will default to preview-like
9541behavior.<wbr/></p></span>
9542                  </li>
9543                  <li>
9544                    <span class="entry_type_enum_name">PREVIEW (v3.2)</span>
9545                    <span class="entry_type_enum_notes"><p>This request is for a preview-like use case.<wbr/></p>
9546<p>The precapture trigger may be used to start off a metering
9547w/<wbr/>flash sequence.<wbr/></p></span>
9548                  </li>
9549                  <li>
9550                    <span class="entry_type_enum_name">STILL_CAPTURE (v3.2)</span>
9551                    <span class="entry_type_enum_notes"><p>This request is for a still capture-type
9552use case.<wbr/></p>
9553<p>If the flash unit is under automatic control,<wbr/> it may fire as needed.<wbr/></p></span>
9554                  </li>
9555                  <li>
9556                    <span class="entry_type_enum_name">VIDEO_RECORD (v3.2)</span>
9557                    <span class="entry_type_enum_notes"><p>This request is for a video recording
9558use case.<wbr/></p></span>
9559                  </li>
9560                  <li>
9561                    <span class="entry_type_enum_name">VIDEO_SNAPSHOT (v3.2)</span>
9562                    <span class="entry_type_enum_notes"><p>This request is for a video snapshot (still
9563image while recording video) use case.<wbr/></p>
9564<p>The camera device should take the highest-quality image
9565possible (given the other settings) without disrupting the
9566frame rate of video recording.<wbr/>  </p></span>
9567                  </li>
9568                  <li>
9569                    <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span>
9570                    <span class="entry_type_enum_notes"><p>This request is for a ZSL usecase; the
9571application will stream full-resolution images and
9572reprocess one or several later for a final
9573capture.<wbr/></p></span>
9574                  </li>
9575                  <li>
9576                    <span class="entry_type_enum_name">MANUAL (v3.2)</span>
9577                    <span class="entry_type_enum_notes"><p>This request is for manual capture use case where
9578the applications want to directly control the capture parameters.<wbr/></p>
9579<p>For example,<wbr/> the application may wish to manually control
9580<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>
9581                  </li>
9582                  <li>
9583                    <span class="entry_type_enum_name">MOTION_TRACKING (v3.3)</span>
9584                    <span class="entry_type_enum_notes"><p>This request is for a motion tracking use case,<wbr/> where
9585the application will use camera and inertial sensor data to
9586locate and track objects in the world.<wbr/></p>
9587<p>The camera device auto-exposure routine will limit the exposure time
9588of the camera to no more than 20 milliseconds,<wbr/> to minimize motion blur.<wbr/></p></span>
9589                  </li>
9590                </ul>
9591
9592            </td> <!-- entry_type -->
9593
9594            <td class="entry_description">
9595              <p>Information to the camera device 3A (auto-exposure,<wbr/>
9596auto-focus,<wbr/> auto-white balance) routines about the purpose
9597of this capture,<wbr/> to help the camera device to decide optimal 3A
9598strategy.<wbr/></p>
9599            </td>
9600
9601            <td class="entry_units">
9602            </td>
9603
9604            <td class="entry_range">
9605            </td>
9606
9607            <td class="entry_hal_version">
9608              <p>3.<wbr/>2</p>
9609            </td>
9610
9611            <td class="entry_tags">
9612              <ul class="entry_tags">
9613                  <li><a href="#tag_BC">BC</a></li>
9614              </ul>
9615            </td>
9616
9617          </tr>
9618          <tr class="entries_header">
9619            <th class="th_details" colspan="6">Details</th>
9620          </tr>
9621          <tr class="entry_cont">
9622            <td class="entry_details" colspan="6">
9623              <p>This control (except for MANUAL) is only effective if
9624<code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF</code> and any 3A routine is active.<wbr/></p>
9625<p>All intents are supported by all devices,<wbr/> except that:
9626  * ZERO_<wbr/>SHUTTER_<wbr/>LAG will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
9627PRIVATE_<wbr/>REPROCESSING or YUV_<wbr/>REPROCESSING.<wbr/>
9628  * MANUAL will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
9629MANUAL_<wbr/>SENSOR.<wbr/>
9630  * MOTION_<wbr/>TRACKING will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
9631MOTION_<wbr/>TRACKING.<wbr/></p>
9632            </td>
9633          </tr>
9634
9635
9636          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9637           <!-- end of entry -->
9638
9639
9640          <tr class="entry" id="dynamic_android.control.awbState">
9641            <td class="entry_name
9642             " rowspan="3">
9643              android.<wbr/>control.<wbr/>awb<wbr/>State
9644            </td>
9645            <td class="entry_type">
9646                <span class="entry_type_name entry_type_name_enum">byte</span>
9647
9648              <span class="entry_type_visibility"> [public]</span>
9649
9650
9651              <span class="entry_type_hwlevel">[limited] </span>
9652
9653
9654
9655                <ul class="entry_type_enum">
9656                  <li>
9657                    <span class="entry_type_enum_name">INACTIVE (v3.2)</span>
9658                    <span class="entry_type_enum_notes"><p>AWB is not in auto mode,<wbr/> or has not yet started metering.<wbr/></p>
9659<p>When a camera device is opened,<wbr/> it starts in this
9660state.<wbr/> This is a transient state,<wbr/> the camera device may
9661skip reporting this state in capture
9662result.<wbr/></p></span>
9663                  </li>
9664                  <li>
9665                    <span class="entry_type_enum_name">SEARCHING (v3.2)</span>
9666                    <span class="entry_type_enum_notes"><p>AWB doesn't yet have a good set of control
9667values for the current scene.<wbr/></p>
9668<p>This is a transient state,<wbr/> the camera device
9669may skip reporting this state in capture result.<wbr/></p></span>
9670                  </li>
9671                  <li>
9672                    <span class="entry_type_enum_name">CONVERGED (v3.2)</span>
9673                    <span class="entry_type_enum_notes"><p>AWB has a good set of control values for the
9674current scene.<wbr/></p></span>
9675                  </li>
9676                  <li>
9677                    <span class="entry_type_enum_name">LOCKED (v3.2)</span>
9678                    <span class="entry_type_enum_notes"><p>AWB has been locked.<wbr/></p></span>
9679                  </li>
9680                </ul>
9681
9682            </td> <!-- entry_type -->
9683
9684            <td class="entry_description">
9685              <p>Current state of auto-white balance (AWB) algorithm.<wbr/></p>
9686            </td>
9687
9688            <td class="entry_units">
9689            </td>
9690
9691            <td class="entry_range">
9692            </td>
9693
9694            <td class="entry_hal_version">
9695              <p>3.<wbr/>2</p>
9696            </td>
9697
9698            <td class="entry_tags">
9699            </td>
9700
9701          </tr>
9702          <tr class="entries_header">
9703            <th class="th_details" colspan="6">Details</th>
9704          </tr>
9705          <tr class="entry_cont">
9706            <td class="entry_details" colspan="6">
9707              <p>Switching between or enabling AWB modes (<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>) always
9708resets the AWB state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/>
9709or <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
9710the algorithm states to INACTIVE.<wbr/></p>
9711<p>The camera device can do several state transitions between two results,<wbr/> if it is
9712allowed by the state transition table.<wbr/> So INACTIVE may never actually be seen in
9713a result.<wbr/></p>
9714<p>The state in the result is the state for this image (in sync with this image): if
9715AWB state becomes CONVERGED,<wbr/> then the image data associated with this result should
9716be good to use.<wbr/></p>
9717<p>Below are state transition tables for different AWB modes.<wbr/></p>
9718<p>When <code><a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> != AWB_<wbr/>MODE_<wbr/>AUTO</code>:</p>
9719<table>
9720<thead>
9721<tr>
9722<th align="center">State</th>
9723<th align="center">Transition Cause</th>
9724<th align="center">New State</th>
9725<th align="center">Notes</th>
9726</tr>
9727</thead>
9728<tbody>
9729<tr>
9730<td align="center">INACTIVE</td>
9731<td align="center"></td>
9732<td align="center">INACTIVE</td>
9733<td align="center">Camera device auto white balance algorithm is disabled</td>
9734</tr>
9735</tbody>
9736</table>
9737<p>When <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is AWB_<wbr/>MODE_<wbr/>AUTO:</p>
9738<table>
9739<thead>
9740<tr>
9741<th align="center">State</th>
9742<th align="center">Transition Cause</th>
9743<th align="center">New State</th>
9744<th align="center">Notes</th>
9745</tr>
9746</thead>
9747<tbody>
9748<tr>
9749<td align="center">INACTIVE</td>
9750<td align="center">Camera device initiates AWB scan</td>
9751<td align="center">SEARCHING</td>
9752<td align="center">Values changing</td>
9753</tr>
9754<tr>
9755<td align="center">INACTIVE</td>
9756<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td>
9757<td align="center">LOCKED</td>
9758<td align="center">Values locked</td>
9759</tr>
9760<tr>
9761<td align="center">SEARCHING</td>
9762<td align="center">Camera device finishes AWB scan</td>
9763<td align="center">CONVERGED</td>
9764<td align="center">Good values,<wbr/> not changing</td>
9765</tr>
9766<tr>
9767<td align="center">SEARCHING</td>
9768<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td>
9769<td align="center">LOCKED</td>
9770<td align="center">Values locked</td>
9771</tr>
9772<tr>
9773<td align="center">CONVERGED</td>
9774<td align="center">Camera device initiates AWB scan</td>
9775<td align="center">SEARCHING</td>
9776<td align="center">Values changing</td>
9777</tr>
9778<tr>
9779<td align="center">CONVERGED</td>
9780<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td>
9781<td align="center">LOCKED</td>
9782<td align="center">Values locked</td>
9783</tr>
9784<tr>
9785<td align="center">LOCKED</td>
9786<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is OFF</td>
9787<td align="center">SEARCHING</td>
9788<td align="center">Values not good after unlock</td>
9789</tr>
9790</tbody>
9791</table>
9792<p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen
9793without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that
9794can be skipped in that manner is called a transient state.<wbr/></p>
9795<p>For example,<wbr/> for this AWB mode (AWB_<wbr/>MODE_<wbr/>AUTO),<wbr/> in addition to the state transitions
9796listed in above table,<wbr/> it is also legal for the camera device to skip one or more
9797transient states between two results.<wbr/> See below table for examples:</p>
9798<table>
9799<thead>
9800<tr>
9801<th align="center">State</th>
9802<th align="center">Transition Cause</th>
9803<th align="center">New State</th>
9804<th align="center">Notes</th>
9805</tr>
9806</thead>
9807<tbody>
9808<tr>
9809<td align="center">INACTIVE</td>
9810<td align="center">Camera device finished AWB scan</td>
9811<td align="center">CONVERGED</td>
9812<td align="center">Values are already good,<wbr/> transient states are skipped by camera device.<wbr/></td>
9813</tr>
9814<tr>
9815<td align="center">LOCKED</td>
9816<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is OFF</td>
9817<td align="center">CONVERGED</td>
9818<td align="center">Values good after unlock,<wbr/> transient states are skipped by camera device.<wbr/></td>
9819</tr>
9820</tbody>
9821</table>
9822            </td>
9823          </tr>
9824
9825
9826          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9827           <!-- end of entry -->
9828
9829
9830          <tr class="entry" id="dynamic_android.control.effectMode">
9831            <td class="entry_name
9832             " rowspan="3">
9833              android.<wbr/>control.<wbr/>effect<wbr/>Mode
9834            </td>
9835            <td class="entry_type">
9836                <span class="entry_type_name entry_type_name_enum">byte</span>
9837
9838              <span class="entry_type_visibility"> [public]</span>
9839
9840
9841              <span class="entry_type_hwlevel">[legacy] </span>
9842
9843
9844
9845                <ul class="entry_type_enum">
9846                  <li>
9847                    <span class="entry_type_enum_name">OFF (v3.2)</span>
9848                    <span class="entry_type_enum_notes"><p>No color effect will be applied.<wbr/></p></span>
9849                  </li>
9850                  <li>
9851                    <span class="entry_type_enum_name">MONO (v3.2)</span>
9852                    <span class="entry_type_enum_optional">[optional]</span>
9853                    <span class="entry_type_enum_notes"><p>A "monocolor" effect where the image is mapped into
9854a single color.<wbr/></p>
9855<p>This will typically be grayscale.<wbr/></p></span>
9856                  </li>
9857                  <li>
9858                    <span class="entry_type_enum_name">NEGATIVE (v3.2)</span>
9859                    <span class="entry_type_enum_optional">[optional]</span>
9860                    <span class="entry_type_enum_notes"><p>A "photo-negative" effect where the image's colors
9861are inverted.<wbr/></p></span>
9862                  </li>
9863                  <li>
9864                    <span class="entry_type_enum_name">SOLARIZE (v3.2)</span>
9865                    <span class="entry_type_enum_optional">[optional]</span>
9866                    <span class="entry_type_enum_notes"><p>A "solarisation" effect (Sabattier effect) where the
9867image is wholly or partially reversed in
9868tone.<wbr/></p></span>
9869                  </li>
9870                  <li>
9871                    <span class="entry_type_enum_name">SEPIA (v3.2)</span>
9872                    <span class="entry_type_enum_optional">[optional]</span>
9873                    <span class="entry_type_enum_notes"><p>A "sepia" effect where the image is mapped into warm
9874gray,<wbr/> red,<wbr/> and brown tones.<wbr/></p></span>
9875                  </li>
9876                  <li>
9877                    <span class="entry_type_enum_name">POSTERIZE (v3.2)</span>
9878                    <span class="entry_type_enum_optional">[optional]</span>
9879                    <span class="entry_type_enum_notes"><p>A "posterization" effect where the image uses
9880discrete regions of tone rather than a continuous
9881gradient of tones.<wbr/></p></span>
9882                  </li>
9883                  <li>
9884                    <span class="entry_type_enum_name">WHITEBOARD (v3.2)</span>
9885                    <span class="entry_type_enum_optional">[optional]</span>
9886                    <span class="entry_type_enum_notes"><p>A "whiteboard" effect where the image is typically displayed
9887as regions of white,<wbr/> with black or grey details.<wbr/></p></span>
9888                  </li>
9889                  <li>
9890                    <span class="entry_type_enum_name">BLACKBOARD (v3.2)</span>
9891                    <span class="entry_type_enum_optional">[optional]</span>
9892                    <span class="entry_type_enum_notes"><p>A "blackboard" effect where the image is typically displayed
9893as regions of black,<wbr/> with white or grey details.<wbr/></p></span>
9894                  </li>
9895                  <li>
9896                    <span class="entry_type_enum_name">AQUA (v3.2)</span>
9897                    <span class="entry_type_enum_optional">[optional]</span>
9898                    <span class="entry_type_enum_notes"><p>An "aqua" effect where a blue hue is added to the image.<wbr/></p></span>
9899                  </li>
9900                </ul>
9901
9902            </td> <!-- entry_type -->
9903
9904            <td class="entry_description">
9905              <p>A special color effect to apply.<wbr/></p>
9906            </td>
9907
9908            <td class="entry_units">
9909            </td>
9910
9911            <td class="entry_range">
9912              <p><a href="#static_android.control.availableEffects">android.<wbr/>control.<wbr/>available<wbr/>Effects</a></p>
9913            </td>
9914
9915            <td class="entry_hal_version">
9916              <p>3.<wbr/>2</p>
9917            </td>
9918
9919            <td class="entry_tags">
9920              <ul class="entry_tags">
9921                  <li><a href="#tag_BC">BC</a></li>
9922              </ul>
9923            </td>
9924
9925          </tr>
9926          <tr class="entries_header">
9927            <th class="th_details" colspan="6">Details</th>
9928          </tr>
9929          <tr class="entry_cont">
9930            <td class="entry_details" colspan="6">
9931              <p>When this mode is set,<wbr/> a color effect will be applied
9932to images produced by the camera device.<wbr/> The interpretation
9933and implementation of these color effects is left to the
9934implementor of the camera device,<wbr/> and should not be
9935depended on to be consistent (or present) across all
9936devices.<wbr/></p>
9937            </td>
9938          </tr>
9939
9940
9941          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9942           <!-- end of entry -->
9943
9944
9945          <tr class="entry" id="dynamic_android.control.mode">
9946            <td class="entry_name
9947             " rowspan="3">
9948              android.<wbr/>control.<wbr/>mode
9949            </td>
9950            <td class="entry_type">
9951                <span class="entry_type_name entry_type_name_enum">byte</span>
9952
9953              <span class="entry_type_visibility"> [public]</span>
9954
9955
9956              <span class="entry_type_hwlevel">[legacy] </span>
9957
9958
9959
9960                <ul class="entry_type_enum">
9961                  <li>
9962                    <span class="entry_type_enum_name">OFF (v3.2)</span>
9963                    <span class="entry_type_enum_notes"><p>Full application control of pipeline.<wbr/></p>
9964<p>All control by the device's metering and focusing (3A)
9965routines is disabled,<wbr/> and no other settings in
9966android.<wbr/>control.<wbr/>* have any effect,<wbr/> except that
9967<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> may be used by the camera
9968device to select post-processing values for processing
9969blocks that do not allow for manual control,<wbr/> or are not
9970exposed by the camera API.<wbr/></p>
9971<p>However,<wbr/> the camera device's 3A routines may continue to
9972collect statistics and update their internal state so that
9973when control is switched to AUTO mode,<wbr/> good control values
9974can be immediately applied.<wbr/></p></span>
9975                  </li>
9976                  <li>
9977                    <span class="entry_type_enum_name">AUTO (v3.2)</span>
9978                    <span class="entry_type_enum_notes"><p>Use settings for each individual 3A routine.<wbr/></p>
9979<p>Manual control of capture parameters is disabled.<wbr/> All
9980controls in android.<wbr/>control.<wbr/>* besides sceneMode take
9981effect.<wbr/></p></span>
9982                  </li>
9983                  <li>
9984                    <span class="entry_type_enum_name">USE_SCENE_MODE (v3.2)</span>
9985                    <span class="entry_type_enum_optional">[optional]</span>
9986                    <span class="entry_type_enum_notes"><p>Use a specific scene mode.<wbr/></p>
9987<p>Enabling this disables control.<wbr/>aeMode,<wbr/> control.<wbr/>awbMode and
9988control.<wbr/>afMode controls; the camera device will ignore
9989those settings while USE_<wbr/>SCENE_<wbr/>MODE is active (except for
9990FACE_<wbr/>PRIORITY scene mode).<wbr/> Other control entries are still active.<wbr/>
9991This setting can only be used if scene mode is supported (i.<wbr/>e.<wbr/>
9992<a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a>
9993contain some modes other than DISABLED).<wbr/></p>
9994<p>For extended scene modes such as BOKEH,<wbr/> please use USE_<wbr/>EXTENDED_<wbr/>SCENE_<wbr/>MODE instead.<wbr/></p></span>
9995                  </li>
9996                  <li>
9997                    <span class="entry_type_enum_name">OFF_KEEP_STATE (v3.2)</span>
9998                    <span class="entry_type_enum_optional">[optional]</span>
9999                    <span class="entry_type_enum_notes"><p>Same as OFF mode,<wbr/> except that this capture will not be
10000used by camera device background auto-exposure,<wbr/> auto-white balance and
10001auto-focus algorithms (3A) to update their statistics.<wbr/></p>
10002<p>Specifically,<wbr/> the 3A routines are locked to the last
10003values set from a request with AUTO,<wbr/> OFF,<wbr/> or
10004USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> and any statistics or state updates
10005collected from manual captures with OFF_<wbr/>KEEP_<wbr/>STATE will be
10006discarded by the camera device.<wbr/></p></span>
10007                  </li>
10008                  <li>
10009                    <span class="entry_type_enum_name">USE_EXTENDED_SCENE_MODE (v3.5)</span>
10010                    <span class="entry_type_enum_optional">[optional]</span>
10011                    <span class="entry_type_enum_notes"><p>Use a specific extended scene mode.<wbr/></p>
10012<p>When extended scene mode is on,<wbr/> the camera device may override certain control
10013parameters,<wbr/> such as targetFpsRange,<wbr/> AE,<wbr/> AWB,<wbr/> and AF modes,<wbr/> to achieve best power and
10014quality tradeoffs.<wbr/> Only the mandatory stream combinations of LIMITED hardware level
10015are guaranteed.<wbr/></p>
10016<p>This setting can only be used if extended scene mode is supported (i.<wbr/>e.<wbr/>
10017android.<wbr/>control.<wbr/>available<wbr/>Extended<wbr/>Scene<wbr/>Modes
10018contains some modes other than DISABLED).<wbr/></p></span>
10019                  </li>
10020                </ul>
10021
10022            </td> <!-- entry_type -->
10023
10024            <td class="entry_description">
10025              <p>Overall mode of 3A (auto-exposure,<wbr/> auto-white-balance,<wbr/> auto-focus) control
10026routines.<wbr/></p>
10027            </td>
10028
10029            <td class="entry_units">
10030            </td>
10031
10032            <td class="entry_range">
10033              <p><a href="#static_android.control.availableModes">android.<wbr/>control.<wbr/>available<wbr/>Modes</a></p>
10034            </td>
10035
10036            <td class="entry_hal_version">
10037              <p>3.<wbr/>2</p>
10038            </td>
10039
10040            <td class="entry_tags">
10041              <ul class="entry_tags">
10042                  <li><a href="#tag_BC">BC</a></li>
10043              </ul>
10044            </td>
10045
10046          </tr>
10047          <tr class="entries_header">
10048            <th class="th_details" colspan="6">Details</th>
10049          </tr>
10050          <tr class="entry_cont">
10051            <td class="entry_details" colspan="6">
10052              <p>This is a top-level 3A control switch.<wbr/> When set to OFF,<wbr/> all 3A control
10053by the camera device is disabled.<wbr/> The application must set the fields for
10054capture parameters itself.<wbr/></p>
10055<p>When set to AUTO,<wbr/> the individual algorithm controls in
10056android.<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>
10057<p>When set to USE_<wbr/>SCENE_<wbr/>MODE or USE_<wbr/>EXTENDED_<wbr/>SCENE_<wbr/>MODE,<wbr/> the individual controls in
10058android.<wbr/>control.<wbr/>* are mostly disabled,<wbr/> and the camera device
10059implements one of the scene mode or extended scene mode settings (such as ACTION,<wbr/>
10060SUNSET,<wbr/> PARTY,<wbr/> or BOKEH) as it wishes.<wbr/> The camera device scene mode
100613A settings are provided by <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">capture results</a>.<wbr/></p>
10062<p>When set to OFF_<wbr/>KEEP_<wbr/>STATE,<wbr/> it is similar to OFF mode,<wbr/> the only difference
10063is that this frame will not be used by camera device background 3A statistics
10064update,<wbr/> as if this frame is never captured.<wbr/> This mode can be used in the scenario
10065where the application doesn't want a 3A manual control capture to affect
10066the subsequent auto 3A capture results.<wbr/></p>
10067            </td>
10068          </tr>
10069
10070
10071          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10072           <!-- end of entry -->
10073
10074
10075          <tr class="entry" id="dynamic_android.control.sceneMode">
10076            <td class="entry_name
10077             " rowspan="5">
10078              android.<wbr/>control.<wbr/>scene<wbr/>Mode
10079            </td>
10080            <td class="entry_type">
10081                <span class="entry_type_name entry_type_name_enum">byte</span>
10082
10083              <span class="entry_type_visibility"> [public]</span>
10084
10085
10086              <span class="entry_type_hwlevel">[legacy] </span>
10087
10088
10089
10090                <ul class="entry_type_enum">
10091                  <li>
10092                    <span class="entry_type_enum_name">DISABLED (v3.2)</span>
10093                    <span class="entry_type_enum_value">0</span>
10094                    <span class="entry_type_enum_notes"><p>Indicates that no scene modes are set for a given capture request.<wbr/></p></span>
10095                  </li>
10096                  <li>
10097                    <span class="entry_type_enum_name">FACE_PRIORITY (v3.2)</span>
10098                    <span class="entry_type_enum_notes"><p>If face detection support exists,<wbr/> use face
10099detection data for auto-focus,<wbr/> auto-white balance,<wbr/> and
10100auto-exposure routines.<wbr/></p>
10101<p>If face detection statistics are disabled
10102(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/>
10103this should still operate correctly (but will not return
10104face detection statistics to the framework).<wbr/></p>
10105<p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
10106<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>
10107remain active when FACE_<wbr/>PRIORITY is set.<wbr/></p></span>
10108                  </li>
10109                  <li>
10110                    <span class="entry_type_enum_name">ACTION (v3.2)</span>
10111                    <span class="entry_type_enum_optional">[optional]</span>
10112                    <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving objects.<wbr/></p>
10113<p>Similar to SPORTS.<wbr/></p></span>
10114                  </li>
10115                  <li>
10116                    <span class="entry_type_enum_name">PORTRAIT (v3.2)</span>
10117                    <span class="entry_type_enum_optional">[optional]</span>
10118                    <span class="entry_type_enum_notes"><p>Optimized for still photos of people.<wbr/></p></span>
10119                  </li>
10120                  <li>
10121                    <span class="entry_type_enum_name">LANDSCAPE (v3.2)</span>
10122                    <span class="entry_type_enum_optional">[optional]</span>
10123                    <span class="entry_type_enum_notes"><p>Optimized for photos of distant macroscopic objects.<wbr/></p></span>
10124                  </li>
10125                  <li>
10126                    <span class="entry_type_enum_name">NIGHT (v3.2)</span>
10127                    <span class="entry_type_enum_optional">[optional]</span>
10128                    <span class="entry_type_enum_notes"><p>Optimized for low-light settings.<wbr/></p></span>
10129                  </li>
10130                  <li>
10131                    <span class="entry_type_enum_name">NIGHT_PORTRAIT (v3.2)</span>
10132                    <span class="entry_type_enum_optional">[optional]</span>
10133                    <span class="entry_type_enum_notes"><p>Optimized for still photos of people in low-light
10134settings.<wbr/></p></span>
10135                  </li>
10136                  <li>
10137                    <span class="entry_type_enum_name">THEATRE (v3.2)</span>
10138                    <span class="entry_type_enum_optional">[optional]</span>
10139                    <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings where flash must
10140remain off.<wbr/></p></span>
10141                  </li>
10142                  <li>
10143                    <span class="entry_type_enum_name">BEACH (v3.2)</span>
10144                    <span class="entry_type_enum_optional">[optional]</span>
10145                    <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor beach settings.<wbr/></p></span>
10146                  </li>
10147                  <li>
10148                    <span class="entry_type_enum_name">SNOW (v3.2)</span>
10149                    <span class="entry_type_enum_optional">[optional]</span>
10150                    <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor settings containing snow.<wbr/></p></span>
10151                  </li>
10152                  <li>
10153                    <span class="entry_type_enum_name">SUNSET (v3.2)</span>
10154                    <span class="entry_type_enum_optional">[optional]</span>
10155                    <span class="entry_type_enum_notes"><p>Optimized for scenes of the setting sun.<wbr/></p></span>
10156                  </li>
10157                  <li>
10158                    <span class="entry_type_enum_name">STEADYPHOTO (v3.2)</span>
10159                    <span class="entry_type_enum_optional">[optional]</span>
10160                    <span class="entry_type_enum_notes"><p>Optimized to avoid blurry photos due to small amounts of
10161device motion (for example: due to hand shake).<wbr/></p></span>
10162                  </li>
10163                  <li>
10164                    <span class="entry_type_enum_name">FIREWORKS (v3.2)</span>
10165                    <span class="entry_type_enum_optional">[optional]</span>
10166                    <span class="entry_type_enum_notes"><p>Optimized for nighttime photos of fireworks.<wbr/></p></span>
10167                  </li>
10168                  <li>
10169                    <span class="entry_type_enum_name">SPORTS (v3.2)</span>
10170                    <span class="entry_type_enum_optional">[optional]</span>
10171                    <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving people.<wbr/></p>
10172<p>Similar to ACTION.<wbr/></p></span>
10173                  </li>
10174                  <li>
10175                    <span class="entry_type_enum_name">PARTY (v3.2)</span>
10176                    <span class="entry_type_enum_optional">[optional]</span>
10177                    <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings with multiple moving
10178people.<wbr/></p></span>
10179                  </li>
10180                  <li>
10181                    <span class="entry_type_enum_name">CANDLELIGHT (v3.2)</span>
10182                    <span class="entry_type_enum_optional">[optional]</span>
10183                    <span class="entry_type_enum_notes"><p>Optimized for dim settings where the main light source
10184is a candle.<wbr/></p></span>
10185                  </li>
10186                  <li>
10187                    <span class="entry_type_enum_name">BARCODE (v3.2)</span>
10188                    <span class="entry_type_enum_optional">[optional]</span>
10189                    <span class="entry_type_enum_notes"><p>Optimized for accurately capturing a photo of barcode
10190for use by camera applications that wish to read the
10191barcode value.<wbr/></p></span>
10192                  </li>
10193                  <li>
10194                    <span class="entry_type_enum_name">HIGH_SPEED_VIDEO (v3.2)</span>
10195                    <span class="entry_type_enum_deprecated">[deprecated]</span>
10196                    <span class="entry_type_enum_optional">[optional]</span>
10197                    <span class="entry_type_enum_hidden">[java_public]</span>
10198                    <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>
10199and <a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a>
10200for high speed video recording.<wbr/></p>
10201<p>Optimized for high speed video recording (frame rate &gt;=60fps) use case.<wbr/></p>
10202<p>The supported high speed video sizes and fps ranges are specified in
10203<a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/> To get desired
10204output frame rates,<wbr/> the application is only allowed to select video size
10205and fps range combinations listed in this static metadata.<wbr/> The fps range
10206can be control via <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a>.<wbr/></p>
10207<p>In this mode,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to
10208ON,<wbr/> ON,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode
10209controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture
10210and post-processing parameters is possible.<wbr/> All other controls operate the
10211same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other
10212android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p>
10213<ul>
10214<li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li>
10215<li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li>
10216<li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li>
10217<li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li>
10218<li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li>
10219<li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li>
10220<li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li>
10221<li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li>
10222<li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li>
10223<li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li>
10224<li><a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a></li>
10225</ul>
10226<p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p>
10227<ul>
10228<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>
10229<li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li>
10230<li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li>
10231<li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></li>
10232</ul>
10233<p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may
10234be lower than what camera can output,<wbr/> depending on the destination Surfaces for
10235the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/>
10236the application need check if the video encoder is capable of supporting the
10237high frame rate for a given video size,<wbr/> or it will end up with lower recording
10238frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the preview frame
10239rate will be bounded by the screen refresh rate.<wbr/></p>
10240<p>The camera device will only support up to 2 output high speed streams
10241(processed non-stalling format defined in <a href="#static_android.request.maxNumOutputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams</a>)
10242in this mode.<wbr/> This control will be effective only if all of below conditions are true:</p>
10243<ul>
10244<li>The application created no more than maxNumHighSpeedStreams processed non-stalling
10245format output streams,<wbr/> where maxNumHighSpeedStreams is calculated as
10246min(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>
10247<li>The stream sizes are selected from the sizes reported by
10248<a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/></li>
10249<li>No processed non-stalling or raw streams are configured.<wbr/></li>
10250</ul>
10251<p>When above conditions are NOT satistied,<wbr/> the controls of this mode and
10252<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/>
10253the camera device will fall back to <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> <code>==</code> AUTO,<wbr/>
10254and the returned capture result metadata will give the fps range choosen
10255by the camera device.<wbr/></p>
10256<p>Switching into or out of this mode may trigger some camera ISP/<wbr/>sensor
10257reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that
10258the application avoids unnecessary scene mode switch as much as possible.<wbr/></p></span>
10259                  </li>
10260                  <li>
10261                    <span class="entry_type_enum_name">HDR (v3.2)</span>
10262                    <span class="entry_type_enum_optional">[optional]</span>
10263                    <span class="entry_type_enum_notes"><p>Turn on a device-specific high dynamic range (HDR) mode.<wbr/></p>
10264<p>In this scene mode,<wbr/> the camera device captures images
10265that keep a larger range of scene illumination levels
10266visible in the final image.<wbr/> For example,<wbr/> when taking a
10267picture of a object in front of a bright window,<wbr/> both
10268the object and the scene through the window may be
10269visible when using HDR mode,<wbr/> while in normal AUTO mode,<wbr/>
10270one or the other may be poorly exposed.<wbr/> As a tradeoff,<wbr/>
10271HDR mode generally takes much longer to capture a single
10272image,<wbr/> has no user control,<wbr/> and may have other artifacts
10273depending on the HDR method used.<wbr/></p>
10274<p>Therefore,<wbr/> HDR captures operate at a much slower rate
10275than regular captures.<wbr/></p>
10276<p>In this mode,<wbr/> on LIMITED or FULL devices,<wbr/> when a request
10277is made with a <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> of
10278STILL_<wbr/>CAPTURE,<wbr/> the camera device will capture an image
10279using a high dynamic range capture technique.<wbr/>  On LEGACY
10280devices,<wbr/> captures that target a JPEG-format output will
10281be captured with HDR,<wbr/> and the capture intent is not
10282relevant.<wbr/></p>
10283<p>The HDR capture may involve the device capturing a burst
10284of images internally and combining them into one,<wbr/> or it
10285may involve the device using specialized high dynamic
10286range capture hardware.<wbr/> In all cases,<wbr/> a single image is
10287produced in response to a capture request submitted
10288while in HDR mode.<wbr/></p>
10289<p>Since substantial post-processing is generally needed to
10290produce an HDR image,<wbr/> only YUV,<wbr/> PRIVATE,<wbr/> and JPEG
10291outputs are supported for LIMITED/<wbr/>FULL device HDR
10292captures,<wbr/> and only JPEG outputs are supported for LEGACY
10293HDR captures.<wbr/> Using a RAW output for HDR capture is not
10294supported.<wbr/></p>
10295<p>Some devices may also support always-on HDR,<wbr/> which
10296applies HDR processing at full frame rate.<wbr/>  For these
10297devices,<wbr/> intents other than STILL_<wbr/>CAPTURE will also
10298produce an HDR output with no frame rate impact compared
10299to normal operation,<wbr/> though the quality may be lower
10300than for STILL_<wbr/>CAPTURE intents.<wbr/></p>
10301<p>If SCENE_<wbr/>MODE_<wbr/>HDR is used with unsupported output types
10302or capture intents,<wbr/> the images captured will be as if
10303the SCENE_<wbr/>MODE was not enabled at all.<wbr/></p></span>
10304                  </li>
10305                  <li>
10306                    <span class="entry_type_enum_name">FACE_PRIORITY_LOW_LIGHT (v3.2)</span>
10307                    <span class="entry_type_enum_optional">[optional]</span>
10308                    <span class="entry_type_enum_hidden">[hidden]</span>
10309                    <span class="entry_type_enum_notes"><p>Same as FACE_<wbr/>PRIORITY scene mode,<wbr/> except that the camera
10310device will choose higher sensitivity values (<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>)
10311under low light conditions.<wbr/></p>
10312<p>The camera device may be tuned to expose the images in a reduced
10313sensitivity range to produce the best quality images.<wbr/> For example,<wbr/>
10314if 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/>
10315the camera device auto-exposure routine tuning process may limit the actual
10316exposure sensitivity range to [100,<wbr/> 1200] to ensure that the noise level isn't
10317exessive in order to preserve the image quality.<wbr/> Under this situation,<wbr/> the image under
10318low light may be under-exposed when the sensor max exposure time (bounded by the
10319<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
10320ON_<wbr/>* modes) and effective max sensitivity are reached.<wbr/> This scene mode allows the
10321camera device auto-exposure routine to increase the sensitivity up to the max
10322sensitivity specified by <a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a> when the scene is too
10323dark and the max exposure time is reached.<wbr/> The captured images may be noisier
10324compared with the images captured in normal FACE_<wbr/>PRIORITY mode; therefore,<wbr/> it is
10325recommended that the application only use this scene mode when it is capable of
10326reducing the noise level of the captured images.<wbr/></p>
10327<p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
10328<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>
10329remain active when FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT is set.<wbr/></p></span>
10330                  </li>
10331                  <li>
10332                    <span class="entry_type_enum_name">DEVICE_CUSTOM_START (v3.2)</span>
10333                    <span class="entry_type_enum_optional">[optional]</span>
10334                    <span class="entry_type_enum_hidden">[hidden]</span>
10335                    <span class="entry_type_enum_value">100</span>
10336                    <span class="entry_type_enum_notes"><p>Scene mode values within the range of
10337<code>[DEVICE_<wbr/>CUSTOM_<wbr/>START,<wbr/> DEVICE_<wbr/>CUSTOM_<wbr/>END]</code> are reserved for device specific
10338customized scene modes.<wbr/></p></span>
10339                  </li>
10340                  <li>
10341                    <span class="entry_type_enum_name">DEVICE_CUSTOM_END (v3.2)</span>
10342                    <span class="entry_type_enum_optional">[optional]</span>
10343                    <span class="entry_type_enum_hidden">[hidden]</span>
10344                    <span class="entry_type_enum_value">127</span>
10345                    <span class="entry_type_enum_notes"><p>Scene mode values within the range of
10346<code>[DEVICE_<wbr/>CUSTOM_<wbr/>START,<wbr/> DEVICE_<wbr/>CUSTOM_<wbr/>END]</code> are reserved for device specific
10347customized scene modes.<wbr/></p></span>
10348                  </li>
10349                </ul>
10350
10351            </td> <!-- entry_type -->
10352
10353            <td class="entry_description">
10354              <p>Control for which scene mode is currently active.<wbr/></p>
10355            </td>
10356
10357            <td class="entry_units">
10358            </td>
10359
10360            <td class="entry_range">
10361              <p><a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a></p>
10362            </td>
10363
10364            <td class="entry_hal_version">
10365              <p>3.<wbr/>2</p>
10366            </td>
10367
10368            <td class="entry_tags">
10369              <ul class="entry_tags">
10370                  <li><a href="#tag_BC">BC</a></li>
10371              </ul>
10372            </td>
10373
10374          </tr>
10375          <tr class="entries_header">
10376            <th class="th_details" colspan="6">Details</th>
10377          </tr>
10378          <tr class="entry_cont">
10379            <td class="entry_details" colspan="6">
10380              <p>Scene modes are custom camera modes optimized for a certain set of conditions and
10381capture settings.<wbr/></p>
10382<p>This is the mode that that is active when
10383<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
10384disable <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>
10385while in use.<wbr/></p>
10386<p>The interpretation and implementation of these scene modes is left
10387to the implementor of the camera device.<wbr/> Their behavior will not be
10388consistent across all devices,<wbr/> and any given device may only implement
10389a subset of these modes.<wbr/></p>
10390            </td>
10391          </tr>
10392
10393          <tr class="entries_header">
10394            <th class="th_details" colspan="6">HAL Implementation Details</th>
10395          </tr>
10396          <tr class="entry_cont">
10397            <td class="entry_details" colspan="6">
10398              <p>HAL implementations that include scene modes are expected to provide
10399the per-scene settings to use for <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
10400<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
10401<a href="#static_android.control.sceneModeOverrides">android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides</a>.<wbr/></p>
10402<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
10403HAL must list supported video size and fps range in
10404<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/>
10405if the HAL has two different sensor configurations for normal streaming mode and high
10406speed streaming,<wbr/> when this scene mode is set/<wbr/>reset in a sequence of capture requests,<wbr/> the
10407HAL may have to switch between different sensor modes.<wbr/>  This mode is deprecated in legacy
10408HAL3.<wbr/>3,<wbr/> to support high speed video recording,<wbr/> please implement
10409<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
10410capbility defined in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
10411            </td>
10412          </tr>
10413
10414          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10415           <!-- end of entry -->
10416
10417
10418          <tr class="entry" id="dynamic_android.control.videoStabilizationMode">
10419            <td class="entry_name
10420             " rowspan="3">
10421              android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode
10422            </td>
10423            <td class="entry_type">
10424                <span class="entry_type_name entry_type_name_enum">byte</span>
10425
10426              <span class="entry_type_visibility"> [public]</span>
10427
10428
10429              <span class="entry_type_hwlevel">[legacy] </span>
10430
10431
10432
10433                <ul class="entry_type_enum">
10434                  <li>
10435                    <span class="entry_type_enum_name">OFF (v3.2)</span>
10436                    <span class="entry_type_enum_notes"><p>Video stabilization is disabled.<wbr/></p></span>
10437                  </li>
10438                  <li>
10439                    <span class="entry_type_enum_name">ON (v3.2)</span>
10440                    <span class="entry_type_enum_notes"><p>Video stabilization is enabled.<wbr/></p></span>
10441                  </li>
10442                </ul>
10443
10444            </td> <!-- entry_type -->
10445
10446            <td class="entry_description">
10447              <p>Whether video stabilization is
10448active.<wbr/></p>
10449            </td>
10450
10451            <td class="entry_units">
10452            </td>
10453
10454            <td class="entry_range">
10455            </td>
10456
10457            <td class="entry_hal_version">
10458              <p>3.<wbr/>2</p>
10459            </td>
10460
10461            <td class="entry_tags">
10462              <ul class="entry_tags">
10463                  <li><a href="#tag_BC">BC</a></li>
10464              </ul>
10465            </td>
10466
10467          </tr>
10468          <tr class="entries_header">
10469            <th class="th_details" colspan="6">Details</th>
10470          </tr>
10471          <tr class="entry_cont">
10472            <td class="entry_details" colspan="6">
10473              <p>Video stabilization automatically warps images from
10474the camera in order to stabilize motion between consecutive frames.<wbr/></p>
10475<p>If enabled,<wbr/> video stabilization can modify the
10476<a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> to keep the video stream stabilized.<wbr/></p>
10477<p>Switching between different video stabilization modes may take several
10478frames to initialize,<wbr/> the camera device will report the current mode
10479in capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/>
10480the video stabilization modes in the first several capture results may
10481still be "OFF",<wbr/> and it will become "ON" when the initialization is
10482done.<wbr/></p>
10483<p>In addition,<wbr/> not all recording sizes or frame rates may be supported for
10484stabilization by a device that reports stabilization support.<wbr/> It is guaranteed
10485that an output targeting a MediaRecorder or MediaCodec will be stabilized if
10486the recording resolution is less than or equal to 1920 x 1080 (width less than
10487or equal to 1920,<wbr/> height less than or equal to 1080),<wbr/> and the recording
10488frame rate is less than or equal to 30fps.<wbr/>  At other sizes,<wbr/> the CaptureResult
10489<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a> field will return
10490OFF if the recording output is not stabilized,<wbr/> or if there are no output
10491Surface types that can be stabilized.<wbr/></p>
10492<p>If a camera device supports both this mode and OIS
10493(<a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may
10494produce undesirable interaction,<wbr/> so it is recommended not to enable
10495both at the same time.<wbr/></p>
10496            </td>
10497          </tr>
10498
10499
10500          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10501           <!-- end of entry -->
10502
10503
10504          <tr class="entry" id="dynamic_android.control.postRawSensitivityBoost">
10505            <td class="entry_name
10506             " rowspan="3">
10507              android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost
10508            </td>
10509            <td class="entry_type">
10510                <span class="entry_type_name">int32</span>
10511
10512              <span class="entry_type_visibility"> [public]</span>
10513
10514
10515
10516
10517
10518
10519            </td> <!-- entry_type -->
10520
10521            <td class="entry_description">
10522              <p>The amount of additional sensitivity boost applied to output images
10523after RAW sensor data is captured.<wbr/></p>
10524            </td>
10525
10526            <td class="entry_units">
10527              ISO arithmetic units,<wbr/> the same as android.<wbr/>sensor.<wbr/>sensitivity
10528            </td>
10529
10530            <td class="entry_range">
10531              <p><a href="#static_android.control.postRawSensitivityBoostRange">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost<wbr/>Range</a></p>
10532            </td>
10533
10534            <td class="entry_hal_version">
10535              <p>3.<wbr/>2</p>
10536            </td>
10537
10538            <td class="entry_tags">
10539            </td>
10540
10541          </tr>
10542          <tr class="entries_header">
10543            <th class="th_details" colspan="6">Details</th>
10544          </tr>
10545          <tr class="entry_cont">
10546            <td class="entry_details" colspan="6">
10547              <p>Some camera devices support additional digital sensitivity boosting in the
10548camera processing pipeline after sensor RAW image is captured.<wbr/>
10549Such a boost will be applied to YUV/<wbr/>JPEG format output images but will not
10550have effect on RAW output formats like RAW_<wbr/>SENSOR,<wbr/> RAW10,<wbr/> RAW12 or RAW_<wbr/>OPAQUE.<wbr/></p>
10551<p>This key will be <code>null</code> for devices that do not support any RAW format
10552outputs.<wbr/> For devices that do support RAW format outputs,<wbr/> this key will always
10553present,<wbr/> and if a device does not support post RAW sensitivity boost,<wbr/> it will
10554list <code>100</code> in this key.<wbr/></p>
10555<p>If the camera device cannot apply the exact boost requested,<wbr/> it will reduce the
10556boost to the nearest supported value.<wbr/>
10557The final boost value used will be available in the output capture result.<wbr/></p>
10558<p>For devices that support post RAW sensitivity boost,<wbr/> the YUV/<wbr/>JPEG output images
10559of such device will have the total sensitivity of
10560<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>
10561The sensitivity of RAW format images will always be <code><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></code></p>
10562<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
10563OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
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.enableZsl">
10573            <td class="entry_name
10574             " rowspan="5">
10575              android.<wbr/>control.<wbr/>enable<wbr/>Zsl
10576            </td>
10577            <td class="entry_type">
10578                <span class="entry_type_name entry_type_name_enum">byte</span>
10579
10580              <span class="entry_type_visibility"> [public as boolean]</span>
10581
10582
10583
10584
10585
10586                <ul class="entry_type_enum">
10587                  <li>
10588                    <span class="entry_type_enum_name">FALSE (v3.2)</span>
10589                    <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
10590after previous requests.<wbr/></p></span>
10591                  </li>
10592                  <li>
10593                    <span class="entry_type_enum_name">TRUE (v3.2)</span>
10594                    <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
10595captured before previous requests.<wbr/></p></span>
10596                  </li>
10597                </ul>
10598
10599            </td> <!-- entry_type -->
10600
10601            <td class="entry_description">
10602              <p>Allow camera device to enable zero-shutter-lag mode for requests with
10603<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE.<wbr/></p>
10604            </td>
10605
10606            <td class="entry_units">
10607            </td>
10608
10609            <td class="entry_range">
10610            </td>
10611
10612            <td class="entry_hal_version">
10613              <p>3.<wbr/>2</p>
10614            </td>
10615
10616            <td class="entry_tags">
10617            </td>
10618
10619          </tr>
10620          <tr class="entries_header">
10621            <th class="th_details" colspan="6">Details</th>
10622          </tr>
10623          <tr class="entry_cont">
10624            <td class="entry_details" colspan="6">
10625              <p>If enableZsl is <code>true</code>,<wbr/> the camera device may enable zero-shutter-lag mode for requests with
10626STILL_<wbr/>CAPTURE capture intent.<wbr/> The camera device may use images captured in the past to
10627produce output images for a zero-shutter-lag request.<wbr/> The result metadata including the
10628<a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a> reflects the source frames used to produce output images.<wbr/>
10629Therefore,<wbr/> the contents of the output images and the result metadata may be out of order
10630compared to previous regular requests.<wbr/> enableZsl does not affect requests with other
10631capture intents.<wbr/></p>
10632<p>For example,<wbr/> when requests are submitted in the following order:
10633  Request A: enableZsl is ON,<wbr/> <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> is PREVIEW
10634  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>
10635<p>The output images for request B may have contents captured before the output images for
10636request A,<wbr/> and the result metadata for request B may be older than the result metadata for
10637request A.<wbr/></p>
10638<p>Note that when enableZsl is <code>true</code>,<wbr/> it is not guaranteed to get output images captured in
10639the past for requests with STILL_<wbr/>CAPTURE capture intent.<wbr/></p>
10640<p>For applications targeting SDK versions O and newer,<wbr/> the value of enableZsl in
10641TEMPLATE_<wbr/>STILL_<wbr/>CAPTURE template may be <code>true</code>.<wbr/> The value in other templates is always
10642<code>false</code> if present.<wbr/></p>
10643<p>For applications targeting SDK versions older than O,<wbr/> the value of enableZsl in all
10644capture templates is always <code>false</code> if present.<wbr/></p>
10645<p>For application-operated ZSL,<wbr/> use CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p>
10646            </td>
10647          </tr>
10648
10649          <tr class="entries_header">
10650            <th class="th_details" colspan="6">HAL Implementation Details</th>
10651          </tr>
10652          <tr class="entry_cont">
10653            <td class="entry_details" colspan="6">
10654              <p>It is valid for HAL to produce regular output images for requests with STILL_<wbr/>CAPTURE
10655capture intent.<wbr/></p>
10656            </td>
10657          </tr>
10658
10659          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10660           <!-- end of entry -->
10661
10662
10663          <tr class="entry" id="dynamic_android.control.afSceneChange">
10664            <td class="entry_name
10665             " rowspan="3">
10666              android.<wbr/>control.<wbr/>af<wbr/>Scene<wbr/>Change
10667            </td>
10668            <td class="entry_type">
10669                <span class="entry_type_name entry_type_name_enum">byte</span>
10670
10671              <span class="entry_type_visibility"> [public]</span>
10672
10673
10674
10675
10676
10677                <ul class="entry_type_enum">
10678                  <li>
10679                    <span class="entry_type_enum_name">NOT_DETECTED (v3.3)</span>
10680                    <span class="entry_type_enum_notes"><p>Scene change is not detected within the AF region(s).<wbr/></p></span>
10681                  </li>
10682                  <li>
10683                    <span class="entry_type_enum_name">DETECTED (v3.3)</span>
10684                    <span class="entry_type_enum_notes"><p>Scene change is detected within the AF region(s).<wbr/></p></span>
10685                  </li>
10686                </ul>
10687
10688            </td> <!-- entry_type -->
10689
10690            <td class="entry_description">
10691              <p>Whether a significant scene change is detected within the currently-set AF
10692region(s).<wbr/></p>
10693            </td>
10694
10695            <td class="entry_units">
10696            </td>
10697
10698            <td class="entry_range">
10699            </td>
10700
10701            <td class="entry_hal_version">
10702              <p>3.<wbr/>3</p>
10703            </td>
10704
10705            <td class="entry_tags">
10706            </td>
10707
10708          </tr>
10709          <tr class="entries_header">
10710            <th class="th_details" colspan="6">Details</th>
10711          </tr>
10712          <tr class="entry_cont">
10713            <td class="entry_details" colspan="6">
10714              <p>When the camera focus routine detects a change in the scene it is looking at,<wbr/>
10715such as a large shift in camera viewpoint,<wbr/> significant motion in the scene,<wbr/> or a
10716significant illumination change,<wbr/> this value will be set to DETECTED for a single capture
10717result.<wbr/> Otherwise the value will be NOT_<wbr/>DETECTED.<wbr/> The threshold for detection is similar
10718to what would trigger a new passive focus scan to begin in CONTINUOUS autofocus modes.<wbr/></p>
10719<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>
10720            </td>
10721          </tr>
10722
10723
10724          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10725           <!-- end of entry -->
10726
10727
10728          <tr class="entry" id="dynamic_android.control.extendedSceneMode">
10729            <td class="entry_name
10730             " rowspan="3">
10731              android.<wbr/>control.<wbr/>extended<wbr/>Scene<wbr/>Mode
10732            </td>
10733            <td class="entry_type">
10734                <span class="entry_type_name entry_type_name_enum">byte</span>
10735
10736              <span class="entry_type_visibility"> [public]</span>
10737
10738
10739
10740
10741
10742                <ul class="entry_type_enum">
10743                  <li>
10744                    <span class="entry_type_enum_name">DISABLED (v3.5)</span>
10745                    <span class="entry_type_enum_value">0</span>
10746                    <span class="entry_type_enum_notes"><p>Extended scene mode is disabled.<wbr/></p></span>
10747                  </li>
10748                  <li>
10749                    <span class="entry_type_enum_name">BOKEH_STILL_CAPTURE (v3.5)</span>
10750                    <span class="entry_type_enum_notes"><p>High quality bokeh mode is enabled for all non-raw streams (including YUV,<wbr/>
10751JPEG,<wbr/> and IMPLEMENTATION_<wbr/>DEFINED) when capture intent is STILL_<wbr/>CAPTURE.<wbr/> Due to the
10752extra image processing,<wbr/> this mode may introduce additional stall to non-raw streams.<wbr/>
10753This mode should be used in high quality still capture use case.<wbr/></p></span>
10754                  </li>
10755                  <li>
10756                    <span class="entry_type_enum_name">BOKEH_CONTINUOUS (v3.5)</span>
10757                    <span class="entry_type_enum_notes"><p>Bokeh effect must not slow down capture rate relative to sensor raw output,<wbr/>
10758and the effect is applied to all processed streams no larger than the maximum
10759streaming dimension.<wbr/> This mode should be used if performance and power are a
10760priority,<wbr/> such as video recording.<wbr/></p></span>
10761                  </li>
10762                  <li>
10763                    <span class="entry_type_enum_name">VENDOR_START (v3.5)</span>
10764                    <span class="entry_type_enum_hidden">[hidden]</span>
10765                    <span class="entry_type_enum_value">0x40</span>
10766                    <span class="entry_type_enum_notes"><p>Vendor defined extended scene modes.<wbr/> These depend on vendor implementation.<wbr/></p></span>
10767                  </li>
10768                </ul>
10769
10770            </td> <!-- entry_type -->
10771
10772            <td class="entry_description">
10773              <p>Whether extended scene mode is enabled for a particular capture request.<wbr/></p>
10774            </td>
10775
10776            <td class="entry_units">
10777            </td>
10778
10779            <td class="entry_range">
10780            </td>
10781
10782            <td class="entry_hal_version">
10783              <p>3.<wbr/>5</p>
10784            </td>
10785
10786            <td class="entry_tags">
10787            </td>
10788
10789          </tr>
10790          <tr class="entries_header">
10791            <th class="th_details" colspan="6">Details</th>
10792          </tr>
10793          <tr class="entry_cont">
10794            <td class="entry_details" colspan="6">
10795              <p>With bokeh mode,<wbr/> the camera device may blur out the parts of scene that are not in
10796focus,<wbr/> creating a bokeh (or shallow depth of field) effect for people or objects.<wbr/></p>
10797<p>When set to BOKEH_<wbr/>STILL_<wbr/>CAPTURE mode with STILL_<wbr/>CAPTURE capture intent,<wbr/> due to the extra
10798processing needed for high quality bokeh effect,<wbr/> the stall may be longer than when
10799capture intent is not STILL_<wbr/>CAPTURE.<wbr/></p>
10800<p>When set to BOKEH_<wbr/>STILL_<wbr/>CAPTURE mode with PREVIEW capture intent,<wbr/></p>
10801<ul>
10802<li>If the camera device has BURST_<wbr/>CAPTURE capability,<wbr/> the frame rate requirement of
10803BURST_<wbr/>CAPTURE must still be met.<wbr/></li>
10804<li>All streams not larger than the maximum streaming dimension for BOKEH_<wbr/>STILL_<wbr/>CAPTURE mode
10805(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>)
10806will have preview bokeh effect applied.<wbr/></li>
10807</ul>
10808<p>When set to BOKEH_<wbr/>CONTINUOUS mode,<wbr/> configured streams dimension should not exceed this mode's
10809maximum streaming dimension in order to have bokeh effect applied.<wbr/> Bokeh effect may not
10810be available for streams larger than the maximum streaming dimension.<wbr/></p>
10811<p>Switching between different extended scene modes may involve reconfiguration of the camera
10812pipeline,<wbr/> resulting in long latency.<wbr/> The application should check this key against the
10813available session keys queried via
10814<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableSessionKeys">CameraCharacteristics#getAvailableSessionKeys</a>.<wbr/></p>
10815<p>For a logical multi-camera,<wbr/> bokeh may be implemented by stereo vision from sub-cameras
10816with different field of view.<wbr/> As a result,<wbr/> when bokeh mode is enabled,<wbr/> the camera device
10817may 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
10818view may be smaller than when bokeh mode is off.<wbr/></p>
10819            </td>
10820          </tr>
10821
10822
10823          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10824           <!-- end of entry -->
10825
10826
10827          <tr class="entry" id="dynamic_android.control.zoomRatio">
10828            <td class="entry_name
10829             " rowspan="5">
10830              android.<wbr/>control.<wbr/>zoom<wbr/>Ratio
10831            </td>
10832            <td class="entry_type">
10833                <span class="entry_type_name">float</span>
10834
10835              <span class="entry_type_visibility"> [public]</span>
10836
10837
10838              <span class="entry_type_hwlevel">[limited] </span>
10839
10840
10841
10842
10843            </td> <!-- entry_type -->
10844
10845            <td class="entry_description">
10846              <p>The desired zoom ratio</p>
10847            </td>
10848
10849            <td class="entry_units">
10850            </td>
10851
10852            <td class="entry_range">
10853              <p><a href="#static_android.control.zoomRatioRange">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio<wbr/>Range</a></p>
10854            </td>
10855
10856            <td class="entry_hal_version">
10857              <p>3.<wbr/>5</p>
10858            </td>
10859
10860            <td class="entry_tags">
10861            </td>
10862
10863          </tr>
10864          <tr class="entries_header">
10865            <th class="th_details" colspan="6">Details</th>
10866          </tr>
10867          <tr class="entry_cont">
10868            <td class="entry_details" colspan="6">
10869              <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
10870use this tag to specify the desired zoom level.<wbr/></p>
10871<p>By using this control,<wbr/> the application gains a simpler way to control zoom,<wbr/> which can
10872be a combination of optical and digital zoom.<wbr/> For example,<wbr/> a multi-camera system may
10873contain more than one lens with different focal lengths,<wbr/> and the user can use optical
10874zoom by switching between lenses.<wbr/> Using zoomRatio has benefits in the scenarios below:</p>
10875<ul>
10876<li>Zooming in from a wide-angle lens to a telephoto lens: A floating-point ratio provides
10877  better precision compared to an integer value of <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></li>
10878<li>Zooming out from a wide lens to an ultrawide lens: zoomRatio supports zoom-out whereas
10879  <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> doesn't.<wbr/></li>
10880</ul>
10881<p>To illustrate,<wbr/> here are several scenarios of different zoom ratios,<wbr/> crop regions,<wbr/>
10882and output streams,<wbr/> for a hypothetical camera device with an active array of size
10883<code>(2000,<wbr/>1500)</code>.<wbr/></p>
10884<ul>
10885<li>Camera Configuration:<ul>
10886<li>Active array size: <code>2000x1500</code> (3 MP,<wbr/> 4:3 aspect ratio)</li>
10887<li>Output stream #1: <code>640x480</code> (VGA,<wbr/> 4:3 aspect ratio)</li>
10888<li>Output stream #2: <code>1280x720</code> (720p,<wbr/> 16:9 aspect ratio)</li>
10889</ul>
10890</li>
10891<li>Case #1: 4:3 crop region with 2.<wbr/>0x zoom ratio<ul>
10892<li>Zoomed field of view: 1/<wbr/>4 of original field of view</li>
10893<li>Crop region: <code>Rect(0,<wbr/> 0,<wbr/> 2000,<wbr/> 1500) //<wbr/> (left,<wbr/> top,<wbr/> right,<wbr/> bottom)</code> (post zoom)</li>
10894</ul>
10895</li>
10896<li><img alt="4:3 aspect ratio crop diagram" src="images/camera2/metadata/android.control.zoomRatio/zoom-ratio-2-crop-43.png"/><ul>
10897<li><code>640x480</code> stream source area: <code>(0,<wbr/> 0,<wbr/> 2000,<wbr/> 1500)</code> (equal to crop region)</li>
10898<li><code>1280x720</code> stream source area: <code>(0,<wbr/> 187,<wbr/> 2000,<wbr/> 1312)</code> (letterboxed)</li>
10899</ul>
10900</li>
10901<li>Case #2: 16:9 crop region with 2.<wbr/>0x zoom.<wbr/><ul>
10902<li>Zoomed field of view: 1/<wbr/>4 of original field of view</li>
10903<li>Crop region: <code>Rect(0,<wbr/> 187,<wbr/> 2000,<wbr/> 1312)</code></li>
10904<li><img alt="16:9 aspect ratio crop diagram" src="images/camera2/metadata/android.control.zoomRatio/zoom-ratio-2-crop-169.png"/></li>
10905<li><code>640x480</code> stream source area: <code>(250,<wbr/> 187,<wbr/> 1750,<wbr/> 1312)</code> (pillarboxed)</li>
10906<li><code>1280x720</code> stream source area: <code>(0,<wbr/> 187,<wbr/> 2000,<wbr/> 1312)</code> (equal to crop region)</li>
10907</ul>
10908</li>
10909<li>Case #3: 1:1 crop region with 0.<wbr/>5x zoom out to ultrawide lens.<wbr/><ul>
10910<li>Zoomed field of view: 4x of original field of view (switched from wide lens to ultrawide lens)</li>
10911<li>Crop region: <code>Rect(250,<wbr/> 0,<wbr/> 1750,<wbr/> 1500)</code></li>
10912<li><img alt="1:1 aspect ratio crop diagram" src="images/camera2/metadata/android.control.zoomRatio/zoom-ratio-0.5-crop-11.png"/></li>
10913<li><code>640x480</code> stream source area: <code>(250,<wbr/> 187,<wbr/> 1750,<wbr/> 1312)</code> (letterboxed)</li>
10914<li><code>1280x720</code> stream source area: <code>(250,<wbr/> 328,<wbr/> 1750,<wbr/> 1172)</code> (letterboxed)</li>
10915</ul>
10916</li>
10917</ul>
10918<p>As seen from the graphs above,<wbr/> the coordinate system of cropRegion now changes to the
10919effective after-zoom field-of-view,<wbr/> and is represented by the rectangle of (0,<wbr/> 0,<wbr/>
10920activeArrayWith,<wbr/> activeArrayHeight).<wbr/> The same applies to AE/<wbr/>AWB/<wbr/>AF regions,<wbr/> and faces.<wbr/>
10921This coordinate system change isn't applicable to RAW capture and its related
10922metadata such as intrinsicCalibration and lensShadingMap.<wbr/></p>
10923<p>Using the same hypothetical example above,<wbr/> and assuming output stream #1 (640x480) is
10924the viewfinder stream,<wbr/> the application can achieve 2.<wbr/>0x zoom in one of two ways:</p>
10925<ul>
10926<li>zoomRatio = 2.<wbr/>0,<wbr/> scaler.<wbr/>cropRegion = (0,<wbr/> 0,<wbr/> 2000,<wbr/> 1500)</li>
10927<li>zoomRatio = 1.<wbr/>0 (default),<wbr/> scaler.<wbr/>cropRegion = (500,<wbr/> 375,<wbr/> 1500,<wbr/> 1125)</li>
10928</ul>
10929<p>If the application intends to set aeRegions to be top-left quarter of the viewfinder
10930field-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
10931zoomRatio set to 2.<wbr/>0.<wbr/> Alternatively,<wbr/> the application can set aeRegions to the equivalent
10932region of (500,<wbr/> 375,<wbr/> 1000,<wbr/> 750) for zoomRatio of 1.<wbr/>0.<wbr/> If the application doesn't
10933explicitly 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>
10934<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>
10935must only be used for letterboxing or pillarboxing of the sensor active array,<wbr/> and no
10936FREEFORM 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
10937<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
10938windowboxing,<wbr/> the camera framework will override the <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> to be
10939the active array.<wbr/></p>
10940<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
10941value != 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
10942effective zoom ratio achieved by the camera device,<wbr/> and the <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>
10943adjusts for additional crops that are not zoom related.<wbr/> Otherwise,<wbr/> if the application
10944sets <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
10945<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>
10946<p>When the application requests a physical stream for a logical multi-camera,<wbr/> the
10947<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
10948the <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
10949physical camera device.<wbr/></p>
10950            </td>
10951          </tr>
10952
10953          <tr class="entries_header">
10954            <th class="th_details" colspan="6">HAL Implementation Details</th>
10955          </tr>
10956          <tr class="entry_cont">
10957            <td class="entry_details" colspan="6">
10958              <p>For all capture request templates,<wbr/> this field must be set to 1.<wbr/>0 in order to have
10959consistent field of views between different modes.<wbr/></p>
10960            </td>
10961          </tr>
10962
10963          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10964           <!-- end of entry -->
10965
10966
10967
10968      <!-- end of kind -->
10969      </tbody>
10970
10971  <!-- end of section -->
10972  <tr><td colspan="7" id="section_demosaic" class="section">demosaic</td></tr>
10973
10974
10975      <tr><td colspan="7" class="kind">controls</td></tr>
10976
10977      <thead class="entries_header">
10978        <tr>
10979          <th class="th_name">Property Name</th>
10980          <th class="th_type">Type</th>
10981          <th class="th_description">Description</th>
10982          <th class="th_units">Units</th>
10983          <th class="th_range">Range</th>
10984          <th class="th_hal_version">Initial HIDL HAL version</th>
10985          <th class="th_tags">Tags</th>
10986        </tr>
10987      </thead>
10988
10989      <tbody>
10990
10991
10992
10993
10994
10995
10996
10997
10998
10999
11000          <tr class="entry" id="controls_android.demosaic.mode">
11001            <td class="entry_name
11002             " rowspan="1">
11003              android.<wbr/>demosaic.<wbr/>mode
11004            </td>
11005            <td class="entry_type">
11006                <span class="entry_type_name entry_type_name_enum">byte</span>
11007
11008              <span class="entry_type_visibility"> [system]</span>
11009
11010
11011
11012
11013
11014                <ul class="entry_type_enum">
11015                  <li>
11016                    <span class="entry_type_enum_name">FAST (v3.2)</span>
11017                    <span class="entry_type_enum_notes"><p>Minimal or no slowdown of frame rate compared to
11018Bayer RAW output.<wbr/></p></span>
11019                  </li>
11020                  <li>
11021                    <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
11022                    <span class="entry_type_enum_notes"><p>Improved processing quality but the frame rate might be slowed down
11023relative to raw output.<wbr/></p></span>
11024                  </li>
11025                </ul>
11026
11027            </td> <!-- entry_type -->
11028
11029            <td class="entry_description">
11030              <p>Controls the quality of the demosaicing
11031processing.<wbr/></p>
11032            </td>
11033
11034            <td class="entry_units">
11035            </td>
11036
11037            <td class="entry_range">
11038            </td>
11039
11040            <td class="entry_hal_version">
11041              <p>3.<wbr/>2</p>
11042            </td>
11043
11044            <td class="entry_tags">
11045              <ul class="entry_tags">
11046                  <li><a href="#tag_FUTURE">FUTURE</a></li>
11047              </ul>
11048            </td>
11049
11050          </tr>
11051
11052
11053          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11054           <!-- end of entry -->
11055
11056
11057
11058      <!-- end of kind -->
11059      </tbody>
11060
11061  <!-- end of section -->
11062  <tr><td colspan="7" id="section_edge" class="section">edge</td></tr>
11063
11064
11065      <tr><td colspan="7" class="kind">controls</td></tr>
11066
11067      <thead class="entries_header">
11068        <tr>
11069          <th class="th_name">Property Name</th>
11070          <th class="th_type">Type</th>
11071          <th class="th_description">Description</th>
11072          <th class="th_units">Units</th>
11073          <th class="th_range">Range</th>
11074          <th class="th_hal_version">Initial HIDL HAL version</th>
11075          <th class="th_tags">Tags</th>
11076        </tr>
11077      </thead>
11078
11079      <tbody>
11080
11081
11082
11083
11084
11085
11086
11087
11088
11089
11090          <tr class="entry" id="controls_android.edge.mode">
11091            <td class="entry_name
11092             " rowspan="5">
11093              android.<wbr/>edge.<wbr/>mode
11094            </td>
11095            <td class="entry_type">
11096                <span class="entry_type_name entry_type_name_enum">byte</span>
11097
11098              <span class="entry_type_visibility"> [public]</span>
11099
11100
11101              <span class="entry_type_hwlevel">[full] </span>
11102
11103
11104
11105                <ul class="entry_type_enum">
11106                  <li>
11107                    <span class="entry_type_enum_name">OFF (v3.2)</span>
11108                    <span class="entry_type_enum_notes"><p>No edge enhancement is applied.<wbr/></p></span>
11109                  </li>
11110                  <li>
11111                    <span class="entry_type_enum_name">FAST (v3.2)</span>
11112                    <span class="entry_type_enum_notes"><p>Apply edge enhancement at a quality level that does not slow down frame rate
11113relative to sensor output.<wbr/> It may be the same as OFF if edge enhancement will
11114slow down frame rate relative to sensor.<wbr/></p></span>
11115                  </li>
11116                  <li>
11117                    <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
11118                    <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>
11119                  </li>
11120                  <li>
11121                    <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span>
11122                    <span class="entry_type_enum_optional">[optional]</span>
11123                    <span class="entry_type_enum_notes"><p>Edge enhancement is applied at different
11124levels for different output streams,<wbr/> based on resolution.<wbr/> Streams at maximum recording
11125resolution (see <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">CameraDevice#createCaptureSession</a>)
11126or below have edge enhancement applied,<wbr/> while higher-resolution streams have no edge
11127enhancement applied.<wbr/> The level of edge enhancement for low-resolution streams is tuned
11128so that frame rate is not impacted,<wbr/> and the quality is equal to or better than FAST
11129(since it is only applied to lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p>
11130<p>This mode is intended to be used by applications operating in a zero-shutter-lag mode
11131with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures
11132high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is
11133produced via reprocessing when a user takes a picture.<wbr/>  For such a use case,<wbr/> the
11134high-resolution buffers must not have edge enhancement applied to maximize efficiency of
11135preview and to avoid double-applying enhancement when reprocessed,<wbr/> while low-resolution
11136buffers (used for recording or preview,<wbr/> generally) need edge enhancement applied for
11137reasonable preview quality.<wbr/></p>
11138<p>This mode is guaranteed to be supported by devices that support either the
11139YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities
11140(<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will
11141be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span>
11142                  </li>
11143                </ul>
11144
11145            </td> <!-- entry_type -->
11146
11147            <td class="entry_description">
11148              <p>Operation mode for edge
11149enhancement.<wbr/></p>
11150            </td>
11151
11152            <td class="entry_units">
11153            </td>
11154
11155            <td class="entry_range">
11156              <p><a href="#static_android.edge.availableEdgeModes">android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes</a></p>
11157            </td>
11158
11159            <td class="entry_hal_version">
11160              <p>3.<wbr/>2</p>
11161            </td>
11162
11163            <td class="entry_tags">
11164              <ul class="entry_tags">
11165                  <li><a href="#tag_V1">V1</a></li>
11166                  <li><a href="#tag_REPROC">REPROC</a></li>
11167              </ul>
11168            </td>
11169
11170          </tr>
11171          <tr class="entries_header">
11172            <th class="th_details" colspan="6">Details</th>
11173          </tr>
11174          <tr class="entry_cont">
11175            <td class="entry_details" colspan="6">
11176              <p>Edge enhancement improves sharpness and details in the captured image.<wbr/> OFF means
11177no enhancement will be applied by the camera device.<wbr/></p>
11178<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined enhancement
11179will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the
11180camera device will use the highest-quality enhancement algorithms,<wbr/>
11181even if it slows down capture rate.<wbr/> FAST means the camera device will
11182not slow down capture rate when applying edge enhancement.<wbr/> FAST may be the same as OFF if
11183edge enhancement will slow down capture rate.<wbr/> Every output stream will have a similar
11184amount of enhancement applied.<wbr/></p>
11185<p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular
11186buffer of high-resolution images during preview and reprocess image(s) from that buffer
11187into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies
11188edge enhancement to low-resolution streams (below maximum recording resolution) to
11189maximize preview quality,<wbr/> but does not apply edge enhancement to high-resolution streams,<wbr/>
11190since those will be reprocessed later if necessary.<wbr/></p>
11191<p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera
11192device will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV-domain edge enhancement,<wbr/> respectively.<wbr/>
11193The camera device may adjust its internal edge enhancement parameters for best
11194image 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>
11195            </td>
11196          </tr>
11197
11198          <tr class="entries_header">
11199            <th class="th_details" colspan="6">HAL Implementation Details</th>
11200          </tr>
11201          <tr class="entry_cont">
11202            <td class="entry_details" colspan="6">
11203              <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
11204adjust the internal edge enhancement reduction parameters appropriately to get the best
11205quality images.<wbr/></p>
11206            </td>
11207          </tr>
11208
11209          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11210           <!-- end of entry -->
11211
11212
11213          <tr class="entry" id="controls_android.edge.strength">
11214            <td class="entry_name
11215             " rowspan="1">
11216              android.<wbr/>edge.<wbr/>strength
11217            </td>
11218            <td class="entry_type">
11219                <span class="entry_type_name">byte</span>
11220
11221              <span class="entry_type_visibility"> [system]</span>
11222
11223
11224
11225
11226
11227
11228            </td> <!-- entry_type -->
11229
11230            <td class="entry_description">
11231              <p>Control the amount of edge enhancement
11232applied to the images</p>
11233            </td>
11234
11235            <td class="entry_units">
11236              1-10; 10 is maximum sharpening
11237            </td>
11238
11239            <td class="entry_range">
11240            </td>
11241
11242            <td class="entry_hal_version">
11243              <p>3.<wbr/>2</p>
11244            </td>
11245
11246            <td class="entry_tags">
11247              <ul class="entry_tags">
11248                  <li><a href="#tag_FUTURE">FUTURE</a></li>
11249              </ul>
11250            </td>
11251
11252          </tr>
11253
11254
11255          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11256           <!-- end of entry -->
11257
11258
11259
11260      <!-- end of kind -->
11261      </tbody>
11262      <tr><td colspan="7" class="kind">static</td></tr>
11263
11264      <thead class="entries_header">
11265        <tr>
11266          <th class="th_name">Property Name</th>
11267          <th class="th_type">Type</th>
11268          <th class="th_description">Description</th>
11269          <th class="th_units">Units</th>
11270          <th class="th_range">Range</th>
11271          <th class="th_hal_version">Initial HIDL HAL version</th>
11272          <th class="th_tags">Tags</th>
11273        </tr>
11274      </thead>
11275
11276      <tbody>
11277
11278
11279
11280
11281
11282
11283
11284
11285
11286
11287          <tr class="entry" id="static_android.edge.availableEdgeModes">
11288            <td class="entry_name
11289             " rowspan="5">
11290              android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes
11291            </td>
11292            <td class="entry_type">
11293                <span class="entry_type_name">byte</span>
11294                <span class="entry_type_container">x</span>
11295
11296                <span class="entry_type_array">
11297                  n
11298                </span>
11299              <span class="entry_type_visibility"> [public as enumList]</span>
11300
11301
11302              <span class="entry_type_hwlevel">[full] </span>
11303
11304
11305                <div class="entry_type_notes">list of enums</div>
11306
11307
11308            </td> <!-- entry_type -->
11309
11310            <td class="entry_description">
11311              <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
11312device.<wbr/></p>
11313            </td>
11314
11315            <td class="entry_units">
11316            </td>
11317
11318            <td class="entry_range">
11319              <p>Any value listed in <a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></p>
11320            </td>
11321
11322            <td class="entry_hal_version">
11323              <p>3.<wbr/>2</p>
11324            </td>
11325
11326            <td class="entry_tags">
11327              <ul class="entry_tags">
11328                  <li><a href="#tag_V1">V1</a></li>
11329                  <li><a href="#tag_REPROC">REPROC</a></li>
11330              </ul>
11331            </td>
11332
11333          </tr>
11334          <tr class="entries_header">
11335            <th class="th_details" colspan="6">Details</th>
11336          </tr>
11337          <tr class="entry_cont">
11338            <td class="entry_details" colspan="6">
11339              <p>Full-capability camera devices must always support OFF; camera devices that support
11340YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING will list ZERO_<wbr/>SHUTTER_<wbr/>LAG; all devices will
11341list FAST.<wbr/></p>
11342            </td>
11343          </tr>
11344
11345          <tr class="entries_header">
11346            <th class="th_details" colspan="6">HAL Implementation Details</th>
11347          </tr>
11348          <tr class="entry_cont">
11349            <td class="entry_details" colspan="6">
11350              <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if edge enhancement control is available
11351on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
11352That is,<wbr/> if the highest quality implementation on the camera device does not slow down
11353capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
11354            </td>
11355          </tr>
11356
11357          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11358           <!-- end of entry -->
11359
11360
11361
11362      <!-- end of kind -->
11363      </tbody>
11364      <tr><td colspan="7" class="kind">dynamic</td></tr>
11365
11366      <thead class="entries_header">
11367        <tr>
11368          <th class="th_name">Property Name</th>
11369          <th class="th_type">Type</th>
11370          <th class="th_description">Description</th>
11371          <th class="th_units">Units</th>
11372          <th class="th_range">Range</th>
11373          <th class="th_hal_version">Initial HIDL HAL version</th>
11374          <th class="th_tags">Tags</th>
11375        </tr>
11376      </thead>
11377
11378      <tbody>
11379
11380
11381
11382
11383
11384
11385
11386
11387
11388
11389          <tr class="entry" id="dynamic_android.edge.mode">
11390            <td class="entry_name
11391             " rowspan="5">
11392              android.<wbr/>edge.<wbr/>mode
11393            </td>
11394            <td class="entry_type">
11395                <span class="entry_type_name entry_type_name_enum">byte</span>
11396
11397              <span class="entry_type_visibility"> [public]</span>
11398
11399
11400              <span class="entry_type_hwlevel">[full] </span>
11401
11402
11403
11404                <ul class="entry_type_enum">
11405                  <li>
11406                    <span class="entry_type_enum_name">OFF (v3.2)</span>
11407                    <span class="entry_type_enum_notes"><p>No edge enhancement is applied.<wbr/></p></span>
11408                  </li>
11409                  <li>
11410                    <span class="entry_type_enum_name">FAST (v3.2)</span>
11411                    <span class="entry_type_enum_notes"><p>Apply edge enhancement at a quality level that does not slow down frame rate
11412relative to sensor output.<wbr/> It may be the same as OFF if edge enhancement will
11413slow down frame rate relative to sensor.<wbr/></p></span>
11414                  </li>
11415                  <li>
11416                    <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
11417                    <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>
11418                  </li>
11419                  <li>
11420                    <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span>
11421                    <span class="entry_type_enum_optional">[optional]</span>
11422                    <span class="entry_type_enum_notes"><p>Edge enhancement is applied at different
11423levels for different output streams,<wbr/> based on resolution.<wbr/> Streams at maximum recording
11424resolution (see <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">CameraDevice#createCaptureSession</a>)
11425or below have edge enhancement applied,<wbr/> while higher-resolution streams have no edge
11426enhancement applied.<wbr/> The level of edge enhancement for low-resolution streams is tuned
11427so that frame rate is not impacted,<wbr/> and the quality is equal to or better than FAST
11428(since it is only applied to lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p>
11429<p>This mode is intended to be used by applications operating in a zero-shutter-lag mode
11430with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures
11431high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is
11432produced via reprocessing when a user takes a picture.<wbr/>  For such a use case,<wbr/> the
11433high-resolution buffers must not have edge enhancement applied to maximize efficiency of
11434preview and to avoid double-applying enhancement when reprocessed,<wbr/> while low-resolution
11435buffers (used for recording or preview,<wbr/> generally) need edge enhancement applied for
11436reasonable preview quality.<wbr/></p>
11437<p>This mode is guaranteed to be supported by devices that support either the
11438YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities
11439(<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will
11440be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span>
11441                  </li>
11442                </ul>
11443
11444            </td> <!-- entry_type -->
11445
11446            <td class="entry_description">
11447              <p>Operation mode for edge
11448enhancement.<wbr/></p>
11449            </td>
11450
11451            <td class="entry_units">
11452            </td>
11453
11454            <td class="entry_range">
11455              <p><a href="#static_android.edge.availableEdgeModes">android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes</a></p>
11456            </td>
11457
11458            <td class="entry_hal_version">
11459              <p>3.<wbr/>2</p>
11460            </td>
11461
11462            <td class="entry_tags">
11463              <ul class="entry_tags">
11464                  <li><a href="#tag_V1">V1</a></li>
11465                  <li><a href="#tag_REPROC">REPROC</a></li>
11466              </ul>
11467            </td>
11468
11469          </tr>
11470          <tr class="entries_header">
11471            <th class="th_details" colspan="6">Details</th>
11472          </tr>
11473          <tr class="entry_cont">
11474            <td class="entry_details" colspan="6">
11475              <p>Edge enhancement improves sharpness and details in the captured image.<wbr/> OFF means
11476no enhancement will be applied by the camera device.<wbr/></p>
11477<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined enhancement
11478will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the
11479camera device will use the highest-quality enhancement algorithms,<wbr/>
11480even if it slows down capture rate.<wbr/> FAST means the camera device will
11481not slow down capture rate when applying edge enhancement.<wbr/> FAST may be the same as OFF if
11482edge enhancement will slow down capture rate.<wbr/> Every output stream will have a similar
11483amount of enhancement applied.<wbr/></p>
11484<p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular
11485buffer of high-resolution images during preview and reprocess image(s) from that buffer
11486into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies
11487edge enhancement to low-resolution streams (below maximum recording resolution) to
11488maximize preview quality,<wbr/> but does not apply edge enhancement to high-resolution streams,<wbr/>
11489since those will be reprocessed later if necessary.<wbr/></p>
11490<p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera
11491device will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV-domain edge enhancement,<wbr/> respectively.<wbr/>
11492The camera device may adjust its internal edge enhancement parameters for best
11493image 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>
11494            </td>
11495          </tr>
11496
11497          <tr class="entries_header">
11498            <th class="th_details" colspan="6">HAL Implementation Details</th>
11499          </tr>
11500          <tr class="entry_cont">
11501            <td class="entry_details" colspan="6">
11502              <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
11503adjust the internal edge enhancement reduction parameters appropriately to get the best
11504quality images.<wbr/></p>
11505            </td>
11506          </tr>
11507
11508          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11509           <!-- end of entry -->
11510
11511
11512
11513      <!-- end of kind -->
11514      </tbody>
11515
11516  <!-- end of section -->
11517  <tr><td colspan="7" id="section_flash" class="section">flash</td></tr>
11518
11519
11520      <tr><td colspan="7" class="kind">controls</td></tr>
11521
11522      <thead class="entries_header">
11523        <tr>
11524          <th class="th_name">Property Name</th>
11525          <th class="th_type">Type</th>
11526          <th class="th_description">Description</th>
11527          <th class="th_units">Units</th>
11528          <th class="th_range">Range</th>
11529          <th class="th_hal_version">Initial HIDL HAL version</th>
11530          <th class="th_tags">Tags</th>
11531        </tr>
11532      </thead>
11533
11534      <tbody>
11535
11536
11537
11538
11539
11540
11541
11542
11543
11544
11545          <tr class="entry" id="controls_android.flash.firingPower">
11546            <td class="entry_name
11547             " rowspan="3">
11548              android.<wbr/>flash.<wbr/>firing<wbr/>Power
11549            </td>
11550            <td class="entry_type">
11551                <span class="entry_type_name">byte</span>
11552
11553              <span class="entry_type_visibility"> [system]</span>
11554
11555
11556
11557
11558
11559
11560            </td> <!-- entry_type -->
11561
11562            <td class="entry_description">
11563              <p>Power for flash firing/<wbr/>torch</p>
11564            </td>
11565
11566            <td class="entry_units">
11567              10 is max power; 0 is no flash.<wbr/> Linear
11568            </td>
11569
11570            <td class="entry_range">
11571              <p>0 - 10</p>
11572            </td>
11573
11574            <td class="entry_hal_version">
11575              <p>3.<wbr/>2</p>
11576            </td>
11577
11578            <td class="entry_tags">
11579              <ul class="entry_tags">
11580                  <li><a href="#tag_FUTURE">FUTURE</a></li>
11581              </ul>
11582            </td>
11583
11584          </tr>
11585          <tr class="entries_header">
11586            <th class="th_details" colspan="6">Details</th>
11587          </tr>
11588          <tr class="entry_cont">
11589            <td class="entry_details" colspan="6">
11590              <p>Power for snapshot may use a different scale than
11591for torch mode.<wbr/> Only one entry for torch mode will be
11592used</p>
11593            </td>
11594          </tr>
11595
11596
11597          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11598           <!-- end of entry -->
11599
11600
11601          <tr class="entry" id="controls_android.flash.firingTime">
11602            <td class="entry_name
11603             " rowspan="3">
11604              android.<wbr/>flash.<wbr/>firing<wbr/>Time
11605            </td>
11606            <td class="entry_type">
11607                <span class="entry_type_name">int64</span>
11608
11609              <span class="entry_type_visibility"> [system]</span>
11610
11611
11612
11613
11614
11615
11616            </td> <!-- entry_type -->
11617
11618            <td class="entry_description">
11619              <p>Firing time of flash relative to start of
11620exposure</p>
11621            </td>
11622
11623            <td class="entry_units">
11624              nanoseconds
11625            </td>
11626
11627            <td class="entry_range">
11628              <p>0-(exposure time-flash duration)</p>
11629            </td>
11630
11631            <td class="entry_hal_version">
11632              <p>3.<wbr/>2</p>
11633            </td>
11634
11635            <td class="entry_tags">
11636              <ul class="entry_tags">
11637                  <li><a href="#tag_FUTURE">FUTURE</a></li>
11638              </ul>
11639            </td>
11640
11641          </tr>
11642          <tr class="entries_header">
11643            <th class="th_details" colspan="6">Details</th>
11644          </tr>
11645          <tr class="entry_cont">
11646            <td class="entry_details" colspan="6">
11647              <p>Clamped to (0,<wbr/> exposure time - flash
11648duration).<wbr/></p>
11649            </td>
11650          </tr>
11651
11652
11653          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11654           <!-- end of entry -->
11655
11656
11657          <tr class="entry" id="controls_android.flash.mode">
11658            <td class="entry_name
11659             " rowspan="3">
11660              android.<wbr/>flash.<wbr/>mode
11661            </td>
11662            <td class="entry_type">
11663                <span class="entry_type_name entry_type_name_enum">byte</span>
11664
11665              <span class="entry_type_visibility"> [public]</span>
11666
11667
11668              <span class="entry_type_hwlevel">[legacy] </span>
11669
11670
11671
11672                <ul class="entry_type_enum">
11673                  <li>
11674                    <span class="entry_type_enum_name">OFF (v3.2)</span>
11675                    <span class="entry_type_enum_notes"><p>Do not fire the flash for this capture.<wbr/></p></span>
11676                  </li>
11677                  <li>
11678                    <span class="entry_type_enum_name">SINGLE (v3.2)</span>
11679                    <span class="entry_type_enum_notes"><p>If the flash is available and charged,<wbr/> fire flash
11680for this capture.<wbr/></p></span>
11681                  </li>
11682                  <li>
11683                    <span class="entry_type_enum_name">TORCH (v3.2)</span>
11684                    <span class="entry_type_enum_notes"><p>Transition flash to continuously on.<wbr/></p></span>
11685                  </li>
11686                </ul>
11687
11688            </td> <!-- entry_type -->
11689
11690            <td class="entry_description">
11691              <p>The desired mode for for the camera device's flash control.<wbr/></p>
11692            </td>
11693
11694            <td class="entry_units">
11695            </td>
11696
11697            <td class="entry_range">
11698            </td>
11699
11700            <td class="entry_hal_version">
11701              <p>3.<wbr/>2</p>
11702            </td>
11703
11704            <td class="entry_tags">
11705              <ul class="entry_tags">
11706                  <li><a href="#tag_BC">BC</a></li>
11707              </ul>
11708            </td>
11709
11710          </tr>
11711          <tr class="entries_header">
11712            <th class="th_details" colspan="6">Details</th>
11713          </tr>
11714          <tr class="entry_cont">
11715            <td class="entry_details" colspan="6">
11716              <p>This control is only effective when flash unit is available
11717(<code><a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> == true</code>).<wbr/></p>
11718<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/>
11719Otherwise,<wbr/> the camera device auto-exposure related flash control (ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/>
11720ON_<wbr/>ALWAYS_<wbr/>FLASH,<wbr/> or ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE) will override this control.<wbr/></p>
11721<p>When set to OFF,<wbr/> the camera device will not fire flash for this capture.<wbr/></p>
11722<p>When set to SINGLE,<wbr/> the camera device will fire flash regardless of the camera
11723device's auto-exposure routine's result.<wbr/> When used in still capture case,<wbr/> this
11724control should be used along with auto-exposure (AE) precapture metering sequence
11725(<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>
11726<p>When set to TORCH,<wbr/> the flash will be on continuously.<wbr/> This mode can be used
11727for use cases such as preview,<wbr/> auto-focus assist,<wbr/> still capture,<wbr/> or video recording.<wbr/></p>
11728<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>
11729            </td>
11730          </tr>
11731
11732
11733          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11734           <!-- end of entry -->
11735
11736
11737
11738      <!-- end of kind -->
11739      </tbody>
11740      <tr><td colspan="7" class="kind">static</td></tr>
11741
11742      <thead class="entries_header">
11743        <tr>
11744          <th class="th_name">Property Name</th>
11745          <th class="th_type">Type</th>
11746          <th class="th_description">Description</th>
11747          <th class="th_units">Units</th>
11748          <th class="th_range">Range</th>
11749          <th class="th_hal_version">Initial HIDL HAL version</th>
11750          <th class="th_tags">Tags</th>
11751        </tr>
11752      </thead>
11753
11754      <tbody>
11755
11756
11757
11758
11759
11760
11761
11762
11763
11764
11765
11766
11767          <tr class="entry" id="static_android.flash.info.available">
11768            <td class="entry_name
11769             " rowspan="3">
11770              android.<wbr/>flash.<wbr/>info.<wbr/>available
11771            </td>
11772            <td class="entry_type">
11773                <span class="entry_type_name entry_type_name_enum">byte</span>
11774
11775              <span class="entry_type_visibility"> [public as boolean]</span>
11776
11777
11778              <span class="entry_type_hwlevel">[legacy] </span>
11779
11780
11781
11782                <ul class="entry_type_enum">
11783                  <li>
11784                    <span class="entry_type_enum_name">FALSE (v3.2)</span>
11785                  </li>
11786                  <li>
11787                    <span class="entry_type_enum_name">TRUE (v3.2)</span>
11788                  </li>
11789                </ul>
11790
11791            </td> <!-- entry_type -->
11792
11793            <td class="entry_description">
11794              <p>Whether this camera device has a
11795flash unit.<wbr/></p>
11796            </td>
11797
11798            <td class="entry_units">
11799            </td>
11800
11801            <td class="entry_range">
11802            </td>
11803
11804            <td class="entry_hal_version">
11805              <p>3.<wbr/>2</p>
11806            </td>
11807
11808            <td class="entry_tags">
11809              <ul class="entry_tags">
11810                  <li><a href="#tag_BC">BC</a></li>
11811              </ul>
11812            </td>
11813
11814          </tr>
11815          <tr class="entries_header">
11816            <th class="th_details" colspan="6">Details</th>
11817          </tr>
11818          <tr class="entry_cont">
11819            <td class="entry_details" colspan="6">
11820              <p>Will be <code>false</code> if no flash is available.<wbr/></p>
11821<p>If there is no flash unit,<wbr/> none of the flash controls do
11822anything.<wbr/></p>
11823            </td>
11824          </tr>
11825
11826
11827          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11828           <!-- end of entry -->
11829
11830
11831          <tr class="entry" id="static_android.flash.info.chargeDuration">
11832            <td class="entry_name
11833             " rowspan="3">
11834              android.<wbr/>flash.<wbr/>info.<wbr/>charge<wbr/>Duration
11835            </td>
11836            <td class="entry_type">
11837                <span class="entry_type_name">int64</span>
11838
11839              <span class="entry_type_visibility"> [system]</span>
11840
11841
11842
11843
11844
11845
11846            </td> <!-- entry_type -->
11847
11848            <td class="entry_description">
11849              <p>Time taken before flash can fire
11850again</p>
11851            </td>
11852
11853            <td class="entry_units">
11854              nanoseconds
11855            </td>
11856
11857            <td class="entry_range">
11858              <p>0-1e9</p>
11859            </td>
11860
11861            <td class="entry_hal_version">
11862              <p>3.<wbr/>2</p>
11863            </td>
11864
11865            <td class="entry_tags">
11866              <ul class="entry_tags">
11867                  <li><a href="#tag_FUTURE">FUTURE</a></li>
11868              </ul>
11869            </td>
11870
11871          </tr>
11872          <tr class="entries_header">
11873            <th class="th_details" colspan="6">Details</th>
11874          </tr>
11875          <tr class="entry_cont">
11876            <td class="entry_details" colspan="6">
11877              <p>1 second too long/<wbr/>too short for recharge? Should
11878this be power-dependent?</p>
11879            </td>
11880          </tr>
11881
11882
11883          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11884           <!-- end of entry -->
11885
11886
11887
11888
11889
11890          <tr class="entry" id="static_android.flash.colorTemperature">
11891            <td class="entry_name
11892             " rowspan="1">
11893              android.<wbr/>flash.<wbr/>color<wbr/>Temperature
11894            </td>
11895            <td class="entry_type">
11896                <span class="entry_type_name">byte</span>
11897
11898              <span class="entry_type_visibility"> [system]</span>
11899
11900
11901
11902
11903
11904
11905            </td> <!-- entry_type -->
11906
11907            <td class="entry_description">
11908              <p>The x,<wbr/>y whitepoint of the
11909flash</p>
11910            </td>
11911
11912            <td class="entry_units">
11913              pair of floats
11914            </td>
11915
11916            <td class="entry_range">
11917              <p>0-1 for both</p>
11918            </td>
11919
11920            <td class="entry_hal_version">
11921              <p>3.<wbr/>2</p>
11922            </td>
11923
11924            <td class="entry_tags">
11925              <ul class="entry_tags">
11926                  <li><a href="#tag_FUTURE">FUTURE</a></li>
11927              </ul>
11928            </td>
11929
11930          </tr>
11931
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="static_android.flash.maxEnergy">
11938            <td class="entry_name
11939             " rowspan="1">
11940              android.<wbr/>flash.<wbr/>max<wbr/>Energy
11941            </td>
11942            <td class="entry_type">
11943                <span class="entry_type_name">byte</span>
11944
11945              <span class="entry_type_visibility"> [system]</span>
11946
11947
11948
11949
11950
11951
11952            </td> <!-- entry_type -->
11953
11954            <td class="entry_description">
11955              <p>Max energy output of the flash for a full
11956power single flash</p>
11957            </td>
11958
11959            <td class="entry_units">
11960              lumen-seconds
11961            </td>
11962
11963            <td class="entry_range">
11964              <p>&gt;= 0</p>
11965            </td>
11966
11967            <td class="entry_hal_version">
11968              <p>3.<wbr/>2</p>
11969            </td>
11970
11971            <td class="entry_tags">
11972              <ul class="entry_tags">
11973                  <li><a href="#tag_FUTURE">FUTURE</a></li>
11974              </ul>
11975            </td>
11976
11977          </tr>
11978
11979
11980          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11981           <!-- end of entry -->
11982
11983
11984
11985      <!-- end of kind -->
11986      </tbody>
11987      <tr><td colspan="7" class="kind">dynamic</td></tr>
11988
11989      <thead class="entries_header">
11990        <tr>
11991          <th class="th_name">Property Name</th>
11992          <th class="th_type">Type</th>
11993          <th class="th_description">Description</th>
11994          <th class="th_units">Units</th>
11995          <th class="th_range">Range</th>
11996          <th class="th_hal_version">Initial HIDL HAL version</th>
11997          <th class="th_tags">Tags</th>
11998        </tr>
11999      </thead>
12000
12001      <tbody>
12002
12003
12004
12005
12006
12007
12008
12009
12010
12011
12012          <tr class="entry" id="dynamic_android.flash.firingPower">
12013            <td class="entry_name
12014             " rowspan="3">
12015              android.<wbr/>flash.<wbr/>firing<wbr/>Power
12016            </td>
12017            <td class="entry_type">
12018                <span class="entry_type_name">byte</span>
12019
12020              <span class="entry_type_visibility"> [system]</span>
12021
12022
12023
12024
12025
12026
12027            </td> <!-- entry_type -->
12028
12029            <td class="entry_description">
12030              <p>Power for flash firing/<wbr/>torch</p>
12031            </td>
12032
12033            <td class="entry_units">
12034              10 is max power; 0 is no flash.<wbr/> Linear
12035            </td>
12036
12037            <td class="entry_range">
12038              <p>0 - 10</p>
12039            </td>
12040
12041            <td class="entry_hal_version">
12042              <p>3.<wbr/>2</p>
12043            </td>
12044
12045            <td class="entry_tags">
12046              <ul class="entry_tags">
12047                  <li><a href="#tag_FUTURE">FUTURE</a></li>
12048              </ul>
12049            </td>
12050
12051          </tr>
12052          <tr class="entries_header">
12053            <th class="th_details" colspan="6">Details</th>
12054          </tr>
12055          <tr class="entry_cont">
12056            <td class="entry_details" colspan="6">
12057              <p>Power for snapshot may use a different scale than
12058for torch mode.<wbr/> Only one entry for torch mode will be
12059used</p>
12060            </td>
12061          </tr>
12062
12063
12064          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12065           <!-- end of entry -->
12066
12067
12068          <tr class="entry" id="dynamic_android.flash.firingTime">
12069            <td class="entry_name
12070             " rowspan="3">
12071              android.<wbr/>flash.<wbr/>firing<wbr/>Time
12072            </td>
12073            <td class="entry_type">
12074                <span class="entry_type_name">int64</span>
12075
12076              <span class="entry_type_visibility"> [system]</span>
12077
12078
12079
12080
12081
12082
12083            </td> <!-- entry_type -->
12084
12085            <td class="entry_description">
12086              <p>Firing time of flash relative to start of
12087exposure</p>
12088            </td>
12089
12090            <td class="entry_units">
12091              nanoseconds
12092            </td>
12093
12094            <td class="entry_range">
12095              <p>0-(exposure time-flash duration)</p>
12096            </td>
12097
12098            <td class="entry_hal_version">
12099              <p>3.<wbr/>2</p>
12100            </td>
12101
12102            <td class="entry_tags">
12103              <ul class="entry_tags">
12104                  <li><a href="#tag_FUTURE">FUTURE</a></li>
12105              </ul>
12106            </td>
12107
12108          </tr>
12109          <tr class="entries_header">
12110            <th class="th_details" colspan="6">Details</th>
12111          </tr>
12112          <tr class="entry_cont">
12113            <td class="entry_details" colspan="6">
12114              <p>Clamped to (0,<wbr/> exposure time - flash
12115duration).<wbr/></p>
12116            </td>
12117          </tr>
12118
12119
12120          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12121           <!-- end of entry -->
12122
12123
12124          <tr class="entry" id="dynamic_android.flash.mode">
12125            <td class="entry_name
12126             " rowspan="3">
12127              android.<wbr/>flash.<wbr/>mode
12128            </td>
12129            <td class="entry_type">
12130                <span class="entry_type_name entry_type_name_enum">byte</span>
12131
12132              <span class="entry_type_visibility"> [public]</span>
12133
12134
12135              <span class="entry_type_hwlevel">[legacy] </span>
12136
12137
12138
12139                <ul class="entry_type_enum">
12140                  <li>
12141                    <span class="entry_type_enum_name">OFF (v3.2)</span>
12142                    <span class="entry_type_enum_notes"><p>Do not fire the flash for this capture.<wbr/></p></span>
12143                  </li>
12144                  <li>
12145                    <span class="entry_type_enum_name">SINGLE (v3.2)</span>
12146                    <span class="entry_type_enum_notes"><p>If the flash is available and charged,<wbr/> fire flash
12147for this capture.<wbr/></p></span>
12148                  </li>
12149                  <li>
12150                    <span class="entry_type_enum_name">TORCH (v3.2)</span>
12151                    <span class="entry_type_enum_notes"><p>Transition flash to continuously on.<wbr/></p></span>
12152                  </li>
12153                </ul>
12154
12155            </td> <!-- entry_type -->
12156
12157            <td class="entry_description">
12158              <p>The desired mode for for the camera device's flash control.<wbr/></p>
12159            </td>
12160
12161            <td class="entry_units">
12162            </td>
12163
12164            <td class="entry_range">
12165            </td>
12166
12167            <td class="entry_hal_version">
12168              <p>3.<wbr/>2</p>
12169            </td>
12170
12171            <td class="entry_tags">
12172              <ul class="entry_tags">
12173                  <li><a href="#tag_BC">BC</a></li>
12174              </ul>
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>This control is only effective when flash unit is available
12184(<code><a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> == true</code>).<wbr/></p>
12185<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/>
12186Otherwise,<wbr/> the camera device auto-exposure related flash control (ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/>
12187ON_<wbr/>ALWAYS_<wbr/>FLASH,<wbr/> or ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE) will override this control.<wbr/></p>
12188<p>When set to OFF,<wbr/> the camera device will not fire flash for this capture.<wbr/></p>
12189<p>When set to SINGLE,<wbr/> the camera device will fire flash regardless of the camera
12190device's auto-exposure routine's result.<wbr/> When used in still capture case,<wbr/> this
12191control should be used along with auto-exposure (AE) precapture metering sequence
12192(<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>
12193<p>When set to TORCH,<wbr/> the flash will be on continuously.<wbr/> This mode can be used
12194for use cases such as preview,<wbr/> auto-focus assist,<wbr/> still capture,<wbr/> or video recording.<wbr/></p>
12195<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>
12196            </td>
12197          </tr>
12198
12199
12200          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12201           <!-- end of entry -->
12202
12203
12204          <tr class="entry" id="dynamic_android.flash.state">
12205            <td class="entry_name
12206             " rowspan="3">
12207              android.<wbr/>flash.<wbr/>state
12208            </td>
12209            <td class="entry_type">
12210                <span class="entry_type_name entry_type_name_enum">byte</span>
12211
12212              <span class="entry_type_visibility"> [public]</span>
12213
12214
12215              <span class="entry_type_hwlevel">[limited] </span>
12216
12217
12218
12219                <ul class="entry_type_enum">
12220                  <li>
12221                    <span class="entry_type_enum_name">UNAVAILABLE (v3.2)</span>
12222                    <span class="entry_type_enum_notes"><p>No flash on camera.<wbr/></p></span>
12223                  </li>
12224                  <li>
12225                    <span class="entry_type_enum_name">CHARGING (v3.2)</span>
12226                    <span class="entry_type_enum_notes"><p>Flash is charging and cannot be fired.<wbr/></p></span>
12227                  </li>
12228                  <li>
12229                    <span class="entry_type_enum_name">READY (v3.2)</span>
12230                    <span class="entry_type_enum_notes"><p>Flash is ready to fire.<wbr/></p></span>
12231                  </li>
12232                  <li>
12233                    <span class="entry_type_enum_name">FIRED (v3.2)</span>
12234                    <span class="entry_type_enum_notes"><p>Flash fired for this capture.<wbr/></p></span>
12235                  </li>
12236                  <li>
12237                    <span class="entry_type_enum_name">PARTIAL (v3.2)</span>
12238                    <span class="entry_type_enum_notes"><p>Flash partially illuminated this frame.<wbr/></p>
12239<p>This is usually due to the next or previous frame having
12240the flash fire,<wbr/> and the flash spilling into this capture
12241due to hardware limitations.<wbr/></p></span>
12242                  </li>
12243                </ul>
12244
12245            </td> <!-- entry_type -->
12246
12247            <td class="entry_description">
12248              <p>Current state of the flash
12249unit.<wbr/></p>
12250            </td>
12251
12252            <td class="entry_units">
12253            </td>
12254
12255            <td class="entry_range">
12256            </td>
12257
12258            <td class="entry_hal_version">
12259              <p>3.<wbr/>2</p>
12260            </td>
12261
12262            <td class="entry_tags">
12263            </td>
12264
12265          </tr>
12266          <tr class="entries_header">
12267            <th class="th_details" colspan="6">Details</th>
12268          </tr>
12269          <tr class="entry_cont">
12270            <td class="entry_details" colspan="6">
12271              <p>When the camera device doesn't have flash unit
12272(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/>
12273Other states indicate the current flash status.<wbr/></p>
12274<p>In certain conditions,<wbr/> this will be available on LEGACY devices:</p>
12275<ul>
12276<li>Flash-less cameras always return UNAVAILABLE.<wbr/></li>
12277<li>Using <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>==</code> ON_<wbr/>ALWAYS_<wbr/>FLASH
12278   will always return FIRED.<wbr/></li>
12279<li>Using <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> <code>==</code> TORCH
12280   will always return FIRED.<wbr/></li>
12281</ul>
12282<p>In all other conditions the state will not be available on
12283LEGACY devices (i.<wbr/>e.<wbr/> it will be <code>null</code>).<wbr/></p>
12284            </td>
12285          </tr>
12286
12287
12288          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12289           <!-- end of entry -->
12290
12291
12292
12293      <!-- end of kind -->
12294      </tbody>
12295
12296  <!-- end of section -->
12297  <tr><td colspan="7" id="section_hotPixel" class="section">hotPixel</td></tr>
12298
12299
12300      <tr><td colspan="7" class="kind">controls</td></tr>
12301
12302      <thead class="entries_header">
12303        <tr>
12304          <th class="th_name">Property Name</th>
12305          <th class="th_type">Type</th>
12306          <th class="th_description">Description</th>
12307          <th class="th_units">Units</th>
12308          <th class="th_range">Range</th>
12309          <th class="th_hal_version">Initial HIDL HAL version</th>
12310          <th class="th_tags">Tags</th>
12311        </tr>
12312      </thead>
12313
12314      <tbody>
12315
12316
12317
12318
12319
12320
12321
12322
12323
12324
12325          <tr class="entry" id="controls_android.hotPixel.mode">
12326            <td class="entry_name
12327             " rowspan="3">
12328              android.<wbr/>hot<wbr/>Pixel.<wbr/>mode
12329            </td>
12330            <td class="entry_type">
12331                <span class="entry_type_name entry_type_name_enum">byte</span>
12332
12333              <span class="entry_type_visibility"> [public]</span>
12334
12335
12336
12337
12338
12339                <ul class="entry_type_enum">
12340                  <li>
12341                    <span class="entry_type_enum_name">OFF (v3.2)</span>
12342                    <span class="entry_type_enum_notes"><p>No hot pixel correction is applied.<wbr/></p>
12343<p>The frame rate must not be reduced relative to sensor raw output
12344for this option.<wbr/></p>
12345<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>
12346                  </li>
12347                  <li>
12348                    <span class="entry_type_enum_name">FAST (v3.2)</span>
12349                    <span class="entry_type_enum_notes"><p>Hot pixel correction is applied,<wbr/> without reducing frame
12350rate relative to sensor raw output.<wbr/></p>
12351<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>
12352                  </li>
12353                  <li>
12354                    <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
12355                    <span class="entry_type_enum_notes"><p>High-quality hot pixel correction is applied,<wbr/> at a cost
12356of possibly reduced frame rate relative to sensor raw output.<wbr/></p>
12357<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>
12358                  </li>
12359                </ul>
12360
12361            </td> <!-- entry_type -->
12362
12363            <td class="entry_description">
12364              <p>Operational mode for hot pixel correction.<wbr/></p>
12365            </td>
12366
12367            <td class="entry_units">
12368            </td>
12369
12370            <td class="entry_range">
12371              <p><a href="#static_android.hotPixel.availableHotPixelModes">android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes</a></p>
12372            </td>
12373
12374            <td class="entry_hal_version">
12375              <p>3.<wbr/>2</p>
12376            </td>
12377
12378            <td class="entry_tags">
12379              <ul class="entry_tags">
12380                  <li><a href="#tag_V1">V1</a></li>
12381                  <li><a href="#tag_RAW">RAW</a></li>
12382              </ul>
12383            </td>
12384
12385          </tr>
12386          <tr class="entries_header">
12387            <th class="th_details" colspan="6">Details</th>
12388          </tr>
12389          <tr class="entry_cont">
12390            <td class="entry_details" colspan="6">
12391              <p>Hotpixel correction interpolates out,<wbr/> or otherwise removes,<wbr/> pixels
12392that do not accurately measure the incoming light (i.<wbr/>e.<wbr/> pixels that
12393are stuck at an arbitrary value or are oversensitive).<wbr/></p>
12394            </td>
12395          </tr>
12396
12397
12398          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12399           <!-- end of entry -->
12400
12401
12402
12403      <!-- end of kind -->
12404      </tbody>
12405      <tr><td colspan="7" class="kind">static</td></tr>
12406
12407      <thead class="entries_header">
12408        <tr>
12409          <th class="th_name">Property Name</th>
12410          <th class="th_type">Type</th>
12411          <th class="th_description">Description</th>
12412          <th class="th_units">Units</th>
12413          <th class="th_range">Range</th>
12414          <th class="th_hal_version">Initial HIDL HAL version</th>
12415          <th class="th_tags">Tags</th>
12416        </tr>
12417      </thead>
12418
12419      <tbody>
12420
12421
12422
12423
12424
12425
12426
12427
12428
12429
12430          <tr class="entry" id="static_android.hotPixel.availableHotPixelModes">
12431            <td class="entry_name
12432             " rowspan="5">
12433              android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes
12434            </td>
12435            <td class="entry_type">
12436                <span class="entry_type_name">byte</span>
12437                <span class="entry_type_container">x</span>
12438
12439                <span class="entry_type_array">
12440                  n
12441                </span>
12442              <span class="entry_type_visibility"> [public as enumList]</span>
12443
12444
12445
12446
12447                <div class="entry_type_notes">list of enums</div>
12448
12449
12450            </td> <!-- entry_type -->
12451
12452            <td class="entry_description">
12453              <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
12454camera device.<wbr/></p>
12455            </td>
12456
12457            <td class="entry_units">
12458            </td>
12459
12460            <td class="entry_range">
12461              <p>Any value listed in <a href="#controls_android.hotPixel.mode">android.<wbr/>hot<wbr/>Pixel.<wbr/>mode</a></p>
12462            </td>
12463
12464            <td class="entry_hal_version">
12465              <p>3.<wbr/>2</p>
12466            </td>
12467
12468            <td class="entry_tags">
12469              <ul class="entry_tags">
12470                  <li><a href="#tag_V1">V1</a></li>
12471                  <li><a href="#tag_RAW">RAW</a></li>
12472              </ul>
12473            </td>
12474
12475          </tr>
12476          <tr class="entries_header">
12477            <th class="th_details" colspan="6">Details</th>
12478          </tr>
12479          <tr class="entry_cont">
12480            <td class="entry_details" colspan="6">
12481              <p>FULL mode camera devices will always support FAST.<wbr/></p>
12482            </td>
12483          </tr>
12484
12485          <tr class="entries_header">
12486            <th class="th_details" colspan="6">HAL Implementation Details</th>
12487          </tr>
12488          <tr class="entry_cont">
12489            <td class="entry_details" colspan="6">
12490              <p>To avoid performance issues,<wbr/> there will be significantly fewer hot
12491pixels than actual pixels on the camera sensor.<wbr/>
12492HAL must support both FAST and HIGH_<wbr/>QUALITY if hot pixel correction control is available
12493on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
12494That is,<wbr/> if the highest quality implementation on the camera device does not slow down
12495capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
12496            </td>
12497          </tr>
12498
12499          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12500           <!-- end of entry -->
12501
12502
12503
12504      <!-- end of kind -->
12505      </tbody>
12506      <tr><td colspan="7" class="kind">dynamic</td></tr>
12507
12508      <thead class="entries_header">
12509        <tr>
12510          <th class="th_name">Property Name</th>
12511          <th class="th_type">Type</th>
12512          <th class="th_description">Description</th>
12513          <th class="th_units">Units</th>
12514          <th class="th_range">Range</th>
12515          <th class="th_hal_version">Initial HIDL HAL version</th>
12516          <th class="th_tags">Tags</th>
12517        </tr>
12518      </thead>
12519
12520      <tbody>
12521
12522
12523
12524
12525
12526
12527
12528
12529
12530
12531          <tr class="entry" id="dynamic_android.hotPixel.mode">
12532            <td class="entry_name
12533             " rowspan="3">
12534              android.<wbr/>hot<wbr/>Pixel.<wbr/>mode
12535            </td>
12536            <td class="entry_type">
12537                <span class="entry_type_name entry_type_name_enum">byte</span>
12538
12539              <span class="entry_type_visibility"> [public]</span>
12540
12541
12542
12543
12544
12545                <ul class="entry_type_enum">
12546                  <li>
12547                    <span class="entry_type_enum_name">OFF (v3.2)</span>
12548                    <span class="entry_type_enum_notes"><p>No hot pixel correction is applied.<wbr/></p>
12549<p>The frame rate must not be reduced relative to sensor raw output
12550for this option.<wbr/></p>
12551<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>
12552                  </li>
12553                  <li>
12554                    <span class="entry_type_enum_name">FAST (v3.2)</span>
12555                    <span class="entry_type_enum_notes"><p>Hot pixel correction is applied,<wbr/> without reducing frame
12556rate relative to sensor raw output.<wbr/></p>
12557<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>
12558                  </li>
12559                  <li>
12560                    <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
12561                    <span class="entry_type_enum_notes"><p>High-quality hot pixel correction is applied,<wbr/> at a cost
12562of possibly reduced frame rate relative to sensor raw output.<wbr/></p>
12563<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>
12564                  </li>
12565                </ul>
12566
12567            </td> <!-- entry_type -->
12568
12569            <td class="entry_description">
12570              <p>Operational mode for hot pixel correction.<wbr/></p>
12571            </td>
12572
12573            <td class="entry_units">
12574            </td>
12575
12576            <td class="entry_range">
12577              <p><a href="#static_android.hotPixel.availableHotPixelModes">android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes</a></p>
12578            </td>
12579
12580            <td class="entry_hal_version">
12581              <p>3.<wbr/>2</p>
12582            </td>
12583
12584            <td class="entry_tags">
12585              <ul class="entry_tags">
12586                  <li><a href="#tag_V1">V1</a></li>
12587                  <li><a href="#tag_RAW">RAW</a></li>
12588              </ul>
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>Hotpixel correction interpolates out,<wbr/> or otherwise removes,<wbr/> pixels
12598that do not accurately measure the incoming light (i.<wbr/>e.<wbr/> pixels that
12599are stuck at an arbitrary value or are oversensitive).<wbr/></p>
12600            </td>
12601          </tr>
12602
12603
12604          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12605           <!-- end of entry -->
12606
12607
12608
12609      <!-- end of kind -->
12610      </tbody>
12611
12612  <!-- end of section -->
12613  <tr><td colspan="7" id="section_jpeg" class="section">jpeg</td></tr>
12614
12615
12616      <tr><td colspan="7" class="kind">controls</td></tr>
12617
12618      <thead class="entries_header">
12619        <tr>
12620          <th class="th_name">Property Name</th>
12621          <th class="th_type">Type</th>
12622          <th class="th_description">Description</th>
12623          <th class="th_units">Units</th>
12624          <th class="th_range">Range</th>
12625          <th class="th_hal_version">Initial HIDL HAL version</th>
12626          <th class="th_tags">Tags</th>
12627        </tr>
12628      </thead>
12629
12630      <tbody>
12631
12632
12633
12634
12635
12636
12637
12638
12639
12640
12641          <tr class="entry" id="controls_android.jpeg.gpsLocation">
12642            <td class="entry_name
12643             " rowspan="3">
12644              android.<wbr/>jpeg.<wbr/>gps<wbr/>Location
12645            </td>
12646            <td class="entry_type">
12647                <span class="entry_type_name">byte</span>
12648
12649              <span class="entry_type_visibility"> [java_public as location]</span>
12650
12651              <span class="entry_type_synthetic">[synthetic] </span>
12652
12653              <span class="entry_type_hwlevel">[legacy] </span>
12654
12655
12656
12657
12658            </td> <!-- entry_type -->
12659
12660            <td class="entry_description">
12661              <p>A location object to use when generating image GPS metadata.<wbr/></p>
12662            </td>
12663
12664            <td class="entry_units">
12665            </td>
12666
12667            <td class="entry_range">
12668            </td>
12669
12670            <td class="entry_hal_version">
12671              <p>3.<wbr/>2</p>
12672            </td>
12673
12674            <td class="entry_tags">
12675            </td>
12676
12677          </tr>
12678          <tr class="entries_header">
12679            <th class="th_details" colspan="6">Details</th>
12680          </tr>
12681          <tr class="entry_cont">
12682            <td class="entry_details" colspan="6">
12683              <p>Setting a location object in a request will include the GPS coordinates of the location
12684into any JPEG images captured based on the request.<wbr/> These coordinates can then be
12685viewed by anyone who receives the JPEG image.<wbr/></p>
12686<p>This tag is also used for HEIC image capture.<wbr/></p>
12687            </td>
12688          </tr>
12689
12690
12691          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12692           <!-- end of entry -->
12693
12694
12695          <tr class="entry" id="controls_android.jpeg.gpsCoordinates">
12696            <td class="entry_name
12697             " rowspan="3">
12698              android.<wbr/>jpeg.<wbr/>gps<wbr/>Coordinates
12699            </td>
12700            <td class="entry_type">
12701                <span class="entry_type_name">double</span>
12702                <span class="entry_type_container">x</span>
12703
12704                <span class="entry_type_array">
12705                  3
12706                </span>
12707              <span class="entry_type_visibility"> [ndk_public]</span>
12708
12709
12710              <span class="entry_type_hwlevel">[legacy] </span>
12711
12712
12713                <div class="entry_type_notes">latitude,<wbr/> longitude,<wbr/> altitude.<wbr/> First two in degrees,<wbr/> the third in meters</div>
12714
12715
12716            </td> <!-- entry_type -->
12717
12718            <td class="entry_description">
12719              <p>GPS coordinates to include in output JPEG
12720EXIF.<wbr/></p>
12721            </td>
12722
12723            <td class="entry_units">
12724            </td>
12725
12726            <td class="entry_range">
12727              <p>(-180 - 180],<wbr/> [-90,<wbr/>90],<wbr/> [-inf,<wbr/> inf]</p>
12728            </td>
12729
12730            <td class="entry_hal_version">
12731              <p>3.<wbr/>2</p>
12732            </td>
12733
12734            <td class="entry_tags">
12735              <ul class="entry_tags">
12736                  <li><a href="#tag_BC">BC</a></li>
12737              </ul>
12738            </td>
12739
12740          </tr>
12741          <tr class="entries_header">
12742            <th class="th_details" colspan="6">Details</th>
12743          </tr>
12744          <tr class="entry_cont">
12745            <td class="entry_details" colspan="6">
12746              <p>This tag is also used for HEIC image capture.<wbr/></p>
12747            </td>
12748          </tr>
12749
12750
12751          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12752           <!-- end of entry -->
12753
12754
12755          <tr class="entry" id="controls_android.jpeg.gpsProcessingMethod">
12756            <td class="entry_name
12757             " rowspan="3">
12758              android.<wbr/>jpeg.<wbr/>gps<wbr/>Processing<wbr/>Method
12759            </td>
12760            <td class="entry_type">
12761                <span class="entry_type_name">byte</span>
12762
12763              <span class="entry_type_visibility"> [ndk_public as string]</span>
12764
12765
12766              <span class="entry_type_hwlevel">[legacy] </span>
12767
12768
12769
12770
12771            </td> <!-- entry_type -->
12772
12773            <td class="entry_description">
12774              <p>32 characters describing GPS algorithm to
12775include in EXIF.<wbr/></p>
12776            </td>
12777
12778            <td class="entry_units">
12779              UTF-8 null-terminated string
12780            </td>
12781
12782            <td class="entry_range">
12783            </td>
12784
12785            <td class="entry_hal_version">
12786              <p>3.<wbr/>2</p>
12787            </td>
12788
12789            <td class="entry_tags">
12790              <ul class="entry_tags">
12791                  <li><a href="#tag_BC">BC</a></li>
12792              </ul>
12793            </td>
12794
12795          </tr>
12796          <tr class="entries_header">
12797            <th class="th_details" colspan="6">Details</th>
12798          </tr>
12799          <tr class="entry_cont">
12800            <td class="entry_details" colspan="6">
12801              <p>This tag is also used for HEIC image capture.<wbr/></p>
12802            </td>
12803          </tr>
12804
12805
12806          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12807           <!-- end of entry -->
12808
12809
12810          <tr class="entry" id="controls_android.jpeg.gpsTimestamp">
12811            <td class="entry_name
12812             " rowspan="3">
12813              android.<wbr/>jpeg.<wbr/>gps<wbr/>Timestamp
12814            </td>
12815            <td class="entry_type">
12816                <span class="entry_type_name">int64</span>
12817
12818              <span class="entry_type_visibility"> [ndk_public]</span>
12819
12820
12821              <span class="entry_type_hwlevel">[legacy] </span>
12822
12823
12824
12825
12826            </td> <!-- entry_type -->
12827
12828            <td class="entry_description">
12829              <p>Time GPS fix was made to include in
12830EXIF.<wbr/></p>
12831            </td>
12832
12833            <td class="entry_units">
12834              UTC in seconds since January 1,<wbr/> 1970
12835            </td>
12836
12837            <td class="entry_range">
12838            </td>
12839
12840            <td class="entry_hal_version">
12841              <p>3.<wbr/>2</p>
12842            </td>
12843
12844            <td class="entry_tags">
12845              <ul class="entry_tags">
12846                  <li><a href="#tag_BC">BC</a></li>
12847              </ul>
12848            </td>
12849
12850          </tr>
12851          <tr class="entries_header">
12852            <th class="th_details" colspan="6">Details</th>
12853          </tr>
12854          <tr class="entry_cont">
12855            <td class="entry_details" colspan="6">
12856              <p>This tag is also used for HEIC image capture.<wbr/></p>
12857            </td>
12858          </tr>
12859
12860
12861          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12862           <!-- end of entry -->
12863
12864
12865          <tr class="entry" id="controls_android.jpeg.orientation">
12866            <td class="entry_name
12867             " rowspan="3">
12868              android.<wbr/>jpeg.<wbr/>orientation
12869            </td>
12870            <td class="entry_type">
12871                <span class="entry_type_name">int32</span>
12872
12873              <span class="entry_type_visibility"> [public]</span>
12874
12875
12876              <span class="entry_type_hwlevel">[legacy] </span>
12877
12878
12879
12880
12881            </td> <!-- entry_type -->
12882
12883            <td class="entry_description">
12884              <p>The orientation for a JPEG image.<wbr/></p>
12885            </td>
12886
12887            <td class="entry_units">
12888              Degrees in multiples of 90
12889            </td>
12890
12891            <td class="entry_range">
12892              <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p>
12893            </td>
12894
12895            <td class="entry_hal_version">
12896              <p>3.<wbr/>2</p>
12897            </td>
12898
12899            <td class="entry_tags">
12900              <ul class="entry_tags">
12901                  <li><a href="#tag_BC">BC</a></li>
12902              </ul>
12903            </td>
12904
12905          </tr>
12906          <tr class="entries_header">
12907            <th class="th_details" colspan="6">Details</th>
12908          </tr>
12909          <tr class="entry_cont">
12910            <td class="entry_details" colspan="6">
12911              <p>The clockwise rotation angle in degrees,<wbr/> relative to the orientation
12912to the camera,<wbr/> that the JPEG picture needs to be rotated by,<wbr/> to be viewed
12913upright.<wbr/></p>
12914<p>Camera devices may either encode this value into the JPEG EXIF header,<wbr/> or
12915rotate the image data to match this orientation.<wbr/> When the image data is rotated,<wbr/>
12916the thumbnail data will also be rotated.<wbr/></p>
12917<p>Note that this orientation is relative to the orientation of the camera sensor,<wbr/> given
12918by <a href="#static_android.sensor.orientation">android.<wbr/>sensor.<wbr/>orientation</a>.<wbr/></p>
12919<p>To translate from the device orientation given by the Android sensor APIs for camera
12920sensors which are not EXTERNAL,<wbr/> the following sample code may be used:</p>
12921<pre><code>private int getJpegOrientation(CameraCharacteristics c,<wbr/> int deviceOrientation) {
12922    if (deviceOrientation == android.<wbr/>view.<wbr/>Orientation<wbr/>Event<wbr/>Listener.<wbr/>ORIENTATION_<wbr/>UNKNOWN) return 0;
12923    int sensorOrientation = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>SENSOR_<wbr/>ORIENTATION);
12924
12925    //<wbr/> Round device orientation to a multiple of 90
12926    deviceOrientation = (deviceOrientation + 45) /<wbr/> 90 * 90;
12927
12928    //<wbr/> Reverse device orientation for front-facing cameras
12929    boolean facingFront = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING) == Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING_<wbr/>FRONT;
12930    if (facingFront) deviceOrientation = -deviceOrientation;
12931
12932    //<wbr/> Calculate desired JPEG orientation relative to camera orientation to make
12933    //<wbr/> the image upright relative to the device orientation
12934    int jpegOrientation = (sensorOrientation + deviceOrientation + 360) % 360;
12935
12936    return jpegOrientation;
12937}
12938</code></pre>
12939<p>For EXTERNAL cameras the sensor orientation will always be set to 0 and the facing will
12940also be set to EXTERNAL.<wbr/> The above code is not relevant in such case.<wbr/></p>
12941<p>This tag is also used to describe the orientation of the HEIC image capture,<wbr/> in which
12942case the rotation is reflected by
12943<a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>,<wbr/> and not by
12944rotating the image data itself.<wbr/></p>
12945            </td>
12946          </tr>
12947
12948
12949          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12950           <!-- end of entry -->
12951
12952
12953          <tr class="entry" id="controls_android.jpeg.quality">
12954            <td class="entry_name
12955             " rowspan="3">
12956              android.<wbr/>jpeg.<wbr/>quality
12957            </td>
12958            <td class="entry_type">
12959                <span class="entry_type_name">byte</span>
12960
12961              <span class="entry_type_visibility"> [public]</span>
12962
12963
12964              <span class="entry_type_hwlevel">[legacy] </span>
12965
12966
12967
12968
12969            </td> <!-- entry_type -->
12970
12971            <td class="entry_description">
12972              <p>Compression quality of the final JPEG
12973image.<wbr/></p>
12974            </td>
12975
12976            <td class="entry_units">
12977            </td>
12978
12979            <td class="entry_range">
12980              <p>1-100; larger is higher quality</p>
12981            </td>
12982
12983            <td class="entry_hal_version">
12984              <p>3.<wbr/>2</p>
12985            </td>
12986
12987            <td class="entry_tags">
12988              <ul class="entry_tags">
12989                  <li><a href="#tag_BC">BC</a></li>
12990              </ul>
12991            </td>
12992
12993          </tr>
12994          <tr class="entries_header">
12995            <th class="th_details" colspan="6">Details</th>
12996          </tr>
12997          <tr class="entry_cont">
12998            <td class="entry_details" colspan="6">
12999              <p>85-95 is typical usage range.<wbr/> This tag is also used to describe the quality
13000of the HEIC image capture.<wbr/></p>
13001            </td>
13002          </tr>
13003
13004
13005          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13006           <!-- end of entry -->
13007
13008
13009          <tr class="entry" id="controls_android.jpeg.thumbnailQuality">
13010            <td class="entry_name
13011             " rowspan="3">
13012              android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Quality
13013            </td>
13014            <td class="entry_type">
13015                <span class="entry_type_name">byte</span>
13016
13017              <span class="entry_type_visibility"> [public]</span>
13018
13019
13020              <span class="entry_type_hwlevel">[legacy] </span>
13021
13022
13023
13024
13025            </td> <!-- entry_type -->
13026
13027            <td class="entry_description">
13028              <p>Compression quality of JPEG
13029thumbnail.<wbr/></p>
13030            </td>
13031
13032            <td class="entry_units">
13033            </td>
13034
13035            <td class="entry_range">
13036              <p>1-100; larger is higher quality</p>
13037            </td>
13038
13039            <td class="entry_hal_version">
13040              <p>3.<wbr/>2</p>
13041            </td>
13042
13043            <td class="entry_tags">
13044              <ul class="entry_tags">
13045                  <li><a href="#tag_BC">BC</a></li>
13046              </ul>
13047            </td>
13048
13049          </tr>
13050          <tr class="entries_header">
13051            <th class="th_details" colspan="6">Details</th>
13052          </tr>
13053          <tr class="entry_cont">
13054            <td class="entry_details" colspan="6">
13055              <p>This tag is also used to describe the quality of the HEIC image capture.<wbr/></p>
13056            </td>
13057          </tr>
13058
13059
13060          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13061           <!-- end of entry -->
13062
13063
13064          <tr class="entry" id="controls_android.jpeg.thumbnailSize">
13065            <td class="entry_name
13066             " rowspan="5">
13067              android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size
13068            </td>
13069            <td class="entry_type">
13070                <span class="entry_type_name">int32</span>
13071                <span class="entry_type_container">x</span>
13072
13073                <span class="entry_type_array">
13074                  2
13075                </span>
13076              <span class="entry_type_visibility"> [public as size]</span>
13077
13078
13079              <span class="entry_type_hwlevel">[legacy] </span>
13080
13081
13082
13083
13084            </td> <!-- entry_type -->
13085
13086            <td class="entry_description">
13087              <p>Resolution of embedded JPEG thumbnail.<wbr/></p>
13088            </td>
13089
13090            <td class="entry_units">
13091            </td>
13092
13093            <td class="entry_range">
13094              <p><a href="#static_android.jpeg.availableThumbnailSizes">android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes</a></p>
13095            </td>
13096
13097            <td class="entry_hal_version">
13098              <p>3.<wbr/>2</p>
13099            </td>
13100
13101            <td class="entry_tags">
13102              <ul class="entry_tags">
13103                  <li><a href="#tag_BC">BC</a></li>
13104              </ul>
13105            </td>
13106
13107          </tr>
13108          <tr class="entries_header">
13109            <th class="th_details" colspan="6">Details</th>
13110          </tr>
13111          <tr class="entry_cont">
13112            <td class="entry_details" colspan="6">
13113              <p>When set to (0,<wbr/> 0) value,<wbr/> the JPEG EXIF will not contain thumbnail,<wbr/>
13114but the captured JPEG will still be a valid image.<wbr/></p>
13115<p>For best results,<wbr/> when issuing a request for a JPEG image,<wbr/> the thumbnail size selected
13116should have the same aspect ratio as the main JPEG output.<wbr/></p>
13117<p>If the thumbnail image aspect ratio differs from the JPEG primary image aspect
13118ratio,<wbr/> the camera device creates the thumbnail by cropping it from the primary image.<wbr/>
13119For example,<wbr/> if the primary image has 4:3 aspect ratio,<wbr/> the thumbnail image has
1312016:9 aspect ratio,<wbr/> the primary image will be cropped vertically (letterbox) to
13121generate the thumbnail image.<wbr/> The thumbnail image will always have a smaller Field
13122Of View (FOV) than the primary image when aspect ratios differ.<wbr/></p>
13123<p>When an <a href="#controls_android.jpeg.orientation">android.<wbr/>jpeg.<wbr/>orientation</a> of non-zero degree is requested,<wbr/>
13124the camera device will handle thumbnail rotation in one of the following ways:</p>
13125<ul>
13126<li>Set the <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>
13127  and keep jpeg and thumbnail image data unrotated.<wbr/></li>
13128<li>Rotate the jpeg and thumbnail image data and not set
13129  <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>.<wbr/> In this
13130  case,<wbr/> LIMITED or FULL hardware level devices will report rotated thumnail size in
13131  capture result,<wbr/> so the width and height will be interchanged if 90 or 270 degree
13132  orientation is requested.<wbr/> LEGACY device will always report unrotated thumbnail
13133  size.<wbr/></li>
13134</ul>
13135<p>The tag is also used as thumbnail size for HEIC image format capture,<wbr/> in which case the
13136the thumbnail rotation is reflected by
13137<a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>,<wbr/> and not by
13138rotating the thumbnail data itself.<wbr/></p>
13139            </td>
13140          </tr>
13141
13142          <tr class="entries_header">
13143            <th class="th_details" colspan="6">HAL Implementation Details</th>
13144          </tr>
13145          <tr class="entry_cont">
13146            <td class="entry_details" colspan="6">
13147              <p>The HAL must not squeeze or stretch the downscaled primary image to generate thumbnail.<wbr/>
13148The cropping must be done on the primary jpeg image rather than the sensor pre-correction
13149active array.<wbr/> The stream cropping rule specified by "S5.<wbr/> Cropping" in camera3.<wbr/>h doesn't
13150apply to the thumbnail image cropping.<wbr/></p>
13151            </td>
13152          </tr>
13153
13154          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13155           <!-- end of entry -->
13156
13157
13158
13159      <!-- end of kind -->
13160      </tbody>
13161      <tr><td colspan="7" class="kind">static</td></tr>
13162
13163      <thead class="entries_header">
13164        <tr>
13165          <th class="th_name">Property Name</th>
13166          <th class="th_type">Type</th>
13167          <th class="th_description">Description</th>
13168          <th class="th_units">Units</th>
13169          <th class="th_range">Range</th>
13170          <th class="th_hal_version">Initial HIDL HAL version</th>
13171          <th class="th_tags">Tags</th>
13172        </tr>
13173      </thead>
13174
13175      <tbody>
13176
13177
13178
13179
13180
13181
13182
13183
13184
13185
13186          <tr class="entry" id="static_android.jpeg.availableThumbnailSizes">
13187            <td class="entry_name
13188             " rowspan="3">
13189              android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes
13190            </td>
13191            <td class="entry_type">
13192                <span class="entry_type_name">int32</span>
13193                <span class="entry_type_container">x</span>
13194
13195                <span class="entry_type_array">
13196                  2 x n
13197                </span>
13198              <span class="entry_type_visibility"> [public as size]</span>
13199
13200
13201              <span class="entry_type_hwlevel">[legacy] </span>
13202
13203
13204
13205
13206            </td> <!-- entry_type -->
13207
13208            <td class="entry_description">
13209              <p>List of JPEG thumbnail sizes for <a href="#controls_android.jpeg.thumbnailSize">android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size</a> supported by this
13210camera device.<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_BC">BC</a></li>
13226              </ul>
13227            </td>
13228
13229          </tr>
13230          <tr class="entries_header">
13231            <th class="th_details" colspan="6">Details</th>
13232          </tr>
13233          <tr class="entry_cont">
13234            <td class="entry_details" colspan="6">
13235              <p>This list will include at least one non-zero resolution,<wbr/> plus <code>(0,<wbr/>0)</code> for indicating no
13236thumbnail should be generated.<wbr/></p>
13237<p>Below condiditions will be satisfied for this size list:</p>
13238<ul>
13239<li>The sizes will be sorted by increasing pixel area (width x height).<wbr/>
13240If several resolutions have the same area,<wbr/> they will be sorted by increasing width.<wbr/></li>
13241<li>The aspect ratio of the largest thumbnail size will be same as the
13242aspect ratio of largest JPEG output size in <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a>.<wbr/>
13243The largest size is defined as the size that has the largest pixel area
13244in a given size list.<wbr/></li>
13245<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
13246one corresponding size that has the same aspect ratio in availableThumbnailSizes,<wbr/>
13247and vice versa.<wbr/></li>
13248<li>All non-<code>(0,<wbr/> 0)</code> sizes will have non-zero widths and heights.<wbr/></li>
13249</ul>
13250<p>This list is also used as supported thumbnail sizes for HEIC image format capture.<wbr/></p>
13251            </td>
13252          </tr>
13253
13254
13255          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13256           <!-- end of entry -->
13257
13258
13259          <tr class="entry" id="static_android.jpeg.maxSize">
13260            <td class="entry_name
13261             " rowspan="3">
13262              android.<wbr/>jpeg.<wbr/>max<wbr/>Size
13263            </td>
13264            <td class="entry_type">
13265                <span class="entry_type_name">int32</span>
13266
13267              <span class="entry_type_visibility"> [system]</span>
13268
13269
13270
13271
13272
13273
13274            </td> <!-- entry_type -->
13275
13276            <td class="entry_description">
13277              <p>Maximum size in bytes for the compressed
13278JPEG buffer,<wbr/> in default sensor pixel mode (see <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a>)</p>
13279            </td>
13280
13281            <td class="entry_units">
13282            </td>
13283
13284            <td class="entry_range">
13285              <p>Must be large enough to fit any JPEG produced by
13286the camera</p>
13287            </td>
13288
13289            <td class="entry_hal_version">
13290              <p>3.<wbr/>2</p>
13291            </td>
13292
13293            <td class="entry_tags">
13294            </td>
13295
13296          </tr>
13297          <tr class="entries_header">
13298            <th class="th_details" colspan="6">Details</th>
13299          </tr>
13300          <tr class="entry_cont">
13301            <td class="entry_details" colspan="6">
13302              <p>This is used for sizing the gralloc buffers for
13303JPEG</p>
13304            </td>
13305          </tr>
13306
13307
13308          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13309           <!-- end of entry -->
13310
13311
13312
13313      <!-- end of kind -->
13314      </tbody>
13315      <tr><td colspan="7" class="kind">dynamic</td></tr>
13316
13317      <thead class="entries_header">
13318        <tr>
13319          <th class="th_name">Property Name</th>
13320          <th class="th_type">Type</th>
13321          <th class="th_description">Description</th>
13322          <th class="th_units">Units</th>
13323          <th class="th_range">Range</th>
13324          <th class="th_hal_version">Initial HIDL HAL version</th>
13325          <th class="th_tags">Tags</th>
13326        </tr>
13327      </thead>
13328
13329      <tbody>
13330
13331
13332
13333
13334
13335
13336
13337
13338
13339
13340          <tr class="entry" id="dynamic_android.jpeg.gpsLocation">
13341            <td class="entry_name
13342             " rowspan="3">
13343              android.<wbr/>jpeg.<wbr/>gps<wbr/>Location
13344            </td>
13345            <td class="entry_type">
13346                <span class="entry_type_name">byte</span>
13347
13348              <span class="entry_type_visibility"> [java_public as location]</span>
13349
13350              <span class="entry_type_synthetic">[synthetic] </span>
13351
13352              <span class="entry_type_hwlevel">[legacy] </span>
13353
13354
13355
13356
13357            </td> <!-- entry_type -->
13358
13359            <td class="entry_description">
13360              <p>A location object to use when generating image GPS metadata.<wbr/></p>
13361            </td>
13362
13363            <td class="entry_units">
13364            </td>
13365
13366            <td class="entry_range">
13367            </td>
13368
13369            <td class="entry_hal_version">
13370              <p>3.<wbr/>2</p>
13371            </td>
13372
13373            <td class="entry_tags">
13374            </td>
13375
13376          </tr>
13377          <tr class="entries_header">
13378            <th class="th_details" colspan="6">Details</th>
13379          </tr>
13380          <tr class="entry_cont">
13381            <td class="entry_details" colspan="6">
13382              <p>Setting a location object in a request will include the GPS coordinates of the location
13383into any JPEG images captured based on the request.<wbr/> These coordinates can then be
13384viewed by anyone who receives the JPEG image.<wbr/></p>
13385<p>This tag is also used for HEIC image capture.<wbr/></p>
13386            </td>
13387          </tr>
13388
13389
13390          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13391           <!-- end of entry -->
13392
13393
13394          <tr class="entry" id="dynamic_android.jpeg.gpsCoordinates">
13395            <td class="entry_name
13396             " rowspan="3">
13397              android.<wbr/>jpeg.<wbr/>gps<wbr/>Coordinates
13398            </td>
13399            <td class="entry_type">
13400                <span class="entry_type_name">double</span>
13401                <span class="entry_type_container">x</span>
13402
13403                <span class="entry_type_array">
13404                  3
13405                </span>
13406              <span class="entry_type_visibility"> [ndk_public]</span>
13407
13408
13409              <span class="entry_type_hwlevel">[legacy] </span>
13410
13411
13412                <div class="entry_type_notes">latitude,<wbr/> longitude,<wbr/> altitude.<wbr/> First two in degrees,<wbr/> the third in meters</div>
13413
13414
13415            </td> <!-- entry_type -->
13416
13417            <td class="entry_description">
13418              <p>GPS coordinates to include in output JPEG
13419EXIF.<wbr/></p>
13420            </td>
13421
13422            <td class="entry_units">
13423            </td>
13424
13425            <td class="entry_range">
13426              <p>(-180 - 180],<wbr/> [-90,<wbr/>90],<wbr/> [-inf,<wbr/> inf]</p>
13427            </td>
13428
13429            <td class="entry_hal_version">
13430              <p>3.<wbr/>2</p>
13431            </td>
13432
13433            <td class="entry_tags">
13434              <ul class="entry_tags">
13435                  <li><a href="#tag_BC">BC</a></li>
13436              </ul>
13437            </td>
13438
13439          </tr>
13440          <tr class="entries_header">
13441            <th class="th_details" colspan="6">Details</th>
13442          </tr>
13443          <tr class="entry_cont">
13444            <td class="entry_details" colspan="6">
13445              <p>This tag is also used for HEIC image capture.<wbr/></p>
13446            </td>
13447          </tr>
13448
13449
13450          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13451           <!-- end of entry -->
13452
13453
13454          <tr class="entry" id="dynamic_android.jpeg.gpsProcessingMethod">
13455            <td class="entry_name
13456             " rowspan="3">
13457              android.<wbr/>jpeg.<wbr/>gps<wbr/>Processing<wbr/>Method
13458            </td>
13459            <td class="entry_type">
13460                <span class="entry_type_name">byte</span>
13461
13462              <span class="entry_type_visibility"> [ndk_public as string]</span>
13463
13464
13465              <span class="entry_type_hwlevel">[legacy] </span>
13466
13467
13468
13469
13470            </td> <!-- entry_type -->
13471
13472            <td class="entry_description">
13473              <p>32 characters describing GPS algorithm to
13474include in EXIF.<wbr/></p>
13475            </td>
13476
13477            <td class="entry_units">
13478              UTF-8 null-terminated string
13479            </td>
13480
13481            <td class="entry_range">
13482            </td>
13483
13484            <td class="entry_hal_version">
13485              <p>3.<wbr/>2</p>
13486            </td>
13487
13488            <td class="entry_tags">
13489              <ul class="entry_tags">
13490                  <li><a href="#tag_BC">BC</a></li>
13491              </ul>
13492            </td>
13493
13494          </tr>
13495          <tr class="entries_header">
13496            <th class="th_details" colspan="6">Details</th>
13497          </tr>
13498          <tr class="entry_cont">
13499            <td class="entry_details" colspan="6">
13500              <p>This tag is also used for HEIC image capture.<wbr/></p>
13501            </td>
13502          </tr>
13503
13504
13505          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13506           <!-- end of entry -->
13507
13508
13509          <tr class="entry" id="dynamic_android.jpeg.gpsTimestamp">
13510            <td class="entry_name
13511             " rowspan="3">
13512              android.<wbr/>jpeg.<wbr/>gps<wbr/>Timestamp
13513            </td>
13514            <td class="entry_type">
13515                <span class="entry_type_name">int64</span>
13516
13517              <span class="entry_type_visibility"> [ndk_public]</span>
13518
13519
13520              <span class="entry_type_hwlevel">[legacy] </span>
13521
13522
13523
13524
13525            </td> <!-- entry_type -->
13526
13527            <td class="entry_description">
13528              <p>Time GPS fix was made to include in
13529EXIF.<wbr/></p>
13530            </td>
13531
13532            <td class="entry_units">
13533              UTC in seconds since January 1,<wbr/> 1970
13534            </td>
13535
13536            <td class="entry_range">
13537            </td>
13538
13539            <td class="entry_hal_version">
13540              <p>3.<wbr/>2</p>
13541            </td>
13542
13543            <td class="entry_tags">
13544              <ul class="entry_tags">
13545                  <li><a href="#tag_BC">BC</a></li>
13546              </ul>
13547            </td>
13548
13549          </tr>
13550          <tr class="entries_header">
13551            <th class="th_details" colspan="6">Details</th>
13552          </tr>
13553          <tr class="entry_cont">
13554            <td class="entry_details" colspan="6">
13555              <p>This tag is also used for HEIC image capture.<wbr/></p>
13556            </td>
13557          </tr>
13558
13559
13560          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13561           <!-- end of entry -->
13562
13563
13564          <tr class="entry" id="dynamic_android.jpeg.orientation">
13565            <td class="entry_name
13566             " rowspan="3">
13567              android.<wbr/>jpeg.<wbr/>orientation
13568            </td>
13569            <td class="entry_type">
13570                <span class="entry_type_name">int32</span>
13571
13572              <span class="entry_type_visibility"> [public]</span>
13573
13574
13575              <span class="entry_type_hwlevel">[legacy] </span>
13576
13577
13578
13579
13580            </td> <!-- entry_type -->
13581
13582            <td class="entry_description">
13583              <p>The orientation for a JPEG image.<wbr/></p>
13584            </td>
13585
13586            <td class="entry_units">
13587              Degrees in multiples of 90
13588            </td>
13589
13590            <td class="entry_range">
13591              <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p>
13592            </td>
13593
13594            <td class="entry_hal_version">
13595              <p>3.<wbr/>2</p>
13596            </td>
13597
13598            <td class="entry_tags">
13599              <ul class="entry_tags">
13600                  <li><a href="#tag_BC">BC</a></li>
13601              </ul>
13602            </td>
13603
13604          </tr>
13605          <tr class="entries_header">
13606            <th class="th_details" colspan="6">Details</th>
13607          </tr>
13608          <tr class="entry_cont">
13609            <td class="entry_details" colspan="6">
13610              <p>The clockwise rotation angle in degrees,<wbr/> relative to the orientation
13611to the camera,<wbr/> that the JPEG picture needs to be rotated by,<wbr/> to be viewed
13612upright.<wbr/></p>
13613<p>Camera devices may either encode this value into the JPEG EXIF header,<wbr/> or
13614rotate the image data to match this orientation.<wbr/> When the image data is rotated,<wbr/>
13615the thumbnail data will also be rotated.<wbr/></p>
13616<p>Note that this orientation is relative to the orientation of the camera sensor,<wbr/> given
13617by <a href="#static_android.sensor.orientation">android.<wbr/>sensor.<wbr/>orientation</a>.<wbr/></p>
13618<p>To translate from the device orientation given by the Android sensor APIs for camera
13619sensors which are not EXTERNAL,<wbr/> the following sample code may be used:</p>
13620<pre><code>private int getJpegOrientation(CameraCharacteristics c,<wbr/> int deviceOrientation) {
13621    if (deviceOrientation == android.<wbr/>view.<wbr/>Orientation<wbr/>Event<wbr/>Listener.<wbr/>ORIENTATION_<wbr/>UNKNOWN) return 0;
13622    int sensorOrientation = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>SENSOR_<wbr/>ORIENTATION);
13623
13624    //<wbr/> Round device orientation to a multiple of 90
13625    deviceOrientation = (deviceOrientation + 45) /<wbr/> 90 * 90;
13626
13627    //<wbr/> Reverse device orientation for front-facing cameras
13628    boolean facingFront = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING) == Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING_<wbr/>FRONT;
13629    if (facingFront) deviceOrientation = -deviceOrientation;
13630
13631    //<wbr/> Calculate desired JPEG orientation relative to camera orientation to make
13632    //<wbr/> the image upright relative to the device orientation
13633    int jpegOrientation = (sensorOrientation + deviceOrientation + 360) % 360;
13634
13635    return jpegOrientation;
13636}
13637</code></pre>
13638<p>For EXTERNAL cameras the sensor orientation will always be set to 0 and the facing will
13639also be set to EXTERNAL.<wbr/> The above code is not relevant in such case.<wbr/></p>
13640<p>This tag is also used to describe the orientation of the HEIC image capture,<wbr/> in which
13641case the rotation is reflected by
13642<a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>,<wbr/> and not by
13643rotating the image data itself.<wbr/></p>
13644            </td>
13645          </tr>
13646
13647
13648          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13649           <!-- end of entry -->
13650
13651
13652          <tr class="entry" id="dynamic_android.jpeg.quality">
13653            <td class="entry_name
13654             " rowspan="3">
13655              android.<wbr/>jpeg.<wbr/>quality
13656            </td>
13657            <td class="entry_type">
13658                <span class="entry_type_name">byte</span>
13659
13660              <span class="entry_type_visibility"> [public]</span>
13661
13662
13663              <span class="entry_type_hwlevel">[legacy] </span>
13664
13665
13666
13667
13668            </td> <!-- entry_type -->
13669
13670            <td class="entry_description">
13671              <p>Compression quality of the final JPEG
13672image.<wbr/></p>
13673            </td>
13674
13675            <td class="entry_units">
13676            </td>
13677
13678            <td class="entry_range">
13679              <p>1-100; larger is higher quality</p>
13680            </td>
13681
13682            <td class="entry_hal_version">
13683              <p>3.<wbr/>2</p>
13684            </td>
13685
13686            <td class="entry_tags">
13687              <ul class="entry_tags">
13688                  <li><a href="#tag_BC">BC</a></li>
13689              </ul>
13690            </td>
13691
13692          </tr>
13693          <tr class="entries_header">
13694            <th class="th_details" colspan="6">Details</th>
13695          </tr>
13696          <tr class="entry_cont">
13697            <td class="entry_details" colspan="6">
13698              <p>85-95 is typical usage range.<wbr/> This tag is also used to describe the quality
13699of the HEIC image capture.<wbr/></p>
13700            </td>
13701          </tr>
13702
13703
13704          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13705           <!-- end of entry -->
13706
13707
13708          <tr class="entry" id="dynamic_android.jpeg.size">
13709            <td class="entry_name
13710             " rowspan="3">
13711              android.<wbr/>jpeg.<wbr/>size
13712            </td>
13713            <td class="entry_type">
13714                <span class="entry_type_name">int32</span>
13715
13716              <span class="entry_type_visibility"> [system]</span>
13717
13718
13719
13720
13721
13722
13723            </td> <!-- entry_type -->
13724
13725            <td class="entry_description">
13726              <p>The size of the compressed JPEG image,<wbr/> in
13727bytes</p>
13728            </td>
13729
13730            <td class="entry_units">
13731            </td>
13732
13733            <td class="entry_range">
13734              <p>&gt;= 0</p>
13735            </td>
13736
13737            <td class="entry_hal_version">
13738              <p>3.<wbr/>2</p>
13739            </td>
13740
13741            <td class="entry_tags">
13742              <ul class="entry_tags">
13743                  <li><a href="#tag_FUTURE">FUTURE</a></li>
13744              </ul>
13745            </td>
13746
13747          </tr>
13748          <tr class="entries_header">
13749            <th class="th_details" colspan="6">Details</th>
13750          </tr>
13751          <tr class="entry_cont">
13752            <td class="entry_details" colspan="6">
13753              <p>If no JPEG output is produced for the request,<wbr/>
13754this must be 0.<wbr/></p>
13755<p>Otherwise,<wbr/> this describes the real size of the compressed
13756JPEG image placed in the output stream.<wbr/>  More specifically,<wbr/>
13757if <a href="#static_android.jpeg.maxSize">android.<wbr/>jpeg.<wbr/>max<wbr/>Size</a> = 1000000,<wbr/> and a specific capture
13758has <a href="#dynamic_android.jpeg.size">android.<wbr/>jpeg.<wbr/>size</a> = 500000,<wbr/> then the output buffer from
13759the JPEG stream will be 1000000 bytes,<wbr/> of which the first
13760500000 make up the real data.<wbr/></p>
13761            </td>
13762          </tr>
13763
13764
13765          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13766           <!-- end of entry -->
13767
13768
13769          <tr class="entry" id="dynamic_android.jpeg.thumbnailQuality">
13770            <td class="entry_name
13771             " rowspan="3">
13772              android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Quality
13773            </td>
13774            <td class="entry_type">
13775                <span class="entry_type_name">byte</span>
13776
13777              <span class="entry_type_visibility"> [public]</span>
13778
13779
13780              <span class="entry_type_hwlevel">[legacy] </span>
13781
13782
13783
13784
13785            </td> <!-- entry_type -->
13786
13787            <td class="entry_description">
13788              <p>Compression quality of JPEG
13789thumbnail.<wbr/></p>
13790            </td>
13791
13792            <td class="entry_units">
13793            </td>
13794
13795            <td class="entry_range">
13796              <p>1-100; larger is higher quality</p>
13797            </td>
13798
13799            <td class="entry_hal_version">
13800              <p>3.<wbr/>2</p>
13801            </td>
13802
13803            <td class="entry_tags">
13804              <ul class="entry_tags">
13805                  <li><a href="#tag_BC">BC</a></li>
13806              </ul>
13807            </td>
13808
13809          </tr>
13810          <tr class="entries_header">
13811            <th class="th_details" colspan="6">Details</th>
13812          </tr>
13813          <tr class="entry_cont">
13814            <td class="entry_details" colspan="6">
13815              <p>This tag is also used to describe the quality of the HEIC image capture.<wbr/></p>
13816            </td>
13817          </tr>
13818
13819
13820          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13821           <!-- end of entry -->
13822
13823
13824          <tr class="entry" id="dynamic_android.jpeg.thumbnailSize">
13825            <td class="entry_name
13826             " rowspan="5">
13827              android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size
13828            </td>
13829            <td class="entry_type">
13830                <span class="entry_type_name">int32</span>
13831                <span class="entry_type_container">x</span>
13832
13833                <span class="entry_type_array">
13834                  2
13835                </span>
13836              <span class="entry_type_visibility"> [public as size]</span>
13837
13838
13839              <span class="entry_type_hwlevel">[legacy] </span>
13840
13841
13842
13843
13844            </td> <!-- entry_type -->
13845
13846            <td class="entry_description">
13847              <p>Resolution of embedded JPEG thumbnail.<wbr/></p>
13848            </td>
13849
13850            <td class="entry_units">
13851            </td>
13852
13853            <td class="entry_range">
13854              <p><a href="#static_android.jpeg.availableThumbnailSizes">android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes</a></p>
13855            </td>
13856
13857            <td class="entry_hal_version">
13858              <p>3.<wbr/>2</p>
13859            </td>
13860
13861            <td class="entry_tags">
13862              <ul class="entry_tags">
13863                  <li><a href="#tag_BC">BC</a></li>
13864              </ul>
13865            </td>
13866
13867          </tr>
13868          <tr class="entries_header">
13869            <th class="th_details" colspan="6">Details</th>
13870          </tr>
13871          <tr class="entry_cont">
13872            <td class="entry_details" colspan="6">
13873              <p>When set to (0,<wbr/> 0) value,<wbr/> the JPEG EXIF will not contain thumbnail,<wbr/>
13874but the captured JPEG will still be a valid image.<wbr/></p>
13875<p>For best results,<wbr/> when issuing a request for a JPEG image,<wbr/> the thumbnail size selected
13876should have the same aspect ratio as the main JPEG output.<wbr/></p>
13877<p>If the thumbnail image aspect ratio differs from the JPEG primary image aspect
13878ratio,<wbr/> the camera device creates the thumbnail by cropping it from the primary image.<wbr/>
13879For example,<wbr/> if the primary image has 4:3 aspect ratio,<wbr/> the thumbnail image has
1388016:9 aspect ratio,<wbr/> the primary image will be cropped vertically (letterbox) to
13881generate the thumbnail image.<wbr/> The thumbnail image will always have a smaller Field
13882Of View (FOV) than the primary image when aspect ratios differ.<wbr/></p>
13883<p>When an <a href="#controls_android.jpeg.orientation">android.<wbr/>jpeg.<wbr/>orientation</a> of non-zero degree is requested,<wbr/>
13884the camera device will handle thumbnail rotation in one of the following ways:</p>
13885<ul>
13886<li>Set the <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>
13887  and keep jpeg and thumbnail image data unrotated.<wbr/></li>
13888<li>Rotate the jpeg and thumbnail image data and not set
13889  <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>.<wbr/> In this
13890  case,<wbr/> LIMITED or FULL hardware level devices will report rotated thumnail size in
13891  capture result,<wbr/> so the width and height will be interchanged if 90 or 270 degree
13892  orientation is requested.<wbr/> LEGACY device will always report unrotated thumbnail
13893  size.<wbr/></li>
13894</ul>
13895<p>The tag is also used as thumbnail size for HEIC image format capture,<wbr/> in which case the
13896the thumbnail rotation is reflected by
13897<a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>,<wbr/> and not by
13898rotating the thumbnail data itself.<wbr/></p>
13899            </td>
13900          </tr>
13901
13902          <tr class="entries_header">
13903            <th class="th_details" colspan="6">HAL Implementation Details</th>
13904          </tr>
13905          <tr class="entry_cont">
13906            <td class="entry_details" colspan="6">
13907              <p>The HAL must not squeeze or stretch the downscaled primary image to generate thumbnail.<wbr/>
13908The cropping must be done on the primary jpeg image rather than the sensor pre-correction
13909active array.<wbr/> The stream cropping rule specified by "S5.<wbr/> Cropping" in camera3.<wbr/>h doesn't
13910apply to the thumbnail image cropping.<wbr/></p>
13911            </td>
13912          </tr>
13913
13914          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13915           <!-- end of entry -->
13916
13917
13918
13919      <!-- end of kind -->
13920      </tbody>
13921
13922  <!-- end of section -->
13923  <tr><td colspan="7" id="section_lens" class="section">lens</td></tr>
13924
13925
13926      <tr><td colspan="7" class="kind">controls</td></tr>
13927
13928      <thead class="entries_header">
13929        <tr>
13930          <th class="th_name">Property Name</th>
13931          <th class="th_type">Type</th>
13932          <th class="th_description">Description</th>
13933          <th class="th_units">Units</th>
13934          <th class="th_range">Range</th>
13935          <th class="th_hal_version">Initial HIDL HAL version</th>
13936          <th class="th_tags">Tags</th>
13937        </tr>
13938      </thead>
13939
13940      <tbody>
13941
13942
13943
13944
13945
13946
13947
13948
13949
13950
13951          <tr class="entry" id="controls_android.lens.aperture">
13952            <td class="entry_name
13953             " rowspan="3">
13954              android.<wbr/>lens.<wbr/>aperture
13955            </td>
13956            <td class="entry_type">
13957                <span class="entry_type_name">float</span>
13958
13959              <span class="entry_type_visibility"> [public]</span>
13960
13961
13962              <span class="entry_type_hwlevel">[full] </span>
13963
13964
13965
13966
13967            </td> <!-- entry_type -->
13968
13969            <td class="entry_description">
13970              <p>The desired lens aperture size,<wbr/> as a ratio of lens focal length to the
13971effective aperture diameter.<wbr/></p>
13972            </td>
13973
13974            <td class="entry_units">
13975              The f-number (f/<wbr/>N)
13976            </td>
13977
13978            <td class="entry_range">
13979              <p><a href="#static_android.lens.info.availableApertures">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures</a></p>
13980            </td>
13981
13982            <td class="entry_hal_version">
13983              <p>3.<wbr/>2</p>
13984            </td>
13985
13986            <td class="entry_tags">
13987              <ul class="entry_tags">
13988                  <li><a href="#tag_V1">V1</a></li>
13989              </ul>
13990            </td>
13991
13992          </tr>
13993          <tr class="entries_header">
13994            <th class="th_details" colspan="6">Details</th>
13995          </tr>
13996          <tr class="entry_cont">
13997            <td class="entry_details" colspan="6">
13998              <p>Setting this value is only supported on the camera devices that have a variable
13999aperture lens.<wbr/></p>
14000<p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/>
14001this can be set along with <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
14002<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>
14003to achieve manual exposure control.<wbr/></p>
14004<p>The requested aperture value may take several frames to reach the
14005requested value; the camera device will report the current (intermediate)
14006aperture size in capture result metadata while the aperture is changing.<wbr/>
14007While 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>
14008<p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is one of
14009the ON modes,<wbr/> this will be overridden by the camera device
14010auto-exposure algorithm,<wbr/> the overridden values are then provided
14011back to the user in the corresponding result.<wbr/></p>
14012            </td>
14013          </tr>
14014
14015
14016          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14017           <!-- end of entry -->
14018
14019
14020          <tr class="entry" id="controls_android.lens.filterDensity">
14021            <td class="entry_name
14022             " rowspan="3">
14023              android.<wbr/>lens.<wbr/>filter<wbr/>Density
14024            </td>
14025            <td class="entry_type">
14026                <span class="entry_type_name">float</span>
14027
14028              <span class="entry_type_visibility"> [public]</span>
14029
14030
14031              <span class="entry_type_hwlevel">[full] </span>
14032
14033
14034
14035
14036            </td> <!-- entry_type -->
14037
14038            <td class="entry_description">
14039              <p>The desired setting for the lens neutral density filter(s).<wbr/></p>
14040            </td>
14041
14042            <td class="entry_units">
14043              Exposure Value (EV)
14044            </td>
14045
14046            <td class="entry_range">
14047              <p><a href="#static_android.lens.info.availableFilterDensities">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities</a></p>
14048            </td>
14049
14050            <td class="entry_hal_version">
14051              <p>3.<wbr/>2</p>
14052            </td>
14053
14054            <td class="entry_tags">
14055              <ul class="entry_tags">
14056                  <li><a href="#tag_V1">V1</a></li>
14057              </ul>
14058            </td>
14059
14060          </tr>
14061          <tr class="entries_header">
14062            <th class="th_details" colspan="6">Details</th>
14063          </tr>
14064          <tr class="entry_cont">
14065            <td class="entry_details" colspan="6">
14066              <p>This control will not be supported on most camera devices.<wbr/></p>
14067<p>Lens filters are typically used to lower the amount of light the
14068sensor is exposed to (measured in steps of EV).<wbr/> As used here,<wbr/> an EV
14069step is the standard logarithmic representation,<wbr/> which are
14070non-negative,<wbr/> and inversely proportional to the amount of light
14071hitting the sensor.<wbr/>  For example,<wbr/> setting this to 0 would result
14072in no reduction of the incoming light,<wbr/> and setting this to 2 would
14073mean that the filter is set to reduce incoming light by two stops
14074(allowing 1/<wbr/>4 of the prior amount of light to the sensor).<wbr/></p>
14075<p>It may take several frames before the lens filter density changes
14076to the requested value.<wbr/> While the filter density is still changing,<wbr/>
14077<a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p>
14078            </td>
14079          </tr>
14080
14081
14082          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14083           <!-- end of entry -->
14084
14085
14086          <tr class="entry" id="controls_android.lens.focalLength">
14087            <td class="entry_name
14088             " rowspan="5">
14089              android.<wbr/>lens.<wbr/>focal<wbr/>Length
14090            </td>
14091            <td class="entry_type">
14092                <span class="entry_type_name">float</span>
14093
14094              <span class="entry_type_visibility"> [public]</span>
14095
14096
14097              <span class="entry_type_hwlevel">[legacy] </span>
14098
14099
14100
14101
14102            </td> <!-- entry_type -->
14103
14104            <td class="entry_description">
14105              <p>The desired lens focal length; used for optical zoom.<wbr/></p>
14106            </td>
14107
14108            <td class="entry_units">
14109              Millimeters
14110            </td>
14111
14112            <td class="entry_range">
14113              <p><a href="#static_android.lens.info.availableFocalLengths">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths</a></p>
14114            </td>
14115
14116            <td class="entry_hal_version">
14117              <p>3.<wbr/>2</p>
14118            </td>
14119
14120            <td class="entry_tags">
14121              <ul class="entry_tags">
14122                  <li><a href="#tag_V1">V1</a></li>
14123              </ul>
14124            </td>
14125
14126          </tr>
14127          <tr class="entries_header">
14128            <th class="th_details" colspan="6">Details</th>
14129          </tr>
14130          <tr class="entry_cont">
14131            <td class="entry_details" colspan="6">
14132              <p>This setting controls the physical focal length of the camera
14133device's lens.<wbr/> Changing the focal length changes the field of
14134view of the camera device,<wbr/> and is usually used for optical zoom.<wbr/></p>
14135<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
14136setting won't be applied instantaneously,<wbr/> and it may take several
14137frames before the lens can change to the requested focal length.<wbr/>
14138While the focal length is still changing,<wbr/> <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will
14139be set to MOVING.<wbr/></p>
14140<p>Optical zoom via this control will not be supported on most devices.<wbr/> Starting from API
14141level 30,<wbr/> the camera device may combine optical and digital zoom through the
14142<a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> control.<wbr/></p>
14143            </td>
14144          </tr>
14145
14146          <tr class="entries_header">
14147            <th class="th_details" colspan="6">HAL Implementation Details</th>
14148          </tr>
14149          <tr class="entry_cont">
14150            <td class="entry_details" colspan="6">
14151              <p>For a logical camera device supporting both optical and digital zoom,<wbr/> if focalLength and
14152cropRegion change in the same request,<wbr/> the camera device must make sure that the new
14153focalLength and cropRegion take effect in the same frame.<wbr/> This is to make sure that there
14154is no visible field-of-view jump during zoom.<wbr/> For example,<wbr/> if cropRegion is applied
14155immediately,<wbr/> but focalLength takes more than 1 frame to take effect,<wbr/> the camera device
14156will delay the cropRegion so that it's synchronized with focalLength.<wbr/></p>
14157<p>Starting from API level 30,<wbr/> it's strongly recommended for HAL to implement the
14158combination 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
14159lieu 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>
14160            </td>
14161          </tr>
14162
14163          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14164           <!-- end of entry -->
14165
14166
14167          <tr class="entry" id="controls_android.lens.focusDistance">
14168            <td class="entry_name
14169             " rowspan="3">
14170              android.<wbr/>lens.<wbr/>focus<wbr/>Distance
14171            </td>
14172            <td class="entry_type">
14173                <span class="entry_type_name">float</span>
14174
14175              <span class="entry_type_visibility"> [public]</span>
14176
14177
14178              <span class="entry_type_hwlevel">[full] </span>
14179
14180
14181
14182
14183            </td> <!-- entry_type -->
14184
14185            <td class="entry_description">
14186              <p>Desired distance to plane of sharpest focus,<wbr/>
14187measured from frontmost surface of the lens.<wbr/></p>
14188            </td>
14189
14190            <td class="entry_units">
14191              See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
14192            </td>
14193
14194            <td class="entry_range">
14195              <p>&gt;= 0</p>
14196            </td>
14197
14198            <td class="entry_hal_version">
14199              <p>3.<wbr/>2</p>
14200            </td>
14201
14202            <td class="entry_tags">
14203              <ul class="entry_tags">
14204                  <li><a href="#tag_BC">BC</a></li>
14205                  <li><a href="#tag_V1">V1</a></li>
14206              </ul>
14207            </td>
14208
14209          </tr>
14210          <tr class="entries_header">
14211            <th class="th_details" colspan="6">Details</th>
14212          </tr>
14213          <tr class="entry_cont">
14214            <td class="entry_details" colspan="6">
14215              <p>This control can be used for setting manual focus,<wbr/> on devices that support
14216the MANUAL_<wbr/>SENSOR capability and have a variable-focus lens (see
14217<a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a>).<wbr/></p>
14218<p>A value of <code>0.<wbr/>0f</code> means infinity focus.<wbr/> The value set will be clamped to
14219<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>
14220<p>Like <a href="#controls_android.lens.focalLength">android.<wbr/>lens.<wbr/>focal<wbr/>Length</a>,<wbr/> this setting won't be applied
14221instantaneously,<wbr/> and it may take several frames before the lens
14222can move to the requested focus distance.<wbr/> While the lens is still moving,<wbr/>
14223<a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p>
14224<p>LEGACY devices support at most setting this to <code>0.<wbr/>0f</code>
14225for infinity focus.<wbr/></p>
14226            </td>
14227          </tr>
14228
14229
14230          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14231           <!-- end of entry -->
14232
14233
14234          <tr class="entry" id="controls_android.lens.opticalStabilizationMode">
14235            <td class="entry_name
14236             " rowspan="3">
14237              android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode
14238            </td>
14239            <td class="entry_type">
14240                <span class="entry_type_name entry_type_name_enum">byte</span>
14241
14242              <span class="entry_type_visibility"> [public]</span>
14243
14244
14245              <span class="entry_type_hwlevel">[limited] </span>
14246
14247
14248
14249                <ul class="entry_type_enum">
14250                  <li>
14251                    <span class="entry_type_enum_name">OFF (v3.2)</span>
14252                    <span class="entry_type_enum_notes"><p>Optical stabilization is unavailable.<wbr/></p></span>
14253                  </li>
14254                  <li>
14255                    <span class="entry_type_enum_name">ON (v3.2)</span>
14256                    <span class="entry_type_enum_optional">[optional]</span>
14257                    <span class="entry_type_enum_notes"><p>Optical stabilization is enabled.<wbr/></p></span>
14258                  </li>
14259                </ul>
14260
14261            </td> <!-- entry_type -->
14262
14263            <td class="entry_description">
14264              <p>Sets whether the camera device uses optical image stabilization (OIS)
14265when capturing images.<wbr/></p>
14266            </td>
14267
14268            <td class="entry_units">
14269            </td>
14270
14271            <td class="entry_range">
14272              <p><a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a></p>
14273            </td>
14274
14275            <td class="entry_hal_version">
14276              <p>3.<wbr/>2</p>
14277            </td>
14278
14279            <td class="entry_tags">
14280              <ul class="entry_tags">
14281                  <li><a href="#tag_V1">V1</a></li>
14282              </ul>
14283            </td>
14284
14285          </tr>
14286          <tr class="entries_header">
14287            <th class="th_details" colspan="6">Details</th>
14288          </tr>
14289          <tr class="entry_cont">
14290            <td class="entry_details" colspan="6">
14291              <p>OIS is used to compensate for motion blur due to small
14292movements of the camera during capture.<wbr/> Unlike digital image
14293stabilization (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> OIS
14294makes use of mechanical elements to stabilize the camera
14295sensor,<wbr/> and thus allows for longer exposure times before
14296camera shake becomes apparent.<wbr/></p>
14297<p>Switching between different optical stabilization modes may take several
14298frames to initialize,<wbr/> the camera device will report the current mode in
14299capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/> the
14300optical stabilization modes in the first several capture results may still
14301be "OFF",<wbr/> and it will become "ON" when the initialization is done.<wbr/></p>
14302<p>If a camera device supports both OIS and digital image stabilization
14303(<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may produce undesirable
14304interaction,<wbr/> so it is recommended not to enable both at the same time.<wbr/></p>
14305<p>Not all devices will support OIS; see
14306<a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a> for
14307available controls.<wbr/></p>
14308            </td>
14309          </tr>
14310
14311
14312          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14313           <!-- end of entry -->
14314
14315
14316
14317      <!-- end of kind -->
14318      </tbody>
14319      <tr><td colspan="7" class="kind">static</td></tr>
14320
14321      <thead class="entries_header">
14322        <tr>
14323          <th class="th_name">Property Name</th>
14324          <th class="th_type">Type</th>
14325          <th class="th_description">Description</th>
14326          <th class="th_units">Units</th>
14327          <th class="th_range">Range</th>
14328          <th class="th_hal_version">Initial HIDL HAL version</th>
14329          <th class="th_tags">Tags</th>
14330        </tr>
14331      </thead>
14332
14333      <tbody>
14334
14335
14336
14337
14338
14339
14340
14341
14342
14343
14344
14345
14346          <tr class="entry" id="static_android.lens.info.availableApertures">
14347            <td class="entry_name
14348             " rowspan="3">
14349              android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures
14350            </td>
14351            <td class="entry_type">
14352                <span class="entry_type_name">float</span>
14353                <span class="entry_type_container">x</span>
14354
14355                <span class="entry_type_array">
14356                  n
14357                </span>
14358              <span class="entry_type_visibility"> [public]</span>
14359
14360
14361              <span class="entry_type_hwlevel">[full] </span>
14362
14363
14364
14365
14366            </td> <!-- entry_type -->
14367
14368            <td class="entry_description">
14369              <p>List of aperture size values for <a href="#controls_android.lens.aperture">android.<wbr/>lens.<wbr/>aperture</a> that are
14370supported by this camera device.<wbr/></p>
14371            </td>
14372
14373            <td class="entry_units">
14374              The aperture f-number
14375            </td>
14376
14377            <td class="entry_range">
14378            </td>
14379
14380            <td class="entry_hal_version">
14381              <p>3.<wbr/>2</p>
14382            </td>
14383
14384            <td class="entry_tags">
14385              <ul class="entry_tags">
14386                  <li><a href="#tag_V1">V1</a></li>
14387              </ul>
14388            </td>
14389
14390          </tr>
14391          <tr class="entries_header">
14392            <th class="th_details" colspan="6">Details</th>
14393          </tr>
14394          <tr class="entry_cont">
14395            <td class="entry_details" colspan="6">
14396              <p>If the camera device doesn't support a variable lens aperture,<wbr/>
14397this list will contain only one value,<wbr/> which is the fixed aperture size.<wbr/></p>
14398<p>If the camera device supports a variable aperture,<wbr/> the aperture values
14399in this list will be sorted in ascending order.<wbr/></p>
14400            </td>
14401          </tr>
14402
14403
14404          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14405           <!-- end of entry -->
14406
14407
14408          <tr class="entry" id="static_android.lens.info.availableFilterDensities">
14409            <td class="entry_name
14410             " rowspan="3">
14411              android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities
14412            </td>
14413            <td class="entry_type">
14414                <span class="entry_type_name">float</span>
14415                <span class="entry_type_container">x</span>
14416
14417                <span class="entry_type_array">
14418                  n
14419                </span>
14420              <span class="entry_type_visibility"> [public]</span>
14421
14422
14423              <span class="entry_type_hwlevel">[full] </span>
14424
14425
14426
14427
14428            </td> <!-- entry_type -->
14429
14430            <td class="entry_description">
14431              <p>List of neutral density filter values for
14432<a href="#controls_android.lens.filterDensity">android.<wbr/>lens.<wbr/>filter<wbr/>Density</a> that are supported by this camera device.<wbr/></p>
14433            </td>
14434
14435            <td class="entry_units">
14436              Exposure value (EV)
14437            </td>
14438
14439            <td class="entry_range">
14440              <p>Values are &gt;= 0</p>
14441            </td>
14442
14443            <td class="entry_hal_version">
14444              <p>3.<wbr/>2</p>
14445            </td>
14446
14447            <td class="entry_tags">
14448              <ul class="entry_tags">
14449                  <li><a href="#tag_V1">V1</a></li>
14450              </ul>
14451            </td>
14452
14453          </tr>
14454          <tr class="entries_header">
14455            <th class="th_details" colspan="6">Details</th>
14456          </tr>
14457          <tr class="entry_cont">
14458            <td class="entry_details" colspan="6">
14459              <p>If a neutral density filter is not supported by this camera device,<wbr/>
14460this list will contain only 0.<wbr/> Otherwise,<wbr/> this list will include every
14461filter density supported by the camera device,<wbr/> in ascending order.<wbr/></p>
14462            </td>
14463          </tr>
14464
14465
14466          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14467           <!-- end of entry -->
14468
14469
14470          <tr class="entry" id="static_android.lens.info.availableFocalLengths">
14471            <td class="entry_name
14472             " rowspan="3">
14473              android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths
14474            </td>
14475            <td class="entry_type">
14476                <span class="entry_type_name">float</span>
14477                <span class="entry_type_container">x</span>
14478
14479                <span class="entry_type_array">
14480                  n
14481                </span>
14482              <span class="entry_type_visibility"> [public]</span>
14483
14484
14485              <span class="entry_type_hwlevel">[legacy] </span>
14486
14487
14488                <div class="entry_type_notes">The list of available focal lengths</div>
14489
14490
14491            </td> <!-- entry_type -->
14492
14493            <td class="entry_description">
14494              <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
14495device.<wbr/></p>
14496            </td>
14497
14498            <td class="entry_units">
14499              Millimeters
14500            </td>
14501
14502            <td class="entry_range">
14503              <p>Values are &gt; 0</p>
14504            </td>
14505
14506            <td class="entry_hal_version">
14507              <p>3.<wbr/>2</p>
14508            </td>
14509
14510            <td class="entry_tags">
14511              <ul class="entry_tags">
14512                  <li><a href="#tag_BC">BC</a></li>
14513                  <li><a href="#tag_V1">V1</a></li>
14514              </ul>
14515            </td>
14516
14517          </tr>
14518          <tr class="entries_header">
14519            <th class="th_details" colspan="6">Details</th>
14520          </tr>
14521          <tr class="entry_cont">
14522            <td class="entry_details" colspan="6">
14523              <p>If optical zoom is not supported,<wbr/> this list will only contain
14524a single value corresponding to the fixed focal length of the
14525device.<wbr/> Otherwise,<wbr/> this list will include every focal length supported
14526by the camera device,<wbr/> in ascending order.<wbr/></p>
14527            </td>
14528          </tr>
14529
14530
14531          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14532           <!-- end of entry -->
14533
14534
14535          <tr class="entry" id="static_android.lens.info.availableOpticalStabilization">
14536            <td class="entry_name
14537             " rowspan="3">
14538              android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization
14539            </td>
14540            <td class="entry_type">
14541                <span class="entry_type_name">byte</span>
14542                <span class="entry_type_container">x</span>
14543
14544                <span class="entry_type_array">
14545                  n
14546                </span>
14547              <span class="entry_type_visibility"> [public as enumList]</span>
14548
14549
14550              <span class="entry_type_hwlevel">[limited] </span>
14551
14552
14553                <div class="entry_type_notes">list of enums</div>
14554
14555
14556            </td> <!-- entry_type -->
14557
14558            <td class="entry_description">
14559              <p>List of optical image stabilization (OIS) modes for
14560<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>
14561            </td>
14562
14563            <td class="entry_units">
14564            </td>
14565
14566            <td class="entry_range">
14567              <p>Any value listed in <a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a></p>
14568            </td>
14569
14570            <td class="entry_hal_version">
14571              <p>3.<wbr/>2</p>
14572            </td>
14573
14574            <td class="entry_tags">
14575              <ul class="entry_tags">
14576                  <li><a href="#tag_V1">V1</a></li>
14577              </ul>
14578            </td>
14579
14580          </tr>
14581          <tr class="entries_header">
14582            <th class="th_details" colspan="6">Details</th>
14583          </tr>
14584          <tr class="entry_cont">
14585            <td class="entry_details" colspan="6">
14586              <p>If OIS is not supported by a given camera device,<wbr/> this list will
14587contain only OFF.<wbr/></p>
14588            </td>
14589          </tr>
14590
14591
14592          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14593           <!-- end of entry -->
14594
14595
14596          <tr class="entry" id="static_android.lens.info.hyperfocalDistance">
14597            <td class="entry_name
14598             " rowspan="3">
14599              android.<wbr/>lens.<wbr/>info.<wbr/>hyperfocal<wbr/>Distance
14600            </td>
14601            <td class="entry_type">
14602                <span class="entry_type_name">float</span>
14603
14604              <span class="entry_type_visibility"> [public]</span>
14605
14606
14607              <span class="entry_type_hwlevel">[limited] </span>
14608
14609
14610
14611
14612            </td> <!-- entry_type -->
14613
14614            <td class="entry_description">
14615              <p>Hyperfocal distance for this lens.<wbr/></p>
14616            </td>
14617
14618            <td class="entry_units">
14619              See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
14620            </td>
14621
14622            <td class="entry_range">
14623              <p>If lens is fixed focus,<wbr/> &gt;= 0.<wbr/> If lens has focuser unit,<wbr/> the value is
14624within <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>
14625            </td>
14626
14627            <td class="entry_hal_version">
14628              <p>3.<wbr/>2</p>
14629            </td>
14630
14631            <td class="entry_tags">
14632            </td>
14633
14634          </tr>
14635          <tr class="entries_header">
14636            <th class="th_details" colspan="6">Details</th>
14637          </tr>
14638          <tr class="entry_cont">
14639            <td class="entry_details" colspan="6">
14640              <p>If the lens is not fixed focus,<wbr/> the camera device will report this
14641field 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>
14642            </td>
14643          </tr>
14644
14645
14646          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14647           <!-- end of entry -->
14648
14649
14650          <tr class="entry" id="static_android.lens.info.minimumFocusDistance">
14651            <td class="entry_name
14652             " rowspan="5">
14653              android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance
14654            </td>
14655            <td class="entry_type">
14656                <span class="entry_type_name">float</span>
14657
14658              <span class="entry_type_visibility"> [public]</span>
14659
14660
14661              <span class="entry_type_hwlevel">[limited] </span>
14662
14663
14664
14665
14666            </td> <!-- entry_type -->
14667
14668            <td class="entry_description">
14669              <p>Shortest distance from frontmost surface
14670of the lens that can be brought into sharp focus.<wbr/></p>
14671            </td>
14672
14673            <td class="entry_units">
14674              See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
14675            </td>
14676
14677            <td class="entry_range">
14678              <p>&gt;= 0</p>
14679            </td>
14680
14681            <td class="entry_hal_version">
14682              <p>3.<wbr/>2</p>
14683            </td>
14684
14685            <td class="entry_tags">
14686              <ul class="entry_tags">
14687                  <li><a href="#tag_V1">V1</a></li>
14688              </ul>
14689            </td>
14690
14691          </tr>
14692          <tr class="entries_header">
14693            <th class="th_details" colspan="6">Details</th>
14694          </tr>
14695          <tr class="entry_cont">
14696            <td class="entry_details" colspan="6">
14697              <p>If the lens is fixed-focus,<wbr/> this will be
146980.<wbr/></p>
14699            </td>
14700          </tr>
14701
14702          <tr class="entries_header">
14703            <th class="th_details" colspan="6">HAL Implementation Details</th>
14704          </tr>
14705          <tr class="entry_cont">
14706            <td class="entry_details" colspan="6">
14707              <p>Mandatory for FULL devices; LIMITED devices
14708must always set this value to 0 for fixed-focus; and may omit
14709the minimum focus distance otherwise.<wbr/></p>
14710<p>This field is also mandatory for all devices advertising
14711the MANUAL_<wbr/>SENSOR capability.<wbr/></p>
14712            </td>
14713          </tr>
14714
14715          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14716           <!-- end of entry -->
14717
14718
14719          <tr class="entry" id="static_android.lens.info.shadingMapSize">
14720            <td class="entry_name
14721             " rowspan="3">
14722              android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size
14723            </td>
14724            <td class="entry_type">
14725                <span class="entry_type_name">int32</span>
14726                <span class="entry_type_container">x</span>
14727
14728                <span class="entry_type_array">
14729                  2
14730                </span>
14731              <span class="entry_type_visibility"> [ndk_public as size]</span>
14732
14733
14734              <span class="entry_type_hwlevel">[full] </span>
14735
14736
14737                <div class="entry_type_notes">width and height (N,<wbr/> M) of lens shading map provided by the camera device.<wbr/></div>
14738
14739
14740            </td> <!-- entry_type -->
14741
14742            <td class="entry_description">
14743              <p>Dimensions of lens shading map.<wbr/></p>
14744            </td>
14745
14746            <td class="entry_units">
14747            </td>
14748
14749            <td class="entry_range">
14750              <p>Both values &gt;= 1</p>
14751            </td>
14752
14753            <td class="entry_hal_version">
14754              <p>3.<wbr/>2</p>
14755            </td>
14756
14757            <td class="entry_tags">
14758              <ul class="entry_tags">
14759                  <li><a href="#tag_V1">V1</a></li>
14760              </ul>
14761            </td>
14762
14763          </tr>
14764          <tr class="entries_header">
14765            <th class="th_details" colspan="6">Details</th>
14766          </tr>
14767          <tr class="entry_cont">
14768            <td class="entry_details" colspan="6">
14769              <p>The map should be on the order of 30-40 rows and columns,<wbr/> and
14770must be smaller than 64x64.<wbr/></p>
14771            </td>
14772          </tr>
14773
14774
14775          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14776           <!-- end of entry -->
14777
14778
14779          <tr class="entry" id="static_android.lens.info.focusDistanceCalibration">
14780            <td class="entry_name
14781             " rowspan="5">
14782              android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration
14783            </td>
14784            <td class="entry_type">
14785                <span class="entry_type_name entry_type_name_enum">byte</span>
14786
14787              <span class="entry_type_visibility"> [public]</span>
14788
14789
14790              <span class="entry_type_hwlevel">[limited] </span>
14791
14792
14793
14794                <ul class="entry_type_enum">
14795                  <li>
14796                    <span class="entry_type_enum_name">UNCALIBRATED (v3.2)</span>
14797                    <span class="entry_type_enum_notes"><p>The lens focus distance is not accurate,<wbr/> and the units used for
14798<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> do not correspond to any physical units.<wbr/></p>
14799<p>Setting the lens to the same focus distance on separate occasions may
14800result in a different real focus distance,<wbr/> depending on factors such
14801as the orientation of the device,<wbr/> the age of the focusing mechanism,<wbr/>
14802and the device temperature.<wbr/> The focus distance value will still be
14803in 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
14804represents the farthest focus.<wbr/></p></span>
14805                  </li>
14806                  <li>
14807                    <span class="entry_type_enum_name">APPROXIMATE (v3.2)</span>
14808                    <span class="entry_type_enum_notes"><p>The lens focus distance is measured in diopters.<wbr/></p>
14809<p>However,<wbr/> setting the lens to the same focus distance
14810on separate occasions may result in a different real
14811focus distance,<wbr/> depending on factors such as the
14812orientation of the device,<wbr/> the age of the focusing
14813mechanism,<wbr/> and the device temperature.<wbr/></p></span>
14814                  </li>
14815                  <li>
14816                    <span class="entry_type_enum_name">CALIBRATED (v3.2)</span>
14817                    <span class="entry_type_enum_notes"><p>The lens focus distance is measured in diopters,<wbr/> and
14818is calibrated.<wbr/></p>
14819<p>The lens mechanism is calibrated so that setting the
14820same focus distance is repeatable on multiple
14821occasions with good accuracy,<wbr/> and the focus distance
14822corresponds to the real physical distance to the plane
14823of best focus.<wbr/></p></span>
14824                  </li>
14825                </ul>
14826
14827            </td> <!-- entry_type -->
14828
14829            <td class="entry_description">
14830              <p>The lens focus distance calibration quality.<wbr/></p>
14831            </td>
14832
14833            <td class="entry_units">
14834            </td>
14835
14836            <td class="entry_range">
14837            </td>
14838
14839            <td class="entry_hal_version">
14840              <p>3.<wbr/>2</p>
14841            </td>
14842
14843            <td class="entry_tags">
14844              <ul class="entry_tags">
14845                  <li><a href="#tag_V1">V1</a></li>
14846              </ul>
14847            </td>
14848
14849          </tr>
14850          <tr class="entries_header">
14851            <th class="th_details" colspan="6">Details</th>
14852          </tr>
14853          <tr class="entry_cont">
14854            <td class="entry_details" colspan="6">
14855              <p>The lens focus distance calibration quality determines the reliability of
14856focus related metadata entries,<wbr/> i.<wbr/>e.<wbr/> <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a>,<wbr/>
14857<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
14858<a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a>.<wbr/></p>
14859<p>APPROXIMATE and CALIBRATED devices report the focus metadata in
14860units of diopters (1/<wbr/>meter),<wbr/> so <code>0.<wbr/>0f</code> represents focusing at infinity,<wbr/>
14861and increasing positive numbers represent focusing closer and closer
14862to the camera device.<wbr/> The focus distance control also uses diopters
14863on these devices.<wbr/></p>
14864<p>UNCALIBRATED devices do not use units that are directly comparable
14865to any real physical measurement,<wbr/> but <code>0.<wbr/>0f</code> still represents farthest
14866focus,<wbr/> and <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a> represents the
14867nearest focus the device can achieve.<wbr/></p>
14868            </td>
14869          </tr>
14870
14871          <tr class="entries_header">
14872            <th class="th_details" colspan="6">HAL Implementation Details</th>
14873          </tr>
14874          <tr class="entry_cont">
14875            <td class="entry_details" colspan="6">
14876              <p>For devices advertise APPROXIMATE quality or higher,<wbr/> diopters 0 (infinity
14877focus) must work.<wbr/> When autofocus is disabled (<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> == OFF)
14878and the lens focus distance is set to 0 diopters
14879(<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> == 0),<wbr/> the lens will move to focus at infinity
14880and is stably focused at infinity even if the device tilts.<wbr/> It may take the
14881lens some time to move; during the move the lens state should be MOVING and
14882the output diopter value should be changing toward 0.<wbr/></p>
14883            </td>
14884          </tr>
14885
14886          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14887           <!-- end of entry -->
14888
14889
14890
14891
14892
14893          <tr class="entry" id="static_android.lens.facing">
14894            <td class="entry_name
14895             " rowspan="1">
14896              android.<wbr/>lens.<wbr/>facing
14897            </td>
14898            <td class="entry_type">
14899                <span class="entry_type_name entry_type_name_enum">byte</span>
14900
14901              <span class="entry_type_visibility"> [public]</span>
14902
14903
14904              <span class="entry_type_hwlevel">[legacy] </span>
14905
14906
14907
14908                <ul class="entry_type_enum">
14909                  <li>
14910                    <span class="entry_type_enum_name">FRONT (v3.2)</span>
14911                    <span class="entry_type_enum_notes"><p>The camera device faces the same direction as the device's screen.<wbr/></p></span>
14912                  </li>
14913                  <li>
14914                    <span class="entry_type_enum_name">BACK (v3.2)</span>
14915                    <span class="entry_type_enum_notes"><p>The camera device faces the opposite direction as the device's screen.<wbr/></p></span>
14916                  </li>
14917                  <li>
14918                    <span class="entry_type_enum_name">EXTERNAL (v3.2)</span>
14919                    <span class="entry_type_enum_notes"><p>The camera device is an external camera,<wbr/> and has no fixed facing relative to the
14920device's screen.<wbr/></p></span>
14921                  </li>
14922                </ul>
14923
14924            </td> <!-- entry_type -->
14925
14926            <td class="entry_description">
14927              <p>Direction the camera faces relative to
14928device screen.<wbr/></p>
14929            </td>
14930
14931            <td class="entry_units">
14932            </td>
14933
14934            <td class="entry_range">
14935            </td>
14936
14937            <td class="entry_hal_version">
14938              <p>3.<wbr/>2</p>
14939            </td>
14940
14941            <td class="entry_tags">
14942            </td>
14943
14944          </tr>
14945
14946
14947          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14948           <!-- end of entry -->
14949
14950
14951          <tr class="entry" id="static_android.lens.poseRotation">
14952            <td class="entry_name
14953             " rowspan="3">
14954              android.<wbr/>lens.<wbr/>pose<wbr/>Rotation
14955            </td>
14956            <td class="entry_type">
14957                <span class="entry_type_name">float</span>
14958                <span class="entry_type_container">x</span>
14959
14960                <span class="entry_type_array">
14961                  4
14962                </span>
14963              <span class="entry_type_visibility"> [public]</span>
14964
14965
14966
14967
14968
14969
14970            </td> <!-- entry_type -->
14971
14972            <td class="entry_description">
14973              <p>The orientation of the camera relative to the sensor
14974coordinate system.<wbr/></p>
14975            </td>
14976
14977            <td class="entry_units">
14978
14979            Quaternion coefficients
14980
14981            </td>
14982
14983            <td class="entry_range">
14984            </td>
14985
14986            <td class="entry_hal_version">
14987              <p>3.<wbr/>2</p>
14988            </td>
14989
14990            <td class="entry_tags">
14991              <ul class="entry_tags">
14992                  <li><a href="#tag_DEPTH">DEPTH</a></li>
14993              </ul>
14994            </td>
14995
14996          </tr>
14997          <tr class="entries_header">
14998            <th class="th_details" colspan="6">Details</th>
14999          </tr>
15000          <tr class="entry_cont">
15001            <td class="entry_details" colspan="6">
15002              <p>The four coefficients that describe the quaternion
15003rotation from the Android sensor coordinate system to a
15004camera-aligned coordinate system where the X-axis is
15005aligned with the long side of the image sensor,<wbr/> the Y-axis
15006is aligned with the short side of the image sensor,<wbr/> and
15007the Z-axis is aligned with the optical axis of the sensor.<wbr/></p>
15008<p>To convert from the quaternion coefficients <code>(x,<wbr/>y,<wbr/>z,<wbr/>w)</code>
15009to the axis of rotation <code>(a_<wbr/>x,<wbr/> a_<wbr/>y,<wbr/> a_<wbr/>z)</code> and rotation
15010amount <code>theta</code>,<wbr/> the following formulas can be used:</p>
15011<pre><code> theta = 2 * acos(w)
15012a_<wbr/>x = x /<wbr/> sin(theta/<wbr/>2)
15013a_<wbr/>y = y /<wbr/> sin(theta/<wbr/>2)
15014a_<wbr/>z = z /<wbr/> sin(theta/<wbr/>2)
15015</code></pre>
15016<p>To create a 3x3 rotation matrix that applies the rotation
15017defined by this quaternion,<wbr/> the following matrix can be
15018used:</p>
15019<pre><code>R = [ 1 - 2y^2 - 2z^2,<wbr/>       2xy - 2zw,<wbr/>       2xz + 2yw,<wbr/>
15020           2xy + 2zw,<wbr/> 1 - 2x^2 - 2z^2,<wbr/>       2yz - 2xw,<wbr/>
15021           2xz - 2yw,<wbr/>       2yz + 2xw,<wbr/> 1 - 2x^2 - 2y^2 ]
15022</code></pre>
15023<p>This matrix can then be used to apply the rotation to a
15024 column vector point with</p>
15025<p><code>p' = Rp</code></p>
15026<p>where <code>p</code> is in the device sensor coordinate system,<wbr/> and
15027 <code>p'</code> is in the camera-oriented coordinate system.<wbr/></p>
15028<p>If <a href="#static_android.lens.poseReference">android.<wbr/>lens.<wbr/>pose<wbr/>Reference</a> is UNDEFINED,<wbr/> the quaternion rotation cannot
15029 be accurately represented by the camera device,<wbr/> and will be represented by
15030 default values matching its default facing.<wbr/></p>
15031            </td>
15032          </tr>
15033
15034
15035          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15036           <!-- end of entry -->
15037
15038
15039          <tr class="entry" id="static_android.lens.poseTranslation">
15040            <td class="entry_name
15041             " rowspan="3">
15042              android.<wbr/>lens.<wbr/>pose<wbr/>Translation
15043            </td>
15044            <td class="entry_type">
15045                <span class="entry_type_name">float</span>
15046                <span class="entry_type_container">x</span>
15047
15048                <span class="entry_type_array">
15049                  3
15050                </span>
15051              <span class="entry_type_visibility"> [public]</span>
15052
15053
15054
15055
15056
15057
15058            </td> <!-- entry_type -->
15059
15060            <td class="entry_description">
15061              <p>Position of the camera optical center.<wbr/></p>
15062            </td>
15063
15064            <td class="entry_units">
15065              Meters
15066            </td>
15067
15068            <td class="entry_range">
15069            </td>
15070
15071            <td class="entry_hal_version">
15072              <p>3.<wbr/>2</p>
15073            </td>
15074
15075            <td class="entry_tags">
15076              <ul class="entry_tags">
15077                  <li><a href="#tag_DEPTH">DEPTH</a></li>
15078              </ul>
15079            </td>
15080
15081          </tr>
15082          <tr class="entries_header">
15083            <th class="th_details" colspan="6">Details</th>
15084          </tr>
15085          <tr class="entry_cont">
15086            <td class="entry_details" colspan="6">
15087              <p>The position of the camera device's lens optical center,<wbr/>
15088as a three-dimensional vector <code>(x,<wbr/>y,<wbr/>z)</code>.<wbr/></p>
15089<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
15090is relative to the optical center of the largest camera device facing in the same
15091direction as this camera,<wbr/> in the <a href="https://developer.android.com/reference/android/hardware/SensorEvent.html">Android sensor
15092coordinate axes</a>.<wbr/> Note that only the axis definitions are shared with the sensor
15093coordinate system,<wbr/> but not the origin.<wbr/></p>
15094<p>If this device is the largest or only camera device with a given facing,<wbr/> then this
15095position will be <code>(0,<wbr/> 0,<wbr/> 0)</code>; a camera device with a lens optical center located 3 cm
15096from the main sensor along the +X axis (to the right from the user's perspective) will
15097report <code>(0.<wbr/>03,<wbr/> 0,<wbr/> 0)</code>.<wbr/>  Note that this means that,<wbr/> for many computer vision
15098applications,<wbr/> the position needs to be negated to convert it to a translation from the
15099camera to the origin.<wbr/></p>
15100<p>To transform a pixel coordinates between two cameras facing the same direction,<wbr/> first
15101the source camera <a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a> must be corrected for.<wbr/>  Then the source
15102camera <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> needs to be applied,<wbr/> followed by the
15103<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
15104relative to the destination camera,<wbr/> the <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> of the destination
15105camera,<wbr/> and finally the inverse of <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> of the destination
15106camera.<wbr/> This obtains a radial-distortion-free coordinate in the destination camera pixel
15107coordinates.<wbr/></p>
15108<p>To compare this against a real image from the destination camera,<wbr/> the destination camera
15109image then needs to be corrected for radial distortion before comparison or sampling.<wbr/></p>
15110<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
15111the center of the primary gyroscope on the device.<wbr/> The axis definitions are the same as
15112with PRIMARY_<wbr/>CAMERA.<wbr/></p>
15113<p>When <a href="#static_android.lens.poseReference">android.<wbr/>lens.<wbr/>pose<wbr/>Reference</a> is UNDEFINED,<wbr/> this position cannot be accurately
15114represented by the camera device,<wbr/> and will be represented as <code>(0,<wbr/> 0,<wbr/> 0)</code>.<wbr/></p>
15115            </td>
15116          </tr>
15117
15118
15119          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15120           <!-- end of entry -->
15121
15122
15123          <tr class="entry" id="static_android.lens.intrinsicCalibration">
15124            <td class="entry_name
15125             " rowspan="3">
15126              android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration
15127            </td>
15128            <td class="entry_type">
15129                <span class="entry_type_name">float</span>
15130                <span class="entry_type_container">x</span>
15131
15132                <span class="entry_type_array">
15133                  5
15134                </span>
15135              <span class="entry_type_visibility"> [public]</span>
15136
15137
15138
15139
15140
15141
15142            </td> <!-- entry_type -->
15143
15144            <td class="entry_description">
15145              <p>The parameters for this camera device's intrinsic
15146calibration.<wbr/></p>
15147            </td>
15148
15149            <td class="entry_units">
15150
15151            Pixels in the
15152            android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size
15153            coordinate system.<wbr/>
15154
15155            </td>
15156
15157            <td class="entry_range">
15158            </td>
15159
15160            <td class="entry_hal_version">
15161              <p>3.<wbr/>2</p>
15162            </td>
15163
15164            <td class="entry_tags">
15165              <ul class="entry_tags">
15166                  <li><a href="#tag_DEPTH">DEPTH</a></li>
15167              </ul>
15168            </td>
15169
15170          </tr>
15171          <tr class="entries_header">
15172            <th class="th_details" colspan="6">Details</th>
15173          </tr>
15174          <tr class="entry_cont">
15175            <td class="entry_details" colspan="6">
15176              <p>The five calibration parameters that describe the
15177transform from camera-centric 3D coordinates to sensor
15178pixel coordinates:</p>
15179<pre><code>[f_<wbr/>x,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>x,<wbr/> c_<wbr/>y,<wbr/> s]
15180</code></pre>
15181<p>Where <code>f_<wbr/>x</code> and <code>f_<wbr/>y</code> are the horizontal and vertical
15182focal lengths,<wbr/> <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code> is the position of the optical
15183axis,<wbr/> and <code>s</code> is a skew parameter for the sensor plane not
15184being aligned with the lens plane.<wbr/></p>
15185<p>These are typically used within a transformation matrix K:</p>
15186<pre><code>K = [ f_<wbr/>x,<wbr/>   s,<wbr/> c_<wbr/>x,<wbr/>
15187       0,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>y,<wbr/>
15188       0    0,<wbr/>   1 ]
15189</code></pre>
15190<p>which can then be combined with the camera pose rotation
15191<code>R</code> and translation <code>t</code> (<a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> and
15192<a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a>,<wbr/> respectively) to calculate the
15193complete transform from world coordinates to pixel
15194coordinates:</p>
15195<pre><code>P = [ K 0   * [ R -Rt
15196     0 1 ]      0 1 ]
15197</code></pre>
15198<p>(Note the negation of poseTranslation when mapping from camera
15199to world coordinates,<wbr/> and multiplication by the rotation).<wbr/></p>
15200<p>With <code>p_<wbr/>w</code> being a point in the world coordinate system
15201and <code>p_<wbr/>s</code> being a point in the camera active pixel array
15202coordinate system,<wbr/> and with the mapping including the
15203homogeneous division by z:</p>
15204<pre><code> p_<wbr/>h = (x_<wbr/>h,<wbr/> y_<wbr/>h,<wbr/> z_<wbr/>h) = P p_<wbr/>w
15205p_<wbr/>s = p_<wbr/>h /<wbr/> z_<wbr/>h
15206</code></pre>
15207<p>so <code>[x_<wbr/>s,<wbr/> y_<wbr/>s]</code> is the pixel coordinates of the world
15208point,<wbr/> <code>z_<wbr/>s = 1</code>,<wbr/> and <code>w_<wbr/>s</code> is a measurement of disparity
15209(depth) in pixel coordinates.<wbr/></p>
15210<p>Note that the coordinate system for this transform is the
15211<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/>
15212where <code>(0,<wbr/>0)</code> is the top-left of the
15213preCorrectionActiveArraySize rectangle.<wbr/> Once the pose and
15214intrinsic calibration transforms have been applied to a
15215world point,<wbr/> then the <a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a>
15216transform needs to be applied,<wbr/> and the result adjusted to
15217be in the <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> coordinate
15218system (where <code>(0,<wbr/> 0)</code> is the top-left of the
15219activeArraySize rectangle),<wbr/> to determine the final pixel
15220coordinate of the world point for processed (non-RAW)
15221output buffers.<wbr/></p>
15222<p>For camera devices,<wbr/> the center of pixel <code>(x,<wbr/>y)</code> is located at
15223coordinate <code>(x + 0.<wbr/>5,<wbr/> y + 0.<wbr/>5)</code>.<wbr/>  So on a device with a
15224precorrection active array of size <code>(10,<wbr/>10)</code>,<wbr/> the valid pixel
15225indices go from <code>(0,<wbr/>0)-(9,<wbr/>9)</code>,<wbr/> and an perfectly-built camera would
15226have an optical center at the exact center of the pixel grid,<wbr/> at
15227coordinates <code>(5.<wbr/>0,<wbr/> 5.<wbr/>0)</code>,<wbr/> which is the top-left corner of pixel
15228<code>(5,<wbr/>5)</code>.<wbr/></p>
15229            </td>
15230          </tr>
15231
15232
15233          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15234           <!-- end of entry -->
15235
15236
15237          <tr class="entry" id="static_android.lens.radialDistortion">
15238            <td class="entry_name
15239                entry_name_deprecated
15240             " rowspan="3">
15241              android.<wbr/>lens.<wbr/>radial<wbr/>Distortion
15242            </td>
15243            <td class="entry_type">
15244                <span class="entry_type_name">float</span>
15245                <span class="entry_type_container">x</span>
15246
15247                <span class="entry_type_array">
15248                  6
15249                </span>
15250              <span class="entry_type_visibility"> [public]</span>
15251
15252
15253
15254              <span class="entry_type_deprecated">[deprecated] </span>
15255
15256
15257
15258            </td> <!-- entry_type -->
15259
15260            <td class="entry_description">
15261              <p>The correction coefficients to correct for this camera device's
15262radial and tangential lens distortion.<wbr/></p>
15263            </td>
15264
15265            <td class="entry_units">
15266
15267            Unitless coefficients.<wbr/>
15268
15269            </td>
15270
15271            <td class="entry_range">
15272              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15273            </td>
15274
15275            <td class="entry_hal_version">
15276              <p>3.<wbr/>2</p>
15277            </td>
15278
15279            <td class="entry_tags">
15280              <ul class="entry_tags">
15281                  <li><a href="#tag_DEPTH">DEPTH</a></li>
15282              </ul>
15283            </td>
15284
15285          </tr>
15286          <tr class="entries_header">
15287            <th class="th_details" colspan="6">Details</th>
15288          </tr>
15289          <tr class="entry_cont">
15290            <td class="entry_details" colspan="6">
15291              <p>Four radial distortion coefficients <code>[kappa_<wbr/>0,<wbr/> kappa_<wbr/>1,<wbr/> kappa_<wbr/>2,<wbr/>
15292kappa_<wbr/>3]</code> and two tangential distortion coefficients
15293<code>[kappa_<wbr/>4,<wbr/> kappa_<wbr/>5]</code> that can be used to correct the
15294lens's geometric distortion with the mapping equations:</p>
15295<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 ) +
15296       kappa_<wbr/>4 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>5 * ( r^2 + 2 * x_<wbr/>i^2 )
15297 y_<wbr/>c = y_<wbr/>i * ( kappa_<wbr/>0 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) +
15298       kappa_<wbr/>5 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>4 * ( r^2 + 2 * y_<wbr/>i^2 )
15299</code></pre>
15300<p>Here,<wbr/> <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> are the coordinates to sample in the
15301input image that correspond to the pixel values in the
15302corrected image at the coordinate <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code>:</p>
15303<pre><code> correctedImage(x_<wbr/>i,<wbr/> y_<wbr/>i) = sample_<wbr/>at(x_<wbr/>c,<wbr/> y_<wbr/>c,<wbr/> inputImage)
15304</code></pre>
15305<p>The pixel coordinates are defined in a normalized
15306coordinate system related to the
15307<a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> calibration fields.<wbr/>
15308Both <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
15309lens optical center <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code>.<wbr/> The maximum magnitudes
15310of both x and y coordinates are normalized to be 1 at the
15311edge further from the optical center,<wbr/> so the range
15312for both dimensions is <code>-1 &lt;= x &lt;= 1</code>.<wbr/></p>
15313<p>Finally,<wbr/> <code>r</code> represents the radial distance from the
15314optical center,<wbr/> <code>r^2 = x_<wbr/>i^2 + y_<wbr/>i^2</code>,<wbr/> and its magnitude
15315is therefore no larger than <code>|<wbr/>r|<wbr/> &lt;= sqrt(2)</code>.<wbr/></p>
15316<p>The distortion model used is the Brown-Conrady model.<wbr/></p>
15317            </td>
15318          </tr>
15319
15320
15321          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15322           <!-- end of entry -->
15323
15324
15325          <tr class="entry" id="static_android.lens.poseReference">
15326            <td class="entry_name
15327             " rowspan="3">
15328              android.<wbr/>lens.<wbr/>pose<wbr/>Reference
15329            </td>
15330            <td class="entry_type">
15331                <span class="entry_type_name entry_type_name_enum">byte</span>
15332
15333              <span class="entry_type_visibility"> [public]</span>
15334
15335
15336
15337
15338
15339                <ul class="entry_type_enum">
15340                  <li>
15341                    <span class="entry_type_enum_name">PRIMARY_CAMERA (v3.3)</span>
15342                    <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
15343the largest camera device facing the same direction as this camera.<wbr/></p>
15344<p>This is the default value for API levels before Android P.<wbr/></p></span>
15345                  </li>
15346                  <li>
15347                    <span class="entry_type_enum_name">GYROSCOPE (v3.3)</span>
15348                    <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
15349primary gyroscope of this Android device.<wbr/></p></span>
15350                  </li>
15351                  <li>
15352                    <span class="entry_type_enum_name">UNDEFINED (v3.5)</span>
15353                    <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>
15354and <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> accurately enough.<wbr/> One such example is a camera device
15355on the cover of a foldable phone: in order to measure the pose translation and rotation,<wbr/>
15356some kind of hinge position sensor would be needed.<wbr/></p>
15357<p>The value of <a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a> must be all zeros,<wbr/> and
15358<a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> must be values matching its default facing.<wbr/></p></span>
15359                  </li>
15360                </ul>
15361
15362            </td> <!-- entry_type -->
15363
15364            <td class="entry_description">
15365              <p>The origin for <a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a>,<wbr/> and the accuracy of
15366<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>
15367            </td>
15368
15369            <td class="entry_units">
15370            </td>
15371
15372            <td class="entry_range">
15373            </td>
15374
15375            <td class="entry_hal_version">
15376              <p>3.<wbr/>3</p>
15377            </td>
15378
15379            <td class="entry_tags">
15380            </td>
15381
15382          </tr>
15383          <tr class="entries_header">
15384            <th class="th_details" colspan="6">Details</th>
15385          </tr>
15386          <tr class="entry_cont">
15387            <td class="entry_details" colspan="6">
15388              <p>Different calibration methods and use cases can produce better or worse results
15389depending on the selected coordinate origin.<wbr/></p>
15390            </td>
15391          </tr>
15392
15393
15394          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15395           <!-- end of entry -->
15396
15397
15398          <tr class="entry" id="static_android.lens.distortion">
15399            <td class="entry_name
15400             " rowspan="3">
15401              android.<wbr/>lens.<wbr/>distortion
15402            </td>
15403            <td class="entry_type">
15404                <span class="entry_type_name">float</span>
15405                <span class="entry_type_container">x</span>
15406
15407                <span class="entry_type_array">
15408                  5
15409                </span>
15410              <span class="entry_type_visibility"> [public]</span>
15411
15412
15413
15414
15415
15416
15417            </td> <!-- entry_type -->
15418
15419            <td class="entry_description">
15420              <p>The correction coefficients to correct for this camera device's
15421radial and tangential lens distortion.<wbr/></p>
15422<p>Replaces the deprecated <a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a> field,<wbr/> which was
15423inconsistently defined.<wbr/></p>
15424            </td>
15425
15426            <td class="entry_units">
15427
15428            Unitless coefficients.<wbr/>
15429
15430            </td>
15431
15432            <td class="entry_range">
15433            </td>
15434
15435            <td class="entry_hal_version">
15436              <p>3.<wbr/>3</p>
15437            </td>
15438
15439            <td class="entry_tags">
15440              <ul class="entry_tags">
15441                  <li><a href="#tag_DEPTH">DEPTH</a></li>
15442              </ul>
15443            </td>
15444
15445          </tr>
15446          <tr class="entries_header">
15447            <th class="th_details" colspan="6">Details</th>
15448          </tr>
15449          <tr class="entry_cont">
15450            <td class="entry_details" colspan="6">
15451              <p>Three radial distortion coefficients <code>[kappa_<wbr/>1,<wbr/> kappa_<wbr/>2,<wbr/>
15452kappa_<wbr/>3]</code> and two tangential distortion coefficients
15453<code>[kappa_<wbr/>4,<wbr/> kappa_<wbr/>5]</code> that can be used to correct the
15454lens's geometric distortion with the mapping equations:</p>
15455<pre><code> x_<wbr/>c = x_<wbr/>i * ( 1 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) +
15456       kappa_<wbr/>4 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>5 * ( r^2 + 2 * x_<wbr/>i^2 )
15457 y_<wbr/>c = y_<wbr/>i * ( 1 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) +
15458       kappa_<wbr/>5 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>4 * ( r^2 + 2 * y_<wbr/>i^2 )
15459</code></pre>
15460<p>Here,<wbr/> <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> are the coordinates to sample in the
15461input image that correspond to the pixel values in the
15462corrected image at the coordinate <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code>:</p>
15463<pre><code> correctedImage(x_<wbr/>i,<wbr/> y_<wbr/>i) = sample_<wbr/>at(x_<wbr/>c,<wbr/> y_<wbr/>c,<wbr/> inputImage)
15464</code></pre>
15465<p>The pixel coordinates are defined in a coordinate system
15466related to the <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a>
15467calibration fields; see that entry for details of the mapping stages.<wbr/>
15468Both <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code> and <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code>
15469have <code>(0,<wbr/>0)</code> at the lens optical center <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code>,<wbr/> and
15470the range of the coordinates depends on the focal length
15471terms of the intrinsic calibration.<wbr/></p>
15472<p>Finally,<wbr/> <code>r</code> represents the radial distance from the
15473optical center,<wbr/> <code>r^2 = x_<wbr/>i^2 + y_<wbr/>i^2</code>.<wbr/></p>
15474<p>The distortion model used is the Brown-Conrady model.<wbr/></p>
15475            </td>
15476          </tr>
15477
15478
15479          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15480           <!-- end of entry -->
15481
15482
15483          <tr class="entry" id="static_android.lens.distortionMaximumResolution">
15484            <td class="entry_name
15485             " rowspan="3">
15486              android.<wbr/>lens.<wbr/>distortion<wbr/>Maximum<wbr/>Resolution
15487            </td>
15488            <td class="entry_type">
15489                <span class="entry_type_name">float</span>
15490                <span class="entry_type_container">x</span>
15491
15492                <span class="entry_type_array">
15493                  5
15494                </span>
15495              <span class="entry_type_visibility"> [public]</span>
15496
15497
15498
15499
15500
15501
15502            </td> <!-- entry_type -->
15503
15504            <td class="entry_description">
15505              <p>The correction coefficients to correct for this camera device's
15506radial and tangential lens distortion for a
15507CaptureRequest with <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> set to
15508<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>
15509            </td>
15510
15511            <td class="entry_units">
15512
15513            Unitless coefficients.<wbr/>
15514
15515            </td>
15516
15517            <td class="entry_range">
15518            </td>
15519
15520            <td class="entry_hal_version">
15521              <p>3.<wbr/>6</p>
15522            </td>
15523
15524            <td class="entry_tags">
15525              <ul class="entry_tags">
15526                  <li><a href="#tag_DEPTH">DEPTH</a></li>
15527              </ul>
15528            </td>
15529
15530          </tr>
15531          <tr class="entries_header">
15532            <th class="th_details" colspan="6">Details</th>
15533          </tr>
15534          <tr class="entry_cont">
15535            <td class="entry_details" colspan="6">
15536              <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
15537<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>
15538            </td>
15539          </tr>
15540
15541
15542          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15543           <!-- end of entry -->
15544
15545
15546          <tr class="entry" id="static_android.lens.intrinsicCalibrationMaximumResolution">
15547            <td class="entry_name
15548             " rowspan="3">
15549              android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration<wbr/>Maximum<wbr/>Resolution
15550            </td>
15551            <td class="entry_type">
15552                <span class="entry_type_name">float</span>
15553                <span class="entry_type_container">x</span>
15554
15555                <span class="entry_type_array">
15556                  5
15557                </span>
15558              <span class="entry_type_visibility"> [public]</span>
15559
15560
15561
15562
15563
15564
15565            </td> <!-- entry_type -->
15566
15567            <td class="entry_description">
15568              <p>The parameters for this camera device's intrinsic
15569calibration when <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to
15570<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>
15571            </td>
15572
15573            <td class="entry_units">
15574
15575            Pixels in the
15576            android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution
15577            coordinate system.<wbr/>
15578
15579            </td>
15580
15581            <td class="entry_range">
15582            </td>
15583
15584            <td class="entry_hal_version">
15585              <p>3.<wbr/>6</p>
15586            </td>
15587
15588            <td class="entry_tags">
15589              <ul class="entry_tags">
15590                  <li><a href="#tag_DEPTH">DEPTH</a></li>
15591              </ul>
15592            </td>
15593
15594          </tr>
15595          <tr class="entries_header">
15596            <th class="th_details" colspan="6">Details</th>
15597          </tr>
15598          <tr class="entry_cont">
15599            <td class="entry_details" colspan="6">
15600              <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
15601<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>
15602            </td>
15603          </tr>
15604
15605
15606          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15607           <!-- end of entry -->
15608
15609
15610
15611      <!-- end of kind -->
15612      </tbody>
15613      <tr><td colspan="7" class="kind">dynamic</td></tr>
15614
15615      <thead class="entries_header">
15616        <tr>
15617          <th class="th_name">Property Name</th>
15618          <th class="th_type">Type</th>
15619          <th class="th_description">Description</th>
15620          <th class="th_units">Units</th>
15621          <th class="th_range">Range</th>
15622          <th class="th_hal_version">Initial HIDL HAL version</th>
15623          <th class="th_tags">Tags</th>
15624        </tr>
15625      </thead>
15626
15627      <tbody>
15628
15629
15630
15631
15632
15633
15634
15635
15636
15637
15638          <tr class="entry" id="dynamic_android.lens.aperture">
15639            <td class="entry_name
15640             " rowspan="3">
15641              android.<wbr/>lens.<wbr/>aperture
15642            </td>
15643            <td class="entry_type">
15644                <span class="entry_type_name">float</span>
15645
15646              <span class="entry_type_visibility"> [public]</span>
15647
15648
15649              <span class="entry_type_hwlevel">[full] </span>
15650
15651
15652
15653
15654            </td> <!-- entry_type -->
15655
15656            <td class="entry_description">
15657              <p>The desired lens aperture size,<wbr/> as a ratio of lens focal length to the
15658effective aperture diameter.<wbr/></p>
15659            </td>
15660
15661            <td class="entry_units">
15662              The f-number (f/<wbr/>N)
15663            </td>
15664
15665            <td class="entry_range">
15666              <p><a href="#static_android.lens.info.availableApertures">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures</a></p>
15667            </td>
15668
15669            <td class="entry_hal_version">
15670              <p>3.<wbr/>2</p>
15671            </td>
15672
15673            <td class="entry_tags">
15674              <ul class="entry_tags">
15675                  <li><a href="#tag_V1">V1</a></li>
15676              </ul>
15677            </td>
15678
15679          </tr>
15680          <tr class="entries_header">
15681            <th class="th_details" colspan="6">Details</th>
15682          </tr>
15683          <tr class="entry_cont">
15684            <td class="entry_details" colspan="6">
15685              <p>Setting this value is only supported on the camera devices that have a variable
15686aperture lens.<wbr/></p>
15687<p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/>
15688this can be set along with <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
15689<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>
15690to achieve manual exposure control.<wbr/></p>
15691<p>The requested aperture value may take several frames to reach the
15692requested value; the camera device will report the current (intermediate)
15693aperture size in capture result metadata while the aperture is changing.<wbr/>
15694While 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>
15695<p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is one of
15696the ON modes,<wbr/> this will be overridden by the camera device
15697auto-exposure algorithm,<wbr/> the overridden values are then provided
15698back to the user in the corresponding result.<wbr/></p>
15699            </td>
15700          </tr>
15701
15702
15703          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15704           <!-- end of entry -->
15705
15706
15707          <tr class="entry" id="dynamic_android.lens.filterDensity">
15708            <td class="entry_name
15709             " rowspan="3">
15710              android.<wbr/>lens.<wbr/>filter<wbr/>Density
15711            </td>
15712            <td class="entry_type">
15713                <span class="entry_type_name">float</span>
15714
15715              <span class="entry_type_visibility"> [public]</span>
15716
15717
15718              <span class="entry_type_hwlevel">[full] </span>
15719
15720
15721
15722
15723            </td> <!-- entry_type -->
15724
15725            <td class="entry_description">
15726              <p>The desired setting for the lens neutral density filter(s).<wbr/></p>
15727            </td>
15728
15729            <td class="entry_units">
15730              Exposure Value (EV)
15731            </td>
15732
15733            <td class="entry_range">
15734              <p><a href="#static_android.lens.info.availableFilterDensities">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities</a></p>
15735            </td>
15736
15737            <td class="entry_hal_version">
15738              <p>3.<wbr/>2</p>
15739            </td>
15740
15741            <td class="entry_tags">
15742              <ul class="entry_tags">
15743                  <li><a href="#tag_V1">V1</a></li>
15744              </ul>
15745            </td>
15746
15747          </tr>
15748          <tr class="entries_header">
15749            <th class="th_details" colspan="6">Details</th>
15750          </tr>
15751          <tr class="entry_cont">
15752            <td class="entry_details" colspan="6">
15753              <p>This control will not be supported on most camera devices.<wbr/></p>
15754<p>Lens filters are typically used to lower the amount of light the
15755sensor is exposed to (measured in steps of EV).<wbr/> As used here,<wbr/> an EV
15756step is the standard logarithmic representation,<wbr/> which are
15757non-negative,<wbr/> and inversely proportional to the amount of light
15758hitting the sensor.<wbr/>  For example,<wbr/> setting this to 0 would result
15759in no reduction of the incoming light,<wbr/> and setting this to 2 would
15760mean that the filter is set to reduce incoming light by two stops
15761(allowing 1/<wbr/>4 of the prior amount of light to the sensor).<wbr/></p>
15762<p>It may take several frames before the lens filter density changes
15763to the requested value.<wbr/> While the filter density is still changing,<wbr/>
15764<a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p>
15765            </td>
15766          </tr>
15767
15768
15769          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15770           <!-- end of entry -->
15771
15772
15773          <tr class="entry" id="dynamic_android.lens.focalLength">
15774            <td class="entry_name
15775             " rowspan="5">
15776              android.<wbr/>lens.<wbr/>focal<wbr/>Length
15777            </td>
15778            <td class="entry_type">
15779                <span class="entry_type_name">float</span>
15780
15781              <span class="entry_type_visibility"> [public]</span>
15782
15783
15784              <span class="entry_type_hwlevel">[legacy] </span>
15785
15786
15787
15788
15789            </td> <!-- entry_type -->
15790
15791            <td class="entry_description">
15792              <p>The desired lens focal length; used for optical zoom.<wbr/></p>
15793            </td>
15794
15795            <td class="entry_units">
15796              Millimeters
15797            </td>
15798
15799            <td class="entry_range">
15800              <p><a href="#static_android.lens.info.availableFocalLengths">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths</a></p>
15801            </td>
15802
15803            <td class="entry_hal_version">
15804              <p>3.<wbr/>2</p>
15805            </td>
15806
15807            <td class="entry_tags">
15808              <ul class="entry_tags">
15809                  <li><a href="#tag_BC">BC</a></li>
15810              </ul>
15811            </td>
15812
15813          </tr>
15814          <tr class="entries_header">
15815            <th class="th_details" colspan="6">Details</th>
15816          </tr>
15817          <tr class="entry_cont">
15818            <td class="entry_details" colspan="6">
15819              <p>This setting controls the physical focal length of the camera
15820device's lens.<wbr/> Changing the focal length changes the field of
15821view of the camera device,<wbr/> and is usually used for optical zoom.<wbr/></p>
15822<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
15823setting won't be applied instantaneously,<wbr/> and it may take several
15824frames before the lens can change to the requested focal length.<wbr/>
15825While the focal length is still changing,<wbr/> <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will
15826be set to MOVING.<wbr/></p>
15827<p>Optical zoom via this control will not be supported on most devices.<wbr/> Starting from API
15828level 30,<wbr/> the camera device may combine optical and digital zoom through the
15829<a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> control.<wbr/></p>
15830            </td>
15831          </tr>
15832
15833          <tr class="entries_header">
15834            <th class="th_details" colspan="6">HAL Implementation Details</th>
15835          </tr>
15836          <tr class="entry_cont">
15837            <td class="entry_details" colspan="6">
15838              <p>For a logical camera device supporting both optical and digital zoom,<wbr/> if focalLength and
15839cropRegion change in the same request,<wbr/> the camera device must make sure that the new
15840focalLength and cropRegion take effect in the same frame.<wbr/> This is to make sure that there
15841is no visible field-of-view jump during zoom.<wbr/> For example,<wbr/> if cropRegion is applied
15842immediately,<wbr/> but focalLength takes more than 1 frame to take effect,<wbr/> the camera device
15843will delay the cropRegion so that it's synchronized with focalLength.<wbr/></p>
15844<p>Starting from API level 30,<wbr/> it's strongly recommended for HAL to implement the
15845combination 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
15846lieu 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>
15847            </td>
15848          </tr>
15849
15850          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15851           <!-- end of entry -->
15852
15853
15854          <tr class="entry" id="dynamic_android.lens.focusDistance">
15855            <td class="entry_name
15856             " rowspan="3">
15857              android.<wbr/>lens.<wbr/>focus<wbr/>Distance
15858            </td>
15859            <td class="entry_type">
15860                <span class="entry_type_name">float</span>
15861
15862              <span class="entry_type_visibility"> [public]</span>
15863
15864
15865              <span class="entry_type_hwlevel">[full] </span>
15866
15867
15868
15869
15870            </td> <!-- entry_type -->
15871
15872            <td class="entry_description">
15873              <p>Desired distance to plane of sharpest focus,<wbr/>
15874measured from frontmost surface of the lens.<wbr/></p>
15875            </td>
15876
15877            <td class="entry_units">
15878              See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
15879            </td>
15880
15881            <td class="entry_range">
15882              <p>&gt;= 0</p>
15883            </td>
15884
15885            <td class="entry_hal_version">
15886              <p>3.<wbr/>2</p>
15887            </td>
15888
15889            <td class="entry_tags">
15890              <ul class="entry_tags">
15891                  <li><a href="#tag_BC">BC</a></li>
15892              </ul>
15893            </td>
15894
15895          </tr>
15896          <tr class="entries_header">
15897            <th class="th_details" colspan="6">Details</th>
15898          </tr>
15899          <tr class="entry_cont">
15900            <td class="entry_details" colspan="6">
15901              <p>Should be zero for fixed-focus cameras</p>
15902            </td>
15903          </tr>
15904
15905
15906          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15907           <!-- end of entry -->
15908
15909
15910          <tr class="entry" id="dynamic_android.lens.focusRange">
15911            <td class="entry_name
15912             " rowspan="3">
15913              android.<wbr/>lens.<wbr/>focus<wbr/>Range
15914            </td>
15915            <td class="entry_type">
15916                <span class="entry_type_name">float</span>
15917                <span class="entry_type_container">x</span>
15918
15919                <span class="entry_type_array">
15920                  2
15921                </span>
15922              <span class="entry_type_visibility"> [public as pairFloatFloat]</span>
15923
15924
15925              <span class="entry_type_hwlevel">[limited] </span>
15926
15927
15928                <div class="entry_type_notes">Range of scene distances that are in focus</div>
15929
15930
15931            </td> <!-- entry_type -->
15932
15933            <td class="entry_description">
15934              <p>The range of scene distances that are in
15935sharp focus (depth of field).<wbr/></p>
15936            </td>
15937
15938            <td class="entry_units">
15939              A pair of focus distances in diopters: (near,<wbr/>
15940          far); see android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details.<wbr/>
15941            </td>
15942
15943            <td class="entry_range">
15944              <p>&gt;=0</p>
15945            </td>
15946
15947            <td class="entry_hal_version">
15948              <p>3.<wbr/>2</p>
15949            </td>
15950
15951            <td class="entry_tags">
15952              <ul class="entry_tags">
15953                  <li><a href="#tag_BC">BC</a></li>
15954              </ul>
15955            </td>
15956
15957          </tr>
15958          <tr class="entries_header">
15959            <th class="th_details" colspan="6">Details</th>
15960          </tr>
15961          <tr class="entry_cont">
15962            <td class="entry_details" colspan="6">
15963              <p>If variable focus not supported,<wbr/> can still report
15964fixed depth of field range</p>
15965            </td>
15966          </tr>
15967
15968
15969          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15970           <!-- end of entry -->
15971
15972
15973          <tr class="entry" id="dynamic_android.lens.opticalStabilizationMode">
15974            <td class="entry_name
15975             " rowspan="3">
15976              android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode
15977            </td>
15978            <td class="entry_type">
15979                <span class="entry_type_name entry_type_name_enum">byte</span>
15980
15981              <span class="entry_type_visibility"> [public]</span>
15982
15983
15984              <span class="entry_type_hwlevel">[limited] </span>
15985
15986
15987
15988                <ul class="entry_type_enum">
15989                  <li>
15990                    <span class="entry_type_enum_name">OFF (v3.2)</span>
15991                    <span class="entry_type_enum_notes"><p>Optical stabilization is unavailable.<wbr/></p></span>
15992                  </li>
15993                  <li>
15994                    <span class="entry_type_enum_name">ON (v3.2)</span>
15995                    <span class="entry_type_enum_optional">[optional]</span>
15996                    <span class="entry_type_enum_notes"><p>Optical stabilization is enabled.<wbr/></p></span>
15997                  </li>
15998                </ul>
15999
16000            </td> <!-- entry_type -->
16001
16002            <td class="entry_description">
16003              <p>Sets whether the camera device uses optical image stabilization (OIS)
16004when capturing images.<wbr/></p>
16005            </td>
16006
16007            <td class="entry_units">
16008            </td>
16009
16010            <td class="entry_range">
16011              <p><a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a></p>
16012            </td>
16013
16014            <td class="entry_hal_version">
16015              <p>3.<wbr/>2</p>
16016            </td>
16017
16018            <td class="entry_tags">
16019              <ul class="entry_tags">
16020                  <li><a href="#tag_V1">V1</a></li>
16021              </ul>
16022            </td>
16023
16024          </tr>
16025          <tr class="entries_header">
16026            <th class="th_details" colspan="6">Details</th>
16027          </tr>
16028          <tr class="entry_cont">
16029            <td class="entry_details" colspan="6">
16030              <p>OIS is used to compensate for motion blur due to small
16031movements of the camera during capture.<wbr/> Unlike digital image
16032stabilization (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> OIS
16033makes use of mechanical elements to stabilize the camera
16034sensor,<wbr/> and thus allows for longer exposure times before
16035camera shake becomes apparent.<wbr/></p>
16036<p>Switching between different optical stabilization modes may take several
16037frames to initialize,<wbr/> the camera device will report the current mode in
16038capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/> the
16039optical stabilization modes in the first several capture results may still
16040be "OFF",<wbr/> and it will become "ON" when the initialization is done.<wbr/></p>
16041<p>If a camera device supports both OIS and digital image stabilization
16042(<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may produce undesirable
16043interaction,<wbr/> so it is recommended not to enable both at the same time.<wbr/></p>
16044<p>Not all devices will support OIS; see
16045<a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a> for
16046available controls.<wbr/></p>
16047            </td>
16048          </tr>
16049
16050
16051          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16052           <!-- end of entry -->
16053
16054
16055          <tr class="entry" id="dynamic_android.lens.state">
16056            <td class="entry_name
16057             " rowspan="3">
16058              android.<wbr/>lens.<wbr/>state
16059            </td>
16060            <td class="entry_type">
16061                <span class="entry_type_name entry_type_name_enum">byte</span>
16062
16063              <span class="entry_type_visibility"> [public]</span>
16064
16065
16066              <span class="entry_type_hwlevel">[limited] </span>
16067
16068
16069
16070                <ul class="entry_type_enum">
16071                  <li>
16072                    <span class="entry_type_enum_name">STATIONARY (v3.2)</span>
16073                    <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/>
16074<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>
16075                  </li>
16076                  <li>
16077                    <span class="entry_type_enum_name">MOVING (v3.2)</span>
16078                    <span class="entry_type_enum_notes"><p>One or several of the lens parameters
16079(<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/>
16080<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
16081currently changing.<wbr/></p></span>
16082                  </li>
16083                </ul>
16084
16085            </td> <!-- entry_type -->
16086
16087            <td class="entry_description">
16088              <p>Current lens status.<wbr/></p>
16089            </td>
16090
16091            <td class="entry_units">
16092            </td>
16093
16094            <td class="entry_range">
16095            </td>
16096
16097            <td class="entry_hal_version">
16098              <p>3.<wbr/>2</p>
16099            </td>
16100
16101            <td class="entry_tags">
16102              <ul class="entry_tags">
16103                  <li><a href="#tag_V1">V1</a></li>
16104              </ul>
16105            </td>
16106
16107          </tr>
16108          <tr class="entries_header">
16109            <th class="th_details" colspan="6">Details</th>
16110          </tr>
16111          <tr class="entry_cont">
16112            <td class="entry_details" colspan="6">
16113              <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/>
16114<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/>
16115they may take several frames to reach the requested values.<wbr/> This state indicates
16116the current status of the lens parameters.<wbr/></p>
16117<p>When the state is STATIONARY,<wbr/> the lens parameters are not changing.<wbr/> This could be
16118either because the parameters are all fixed,<wbr/> or because the lens has had enough
16119time to reach the most recently-requested values.<wbr/>
16120If all these lens parameters are not changable for a camera device,<wbr/> as listed below:</p>
16121<ul>
16122<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
16123<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> parameter will always be 0.<wbr/></li>
16124<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/>
16125which means the optical zoom is not supported.<wbr/></li>
16126<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>
16127<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>
16128</ul>
16129<p>Then this state will always be STATIONARY.<wbr/></p>
16130<p>When the state is MOVING,<wbr/> it indicates that at least one of the lens parameters
16131is changing.<wbr/></p>
16132            </td>
16133          </tr>
16134
16135
16136          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16137           <!-- end of entry -->
16138
16139
16140          <tr class="entry" id="dynamic_android.lens.poseRotation">
16141            <td class="entry_name
16142             " rowspan="3">
16143              android.<wbr/>lens.<wbr/>pose<wbr/>Rotation
16144            </td>
16145            <td class="entry_type">
16146                <span class="entry_type_name">float</span>
16147                <span class="entry_type_container">x</span>
16148
16149                <span class="entry_type_array">
16150                  4
16151                </span>
16152              <span class="entry_type_visibility"> [public]</span>
16153
16154
16155
16156
16157
16158
16159            </td> <!-- entry_type -->
16160
16161            <td class="entry_description">
16162              <p>The orientation of the camera relative to the sensor
16163coordinate system.<wbr/></p>
16164            </td>
16165
16166            <td class="entry_units">
16167
16168            Quaternion coefficients
16169
16170            </td>
16171
16172            <td class="entry_range">
16173            </td>
16174
16175            <td class="entry_hal_version">
16176              <p>3.<wbr/>2</p>
16177            </td>
16178
16179            <td class="entry_tags">
16180              <ul class="entry_tags">
16181                  <li><a href="#tag_DEPTH">DEPTH</a></li>
16182              </ul>
16183            </td>
16184
16185          </tr>
16186          <tr class="entries_header">
16187            <th class="th_details" colspan="6">Details</th>
16188          </tr>
16189          <tr class="entry_cont">
16190            <td class="entry_details" colspan="6">
16191              <p>The four coefficients that describe the quaternion
16192rotation from the Android sensor coordinate system to a
16193camera-aligned coordinate system where the X-axis is
16194aligned with the long side of the image sensor,<wbr/> the Y-axis
16195is aligned with the short side of the image sensor,<wbr/> and
16196the Z-axis is aligned with the optical axis of the sensor.<wbr/></p>
16197<p>To convert from the quaternion coefficients <code>(x,<wbr/>y,<wbr/>z,<wbr/>w)</code>
16198to the axis of rotation <code>(a_<wbr/>x,<wbr/> a_<wbr/>y,<wbr/> a_<wbr/>z)</code> and rotation
16199amount <code>theta</code>,<wbr/> the following formulas can be used:</p>
16200<pre><code> theta = 2 * acos(w)
16201a_<wbr/>x = x /<wbr/> sin(theta/<wbr/>2)
16202a_<wbr/>y = y /<wbr/> sin(theta/<wbr/>2)
16203a_<wbr/>z = z /<wbr/> sin(theta/<wbr/>2)
16204</code></pre>
16205<p>To create a 3x3 rotation matrix that applies the rotation
16206defined by this quaternion,<wbr/> the following matrix can be
16207used:</p>
16208<pre><code>R = [ 1 - 2y^2 - 2z^2,<wbr/>       2xy - 2zw,<wbr/>       2xz + 2yw,<wbr/>
16209           2xy + 2zw,<wbr/> 1 - 2x^2 - 2z^2,<wbr/>       2yz - 2xw,<wbr/>
16210           2xz - 2yw,<wbr/>       2yz + 2xw,<wbr/> 1 - 2x^2 - 2y^2 ]
16211</code></pre>
16212<p>This matrix can then be used to apply the rotation to a
16213 column vector point with</p>
16214<p><code>p' = Rp</code></p>
16215<p>where <code>p</code> is in the device sensor coordinate system,<wbr/> and
16216 <code>p'</code> is in the camera-oriented coordinate system.<wbr/></p>
16217<p>If <a href="#static_android.lens.poseReference">android.<wbr/>lens.<wbr/>pose<wbr/>Reference</a> is UNDEFINED,<wbr/> the quaternion rotation cannot
16218 be accurately represented by the camera device,<wbr/> and will be represented by
16219 default values matching its default facing.<wbr/></p>
16220            </td>
16221          </tr>
16222
16223
16224          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16225           <!-- end of entry -->
16226
16227
16228          <tr class="entry" id="dynamic_android.lens.poseTranslation">
16229            <td class="entry_name
16230             " rowspan="3">
16231              android.<wbr/>lens.<wbr/>pose<wbr/>Translation
16232            </td>
16233            <td class="entry_type">
16234                <span class="entry_type_name">float</span>
16235                <span class="entry_type_container">x</span>
16236
16237                <span class="entry_type_array">
16238                  3
16239                </span>
16240              <span class="entry_type_visibility"> [public]</span>
16241
16242
16243
16244
16245
16246
16247            </td> <!-- entry_type -->
16248
16249            <td class="entry_description">
16250              <p>Position of the camera optical center.<wbr/></p>
16251            </td>
16252
16253            <td class="entry_units">
16254              Meters
16255            </td>
16256
16257            <td class="entry_range">
16258            </td>
16259
16260            <td class="entry_hal_version">
16261              <p>3.<wbr/>2</p>
16262            </td>
16263
16264            <td class="entry_tags">
16265              <ul class="entry_tags">
16266                  <li><a href="#tag_DEPTH">DEPTH</a></li>
16267              </ul>
16268            </td>
16269
16270          </tr>
16271          <tr class="entries_header">
16272            <th class="th_details" colspan="6">Details</th>
16273          </tr>
16274          <tr class="entry_cont">
16275            <td class="entry_details" colspan="6">
16276              <p>The position of the camera device's lens optical center,<wbr/>
16277as a three-dimensional vector <code>(x,<wbr/>y,<wbr/>z)</code>.<wbr/></p>
16278<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
16279is relative to the optical center of the largest camera device facing in the same
16280direction as this camera,<wbr/> in the <a href="https://developer.android.com/reference/android/hardware/SensorEvent.html">Android sensor
16281coordinate axes</a>.<wbr/> Note that only the axis definitions are shared with the sensor
16282coordinate system,<wbr/> but not the origin.<wbr/></p>
16283<p>If this device is the largest or only camera device with a given facing,<wbr/> then this
16284position will be <code>(0,<wbr/> 0,<wbr/> 0)</code>; a camera device with a lens optical center located 3 cm
16285from the main sensor along the +X axis (to the right from the user's perspective) will
16286report <code>(0.<wbr/>03,<wbr/> 0,<wbr/> 0)</code>.<wbr/>  Note that this means that,<wbr/> for many computer vision
16287applications,<wbr/> the position needs to be negated to convert it to a translation from the
16288camera to the origin.<wbr/></p>
16289<p>To transform a pixel coordinates between two cameras facing the same direction,<wbr/> first
16290the source camera <a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a> must be corrected for.<wbr/>  Then the source
16291camera <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> needs to be applied,<wbr/> followed by the
16292<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
16293relative to the destination camera,<wbr/> the <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> of the destination
16294camera,<wbr/> and finally the inverse of <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> of the destination
16295camera.<wbr/> This obtains a radial-distortion-free coordinate in the destination camera pixel
16296coordinates.<wbr/></p>
16297<p>To compare this against a real image from the destination camera,<wbr/> the destination camera
16298image then needs to be corrected for radial distortion before comparison or sampling.<wbr/></p>
16299<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
16300the center of the primary gyroscope on the device.<wbr/> The axis definitions are the same as
16301with PRIMARY_<wbr/>CAMERA.<wbr/></p>
16302<p>When <a href="#static_android.lens.poseReference">android.<wbr/>lens.<wbr/>pose<wbr/>Reference</a> is UNDEFINED,<wbr/> this position cannot be accurately
16303represented by the camera device,<wbr/> and will be represented as <code>(0,<wbr/> 0,<wbr/> 0)</code>.<wbr/></p>
16304            </td>
16305          </tr>
16306
16307
16308          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16309           <!-- end of entry -->
16310
16311
16312          <tr class="entry" id="dynamic_android.lens.intrinsicCalibration">
16313            <td class="entry_name
16314             " rowspan="3">
16315              android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration
16316            </td>
16317            <td class="entry_type">
16318                <span class="entry_type_name">float</span>
16319                <span class="entry_type_container">x</span>
16320
16321                <span class="entry_type_array">
16322                  5
16323                </span>
16324              <span class="entry_type_visibility"> [public]</span>
16325
16326
16327
16328
16329
16330
16331            </td> <!-- entry_type -->
16332
16333            <td class="entry_description">
16334              <p>The parameters for this camera device's intrinsic
16335calibration.<wbr/></p>
16336            </td>
16337
16338            <td class="entry_units">
16339
16340            Pixels in the
16341            android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size
16342            coordinate system.<wbr/>
16343
16344            </td>
16345
16346            <td class="entry_range">
16347            </td>
16348
16349            <td class="entry_hal_version">
16350              <p>3.<wbr/>2</p>
16351            </td>
16352
16353            <td class="entry_tags">
16354              <ul class="entry_tags">
16355                  <li><a href="#tag_DEPTH">DEPTH</a></li>
16356              </ul>
16357            </td>
16358
16359          </tr>
16360          <tr class="entries_header">
16361            <th class="th_details" colspan="6">Details</th>
16362          </tr>
16363          <tr class="entry_cont">
16364            <td class="entry_details" colspan="6">
16365              <p>The five calibration parameters that describe the
16366transform from camera-centric 3D coordinates to sensor
16367pixel coordinates:</p>
16368<pre><code>[f_<wbr/>x,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>x,<wbr/> c_<wbr/>y,<wbr/> s]
16369</code></pre>
16370<p>Where <code>f_<wbr/>x</code> and <code>f_<wbr/>y</code> are the horizontal and vertical
16371focal lengths,<wbr/> <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code> is the position of the optical
16372axis,<wbr/> and <code>s</code> is a skew parameter for the sensor plane not
16373being aligned with the lens plane.<wbr/></p>
16374<p>These are typically used within a transformation matrix K:</p>
16375<pre><code>K = [ f_<wbr/>x,<wbr/>   s,<wbr/> c_<wbr/>x,<wbr/>
16376       0,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>y,<wbr/>
16377       0    0,<wbr/>   1 ]
16378</code></pre>
16379<p>which can then be combined with the camera pose rotation
16380<code>R</code> and translation <code>t</code> (<a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> and
16381<a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a>,<wbr/> respectively) to calculate the
16382complete transform from world coordinates to pixel
16383coordinates:</p>
16384<pre><code>P = [ K 0   * [ R -Rt
16385     0 1 ]      0 1 ]
16386</code></pre>
16387<p>(Note the negation of poseTranslation when mapping from camera
16388to world coordinates,<wbr/> and multiplication by the rotation).<wbr/></p>
16389<p>With <code>p_<wbr/>w</code> being a point in the world coordinate system
16390and <code>p_<wbr/>s</code> being a point in the camera active pixel array
16391coordinate system,<wbr/> and with the mapping including the
16392homogeneous division by z:</p>
16393<pre><code> p_<wbr/>h = (x_<wbr/>h,<wbr/> y_<wbr/>h,<wbr/> z_<wbr/>h) = P p_<wbr/>w
16394p_<wbr/>s = p_<wbr/>h /<wbr/> z_<wbr/>h
16395</code></pre>
16396<p>so <code>[x_<wbr/>s,<wbr/> y_<wbr/>s]</code> is the pixel coordinates of the world
16397point,<wbr/> <code>z_<wbr/>s = 1</code>,<wbr/> and <code>w_<wbr/>s</code> is a measurement of disparity
16398(depth) in pixel coordinates.<wbr/></p>
16399<p>Note that the coordinate system for this transform is the
16400<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/>
16401where <code>(0,<wbr/>0)</code> is the top-left of the
16402preCorrectionActiveArraySize rectangle.<wbr/> Once the pose and
16403intrinsic calibration transforms have been applied to a
16404world point,<wbr/> then the <a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a>
16405transform needs to be applied,<wbr/> and the result adjusted to
16406be in the <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> coordinate
16407system (where <code>(0,<wbr/> 0)</code> is the top-left of the
16408activeArraySize rectangle),<wbr/> to determine the final pixel
16409coordinate of the world point for processed (non-RAW)
16410output buffers.<wbr/></p>
16411<p>For camera devices,<wbr/> the center of pixel <code>(x,<wbr/>y)</code> is located at
16412coordinate <code>(x + 0.<wbr/>5,<wbr/> y + 0.<wbr/>5)</code>.<wbr/>  So on a device with a
16413precorrection active array of size <code>(10,<wbr/>10)</code>,<wbr/> the valid pixel
16414indices go from <code>(0,<wbr/>0)-(9,<wbr/>9)</code>,<wbr/> and an perfectly-built camera would
16415have an optical center at the exact center of the pixel grid,<wbr/> at
16416coordinates <code>(5.<wbr/>0,<wbr/> 5.<wbr/>0)</code>,<wbr/> which is the top-left corner of pixel
16417<code>(5,<wbr/>5)</code>.<wbr/></p>
16418            </td>
16419          </tr>
16420
16421
16422          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16423           <!-- end of entry -->
16424
16425
16426          <tr class="entry" id="dynamic_android.lens.radialDistortion">
16427            <td class="entry_name
16428                entry_name_deprecated
16429             " rowspan="3">
16430              android.<wbr/>lens.<wbr/>radial<wbr/>Distortion
16431            </td>
16432            <td class="entry_type">
16433                <span class="entry_type_name">float</span>
16434                <span class="entry_type_container">x</span>
16435
16436                <span class="entry_type_array">
16437                  6
16438                </span>
16439              <span class="entry_type_visibility"> [public]</span>
16440
16441
16442
16443              <span class="entry_type_deprecated">[deprecated] </span>
16444
16445
16446
16447            </td> <!-- entry_type -->
16448
16449            <td class="entry_description">
16450              <p>The correction coefficients to correct for this camera device's
16451radial and tangential lens distortion.<wbr/></p>
16452            </td>
16453
16454            <td class="entry_units">
16455
16456            Unitless coefficients.<wbr/>
16457
16458            </td>
16459
16460            <td class="entry_range">
16461              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
16462            </td>
16463
16464            <td class="entry_hal_version">
16465              <p>3.<wbr/>2</p>
16466            </td>
16467
16468            <td class="entry_tags">
16469              <ul class="entry_tags">
16470                  <li><a href="#tag_DEPTH">DEPTH</a></li>
16471              </ul>
16472            </td>
16473
16474          </tr>
16475          <tr class="entries_header">
16476            <th class="th_details" colspan="6">Details</th>
16477          </tr>
16478          <tr class="entry_cont">
16479            <td class="entry_details" colspan="6">
16480              <p>Four radial distortion coefficients <code>[kappa_<wbr/>0,<wbr/> kappa_<wbr/>1,<wbr/> kappa_<wbr/>2,<wbr/>
16481kappa_<wbr/>3]</code> and two tangential distortion coefficients
16482<code>[kappa_<wbr/>4,<wbr/> kappa_<wbr/>5]</code> that can be used to correct the
16483lens's geometric distortion with the mapping equations:</p>
16484<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 ) +
16485       kappa_<wbr/>4 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>5 * ( r^2 + 2 * x_<wbr/>i^2 )
16486 y_<wbr/>c = y_<wbr/>i * ( kappa_<wbr/>0 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) +
16487       kappa_<wbr/>5 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>4 * ( r^2 + 2 * y_<wbr/>i^2 )
16488</code></pre>
16489<p>Here,<wbr/> <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> are the coordinates to sample in the
16490input image that correspond to the pixel values in the
16491corrected image at the coordinate <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code>:</p>
16492<pre><code> correctedImage(x_<wbr/>i,<wbr/> y_<wbr/>i) = sample_<wbr/>at(x_<wbr/>c,<wbr/> y_<wbr/>c,<wbr/> inputImage)
16493</code></pre>
16494<p>The pixel coordinates are defined in a normalized
16495coordinate system related to the
16496<a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> calibration fields.<wbr/>
16497Both <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
16498lens optical center <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code>.<wbr/> The maximum magnitudes
16499of both x and y coordinates are normalized to be 1 at the
16500edge further from the optical center,<wbr/> so the range
16501for both dimensions is <code>-1 &lt;= x &lt;= 1</code>.<wbr/></p>
16502<p>Finally,<wbr/> <code>r</code> represents the radial distance from the
16503optical center,<wbr/> <code>r^2 = x_<wbr/>i^2 + y_<wbr/>i^2</code>,<wbr/> and its magnitude
16504is therefore no larger than <code>|<wbr/>r|<wbr/> &lt;= sqrt(2)</code>.<wbr/></p>
16505<p>The distortion model used is the Brown-Conrady model.<wbr/></p>
16506            </td>
16507          </tr>
16508
16509
16510          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16511           <!-- end of entry -->
16512
16513
16514          <tr class="entry" id="dynamic_android.lens.distortion">
16515            <td class="entry_name
16516             " rowspan="3">
16517              android.<wbr/>lens.<wbr/>distortion
16518            </td>
16519            <td class="entry_type">
16520                <span class="entry_type_name">float</span>
16521                <span class="entry_type_container">x</span>
16522
16523                <span class="entry_type_array">
16524                  5
16525                </span>
16526              <span class="entry_type_visibility"> [public]</span>
16527
16528
16529
16530
16531
16532
16533            </td> <!-- entry_type -->
16534
16535            <td class="entry_description">
16536              <p>The correction coefficients to correct for this camera device's
16537radial and tangential lens distortion.<wbr/></p>
16538<p>Replaces the deprecated <a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a> field,<wbr/> which was
16539inconsistently defined.<wbr/></p>
16540            </td>
16541
16542            <td class="entry_units">
16543
16544            Unitless coefficients.<wbr/>
16545
16546            </td>
16547
16548            <td class="entry_range">
16549            </td>
16550
16551            <td class="entry_hal_version">
16552              <p>3.<wbr/>3</p>
16553            </td>
16554
16555            <td class="entry_tags">
16556              <ul class="entry_tags">
16557                  <li><a href="#tag_DEPTH">DEPTH</a></li>
16558              </ul>
16559            </td>
16560
16561          </tr>
16562          <tr class="entries_header">
16563            <th class="th_details" colspan="6">Details</th>
16564          </tr>
16565          <tr class="entry_cont">
16566            <td class="entry_details" colspan="6">
16567              <p>Three radial distortion coefficients <code>[kappa_<wbr/>1,<wbr/> kappa_<wbr/>2,<wbr/>
16568kappa_<wbr/>3]</code> and two tangential distortion coefficients
16569<code>[kappa_<wbr/>4,<wbr/> kappa_<wbr/>5]</code> that can be used to correct the
16570lens's geometric distortion with the mapping equations:</p>
16571<pre><code> x_<wbr/>c = x_<wbr/>i * ( 1 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) +
16572       kappa_<wbr/>4 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>5 * ( r^2 + 2 * x_<wbr/>i^2 )
16573 y_<wbr/>c = y_<wbr/>i * ( 1 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) +
16574       kappa_<wbr/>5 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>4 * ( r^2 + 2 * y_<wbr/>i^2 )
16575</code></pre>
16576<p>Here,<wbr/> <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> are the coordinates to sample in the
16577input image that correspond to the pixel values in the
16578corrected image at the coordinate <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code>:</p>
16579<pre><code> correctedImage(x_<wbr/>i,<wbr/> y_<wbr/>i) = sample_<wbr/>at(x_<wbr/>c,<wbr/> y_<wbr/>c,<wbr/> inputImage)
16580</code></pre>
16581<p>The pixel coordinates are defined in a coordinate system
16582related to the <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a>
16583calibration fields; see that entry for details of the mapping stages.<wbr/>
16584Both <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code> and <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code>
16585have <code>(0,<wbr/>0)</code> at the lens optical center <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code>,<wbr/> and
16586the range of the coordinates depends on the focal length
16587terms of the intrinsic calibration.<wbr/></p>
16588<p>Finally,<wbr/> <code>r</code> represents the radial distance from the
16589optical center,<wbr/> <code>r^2 = x_<wbr/>i^2 + y_<wbr/>i^2</code>.<wbr/></p>
16590<p>The distortion model used is the Brown-Conrady model.<wbr/></p>
16591            </td>
16592          </tr>
16593
16594
16595          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16596           <!-- end of entry -->
16597
16598
16599
16600      <!-- end of kind -->
16601      </tbody>
16602
16603  <!-- end of section -->
16604  <tr><td colspan="7" id="section_noiseReduction" class="section">noiseReduction</td></tr>
16605
16606
16607      <tr><td colspan="7" class="kind">controls</td></tr>
16608
16609      <thead class="entries_header">
16610        <tr>
16611          <th class="th_name">Property Name</th>
16612          <th class="th_type">Type</th>
16613          <th class="th_description">Description</th>
16614          <th class="th_units">Units</th>
16615          <th class="th_range">Range</th>
16616          <th class="th_hal_version">Initial HIDL HAL version</th>
16617          <th class="th_tags">Tags</th>
16618        </tr>
16619      </thead>
16620
16621      <tbody>
16622
16623
16624
16625
16626
16627
16628
16629
16630
16631
16632          <tr class="entry" id="controls_android.noiseReduction.mode">
16633            <td class="entry_name
16634             " rowspan="5">
16635              android.<wbr/>noise<wbr/>Reduction.<wbr/>mode
16636            </td>
16637            <td class="entry_type">
16638                <span class="entry_type_name entry_type_name_enum">byte</span>
16639
16640              <span class="entry_type_visibility"> [public]</span>
16641
16642
16643              <span class="entry_type_hwlevel">[full] </span>
16644
16645
16646
16647                <ul class="entry_type_enum">
16648                  <li>
16649                    <span class="entry_type_enum_name">OFF (v3.2)</span>
16650                    <span class="entry_type_enum_notes"><p>No noise reduction is applied.<wbr/></p></span>
16651                  </li>
16652                  <li>
16653                    <span class="entry_type_enum_name">FAST (v3.2)</span>
16654                    <span class="entry_type_enum_notes"><p>Noise reduction is applied without reducing frame rate relative to sensor
16655output.<wbr/> It may be the same as OFF if noise reduction will reduce frame rate
16656relative to sensor.<wbr/></p></span>
16657                  </li>
16658                  <li>
16659                    <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
16660                    <span class="entry_type_enum_notes"><p>High-quality noise reduction is applied,<wbr/> at the cost of possibly reduced frame
16661rate relative to sensor output.<wbr/></p></span>
16662                  </li>
16663                  <li>
16664                    <span class="entry_type_enum_name">MINIMAL (v3.2)</span>
16665                    <span class="entry_type_enum_optional">[optional]</span>
16666                    <span class="entry_type_enum_notes"><p>MINIMAL noise reduction is applied without reducing frame rate relative to
16667sensor output.<wbr/> </p></span>
16668                  </li>
16669                  <li>
16670                    <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span>
16671                    <span class="entry_type_enum_optional">[optional]</span>
16672                    <span class="entry_type_enum_notes"><p>Noise reduction is applied at different levels for different output streams,<wbr/>
16673based 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>)
16674or below have noise reduction applied,<wbr/> while higher-resolution streams have MINIMAL (if
16675supported) or no noise reduction applied (if MINIMAL is not supported.<wbr/>) The degree of
16676noise reduction for low-resolution streams is tuned so that frame rate is not impacted,<wbr/>
16677and the quality is equal to or better than FAST (since it is only applied to
16678lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p>
16679<p>This mode is intended to be used by applications operating in a zero-shutter-lag mode
16680with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures
16681high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is
16682produced via reprocessing when a user takes a picture.<wbr/>  For such a use case,<wbr/> the
16683high-resolution buffers must not have noise reduction applied to maximize efficiency of
16684preview and to avoid over-applying noise filtering when reprocessing,<wbr/> while
16685low-resolution buffers (used for recording or preview,<wbr/> generally) need noise reduction
16686applied for reasonable preview quality.<wbr/></p>
16687<p>This mode is guaranteed to be supported by devices that support either the
16688YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities
16689(<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will
16690be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span>
16691                  </li>
16692                </ul>
16693
16694            </td> <!-- entry_type -->
16695
16696            <td class="entry_description">
16697              <p>Mode of operation for the noise reduction algorithm.<wbr/></p>
16698            </td>
16699
16700            <td class="entry_units">
16701            </td>
16702
16703            <td class="entry_range">
16704              <p><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a></p>
16705            </td>
16706
16707            <td class="entry_hal_version">
16708              <p>3.<wbr/>2</p>
16709            </td>
16710
16711            <td class="entry_tags">
16712              <ul class="entry_tags">
16713                  <li><a href="#tag_V1">V1</a></li>
16714                  <li><a href="#tag_REPROC">REPROC</a></li>
16715              </ul>
16716            </td>
16717
16718          </tr>
16719          <tr class="entries_header">
16720            <th class="th_details" colspan="6">Details</th>
16721          </tr>
16722          <tr class="entry_cont">
16723            <td class="entry_details" colspan="6">
16724              <p>The noise reduction algorithm attempts to improve image quality by removing
16725excessive noise added by the capture process,<wbr/> especially in dark conditions.<wbr/></p>
16726<p>OFF means no noise reduction will be applied by the camera device,<wbr/> for both raw and
16727YUV domain.<wbr/></p>
16728<p>MINIMAL means that only sensor raw domain basic noise reduction is enabled ,<wbr/>to remove
16729demosaicing or other processing artifacts.<wbr/> For YUV_<wbr/>REPROCESSING,<wbr/> MINIMAL is same as OFF.<wbr/>
16730This mode is optional,<wbr/> may not be support by all devices.<wbr/> The application should check
16731<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>
16732<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined noise filtering
16733will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device
16734will use the highest-quality noise filtering algorithms,<wbr/>
16735even if it slows down capture rate.<wbr/> FAST means the camera device will not
16736slow down capture rate when applying noise filtering.<wbr/> FAST may be the same as MINIMAL if
16737MINIMAL is listed,<wbr/> or the same as OFF if any noise filtering will slow down capture rate.<wbr/>
16738Every output stream will have a similar amount of enhancement applied.<wbr/></p>
16739<p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular
16740buffer of high-resolution images during preview and reprocess image(s) from that buffer
16741into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies
16742noise reduction to low-resolution streams (below maximum recording resolution) to maximize
16743preview quality,<wbr/> but does not apply noise reduction to high-resolution streams,<wbr/> since
16744those will be reprocessed later if necessary.<wbr/></p>
16745<p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera device
16746will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV domain noise reduction,<wbr/> respectively.<wbr/> The camera device
16747may adjust the noise reduction parameters for best image quality based on the
16748<a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a> if it is set.<wbr/></p>
16749            </td>
16750          </tr>
16751
16752          <tr class="entries_header">
16753            <th class="th_details" colspan="6">HAL Implementation Details</th>
16754          </tr>
16755          <tr class="entry_cont">
16756            <td class="entry_details" colspan="6">
16757              <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
16758adjust the internal noise reduction parameters appropriately to get the best quality
16759images.<wbr/></p>
16760            </td>
16761          </tr>
16762
16763          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16764           <!-- end of entry -->
16765
16766
16767          <tr class="entry" id="controls_android.noiseReduction.strength">
16768            <td class="entry_name
16769             " rowspan="1">
16770              android.<wbr/>noise<wbr/>Reduction.<wbr/>strength
16771            </td>
16772            <td class="entry_type">
16773                <span class="entry_type_name">byte</span>
16774
16775              <span class="entry_type_visibility"> [system]</span>
16776
16777
16778
16779
16780
16781
16782            </td> <!-- entry_type -->
16783
16784            <td class="entry_description">
16785              <p>Control the amount of noise reduction
16786applied to the images</p>
16787            </td>
16788
16789            <td class="entry_units">
16790              1-10; 10 is max noise reduction
16791            </td>
16792
16793            <td class="entry_range">
16794              <p>1 - 10</p>
16795            </td>
16796
16797            <td class="entry_hal_version">
16798              <p>3.<wbr/>2</p>
16799            </td>
16800
16801            <td class="entry_tags">
16802              <ul class="entry_tags">
16803                  <li><a href="#tag_FUTURE">FUTURE</a></li>
16804              </ul>
16805            </td>
16806
16807          </tr>
16808
16809
16810          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16811           <!-- end of entry -->
16812
16813
16814
16815      <!-- end of kind -->
16816      </tbody>
16817      <tr><td colspan="7" class="kind">static</td></tr>
16818
16819      <thead class="entries_header">
16820        <tr>
16821          <th class="th_name">Property Name</th>
16822          <th class="th_type">Type</th>
16823          <th class="th_description">Description</th>
16824          <th class="th_units">Units</th>
16825          <th class="th_range">Range</th>
16826          <th class="th_hal_version">Initial HIDL HAL version</th>
16827          <th class="th_tags">Tags</th>
16828        </tr>
16829      </thead>
16830
16831      <tbody>
16832
16833
16834
16835
16836
16837
16838
16839
16840
16841
16842          <tr class="entry" id="static_android.noiseReduction.availableNoiseReductionModes">
16843            <td class="entry_name
16844             " rowspan="5">
16845              android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes
16846            </td>
16847            <td class="entry_type">
16848                <span class="entry_type_name">byte</span>
16849                <span class="entry_type_container">x</span>
16850
16851                <span class="entry_type_array">
16852                  n
16853                </span>
16854              <span class="entry_type_visibility"> [public as enumList]</span>
16855
16856
16857              <span class="entry_type_hwlevel">[limited] </span>
16858
16859
16860                <div class="entry_type_notes">list of enums</div>
16861
16862
16863            </td> <!-- entry_type -->
16864
16865            <td class="entry_description">
16866              <p>List of noise reduction modes for <a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a> that are supported
16867by this camera device.<wbr/></p>
16868            </td>
16869
16870            <td class="entry_units">
16871            </td>
16872
16873            <td class="entry_range">
16874              <p>Any value listed in <a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></p>
16875            </td>
16876
16877            <td class="entry_hal_version">
16878              <p>3.<wbr/>2</p>
16879            </td>
16880
16881            <td class="entry_tags">
16882              <ul class="entry_tags">
16883                  <li><a href="#tag_V1">V1</a></li>
16884                  <li><a href="#tag_REPROC">REPROC</a></li>
16885              </ul>
16886            </td>
16887
16888          </tr>
16889          <tr class="entries_header">
16890            <th class="th_details" colspan="6">Details</th>
16891          </tr>
16892          <tr class="entry_cont">
16893            <td class="entry_details" colspan="6">
16894              <p>Full-capability camera devices will always support OFF and FAST.<wbr/></p>
16895<p>Camera devices that support YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING will support
16896ZERO_<wbr/>SHUTTER_<wbr/>LAG.<wbr/></p>
16897<p>Legacy-capability camera devices will only support FAST mode.<wbr/></p>
16898            </td>
16899          </tr>
16900
16901          <tr class="entries_header">
16902            <th class="th_details" colspan="6">HAL Implementation Details</th>
16903          </tr>
16904          <tr class="entry_cont">
16905            <td class="entry_details" colspan="6">
16906              <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if noise reduction control is available
16907on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
16908That is,<wbr/> if the highest quality implementation on the camera device does not slow down
16909capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
16910            </td>
16911          </tr>
16912
16913          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16914           <!-- end of entry -->
16915
16916
16917
16918      <!-- end of kind -->
16919      </tbody>
16920      <tr><td colspan="7" class="kind">dynamic</td></tr>
16921
16922      <thead class="entries_header">
16923        <tr>
16924          <th class="th_name">Property Name</th>
16925          <th class="th_type">Type</th>
16926          <th class="th_description">Description</th>
16927          <th class="th_units">Units</th>
16928          <th class="th_range">Range</th>
16929          <th class="th_hal_version">Initial HIDL HAL version</th>
16930          <th class="th_tags">Tags</th>
16931        </tr>
16932      </thead>
16933
16934      <tbody>
16935
16936
16937
16938
16939
16940
16941
16942
16943
16944
16945          <tr class="entry" id="dynamic_android.noiseReduction.mode">
16946            <td class="entry_name
16947             " rowspan="5">
16948              android.<wbr/>noise<wbr/>Reduction.<wbr/>mode
16949            </td>
16950            <td class="entry_type">
16951                <span class="entry_type_name entry_type_name_enum">byte</span>
16952
16953              <span class="entry_type_visibility"> [public]</span>
16954
16955
16956              <span class="entry_type_hwlevel">[full] </span>
16957
16958
16959
16960                <ul class="entry_type_enum">
16961                  <li>
16962                    <span class="entry_type_enum_name">OFF (v3.2)</span>
16963                    <span class="entry_type_enum_notes"><p>No noise reduction is applied.<wbr/></p></span>
16964                  </li>
16965                  <li>
16966                    <span class="entry_type_enum_name">FAST (v3.2)</span>
16967                    <span class="entry_type_enum_notes"><p>Noise reduction is applied without reducing frame rate relative to sensor
16968output.<wbr/> It may be the same as OFF if noise reduction will reduce frame rate
16969relative to sensor.<wbr/></p></span>
16970                  </li>
16971                  <li>
16972                    <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
16973                    <span class="entry_type_enum_notes"><p>High-quality noise reduction is applied,<wbr/> at the cost of possibly reduced frame
16974rate relative to sensor output.<wbr/></p></span>
16975                  </li>
16976                  <li>
16977                    <span class="entry_type_enum_name">MINIMAL (v3.2)</span>
16978                    <span class="entry_type_enum_optional">[optional]</span>
16979                    <span class="entry_type_enum_notes"><p>MINIMAL noise reduction is applied without reducing frame rate relative to
16980sensor output.<wbr/> </p></span>
16981                  </li>
16982                  <li>
16983                    <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span>
16984                    <span class="entry_type_enum_optional">[optional]</span>
16985                    <span class="entry_type_enum_notes"><p>Noise reduction is applied at different levels for different output streams,<wbr/>
16986based 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>)
16987or below have noise reduction applied,<wbr/> while higher-resolution streams have MINIMAL (if
16988supported) or no noise reduction applied (if MINIMAL is not supported.<wbr/>) The degree of
16989noise reduction for low-resolution streams is tuned so that frame rate is not impacted,<wbr/>
16990and the quality is equal to or better than FAST (since it is only applied to
16991lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p>
16992<p>This mode is intended to be used by applications operating in a zero-shutter-lag mode
16993with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures
16994high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is
16995produced via reprocessing when a user takes a picture.<wbr/>  For such a use case,<wbr/> the
16996high-resolution buffers must not have noise reduction applied to maximize efficiency of
16997preview and to avoid over-applying noise filtering when reprocessing,<wbr/> while
16998low-resolution buffers (used for recording or preview,<wbr/> generally) need noise reduction
16999applied for reasonable preview quality.<wbr/></p>
17000<p>This mode is guaranteed to be supported by devices that support either the
17001YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities
17002(<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will
17003be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span>
17004                  </li>
17005                </ul>
17006
17007            </td> <!-- entry_type -->
17008
17009            <td class="entry_description">
17010              <p>Mode of operation for the noise reduction algorithm.<wbr/></p>
17011            </td>
17012
17013            <td class="entry_units">
17014            </td>
17015
17016            <td class="entry_range">
17017              <p><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a></p>
17018            </td>
17019
17020            <td class="entry_hal_version">
17021              <p>3.<wbr/>2</p>
17022            </td>
17023
17024            <td class="entry_tags">
17025              <ul class="entry_tags">
17026                  <li><a href="#tag_V1">V1</a></li>
17027                  <li><a href="#tag_REPROC">REPROC</a></li>
17028              </ul>
17029            </td>
17030
17031          </tr>
17032          <tr class="entries_header">
17033            <th class="th_details" colspan="6">Details</th>
17034          </tr>
17035          <tr class="entry_cont">
17036            <td class="entry_details" colspan="6">
17037              <p>The noise reduction algorithm attempts to improve image quality by removing
17038excessive noise added by the capture process,<wbr/> especially in dark conditions.<wbr/></p>
17039<p>OFF means no noise reduction will be applied by the camera device,<wbr/> for both raw and
17040YUV domain.<wbr/></p>
17041<p>MINIMAL means that only sensor raw domain basic noise reduction is enabled ,<wbr/>to remove
17042demosaicing or other processing artifacts.<wbr/> For YUV_<wbr/>REPROCESSING,<wbr/> MINIMAL is same as OFF.<wbr/>
17043This mode is optional,<wbr/> may not be support by all devices.<wbr/> The application should check
17044<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>
17045<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined noise filtering
17046will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device
17047will use the highest-quality noise filtering algorithms,<wbr/>
17048even if it slows down capture rate.<wbr/> FAST means the camera device will not
17049slow down capture rate when applying noise filtering.<wbr/> FAST may be the same as MINIMAL if
17050MINIMAL is listed,<wbr/> or the same as OFF if any noise filtering will slow down capture rate.<wbr/>
17051Every output stream will have a similar amount of enhancement applied.<wbr/></p>
17052<p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular
17053buffer of high-resolution images during preview and reprocess image(s) from that buffer
17054into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies
17055noise reduction to low-resolution streams (below maximum recording resolution) to maximize
17056preview quality,<wbr/> but does not apply noise reduction to high-resolution streams,<wbr/> since
17057those will be reprocessed later if necessary.<wbr/></p>
17058<p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera device
17059will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV domain noise reduction,<wbr/> respectively.<wbr/> The camera device
17060may adjust the noise reduction parameters for best image quality based on the
17061<a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a> if it is set.<wbr/></p>
17062            </td>
17063          </tr>
17064
17065          <tr class="entries_header">
17066            <th class="th_details" colspan="6">HAL Implementation Details</th>
17067          </tr>
17068          <tr class="entry_cont">
17069            <td class="entry_details" colspan="6">
17070              <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
17071adjust the internal noise reduction parameters appropriately to get the best quality
17072images.<wbr/></p>
17073            </td>
17074          </tr>
17075
17076          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17077           <!-- end of entry -->
17078
17079
17080
17081      <!-- end of kind -->
17082      </tbody>
17083
17084  <!-- end of section -->
17085  <tr><td colspan="7" id="section_quirks" class="section">quirks</td></tr>
17086
17087
17088      <tr><td colspan="7" class="kind">static</td></tr>
17089
17090      <thead class="entries_header">
17091        <tr>
17092          <th class="th_name">Property Name</th>
17093          <th class="th_type">Type</th>
17094          <th class="th_description">Description</th>
17095          <th class="th_units">Units</th>
17096          <th class="th_range">Range</th>
17097          <th class="th_hal_version">Initial HIDL HAL version</th>
17098          <th class="th_tags">Tags</th>
17099        </tr>
17100      </thead>
17101
17102      <tbody>
17103
17104
17105
17106
17107
17108
17109
17110
17111
17112
17113          <tr class="entry" id="static_android.quirks.meteringCropRegion">
17114            <td class="entry_name
17115                entry_name_deprecated
17116             " rowspan="3">
17117              android.<wbr/>quirks.<wbr/>metering<wbr/>Crop<wbr/>Region
17118            </td>
17119            <td class="entry_type">
17120                <span class="entry_type_name">byte</span>
17121
17122              <span class="entry_type_visibility"> [system]</span>
17123
17124
17125
17126              <span class="entry_type_deprecated">[deprecated] </span>
17127
17128
17129
17130            </td> <!-- entry_type -->
17131
17132            <td class="entry_description">
17133              <p>If set to 1,<wbr/> the camera service does not
17134scale 'normalized' coordinates with respect to the crop
17135region.<wbr/> This applies to metering input (a{e,<wbr/>f,<wbr/>wb}Region
17136and output (face rectangles).<wbr/></p>
17137            </td>
17138
17139            <td class="entry_units">
17140            </td>
17141
17142            <td class="entry_range">
17143              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
17144            </td>
17145
17146            <td class="entry_hal_version">
17147              <p>3.<wbr/>2</p>
17148            </td>
17149
17150            <td class="entry_tags">
17151            </td>
17152
17153          </tr>
17154          <tr class="entries_header">
17155            <th class="th_details" colspan="6">Details</th>
17156          </tr>
17157          <tr class="entry_cont">
17158            <td class="entry_details" colspan="6">
17159              <p>Normalized coordinates refer to those in the
17160(-1000,<wbr/>1000) range mentioned in the
17161android.<wbr/>hardware.<wbr/>Camera API.<wbr/></p>
17162<p>HAL implementations should instead always use and emit
17163sensor array-relative coordinates for all region data.<wbr/> Does
17164not need to be listed in static metadata.<wbr/> Support will be
17165removed in future versions of camera service.<wbr/></p>
17166            </td>
17167          </tr>
17168
17169
17170          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17171           <!-- end of entry -->
17172
17173
17174          <tr class="entry" id="static_android.quirks.triggerAfWithAuto">
17175            <td class="entry_name
17176                entry_name_deprecated
17177             " rowspan="3">
17178              android.<wbr/>quirks.<wbr/>trigger<wbr/>Af<wbr/>With<wbr/>Auto
17179            </td>
17180            <td class="entry_type">
17181                <span class="entry_type_name">byte</span>
17182
17183              <span class="entry_type_visibility"> [system]</span>
17184
17185
17186
17187              <span class="entry_type_deprecated">[deprecated] </span>
17188
17189
17190
17191            </td> <!-- entry_type -->
17192
17193            <td class="entry_description">
17194              <p>If set to 1,<wbr/> then the camera service always
17195switches to FOCUS_<wbr/>MODE_<wbr/>AUTO before issuing a AF
17196trigger.<wbr/></p>
17197            </td>
17198
17199            <td class="entry_units">
17200            </td>
17201
17202            <td class="entry_range">
17203              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
17204            </td>
17205
17206            <td class="entry_hal_version">
17207              <p>3.<wbr/>2</p>
17208            </td>
17209
17210            <td class="entry_tags">
17211            </td>
17212
17213          </tr>
17214          <tr class="entries_header">
17215            <th class="th_details" colspan="6">Details</th>
17216          </tr>
17217          <tr class="entry_cont">
17218            <td class="entry_details" colspan="6">
17219              <p>HAL implementations should implement AF trigger
17220modes for AUTO,<wbr/> MACRO,<wbr/> CONTINUOUS_<wbr/>FOCUS,<wbr/> and
17221CONTINUOUS_<wbr/>PICTURE modes instead of using this flag.<wbr/> Does
17222not need to be listed in static metadata.<wbr/> Support will be
17223removed in future versions of camera service</p>
17224            </td>
17225          </tr>
17226
17227
17228          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17229           <!-- end of entry -->
17230
17231
17232          <tr class="entry" id="static_android.quirks.useZslFormat">
17233            <td class="entry_name
17234                entry_name_deprecated
17235             " rowspan="3">
17236              android.<wbr/>quirks.<wbr/>use<wbr/>Zsl<wbr/>Format
17237            </td>
17238            <td class="entry_type">
17239                <span class="entry_type_name">byte</span>
17240
17241              <span class="entry_type_visibility"> [system]</span>
17242
17243
17244
17245              <span class="entry_type_deprecated">[deprecated] </span>
17246
17247
17248
17249            </td> <!-- entry_type -->
17250
17251            <td class="entry_description">
17252              <p>If set to 1,<wbr/> the camera service uses
17253CAMERA2_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>ZSL instead of
17254HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>IMPLEMENTATION_<wbr/>DEFINED for the zero
17255shutter lag stream</p>
17256            </td>
17257
17258            <td class="entry_units">
17259            </td>
17260
17261            <td class="entry_range">
17262              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
17263            </td>
17264
17265            <td class="entry_hal_version">
17266              <p>3.<wbr/>2</p>
17267            </td>
17268
17269            <td class="entry_tags">
17270            </td>
17271
17272          </tr>
17273          <tr class="entries_header">
17274            <th class="th_details" colspan="6">Details</th>
17275          </tr>
17276          <tr class="entry_cont">
17277            <td class="entry_details" colspan="6">
17278              <p>HAL implementations should use gralloc usage flags
17279to determine that a stream will be used for
17280zero-shutter-lag,<wbr/> instead of relying on an explicit
17281format setting.<wbr/> Does not need to be listed in static
17282metadata.<wbr/> Support will be removed in future versions of
17283camera service.<wbr/></p>
17284            </td>
17285          </tr>
17286
17287
17288          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17289           <!-- end of entry -->
17290
17291
17292          <tr class="entry" id="static_android.quirks.usePartialResult">
17293            <td class="entry_name
17294                entry_name_deprecated
17295             " rowspan="5">
17296              android.<wbr/>quirks.<wbr/>use<wbr/>Partial<wbr/>Result
17297            </td>
17298            <td class="entry_type">
17299                <span class="entry_type_name">byte</span>
17300
17301              <span class="entry_type_visibility"> [hidden]</span>
17302
17303
17304
17305              <span class="entry_type_deprecated">[deprecated] </span>
17306
17307
17308
17309            </td> <!-- entry_type -->
17310
17311            <td class="entry_description">
17312              <p>If set to 1,<wbr/> the HAL will always split result
17313metadata for a single capture into multiple buffers,<wbr/>
17314returned using multiple process_<wbr/>capture_<wbr/>result calls.<wbr/></p>
17315            </td>
17316
17317            <td class="entry_units">
17318            </td>
17319
17320            <td class="entry_range">
17321              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
17322            </td>
17323
17324            <td class="entry_hal_version">
17325              <p>3.<wbr/>2</p>
17326            </td>
17327
17328            <td class="entry_tags">
17329            </td>
17330
17331          </tr>
17332          <tr class="entries_header">
17333            <th class="th_details" colspan="6">Details</th>
17334          </tr>
17335          <tr class="entry_cont">
17336            <td class="entry_details" colspan="6">
17337              <p>Does not need to be listed in static
17338metadata.<wbr/> Support for partial results will be reworked in
17339future versions of camera service.<wbr/> This quirk will stop
17340working at that point; DO NOT USE without careful
17341consideration of future support.<wbr/></p>
17342            </td>
17343          </tr>
17344
17345          <tr class="entries_header">
17346            <th class="th_details" colspan="6">HAL Implementation Details</th>
17347          </tr>
17348          <tr class="entry_cont">
17349            <td class="entry_details" colspan="6">
17350              <p>Refer to <code>camera3_<wbr/>capture_<wbr/>result::partial_<wbr/>result</code>
17351for information on how to implement partial results.<wbr/></p>
17352            </td>
17353          </tr>
17354
17355          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17356           <!-- end of entry -->
17357
17358
17359
17360      <!-- end of kind -->
17361      </tbody>
17362      <tr><td colspan="7" class="kind">dynamic</td></tr>
17363
17364      <thead class="entries_header">
17365        <tr>
17366          <th class="th_name">Property Name</th>
17367          <th class="th_type">Type</th>
17368          <th class="th_description">Description</th>
17369          <th class="th_units">Units</th>
17370          <th class="th_range">Range</th>
17371          <th class="th_hal_version">Initial HIDL HAL version</th>
17372          <th class="th_tags">Tags</th>
17373        </tr>
17374      </thead>
17375
17376      <tbody>
17377
17378
17379
17380
17381
17382
17383
17384
17385
17386
17387          <tr class="entry" id="dynamic_android.quirks.partialResult">
17388            <td class="entry_name
17389                entry_name_deprecated
17390             " rowspan="5">
17391              android.<wbr/>quirks.<wbr/>partial<wbr/>Result
17392            </td>
17393            <td class="entry_type">
17394                <span class="entry_type_name entry_type_name_enum">byte</span>
17395
17396              <span class="entry_type_visibility"> [hidden as boolean]</span>
17397
17398
17399
17400              <span class="entry_type_deprecated">[deprecated] </span>
17401
17402
17403                <ul class="entry_type_enum">
17404                  <li>
17405                    <span class="entry_type_enum_name">FINAL (v3.2)</span>
17406                    <span class="entry_type_enum_notes"><p>The last or only metadata result buffer
17407for this capture.<wbr/></p></span>
17408                  </li>
17409                  <li>
17410                    <span class="entry_type_enum_name">PARTIAL (v3.2)</span>
17411                    <span class="entry_type_enum_notes"><p>A partial buffer of result metadata for this
17412capture.<wbr/> More result buffers for this capture will be sent
17413by the camera device,<wbr/> the last of which will be marked
17414FINAL.<wbr/></p></span>
17415                  </li>
17416                </ul>
17417
17418            </td> <!-- entry_type -->
17419
17420            <td class="entry_description">
17421              <p>Whether a result given to the framework is the
17422final one for the capture,<wbr/> or only a partial that contains a
17423subset of the full set of dynamic metadata
17424values.<wbr/></p>
17425            </td>
17426
17427            <td class="entry_units">
17428            </td>
17429
17430            <td class="entry_range">
17431              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
17432              <p>Optional.<wbr/> Default value is FINAL.<wbr/></p>
17433            </td>
17434
17435            <td class="entry_hal_version">
17436              <p>3.<wbr/>2</p>
17437            </td>
17438
17439            <td class="entry_tags">
17440            </td>
17441
17442          </tr>
17443          <tr class="entries_header">
17444            <th class="th_details" colspan="6">Details</th>
17445          </tr>
17446          <tr class="entry_cont">
17447            <td class="entry_details" colspan="6">
17448              <p>The entries in the result metadata buffers for a
17449single capture may not overlap,<wbr/> except for this entry.<wbr/> The
17450FINAL buffers must retain FIFO ordering relative to the
17451requests that generate them,<wbr/> so the FINAL buffer for frame 3 must
17452always be sent to the framework after the FINAL buffer for frame 2,<wbr/> and
17453before the FINAL buffer for frame 4.<wbr/> PARTIAL buffers may be returned
17454in any order relative to other frames,<wbr/> but all PARTIAL buffers for a given
17455capture must arrive before the FINAL buffer for that capture.<wbr/> This entry may
17456only be used by the camera device if quirks.<wbr/>usePartialResult is set to 1.<wbr/></p>
17457            </td>
17458          </tr>
17459
17460          <tr class="entries_header">
17461            <th class="th_details" colspan="6">HAL Implementation Details</th>
17462          </tr>
17463          <tr class="entry_cont">
17464            <td class="entry_details" colspan="6">
17465              <p>Refer to <code>camera3_<wbr/>capture_<wbr/>result::partial_<wbr/>result</code>
17466for information on how to implement partial results.<wbr/></p>
17467            </td>
17468          </tr>
17469
17470          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17471           <!-- end of entry -->
17472
17473
17474
17475      <!-- end of kind -->
17476      </tbody>
17477
17478  <!-- end of section -->
17479  <tr><td colspan="7" id="section_request" class="section">request</td></tr>
17480
17481
17482      <tr><td colspan="7" class="kind">controls</td></tr>
17483
17484      <thead class="entries_header">
17485        <tr>
17486          <th class="th_name">Property Name</th>
17487          <th class="th_type">Type</th>
17488          <th class="th_description">Description</th>
17489          <th class="th_units">Units</th>
17490          <th class="th_range">Range</th>
17491          <th class="th_hal_version">Initial HIDL HAL version</th>
17492          <th class="th_tags">Tags</th>
17493        </tr>
17494      </thead>
17495
17496      <tbody>
17497
17498
17499
17500
17501
17502
17503
17504
17505
17506
17507          <tr class="entry" id="controls_android.request.frameCount">
17508            <td class="entry_name
17509                entry_name_deprecated
17510             " rowspan="1">
17511              android.<wbr/>request.<wbr/>frame<wbr/>Count
17512            </td>
17513            <td class="entry_type">
17514                <span class="entry_type_name">int32</span>
17515
17516              <span class="entry_type_visibility"> [system]</span>
17517
17518
17519
17520              <span class="entry_type_deprecated">[deprecated] </span>
17521
17522
17523
17524            </td> <!-- entry_type -->
17525
17526            <td class="entry_description">
17527              <p>A frame counter set by the framework.<wbr/> Must
17528be maintained unchanged in output frame.<wbr/> This value monotonically
17529increases with every new result (that is,<wbr/> each new result has a unique
17530frameCount value).<wbr/></p>
17531            </td>
17532
17533            <td class="entry_units">
17534              incrementing integer
17535            </td>
17536
17537            <td class="entry_range">
17538              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
17539              <p>Any int.<wbr/></p>
17540            </td>
17541
17542            <td class="entry_hal_version">
17543              <p>3.<wbr/>2</p>
17544            </td>
17545
17546            <td class="entry_tags">
17547            </td>
17548
17549          </tr>
17550
17551
17552          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17553           <!-- end of entry -->
17554
17555
17556          <tr class="entry" id="controls_android.request.id">
17557            <td class="entry_name
17558             " rowspan="1">
17559              android.<wbr/>request.<wbr/>id
17560            </td>
17561            <td class="entry_type">
17562                <span class="entry_type_name">int32</span>
17563
17564              <span class="entry_type_visibility"> [hidden]</span>
17565
17566
17567
17568
17569
17570
17571            </td> <!-- entry_type -->
17572
17573            <td class="entry_description">
17574              <p>An application-specified ID for the current
17575request.<wbr/> Must be maintained unchanged in output
17576frame</p>
17577            </td>
17578
17579            <td class="entry_units">
17580              arbitrary integer assigned by application
17581            </td>
17582
17583            <td class="entry_range">
17584              <p>Any int</p>
17585            </td>
17586
17587            <td class="entry_hal_version">
17588              <p>3.<wbr/>2</p>
17589            </td>
17590
17591            <td class="entry_tags">
17592              <ul class="entry_tags">
17593                  <li><a href="#tag_V1">V1</a></li>
17594              </ul>
17595            </td>
17596
17597          </tr>
17598
17599
17600          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17601           <!-- end of entry -->
17602
17603
17604          <tr class="entry" id="controls_android.request.inputStreams">
17605            <td class="entry_name
17606                entry_name_deprecated
17607             " rowspan="3">
17608              android.<wbr/>request.<wbr/>input<wbr/>Streams
17609            </td>
17610            <td class="entry_type">
17611                <span class="entry_type_name">int32</span>
17612                <span class="entry_type_container">x</span>
17613
17614                <span class="entry_type_array">
17615                  n
17616                </span>
17617              <span class="entry_type_visibility"> [system]</span>
17618
17619
17620
17621              <span class="entry_type_deprecated">[deprecated] </span>
17622
17623
17624
17625            </td> <!-- entry_type -->
17626
17627            <td class="entry_description">
17628              <p>List which camera reprocess stream is used
17629for the source of reprocessing data.<wbr/></p>
17630            </td>
17631
17632            <td class="entry_units">
17633              List of camera reprocess stream IDs
17634            </td>
17635
17636            <td class="entry_range">
17637              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
17638              <p>Typically,<wbr/> only one entry allowed,<wbr/> must be a valid reprocess stream ID.<wbr/></p>
17639            </td>
17640
17641            <td class="entry_hal_version">
17642              <p>3.<wbr/>2</p>
17643            </td>
17644
17645            <td class="entry_tags">
17646              <ul class="entry_tags">
17647                  <li><a href="#tag_HAL2">HAL2</a></li>
17648              </ul>
17649            </td>
17650
17651          </tr>
17652          <tr class="entries_header">
17653            <th class="th_details" colspan="6">Details</th>
17654          </tr>
17655          <tr class="entry_cont">
17656            <td class="entry_details" colspan="6">
17657              <p>Only meaningful when <a href="#controls_android.request.type">android.<wbr/>request.<wbr/>type</a> ==
17658REPROCESS.<wbr/> Ignored otherwise</p>
17659            </td>
17660          </tr>
17661
17662
17663          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17664           <!-- end of entry -->
17665
17666
17667          <tr class="entry" id="controls_android.request.metadataMode">
17668            <td class="entry_name
17669             " rowspan="1">
17670              android.<wbr/>request.<wbr/>metadata<wbr/>Mode
17671            </td>
17672            <td class="entry_type">
17673                <span class="entry_type_name entry_type_name_enum">byte</span>
17674
17675              <span class="entry_type_visibility"> [system]</span>
17676
17677
17678
17679
17680
17681                <ul class="entry_type_enum">
17682                  <li>
17683                    <span class="entry_type_enum_name">NONE (v3.2)</span>
17684                    <span class="entry_type_enum_notes"><p>No metadata should be produced on output,<wbr/> except
17685for application-bound buffer data.<wbr/> If no
17686application-bound streams exist,<wbr/> no frame should be
17687placed in the output frame queue.<wbr/> If such streams
17688exist,<wbr/> a frame should be placed on the output queue
17689with null metadata but with the necessary output buffer
17690information.<wbr/> Timestamp information should still be
17691included with any output stream buffers</p></span>
17692                  </li>
17693                  <li>
17694                    <span class="entry_type_enum_name">FULL (v3.2)</span>
17695                    <span class="entry_type_enum_notes"><p>All metadata should be produced.<wbr/> Statistics will
17696only be produced if they are separately
17697enabled</p></span>
17698                  </li>
17699                </ul>
17700
17701            </td> <!-- entry_type -->
17702
17703            <td class="entry_description">
17704              <p>How much metadata to produce on
17705output</p>
17706            </td>
17707
17708            <td class="entry_units">
17709            </td>
17710
17711            <td class="entry_range">
17712            </td>
17713
17714            <td class="entry_hal_version">
17715              <p>3.<wbr/>2</p>
17716            </td>
17717
17718            <td class="entry_tags">
17719              <ul class="entry_tags">
17720                  <li><a href="#tag_FUTURE">FUTURE</a></li>
17721              </ul>
17722            </td>
17723
17724          </tr>
17725
17726
17727          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17728           <!-- end of entry -->
17729
17730
17731          <tr class="entry" id="controls_android.request.outputStreams">
17732            <td class="entry_name
17733                entry_name_deprecated
17734             " rowspan="3">
17735              android.<wbr/>request.<wbr/>output<wbr/>Streams
17736            </td>
17737            <td class="entry_type">
17738                <span class="entry_type_name">int32</span>
17739                <span class="entry_type_container">x</span>
17740
17741                <span class="entry_type_array">
17742                  n
17743                </span>
17744              <span class="entry_type_visibility"> [system]</span>
17745
17746
17747
17748              <span class="entry_type_deprecated">[deprecated] </span>
17749
17750
17751
17752            </td> <!-- entry_type -->
17753
17754            <td class="entry_description">
17755              <p>Lists which camera output streams image data
17756from this capture must be sent to</p>
17757            </td>
17758
17759            <td class="entry_units">
17760              List of camera stream IDs
17761            </td>
17762
17763            <td class="entry_range">
17764              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
17765              <p>List must only include streams that have been
17766created</p>
17767            </td>
17768
17769            <td class="entry_hal_version">
17770              <p>3.<wbr/>2</p>
17771            </td>
17772
17773            <td class="entry_tags">
17774              <ul class="entry_tags">
17775                  <li><a href="#tag_HAL2">HAL2</a></li>
17776              </ul>
17777            </td>
17778
17779          </tr>
17780          <tr class="entries_header">
17781            <th class="th_details" colspan="6">Details</th>
17782          </tr>
17783          <tr class="entry_cont">
17784            <td class="entry_details" colspan="6">
17785              <p>If no output streams are listed,<wbr/> then the image
17786data should simply be discarded.<wbr/> The image data must
17787still be captured for metadata and statistics production,<wbr/>
17788and the lens and flash must operate as requested.<wbr/></p>
17789            </td>
17790          </tr>
17791
17792
17793          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17794           <!-- end of entry -->
17795
17796
17797          <tr class="entry" id="controls_android.request.type">
17798            <td class="entry_name
17799                entry_name_deprecated
17800             " rowspan="1">
17801              android.<wbr/>request.<wbr/>type
17802            </td>
17803            <td class="entry_type">
17804                <span class="entry_type_name entry_type_name_enum">byte</span>
17805
17806              <span class="entry_type_visibility"> [system]</span>
17807
17808
17809
17810              <span class="entry_type_deprecated">[deprecated] </span>
17811
17812
17813                <ul class="entry_type_enum">
17814                  <li>
17815                    <span class="entry_type_enum_name">CAPTURE (v3.2)</span>
17816                    <span class="entry_type_enum_notes"><p>Capture a new image from the imaging hardware,<wbr/>
17817and process it according to the
17818settings</p></span>
17819                  </li>
17820                  <li>
17821                    <span class="entry_type_enum_name">REPROCESS (v3.2)</span>
17822                    <span class="entry_type_enum_notes"><p>Process previously captured data; the
17823<a href="#controls_android.request.inputStreams">android.<wbr/>request.<wbr/>input<wbr/>Streams</a> parameter determines the
17824source reprocessing stream.<wbr/> TODO: Mark dynamic metadata
17825needed for reprocessing with [RP]</p></span>
17826                  </li>
17827                </ul>
17828
17829            </td> <!-- entry_type -->
17830
17831            <td class="entry_description">
17832              <p>The type of the request; either CAPTURE or
17833REPROCESS.<wbr/> For legacy HAL3,<wbr/> this tag is redundant.<wbr/></p>
17834            </td>
17835
17836            <td class="entry_units">
17837            </td>
17838
17839            <td class="entry_range">
17840              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
17841            </td>
17842
17843            <td class="entry_hal_version">
17844              <p>3.<wbr/>2</p>
17845            </td>
17846
17847            <td class="entry_tags">
17848              <ul class="entry_tags">
17849                  <li><a href="#tag_HAL2">HAL2</a></li>
17850              </ul>
17851            </td>
17852
17853          </tr>
17854
17855
17856          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17857           <!-- end of entry -->
17858
17859
17860
17861      <!-- end of kind -->
17862      </tbody>
17863      <tr><td colspan="7" class="kind">static</td></tr>
17864
17865      <thead class="entries_header">
17866        <tr>
17867          <th class="th_name">Property Name</th>
17868          <th class="th_type">Type</th>
17869          <th class="th_description">Description</th>
17870          <th class="th_units">Units</th>
17871          <th class="th_range">Range</th>
17872          <th class="th_hal_version">Initial HIDL HAL version</th>
17873          <th class="th_tags">Tags</th>
17874        </tr>
17875      </thead>
17876
17877      <tbody>
17878
17879
17880
17881
17882
17883
17884
17885
17886
17887
17888          <tr class="entry" id="static_android.request.maxNumOutputStreams">
17889            <td class="entry_name
17890             " rowspan="3">
17891              android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams
17892            </td>
17893            <td class="entry_type">
17894                <span class="entry_type_name">int32</span>
17895                <span class="entry_type_container">x</span>
17896
17897                <span class="entry_type_array">
17898                  3
17899                </span>
17900              <span class="entry_type_visibility"> [ndk_public]</span>
17901
17902
17903              <span class="entry_type_hwlevel">[legacy] </span>
17904
17905
17906
17907
17908            </td> <!-- entry_type -->
17909
17910            <td class="entry_description">
17911              <p>The maximum numbers of different types of output streams
17912that can be configured and used simultaneously by a camera device.<wbr/></p>
17913            </td>
17914
17915            <td class="entry_units">
17916            </td>
17917
17918            <td class="entry_range">
17919              <p>For processed (and stalling) format streams,<wbr/> &gt;= 1.<wbr/></p>
17920<p>For Raw format (either stalling or non-stalling) streams,<wbr/> &gt;= 0.<wbr/></p>
17921<p>For processed (but not stalling) format streams,<wbr/> &gt;= 3
17922for FULL mode devices (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL</code>);
17923&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>
17924            </td>
17925
17926            <td class="entry_hal_version">
17927              <p>3.<wbr/>2</p>
17928            </td>
17929
17930            <td class="entry_tags">
17931              <ul class="entry_tags">
17932                  <li><a href="#tag_BC">BC</a></li>
17933              </ul>
17934            </td>
17935
17936          </tr>
17937          <tr class="entries_header">
17938            <th class="th_details" colspan="6">Details</th>
17939          </tr>
17940          <tr class="entry_cont">
17941            <td class="entry_details" colspan="6">
17942              <p>This is a 3 element tuple that contains the max number of output simultaneous
17943streams for raw sensor,<wbr/> processed (but not stalling),<wbr/> and processed (and stalling)
17944formats respectively.<wbr/> For example,<wbr/> assuming that JPEG is typically a processed and
17945stalling stream,<wbr/> if max raw sensor format output stream number is 1,<wbr/> max YUV streams
17946number 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>
17947<p>This lists the upper bound of the number of output streams supported by
17948the camera device.<wbr/> Using more streams simultaneously may require more hardware and
17949CPU resources that will consume more power.<wbr/> The image format for an output stream can
17950be any supported format provided by <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a>.<wbr/>
17951The formats defined in <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> can be catergorized
17952into the 3 stream types as below:</p>
17953<ul>
17954<li>Processed (but stalling): any non-RAW format with a stallDurations &gt; 0.<wbr/>
17955  Typically <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">JPEG format</a>.<wbr/></li>
17956<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
17957  <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW12">RAW12</a>.<wbr/></li>
17958<li>Processed (but not-stalling): any non-RAW format without a stall duration.<wbr/>  Typically
17959  <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">YUV_<wbr/>420_<wbr/>888</a>,<wbr/>
17960  <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>
17961</ul>
17962            </td>
17963          </tr>
17964
17965
17966          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17967           <!-- end of entry -->
17968
17969
17970          <tr class="entry" id="static_android.request.maxNumOutputRaw">
17971            <td class="entry_name
17972             " rowspan="3">
17973              android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Raw
17974            </td>
17975            <td class="entry_type">
17976                <span class="entry_type_name">int32</span>
17977
17978              <span class="entry_type_visibility"> [java_public]</span>
17979
17980              <span class="entry_type_synthetic">[synthetic] </span>
17981
17982              <span class="entry_type_hwlevel">[legacy] </span>
17983
17984
17985
17986
17987            </td> <!-- entry_type -->
17988
17989            <td class="entry_description">
17990              <p>The maximum numbers of different types of output streams
17991that can be configured and used simultaneously by a camera device
17992for any <code>RAW</code> formats.<wbr/></p>
17993            </td>
17994
17995            <td class="entry_units">
17996            </td>
17997
17998            <td class="entry_range">
17999              <p>&gt;= 0</p>
18000            </td>
18001
18002            <td class="entry_hal_version">
18003              <p>3.<wbr/>2</p>
18004            </td>
18005
18006            <td class="entry_tags">
18007            </td>
18008
18009          </tr>
18010          <tr class="entries_header">
18011            <th class="th_details" colspan="6">Details</th>
18012          </tr>
18013          <tr class="entry_cont">
18014            <td class="entry_details" colspan="6">
18015              <p>This value contains the max number of output simultaneous
18016streams from the raw sensor.<wbr/></p>
18017<p>This lists the upper bound of the number of output streams supported by
18018the camera device.<wbr/> Using more streams simultaneously may require more hardware and
18019CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can
18020be 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>
18021<p>In particular,<wbr/> a <code>RAW</code> format is typically one of:</p>
18022<ul>
18023<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_SENSOR">RAW_<wbr/>SENSOR</a></li>
18024<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW10">RAW10</a></li>
18025<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW12">RAW12</a></li>
18026</ul>
18027<p>LEGACY mode devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> <code>==</code> LEGACY)
18028never support raw streams.<wbr/></p>
18029            </td>
18030          </tr>
18031
18032
18033          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18034           <!-- end of entry -->
18035
18036
18037          <tr class="entry" id="static_android.request.maxNumOutputProc">
18038            <td class="entry_name
18039             " rowspan="3">
18040              android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Proc
18041            </td>
18042            <td class="entry_type">
18043                <span class="entry_type_name">int32</span>
18044
18045              <span class="entry_type_visibility"> [java_public]</span>
18046
18047              <span class="entry_type_synthetic">[synthetic] </span>
18048
18049              <span class="entry_type_hwlevel">[legacy] </span>
18050
18051
18052
18053
18054            </td> <!-- entry_type -->
18055
18056            <td class="entry_description">
18057              <p>The maximum numbers of different types of output streams
18058that can be configured and used simultaneously by a camera device
18059for any processed (but not-stalling) formats.<wbr/></p>
18060            </td>
18061
18062            <td class="entry_units">
18063            </td>
18064
18065            <td class="entry_range">
18066              <p>&gt;= 3
18067for FULL mode devices (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL</code>);
18068&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>
18069            </td>
18070
18071            <td class="entry_hal_version">
18072              <p>3.<wbr/>2</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>This value contains the max number of output simultaneous
18085streams for any processed (but not-stalling) formats.<wbr/></p>
18086<p>This lists the upper bound of the number of output streams supported by
18087the camera device.<wbr/> Using more streams simultaneously may require more hardware and
18088CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can
18089be 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>
18090<p>Processed (but not-stalling) is defined as any non-RAW format without a stall duration.<wbr/>
18091Typically:</p>
18092<ul>
18093<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">YUV_<wbr/>420_<wbr/>888</a></li>
18094<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#NV21">NV21</a></li>
18095<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YV12">YV12</a></li>
18096<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>
18097<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#Y8">Y8</a></li>
18098</ul>
18099<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
18100processed format -- it will return 0 for a non-stalling stream.<wbr/></p>
18101<p>LEGACY devices will support at least 2 processing/<wbr/>non-stalling streams.<wbr/></p>
18102            </td>
18103          </tr>
18104
18105
18106          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18107           <!-- end of entry -->
18108
18109
18110          <tr class="entry" id="static_android.request.maxNumOutputProcStalling">
18111            <td class="entry_name
18112             " rowspan="3">
18113              android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Proc<wbr/>Stalling
18114            </td>
18115            <td class="entry_type">
18116                <span class="entry_type_name">int32</span>
18117
18118              <span class="entry_type_visibility"> [java_public]</span>
18119
18120              <span class="entry_type_synthetic">[synthetic] </span>
18121
18122              <span class="entry_type_hwlevel">[legacy] </span>
18123
18124
18125
18126
18127            </td> <!-- entry_type -->
18128
18129            <td class="entry_description">
18130              <p>The maximum numbers of different types of output streams
18131that can be configured and used simultaneously by a camera device
18132for any processed (and stalling) formats.<wbr/></p>
18133            </td>
18134
18135            <td class="entry_units">
18136            </td>
18137
18138            <td class="entry_range">
18139              <p>&gt;= 1</p>
18140            </td>
18141
18142            <td class="entry_hal_version">
18143              <p>3.<wbr/>2</p>
18144            </td>
18145
18146            <td class="entry_tags">
18147            </td>
18148
18149          </tr>
18150          <tr class="entries_header">
18151            <th class="th_details" colspan="6">Details</th>
18152          </tr>
18153          <tr class="entry_cont">
18154            <td class="entry_details" colspan="6">
18155              <p>This value contains the max number of output simultaneous
18156streams for any processed (but not-stalling) formats.<wbr/></p>
18157<p>This lists the upper bound of the number of output streams supported by
18158the camera device.<wbr/> Using more streams simultaneously may require more hardware and
18159CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can
18160be 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>
18161<p>A processed and stalling format is defined as any non-RAW format with a stallDurations
18162&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>
18163<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
18164processed format -- it will return a non-0 value for a stalling stream.<wbr/></p>
18165<p>LEGACY devices will support up to 1 processing/<wbr/>stalling stream.<wbr/></p>
18166            </td>
18167          </tr>
18168
18169
18170          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18171           <!-- end of entry -->
18172
18173
18174          <tr class="entry" id="static_android.request.maxNumReprocessStreams">
18175            <td class="entry_name
18176                entry_name_deprecated
18177             " rowspan="3">
18178              android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Reprocess<wbr/>Streams
18179            </td>
18180            <td class="entry_type">
18181                <span class="entry_type_name">int32</span>
18182                <span class="entry_type_container">x</span>
18183
18184                <span class="entry_type_array">
18185                  1
18186                </span>
18187              <span class="entry_type_visibility"> [system]</span>
18188
18189
18190
18191              <span class="entry_type_deprecated">[deprecated] </span>
18192
18193
18194
18195            </td> <!-- entry_type -->
18196
18197            <td class="entry_description">
18198              <p>How many reprocessing streams of any type
18199can be allocated at the same time.<wbr/></p>
18200            </td>
18201
18202            <td class="entry_units">
18203            </td>
18204
18205            <td class="entry_range">
18206              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
18207              <p>&gt;= 0</p>
18208            </td>
18209
18210            <td class="entry_hal_version">
18211              <p>3.<wbr/>2</p>
18212            </td>
18213
18214            <td class="entry_tags">
18215              <ul class="entry_tags">
18216                  <li><a href="#tag_HAL2">HAL2</a></li>
18217              </ul>
18218            </td>
18219
18220          </tr>
18221          <tr class="entries_header">
18222            <th class="th_details" colspan="6">Details</th>
18223          </tr>
18224          <tr class="entry_cont">
18225            <td class="entry_details" colspan="6">
18226              <p>Only used by HAL2.<wbr/>x.<wbr/></p>
18227<p>When set to 0,<wbr/> it means no reprocess stream is supported.<wbr/></p>
18228            </td>
18229          </tr>
18230
18231
18232          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18233           <!-- end of entry -->
18234
18235
18236          <tr class="entry" id="static_android.request.maxNumInputStreams">
18237            <td class="entry_name
18238             " rowspan="5">
18239              android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Input<wbr/>Streams
18240            </td>
18241            <td class="entry_type">
18242                <span class="entry_type_name">int32</span>
18243
18244              <span class="entry_type_visibility"> [java_public]</span>
18245
18246
18247              <span class="entry_type_hwlevel">[full] </span>
18248
18249
18250
18251
18252            </td> <!-- entry_type -->
18253
18254            <td class="entry_description">
18255              <p>The maximum numbers of any type of input streams
18256that can be configured and used simultaneously by a camera device.<wbr/></p>
18257            </td>
18258
18259            <td class="entry_units">
18260            </td>
18261
18262            <td class="entry_range">
18263              <p>0 or 1.<wbr/></p>
18264            </td>
18265
18266            <td class="entry_hal_version">
18267              <p>3.<wbr/>2</p>
18268            </td>
18269
18270            <td class="entry_tags">
18271              <ul class="entry_tags">
18272                  <li><a href="#tag_REPROC">REPROC</a></li>
18273              </ul>
18274            </td>
18275
18276          </tr>
18277          <tr class="entries_header">
18278            <th class="th_details" colspan="6">Details</th>
18279          </tr>
18280          <tr class="entry_cont">
18281            <td class="entry_details" colspan="6">
18282              <p>When set to 0,<wbr/> it means no input stream is supported.<wbr/></p>
18283<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
18284input stream,<wbr/> there must be at least one output stream configured to to receive the
18285reprocessed images.<wbr/></p>
18286<p>When an input stream and some output streams are used in a reprocessing request,<wbr/>
18287only the input buffer will be used to produce these output stream buffers,<wbr/> and a
18288new sensor image will not be captured.<wbr/></p>
18289<p>For example,<wbr/> for Zero Shutter Lag (ZSL) still capture use case,<wbr/> the input
18290stream image format will be PRIVATE,<wbr/> the associated output stream image format
18291should be JPEG.<wbr/></p>
18292            </td>
18293          </tr>
18294
18295          <tr class="entries_header">
18296            <th class="th_details" colspan="6">HAL Implementation Details</th>
18297          </tr>
18298          <tr class="entry_cont">
18299            <td class="entry_details" colspan="6">
18300              <p>For the reprocessing flow and controls,<wbr/> see
18301hardware/<wbr/>libhardware/<wbr/>include/<wbr/>hardware/<wbr/>camera3.<wbr/>h Section 10 for more details.<wbr/></p>
18302            </td>
18303          </tr>
18304
18305          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18306           <!-- end of entry -->
18307
18308
18309          <tr class="entry" id="static_android.request.pipelineMaxDepth">
18310            <td class="entry_name
18311             " rowspan="5">
18312              android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth
18313            </td>
18314            <td class="entry_type">
18315                <span class="entry_type_name">byte</span>
18316
18317              <span class="entry_type_visibility"> [public]</span>
18318
18319
18320              <span class="entry_type_hwlevel">[legacy] </span>
18321
18322
18323
18324
18325            </td> <!-- entry_type -->
18326
18327            <td class="entry_description">
18328              <p>Specifies the number of maximum pipeline stages a frame
18329has to go through from when it's exposed to when it's available
18330to the framework.<wbr/></p>
18331            </td>
18332
18333            <td class="entry_units">
18334            </td>
18335
18336            <td class="entry_range">
18337            </td>
18338
18339            <td class="entry_hal_version">
18340              <p>3.<wbr/>2</p>
18341            </td>
18342
18343            <td class="entry_tags">
18344            </td>
18345
18346          </tr>
18347          <tr class="entries_header">
18348            <th class="th_details" colspan="6">Details</th>
18349          </tr>
18350          <tr class="entry_cont">
18351            <td class="entry_details" colspan="6">
18352              <p>A typical minimum value for this is 2 (one stage to expose,<wbr/>
18353one stage to readout) from the sensor.<wbr/> The ISP then usually adds
18354its own stages to do custom HW processing.<wbr/> Further stages may be
18355added by SW processing.<wbr/></p>
18356<p>Depending on what settings are used (e.<wbr/>g.<wbr/> YUV,<wbr/> JPEG) and what
18357processing is enabled (e.<wbr/>g.<wbr/> face detection),<wbr/> the actual pipeline
18358depth (specified by <a href="#dynamic_android.request.pipelineDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Depth</a>) may be less than
18359the max pipeline depth.<wbr/></p>
18360<p>A pipeline depth of X stages is equivalent to a pipeline latency of
18361X frame intervals.<wbr/></p>
18362<p>This value will normally be 8 or less,<wbr/> however,<wbr/> for high speed capture session,<wbr/>
18363the max pipeline depth will be up to 8 x size of high speed capture request list.<wbr/></p>
18364            </td>
18365          </tr>
18366
18367          <tr class="entries_header">
18368            <th class="th_details" colspan="6">HAL Implementation Details</th>
18369          </tr>
18370          <tr class="entry_cont">
18371            <td class="entry_details" colspan="6">
18372              <p>This value should be 4 or less,<wbr/> expect for the high speed recording session,<wbr/> where the
18373max batch sizes may be larger than 1.<wbr/></p>
18374            </td>
18375          </tr>
18376
18377          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18378           <!-- end of entry -->
18379
18380
18381          <tr class="entry" id="static_android.request.partialResultCount">
18382            <td class="entry_name
18383             " rowspan="3">
18384              android.<wbr/>request.<wbr/>partial<wbr/>Result<wbr/>Count
18385            </td>
18386            <td class="entry_type">
18387                <span class="entry_type_name">int32</span>
18388
18389              <span class="entry_type_visibility"> [public]</span>
18390
18391
18392
18393
18394
18395
18396            </td> <!-- entry_type -->
18397
18398            <td class="entry_description">
18399              <p>Defines how many sub-components
18400a result will be composed of.<wbr/></p>
18401            </td>
18402
18403            <td class="entry_units">
18404            </td>
18405
18406            <td class="entry_range">
18407              <p>&gt;= 1</p>
18408            </td>
18409
18410            <td class="entry_hal_version">
18411              <p>3.<wbr/>2</p>
18412            </td>
18413
18414            <td class="entry_tags">
18415            </td>
18416
18417          </tr>
18418          <tr class="entries_header">
18419            <th class="th_details" colspan="6">Details</th>
18420          </tr>
18421          <tr class="entry_cont">
18422            <td class="entry_details" colspan="6">
18423              <p>In order to combat the pipeline latency,<wbr/> partial results
18424may be delivered to the application layer from the camera device as
18425soon as they are available.<wbr/></p>
18426<p>Optional; defaults to 1.<wbr/> A value of 1 means that partial
18427results are not supported,<wbr/> and only the final TotalCaptureResult will
18428be produced by the camera device.<wbr/></p>
18429<p>A typical use case for this might be: after requesting an
18430auto-focus (AF) lock the new AF state might be available 50%
18431of the way through the pipeline.<wbr/>  The camera device could
18432then immediately dispatch this state via a partial result to
18433the application,<wbr/> and the rest of the metadata via later
18434partial results.<wbr/></p>
18435            </td>
18436          </tr>
18437
18438
18439          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18440           <!-- end of entry -->
18441
18442
18443          <tr class="entry" id="static_android.request.availableCapabilities">
18444            <td class="entry_name
18445             " rowspan="5">
18446              android.<wbr/>request.<wbr/>available<wbr/>Capabilities
18447            </td>
18448            <td class="entry_type">
18449                <span class="entry_type_name entry_type_name_enum">byte</span>
18450                <span class="entry_type_container">x</span>
18451
18452                <span class="entry_type_array">
18453                  n
18454                </span>
18455              <span class="entry_type_visibility"> [public]</span>
18456
18457
18458              <span class="entry_type_hwlevel">[legacy] </span>
18459
18460
18461
18462                <ul class="entry_type_enum">
18463                  <li>
18464                    <span class="entry_type_enum_name">BACKWARD_COMPATIBLE (v3.2)</span>
18465                    <span class="entry_type_enum_notes"><p>The minimal set of capabilities that every camera
18466device (regardless of <a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>)
18467supports.<wbr/></p>
18468<p>This capability is listed by all normal devices,<wbr/> and
18469indicates that the camera device has a feature set
18470that's comparable to the baseline requirements for the
18471older android.<wbr/>hardware.<wbr/>Camera API.<wbr/></p>
18472<p>Devices with the DEPTH_<wbr/>OUTPUT capability might not list this
18473capability,<wbr/> indicating that they support only depth measurement,<wbr/>
18474not standard color output.<wbr/></p></span>
18475                  </li>
18476                  <li>
18477                    <span class="entry_type_enum_name">MANUAL_SENSOR (v3.2)</span>
18478                    <span class="entry_type_enum_optional">[optional]</span>
18479                    <span class="entry_type_enum_notes"><p>The camera device can be manually controlled (3A algorithms such
18480as auto-exposure,<wbr/> and auto-focus can be bypassed).<wbr/>
18481The camera device supports basic manual control of the sensor image
18482acquisition related stages.<wbr/> This means the following controls are
18483guaranteed to be supported:</p>
18484<ul>
18485<li>Manual frame duration control<ul>
18486<li><a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a></li>
18487<li><a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a></li>
18488</ul>
18489</li>
18490<li>Manual exposure control<ul>
18491<li><a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a></li>
18492<li><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></li>
18493</ul>
18494</li>
18495<li>Manual sensitivity control<ul>
18496<li><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></li>
18497<li><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></li>
18498</ul>
18499</li>
18500<li>Manual lens control (if the lens is adjustable)<ul>
18501<li>android.<wbr/>lens.<wbr/>*</li>
18502</ul>
18503</li>
18504<li>Manual flash control (if a flash unit is present)<ul>
18505<li>android.<wbr/>flash.<wbr/>*</li>
18506</ul>
18507</li>
18508<li>Manual black level locking<ul>
18509<li><a href="#controls_android.blackLevel.lock">android.<wbr/>black<wbr/>Level.<wbr/>lock</a></li>
18510</ul>
18511</li>
18512<li>Auto exposure lock<ul>
18513<li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li>
18514</ul>
18515</li>
18516</ul>
18517<p>If any of the above 3A algorithms are enabled,<wbr/> then the camera
18518device will accurately report the values applied by 3A in the
18519result.<wbr/></p>
18520<p>A given camera device may also support additional manual sensor controls,<wbr/>
18521but this capability only covers the above list of controls.<wbr/></p>
18522<p>If this is supported,<wbr/> <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> will
18523additionally return a min frame duration that is greater than
18524zero for each supported size-format combination.<wbr/></p>
18525<p>For camera devices with LOGICAL_<wbr/>MULTI_<wbr/>CAMERA capability,<wbr/> when the underlying active
18526physical camera switches,<wbr/> exposureTime,<wbr/> sensitivity,<wbr/> and lens properties may change
18527even if AE/<wbr/>AF is locked.<wbr/> However,<wbr/> the overall auto exposure and auto focus experience
18528for users will be consistent.<wbr/> Refer to LOGICAL_<wbr/>MULTI_<wbr/>CAMERA capability for details.<wbr/></p></span>
18529                  </li>
18530                  <li>
18531                    <span class="entry_type_enum_name">MANUAL_POST_PROCESSING (v3.2)</span>
18532                    <span class="entry_type_enum_optional">[optional]</span>
18533                    <span class="entry_type_enum_notes"><p>The camera device post-processing stages can be manually controlled.<wbr/>
18534The camera device supports basic manual control of the image post-processing
18535stages.<wbr/> This means the following controls are guaranteed to be supported:</p>
18536<ul>
18537<li>
18538<p>Manual tonemap control</p>
18539<ul>
18540<li><a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a></li>
18541<li><a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a></li>
18542<li><a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></li>
18543<li><a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a></li>
18544<li><a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a></li>
18545</ul>
18546</li>
18547<li>
18548<p>Manual white balance control</p>
18549<ul>
18550<li><a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a></li>
18551<li><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a></li>
18552</ul>
18553</li>
18554<li>Manual lens shading map control<ul>
18555<li><a href="#controls_android.shading.mode">android.<wbr/>shading.<wbr/>mode</a></li>
18556<li><a href="#controls_android.statistics.lensShadingMapMode">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode</a></li>
18557<li><a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a></li>
18558<li><a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a></li>
18559</ul>
18560</li>
18561<li>Manual aberration correction control (if aberration correction is supported)<ul>
18562<li><a href="#controls_android.colorCorrection.aberrationMode">android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode</a></li>
18563<li><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></li>
18564</ul>
18565</li>
18566<li>Auto white balance lock<ul>
18567<li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li>
18568</ul>
18569</li>
18570</ul>
18571<p>If auto white balance is enabled,<wbr/> then the camera device
18572will accurately report the values applied by AWB in the result.<wbr/></p>
18573<p>A given camera device may also support additional post-processing
18574controls,<wbr/> but this capability only covers the above list of controls.<wbr/></p>
18575<p>For camera devices with LOGICAL_<wbr/>MULTI_<wbr/>CAMERA capability,<wbr/> when underlying active
18576physical camera switches,<wbr/> tonemap,<wbr/> white balance,<wbr/> and shading map may change even if
18577awb is locked.<wbr/> However,<wbr/> the overall post-processing experience for users will be
18578consistent.<wbr/> Refer to LOGICAL_<wbr/>MULTI_<wbr/>CAMERA capability for details.<wbr/></p></span>
18579                  </li>
18580                  <li>
18581                    <span class="entry_type_enum_name">RAW (v3.2)</span>
18582                    <span class="entry_type_enum_optional">[optional]</span>
18583                    <span class="entry_type_enum_notes"><p>The camera device supports outputting RAW buffers and
18584metadata for interpreting them.<wbr/></p>
18585<p>Devices supporting the RAW capability allow both for
18586saving DNG files,<wbr/> and for direct application processing of
18587raw sensor images.<wbr/></p>
18588<ul>
18589<li>RAW_<wbr/>SENSOR is supported as an output format.<wbr/></li>
18590<li>The maximum available resolution for RAW_<wbr/>SENSOR streams
18591  will match either the value in
18592  <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a> or
18593  <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>
18594<li>All DNG-related optional metadata entries are provided
18595  by the camera device.<wbr/></li>
18596</ul></span>
18597                  </li>
18598                  <li>
18599                    <span class="entry_type_enum_name">PRIVATE_REPROCESSING (v3.2)</span>
18600                    <span class="entry_type_enum_optional">[optional]</span>
18601                    <span class="entry_type_enum_hidden">[java_public]</span>
18602                    <span class="entry_type_enum_notes"><p>The camera device supports the Zero Shutter Lag reprocessing use case.<wbr/></p>
18603<ul>
18604<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>
18605<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/>
18606  that is,<wbr/> <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> is included in the lists of
18607  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>
18608<li><a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getValidOutputFormatsForInput">StreamConfigurationMap#getValidOutputFormatsForInput</a>
18609  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>
18610<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>
18611<li>Using <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> does not cause a frame rate drop
18612  relative to the sensor's maximum capture rate (at that resolution).<wbr/></li>
18613<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> will be reprocessable into both
18614  <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a> and
18615  <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a> formats.<wbr/></li>
18616<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
18617  <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#Y8">ImageFormat#Y8</a>.<wbr/></li>
18618<li>The maximum available resolution for PRIVATE streams
18619  (both input/<wbr/>output) will match the maximum available
18620  resolution of JPEG streams.<wbr/></li>
18621<li>Static metadata <a href="#static_android.reprocess.maxCaptureStall">android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall</a>.<wbr/></li>
18622<li>Only below controls are effective for reprocessing requests and
18623  will be present in capture results,<wbr/> other controls in reprocess
18624  requests will be ignored by the camera device.<wbr/><ul>
18625<li>android.<wbr/>jpeg.<wbr/>*</li>
18626<li><a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></li>
18627<li><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></li>
18628</ul>
18629</li>
18630<li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a> and
18631  <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>
18632</ul></span>
18633                  </li>
18634                  <li>
18635                    <span class="entry_type_enum_name">READ_SENSOR_SETTINGS (v3.2)</span>
18636                    <span class="entry_type_enum_optional">[optional]</span>
18637                    <span class="entry_type_enum_notes"><p>The camera device supports accurately reporting the sensor settings for many of
18638the sensor controls while the built-in 3A algorithm is running.<wbr/>  This allows
18639reporting of sensor settings even when these settings cannot be manually changed.<wbr/></p>
18640<p>The values reported for the following controls are guaranteed to be available
18641in the CaptureResult,<wbr/> including when 3A is enabled:</p>
18642<ul>
18643<li>Exposure control<ul>
18644<li><a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a></li>
18645</ul>
18646</li>
18647<li>Sensitivity control<ul>
18648<li><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></li>
18649</ul>
18650</li>
18651<li>Lens controls (if the lens is adjustable)<ul>
18652<li><a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a></li>
18653<li><a href="#controls_android.lens.aperture">android.<wbr/>lens.<wbr/>aperture</a></li>
18654</ul>
18655</li>
18656</ul>
18657<p>This capability is a subset of the MANUAL_<wbr/>SENSOR control capability,<wbr/> and will
18658always be included if the MANUAL_<wbr/>SENSOR capability is available.<wbr/></p></span>
18659                  </li>
18660                  <li>
18661                    <span class="entry_type_enum_name">BURST_CAPTURE (v3.2)</span>
18662                    <span class="entry_type_enum_optional">[optional]</span>
18663                    <span class="entry_type_enum_notes"><p>The camera device supports capturing high-resolution images at &gt;= 20 frames per
18664second,<wbr/> in at least the uncompressed YUV format,<wbr/> when post-processing settings are
18665set to FAST.<wbr/> Additionally,<wbr/> all image resolutions less than 24 megapixels can be
18666captured at &gt;= 10 frames per second.<wbr/> Here,<wbr/> 'high resolution' means at least 8
18667megapixels,<wbr/> or the maximum resolution of the device,<wbr/> whichever is smaller.<wbr/></p></span>
18668                  </li>
18669                  <li>
18670                    <span class="entry_type_enum_name">YUV_REPROCESSING (v3.2)</span>
18671                    <span class="entry_type_enum_optional">[optional]</span>
18672                    <span class="entry_type_enum_hidden">[java_public]</span>
18673                    <span class="entry_type_enum_notes"><p>The camera device supports the YUV_<wbr/>420_<wbr/>888 reprocessing use case,<wbr/> similar as
18674PRIVATE_<wbr/>REPROCESSING,<wbr/> This capability requires the camera device to support the
18675following:</p>
18676<ul>
18677<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>
18678<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
18679  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>
18680<li><a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getValidOutputFormatsForInput">StreamConfigurationMap#getValidOutputFormatsForInput</a>
18681  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>
18682<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>
18683<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
18684  drop relative to the sensor's maximum capture rate (at that resolution).<wbr/></li>
18685<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
18686  <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>
18687<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
18688  maximum available resolution of <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a> streams.<wbr/></li>
18689<li>For a MONOCHROME camera with Y8 format support,<wbr/> all the requirements mentioned
18690  above for YUV_<wbr/>420_<wbr/>888 apply for Y8 format as well.<wbr/></li>
18691<li>Static metadata <a href="#static_android.reprocess.maxCaptureStall">android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall</a>.<wbr/></li>
18692<li>Only the below controls are effective for reprocessing requests and will be present
18693  in capture results.<wbr/> The reprocess requests are from the original capture results
18694  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
18695  reprocess requests will be ignored by the camera device.<wbr/><ul>
18696<li>android.<wbr/>jpeg.<wbr/>*</li>
18697<li><a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></li>
18698<li><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></li>
18699<li><a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a></li>
18700</ul>
18701</li>
18702<li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a> and
18703  <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>
18704</ul></span>
18705                  </li>
18706                  <li>
18707                    <span class="entry_type_enum_name">DEPTH_OUTPUT (v3.2)</span>
18708                    <span class="entry_type_enum_optional">[optional]</span>
18709                    <span class="entry_type_enum_notes"><p>The camera device can produce depth measurements from its field of view.<wbr/></p>
18710<p>This capability requires the camera device to support the following:</p>
18711<ul>
18712<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#DEPTH16">ImageFormat#DEPTH16</a> is supported as
18713  an output format.<wbr/></li>
18714<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
18715  optionally supported as an output format.<wbr/></li>
18716<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
18717  list the following calibration metadata entries in both <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html">CameraCharacteristics</a>
18718  and <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">CaptureResult</a>:<ul>
18719<li><a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a></li>
18720<li><a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a></li>
18721<li><a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a></li>
18722<li><a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a></li>
18723</ul>
18724</li>
18725<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>
18726<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>
18727<li>A LIMITED camera with only the DEPTH_<wbr/>OUTPUT capability does not have to support
18728  normal YUV_<wbr/>420_<wbr/>888,<wbr/> Y8,<wbr/> JPEG,<wbr/> and PRIV-format outputs.<wbr/> It only has to support the
18729  DEPTH16 format.<wbr/></li>
18730</ul>
18731<p>Generally,<wbr/> depth output operates at a slower frame rate than standard color capture,<wbr/>
18732so the DEPTH16 and DEPTH_<wbr/>POINT_<wbr/>CLOUD formats will commonly have a stall duration that
18733should be accounted for (see <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a>).<wbr/>
18734On a device that supports both depth and color-based output,<wbr/> to enable smooth preview,<wbr/>
18735using a repeating burst is recommended,<wbr/> where a depth-output target is only included
18736once every N frames,<wbr/> where N is the ratio between preview output rate and depth output
18737rate,<wbr/> including depth stall time.<wbr/></p></span>
18738                  </li>
18739                  <li>
18740                    <span class="entry_type_enum_name">CONSTRAINED_HIGH_SPEED_VIDEO (v3.2)</span>
18741                    <span class="entry_type_enum_optional">[optional]</span>
18742                    <span class="entry_type_enum_hidden">[java_public]</span>
18743                    <span class="entry_type_enum_notes"><p>The device supports constrained high speed video recording (frame rate &gt;=120fps) use
18744case.<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
18745only 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>
18746<p>A camera device can still support high speed video streaming by advertising the high
18747speed 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
18748normal capture request per frame control and synchronization requirements will apply
18749to the high speed fps ranges,<wbr/> the same as all other fps ranges.<wbr/> This capability
18750describes the capability of a specialized operating mode with many limitations (see
18751below),<wbr/> which is only targeted at high speed video recording.<wbr/></p>
18752<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/>
18753To get desired output frame rates,<wbr/> the application is only allowed to select video
18754size 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
18755fps 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>
18756<p>In this capability,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to
18757ON,<wbr/> AUTO,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode
18758controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture
18759and post-processing parameters is possible.<wbr/> All other controls operate the
18760same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other
18761android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p>
18762<ul>
18763<li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li>
18764<li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li>
18765<li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li>
18766<li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li>
18767<li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li>
18768<li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li>
18769<li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li>
18770<li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li>
18771<li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li>
18772<li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li>
18773<li><a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a></li>
18774</ul>
18775<p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p>
18776<ul>
18777<li><a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> (TORCH mode only,<wbr/> automatic flash for still capture will not
18778work since aeMode is ON)</li>
18779<li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li>
18780<li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li>
18781<li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> (if it is supported)</li>
18782</ul>
18783<p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may
18784be lower than what camera can output,<wbr/> depending on the destination Surfaces for
18785the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/>
18786the application need check if the video encoder is capable of supporting the
18787high frame rate for a given video size,<wbr/> or it will end up with lower recording
18788frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the actual preview frame
18789rate will be bounded by the screen refresh rate.<wbr/></p>
18790<p>The camera device will only support up to 2 high speed simultaneous output surfaces
18791(preview and recording surfaces) in this mode.<wbr/> Above controls will be effective only
18792if all of below conditions are true:</p>
18793<ul>
18794<li>The application creates a camera capture session with no more than 2 surfaces via
18795<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>.<wbr/> The
18796targeted 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
18797surface(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>
18798<li>The stream sizes are selected from the sizes reported by
18799<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighSpeedVideoSizes">StreamConfigurationMap#getHighSpeedVideoSizes</a>.<wbr/></li>
18800<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>
18801</ul>
18802<p>When above conditions are NOT satistied,<wbr/>
18803<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>
18804will fail.<wbr/></p>
18805<p>Switching to a FPS range that has different maximum FPS may trigger some camera device
18806reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that
18807the application avoids unnecessary maximum target FPS changes as much as possible
18808during high speed streaming.<wbr/></p></span>
18809                  </li>
18810                  <li>
18811                    <span class="entry_type_enum_name">MOTION_TRACKING (v3.3)</span>
18812                    <span class="entry_type_enum_optional">[optional]</span>
18813                    <span class="entry_type_enum_notes"><p>The camera device supports the MOTION_<wbr/>TRACKING value for
18814<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>
18815<p>This limits the motion blur of capture images,<wbr/> resulting in better image tracking
18816results for use cases such as image stabilization or augmented reality.<wbr/></p></span>
18817                  </li>
18818                  <li>
18819                    <span class="entry_type_enum_name">LOGICAL_MULTI_CAMERA (v3.3)</span>
18820                    <span class="entry_type_enum_optional">[optional]</span>
18821                    <span class="entry_type_enum_notes"><p>The camera device is a logical camera backed by two or more physical cameras.<wbr/></p>
18822<p>In API level 28,<wbr/> the physical cameras must also be exposed to the application via
18823<a href="https://developer.android.com/reference/android/hardware/camera2/CameraManager.html#getCameraIdList">CameraManager#getCameraIdList</a>.<wbr/></p>
18824<p>Starting from API level 29:</p>
18825<ul>
18826<li>Some or all physical cameras may not be independently exposed to the application,<wbr/>
18827in which case the physical camera IDs will not be available in
18828<a href="https://developer.android.com/reference/android/hardware/camera2/CameraManager.html#getCameraIdList">CameraManager#getCameraIdList</a>.<wbr/> But the
18829application can still query the physical cameras' characteristics by calling
18830<a href="https://developer.android.com/reference/android/hardware/camera2/CameraManager.html#getCameraCharacteristics">CameraManager#getCameraCharacteristics</a>.<wbr/></li>
18831<li>If a physical camera is hidden from camera ID list,<wbr/> the mandatory stream
18832combinations for that physical camera must be supported through the logical camera
18833using physical streams.<wbr/> One exception is that in API level 30,<wbr/> a physical camera
18834may become unavailable via
18835<a href="https://developer.android.com/reference/CameraManager/AvailabilityCallback.html#onPhysicalCameraUnavailable">AvailabilityCallback#onPhysicalCameraUnavailable</a>
18836callback.<wbr/></li>
18837</ul>
18838<p>Combinations of logical and physical streams,<wbr/> or physical streams from different
18839physical cameras are not guaranteed.<wbr/> However,<wbr/> if the camera device supports
18840<a href="https://developer.android.com/reference/CameraDevice.html#isSessionConfigurationSupported">CameraDevice#isSessionConfigurationSupported</a>,<wbr/>
18841application must be able to query whether a stream combination involving physical
18842streams is supported by calling
18843<a href="https://developer.android.com/reference/CameraDevice.html#isSessionConfigurationSupported">CameraDevice#isSessionConfigurationSupported</a>.<wbr/></p>
18844<p>Camera application shouldn't assume that there are at most 1 rear camera and 1 front
18845camera in the system.<wbr/> For an application that switches between front and back cameras,<wbr/>
18846the recommendation is to switch between the first rear camera and the first front
18847camera in the list of supported camera devices.<wbr/></p>
18848<p>This capability requires the camera device to support the following:</p>
18849<ul>
18850<li>The IDs of underlying physical cameras are returned via
18851  <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getPhysicalCameraIds">CameraCharacteristics#getPhysicalCameraIds</a>.<wbr/></li>
18852<li>This camera device must list static metadata
18853  <a href="#static_android.logicalMultiCamera.sensorSyncType">android.<wbr/>logical<wbr/>Multi<wbr/>Camera.<wbr/>sensor<wbr/>Sync<wbr/>Type</a> in
18854  <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html">CameraCharacteristics</a>.<wbr/></li>
18855<li>The underlying physical cameras' static metadata must list the following entries,<wbr/>
18856  so that the application can correlate pixels from the physical streams:<ul>
18857<li><a href="#static_android.lens.poseReference">android.<wbr/>lens.<wbr/>pose<wbr/>Reference</a></li>
18858<li><a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a></li>
18859<li><a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a></li>
18860<li><a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a></li>
18861<li><a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a></li>
18862</ul>
18863</li>
18864<li>The SENSOR_<wbr/>INFO_<wbr/>TIMESTAMP_<wbr/>SOURCE of the logical device and physical devices must be
18865  the same.<wbr/></li>
18866<li>The logical camera must be LIMITED or higher device.<wbr/></li>
18867</ul>
18868<p>A logical camera device's dynamic metadata may contain
18869<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
18870active physical camera Id.<wbr/> An active physical camera is the physical camera from which
18871the logical camera's main image data outputs (YUV or RAW) and metadata come from.<wbr/>
18872In addition,<wbr/> this serves as an indication which physical camera is used to output to
18873a RAW stream,<wbr/> or in case only physical cameras support RAW,<wbr/> which physical RAW stream
18874the application should request.<wbr/></p>
18875<p>Logical camera's static metadata tags below describe the default active physical
18876camera.<wbr/> An active physical camera is default if it's used when application directly
18877uses requests built from a template.<wbr/> All templates will default to the same active
18878physical camera.<wbr/></p>
18879<ul>
18880<li><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></li>
18881<li><a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a></li>
18882<li><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></li>
18883<li><a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a></li>
18884<li><a href="#static_android.sensor.info.physicalSize">android.<wbr/>sensor.<wbr/>info.<wbr/>physical<wbr/>Size</a></li>
18885<li><a href="#static_android.sensor.info.whiteLevel">android.<wbr/>sensor.<wbr/>info.<wbr/>white<wbr/>Level</a></li>
18886<li><a href="#static_android.sensor.info.lensShadingApplied">android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied</a></li>
18887<li><a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a></li>
18888<li><a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a></li>
18889<li><a href="#static_android.sensor.calibrationTransform1">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1</a></li>
18890<li><a href="#static_android.sensor.calibrationTransform2">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2</a></li>
18891<li><a href="#static_android.sensor.colorTransform1">android.<wbr/>sensor.<wbr/>color<wbr/>Transform1</a></li>
18892<li><a href="#static_android.sensor.colorTransform2">android.<wbr/>sensor.<wbr/>color<wbr/>Transform2</a></li>
18893<li><a href="#static_android.sensor.forwardMatrix1">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1</a></li>
18894<li><a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a></li>
18895<li><a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a></li>
18896<li><a href="#static_android.sensor.maxAnalogSensitivity">android.<wbr/>sensor.<wbr/>max<wbr/>Analog<wbr/>Sensitivity</a></li>
18897<li><a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a></li>
18898<li><a href="#static_android.sensor.availableTestPatternModes">android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes</a></li>
18899<li><a href="#static_android.lens.info.hyperfocalDistance">android.<wbr/>lens.<wbr/>info.<wbr/>hyperfocal<wbr/>Distance</a></li>
18900<li><a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a></li>
18901<li><a href="#static_android.lens.info.focusDistanceCalibration">android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration</a></li>
18902<li><a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a></li>
18903<li><a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a></li>
18904<li><a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a></li>
18905<li><a href="#static_android.lens.poseReference">android.<wbr/>lens.<wbr/>pose<wbr/>Reference</a></li>
18906<li><a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a></li>
18907</ul>
18908<p>The field of view of non-RAW physical streams must not be smaller than that of the
18909non-RAW logical streams,<wbr/> or the maximum field-of-view of the physical camera,<wbr/>
18910whichever is smaller.<wbr/> The application should check the physical capture result
18911metadata for how the physical streams are cropped or zoomed.<wbr/> More specifically,<wbr/> given
18912the physical camera result metadata,<wbr/> the effective horizontal field-of-view of the
18913physical camera is:</p>
18914<pre><code>fov = 2 * atan2(cropW * sensorW /<wbr/> (2 * zoomRatio * activeArrayW),<wbr/> focalLength)
18915</code></pre>
18916<p>where the equation parameters are the physical camera's crop region width,<wbr/> physical
18917sensor width,<wbr/> zoom ratio,<wbr/> active array width,<wbr/> and focal length respectively.<wbr/> Typically
18918the physical stream of active physical camera has the same field-of-view as the
18919logical streams.<wbr/> However,<wbr/> the same may not be true for physical streams from
18920non-active physical cameras.<wbr/> For example,<wbr/> if the logical camera has a wide-ultrawide
18921configuration where the wide lens is the default,<wbr/> when the crop region is set to the
18922logical camera's active array size,<wbr/> (and the zoom ratio set to 1.<wbr/>0 starting from
18923Android 11),<wbr/> a physical stream for the ultrawide camera may prefer outputing images
18924with larger field-of-view than that of the wide camera for better stereo matching
18925margin or more robust motion tracking.<wbr/> At the same time,<wbr/> the physical non-RAW streams'
18926field of view must not be smaller than the requested crop region and zoom ratio,<wbr/> as
18927long as it's within the physical lens' capability.<wbr/> For example,<wbr/> for a logical camera
18928with wide-tele lens configuration where the wide lens is the default,<wbr/> if the logical
18929camera's crop region is set to maximum size,<wbr/> and zoom ratio set to 1.<wbr/>0,<wbr/> the physical
18930stream for the tele lens will be configured to its maximum size crop region (no zoom).<wbr/></p>
18931<p><em>Deprecated:</em> Prior to Android 11,<wbr/> the field of view of all non-RAW physical streams
18932cannot be larger than that of non-RAW logical streams.<wbr/> If the logical camera has a
18933wide-ultrawide lens configuration where the wide lens is the default,<wbr/> when the logical
18934camera's crop region is set to maximum size,<wbr/> the FOV of the physical streams for the
18935ultrawide lens will be the same as the logical stream,<wbr/> by making the crop region
18936smaller than its active array size to compensate for the smaller focal length.<wbr/></p>
18937<p>There are two ways for the application to capture RAW images from a logical camera
18938with RAW capability:</p>
18939<ul>
18940<li>Because the underlying physical cameras may have different RAW capabilities (such
18941as resolution or CFA pattern),<wbr/> to maintain backward compatibility,<wbr/> when a RAW stream
18942is configured,<wbr/> the camera device makes sure the default active physical camera remains
18943active and does not switch to other physical cameras.<wbr/> (One exception is that,<wbr/> if the
18944logical camera consists of identical image sensors and advertises multiple focalLength
18945due to different lenses,<wbr/> the camera device may generate RAW images from different
18946physical cameras based on the focalLength being set by the application.<wbr/>) This
18947backward-compatible approach usually results in loss of optical zoom,<wbr/> to telephoto
18948lens or to ultrawide lens.<wbr/></li>
18949<li>Alternatively,<wbr/> to take advantage of the full zoomRatio range of the logical camera,<wbr/>
18950the application should use <a href="https://developer.android.com/reference/android/hardware/camera2/MultiResolutionImageReader.html">MultiResolutionImageReader</a>
18951to capture RAW images from the currently active physical camera.<wbr/> Because different
18952physical camera may have different RAW characteristics,<wbr/> the application needs to use
18953the characteristics and result metadata of the active physical camera for the
18954relevant RAW metadata.<wbr/></li>
18955</ul>
18956<p>The capture request and result metadata tags required for backward compatible camera
18957functionalities will be solely based on the logical camera capability.<wbr/> On the other
18958hand,<wbr/> the use of manual capture controls (sensor or post-processing) with a
18959logical camera may result in unexpected behavior when the HAL decides to switch
18960between physical cameras with different characteristics under the hood.<wbr/> For example,<wbr/>
18961when the application manually sets exposure time and sensitivity while zooming in,<wbr/>
18962the brightness of the camera images may suddenly change because HAL switches from one
18963physical camera to the other.<wbr/></p></span>
18964                  </li>
18965                  <li>
18966                    <span class="entry_type_enum_name">MONOCHROME (v3.3)</span>
18967                    <span class="entry_type_enum_optional">[optional]</span>
18968                    <span class="entry_type_enum_notes"><p>The camera device is a monochrome camera that doesn't contain a color filter array,<wbr/>
18969and for YUV_<wbr/>420_<wbr/>888 stream,<wbr/> the pixel values on U and V planes are all 128.<wbr/></p>
18970<p>A MONOCHROME camera must support the guaranteed stream combinations required for
18971its device level and capabilities.<wbr/> Additionally,<wbr/> if the monochrome camera device
18972supports 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
18973to <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#Y8">Y8</a> as well.<wbr/> There are no
18974mandatory stream combination requirements with regard to
18975<a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#Y8">Y8</a> for Bayer camera devices.<wbr/></p>
18976<p>Starting from Android Q,<wbr/> the SENSOR_<wbr/>INFO_<wbr/>COLOR_<wbr/>FILTER_<wbr/>ARRANGEMENT of a MONOCHROME
18977camera will be either MONO or NIR.<wbr/></p></span>
18978                  </li>
18979                  <li>
18980                    <span class="entry_type_enum_name">SECURE_IMAGE_DATA (v3.4)</span>
18981                    <span class="entry_type_enum_optional">[optional]</span>
18982                    <span class="entry_type_enum_notes"><p>The camera device is capable of writing image data into a region of memory
18983inaccessible to Android userspace or the Android kernel,<wbr/> and only accessible to
18984trusted execution environments (TEE).<wbr/></p></span>
18985                  </li>
18986                  <li>
18987                    <span class="entry_type_enum_name">SYSTEM_CAMERA (v3.5)</span>
18988                    <span class="entry_type_enum_optional">[optional]</span>
18989                    <span class="entry_type_enum_notes"><p>The camera device is only accessible by Android's system components and privileged
18990applications.<wbr/> Processes need to have the android.<wbr/>permission.<wbr/>SYSTEM_<wbr/>CAMERA in
18991addition to android.<wbr/>permission.<wbr/>CAMERA in order to connect to this camera device.<wbr/></p></span>
18992                  </li>
18993                  <li>
18994                    <span class="entry_type_enum_name">OFFLINE_PROCESSING (v3.5)</span>
18995                    <span class="entry_type_enum_optional">[optional]</span>
18996                    <span class="entry_type_enum_hidden">[java_public]</span>
18997                    <span class="entry_type_enum_notes"><p>The camera device supports the OFFLINE_<wbr/>PROCESSING use case.<wbr/></p>
18998<p>With OFFLINE_<wbr/>PROCESSING capability,<wbr/> the application can switch an ongoing
18999capture session to offline mode by calling the
19000CameraCaptureSession#switchToOffline method and specify streams to be kept in offline
19001mode.<wbr/> The camera will then stop currently active repeating requests,<wbr/> prepare for
19002some requests to go into offline mode,<wbr/> and return an offline session object.<wbr/> After
19003the switchToOffline call returns,<wbr/> the original capture session is in closed state as
19004if the CameraCaptureSession#close method has been called.<wbr/>
19005In the offline mode,<wbr/> all inflight requests will continue to be processed in the
19006background,<wbr/> and the application can immediately close the camera or create a new
19007capture session without losing those requests' output images and capture results.<wbr/></p>
19008<p>While the camera device is processing offline requests,<wbr/> it
19009might not be able to support all stream configurations it can support
19010without offline requests.<wbr/> When that happens,<wbr/> the createCaptureSession
19011method call will fail.<wbr/> The following stream configurations are guaranteed to work
19012without hitting the resource busy exception:</p>
19013<ul>
19014<li>One ongoing offline session: target one output surface of YUV or
19015JPEG format,<wbr/> any resolution.<wbr/></li>
19016<li>The active camera capture session:<ol>
19017<li>One preview surface (SurfaceView or SurfaceTexture) up to 1920 width</li>
19018<li>One YUV ImageReader surface up to 1920 width</li>
19019<li>One Jpeg ImageReader,<wbr/> any resolution: the camera device is
19020   allowed to slow down JPEG output speed by 50% if there is any ongoing offline
19021   session.<wbr/></li>
19022<li>If the device supports PRIVATE_<wbr/>REPROCESSING,<wbr/> one pair of ImageWriter/<wbr/>ImageReader
19023   surfaces of private format,<wbr/> with the same resolution that is larger or equal to
19024   the JPEG ImageReader resolution above.<wbr/></li>
19025</ol>
19026</li>
19027<li>Alternatively,<wbr/> the active camera session above can be replaced by an legacy
19028<a href="https://developer.android.com/reference/android/hardware/Camera.html">Camera</a> with the following parameter settings:<ol>
19029<li>Preview size up to 1920 width</li>
19030<li>Preview callback size up to 1920 width</li>
19031<li>Video size up to 1920 width</li>
19032<li>Picture size,<wbr/> any resolution: the camera device is
19033    allowed to slow down JPEG output speed by 50% if there is any ongoing offline
19034    session.<wbr/></li>
19035</ol>
19036</li>
19037</ul></span>
19038                  </li>
19039                  <li>
19040                    <span class="entry_type_enum_name">ULTRA_HIGH_RESOLUTION_SENSOR (v3.6)</span>
19041                    <span class="entry_type_enum_optional">[optional]</span>
19042                    <span class="entry_type_enum_notes"><p>This camera device is capable of producing ultra high resolution images in
19043addition to the image sizes described in the
19044<a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a>.<wbr/>
19045It can operate in 'default' mode and 'max resolution' mode.<wbr/> It generally does this
19046by binning pixels in 'default' mode and not binning them in 'max resolution' mode.<wbr/>
19047<code><a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a></code> describes the streams supported in 'default'
19048mode.<wbr/>
19049The stream configurations supported in 'max resolution' mode are described by
19050<code><a href="#static_android.scaler.streamConfigurationMapMaximumResolution">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map<wbr/>Maximum<wbr/>Resolution</a></code>.<wbr/>
19051The maximum resolution mode pixel array size of a camera device
19052(<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/>
19053will be at least 24 megapixels.<wbr/></p></span>
19054                  </li>
19055                  <li>
19056                    <span class="entry_type_enum_name">REMOSAIC_REPROCESSING (v3.6)</span>
19057                    <span class="entry_type_enum_optional">[optional]</span>
19058                    <span class="entry_type_enum_hidden">[java_public]</span>
19059                    <span class="entry_type_enum_notes"><p>The device supports reprocessing from the <code>RAW_<wbr/>SENSOR</code> format with a bayer pattern
19060given 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
19061color filter) to a remosaiced regular bayer pattern.<wbr/></p>
19062<p>This capability will only be present for devices with
19063<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>
19064capability.<wbr/> When
19065<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>
19066devices do not advertise this capability,<wbr/>
19067<a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_SENSOR">ImageFormat#RAW_<wbr/>SENSOR</a> images will already have a
19068regular bayer pattern.<wbr/></p>
19069<p>If a <code>RAW_<wbr/>SENSOR</code> stream is requested along with another non-RAW stream in a
19070<a href="https://developer.android.com/reference/android/hardware/camera2/CaptureRequest.html">CaptureRequest</a> (if multiple streams are supported
19071when <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to
19072<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/>
19073the <code>RAW_<wbr/>SENSOR</code> stream will have a regular bayer pattern.<wbr/></p>
19074<p>This capability requires the camera device to support the following :
19075* The <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html">StreamConfigurationMap</a> mentioned below
19076  refers to the one,<wbr/> described by
19077  <code><a href="#static_android.scaler.streamConfigurationMapMaximumResolution">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map<wbr/>Maximum<wbr/>Resolution</a></code>.<wbr/>
19078* 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/>
19079* <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
19080  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
19081  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/>
19082* <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getValidOutputFormatsForInput">StreamConfigurationMap#getValidOutputFormatsForInput</a>
19083  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/>
19084* 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>
19085* 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
19086  drop relative to the sensor's maximum capture rate (at that resolution).<wbr/>
19087* No CaptureRequest controls will be applicable when a request has an input target
19088  with <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_SENSOR">ImageFormat#RAW_<wbr/>SENSOR</a> format.<wbr/></p></span>
19089                  </li>
19090                </ul>
19091
19092            </td> <!-- entry_type -->
19093
19094            <td class="entry_description">
19095              <p>List of capabilities that this camera device
19096advertises as fully supporting.<wbr/></p>
19097            </td>
19098
19099            <td class="entry_units">
19100            </td>
19101
19102            <td class="entry_range">
19103            </td>
19104
19105            <td class="entry_hal_version">
19106              <p>3.<wbr/>2</p>
19107            </td>
19108
19109            <td class="entry_tags">
19110            </td>
19111
19112          </tr>
19113          <tr class="entries_header">
19114            <th class="th_details" colspan="6">Details</th>
19115          </tr>
19116          <tr class="entry_cont">
19117            <td class="entry_details" colspan="6">
19118              <p>A capability is a contract that the camera device makes in order
19119to be able to satisfy one or more use cases.<wbr/></p>
19120<p>Listing a capability guarantees that the whole set of features
19121required to support a common use will all be available.<wbr/></p>
19122<p>Using a subset of the functionality provided by an unsupported
19123capability may be possible on a specific camera device implementation;
19124to do this query each of <a href="#static_android.request.availableRequestKeys">android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys</a>,<wbr/>
19125<a href="#static_android.request.availableResultKeys">android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys</a>,<wbr/>
19126<a href="#static_android.request.availableCharacteristicsKeys">android.<wbr/>request.<wbr/>available<wbr/>Characteristics<wbr/>Keys</a>.<wbr/></p>
19127<p>The following capabilities are guaranteed to be available on
19128<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> <code>==</code> FULL devices:</p>
19129<ul>
19130<li>MANUAL_<wbr/>SENSOR</li>
19131<li>MANUAL_<wbr/>POST_<wbr/>PROCESSING</li>
19132</ul>
19133<p>Other capabilities may be available on either FULL or LIMITED
19134devices,<wbr/> but the application should query this key to be sure.<wbr/></p>
19135            </td>
19136          </tr>
19137
19138          <tr class="entries_header">
19139            <th class="th_details" colspan="6">HAL Implementation Details</th>
19140          </tr>
19141          <tr class="entry_cont">
19142            <td class="entry_details" colspan="6">
19143              <p>Additional constraint details per-capability will be available
19144in the Compatibility Test Suite.<wbr/></p>
19145<p>Minimum baseline requirements required for the
19146BACKWARD_<wbr/>COMPATIBLE capability are not explicitly listed.<wbr/>
19147Instead refer to "BC" tags and the camera CTS tests in the
19148android.<wbr/>hardware.<wbr/>camera2.<wbr/>cts package.<wbr/></p>
19149<p>Listed controls that can be either request or result (e.<wbr/>g.<wbr/>
19150<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>) must be available both in the
19151request and the result in order to be considered to be
19152capability-compliant.<wbr/></p>
19153<p>For example,<wbr/> if the HAL claims to support MANUAL control,<wbr/>
19154then exposure time must be configurable via the request <em>and</em>
19155the actual exposure applied must be available via
19156the result.<wbr/></p>
19157<p>If MANUAL_<wbr/>SENSOR is omitted,<wbr/> the HAL may choose to omit the
19158<a href="#static_android.scaler.availableMinFrameDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Min<wbr/>Frame<wbr/>Durations</a> static property entirely.<wbr/></p>
19159<p>For PRIVATE_<wbr/>REPROCESSING and YUV_<wbr/>REPROCESSING capabilities,<wbr/> see
19160hardware/<wbr/>libhardware/<wbr/>include/<wbr/>hardware/<wbr/>camera3.<wbr/>h Section 10 for more information.<wbr/></p>
19161<p>Devices that support the MANUAL_<wbr/>SENSOR capability must support the
19162CAMERA3_<wbr/>TEMPLATE_<wbr/>MANUAL template defined in camera3.<wbr/>h.<wbr/></p>
19163<p>Devices that support the PRIVATE_<wbr/>REPROCESSING capability or the
19164YUV_<wbr/>REPROCESSING capability must support the
19165CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template defined in camera3.<wbr/>h.<wbr/></p>
19166<p>For DEPTH_<wbr/>OUTPUT,<wbr/> the depth-format keys
19167<a href="#static_android.depth.availableDepthStreamConfigurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stream<wbr/>Configurations</a>,<wbr/>
19168<a href="#static_android.depth.availableDepthMinFrameDurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Min<wbr/>Frame<wbr/>Durations</a>,<wbr/>
19169<a href="#static_android.depth.availableDepthStallDurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stall<wbr/>Durations</a> must be available,<wbr/> in
19170addition to the other keys explicitly mentioned in the DEPTH_<wbr/>OUTPUT
19171enum notes.<wbr/> The entry <a href="#static_android.depth.maxDepthSamples">android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples</a> must be available
19172if the DEPTH_<wbr/>POINT_<wbr/>CLOUD format is supported (HAL pixel format BLOB,<wbr/> dataspace
19173DEPTH).<wbr/></p>
19174<p>For a camera device with LOGICAL_<wbr/>MULTI_<wbr/>CAMERA capability,<wbr/> it should operate in the
19175same way as a physical camera device based on its hardware level and capabilities.<wbr/>
19176It's recommended that its feature set is superset of that of individual physical cameras.<wbr/></p>
19177<ul>
19178<li>
19179<p>In camera1 API,<wbr/> to maintain application compatibility,<wbr/> for each camera facing,<wbr/> there
19180may 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/>}
19181combinations,<wbr/> where logical_<wbr/>camera_<wbr/>id is composed of physical_<wbr/>camera_<wbr/>N_<wbr/>id,<wbr/> camera
19182framework will only advertise one camera id
19183(within the combinations for the particular facing) that is frontmost in the HAL
19184published camera id list.<wbr/>
19185For example,<wbr/> if HAL advertises 6 back facing camera IDs (ID0 to ID5),<wbr/> among which ID4
19186and ID5 are logical cameras backed by ID0+ID1 and ID2+ID3 respectively.<wbr/> In this case,<wbr/>
19187only ID0 will be available for camera1 API to use.<wbr/></p>
19188</li>
19189<li>
19190<p>Camera HAL is strongly recommended to advertise camera devices with best feature,<wbr/>
19191power,<wbr/> performance,<wbr/> and latency tradeoffs at the front of the camera id list.<wbr/></p>
19192</li>
19193<li>
19194<p>Camera HAL may switch between physical cameras depending on focalLength,<wbr/> cropRegion,<wbr/> or
19195zoomRatio.<wbr/> If physical cameras have different sizes,<wbr/> HAL must maintain a single logical
19196camera 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
19197mapping between logical camera and underlying physical cameras for all related metadata
19198tags,<wbr/> such as crop region,<wbr/> zoomRatio,<wbr/> 3A regions,<wbr/> and intrinsicCalibration.<wbr/></p>
19199</li>
19200<li>
19201<p>Starting from HIDL ICameraDevice version 3.<wbr/>5,<wbr/> camera HAL must support
19202isStreamCombinationSupported for application to query whether a particular logical and
19203physical streams combination are supported.<wbr/></p>
19204</li>
19205</ul>
19206<p>A MONOCHROME camera device must also advertise BACKWARD_<wbr/>COMPATIBLE capability,<wbr/> and must
19207not advertise MANUAL_<wbr/>POST_<wbr/>PROCESSING capability.<wbr/></p>
19208<ul>
19209<li>
19210<p>To maintain backward compatibility,<wbr/> the camera device must support all
19211BACKWARD_<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
19212AUTO,<wbr/> and <a href="#dynamic_android.control.awbState">android.<wbr/>control.<wbr/>awb<wbr/>State</a> are either CONVERGED or LOCKED depending on
19213<a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a>.<wbr/></p>
19214</li>
19215<li>
19216<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
19217<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> must not be in available request and result keys.<wbr/>
19218As a result,<wbr/> the camera device cannot be a FULL device.<wbr/> However,<wbr/> the HAL can
19219still advertise other individual capabilites.<wbr/></p>
19220</li>
19221<li>
19222<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/>
19223CurveGreen and curveBlue are no-ops.<wbr/></p>
19224</li>
19225</ul>
19226<p>In Android API level 28,<wbr/> a MONOCHROME camera device must not have RAW capability.<wbr/> From
19227API level 29,<wbr/> a camera is allowed to have both MONOCHROME and RAW capabilities.<wbr/></p>
19228<p>To support the legacy API to ICameraDevice 3.<wbr/>x shim layer,<wbr/> devices advertising
19229OFFLINE_<wbr/>PROCESSING capability must also support configuring an input stream of the same
19230size as the picture size if:</p>
19231<ul>
19232<li>The device supports PRIVATE_<wbr/>REPROCESSING capability</li>
19233<li>The device's maximal JPEG resolution can reach 30 FPS min frame duration</li>
19234<li>The device does not support HAL based ZSL (<a href="#controls_android.control.enableZsl">android.<wbr/>control.<wbr/>enable<wbr/>Zsl</a>)</li>
19235</ul>
19236<p>For devices which support SYSTEM_<wbr/>CAMERA and LOGICAL_<wbr/>MULTI_<wbr/>CAMERA capabilities:</p>
19237<p>Hidden physical camera ids[1] must not be be shared[2] between public camera devices
19238and camera devices advertising SYSTEM_<wbr/>CAMERA capability.<wbr/></p>
19239<p>[1] - Camera device ids which are advertised in the
19240      ANDROID_<wbr/>LOGICAL_<wbr/>MULTI_<wbr/>CAMERA_<wbr/>PHYSICAL_<wbr/>IDS list,<wbr/> and not available through
19241      ICamera<wbr/>Provider.<wbr/>get<wbr/>Camera<wbr/>Id<wbr/>List().<wbr/></p>
19242<p>[2] - The ANDROID_<wbr/>LOGICAL_<wbr/>MULTI_<wbr/>CAMERA_<wbr/>PHYSICAL_<wbr/>IDS lists,<wbr/> must not have common
19243      camera ids.<wbr/></p>
19244            </td>
19245          </tr>
19246
19247          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19248           <!-- end of entry -->
19249
19250
19251          <tr class="entry" id="static_android.request.availableRequestKeys">
19252            <td class="entry_name
19253             " rowspan="5">
19254              android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys
19255            </td>
19256            <td class="entry_type">
19257                <span class="entry_type_name">int32</span>
19258                <span class="entry_type_container">x</span>
19259
19260                <span class="entry_type_array">
19261                  n
19262                </span>
19263              <span class="entry_type_visibility"> [ndk_public]</span>
19264
19265
19266              <span class="entry_type_hwlevel">[legacy] </span>
19267
19268
19269
19270
19271            </td> <!-- entry_type -->
19272
19273            <td class="entry_description">
19274              <p>A list of all keys that the camera device has available
19275to use with <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureRequest.html">CaptureRequest</a>.<wbr/></p>
19276            </td>
19277
19278            <td class="entry_units">
19279            </td>
19280
19281            <td class="entry_range">
19282            </td>
19283
19284            <td class="entry_hal_version">
19285              <p>3.<wbr/>2</p>
19286            </td>
19287
19288            <td class="entry_tags">
19289            </td>
19290
19291          </tr>
19292          <tr class="entries_header">
19293            <th class="th_details" colspan="6">Details</th>
19294          </tr>
19295          <tr class="entry_cont">
19296            <td class="entry_details" colspan="6">
19297              <p>Attempting to set a key into a CaptureRequest that is not
19298listed here will result in an invalid request and will be rejected
19299by the camera device.<wbr/></p>
19300<p>This field can be used to query the feature set of a camera device
19301at a more granular level than capabilities.<wbr/> This is especially
19302important for optional keys that are not listed under any capability
19303in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
19304            </td>
19305          </tr>
19306
19307          <tr class="entries_header">
19308            <th class="th_details" colspan="6">HAL Implementation Details</th>
19309          </tr>
19310          <tr class="entry_cont">
19311            <td class="entry_details" colspan="6">
19312              <p>Vendor tags can be listed here.<wbr/> Vendor tag metadata should also
19313use the extensions C api (refer to camera3.<wbr/>h for more details).<wbr/></p>
19314<p>Setting/<wbr/>getting vendor tags will be checked against the metadata
19315vendor extensions API and not against this field.<wbr/></p>
19316<p>The HAL must not consume any request tags that are not listed either
19317here or in the vendor tag list.<wbr/></p>
19318<p>The public camera2 API will always make the vendor tags visible
19319via
19320<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a>.<wbr/></p>
19321            </td>
19322          </tr>
19323
19324          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19325           <!-- end of entry -->
19326
19327
19328          <tr class="entry" id="static_android.request.availableResultKeys">
19329            <td class="entry_name
19330             " rowspan="5">
19331              android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys
19332            </td>
19333            <td class="entry_type">
19334                <span class="entry_type_name">int32</span>
19335                <span class="entry_type_container">x</span>
19336
19337                <span class="entry_type_array">
19338                  n
19339                </span>
19340              <span class="entry_type_visibility"> [ndk_public]</span>
19341
19342
19343              <span class="entry_type_hwlevel">[legacy] </span>
19344
19345
19346
19347
19348            </td> <!-- entry_type -->
19349
19350            <td class="entry_description">
19351              <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>
19352            </td>
19353
19354            <td class="entry_units">
19355            </td>
19356
19357            <td class="entry_range">
19358            </td>
19359
19360            <td class="entry_hal_version">
19361              <p>3.<wbr/>2</p>
19362            </td>
19363
19364            <td class="entry_tags">
19365            </td>
19366
19367          </tr>
19368          <tr class="entries_header">
19369            <th class="th_details" colspan="6">Details</th>
19370          </tr>
19371          <tr class="entry_cont">
19372            <td class="entry_details" colspan="6">
19373              <p>Attempting to get a key from a CaptureResult that is not
19374listed here will always return a <code>null</code> value.<wbr/> Getting a key from
19375a CaptureResult that is listed here will generally never return a <code>null</code>
19376value.<wbr/></p>
19377<p>The following keys may return <code>null</code> unless they are enabled:</p>
19378<ul>
19379<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>
19380</ul>
19381<p>(Those sometimes-null keys will nevertheless be listed here
19382if they are available.<wbr/>)</p>
19383<p>This field can be used to query the feature set of a camera device
19384at a more granular level than capabilities.<wbr/> This is especially
19385important for optional keys that are not listed under any capability
19386in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
19387            </td>
19388          </tr>
19389
19390          <tr class="entries_header">
19391            <th class="th_details" colspan="6">HAL Implementation Details</th>
19392          </tr>
19393          <tr class="entry_cont">
19394            <td class="entry_details" colspan="6">
19395              <p>Tags listed here must always have an entry in the result metadata,<wbr/>
19396even if that size is 0 elements.<wbr/> Only array-type tags (e.<wbr/>g.<wbr/> lists,<wbr/>
19397matrices,<wbr/> strings) are allowed to have 0 elements.<wbr/></p>
19398<p>Vendor tags can be listed here.<wbr/> Vendor tag metadata should also
19399use the extensions C api (refer to camera3.<wbr/>h for more details).<wbr/></p>
19400<p>Setting/<wbr/>getting vendor tags will be checked against the metadata
19401vendor extensions API and not against this field.<wbr/></p>
19402<p>The HAL must not produce any result tags that are not listed either
19403here or in the vendor tag list.<wbr/></p>
19404<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>
19405            </td>
19406          </tr>
19407
19408          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19409           <!-- end of entry -->
19410
19411
19412          <tr class="entry" id="static_android.request.availableCharacteristicsKeys">
19413            <td class="entry_name
19414             " rowspan="5">
19415              android.<wbr/>request.<wbr/>available<wbr/>Characteristics<wbr/>Keys
19416            </td>
19417            <td class="entry_type">
19418                <span class="entry_type_name">int32</span>
19419                <span class="entry_type_container">x</span>
19420
19421                <span class="entry_type_array">
19422                  n
19423                </span>
19424              <span class="entry_type_visibility"> [ndk_public]</span>
19425
19426
19427              <span class="entry_type_hwlevel">[legacy] </span>
19428
19429
19430
19431
19432            </td> <!-- entry_type -->
19433
19434            <td class="entry_description">
19435              <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>
19436            </td>
19437
19438            <td class="entry_units">
19439            </td>
19440
19441            <td class="entry_range">
19442            </td>
19443
19444            <td class="entry_hal_version">
19445              <p>3.<wbr/>2</p>
19446            </td>
19447
19448            <td class="entry_tags">
19449            </td>
19450
19451          </tr>
19452          <tr class="entries_header">
19453            <th class="th_details" colspan="6">Details</th>
19454          </tr>
19455          <tr class="entry_cont">
19456            <td class="entry_details" colspan="6">
19457              <p>This entry follows the same rules as
19458<a href="#static_android.request.availableResultKeys">android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys</a> (except that it applies for
19459CameraCharacteristics instead of CaptureResult).<wbr/> See above for more
19460details.<wbr/></p>
19461            </td>
19462          </tr>
19463
19464          <tr class="entries_header">
19465            <th class="th_details" colspan="6">HAL Implementation Details</th>
19466          </tr>
19467          <tr class="entry_cont">
19468            <td class="entry_details" colspan="6">
19469              <p>Keys listed here must always have an entry in the static info metadata,<wbr/>
19470even if that size is 0 elements.<wbr/> Only array-type tags (e.<wbr/>g.<wbr/> lists,<wbr/>
19471matrices,<wbr/> strings) are allowed to have 0 elements.<wbr/></p>
19472<p>Vendor tags can listed here.<wbr/> Vendor tag metadata should also use
19473the extensions C api (refer to camera3.<wbr/>h for more details).<wbr/></p>
19474<p>Setting/<wbr/>getting vendor tags will be checked against the metadata
19475vendor extensions API and not against this field.<wbr/></p>
19476<p>The HAL must not have any tags in its static info that are not listed
19477either here or in the vendor tag list.<wbr/></p>
19478<p>The public camera2 API will always make the vendor tags visible
19479via <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getKeys">CameraCharacteristics#getKeys</a>.<wbr/></p>
19480            </td>
19481          </tr>
19482
19483          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19484           <!-- end of entry -->
19485
19486
19487          <tr class="entry" id="static_android.request.availableSessionKeys">
19488            <td class="entry_name
19489             " rowspan="5">
19490              android.<wbr/>request.<wbr/>available<wbr/>Session<wbr/>Keys
19491            </td>
19492            <td class="entry_type">
19493                <span class="entry_type_name">int32</span>
19494                <span class="entry_type_container">x</span>
19495
19496                <span class="entry_type_array">
19497                  n
19498                </span>
19499              <span class="entry_type_visibility"> [ndk_public]</span>
19500
19501
19502              <span class="entry_type_hwlevel">[legacy] </span>
19503
19504
19505
19506
19507            </td> <!-- entry_type -->
19508
19509            <td class="entry_description">
19510              <p>A subset of the available request keys that the camera device
19511can pass as part of the capture session initialization.<wbr/></p>
19512            </td>
19513
19514            <td class="entry_units">
19515            </td>
19516
19517            <td class="entry_range">
19518            </td>
19519
19520            <td class="entry_hal_version">
19521              <p>3.<wbr/>3</p>
19522            </td>
19523
19524            <td class="entry_tags">
19525            </td>
19526
19527          </tr>
19528          <tr class="entries_header">
19529            <th class="th_details" colspan="6">Details</th>
19530          </tr>
19531          <tr class="entry_cont">
19532            <td class="entry_details" colspan="6">
19533              <p>This is a subset of <a href="#static_android.request.availableRequestKeys">android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys</a> which
19534contains a list of keys that are difficult to apply per-frame and
19535can result in unexpected delays when modified during the capture session
19536lifetime.<wbr/> Typical examples include parameters that require a
19537time-consuming hardware re-configuration or internal camera pipeline
19538change.<wbr/> For performance reasons we advise clients to pass their initial
19539values as part of
19540<a href="https://developer.android.com/reference/SessionConfiguration.html#setSessionParameters">SessionConfiguration#setSessionParameters</a>.<wbr/>
19541Once the camera capture session is enabled it is also recommended to avoid
19542changing them from their initial values set in
19543<a href="https://developer.android.com/reference/SessionConfiguration.html#setSessionParameters">SessionConfiguration#setSessionParameters</a>.<wbr/>
19544Control over session parameters can still be exerted in capture requests
19545but clients should be aware and expect delays during their application.<wbr/>
19546An example usage scenario could look like this:</p>
19547<ul>
19548<li>The camera client starts by quering the session parameter key list via
19549  <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableSessionKeys">CameraCharacteristics#getAvailableSessionKeys</a>.<wbr/></li>
19550<li>Before triggering the capture session create sequence,<wbr/> a capture request
19551  must be built via
19552  <a href="https://developer.android.com/reference/CameraDevice.html#createCaptureRequest">CameraDevice#createCaptureRequest</a>
19553  using an appropriate template matching the particular use case.<wbr/></li>
19554<li>The client should go over the list of session parameters and check
19555  whether some of the keys listed matches with the parameters that
19556  they intend to modify as part of the first capture request.<wbr/></li>
19557<li>If there is no such match,<wbr/> the capture request can be  passed
19558  unmodified to
19559  <a href="https://developer.android.com/reference/SessionConfiguration.html#setSessionParameters">SessionConfiguration#setSessionParameters</a>.<wbr/></li>
19560<li>If matches do exist,<wbr/> the client should update the respective values
19561  and pass the request to
19562  <a href="https://developer.android.com/reference/SessionConfiguration.html#setSessionParameters">SessionConfiguration#setSessionParameters</a>.<wbr/></li>
19563<li>After the capture session initialization completes the session parameter
19564  key list can continue to serve as reference when posting or updating
19565  further requests.<wbr/> As mentioned above further changes to session
19566  parameters should ideally be avoided,<wbr/> if updates are necessary
19567  however clients could expect a delay/<wbr/>glitch during the
19568  parameter switch.<wbr/></li>
19569</ul>
19570            </td>
19571          </tr>
19572
19573          <tr class="entries_header">
19574            <th class="th_details" colspan="6">HAL Implementation Details</th>
19575          </tr>
19576          <tr class="entry_cont">
19577            <td class="entry_details" colspan="6">
19578              <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
19579speed mode is enabled,<wbr/> then only modifications of the maximum framerate value will be
19580monitored by the framework and can trigger camera re-configuration.<wbr/> For more information
19581about framerate ranges during constrained high speed sessions see
19582<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>.<wbr/>
19583Vendor tags can be listed here.<wbr/> Vendor tag metadata should also
19584use the extensions C api (refer to
19585android.<wbr/>hardware.<wbr/>camera.<wbr/>device.<wbr/>V3_<wbr/>4.<wbr/>Stream<wbr/>Configuration.<wbr/>session<wbr/>Params for more details).<wbr/></p>
19586<p>Setting/<wbr/>getting vendor tags will be checked against the metadata
19587vendor extensions API and not against this field.<wbr/></p>
19588<p>The HAL must not consume any request tags in the session parameters that
19589are not listed either here or in the vendor tag list.<wbr/></p>
19590<p>The public camera2 API will always make the vendor tags visible
19591via
19592<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableSessionKeys">CameraCharacteristics#getAvailableSessionKeys</a>.<wbr/></p>
19593            </td>
19594          </tr>
19595
19596          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19597           <!-- end of entry -->
19598
19599
19600          <tr class="entry" id="static_android.request.availablePhysicalCameraRequestKeys">
19601            <td class="entry_name
19602             " rowspan="5">
19603              android.<wbr/>request.<wbr/>available<wbr/>Physical<wbr/>Camera<wbr/>Request<wbr/>Keys
19604            </td>
19605            <td class="entry_type">
19606                <span class="entry_type_name">int32</span>
19607                <span class="entry_type_container">x</span>
19608
19609                <span class="entry_type_array">
19610                  n
19611                </span>
19612              <span class="entry_type_visibility"> [ndk_public]</span>
19613
19614
19615              <span class="entry_type_hwlevel">[limited] </span>
19616
19617
19618
19619
19620            </td> <!-- entry_type -->
19621
19622            <td class="entry_description">
19623              <p>A subset of the available request keys that can be overridden for
19624physical devices backing a logical multi-camera.<wbr/></p>
19625            </td>
19626
19627            <td class="entry_units">
19628            </td>
19629
19630            <td class="entry_range">
19631            </td>
19632
19633            <td class="entry_hal_version">
19634              <p>3.<wbr/>3</p>
19635            </td>
19636
19637            <td class="entry_tags">
19638            </td>
19639
19640          </tr>
19641          <tr class="entries_header">
19642            <th class="th_details" colspan="6">Details</th>
19643          </tr>
19644          <tr class="entry_cont">
19645            <td class="entry_details" colspan="6">
19646              <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
19647of keys that can be overridden using <a href="https://developer.android.com/reference/CaptureRequest/Builder.html#setPhysicalCameraKey">Builder#setPhysicalCameraKey</a>.<wbr/>
19648The respective value of such request key can be obtained by calling
19649<a href="https://developer.android.com/reference/CaptureRequest/Builder.html#getPhysicalCameraKey">Builder#getPhysicalCameraKey</a>.<wbr/> Capture requests that contain
19650individual physical device requests must be built via
19651<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureRequest(int,">Set)</a>.<wbr/></p>
19652            </td>
19653          </tr>
19654
19655          <tr class="entries_header">
19656            <th class="th_details" colspan="6">HAL Implementation Details</th>
19657          </tr>
19658          <tr class="entry_cont">
19659            <td class="entry_details" colspan="6">
19660              <p>Vendor tags can be listed here.<wbr/> Vendor tag metadata should also
19661use the extensions C api (refer to
19662android.<wbr/>hardware.<wbr/>camera.<wbr/>device.<wbr/>V3_<wbr/>4.<wbr/>Capture<wbr/>Request.<wbr/>physical<wbr/>Camera<wbr/>Settings for more
19663details).<wbr/></p>
19664<p>Setting/<wbr/>getting vendor tags will be checked against the metadata
19665vendor extensions API and not against this field.<wbr/></p>
19666<p>The HAL must not consume any request tags in the session parameters that
19667are not listed either here or in the vendor tag list.<wbr/></p>
19668<p>There should be no overlap between this set of keys and the available session keys
19669<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableSessionKeys">CameraCharacteristics#getAvailableSessionKeys</a> along
19670with any other controls that can have impact on the dual-camera sync.<wbr/></p>
19671<p>The public camera2 API will always make the vendor tags visible
19672via
19673<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailablePhysicalCameraRequestKeys">CameraCharacteristics#getAvailablePhysicalCameraRequestKeys</a>.<wbr/></p>
19674            </td>
19675          </tr>
19676
19677          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19678           <!-- end of entry -->
19679
19680
19681          <tr class="entry" id="static_android.request.characteristicKeysNeedingPermission">
19682            <td class="entry_name
19683             " rowspan="5">
19684              android.<wbr/>request.<wbr/>characteristic<wbr/>Keys<wbr/>Needing<wbr/>Permission
19685            </td>
19686            <td class="entry_type">
19687                <span class="entry_type_name">int32</span>
19688                <span class="entry_type_container">x</span>
19689
19690                <span class="entry_type_array">
19691                  n
19692                </span>
19693              <span class="entry_type_visibility"> [hidden]</span>
19694
19695
19696              <span class="entry_type_hwlevel">[legacy] </span>
19697
19698
19699
19700
19701            </td> <!-- entry_type -->
19702
19703            <td class="entry_description">
19704              <p>A list of camera characteristics keys that are only available
19705in case the camera client has camera permission.<wbr/></p>
19706            </td>
19707
19708            <td class="entry_units">
19709            </td>
19710
19711            <td class="entry_range">
19712            </td>
19713
19714            <td class="entry_hal_version">
19715              <p>3.<wbr/>4</p>
19716            </td>
19717
19718            <td class="entry_tags">
19719            </td>
19720
19721          </tr>
19722          <tr class="entries_header">
19723            <th class="th_details" colspan="6">Details</th>
19724          </tr>
19725          <tr class="entry_cont">
19726            <td class="entry_details" colspan="6">
19727              <p>The entry contains a subset of
19728<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getKeys">CameraCharacteristics#getKeys</a> that require camera clients
19729to acquire the <a href="https://developer.android.com/reference/android/Manifest/permission.html#CAMERA">permission#CAMERA</a> permission before calling
19730<a href="https://developer.android.com/reference/android/hardware/camera2/CameraManager.html#getCameraCharacteristics">CameraManager#getCameraCharacteristics</a>.<wbr/> If the
19731permission is not held by the camera client,<wbr/> then the values of the repsective properties
19732will not be present in <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html">CameraCharacteristics</a>.<wbr/></p>
19733            </td>
19734          </tr>
19735
19736          <tr class="entries_header">
19737            <th class="th_details" colspan="6">HAL Implementation Details</th>
19738          </tr>
19739          <tr class="entry_cont">
19740            <td class="entry_details" colspan="6">
19741              <p>Do not set this property directly,<wbr/> camera service will overwrite any previous values.<wbr/></p>
19742            </td>
19743          </tr>
19744
19745          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19746           <!-- end of entry -->
19747
19748
19749
19750      <!-- end of kind -->
19751      </tbody>
19752      <tr><td colspan="7" class="kind">dynamic</td></tr>
19753
19754      <thead class="entries_header">
19755        <tr>
19756          <th class="th_name">Property Name</th>
19757          <th class="th_type">Type</th>
19758          <th class="th_description">Description</th>
19759          <th class="th_units">Units</th>
19760          <th class="th_range">Range</th>
19761          <th class="th_hal_version">Initial HIDL HAL version</th>
19762          <th class="th_tags">Tags</th>
19763        </tr>
19764      </thead>
19765
19766      <tbody>
19767
19768
19769
19770
19771
19772
19773
19774
19775
19776
19777          <tr class="entry" id="dynamic_android.request.frameCount">
19778            <td class="entry_name
19779                entry_name_deprecated
19780             " rowspan="3">
19781              android.<wbr/>request.<wbr/>frame<wbr/>Count
19782            </td>
19783            <td class="entry_type">
19784                <span class="entry_type_name">int32</span>
19785
19786              <span class="entry_type_visibility"> [hidden]</span>
19787
19788
19789
19790              <span class="entry_type_deprecated">[deprecated] </span>
19791
19792
19793
19794            </td> <!-- entry_type -->
19795
19796            <td class="entry_description">
19797              <p>A frame counter set by the framework.<wbr/> This value monotonically
19798increases with every new result (that is,<wbr/> each new result has a unique
19799frameCount value).<wbr/></p>
19800            </td>
19801
19802            <td class="entry_units">
19803              count of frames
19804            </td>
19805
19806            <td class="entry_range">
19807              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
19808              <p>&gt; 0</p>
19809            </td>
19810
19811            <td class="entry_hal_version">
19812              <p>3.<wbr/>2</p>
19813            </td>
19814
19815            <td class="entry_tags">
19816            </td>
19817
19818          </tr>
19819          <tr class="entries_header">
19820            <th class="th_details" colspan="6">Details</th>
19821          </tr>
19822          <tr class="entry_cont">
19823            <td class="entry_details" colspan="6">
19824              <p>Reset on release()</p>
19825            </td>
19826          </tr>
19827
19828
19829          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19830           <!-- end of entry -->
19831
19832
19833          <tr class="entry" id="dynamic_android.request.id">
19834            <td class="entry_name
19835             " rowspan="1">
19836              android.<wbr/>request.<wbr/>id
19837            </td>
19838            <td class="entry_type">
19839                <span class="entry_type_name">int32</span>
19840
19841              <span class="entry_type_visibility"> [hidden]</span>
19842
19843
19844
19845
19846
19847
19848            </td> <!-- entry_type -->
19849
19850            <td class="entry_description">
19851              <p>An application-specified ID for the current
19852request.<wbr/> Must be maintained unchanged in output
19853frame</p>
19854            </td>
19855
19856            <td class="entry_units">
19857              arbitrary integer assigned by application
19858            </td>
19859
19860            <td class="entry_range">
19861              <p>Any int</p>
19862            </td>
19863
19864            <td class="entry_hal_version">
19865              <p>3.<wbr/>2</p>
19866            </td>
19867
19868            <td class="entry_tags">
19869              <ul class="entry_tags">
19870                  <li><a href="#tag_V1">V1</a></li>
19871              </ul>
19872            </td>
19873
19874          </tr>
19875
19876
19877          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19878           <!-- end of entry -->
19879
19880
19881          <tr class="entry" id="dynamic_android.request.metadataMode">
19882            <td class="entry_name
19883             " rowspan="1">
19884              android.<wbr/>request.<wbr/>metadata<wbr/>Mode
19885            </td>
19886            <td class="entry_type">
19887                <span class="entry_type_name entry_type_name_enum">byte</span>
19888
19889              <span class="entry_type_visibility"> [system]</span>
19890
19891
19892
19893
19894
19895                <ul class="entry_type_enum">
19896                  <li>
19897                    <span class="entry_type_enum_name">NONE (v3.2)</span>
19898                    <span class="entry_type_enum_notes"><p>No metadata should be produced on output,<wbr/> except
19899for application-bound buffer data.<wbr/> If no
19900application-bound streams exist,<wbr/> no frame should be
19901placed in the output frame queue.<wbr/> If such streams
19902exist,<wbr/> a frame should be placed on the output queue
19903with null metadata but with the necessary output buffer
19904information.<wbr/> Timestamp information should still be
19905included with any output stream buffers</p></span>
19906                  </li>
19907                  <li>
19908                    <span class="entry_type_enum_name">FULL (v3.2)</span>
19909                    <span class="entry_type_enum_notes"><p>All metadata should be produced.<wbr/> Statistics will
19910only be produced if they are separately
19911enabled</p></span>
19912                  </li>
19913                </ul>
19914
19915            </td> <!-- entry_type -->
19916
19917            <td class="entry_description">
19918              <p>How much metadata to produce on
19919output</p>
19920            </td>
19921
19922            <td class="entry_units">
19923            </td>
19924
19925            <td class="entry_range">
19926            </td>
19927
19928            <td class="entry_hal_version">
19929              <p>3.<wbr/>2</p>
19930            </td>
19931
19932            <td class="entry_tags">
19933              <ul class="entry_tags">
19934                  <li><a href="#tag_FUTURE">FUTURE</a></li>
19935              </ul>
19936            </td>
19937
19938          </tr>
19939
19940
19941          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19942           <!-- end of entry -->
19943
19944
19945          <tr class="entry" id="dynamic_android.request.outputStreams">
19946            <td class="entry_name
19947                entry_name_deprecated
19948             " rowspan="3">
19949              android.<wbr/>request.<wbr/>output<wbr/>Streams
19950            </td>
19951            <td class="entry_type">
19952                <span class="entry_type_name">int32</span>
19953                <span class="entry_type_container">x</span>
19954
19955                <span class="entry_type_array">
19956                  n
19957                </span>
19958              <span class="entry_type_visibility"> [system]</span>
19959
19960
19961
19962              <span class="entry_type_deprecated">[deprecated] </span>
19963
19964
19965
19966            </td> <!-- entry_type -->
19967
19968            <td class="entry_description">
19969              <p>Lists which camera output streams image data
19970from this capture must be sent to</p>
19971            </td>
19972
19973            <td class="entry_units">
19974              List of camera stream IDs
19975            </td>
19976
19977            <td class="entry_range">
19978              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
19979              <p>List must only include streams that have been
19980created</p>
19981            </td>
19982
19983            <td class="entry_hal_version">
19984              <p>3.<wbr/>2</p>
19985            </td>
19986
19987            <td class="entry_tags">
19988              <ul class="entry_tags">
19989                  <li><a href="#tag_HAL2">HAL2</a></li>
19990              </ul>
19991            </td>
19992
19993          </tr>
19994          <tr class="entries_header">
19995            <th class="th_details" colspan="6">Details</th>
19996          </tr>
19997          <tr class="entry_cont">
19998            <td class="entry_details" colspan="6">
19999              <p>If no output streams are listed,<wbr/> then the image
20000data should simply be discarded.<wbr/> The image data must
20001still be captured for metadata and statistics production,<wbr/>
20002and the lens and flash must operate as requested.<wbr/></p>
20003            </td>
20004          </tr>
20005
20006
20007          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20008           <!-- end of entry -->
20009
20010
20011          <tr class="entry" id="dynamic_android.request.pipelineDepth">
20012            <td class="entry_name
20013             " rowspan="5">
20014              android.<wbr/>request.<wbr/>pipeline<wbr/>Depth
20015            </td>
20016            <td class="entry_type">
20017                <span class="entry_type_name">byte</span>
20018
20019              <span class="entry_type_visibility"> [public]</span>
20020
20021
20022              <span class="entry_type_hwlevel">[legacy] </span>
20023
20024
20025
20026
20027            </td> <!-- entry_type -->
20028
20029            <td class="entry_description">
20030              <p>Specifies the number of pipeline stages the frame went
20031through from when it was exposed to when the final completed result
20032was available to the framework.<wbr/></p>
20033            </td>
20034
20035            <td class="entry_units">
20036            </td>
20037
20038            <td class="entry_range">
20039              <p>&lt;= <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a></p>
20040            </td>
20041
20042            <td class="entry_hal_version">
20043              <p>3.<wbr/>2</p>
20044            </td>
20045
20046            <td class="entry_tags">
20047            </td>
20048
20049          </tr>
20050          <tr class="entries_header">
20051            <th class="th_details" colspan="6">Details</th>
20052          </tr>
20053          <tr class="entry_cont">
20054            <td class="entry_details" colspan="6">
20055              <p>Depending on what settings are used in the request,<wbr/> and
20056what streams are configured,<wbr/> the data may undergo less processing,<wbr/>
20057and some pipeline stages skipped.<wbr/></p>
20058<p>See <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a> for more details.<wbr/></p>
20059            </td>
20060          </tr>
20061
20062          <tr class="entries_header">
20063            <th class="th_details" colspan="6">HAL Implementation Details</th>
20064          </tr>
20065          <tr class="entry_cont">
20066            <td class="entry_details" colspan="6">
20067              <p>This value must always represent the accurate count of how many
20068pipeline stages were actually used.<wbr/></p>
20069            </td>
20070          </tr>
20071
20072          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20073           <!-- end of entry -->
20074
20075
20076
20077      <!-- end of kind -->
20078      </tbody>
20079
20080  <!-- end of section -->
20081  <tr><td colspan="7" id="section_scaler" class="section">scaler</td></tr>
20082
20083
20084      <tr><td colspan="7" class="kind">controls</td></tr>
20085
20086      <thead class="entries_header">
20087        <tr>
20088          <th class="th_name">Property Name</th>
20089          <th class="th_type">Type</th>
20090          <th class="th_description">Description</th>
20091          <th class="th_units">Units</th>
20092          <th class="th_range">Range</th>
20093          <th class="th_hal_version">Initial HIDL HAL version</th>
20094          <th class="th_tags">Tags</th>
20095        </tr>
20096      </thead>
20097
20098      <tbody>
20099
20100
20101
20102
20103
20104
20105
20106
20107
20108
20109          <tr class="entry" id="controls_android.scaler.cropRegion">
20110            <td class="entry_name
20111             " rowspan="5">
20112              android.<wbr/>scaler.<wbr/>crop<wbr/>Region
20113            </td>
20114            <td class="entry_type">
20115                <span class="entry_type_name">int32</span>
20116                <span class="entry_type_container">x</span>
20117
20118                <span class="entry_type_array">
20119                  4
20120                </span>
20121              <span class="entry_type_visibility"> [public as rectangle]</span>
20122
20123
20124              <span class="entry_type_hwlevel">[legacy] </span>
20125
20126
20127
20128
20129            </td> <!-- entry_type -->
20130
20131            <td class="entry_description">
20132              <p>The desired region of the sensor to read out for this capture.<wbr/></p>
20133            </td>
20134
20135            <td class="entry_units">
20136              Pixel coordinates relative to
20137          android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size or
20138          android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size depending on distortion correction
20139          capability and mode
20140            </td>
20141
20142            <td class="entry_range">
20143            </td>
20144
20145            <td class="entry_hal_version">
20146              <p>3.<wbr/>2</p>
20147            </td>
20148
20149            <td class="entry_tags">
20150              <ul class="entry_tags">
20151                  <li><a href="#tag_BC">BC</a></li>
20152              </ul>
20153            </td>
20154
20155          </tr>
20156          <tr class="entries_header">
20157            <th class="th_details" colspan="6">Details</th>
20158          </tr>
20159          <tr class="entry_cont">
20160            <td class="entry_details" colspan="6">
20161              <p>This control can be used to implement digital zoom.<wbr/></p>
20162<p>For devices not supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate
20163system 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
20164the top-left pixel of the active array.<wbr/></p>
20165<p>For devices supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate system
20166depends on the mode being set.<wbr/>  When the distortion correction mode is OFF,<wbr/> the
20167coordinate 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/>
201680)</code> being the top-left pixel of the pre-correction active array.<wbr/>  When the distortion
20169correction mode is not OFF,<wbr/> the coordinate system follows
20170<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
20171active array.<wbr/></p>
20172<p>Output streams use this rectangle to produce their output,<wbr/> cropping to a smaller region
20173if necessary to maintain the stream's aspect ratio,<wbr/> then scaling the sensor input to
20174match the output's configured resolution.<wbr/></p>
20175<p>The crop region is applied after the RAW to other color space (e.<wbr/>g.<wbr/> YUV)
20176conversion.<wbr/> Since raw streams (e.<wbr/>g.<wbr/> RAW16) don't have the conversion stage,<wbr/> they are not
20177croppable.<wbr/> The crop region will be ignored by raw streams.<wbr/></p>
20178<p>For non-raw streams,<wbr/> any additional per-stream cropping will be done to maximize the
20179final pixel area of the stream.<wbr/></p>
20180<p>For example,<wbr/> if the crop region is set to a 4:3 aspect ratio,<wbr/> then 4:3 streams will use
20181the exact crop region.<wbr/> 16:9 streams will further crop vertically (letterbox).<wbr/></p>
20182<p>Conversely,<wbr/> if the crop region is set to a 16:9,<wbr/> then 4:3 outputs will crop horizontally
20183(pillarbox),<wbr/> and 16:9 streams will match exactly.<wbr/> These additional crops will be
20184centered within the crop region.<wbr/></p>
20185<p>To illustrate,<wbr/> here are several scenarios of different crop regions and output streams,<wbr/>
20186for a hypothetical camera device with an active array of size <code>(2000,<wbr/>1500)</code>.<wbr/>  Note that
20187several of these examples use non-centered crop regions for ease of illustration; such
20188regions are only supported on devices with FREEFORM capability
20189(<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
20190rules work otherwise.<wbr/></p>
20191<ul>
20192<li>Camera Configuration:<ul>
20193<li>Active array size: <code>2000x1500</code> (3 MP,<wbr/> 4:3 aspect ratio)</li>
20194<li>Output stream #1: <code>640x480</code> (VGA,<wbr/> 4:3 aspect ratio)</li>
20195<li>Output stream #2: <code>1280x720</code> (720p,<wbr/> 16:9 aspect ratio)</li>
20196</ul>
20197</li>
20198<li>Case #1: 4:3 crop region with 2x digital zoom<ul>
20199<li>Crop region: <code>Rect(500,<wbr/> 375,<wbr/> 1500,<wbr/> 1125) //<wbr/> (left,<wbr/> top,<wbr/> right,<wbr/> bottom)</code></li>
20200<li><img alt="4:3 aspect ratio crop diagram" src="images/camera2/metadata/android.scaler.cropRegion/crop-region-43-ratio.png"/></li>
20201<li><code>640x480</code> stream source area: <code>(500,<wbr/> 375,<wbr/> 1500,<wbr/> 1125)</code> (equal to crop region)</li>
20202<li><code>1280x720</code> stream source area: <code>(500,<wbr/> 469,<wbr/> 1500,<wbr/> 1031)</code> (letterboxed)</li>
20203</ul>
20204</li>
20205<li>Case #2: 16:9 crop region with ~1.<wbr/>5x digital zoom.<wbr/><ul>
20206<li>Crop region: <code>Rect(500,<wbr/> 375,<wbr/> 1833,<wbr/> 1125)</code></li>
20207<li><img alt="16:9 aspect ratio crop diagram" src="images/camera2/metadata/android.scaler.cropRegion/crop-region-169-ratio.png"/></li>
20208<li><code>640x480</code> stream source area: <code>(666,<wbr/> 375,<wbr/> 1666,<wbr/> 1125)</code> (pillarboxed)</li>
20209<li><code>1280x720</code> stream source area: <code>(500,<wbr/> 375,<wbr/> 1833,<wbr/> 1125)</code> (equal to crop region)</li>
20210</ul>
20211</li>
20212<li>Case #3: 1:1 crop region with ~2.<wbr/>6x digital zoom.<wbr/><ul>
20213<li>Crop region: <code>Rect(500,<wbr/> 375,<wbr/> 1250,<wbr/> 1125)</code></li>
20214<li><img alt="1:1 aspect ratio crop diagram" src="images/camera2/metadata/android.scaler.cropRegion/crop-region-11-ratio.png"/></li>
20215<li><code>640x480</code> stream source area: <code>(500,<wbr/> 469,<wbr/> 1250,<wbr/> 1031)</code> (letterboxed)</li>
20216<li><code>1280x720</code> stream source area: <code>(500,<wbr/> 543,<wbr/> 1250,<wbr/> 957)</code> (letterboxed)</li>
20217</ul>
20218</li>
20219<li>Case #4: Replace <code>640x480</code> stream with <code>1024x1024</code> stream,<wbr/> with 4:3 crop region:<ul>
20220<li>Crop region: <code>Rect(500,<wbr/> 375,<wbr/> 1500,<wbr/> 1125)</code></li>
20221<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>
20222<li><code>1024x1024</code> stream source area: <code>(625,<wbr/> 375,<wbr/> 1375,<wbr/> 1125)</code> (pillarboxed)</li>
20223<li><code>1280x720</code> stream source area: <code>(500,<wbr/> 469,<wbr/> 1500,<wbr/> 1031)</code> (letterboxed)</li>
20224<li>Note that in this case,<wbr/> neither of the two outputs is a subset of the other,<wbr/> with
20225  each containing image data the other doesn't have.<wbr/></li>
20226</ul>
20227</li>
20228</ul>
20229<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
20230of the crop region cannot be set to be smaller than
20231<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
20232<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>
20233<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
20234and height of the crop region cannot be set to be smaller than
20235<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>
20236and
20237<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/>
20238respectively.<wbr/></p>
20239<p>The camera device may adjust the crop region to account for rounding and other hardware
20240requirements; the final crop region used will be included in the output capture result.<wbr/></p>
20241<p>The camera sensor output aspect ratio depends on factors such as output stream
20242combination 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
20243this control.<wbr/> And the camera device will treat different camera sensor output sizes
20244(potentially with in-sensor crop) as the same crop of
20245<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
20246maximum crop region always maps to the same aspect ratio or field of view for the
20247sensor output.<wbr/></p>
20248<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>
20249to take advantage of better support for zoom with logical multi-camera.<wbr/> The benefits
20250include better precision with optical-digital zoom combination,<wbr/> and ability to do
20251zoom-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
20252the capture request should be left as the default activeArray size.<wbr/> The
20253coordinate system is post-zoom,<wbr/> meaning that the activeArraySize or
20254preCorrectionActiveArraySize covers the camera device's field of view "after" zoom.<wbr/>  See
20255<a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> for details.<wbr/></p>
20256<p>For camera devices with the
20257<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>
20258capability,<wbr/> <a href="#static_android.sensor.info.activeArraySizeMaximumResolution">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution</a> /<wbr/>
20259<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
20260coordinate system for requests where <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to
20261<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>
20262            </td>
20263          </tr>
20264
20265          <tr class="entries_header">
20266            <th class="th_details" colspan="6">HAL Implementation Details</th>
20267          </tr>
20268          <tr class="entry_cont">
20269            <td class="entry_details" colspan="6">
20270              <p>The output streams must maintain square pixels at all
20271times,<wbr/> no matter what the relative aspect ratios of the
20272crop region and the stream are.<wbr/>  Negative values for
20273corner are allowed for raw output if full pixel array is
20274larger than active pixel array.<wbr/> Width and height may be
20275rounded to nearest larger supportable width,<wbr/> especially
20276for raw output,<wbr/> where only a few fixed scales may be
20277possible.<wbr/></p>
20278<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
20279ratio via <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a>,<wbr/> and change the coordinate system such that
20280<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
20281represent the camera field-of-view after zoom.<wbr/> see <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> for
20282details.<wbr/></p>
20283<p>HAL2.<wbr/>x uses only (x,<wbr/> y,<wbr/> width)</p>
20284            </td>
20285          </tr>
20286
20287          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20288           <!-- end of entry -->
20289
20290
20291          <tr class="entry" id="controls_android.scaler.rotateAndCrop">
20292            <td class="entry_name
20293             " rowspan="5">
20294              android.<wbr/>scaler.<wbr/>rotate<wbr/>And<wbr/>Crop
20295            </td>
20296            <td class="entry_type">
20297                <span class="entry_type_name entry_type_name_enum">byte</span>
20298
20299              <span class="entry_type_visibility"> [public]</span>
20300
20301
20302
20303
20304
20305                <ul class="entry_type_enum">
20306                  <li>
20307                    <span class="entry_type_enum_name">NONE (v3.5)</span>
20308                    <span class="entry_type_enum_notes"><p>No rotate and crop is applied.<wbr/> Processed outputs are in the sensor orientation.<wbr/></p></span>
20309                  </li>
20310                  <li>
20311                    <span class="entry_type_enum_name">90 (v3.5)</span>
20312                    <span class="entry_type_enum_notes"><p>Processed images are rotated by 90 degrees clockwise,<wbr/> and then cropped
20313to the original aspect ratio.<wbr/></p></span>
20314                  </li>
20315                  <li>
20316                    <span class="entry_type_enum_name">180 (v3.5)</span>
20317                    <span class="entry_type_enum_notes"><p>Processed images are rotated by 180 degrees.<wbr/>  Since the aspect ratio does not
20318change,<wbr/> no cropping is performed.<wbr/></p></span>
20319                  </li>
20320                  <li>
20321                    <span class="entry_type_enum_name">270 (v3.5)</span>
20322                    <span class="entry_type_enum_notes"><p>Processed images are rotated by 270 degrees clockwise,<wbr/> and then cropped
20323to the original aspect ratio.<wbr/></p></span>
20324                  </li>
20325                  <li>
20326                    <span class="entry_type_enum_name">AUTO (v3.5)</span>
20327                    <span class="entry_type_enum_notes"><p>The camera API automatically selects the best concrete value for
20328rotate-and-crop based on the application's support for resizability and the current
20329multi-window mode.<wbr/></p>
20330<p>If the application does not support resizing but the display mode for its main
20331Activity is not in a typical orientation,<wbr/> the camera API will set <code>ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>90</code>
20332or some other supported rotation value,<wbr/> depending on device configuration,<wbr/>
20333to ensure preview and captured images are correctly shown to the user.<wbr/> Otherwise,<wbr/>
20334<code>ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>NONE</code> will be selected.<wbr/></p>
20335<p>When a value other than NONE is selected,<wbr/> several metadata fields will also be parsed
20336differently to ensure that coordinates are correctly handled for features like drawing
20337face detection boxes or passing in tap-to-focus coordinates.<wbr/>  The camera API will
20338convert positions in the active array coordinate system to/<wbr/>from the cropped-and-rotated
20339coordinate system to make the operation transparent for applications.<wbr/></p>
20340<p>No coordinate mapping will be done when the application selects a non-AUTO mode.<wbr/></p></span>
20341                  </li>
20342                </ul>
20343
20344            </td> <!-- entry_type -->
20345
20346            <td class="entry_description">
20347              <p>Whether a rotation-and-crop operation is applied to processed
20348outputs from the camera.<wbr/></p>
20349            </td>
20350
20351            <td class="entry_units">
20352            </td>
20353
20354            <td class="entry_range">
20355              <p><a href="#static_android.scaler.availableRotateAndCropModes">android.<wbr/>scaler.<wbr/>available<wbr/>Rotate<wbr/>And<wbr/>Crop<wbr/>Modes</a></p>
20356            </td>
20357
20358            <td class="entry_hal_version">
20359              <p>3.<wbr/>5</p>
20360            </td>
20361
20362            <td class="entry_tags">
20363            </td>
20364
20365          </tr>
20366          <tr class="entries_header">
20367            <th class="th_details" colspan="6">Details</th>
20368          </tr>
20369          <tr class="entry_cont">
20370            <td class="entry_details" colspan="6">
20371              <p>This control is primarily intended to help camera applications with no support for
20372multi-window modes to work correctly on devices where multi-window scenarios are
20373unavoidable,<wbr/> such as foldables or other devices with variable display geometry or more
20374free-form window placement (such as laptops,<wbr/> which often place portrait-orientation apps
20375in landscape with pillarboxing).<wbr/></p>
20376<p>If supported,<wbr/> the default value is <code>ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>AUTO</code>,<wbr/> which allows the camera API
20377to enable backwards-compatibility support for applications that do not support resizing
20378/<wbr/> multi-window modes,<wbr/> when the device is in fact in a multi-window mode (such as inset
20379portrait on laptops,<wbr/> or on a foldable device in some fold states).<wbr/>  In addition,<wbr/>
20380<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
20381is supported by the device.<wbr/>  If not supported,<wbr/> devices API level 30 or higher will always
20382list only <code>ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>NONE</code>.<wbr/></p>
20383<p>When <code>CROP_<wbr/>AUTO</code> is in use,<wbr/> and the camera API activates backward-compatibility mode,<wbr/>
20384several metadata fields will also be parsed differently to ensure that coordinates are
20385correctly handled for features like drawing face detection boxes or passing in
20386tap-to-focus coordinates.<wbr/>  The camera API will convert positions in the active array
20387coordinate system to/<wbr/>from the cropped-and-rotated coordinate system to make the
20388operation transparent for applications.<wbr/>  The following controls are affected:</p>
20389<ul>
20390<li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li>
20391<li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li>
20392<li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li>
20393<li><a href="#dynamic_android.statistics.faces">android.<wbr/>statistics.<wbr/>faces</a></li>
20394</ul>
20395<p>Capture results will contain the actual value selected by the API;
20396<code>ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>AUTO</code> will never be seen in a capture result.<wbr/></p>
20397<p>Applications can also select their preferred cropping mode,<wbr/> either to opt out of the
20398backwards-compatibility treatment,<wbr/> or to use the cropping feature themselves as needed.<wbr/>
20399In this case,<wbr/> no coordinate translation will be done automatically,<wbr/> and all controls
20400will continue to use the normal active array coordinates.<wbr/></p>
20401<p>Cropping and rotating is done after the application of digital zoom (via either
20402<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
20403output is further cropped and scaled.<wbr/> It only affects processed outputs such as
20404YUV,<wbr/> PRIVATE,<wbr/> and JPEG.<wbr/>  It has no effect on RAW outputs.<wbr/></p>
20405<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
20406view.<wbr/> For example,<wbr/> with a 4:3 aspect ratio output of 1600x1200,<wbr/> <code>CROP_<wbr/>90</code> will still
20407produce 1600x1200 output,<wbr/> but these buffers are cropped from a vertical 3:4 slice at the
20408center of the 4:3 area,<wbr/> then rotated to be 4:3,<wbr/> and then upscaled to 1600x1200.<wbr/>  Only
2040956.<wbr/>25% of the original FOV is still visible.<wbr/>  In general,<wbr/> for an aspect ratio of <code>w:h</code>,<wbr/>
20410the crop and rotate operation leaves <code>(h/<wbr/>w)^2</code> of the field of view visible.<wbr/> For 16:9,<wbr/>
20411this is ~31.<wbr/>6%.<wbr/></p>
20412<p>As a visual example,<wbr/> the figure below shows the effect of <code>ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>90</code> on the
20413outputs for the following parameters:</p>
20414<ul>
20415<li>Sensor active array: <code>2000x1500</code></li>
20416<li>Crop region: top-left: <code>(500,<wbr/> 375)</code>,<wbr/> size: <code>(1000,<wbr/> 750)</code> (4:3 aspect ratio)</li>
20417<li>Output streams: YUV <code>640x480</code> and YUV <code>1280x720</code></li>
20418<li><code>ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>90</code></li>
20419</ul>
20420<p><img alt="Effect of ROTATE_AND_CROP_90" src="images/camera2/metadata/android.scaler.rotateAndCrop/crop-region-rotate-90-43-ratio.png"/></p>
20421<p>With these settings,<wbr/> the regions of the active array covered by the output streams are:</p>
20422<ul>
20423<li>640x480 stream crop: top-left: <code>(219,<wbr/> 375)</code>,<wbr/> size: <code>(562,<wbr/> 750)</code></li>
20424<li>1280x720 stream crop: top-left: <code>(289,<wbr/> 375)</code>,<wbr/> size: <code>(422,<wbr/> 750)</code></li>
20425</ul>
20426<p>Since the buffers are rotated,<wbr/> the buffers as seen by the application are:</p>
20427<ul>
20428<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>
20429<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>
20430</ul>
20431            </td>
20432          </tr>
20433
20434          <tr class="entries_header">
20435            <th class="th_details" colspan="6">HAL Implementation Details</th>
20436          </tr>
20437          <tr class="entry_cont">
20438            <td class="entry_details" colspan="6">
20439              <p>ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>AUTO will never be sent to the HAL,<wbr/> though it must be set as the default
20440value in all the capture request templates by the HAL.<wbr/>  The camera service will
20441translate AUTO to a specific rotation value based on the current application's
20442multi-window state and its support of resizability.<wbr/></p>
20443<p>The HAL also does not need to consider coordinate transforms for ROTATE_<wbr/>AND_<wbr/>CROP - all
20444capture request and result fields should be kept in the active array coordinate frame.<wbr/>
20445Any translation required to implement ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>AUTO will be handled by the camera
20446service.<wbr/></p>
20447            </td>
20448          </tr>
20449
20450          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20451           <!-- end of entry -->
20452
20453
20454          <tr class="entry" id="controls_android.scaler.cropRegionSet">
20455            <td class="entry_name
20456             " rowspan="3">
20457              android.<wbr/>scaler.<wbr/>crop<wbr/>Region<wbr/>Set
20458            </td>
20459            <td class="entry_type">
20460                <span class="entry_type_name entry_type_name_enum">byte</span>
20461
20462              <span class="entry_type_visibility"> [fwk_only as boolean]</span>
20463
20464
20465
20466
20467
20468                <ul class="entry_type_enum">
20469                  <li>
20470                    <span class="entry_type_enum_name">FALSE (v3.2)</span>
20471                    <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
20472camera client.<wbr/></p></span>
20473                  </li>
20474                  <li>
20475                    <span class="entry_type_enum_name">TRUE (v3.2)</span>
20476                    <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
20477client.<wbr/></p></span>
20478                  </li>
20479                </ul>
20480
20481            </td> <!-- entry_type -->
20482
20483            <td class="entry_description">
20484              <p>Framework-only private key which informs camera fwk that the scaler crop region
20485(<a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>) has been set by the client and it need
20486not 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>
20487            </td>
20488
20489            <td class="entry_units">
20490            </td>
20491
20492            <td class="entry_range">
20493            </td>
20494
20495            <td class="entry_hal_version">
20496              <p>3.<wbr/>2</p>
20497            </td>
20498
20499            <td class="entry_tags">
20500            </td>
20501
20502          </tr>
20503          <tr class="entries_header">
20504            <th class="th_details" colspan="6">Details</th>
20505          </tr>
20506          <tr class="entry_cont">
20507            <td class="entry_details" colspan="6">
20508              <p>This must be set to TRUE by the camera2 java fwk when the camera client sets
20509<a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></p>
20510            </td>
20511          </tr>
20512
20513
20514          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20515           <!-- end of entry -->
20516
20517
20518
20519      <!-- end of kind -->
20520      </tbody>
20521      <tr><td colspan="7" class="kind">static</td></tr>
20522
20523      <thead class="entries_header">
20524        <tr>
20525          <th class="th_name">Property Name</th>
20526          <th class="th_type">Type</th>
20527          <th class="th_description">Description</th>
20528          <th class="th_units">Units</th>
20529          <th class="th_range">Range</th>
20530          <th class="th_hal_version">Initial HIDL HAL version</th>
20531          <th class="th_tags">Tags</th>
20532        </tr>
20533      </thead>
20534
20535      <tbody>
20536
20537
20538
20539
20540
20541
20542
20543
20544
20545
20546          <tr class="entry" id="static_android.scaler.availableFormats">
20547            <td class="entry_name
20548                entry_name_deprecated
20549             " rowspan="5">
20550              android.<wbr/>scaler.<wbr/>available<wbr/>Formats
20551            </td>
20552            <td class="entry_type">
20553                <span class="entry_type_name entry_type_name_enum">int32</span>
20554                <span class="entry_type_container">x</span>
20555
20556                <span class="entry_type_array">
20557                  n
20558                </span>
20559              <span class="entry_type_visibility"> [hidden as imageFormat]</span>
20560
20561
20562
20563              <span class="entry_type_deprecated">[deprecated] </span>
20564
20565
20566                <ul class="entry_type_enum">
20567                  <li>
20568                    <span class="entry_type_enum_name">RAW16 (v3.2)</span>
20569                    <span class="entry_type_enum_optional">[optional]</span>
20570                    <span class="entry_type_enum_value">0x20</span>
20571                    <span class="entry_type_enum_notes"><p>RAW16 is a standard,<wbr/> cross-platform format for raw image
20572buffers with 16-bit pixels.<wbr/></p>
20573<p>Buffers of this format are typically expected to have a
20574Color Filter Array (CFA) layout,<wbr/> which is given in
20575<a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a>.<wbr/> Sensors with
20576CFAs that are not representable by a format in
20577<a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a> should not
20578use this format.<wbr/></p>
20579<p>Buffers of this format will also follow the constraints given for
20580RAW_<wbr/>OPAQUE buffers,<wbr/> but with relaxed performance constraints.<wbr/></p>
20581<p>This format is intended to give users access to the full contents
20582of the buffers coming directly from the image sensor prior to any
20583cropping or scaling operations,<wbr/> and all coordinate systems for
20584metadata used for this format are relative to the size of the
20585active region of the image sensor before any geometric distortion
20586correction has been applied (i.<wbr/>e.<wbr/>
20587<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
20588dimensions for this format are limited to the full dimensions of
20589the 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
20590<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
20591only supported output size).<wbr/></p>
20592<p>See <a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a> for
20593the full set of performance guarantees.<wbr/></p></span>
20594                  </li>
20595                  <li>
20596                    <span class="entry_type_enum_name">RAW_OPAQUE (v3.2)</span>
20597                    <span class="entry_type_enum_optional">[optional]</span>
20598                    <span class="entry_type_enum_value">0x24</span>
20599                    <span class="entry_type_enum_notes"><p>RAW_<wbr/>OPAQUE (or
20600<a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_PRIVATE">RAW_<wbr/>PRIVATE</a>
20601as referred in public API) is a format for raw image buffers
20602coming from an image sensor.<wbr/></p>
20603<p>The actual structure of buffers of this format is
20604platform-specific,<wbr/> but must follow several constraints:</p>
20605<ol>
20606<li>No image post-processing operations may have been applied to
20607buffers of this type.<wbr/> These buffers contain raw image data coming
20608directly from the image sensor.<wbr/></li>
20609<li>If a buffer of this format is passed to the camera device for
20610reprocessing,<wbr/> the resulting images will be identical to the images
20611produced if the buffer had come directly from the sensor and was
20612processed with the same settings.<wbr/></li>
20613</ol>
20614<p>The intended use for this format is to allow access to the native
20615raw format buffers coming directly from the camera sensor without
20616any additional conversions or decrease in framerate.<wbr/></p>
20617<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
20618performance guarantees.<wbr/></p></span>
20619                  </li>
20620                  <li>
20621                    <span class="entry_type_enum_name">YV12 (v3.2)</span>
20622                    <span class="entry_type_enum_optional">[optional]</span>
20623                    <span class="entry_type_enum_value">0x32315659</span>
20624                    <span class="entry_type_enum_notes"><p>YCrCb 4:2:0 Planar</p></span>
20625                  </li>
20626                  <li>
20627                    <span class="entry_type_enum_name">YCrCb_420_SP (v3.2)</span>
20628                    <span class="entry_type_enum_optional">[optional]</span>
20629                    <span class="entry_type_enum_value">0x11</span>
20630                    <span class="entry_type_enum_notes"><p>NV21</p></span>
20631                  </li>
20632                  <li>
20633                    <span class="entry_type_enum_name">IMPLEMENTATION_DEFINED (v3.2)</span>
20634                    <span class="entry_type_enum_value">0x22</span>
20635                    <span class="entry_type_enum_notes"><p>System internal format,<wbr/> not application-accessible</p></span>
20636                  </li>
20637                  <li>
20638                    <span class="entry_type_enum_name">YCbCr_420_888 (v3.2)</span>
20639                    <span class="entry_type_enum_value">0x23</span>
20640                    <span class="entry_type_enum_notes"><p>Flexible YUV420 Format</p></span>
20641                  </li>
20642                  <li>
20643                    <span class="entry_type_enum_name">BLOB (v3.2)</span>
20644                    <span class="entry_type_enum_value">0x21</span>
20645                    <span class="entry_type_enum_notes"><p>JPEG format</p></span>
20646                  </li>
20647                  <li>
20648                    <span class="entry_type_enum_name">RAW10 (v3.4)</span>
20649                    <span class="entry_type_enum_value">0x25</span>
20650                    <span class="entry_type_enum_notes"><p>RAW10</p></span>
20651                  </li>
20652                  <li>
20653                    <span class="entry_type_enum_name">RAW12 (v3.4)</span>
20654                    <span class="entry_type_enum_value">0x26</span>
20655                    <span class="entry_type_enum_notes"><p>RAW12</p></span>
20656                  </li>
20657                  <li>
20658                    <span class="entry_type_enum_name">Y8 (v3.4)</span>
20659                    <span class="entry_type_enum_value">0x20203859</span>
20660                    <span class="entry_type_enum_notes"><p>Y8</p></span>
20661                  </li>
20662                </ul>
20663
20664            </td> <!-- entry_type -->
20665
20666            <td class="entry_description">
20667              <p>The list of image formats that are supported by this
20668camera device for output streams.<wbr/></p>
20669            </td>
20670
20671            <td class="entry_units">
20672            </td>
20673
20674            <td class="entry_range">
20675              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
20676            </td>
20677
20678            <td class="entry_hal_version">
20679              <p>3.<wbr/>2</p>
20680            </td>
20681
20682            <td class="entry_tags">
20683              <ul class="entry_tags">
20684                  <li><a href="#tag_BC">BC</a></li>
20685              </ul>
20686            </td>
20687
20688          </tr>
20689          <tr class="entries_header">
20690            <th class="th_details" colspan="6">Details</th>
20691          </tr>
20692          <tr class="entry_cont">
20693            <td class="entry_details" colspan="6">
20694              <p>All camera devices will support JPEG and YUV_<wbr/>420_<wbr/>888 formats.<wbr/></p>
20695<p>When set to YUV_<wbr/>420_<wbr/>888,<wbr/> application can access the YUV420 data directly.<wbr/></p>
20696            </td>
20697          </tr>
20698
20699          <tr class="entries_header">
20700            <th class="th_details" colspan="6">HAL Implementation Details</th>
20701          </tr>
20702          <tr class="entry_cont">
20703            <td class="entry_details" colspan="6">
20704              <p>These format values are from HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>* in
20705system/<wbr/>core/<wbr/>libsystem/<wbr/>include/<wbr/>system/<wbr/>graphics-base.<wbr/>h.<wbr/></p>
20706<p>When IMPLEMENTATION_<wbr/>DEFINED is used,<wbr/> the platform
20707gralloc module will select a format based on the usage flags provided
20708by the camera HAL device and the other endpoint of the stream.<wbr/> It is
20709usually used by preview and recording streams,<wbr/> where the application doesn't
20710need access the image data.<wbr/></p>
20711<p>YCb<wbr/>Cr_<wbr/>420_<wbr/>888 format must be supported by the HAL.<wbr/> When an image stream
20712needs CPU/<wbr/>application direct access,<wbr/> this format will be used.<wbr/> For a MONOCHROME
20713camera device,<wbr/> the pixel value of Cb and Cr planes is 128.<wbr/></p>
20714<p>The BLOB format must be supported by the HAL.<wbr/> This is used for the JPEG stream.<wbr/></p>
20715<p>A RAW_<wbr/>OPAQUE buffer should contain only pixel data.<wbr/> It is strongly
20716recommended that any information used by the camera device when
20717processing images is fully expressed by the result metadata
20718for that image buffer.<wbr/></p>
20719            </td>
20720          </tr>
20721
20722          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20723           <!-- end of entry -->
20724
20725
20726          <tr class="entry" id="static_android.scaler.availableJpegMinDurations">
20727            <td class="entry_name
20728                entry_name_deprecated
20729             " rowspan="3">
20730              android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Min<wbr/>Durations
20731            </td>
20732            <td class="entry_type">
20733                <span class="entry_type_name">int64</span>
20734                <span class="entry_type_container">x</span>
20735
20736                <span class="entry_type_array">
20737                  n
20738                </span>
20739              <span class="entry_type_visibility"> [hidden]</span>
20740
20741
20742
20743              <span class="entry_type_deprecated">[deprecated] </span>
20744
20745
20746
20747            </td> <!-- entry_type -->
20748
20749            <td class="entry_description">
20750              <p>The minimum frame duration that is supported
20751for each resolution in <a href="#static_android.scaler.availableJpegSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes</a>.<wbr/></p>
20752            </td>
20753
20754            <td class="entry_units">
20755              Nanoseconds
20756            </td>
20757
20758            <td class="entry_range">
20759              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
20760              <p>TODO: Remove property.<wbr/></p>
20761            </td>
20762
20763            <td class="entry_hal_version">
20764              <p>3.<wbr/>2</p>
20765            </td>
20766
20767            <td class="entry_tags">
20768              <ul class="entry_tags">
20769                  <li><a href="#tag_BC">BC</a></li>
20770              </ul>
20771            </td>
20772
20773          </tr>
20774          <tr class="entries_header">
20775            <th class="th_details" colspan="6">Details</th>
20776          </tr>
20777          <tr class="entry_cont">
20778            <td class="entry_details" colspan="6">
20779              <p>This corresponds to the minimum steady-state frame duration when only
20780that JPEG stream is active and captured in a burst,<wbr/> with all
20781processing (typically in android.<wbr/>*.<wbr/>mode) set to FAST.<wbr/></p>
20782<p>When multiple streams are configured,<wbr/> the minimum
20783frame duration will be &gt;= max(individual stream min
20784durations)</p>
20785            </td>
20786          </tr>
20787
20788
20789          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20790           <!-- end of entry -->
20791
20792
20793          <tr class="entry" id="static_android.scaler.availableJpegSizes">
20794            <td class="entry_name
20795                entry_name_deprecated
20796             " rowspan="5">
20797              android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes
20798            </td>
20799            <td class="entry_type">
20800                <span class="entry_type_name">int32</span>
20801                <span class="entry_type_container">x</span>
20802
20803                <span class="entry_type_array">
20804                  n x 2
20805                </span>
20806              <span class="entry_type_visibility"> [hidden as size]</span>
20807
20808
20809
20810              <span class="entry_type_deprecated">[deprecated] </span>
20811
20812
20813
20814            </td> <!-- entry_type -->
20815
20816            <td class="entry_description">
20817              <p>The JPEG resolutions that are supported by this camera device.<wbr/></p>
20818            </td>
20819
20820            <td class="entry_units">
20821            </td>
20822
20823            <td class="entry_range">
20824              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
20825              <p>TODO: Remove property.<wbr/></p>
20826            </td>
20827
20828            <td class="entry_hal_version">
20829              <p>3.<wbr/>2</p>
20830            </td>
20831
20832            <td class="entry_tags">
20833              <ul class="entry_tags">
20834                  <li><a href="#tag_BC">BC</a></li>
20835              </ul>
20836            </td>
20837
20838          </tr>
20839          <tr class="entries_header">
20840            <th class="th_details" colspan="6">Details</th>
20841          </tr>
20842          <tr class="entry_cont">
20843            <td class="entry_details" colspan="6">
20844              <p>The resolutions are listed as <code>(width,<wbr/> height)</code> pairs.<wbr/> All camera devices will support
20845sensor 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>
20846            </td>
20847          </tr>
20848
20849          <tr class="entries_header">
20850            <th class="th_details" colspan="6">HAL Implementation Details</th>
20851          </tr>
20852          <tr class="entry_cont">
20853            <td class="entry_details" colspan="6">
20854              <p>The HAL must include sensor maximum resolution
20855(defined by <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>),<wbr/>
20856and should include half/<wbr/>quarter of sensor maximum resolution.<wbr/></p>
20857            </td>
20858          </tr>
20859
20860          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20861           <!-- end of entry -->
20862
20863
20864          <tr class="entry" id="static_android.scaler.availableMaxDigitalZoom">
20865            <td class="entry_name
20866             " rowspan="5">
20867              android.<wbr/>scaler.<wbr/>available<wbr/>Max<wbr/>Digital<wbr/>Zoom
20868            </td>
20869            <td class="entry_type">
20870                <span class="entry_type_name">float</span>
20871
20872              <span class="entry_type_visibility"> [public]</span>
20873
20874
20875              <span class="entry_type_hwlevel">[legacy] </span>
20876
20877
20878
20879
20880            </td> <!-- entry_type -->
20881
20882            <td class="entry_description">
20883              <p>The maximum ratio between both active area width
20884and crop region width,<wbr/> and active area height and
20885crop region height,<wbr/> for <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></p>
20886            </td>
20887
20888            <td class="entry_units">
20889              Zoom scale factor
20890            </td>
20891
20892            <td class="entry_range">
20893              <p>&gt;=1</p>
20894            </td>
20895
20896            <td class="entry_hal_version">
20897              <p>3.<wbr/>2</p>
20898            </td>
20899
20900            <td class="entry_tags">
20901              <ul class="entry_tags">
20902                  <li><a href="#tag_BC">BC</a></li>
20903              </ul>
20904            </td>
20905
20906          </tr>
20907          <tr class="entries_header">
20908            <th class="th_details" colspan="6">Details</th>
20909          </tr>
20910          <tr class="entry_cont">
20911            <td class="entry_details" colspan="6">
20912              <p>This represents the maximum amount of zooming possible by
20913the camera device,<wbr/> or equivalently,<wbr/> the minimum cropping
20914window size.<wbr/></p>
20915<p>Crop regions that have a width or height that is smaller
20916than this ratio allows will be rounded up to the minimum
20917allowed size by the camera device.<wbr/></p>
20918<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/>
20919the 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
20920maximum zoom ratio.<wbr/></p>
20921            </td>
20922          </tr>
20923
20924          <tr class="entries_header">
20925            <th class="th_details" colspan="6">HAL Implementation Details</th>
20926          </tr>
20927          <tr class="entry_cont">
20928            <td class="entry_details" colspan="6">
20929              <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
20930the maximum supported zoomRatio specified in <a href="#static_android.control.zoomRatioRange">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio<wbr/>Range</a>.<wbr/></p>
20931            </td>
20932          </tr>
20933
20934          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20935           <!-- end of entry -->
20936
20937
20938          <tr class="entry" id="static_android.scaler.availableProcessedMinDurations">
20939            <td class="entry_name
20940                entry_name_deprecated
20941             " rowspan="3">
20942              android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Min<wbr/>Durations
20943            </td>
20944            <td class="entry_type">
20945                <span class="entry_type_name">int64</span>
20946                <span class="entry_type_container">x</span>
20947
20948                <span class="entry_type_array">
20949                  n
20950                </span>
20951              <span class="entry_type_visibility"> [hidden]</span>
20952
20953
20954
20955              <span class="entry_type_deprecated">[deprecated] </span>
20956
20957
20958
20959            </td> <!-- entry_type -->
20960
20961            <td class="entry_description">
20962              <p>For each available processed output size (defined in
20963<a href="#static_android.scaler.availableProcessedSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Sizes</a>),<wbr/> this property lists the
20964minimum supportable frame duration for that size.<wbr/></p>
20965            </td>
20966
20967            <td class="entry_units">
20968              Nanoseconds
20969            </td>
20970
20971            <td class="entry_range">
20972              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
20973            </td>
20974
20975            <td class="entry_hal_version">
20976              <p>3.<wbr/>2</p>
20977            </td>
20978
20979            <td class="entry_tags">
20980              <ul class="entry_tags">
20981                  <li><a href="#tag_BC">BC</a></li>
20982              </ul>
20983            </td>
20984
20985          </tr>
20986          <tr class="entries_header">
20987            <th class="th_details" colspan="6">Details</th>
20988          </tr>
20989          <tr class="entry_cont">
20990            <td class="entry_details" colspan="6">
20991              <p>This should correspond to the frame duration when only that processed
20992stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode)
20993set to FAST.<wbr/></p>
20994<p>When multiple streams are configured,<wbr/> the minimum frame duration will
20995be &gt;= max(individual stream min durations).<wbr/></p>
20996            </td>
20997          </tr>
20998
20999
21000          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21001           <!-- end of entry -->
21002
21003
21004          <tr class="entry" id="static_android.scaler.availableProcessedSizes">
21005            <td class="entry_name
21006                entry_name_deprecated
21007             " rowspan="5">
21008              android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Sizes
21009            </td>
21010            <td class="entry_type">
21011                <span class="entry_type_name">int32</span>
21012                <span class="entry_type_container">x</span>
21013
21014                <span class="entry_type_array">
21015                  n x 2
21016                </span>
21017              <span class="entry_type_visibility"> [hidden as size]</span>
21018
21019
21020
21021              <span class="entry_type_deprecated">[deprecated] </span>
21022
21023
21024
21025            </td> <!-- entry_type -->
21026
21027            <td class="entry_description">
21028              <p>The resolutions available for use with
21029processed output streams,<wbr/> such as YV12,<wbr/> NV12,<wbr/> and
21030platform opaque YUV/<wbr/>RGB streams to the GPU or video
21031encoders.<wbr/></p>
21032            </td>
21033
21034            <td class="entry_units">
21035            </td>
21036
21037            <td class="entry_range">
21038              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
21039            </td>
21040
21041            <td class="entry_hal_version">
21042              <p>3.<wbr/>2</p>
21043            </td>
21044
21045            <td class="entry_tags">
21046              <ul class="entry_tags">
21047                  <li><a href="#tag_BC">BC</a></li>
21048              </ul>
21049            </td>
21050
21051          </tr>
21052          <tr class="entries_header">
21053            <th class="th_details" colspan="6">Details</th>
21054          </tr>
21055          <tr class="entry_cont">
21056            <td class="entry_details" colspan="6">
21057              <p>The resolutions are listed as <code>(width,<wbr/> height)</code> pairs.<wbr/></p>
21058<p>For a given use case,<wbr/> the actual maximum supported resolution
21059may be lower than what is listed here,<wbr/> depending on the destination
21060Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/>
21061the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p)
21062smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448)
21063can provide.<wbr/></p>
21064<p>Please reference the documentation for the image data destination to
21065check if it limits the maximum size for image data.<wbr/></p>
21066            </td>
21067          </tr>
21068
21069          <tr class="entries_header">
21070            <th class="th_details" colspan="6">HAL Implementation Details</th>
21071          </tr>
21072          <tr class="entry_cont">
21073            <td class="entry_details" colspan="6">
21074              <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/>
21075the HAL must include all JPEG sizes listed in <a href="#static_android.scaler.availableJpegSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes</a>
21076and each below resolution if it is smaller than or equal to the sensor
21077maximum resolution (if they are not listed in JPEG sizes already):</p>
21078<ul>
21079<li>240p (320 x 240)</li>
21080<li>480p (640 x 480)</li>
21081<li>720p (1280 x 720)</li>
21082<li>1080p (1920 x 1080)</li>
21083</ul>
21084<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/>
21085the HAL only has to list up to the maximum video size supported by the devices.<wbr/></p>
21086            </td>
21087          </tr>
21088
21089          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21090           <!-- end of entry -->
21091
21092
21093          <tr class="entry" id="static_android.scaler.availableRawMinDurations">
21094            <td class="entry_name
21095                entry_name_deprecated
21096             " rowspan="3">
21097              android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Min<wbr/>Durations
21098            </td>
21099            <td class="entry_type">
21100                <span class="entry_type_name">int64</span>
21101                <span class="entry_type_container">x</span>
21102
21103                <span class="entry_type_array">
21104                  n
21105                </span>
21106              <span class="entry_type_visibility"> [system]</span>
21107
21108
21109
21110              <span class="entry_type_deprecated">[deprecated] </span>
21111
21112
21113
21114            </td> <!-- entry_type -->
21115
21116            <td class="entry_description">
21117              <p>For each available raw output size (defined in
21118<a href="#static_android.scaler.availableRawSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Sizes</a>),<wbr/> this property lists the minimum
21119supportable frame duration for that size.<wbr/></p>
21120            </td>
21121
21122            <td class="entry_units">
21123              Nanoseconds
21124            </td>
21125
21126            <td class="entry_range">
21127              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
21128            </td>
21129
21130            <td class="entry_hal_version">
21131              <p>3.<wbr/>2</p>
21132            </td>
21133
21134            <td class="entry_tags">
21135              <ul class="entry_tags">
21136                  <li><a href="#tag_BC">BC</a></li>
21137              </ul>
21138            </td>
21139
21140          </tr>
21141          <tr class="entries_header">
21142            <th class="th_details" colspan="6">Details</th>
21143          </tr>
21144          <tr class="entry_cont">
21145            <td class="entry_details" colspan="6">
21146              <p>Should correspond to the frame duration when only the raw stream is
21147active.<wbr/></p>
21148<p>When multiple streams are configured,<wbr/> the minimum
21149frame duration will be &gt;= max(individual stream min
21150durations)</p>
21151            </td>
21152          </tr>
21153
21154
21155          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21156           <!-- end of entry -->
21157
21158
21159          <tr class="entry" id="static_android.scaler.availableRawSizes">
21160            <td class="entry_name
21161                entry_name_deprecated
21162             " rowspan="1">
21163              android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Sizes
21164            </td>
21165            <td class="entry_type">
21166                <span class="entry_type_name">int32</span>
21167                <span class="entry_type_container">x</span>
21168
21169                <span class="entry_type_array">
21170                  n x 2
21171                </span>
21172              <span class="entry_type_visibility"> [system as size]</span>
21173
21174
21175
21176              <span class="entry_type_deprecated">[deprecated] </span>
21177
21178
21179
21180            </td> <!-- entry_type -->
21181
21182            <td class="entry_description">
21183              <p>The resolutions available for use with raw
21184sensor output streams,<wbr/> listed as width,<wbr/>
21185height</p>
21186            </td>
21187
21188            <td class="entry_units">
21189            </td>
21190
21191            <td class="entry_range">
21192              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
21193            </td>
21194
21195            <td class="entry_hal_version">
21196              <p>3.<wbr/>2</p>
21197            </td>
21198
21199            <td class="entry_tags">
21200            </td>
21201
21202          </tr>
21203
21204
21205          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21206           <!-- end of entry -->
21207
21208
21209          <tr class="entry" id="static_android.scaler.availableInputOutputFormatsMap">
21210            <td class="entry_name
21211             " rowspan="5">
21212              android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map
21213            </td>
21214            <td class="entry_type">
21215                <span class="entry_type_name">int32</span>
21216
21217              <span class="entry_type_visibility"> [hidden as reprocessFormatsMap]</span>
21218
21219
21220
21221
21222
21223
21224            </td> <!-- entry_type -->
21225
21226            <td class="entry_description">
21227              <p>The mapping of image formats that are supported by this
21228camera device for input streams,<wbr/> to their corresponding output formats.<wbr/></p>
21229            </td>
21230
21231            <td class="entry_units">
21232            </td>
21233
21234            <td class="entry_range">
21235            </td>
21236
21237            <td class="entry_hal_version">
21238              <p>3.<wbr/>2</p>
21239            </td>
21240
21241            <td class="entry_tags">
21242              <ul class="entry_tags">
21243                  <li><a href="#tag_REPROC">REPROC</a></li>
21244              </ul>
21245            </td>
21246
21247          </tr>
21248          <tr class="entries_header">
21249            <th class="th_details" colspan="6">Details</th>
21250          </tr>
21251          <tr class="entry_cont">
21252            <td class="entry_details" colspan="6">
21253              <p>All camera devices with at least 1
21254<a href="#static_android.request.maxNumInputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Input<wbr/>Streams</a> will have at least one
21255available input format.<wbr/></p>
21256<p>The camera device will support the following map of formats,<wbr/>
21257if its dependent capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>) is supported:</p>
21258<table>
21259<thead>
21260<tr>
21261<th align="left">Input Format</th>
21262<th align="left">Output Format</th>
21263<th align="left">Capability</th>
21264</tr>
21265</thead>
21266<tbody>
21267<tr>
21268<td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td>
21269<td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
21270<td align="left">PRIVATE_<wbr/>REPROCESSING</td>
21271</tr>
21272<tr>
21273<td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td>
21274<td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a></td>
21275<td align="left">PRIVATE_<wbr/>REPROCESSING</td>
21276</tr>
21277<tr>
21278<td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a></td>
21279<td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
21280<td align="left">YUV_<wbr/>REPROCESSING</td>
21281</tr>
21282<tr>
21283<td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a></td>
21284<td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a></td>
21285<td align="left">YUV_<wbr/>REPROCESSING</td>
21286</tr>
21287</tbody>
21288</table>
21289<p>PRIVATE refers to a device-internal format that is not directly application-visible.<wbr/>  A
21290PRIVATE input surface can be acquired by <a href="https://developer.android.com/reference/android/media/ImageReader.html#newInstance">ImageReader#newInstance</a>
21291with <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> as the format.<wbr/></p>
21292<p>For a PRIVATE_<wbr/>REPROCESSING-capable camera device,<wbr/> using the PRIVATE format as either input
21293or 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>
21294<p>Attempting to configure an input stream with output streams not
21295listed as available in this map is not valid.<wbr/></p>
21296<p>Additionally,<wbr/> if the camera device is MONOCHROME with Y8 support,<wbr/> it will also support
21297the following map of formats if its dependent capability
21298(<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>) is supported:</p>
21299<table>
21300<thead>
21301<tr>
21302<th align="left">Input Format</th>
21303<th align="left">Output Format</th>
21304<th align="left">Capability</th>
21305</tr>
21306</thead>
21307<tbody>
21308<tr>
21309<td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td>
21310<td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#Y8">ImageFormat#Y8</a></td>
21311<td align="left">PRIVATE_<wbr/>REPROCESSING</td>
21312</tr>
21313<tr>
21314<td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#Y8">ImageFormat#Y8</a></td>
21315<td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
21316<td align="left">YUV_<wbr/>REPROCESSING</td>
21317</tr>
21318<tr>
21319<td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#Y8">ImageFormat#Y8</a></td>
21320<td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#Y8">ImageFormat#Y8</a></td>
21321<td align="left">YUV_<wbr/>REPROCESSING</td>
21322</tr>
21323</tbody>
21324</table>
21325            </td>
21326          </tr>
21327
21328          <tr class="entries_header">
21329            <th class="th_details" colspan="6">HAL Implementation Details</th>
21330          </tr>
21331          <tr class="entry_cont">
21332            <td class="entry_details" colspan="6">
21333              <p>For the formats,<wbr/> see <code>system/<wbr/>core/<wbr/>libsystem/<wbr/>include/<wbr/>system/<wbr/>graphics-base.<wbr/>h</code> for a
21334definition of the image format enumerations.<wbr/> The PRIVATE format refers to the
21335HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>IMPLEMENTATION_<wbr/>DEFINED format.<wbr/> The HAL could determine
21336the actual format by using the gralloc usage flags.<wbr/>
21337For ZSL use case in particular,<wbr/> the HAL could choose appropriate format (partially
21338processed YUV or RAW based format) by checking the format and GRALLOC_<wbr/>USAGE_<wbr/>HW_<wbr/>CAMERA_<wbr/>ZSL.<wbr/>
21339See camera3.<wbr/>h for more details.<wbr/></p>
21340<p>This value is encoded as a variable-size array-of-arrays.<wbr/>
21341The inner array always contains <code>[format,<wbr/> length,<wbr/> ...<wbr/>]</code> where
21342<code>...<wbr/></code> has <code>length</code> elements.<wbr/> An inner array is followed by another
21343inner array if the total metadata entry size hasn't yet been exceeded.<wbr/></p>
21344<p>A code sample to read/<wbr/>write this encoding (with a device that
21345supports reprocessing IMPLEMENTATION_<wbr/>DEFINED to YUV_<wbr/>420_<wbr/>888,<wbr/> and JPEG,<wbr/>
21346and reprocessing YUV_<wbr/>420_<wbr/>888 to YUV_<wbr/>420_<wbr/>888 and JPEG):</p>
21347<pre><code>//<wbr/> reading
21348int32_<wbr/>t* contents = &amp;entry.<wbr/>i32[0];
21349for (size_<wbr/>t i = 0; i &lt; entry.<wbr/>count; ) {
21350    int32_<wbr/>t format = contents[i++];
21351    int32_<wbr/>t length = contents[i++];
21352    int32_<wbr/>t output_<wbr/>formats[length];
21353    memcpy(&amp;output_<wbr/>formats[0],<wbr/> &amp;contents[i],<wbr/>
21354           length * sizeof(int32_<wbr/>t));
21355    i += length;
21356}
21357
21358//<wbr/> writing (static example,<wbr/> PRIVATE_<wbr/>REPROCESSING + YUV_<wbr/>REPROCESSING)
21359int32_<wbr/>t[] contents = {
21360  IMPLEMENTATION_<wbr/>DEFINED,<wbr/> 2,<wbr/> YUV_<wbr/>420_<wbr/>888,<wbr/> BLOB,<wbr/>
21361  YUV_<wbr/>420_<wbr/>888,<wbr/> 2,<wbr/> YUV_<wbr/>420_<wbr/>888,<wbr/> BLOB,<wbr/>
21362};
21363update_<wbr/>camera_<wbr/>metadata_<wbr/>entry(metadata,<wbr/> index,<wbr/> &amp;contents[0],<wbr/>
21364      sizeof(contents)/<wbr/>sizeof(contents[0]),<wbr/> &amp;updated_<wbr/>entry);
21365</code></pre>
21366<p>If the HAL claims to support any of the capabilities listed in the
21367above details,<wbr/> then it must also support all the input-output
21368combinations listed for that capability.<wbr/> It can optionally support
21369additional formats if it so chooses.<wbr/></p>
21370            </td>
21371          </tr>
21372
21373          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21374           <!-- end of entry -->
21375
21376
21377          <tr class="entry" id="static_android.scaler.availableStreamConfigurations">
21378            <td class="entry_name
21379             " rowspan="5">
21380              android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations
21381            </td>
21382            <td class="entry_type">
21383                <span class="entry_type_name entry_type_name_enum">int32</span>
21384                <span class="entry_type_container">x</span>
21385
21386                <span class="entry_type_array">
21387                  n x 4
21388                </span>
21389              <span class="entry_type_visibility"> [ndk_public as streamConfiguration]</span>
21390
21391
21392              <span class="entry_type_hwlevel">[legacy] </span>
21393
21394
21395
21396                <ul class="entry_type_enum">
21397                  <li>
21398                    <span class="entry_type_enum_name">OUTPUT (v3.2)</span>
21399                  </li>
21400                  <li>
21401                    <span class="entry_type_enum_name">INPUT (v3.2)</span>
21402                  </li>
21403                </ul>
21404
21405            </td> <!-- entry_type -->
21406
21407            <td class="entry_description">
21408              <p>The available stream configurations that this
21409camera device supports
21410(i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p>
21411            </td>
21412
21413            <td class="entry_units">
21414            </td>
21415
21416            <td class="entry_range">
21417            </td>
21418
21419            <td class="entry_hal_version">
21420              <p>3.<wbr/>2</p>
21421            </td>
21422
21423            <td class="entry_tags">
21424            </td>
21425
21426          </tr>
21427          <tr class="entries_header">
21428            <th class="th_details" colspan="6">Details</th>
21429          </tr>
21430          <tr class="entry_cont">
21431            <td class="entry_details" colspan="6">
21432              <p>The configurations are listed as <code>(format,<wbr/> width,<wbr/> height,<wbr/> input?)</code>
21433tuples.<wbr/></p>
21434<p>For a given use case,<wbr/> the actual maximum supported resolution
21435may be lower than what is listed here,<wbr/> depending on the destination
21436Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/>
21437the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p)
21438smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448)
21439can provide.<wbr/></p>
21440<p>Please reference the documentation for the image data destination to
21441check if it limits the maximum size for image data.<wbr/></p>
21442<p>Not all output formats may be supported in a configuration with
21443an input stream of a particular format.<wbr/> For more details,<wbr/> see
21444<a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a>.<wbr/></p>
21445<p>For applications targeting SDK version older than 31,<wbr/> the following table
21446describes the minimum required output stream configurations based on the hardware level
21447(<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>):</p>
21448<table>
21449<thead>
21450<tr>
21451<th align="center">Format</th>
21452<th align="center">Size</th>
21453<th align="center">Hardware Level</th>
21454<th align="center">Notes</th>
21455</tr>
21456</thead>
21457<tbody>
21458<tr>
21459<td align="center">JPEG</td>
21460<td align="center"><a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></td>
21461<td align="center">Any</td>
21462<td align="center"></td>
21463</tr>
21464<tr>
21465<td align="center">JPEG</td>
21466<td align="center">1920x1080 (1080p)</td>
21467<td align="center">Any</td>
21468<td align="center">if 1080p &lt;= activeArraySize</td>
21469</tr>
21470<tr>
21471<td align="center">JPEG</td>
21472<td align="center">1280x720 (720)</td>
21473<td align="center">Any</td>
21474<td align="center">if 720p &lt;= activeArraySize</td>
21475</tr>
21476<tr>
21477<td align="center">JPEG</td>
21478<td align="center">640x480 (480p)</td>
21479<td align="center">Any</td>
21480<td align="center">if 480p &lt;= activeArraySize</td>
21481</tr>
21482<tr>
21483<td align="center">JPEG</td>
21484<td align="center">320x240 (240p)</td>
21485<td align="center">Any</td>
21486<td align="center">if 240p &lt;= activeArraySize</td>
21487</tr>
21488<tr>
21489<td align="center">YUV_<wbr/>420_<wbr/>888</td>
21490<td align="center">all output sizes available for JPEG</td>
21491<td align="center">FULL</td>
21492<td align="center"></td>
21493</tr>
21494<tr>
21495<td align="center">YUV_<wbr/>420_<wbr/>888</td>
21496<td align="center">all output sizes available for JPEG,<wbr/> up to the maximum video size</td>
21497<td align="center">LIMITED</td>
21498<td align="center"></td>
21499</tr>
21500<tr>
21501<td align="center">IMPLEMENTATION_<wbr/>DEFINED</td>
21502<td align="center">same as YUV_<wbr/>420_<wbr/>888</td>
21503<td align="center">Any</td>
21504<td align="center"></td>
21505</tr>
21506</tbody>
21507</table>
21508<p>For applications targeting SDK version 31 or newer,<wbr/> if the mobile device declares to be
21509media performance class 12 or higher by setting
21510<a href="https://developer.android.com/reference/android/os/Build/VERSION_CDOES/MEDIA_PERFORMANCE_CLASS.html">MEDIA_<wbr/>PERFORMANCE_<wbr/>CLASS</a> to be 31 or larger,<wbr/>
21511the primary camera devices (first rear/<wbr/>front camera in the camera ID list) will not
21512support JPEG sizes smaller than 1080p.<wbr/> If the application configures a JPEG stream
21513smaller than 1080p,<wbr/> the camera device will round up the JPEG image size to at least
215141080p.<wbr/> The requirements for IMPLEMENTATION_<wbr/>DEFINED and YUV_<wbr/>420_<wbr/>888 stay the same.<wbr/>
21515This new minimum required output stream configurations are illustrated by the table below:</p>
21516<table>
21517<thead>
21518<tr>
21519<th align="center">Format</th>
21520<th align="center">Size</th>
21521<th align="center">Hardware Level</th>
21522<th align="center">Notes</th>
21523</tr>
21524</thead>
21525<tbody>
21526<tr>
21527<td align="center">JPEG</td>
21528<td align="center"><a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></td>
21529<td align="center">Any</td>
21530<td align="center"></td>
21531</tr>
21532<tr>
21533<td align="center">JPEG</td>
21534<td align="center">1920x1080 (1080p)</td>
21535<td align="center">Any</td>
21536<td align="center">if 1080p &lt;= activeArraySize</td>
21537</tr>
21538<tr>
21539<td align="center">YUV_<wbr/>420_<wbr/>888</td>
21540<td align="center"><a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></td>
21541<td align="center">FULL</td>
21542<td align="center"></td>
21543</tr>
21544<tr>
21545<td align="center">YUV_<wbr/>420_<wbr/>888</td>
21546<td align="center">1920x1080 (1080p)</td>
21547<td align="center">FULL</td>
21548<td align="center">if 1080p &lt;= activeArraySize</td>
21549</tr>
21550<tr>
21551<td align="center">YUV_<wbr/>420_<wbr/>888</td>
21552<td align="center">1280x720 (720)</td>
21553<td align="center">FULL</td>
21554<td align="center">if 720p &lt;= activeArraySize</td>
21555</tr>
21556<tr>
21557<td align="center">YUV_<wbr/>420_<wbr/>888</td>
21558<td align="center">640x480 (480p)</td>
21559<td align="center">FULL</td>
21560<td align="center">if 480p &lt;= activeArraySize</td>
21561</tr>
21562<tr>
21563<td align="center">YUV_<wbr/>420_<wbr/>888</td>
21564<td align="center">320x240 (240p)</td>
21565<td align="center">FULL</td>
21566<td align="center">if 240p &lt;= activeArraySize</td>
21567</tr>
21568<tr>
21569<td align="center">YUV_<wbr/>420_<wbr/>888</td>
21570<td align="center">all output sizes available for FULL hardware level,<wbr/> up to the maximum video size</td>
21571<td align="center">LIMITED</td>
21572<td align="center"></td>
21573</tr>
21574<tr>
21575<td align="center">IMPLEMENTATION_<wbr/>DEFINED</td>
21576<td align="center">same as YUV_<wbr/>420_<wbr/>888</td>
21577<td align="center">Any</td>
21578<td align="center"></td>
21579</tr>
21580</tbody>
21581</table>
21582<p>For applications targeting SDK version 31 or newer,<wbr/> if the mobile device doesn't declare
21583to be media performance class 12 or better by setting
21584<a href="https://developer.android.com/reference/android/os/Build/VERSION_CDOES/MEDIA_PERFORMANCE_CLASS.html">MEDIA_<wbr/>PERFORMANCE_<wbr/>CLASS</a> to be 31 or larger,<wbr/>
21585or if the camera device isn't a primary rear/<wbr/>front camera,<wbr/> the minimum required output
21586stream configurations are the same as for applications targeting SDK version older than
2158731.<wbr/></p>
21588<p>Refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> for additional
21589mandatory stream configurations on a per-capability basis.<wbr/></p>
21590<p>Exception on 176x144 (QCIF) resolution: camera devices usually have a fixed capability for
21591downscaling from larger resolution to smaller,<wbr/> and the QCIF resolution sometimes is not
21592fully supported due to this limitation on devices with high-resolution image sensors.<wbr/>
21593Therefore,<wbr/> trying to configure a QCIF resolution stream together with any other
21594stream larger than 1920x1080 resolution (either width or height) might not be supported,<wbr/>
21595and capture session creation will fail if it is not.<wbr/></p>
21596            </td>
21597          </tr>
21598
21599          <tr class="entries_header">
21600            <th class="th_details" colspan="6">HAL Implementation Details</th>
21601          </tr>
21602          <tr class="entry_cont">
21603            <td class="entry_details" colspan="6">
21604              <p>It is recommended (but not mandatory) to also include half/<wbr/>quarter
21605of sensor maximum resolution for JPEG formats (regardless of hardware
21606level).<wbr/></p>
21607<p>(The following is a rewording of the above required table):</p>
21608<p>For JPEG format,<wbr/> the sizes may be restricted by below conditions:</p>
21609<ul>
21610<li>The HAL may choose the aspect ratio of each Jpeg size to be one of well known ones
21611(e.<wbr/>g.<wbr/> 4:3,<wbr/> 16:9,<wbr/> 3:2 etc.<wbr/>).<wbr/> If the sensor maximum resolution
21612(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/>
21613it does not have to be included in the supported JPEG sizes.<wbr/></li>
21614<li>Some hardware JPEG encoders may have pixel boundary alignment requirements,<wbr/> such as
21615the dimensions being a multiple of 16.<wbr/></li>
21616</ul>
21617<p>Therefore,<wbr/> the maximum JPEG size may be smaller than sensor maximum resolution.<wbr/>
21618However,<wbr/> the largest JPEG size must be as close as possible to the sensor maximum
21619resolution given above constraints.<wbr/> It is required that after aspect ratio adjustments,<wbr/>
21620additional size reduction due to other issues must be less than 3% in area.<wbr/> For example,<wbr/>
21621if the sensor maximum resolution is 3280x2464,<wbr/> if the maximum JPEG size has aspect
21622ratio 4:3,<wbr/> the JPEG encoder alignment requirement is 16,<wbr/> the maximum JPEG size will be
216233264x2448.<wbr/></p>
21624<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/>
21625the HAL must include all YUV_<wbr/>420_<wbr/>888 sizes that have JPEG sizes listed
21626here as output streams.<wbr/></p>
21627<p>It must also include each below resolution if it is smaller than or
21628equal to the sensor maximum resolution (for both YUV_<wbr/>420_<wbr/>888 and JPEG
21629formats),<wbr/> as output streams:</p>
21630<ul>
21631<li>240p (320 x 240)</li>
21632<li>480p (640 x 480)</li>
21633<li>720p (1280 x 720)</li>
21634<li>1080p (1920 x 1080)</li>
21635</ul>
21636<p>Note that for primary cameras (first rear/<wbr/>front facing camera in the camera ID list)
21637on a device with <a href="https://developer.android.com/reference/android/os/Build/VERSION_CDOES/MEDIA_PERFORMANCE_CLASS.html">MEDIA_<wbr/>PERFORMANCE_<wbr/>CLASS</a> set to
2163831 or larger,<wbr/> camera framework filters out JPEG sizes smaller than 1080p depending on
21639applications' targetSdkLevel.<wbr/> The camera HAL must still support the smaller JPEG sizes
21640to maintain backward compatibility.<wbr/></p>
21641<p>For LIMITED capability devices
21642(<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == LIMITED</code>),<wbr/>
21643the HAL only has to list up to the maximum video size
21644supported by the device.<wbr/></p>
21645<p>Regardless of hardware level,<wbr/> every output resolution available for
21646YUV_<wbr/>420_<wbr/>888 must also be available for IMPLEMENTATION_<wbr/>DEFINED.<wbr/></p>
21647<p>This supercedes the following fields,<wbr/> which are now deprecated:</p>
21648<ul>
21649<li>availableFormats</li>
21650<li>available[Processed,<wbr/>Raw,<wbr/>Jpeg]Sizes</li>
21651</ul>
21652            </td>
21653          </tr>
21654
21655          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21656           <!-- end of entry -->
21657
21658
21659          <tr class="entry" id="static_android.scaler.availableMinFrameDurations">
21660            <td class="entry_name
21661             " rowspan="3">
21662              android.<wbr/>scaler.<wbr/>available<wbr/>Min<wbr/>Frame<wbr/>Durations
21663            </td>
21664            <td class="entry_type">
21665                <span class="entry_type_name">int64</span>
21666                <span class="entry_type_container">x</span>
21667
21668                <span class="entry_type_array">
21669                  4 x n
21670                </span>
21671              <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
21672
21673
21674              <span class="entry_type_hwlevel">[legacy] </span>
21675
21676
21677
21678
21679            </td> <!-- entry_type -->
21680
21681            <td class="entry_description">
21682              <p>This lists the minimum frame duration for each
21683format/<wbr/>size combination.<wbr/></p>
21684            </td>
21685
21686            <td class="entry_units">
21687              (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
21688            </td>
21689
21690            <td class="entry_range">
21691            </td>
21692
21693            <td class="entry_hal_version">
21694              <p>3.<wbr/>2</p>
21695            </td>
21696
21697            <td class="entry_tags">
21698              <ul class="entry_tags">
21699                  <li><a href="#tag_V1">V1</a></li>
21700              </ul>
21701            </td>
21702
21703          </tr>
21704          <tr class="entries_header">
21705            <th class="th_details" colspan="6">Details</th>
21706          </tr>
21707          <tr class="entry_cont">
21708            <td class="entry_details" colspan="6">
21709              <p>This should correspond to the frame duration when only that
21710stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode)
21711set to either OFF or FAST.<wbr/></p>
21712<p>When multiple streams are used in a request,<wbr/> the minimum frame
21713duration will be max(individual stream min durations).<wbr/></p>
21714<p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> and
21715<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for more details about
21716calculating the max frame rate.<wbr/></p>
21717            </td>
21718          </tr>
21719
21720
21721          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21722           <!-- end of entry -->
21723
21724
21725          <tr class="entry" id="static_android.scaler.availableStallDurations">
21726            <td class="entry_name
21727             " rowspan="5">
21728              android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations
21729            </td>
21730            <td class="entry_type">
21731                <span class="entry_type_name">int64</span>
21732                <span class="entry_type_container">x</span>
21733
21734                <span class="entry_type_array">
21735                  4 x n
21736                </span>
21737              <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
21738
21739
21740              <span class="entry_type_hwlevel">[legacy] </span>
21741
21742
21743
21744
21745            </td> <!-- entry_type -->
21746
21747            <td class="entry_description">
21748              <p>This lists the maximum stall duration for each
21749output format/<wbr/>size combination.<wbr/></p>
21750            </td>
21751
21752            <td class="entry_units">
21753              (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
21754            </td>
21755
21756            <td class="entry_range">
21757            </td>
21758
21759            <td class="entry_hal_version">
21760              <p>3.<wbr/>2</p>
21761            </td>
21762
21763            <td class="entry_tags">
21764              <ul class="entry_tags">
21765                  <li><a href="#tag_V1">V1</a></li>
21766              </ul>
21767            </td>
21768
21769          </tr>
21770          <tr class="entries_header">
21771            <th class="th_details" colspan="6">Details</th>
21772          </tr>
21773          <tr class="entry_cont">
21774            <td class="entry_details" colspan="6">
21775              <p>A stall duration is how much extra time would get added
21776to the normal minimum frame duration for a repeating request
21777that has streams with non-zero stall.<wbr/></p>
21778<p>For example,<wbr/> consider JPEG captures which have the following
21779characteristics:</p>
21780<ul>
21781<li>JPEG streams act like processed YUV streams in requests for which
21782they are not included; in requests in which they are directly
21783referenced,<wbr/> they act as JPEG streams.<wbr/> This is because supporting a
21784JPEG stream requires the underlying YUV data to always be ready for
21785use by a JPEG encoder,<wbr/> but the encoder will only be used (and impact
21786frame duration) on requests that actually reference a JPEG stream.<wbr/></li>
21787<li>The JPEG processor can run concurrently to the rest of the camera
21788pipeline,<wbr/> but cannot process more than 1 capture at a time.<wbr/></li>
21789</ul>
21790<p>In other words,<wbr/> using a repeating YUV request would result
21791in a steady frame rate (let's say it's 30 FPS).<wbr/> If a single
21792JPEG request is submitted periodically,<wbr/> the frame rate will stay
21793at 30 FPS (as long as we wait for the previous JPEG to return each
21794time).<wbr/> If we try to submit a repeating YUV + JPEG request,<wbr/> then
21795the frame rate will drop from 30 FPS.<wbr/></p>
21796<p>In general,<wbr/> submitting a new request with a non-0 stall time
21797stream will <em>not</em> cause a frame rate drop unless there are still
21798outstanding buffers for that stream from previous requests.<wbr/></p>
21799<p>Submitting a repeating request with streams (call this <code>S</code>)
21800is the same as setting the minimum frame duration from
21801the normal minimum frame duration corresponding to <code>S</code>,<wbr/> added with
21802the maximum stall duration for <code>S</code>.<wbr/></p>
21803<p>If interleaving requests with and without a stall duration,<wbr/>
21804a request will stall by the maximum of the remaining times
21805for each can-stall stream with outstanding buffers.<wbr/></p>
21806<p>This means that a stalling request will not have an exposure start
21807until the stall has completed.<wbr/></p>
21808<p>This should correspond to the stall duration when only that stream is
21809active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode) set to FAST
21810or OFF.<wbr/> Setting any of the processing modes to HIGH_<wbr/>QUALITY
21811effectively results in an indeterminate stall duration for all
21812streams in a request (the regular stall calculation rules are
21813ignored).<wbr/></p>
21814<p>The following formats may always have a stall duration:</p>
21815<ul>
21816<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></li>
21817<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_SENSOR">ImageFormat#RAW_<wbr/>SENSOR</a></li>
21818</ul>
21819<p>The following formats will never have a stall duration:</p>
21820<ul>
21821<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>
21822<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW10">ImageFormat#RAW10</a></li>
21823<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW12">ImageFormat#RAW12</a></li>
21824<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#Y8">ImageFormat#Y8</a></li>
21825</ul>
21826<p>All other formats may or may not have an allowed stall duration on
21827a per-capability basis; refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>
21828for more details.<wbr/></p>
21829<p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> for more information about
21830calculating the max frame rate (absent stalls).<wbr/></p>
21831            </td>
21832          </tr>
21833
21834          <tr class="entries_header">
21835            <th class="th_details" colspan="6">HAL Implementation Details</th>
21836          </tr>
21837          <tr class="entry_cont">
21838            <td class="entry_details" colspan="6">
21839              <p>If possible,<wbr/> it is recommended that all non-JPEG formats
21840(such as RAW16) should not have a stall duration.<wbr/> RAW10,<wbr/> RAW12,<wbr/> RAW_<wbr/>OPAQUE
21841and IMPLEMENTATION_<wbr/>DEFINED must not have stall durations.<wbr/></p>
21842            </td>
21843          </tr>
21844
21845          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21846           <!-- end of entry -->
21847
21848
21849          <tr class="entry" id="static_android.scaler.streamConfigurationMap">
21850            <td class="entry_name
21851             " rowspan="5">
21852              android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map
21853            </td>
21854            <td class="entry_type">
21855                <span class="entry_type_name">int32</span>
21856
21857              <span class="entry_type_visibility"> [java_public as streamConfigurationMap]</span>
21858
21859              <span class="entry_type_synthetic">[synthetic] </span>
21860
21861              <span class="entry_type_hwlevel">[legacy] </span>
21862
21863
21864
21865
21866            </td> <!-- entry_type -->
21867
21868            <td class="entry_description">
21869              <p>The available stream configurations that this
21870camera device supports; also includes the minimum frame durations
21871and the stall durations for each format/<wbr/>size combination.<wbr/></p>
21872            </td>
21873
21874            <td class="entry_units">
21875            </td>
21876
21877            <td class="entry_range">
21878            </td>
21879
21880            <td class="entry_hal_version">
21881              <p>3.<wbr/>2</p>
21882            </td>
21883
21884            <td class="entry_tags">
21885            </td>
21886
21887          </tr>
21888          <tr class="entries_header">
21889            <th class="th_details" colspan="6">Details</th>
21890          </tr>
21891          <tr class="entry_cont">
21892            <td class="entry_details" colspan="6">
21893              <p>All camera devices will support sensor maximum resolution (defined by
21894<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>
21895<p>For a given use case,<wbr/> the actual maximum supported resolution
21896may be lower than what is listed here,<wbr/> depending on the destination
21897Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/>
21898the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p)
21899smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448)
21900can provide.<wbr/></p>
21901<p>Please reference the documentation for the image data destination to
21902check if it limits the maximum size for image data.<wbr/></p>
21903<p>The following table describes the minimum required output stream
21904configurations based on the hardware level
21905(<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>):</p>
21906<table>
21907<thead>
21908<tr>
21909<th align="center">Format</th>
21910<th align="center">Size</th>
21911<th align="center">Hardware Level</th>
21912<th align="center">Notes</th>
21913</tr>
21914</thead>
21915<tbody>
21916<tr>
21917<td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
21918<td align="center"><a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> (*1)</td>
21919<td align="center">Any</td>
21920<td align="center"></td>
21921</tr>
21922<tr>
21923<td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
21924<td align="center">1920x1080 (1080p)</td>
21925<td align="center">Any</td>
21926<td align="center">if 1080p &lt;= activeArraySize</td>
21927</tr>
21928<tr>
21929<td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
21930<td align="center">1280x720 (720p)</td>
21931<td align="center">Any</td>
21932<td align="center">if 720p &lt;= activeArraySize</td>
21933</tr>
21934<tr>
21935<td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
21936<td align="center">640x480 (480p)</td>
21937<td align="center">Any</td>
21938<td align="center">if 480p &lt;= activeArraySize</td>
21939</tr>
21940<tr>
21941<td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
21942<td align="center">320x240 (240p)</td>
21943<td align="center">Any</td>
21944<td align="center">if 240p &lt;= activeArraySize</td>
21945</tr>
21946<tr>
21947<td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a></td>
21948<td align="center">all output sizes available for JPEG</td>
21949<td align="center">FULL</td>
21950<td align="center"></td>
21951</tr>
21952<tr>
21953<td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a></td>
21954<td align="center">all output sizes available for JPEG,<wbr/> up to the maximum video size</td>
21955<td align="center">LIMITED</td>
21956<td align="center"></td>
21957</tr>
21958<tr>
21959<td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td>
21960<td align="center">same as YUV_<wbr/>420_<wbr/>888</td>
21961<td align="center">Any</td>
21962<td align="center"></td>
21963</tr>
21964</tbody>
21965</table>
21966<p>Refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> and <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">CameraDevice#createCaptureSession</a> for additional mandatory
21967stream configurations on a per-capability basis.<wbr/></p>
21968<p>*1: For JPEG format,<wbr/> the sizes may be restricted by below conditions:</p>
21969<ul>
21970<li>The HAL may choose the aspect ratio of each Jpeg size to be one of well known ones
21971(e.<wbr/>g.<wbr/> 4:3,<wbr/> 16:9,<wbr/> 3:2 etc.<wbr/>).<wbr/> If the sensor maximum resolution
21972(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/>
21973it does not have to be included in the supported JPEG sizes.<wbr/></li>
21974<li>Some hardware JPEG encoders may have pixel boundary alignment requirements,<wbr/> such as
21975the dimensions being a multiple of 16.<wbr/>
21976Therefore,<wbr/> the maximum JPEG size may be smaller than sensor maximum resolution.<wbr/>
21977However,<wbr/> the largest JPEG size will be as close as possible to the sensor maximum
21978resolution given above constraints.<wbr/> It is required that after aspect ratio adjustments,<wbr/>
21979additional size reduction due to other issues must be less than 3% in area.<wbr/> For example,<wbr/>
21980if the sensor maximum resolution is 3280x2464,<wbr/> if the maximum JPEG size has aspect
21981ratio 4:3,<wbr/> and the JPEG encoder alignment requirement is 16,<wbr/> the maximum JPEG size will be
219823264x2448.<wbr/></li>
21983</ul>
21984<p>Exception on 176x144 (QCIF) resolution: camera devices usually have a fixed capability on
21985downscaling from larger resolution to smaller ones,<wbr/> and the QCIF resolution can sometimes
21986not be fully supported due to this limitation on devices with high-resolution image
21987sensors.<wbr/> Therefore,<wbr/> trying to configure a QCIF resolution stream together with any other
21988stream larger than 1920x1080 resolution (either width or height) might not be supported,<wbr/>
21989and capture session creation will fail if it is not.<wbr/></p>
21990            </td>
21991          </tr>
21992
21993          <tr class="entries_header">
21994            <th class="th_details" colspan="6">HAL Implementation Details</th>
21995          </tr>
21996          <tr class="entry_cont">
21997            <td class="entry_details" colspan="6">
21998              <p>Do not set this property directly
21999(it is synthetic and will not be available at the HAL layer);
22000set the <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> instead.<wbr/></p>
22001<p>Not all output formats may be supported in a configuration with
22002an input stream of a particular format.<wbr/> For more details,<wbr/> see
22003<a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a>.<wbr/></p>
22004<p>It is recommended (but not mandatory) to also include half/<wbr/>quarter
22005of sensor maximum resolution for JPEG formats (regardless of hardware
22006level).<wbr/></p>
22007<p>(The following is a rewording of the above required table):</p>
22008<p>The HAL must include sensor maximum resolution (defined by
22009<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>).<wbr/></p>
22010<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/>
22011the HAL must include all YUV_<wbr/>420_<wbr/>888 sizes that have JPEG sizes listed
22012here as output streams.<wbr/></p>
22013<p>It must also include each below resolution if it is smaller than or
22014equal to the sensor maximum resolution (for both YUV_<wbr/>420_<wbr/>888 and JPEG
22015formats),<wbr/> as output streams:</p>
22016<ul>
22017<li>240p (320 x 240)</li>
22018<li>480p (640 x 480)</li>
22019<li>720p (1280 x 720)</li>
22020<li>1080p (1920 x 1080)</li>
22021</ul>
22022<p>For LIMITED capability devices
22023(<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == LIMITED</code>),<wbr/>
22024the HAL only has to list up to the maximum video size
22025supported by the device.<wbr/></p>
22026<p>Regardless of hardware level,<wbr/> every output resolution available for
22027YUV_<wbr/>420_<wbr/>888 must also be available for IMPLEMENTATION_<wbr/>DEFINED.<wbr/></p>
22028<p>This supercedes the following fields,<wbr/> which are now deprecated:</p>
22029<ul>
22030<li>availableFormats</li>
22031<li>available[Processed,<wbr/>Raw,<wbr/>Jpeg]Sizes</li>
22032</ul>
22033            </td>
22034          </tr>
22035
22036          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22037           <!-- end of entry -->
22038
22039
22040          <tr class="entry" id="static_android.scaler.croppingType">
22041            <td class="entry_name
22042             " rowspan="5">
22043              android.<wbr/>scaler.<wbr/>cropping<wbr/>Type
22044            </td>
22045            <td class="entry_type">
22046                <span class="entry_type_name entry_type_name_enum">byte</span>
22047
22048              <span class="entry_type_visibility"> [public]</span>
22049
22050
22051              <span class="entry_type_hwlevel">[legacy] </span>
22052
22053
22054
22055                <ul class="entry_type_enum">
22056                  <li>
22057                    <span class="entry_type_enum_name">CENTER_ONLY (v3.2)</span>
22058                    <span class="entry_type_enum_notes"><p>The camera device only supports centered crop regions.<wbr/></p></span>
22059                  </li>
22060                  <li>
22061                    <span class="entry_type_enum_name">FREEFORM (v3.2)</span>
22062                    <span class="entry_type_enum_notes"><p>The camera device supports arbitrarily chosen crop regions.<wbr/></p></span>
22063                  </li>
22064                </ul>
22065
22066            </td> <!-- entry_type -->
22067
22068            <td class="entry_description">
22069              <p>The crop type that this camera device supports.<wbr/></p>
22070            </td>
22071
22072            <td class="entry_units">
22073            </td>
22074
22075            <td class="entry_range">
22076            </td>
22077
22078            <td class="entry_hal_version">
22079              <p>3.<wbr/>2</p>
22080            </td>
22081
22082            <td class="entry_tags">
22083            </td>
22084
22085          </tr>
22086          <tr class="entries_header">
22087            <th class="th_details" colspan="6">Details</th>
22088          </tr>
22089          <tr class="entry_cont">
22090            <td class="entry_details" colspan="6">
22091              <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
22092device that only supports CENTER_<wbr/>ONLY cropping,<wbr/> the camera device will move the
22093crop 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>)
22094and keep the crop region width and height unchanged.<wbr/> The camera device will return the
22095final used crop region in metadata result <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></p>
22096<p>Camera devices that support FREEFORM cropping will support any crop region that
22097is inside of the active array.<wbr/> The camera device will apply the same crop region and
22098return 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>
22099<p>Starting from API level 30,<wbr/></p>
22100<ul>
22101<li>If the camera device supports FREEFORM cropping,<wbr/> in order to do FREEFORM cropping,<wbr/> the
22102application 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>
22103for zoom.<wbr/></li>
22104<li>To do CENTER_<wbr/>ONLY zoom,<wbr/> the application has below 2 options:<ol>
22105<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>
22106<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
22107the field of view vertically (letterboxing) or horizontally (pillarboxing),<wbr/> but not
22108windowboxing.<wbr/></li>
22109</ol>
22110</li>
22111<li>Setting <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> to values different than 1.<wbr/>0 and
22112<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
22113case,<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
22114array.<wbr/></li>
22115</ul>
22116<p>LEGACY capability devices will only support CENTER_<wbr/>ONLY cropping.<wbr/></p>
22117            </td>
22118          </tr>
22119
22120          <tr class="entries_header">
22121            <th class="th_details" colspan="6">HAL Implementation Details</th>
22122          </tr>
22123          <tr class="entry_cont">
22124            <td class="entry_details" colspan="6">
22125              <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>
22126            </td>
22127          </tr>
22128
22129          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22130           <!-- end of entry -->
22131
22132
22133          <tr class="entry" id="static_android.scaler.availableRecommendedStreamConfigurations">
22134            <td class="entry_name
22135             " rowspan="5">
22136              android.<wbr/>scaler.<wbr/>available<wbr/>Recommended<wbr/>Stream<wbr/>Configurations
22137            </td>
22138            <td class="entry_type">
22139                <span class="entry_type_name entry_type_name_enum">int32</span>
22140                <span class="entry_type_container">x</span>
22141
22142                <span class="entry_type_array">
22143                  n x 5
22144                </span>
22145              <span class="entry_type_visibility"> [ndk_public as recommendedStreamConfiguration]</span>
22146
22147
22148
22149
22150
22151                <ul class="entry_type_enum">
22152                  <li>
22153                    <span class="entry_type_enum_name">PREVIEW (v3.4)</span>
22154                    <span class="entry_type_enum_value">0x0</span>
22155                    <span class="entry_type_enum_notes"><p>Preview must only include non-stalling processed stream configurations with
22156output formats like
22157<a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a>,<wbr/>
22158<a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a>,<wbr/> etc.<wbr/></p></span>
22159                  </li>
22160                  <li>
22161                    <span class="entry_type_enum_name">RECORD (v3.4)</span>
22162                    <span class="entry_type_enum_value">0x1</span>
22163                    <span class="entry_type_enum_notes"><p>Video record must include stream configurations that match the advertised
22164supported media profiles <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a> with
22165IMPLEMENTATION_<wbr/>DEFINED format.<wbr/></p></span>
22166                  </li>
22167                  <li>
22168                    <span class="entry_type_enum_name">VIDEO_SNAPSHOT (v3.4)</span>
22169                    <span class="entry_type_enum_value">0x2</span>
22170                    <span class="entry_type_enum_notes"><p>Video snapshot must include stream configurations at least as big as
22171the maximum RECORD resolutions and only with
22172<a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">JPEG output format</a>.<wbr/>
22173Additionally the configurations shouldn't cause preview glitches and also be able to
22174run at 30 fps.<wbr/></p></span>
22175                  </li>
22176                  <li>
22177                    <span class="entry_type_enum_name">SNAPSHOT (v3.4)</span>
22178                    <span class="entry_type_enum_value">0x3</span>
22179                    <span class="entry_type_enum_notes"><p>Recommended snapshot stream configurations must include at least one with
22180size close to <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> and
22181<a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">JPEG output format</a>.<wbr/>
22182Taking into account restrictions on aspect ratio,<wbr/> alignment etc.<wbr/> the area of the
22183maximum suggested size shouldn’t be less than 97% of the sensor array size area.<wbr/></p></span>
22184                  </li>
22185                  <li>
22186                    <span class="entry_type_enum_name">ZSL (v3.4)</span>
22187                    <span class="entry_type_enum_value">0x4</span>
22188                    <span class="entry_type_enum_notes"><p>If supported,<wbr/> recommended input stream configurations must only be advertised with
22189ZSL along with other processed and/<wbr/>or stalling output formats.<wbr/></p></span>
22190                  </li>
22191                  <li>
22192                    <span class="entry_type_enum_name">RAW (v3.4)</span>
22193                    <span class="entry_type_enum_value">0x5</span>
22194                    <span class="entry_type_enum_notes"><p>If supported,<wbr/> recommended raw stream configurations must only include RAW based
22195output formats.<wbr/></p></span>
22196                  </li>
22197                  <li>
22198                    <span class="entry_type_enum_name">LOW_LATENCY_SNAPSHOT (v3.4)</span>
22199                    <span class="entry_type_enum_value">0x6</span>
22200                    <span class="entry_type_enum_notes"><p>If supported,<wbr/> the recommended low latency stream configurations must have
22201end-to-end latency that does not exceed 200 ms.<wbr/> under standard operating conditions
22202(reasonable light levels,<wbr/> not loaded system) and using template
22203TEMPLATE_<wbr/>STILL_<wbr/>CAPTURE.<wbr/> This is primarily for listing configurations for the
22204<a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">JPEG output format</a>
22205however other supported output formats can be added as well.<wbr/></p></span>
22206                  </li>
22207                  <li>
22208                    <span class="entry_type_enum_name">PUBLIC_END (v3.4)</span>
22209                    <span class="entry_type_enum_value">0x7</span>
22210                  </li>
22211                  <li>
22212                    <span class="entry_type_enum_name">VENDOR_START (v3.4)</span>
22213                    <span class="entry_type_enum_value">0x18</span>
22214                    <span class="entry_type_enum_notes"><p>Vendor defined use cases.<wbr/> These depend on the vendor implementation.<wbr/></p></span>
22215                  </li>
22216                </ul>
22217
22218            </td> <!-- entry_type -->
22219
22220            <td class="entry_description">
22221              <p>Recommended stream configurations for common client use cases.<wbr/></p>
22222            </td>
22223
22224            <td class="entry_units">
22225            </td>
22226
22227            <td class="entry_range">
22228            </td>
22229
22230            <td class="entry_hal_version">
22231              <p>3.<wbr/>4</p>
22232            </td>
22233
22234            <td class="entry_tags">
22235            </td>
22236
22237          </tr>
22238          <tr class="entries_header">
22239            <th class="th_details" colspan="6">Details</th>
22240          </tr>
22241          <tr class="entry_cont">
22242            <td class="entry_details" colspan="6">
22243              <p>Optional subset of the <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> that contains
22244similar tuples listed as
22245(i.<wbr/>e.<wbr/> width,<wbr/> height,<wbr/> format,<wbr/> output/<wbr/>input stream,<wbr/> usecase bit field).<wbr/>
22246Camera devices will be able to suggest particular stream configurations which are
22247power and performance efficient for specific use cases.<wbr/> For more information about
22248retrieving the suggestions see
22249<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getRecommendedStreamConfigurationMap">CameraCharacteristics#getRecommendedStreamConfigurationMap</a>.<wbr/></p>
22250            </td>
22251          </tr>
22252
22253          <tr class="entries_header">
22254            <th class="th_details" colspan="6">HAL Implementation Details</th>
22255          </tr>
22256          <tr class="entry_cont">
22257            <td class="entry_details" colspan="6">
22258              <p>There are some requirements that need to be considered regarding the usecases and the
22259suggested configurations:</p>
22260<ul>
22261<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
22262stream configurations must be present for all mandatory usecases PREVIEW,<wbr/>
22263SNAPSHOT,<wbr/> RECORD,<wbr/> VIDEO_<wbr/>SNAPSHOT.<wbr/> ZSL and RAW are
22264required depending on device capabilities see <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></li>
22265<li>Non-existing usecases and non-vendor usecases within the range
22266(RAW : VENDOR_<wbr/>START] are prohibited as well as stream configurations not
22267present in the exhaustive <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> list.<wbr/></li>
22268</ul>
22269<p>For example,<wbr/> in case the camera device supports only 4K and 1080p and both resolutions are
22270recommended for the mandatory usecases except preview which can run efficiently only
22271on 1080p.<wbr/> The array may look like this:</p>
22272<p>[3840,<wbr/> 2160,<wbr/> HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>IMPLEMENTATION_<wbr/>DEFINED,<wbr/>
22273 ANDROID_<wbr/>SCALER_<wbr/>AVAILABLE_<wbr/>STREAM_<wbr/>CONFIGURATIONS_<wbr/>OUTPUT,<wbr/>
22274 (1&lt;&lt; ANDROID_<wbr/>SCALER_<wbr/>AVAILABLE_<wbr/>RECOMMENDED_<wbr/>STREAM_<wbr/>CONFIGURATIONS_<wbr/>RECORD |<wbr/>
22275 1&lt;&lt; ANDROID_<wbr/>SCALER_<wbr/>AVAILABLE_<wbr/>RECOMMENDED_<wbr/>STREAM_<wbr/>CONFIGURATIONS_<wbr/>SNAPSHOT |<wbr/>
22276 1&lt;&lt; ANDROID_<wbr/>SCALER_<wbr/>AVAILABLE_<wbr/>RECOMMENDED_<wbr/>STREAM_<wbr/>CONFIGURATIONS_<wbr/>VIDEO_<wbr/>SNAPSHOT),<wbr/></p>
22277<p>1920,<wbr/> 1080,<wbr/> HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>IMPLEMENTATION_<wbr/>DEFINED,<wbr/>
22278 ANDROID_<wbr/>SCALER_<wbr/>AVAILABLE_<wbr/>STREAM_<wbr/>CONFIGURATIONS_<wbr/>OUTPUT,<wbr/>
22279 (1&lt;&lt; ANDROID_<wbr/>SCALER_<wbr/>AVAILABLE_<wbr/>RECOMMENDED_<wbr/>STREAM_<wbr/>CONFIGURATIONS_<wbr/>PREVIEW |<wbr/>
22280 1&lt;&lt; ANDROID_<wbr/>SCALER_<wbr/>AVAILABLE_<wbr/>RECOMMENDED_<wbr/>STREAM_<wbr/>CONFIGURATIONS_<wbr/>RECORD |<wbr/>
22281 1&lt;&lt; ANDROID_<wbr/>SCALER_<wbr/>AVAILABLE_<wbr/>RECOMMENDED_<wbr/>STREAM_<wbr/>CONFIGURATIONS_<wbr/>SNAPSHOT |<wbr/>
22282 1&lt;&lt; ANDROID_<wbr/>SCALER_<wbr/>AVAILABLE_<wbr/>RECOMMENDED_<wbr/>STREAM_<wbr/>CONFIGURATIONS_<wbr/>VIDEO_<wbr/>SNAPSHOT)]</p>
22283            </td>
22284          </tr>
22285
22286          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22287           <!-- end of entry -->
22288
22289
22290          <tr class="entry" id="static_android.scaler.availableRecommendedInputOutputFormatsMap">
22291            <td class="entry_name
22292             " rowspan="5">
22293              android.<wbr/>scaler.<wbr/>available<wbr/>Recommended<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map
22294            </td>
22295            <td class="entry_type">
22296                <span class="entry_type_name">int32</span>
22297
22298              <span class="entry_type_visibility"> [ndk_public as reprocessFormatsMap]</span>
22299
22300
22301
22302
22303
22304
22305            </td> <!-- entry_type -->
22306
22307            <td class="entry_description">
22308              <p>Recommended mappings of image formats that are supported by this
22309camera device for input streams,<wbr/> to their corresponding output formats.<wbr/></p>
22310            </td>
22311
22312            <td class="entry_units">
22313            </td>
22314
22315            <td class="entry_range">
22316            </td>
22317
22318            <td class="entry_hal_version">
22319              <p>3.<wbr/>4</p>
22320            </td>
22321
22322            <td class="entry_tags">
22323              <ul class="entry_tags">
22324                  <li><a href="#tag_REPROC">REPROC</a></li>
22325              </ul>
22326            </td>
22327
22328          </tr>
22329          <tr class="entries_header">
22330            <th class="th_details" colspan="6">Details</th>
22331          </tr>
22332          <tr class="entry_cont">
22333            <td class="entry_details" colspan="6">
22334              <p>This is a recommended subset of the complete list of mappings found in
22335<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/>
22336The list however doesn't need to contain all available and supported mappings.<wbr/> Instead of
22337this developers must list only recommended and efficient entries.<wbr/>
22338If set,<wbr/> the information will be available in the ZERO_<wbr/>SHUTTER_<wbr/>LAG recommended stream
22339configuration see
22340<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getRecommendedStreamConfigurationMap">CameraCharacteristics#getRecommendedStreamConfigurationMap</a>.<wbr/></p>
22341            </td>
22342          </tr>
22343
22344          <tr class="entries_header">
22345            <th class="th_details" colspan="6">HAL Implementation Details</th>
22346          </tr>
22347          <tr class="entry_cont">
22348            <td class="entry_details" colspan="6">
22349              <p>For a code sample of the required data encoding please check
22350<a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a>.<wbr/></p>
22351            </td>
22352          </tr>
22353
22354          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22355           <!-- end of entry -->
22356
22357
22358          <tr class="entry" id="static_android.scaler.mandatoryStreamCombinations">
22359            <td class="entry_name
22360             " rowspan="5">
22361              android.<wbr/>scaler.<wbr/>mandatory<wbr/>Stream<wbr/>Combinations
22362            </td>
22363            <td class="entry_type">
22364                <span class="entry_type_name">int32</span>
22365                <span class="entry_type_container">x</span>
22366
22367                <span class="entry_type_array">
22368                  n
22369                </span>
22370              <span class="entry_type_visibility"> [java_public as mandatoryStreamCombination]</span>
22371
22372              <span class="entry_type_synthetic">[synthetic] </span>
22373
22374              <span class="entry_type_hwlevel">[limited] </span>
22375
22376
22377
22378
22379            </td> <!-- entry_type -->
22380
22381            <td class="entry_description">
22382              <p>An array of mandatory stream combinations generated according to the camera device
22383<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>
22384and <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/>
22385This is an app-readable conversion of the mandatory stream combination
22386<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">tables</a>.<wbr/></p>
22387            </td>
22388
22389            <td class="entry_units">
22390            </td>
22391
22392            <td class="entry_range">
22393            </td>
22394
22395            <td class="entry_hal_version">
22396              <p>3.<wbr/>2</p>
22397            </td>
22398
22399            <td class="entry_tags">
22400            </td>
22401
22402          </tr>
22403          <tr class="entries_header">
22404            <th class="th_details" colspan="6">Details</th>
22405          </tr>
22406          <tr class="entry_cont">
22407            <td class="entry_details" colspan="6">
22408              <p>The array of
22409<a href="https://developer.android.com/reference/android/hardware/camera2/params/MandatoryStreamCombination.html">combinations</a> is
22410generated according to the documented
22411<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">guideline</a> based on
22412specific device level and capabilities.<wbr/>
22413Clients can use the array as a quick reference to find an appropriate camera stream
22414combination.<wbr/>
22415As per documentation,<wbr/> the stream combinations with given PREVIEW,<wbr/> RECORD and
22416MAXIMUM resolutions and anything smaller from the list given by
22417<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputSizes">StreamConfigurationMap#getOutputSizes</a> are
22418guaranteed to work.<wbr/>
22419For a physical camera not independently exposed in
22420<a href="https://developer.android.com/reference/android/hardware/camera2/CameraManager.html#getCameraIdList">CameraManager#getCameraIdList</a>,<wbr/> the mandatory stream
22421combinations for that physical camera Id are also generated,<wbr/> so that the application can
22422configure them as physical streams via the logical camera.<wbr/>
22423The mandatory stream combination array will be {@code null} in case the device is not
22424backward compatible.<wbr/></p>
22425            </td>
22426          </tr>
22427
22428          <tr class="entries_header">
22429            <th class="th_details" colspan="6">HAL Implementation Details</th>
22430          </tr>
22431          <tr class="entry_cont">
22432            <td class="entry_details" colspan="6">
22433              <p>Do not set this property directly
22434(it is synthetic and will not be available at the HAL layer).<wbr/></p>
22435            </td>
22436          </tr>
22437
22438          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22439           <!-- end of entry -->
22440
22441
22442          <tr class="entry" id="static_android.scaler.mandatoryConcurrentStreamCombinations">
22443            <td class="entry_name
22444             " rowspan="5">
22445              android.<wbr/>scaler.<wbr/>mandatory<wbr/>Concurrent<wbr/>Stream<wbr/>Combinations
22446            </td>
22447            <td class="entry_type">
22448                <span class="entry_type_name">int32</span>
22449                <span class="entry_type_container">x</span>
22450
22451                <span class="entry_type_array">
22452                  n
22453                </span>
22454              <span class="entry_type_visibility"> [java_public as mandatoryStreamCombination]</span>
22455
22456              <span class="entry_type_synthetic">[synthetic] </span>
22457
22458
22459
22460
22461
22462            </td> <!-- entry_type -->
22463
22464            <td class="entry_description">
22465              <p>An array of mandatory concurrent stream combinations.<wbr/>
22466This is an app-readable conversion of the concurrent mandatory stream combination
22467<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">tables</a>.<wbr/></p>
22468            </td>
22469
22470            <td class="entry_units">
22471            </td>
22472
22473            <td class="entry_range">
22474            </td>
22475
22476            <td class="entry_hal_version">
22477              <p>3.<wbr/>2</p>
22478            </td>
22479
22480            <td class="entry_tags">
22481            </td>
22482
22483          </tr>
22484          <tr class="entries_header">
22485            <th class="th_details" colspan="6">Details</th>
22486          </tr>
22487          <tr class="entry_cont">
22488            <td class="entry_details" colspan="6">
22489              <p>The array of
22490<a href="https://developer.android.com/reference/android/hardware/camera2/params/MandatoryStreamCombination.html">combinations</a> is
22491generated according to the documented
22492<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">guideline</a> for each
22493device which has its Id present in the set returned by
22494<a href="https://developer.android.com/reference/android/hardware/camera2/CameraManager.html#getConcurrentCameraIds">CameraManager#getConcurrentCameraIds</a>.<wbr/>
22495Clients can use the array as a quick reference to find an appropriate camera stream
22496combination.<wbr/>
22497The mandatory stream combination array will be {@code null} in case the device is not a
22498part of at least one set of combinations returned by
22499<a href="https://developer.android.com/reference/android/hardware/camera2/CameraManager.html#getConcurrentCameraIds">CameraManager#getConcurrentCameraIds</a>.<wbr/></p>
22500            </td>
22501          </tr>
22502
22503          <tr class="entries_header">
22504            <th class="th_details" colspan="6">HAL Implementation Details</th>
22505          </tr>
22506          <tr class="entry_cont">
22507            <td class="entry_details" colspan="6">
22508              <p>Do not set this property directly
22509(it is synthetic and will not be available at the HAL layer).<wbr/></p>
22510            </td>
22511          </tr>
22512
22513          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22514           <!-- end of entry -->
22515
22516
22517          <tr class="entry" id="static_android.scaler.availableRotateAndCropModes">
22518            <td class="entry_name
22519             " rowspan="3">
22520              android.<wbr/>scaler.<wbr/>available<wbr/>Rotate<wbr/>And<wbr/>Crop<wbr/>Modes
22521            </td>
22522            <td class="entry_type">
22523                <span class="entry_type_name">byte</span>
22524                <span class="entry_type_container">x</span>
22525
22526                <span class="entry_type_array">
22527                  n
22528                </span>
22529              <span class="entry_type_visibility"> [public as enumList]</span>
22530
22531
22532
22533
22534                <div class="entry_type_notes">list of enums</div>
22535
22536
22537            </td> <!-- entry_type -->
22538
22539            <td class="entry_description">
22540              <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>
22541            </td>
22542
22543            <td class="entry_units">
22544            </td>
22545
22546            <td class="entry_range">
22547              <p>Any value listed in <a href="#controls_android.scaler.rotateAndCrop">android.<wbr/>scaler.<wbr/>rotate<wbr/>And<wbr/>Crop</a></p>
22548            </td>
22549
22550            <td class="entry_hal_version">
22551              <p>3.<wbr/>5</p>
22552            </td>
22553
22554            <td class="entry_tags">
22555            </td>
22556
22557          </tr>
22558          <tr class="entries_header">
22559            <th class="th_details" colspan="6">Details</th>
22560          </tr>
22561          <tr class="entry_cont">
22562            <td class="entry_details" colspan="6">
22563              <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>
22564<p>Starting with API level 30,<wbr/> all devices will list at least <code>ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>NONE</code>.<wbr/>
22565Devices with support for rotate-and-crop will additionally list at least
22566<code>ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>AUTO</code> and <code>ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>90</code>.<wbr/></p>
22567            </td>
22568          </tr>
22569
22570
22571          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22572           <!-- end of entry -->
22573
22574
22575          <tr class="entry" id="static_android.scaler.defaultSecureImageSize">
22576            <td class="entry_name
22577             " rowspan="3">
22578              android.<wbr/>scaler.<wbr/>default<wbr/>Secure<wbr/>Image<wbr/>Size
22579            </td>
22580            <td class="entry_type">
22581                <span class="entry_type_name">int32</span>
22582                <span class="entry_type_container">x</span>
22583
22584                <span class="entry_type_array">
22585                  2
22586                </span>
22587              <span class="entry_type_visibility"> [public as size]</span>
22588
22589
22590
22591
22592                <div class="entry_type_notes">width/<wbr/>height for the default secure image data size</div>
22593
22594
22595            </td> <!-- entry_type -->
22596
22597            <td class="entry_description">
22598              <p>Default YUV/<wbr/>PRIVATE size to use for requesting secure image buffers.<wbr/></p>
22599            </td>
22600
22601            <td class="entry_units">
22602              Pixels
22603            </td>
22604
22605            <td class="entry_range">
22606            </td>
22607
22608            <td class="entry_hal_version">
22609              <p>3.<wbr/>6</p>
22610            </td>
22611
22612            <td class="entry_tags">
22613            </td>
22614
22615          </tr>
22616          <tr class="entries_header">
22617            <th class="th_details" colspan="6">Details</th>
22618          </tr>
22619          <tr class="entry_cont">
22620            <td class="entry_details" colspan="6">
22621              <p>This entry lists the default size supported in the secure camera mode.<wbr/> This entry is
22622optional on devices support the SECURE_<wbr/>IMAGE_<wbr/>DATA capability.<wbr/> This entry will be null
22623if the camera device does not list SECURE_<wbr/>IMAGE_<wbr/>DATA capability.<wbr/></p>
22624<p>When the key is present,<wbr/> only a PRIVATE/<wbr/>YUV output of the specified size is guaranteed
22625to be supported by the camera HAL in the secure camera mode.<wbr/> Any other format or
22626resolutions might not be supported.<wbr/> Use
22627<a href="https://developer.android.com/reference/CameraDevice.html#isSessionConfigurationSupported">CameraDevice#isSessionConfigurationSupported</a>
22628API to query if a secure session configuration is supported if the device supports this
22629API.<wbr/></p>
22630<p>If this key returns null on a device with SECURE_<wbr/>IMAGE_<wbr/>DATA capability,<wbr/> the application
22631can assume all output sizes listed in the
22632<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html">StreamConfigurationMap</a>
22633are supported.<wbr/></p>
22634            </td>
22635          </tr>
22636
22637
22638          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22639           <!-- end of entry -->
22640
22641
22642          <tr class="entry" id="static_android.scaler.physicalCameraMultiResolutionStreamConfigurations">
22643            <td class="entry_name
22644             " rowspan="5">
22645              android.<wbr/>scaler.<wbr/>physical<wbr/>Camera<wbr/>Multi<wbr/>Resolution<wbr/>Stream<wbr/>Configurations
22646            </td>
22647            <td class="entry_type">
22648                <span class="entry_type_name entry_type_name_enum">int32</span>
22649                <span class="entry_type_container">x</span>
22650
22651                <span class="entry_type_array">
22652                  n x 4
22653                </span>
22654              <span class="entry_type_visibility"> [ndk_public as streamConfiguration]</span>
22655
22656
22657              <span class="entry_type_hwlevel">[limited] </span>
22658
22659
22660
22661                <ul class="entry_type_enum">
22662                  <li>
22663                    <span class="entry_type_enum_name">OUTPUT (v3.6)</span>
22664                  </li>
22665                  <li>
22666                    <span class="entry_type_enum_name">INPUT (v3.6)</span>
22667                  </li>
22668                </ul>
22669
22670            </td> <!-- entry_type -->
22671
22672            <td class="entry_description">
22673              <p>The available multi-resolution stream configurations that this
22674physical camera device supports
22675(i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p>
22676            </td>
22677
22678            <td class="entry_units">
22679            </td>
22680
22681            <td class="entry_range">
22682            </td>
22683
22684            <td class="entry_hal_version">
22685              <p>3.<wbr/>6</p>
22686            </td>
22687
22688            <td class="entry_tags">
22689            </td>
22690
22691          </tr>
22692          <tr class="entries_header">
22693            <th class="th_details" colspan="6">Details</th>
22694          </tr>
22695          <tr class="entry_cont">
22696            <td class="entry_details" colspan="6">
22697              <p>This list contains a subset of the parent logical camera's multi-resolution stream
22698configurations which belong to this physical camera,<wbr/> and it will advertise and will only
22699advertise the maximum supported resolutions for a particular format.<wbr/></p>
22700<p>If this camera device isn't a physical camera device constituting a logical camera,<wbr/>
22701but 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>
22702camera,<wbr/> this field represents the multi-resolution input/<wbr/>output stream configurations of
22703default mode and max resolution modes.<wbr/> The sizes will be the maximum resolution of a
22704particular format for default mode and max resolution mode.<wbr/></p>
22705<p>This field will only be advertised if the device is a physical camera of a
22706logical multi-camera device or an ultra high resolution sensor camera.<wbr/> For a logical
22707multi-camera,<wbr/> the camera API will derive the logical camera’s multi-resolution stream
22708configurations from all physical cameras.<wbr/> For an ultra high resolution sensor camera,<wbr/> this
22709is used directly as the camera’s multi-resolution stream configurations.<wbr/></p>
22710            </td>
22711          </tr>
22712
22713          <tr class="entries_header">
22714            <th class="th_details" colspan="6">HAL Implementation Details</th>
22715          </tr>
22716          <tr class="entry_cont">
22717            <td class="entry_details" colspan="6">
22718              <p>If this field contains input stream configurations,<wbr/> and the camera device is a physical
22719camera (not a standalone ultra-high resolution camera),<wbr/> the
22720<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
22721the physical camera result metadata.<wbr/> This is to make sure during multi-resolution
22722reprocessing,<wbr/> the camera HAL is notified of which physical camera the reprocessing
22723request comes from.<wbr/></p>
22724            </td>
22725          </tr>
22726
22727          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22728           <!-- end of entry -->
22729
22730
22731          <tr class="entry" id="static_android.scaler.multiResolutionStreamConfigurationMap">
22732            <td class="entry_name
22733             " rowspan="5">
22734              android.<wbr/>scaler.<wbr/>multi<wbr/>Resolution<wbr/>Stream<wbr/>Configuration<wbr/>Map
22735            </td>
22736            <td class="entry_type">
22737                <span class="entry_type_name">int32</span>
22738
22739              <span class="entry_type_visibility"> [java_public as multiResolutionStreamConfigurationMap]</span>
22740
22741              <span class="entry_type_synthetic">[synthetic] </span>
22742
22743
22744
22745
22746
22747            </td> <!-- entry_type -->
22748
22749            <td class="entry_description">
22750              <p>The multi-resolution stream configurations supported by this logical camera
22751or ultra high resolution sensor camera device.<wbr/></p>
22752            </td>
22753
22754            <td class="entry_units">
22755            </td>
22756
22757            <td class="entry_range">
22758            </td>
22759
22760            <td class="entry_hal_version">
22761              <p>3.<wbr/>2</p>
22762            </td>
22763
22764            <td class="entry_tags">
22765            </td>
22766
22767          </tr>
22768          <tr class="entries_header">
22769            <th class="th_details" colspan="6">Details</th>
22770          </tr>
22771          <tr class="entry_cont">
22772            <td class="entry_details" colspan="6">
22773              <p>Multi-resolution streams can be used by a LOGICAL_<wbr/>MULTI_<wbr/>CAMERA or an
22774ULTRA_<wbr/>HIGH_<wbr/>RESOLUTION_<wbr/>SENSOR camera where the images sent or received can vary in
22775resolution per frame.<wbr/> This is useful in cases where the camera device's effective full
22776resolution changes depending on factors such as the current zoom level,<wbr/> lighting
22777condition,<wbr/> focus distance,<wbr/> or pixel mode.<wbr/></p>
22778<ul>
22779<li>For a logical multi-camera implementing optical zoom,<wbr/> at different zoom level,<wbr/> a
22780different physical camera may be active,<wbr/> resulting in different full-resolution image
22781sizes.<wbr/></li>
22782<li>For an ultra high resolution camera,<wbr/> depending on whether the camera operates in default
22783mode,<wbr/> or maximum resolution mode,<wbr/> the output full-size images may be of either binned
22784resolution or maximum resolution.<wbr/></li>
22785</ul>
22786<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/>
22787A <a href="https://developer.android.com/reference/android/hardware/camera2/MultiResolutionImageReader.html">MultiResolutionImageReader</a> can then be created for a
22788supported 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>
22789<p>If a camera device supports multi-resolution output streams for a particular format,<wbr/> for
22790each of its mandatory stream combinations,<wbr/> the camera device will support using a
22791MultiResolutionImageReader for the MAXIMUM stream of supported formats.<wbr/> Refer to
22792<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">CameraDevice#createCaptureSession</a> for additional details.<wbr/></p>
22793<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/>
22794A 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
22795the 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>
22796<p>If a camera device supports multi-resolution {@code YUV} input and multi-resolution
22797{@code YUV} output,<wbr/> or multi-resolution {@code PRIVATE} input and multi-resolution
22798{@code PRIVATE} output,<wbr/> {@code JPEG} and {@code YUV} are guaranteed to be supported
22799multi-resolution output stream formats.<wbr/> Refer to
22800<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">CameraDevice#createCaptureSession</a> for
22801details about the additional mandatory stream combinations in this case.<wbr/></p>
22802            </td>
22803          </tr>
22804
22805          <tr class="entries_header">
22806            <th class="th_details" colspan="6">HAL Implementation Details</th>
22807          </tr>
22808          <tr class="entry_cont">
22809            <td class="entry_details" colspan="6">
22810              <p>Do not set this property directly
22811(it is synthetic and will not be available at the HAL layer).<wbr/></p>
22812            </td>
22813          </tr>
22814
22815          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22816           <!-- end of entry -->
22817
22818
22819          <tr class="entry" id="static_android.scaler.availableStreamConfigurationsMaximumResolution">
22820            <td class="entry_name
22821             " rowspan="5">
22822              android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations<wbr/>Maximum<wbr/>Resolution
22823            </td>
22824            <td class="entry_type">
22825                <span class="entry_type_name entry_type_name_enum">int32</span>
22826                <span class="entry_type_container">x</span>
22827
22828                <span class="entry_type_array">
22829                  n x 4
22830                </span>
22831              <span class="entry_type_visibility"> [ndk_public as streamConfiguration]</span>
22832
22833
22834
22835
22836
22837                <ul class="entry_type_enum">
22838                  <li>
22839                    <span class="entry_type_enum_name">OUTPUT (v3.6)</span>
22840                  </li>
22841                  <li>
22842                    <span class="entry_type_enum_name">INPUT (v3.6)</span>
22843                  </li>
22844                </ul>
22845
22846            </td> <!-- entry_type -->
22847
22848            <td class="entry_description">
22849              <p>The available stream configurations that this
22850camera device supports (i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream) for a
22851CaptureRequest with <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> set to
22852<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>
22853            </td>
22854
22855            <td class="entry_units">
22856            </td>
22857
22858            <td class="entry_range">
22859            </td>
22860
22861            <td class="entry_hal_version">
22862              <p>3.<wbr/>6</p>
22863            </td>
22864
22865            <td class="entry_tags">
22866            </td>
22867
22868          </tr>
22869          <tr class="entries_header">
22870            <th class="th_details" colspan="6">Details</th>
22871          </tr>
22872          <tr class="entry_cont">
22873            <td class="entry_details" colspan="6">
22874              <p>Analogous to <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a>,<wbr/> for configurations
22875which are applicable when <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to
22876<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>
22877<p>Not all output formats may be supported in a configuration with
22878an input stream of a particular format.<wbr/> For more details,<wbr/> see
22879<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>
22880            </td>
22881          </tr>
22882
22883          <tr class="entries_header">
22884            <th class="th_details" colspan="6">HAL Implementation Details</th>
22885          </tr>
22886          <tr class="entry_cont">
22887            <td class="entry_details" colspan="6">
22888              <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>
22889            </td>
22890          </tr>
22891
22892          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22893           <!-- end of entry -->
22894
22895
22896          <tr class="entry" id="static_android.scaler.availableMinFrameDurationsMaximumResolution">
22897            <td class="entry_name
22898             " rowspan="3">
22899              android.<wbr/>scaler.<wbr/>available<wbr/>Min<wbr/>Frame<wbr/>Durations<wbr/>Maximum<wbr/>Resolution
22900            </td>
22901            <td class="entry_type">
22902                <span class="entry_type_name">int64</span>
22903                <span class="entry_type_container">x</span>
22904
22905                <span class="entry_type_array">
22906                  4 x n
22907                </span>
22908              <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
22909
22910
22911
22912
22913
22914
22915            </td> <!-- entry_type -->
22916
22917            <td class="entry_description">
22918              <p>This lists the minimum frame duration for each
22919format/<wbr/>size combination when the camera device is sent a CaptureRequest with
22920<a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> set to
22921<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>
22922            </td>
22923
22924            <td class="entry_units">
22925              (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
22926            </td>
22927
22928            <td class="entry_range">
22929            </td>
22930
22931            <td class="entry_hal_version">
22932              <p>3.<wbr/>6</p>
22933            </td>
22934
22935            <td class="entry_tags">
22936            </td>
22937
22938          </tr>
22939          <tr class="entries_header">
22940            <th class="th_details" colspan="6">Details</th>
22941          </tr>
22942          <tr class="entry_cont">
22943            <td class="entry_details" colspan="6">
22944              <p>Analogous to <a href="#static_android.scaler.availableMinFrameDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Min<wbr/>Frame<wbr/>Durations</a>,<wbr/> for configurations
22945which are applicable when <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to
22946<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>
22947<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>
22948is set to
22949<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
22950minimum frame duration will be max(individual stream min durations).<wbr/></p>
22951<p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> and
22952<a href="#static_android.scaler.availableStallDurationsMaximumResolution">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations<wbr/>Maximum<wbr/>Resolution</a> for more details about
22953calculating the max frame rate.<wbr/></p>
22954            </td>
22955          </tr>
22956
22957
22958          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22959           <!-- end of entry -->
22960
22961
22962          <tr class="entry" id="static_android.scaler.availableStallDurationsMaximumResolution">
22963            <td class="entry_name
22964             " rowspan="5">
22965              android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations<wbr/>Maximum<wbr/>Resolution
22966            </td>
22967            <td class="entry_type">
22968                <span class="entry_type_name">int64</span>
22969                <span class="entry_type_container">x</span>
22970
22971                <span class="entry_type_array">
22972                  4 x n
22973                </span>
22974              <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
22975
22976
22977
22978
22979
22980
22981            </td> <!-- entry_type -->
22982
22983            <td class="entry_description">
22984              <p>This lists the maximum stall duration for each
22985output format/<wbr/>size combination when CaptureRequests are submitted with
22986<a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> set to
22987<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>
22988            </td>
22989
22990            <td class="entry_units">
22991              (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
22992            </td>
22993
22994            <td class="entry_range">
22995            </td>
22996
22997            <td class="entry_hal_version">
22998              <p>3.<wbr/>6</p>
22999            </td>
23000
23001            <td class="entry_tags">
23002            </td>
23003
23004          </tr>
23005          <tr class="entries_header">
23006            <th class="th_details" colspan="6">Details</th>
23007          </tr>
23008          <tr class="entry_cont">
23009            <td class="entry_details" colspan="6">
23010              <p>Analogous to <a href="#static_android.scaler.availableMinFrameDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Min<wbr/>Frame<wbr/>Durations</a>,<wbr/> for configurations
23011which are applicable when <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to
23012<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>
23013            </td>
23014          </tr>
23015
23016          <tr class="entries_header">
23017            <th class="th_details" colspan="6">HAL Implementation Details</th>
23018          </tr>
23019          <tr class="entry_cont">
23020            <td class="entry_details" colspan="6">
23021              <p>If possible,<wbr/> it is recommended that all non-JPEG formats
23022(such as RAW16) should not have a stall duration.<wbr/> RAW10,<wbr/> RAW12,<wbr/> RAW_<wbr/>OPAQUE
23023and IMPLEMENTATION_<wbr/>DEFINED must not have stall durations.<wbr/></p>
23024            </td>
23025          </tr>
23026
23027          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23028           <!-- end of entry -->
23029
23030
23031          <tr class="entry" id="static_android.scaler.streamConfigurationMapMaximumResolution">
23032            <td class="entry_name
23033             " rowspan="5">
23034              android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map<wbr/>Maximum<wbr/>Resolution
23035            </td>
23036            <td class="entry_type">
23037                <span class="entry_type_name">int32</span>
23038
23039              <span class="entry_type_visibility"> [java_public as streamConfigurationMap]</span>
23040
23041              <span class="entry_type_synthetic">[synthetic] </span>
23042
23043
23044
23045
23046
23047            </td> <!-- entry_type -->
23048
23049            <td class="entry_description">
23050              <p>The available stream configurations that this
23051camera device supports when given a CaptureRequest with <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a>
23052set to
23053<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>;
23054also includes the minimum frame durations
23055and the stall durations for each format/<wbr/>size combination.<wbr/></p>
23056            </td>
23057
23058            <td class="entry_units">
23059            </td>
23060
23061            <td class="entry_range">
23062            </td>
23063
23064            <td class="entry_hal_version">
23065              <p>3.<wbr/>2</p>
23066            </td>
23067
23068            <td class="entry_tags">
23069            </td>
23070
23071          </tr>
23072          <tr class="entries_header">
23073            <th class="th_details" colspan="6">Details</th>
23074          </tr>
23075          <tr class="entry_cont">
23076            <td class="entry_details" colspan="6">
23077              <p>Analogous to <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> for CaptureRequests where
23078<a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is
23079<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>
23080            </td>
23081          </tr>
23082
23083          <tr class="entries_header">
23084            <th class="th_details" colspan="6">HAL Implementation Details</th>
23085          </tr>
23086          <tr class="entry_cont">
23087            <td class="entry_details" colspan="6">
23088              <p>Do not set this property directly
23089(it is synthetic and will not be available at the HAL layer);
23090set the <a href="#static_android.scaler.availableStreamConfigurationsMaximumResolution">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations<wbr/>Maximum<wbr/>Resolution</a> instead.<wbr/></p>
23091<p>Not all output formats may be supported in a configuration with
23092an input stream of a particular format.<wbr/> For more details,<wbr/> see
23093<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>
23094            </td>
23095          </tr>
23096
23097          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23098           <!-- end of entry -->
23099
23100
23101          <tr class="entry" id="static_android.scaler.availableInputOutputFormatsMapMaximumResolution">
23102            <td class="entry_name
23103             " rowspan="5">
23104              android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map<wbr/>Maximum<wbr/>Resolution
23105            </td>
23106            <td class="entry_type">
23107                <span class="entry_type_name">int32</span>
23108
23109              <span class="entry_type_visibility"> [hidden as reprocessFormatsMap]</span>
23110
23111
23112
23113
23114
23115
23116            </td> <!-- entry_type -->
23117
23118            <td class="entry_description">
23119              <p>The mapping of image formats that are supported by this
23120camera device for input streams,<wbr/> to their corresponding output formats,<wbr/> when
23121<a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to
23122<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>
23123            </td>
23124
23125            <td class="entry_units">
23126            </td>
23127
23128            <td class="entry_range">
23129            </td>
23130
23131            <td class="entry_hal_version">
23132              <p>3.<wbr/>6</p>
23133            </td>
23134
23135            <td class="entry_tags">
23136              <ul class="entry_tags">
23137                  <li><a href="#tag_REPROC">REPROC</a></li>
23138              </ul>
23139            </td>
23140
23141          </tr>
23142          <tr class="entries_header">
23143            <th class="th_details" colspan="6">Details</th>
23144          </tr>
23145          <tr class="entry_cont">
23146            <td class="entry_details" colspan="6">
23147              <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
23148<a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is
23149<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>
23150            </td>
23151          </tr>
23152
23153          <tr class="entries_header">
23154            <th class="th_details" colspan="6">HAL Implementation Details</th>
23155          </tr>
23156          <tr class="entry_cont">
23157            <td class="entry_details" colspan="6">
23158              <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>
23159            </td>
23160          </tr>
23161
23162          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23163           <!-- end of entry -->
23164
23165
23166          <tr class="entry" id="static_android.scaler.mandatoryMaximumResolutionStreamCombinations">
23167            <td class="entry_name
23168             " rowspan="5">
23169              android.<wbr/>scaler.<wbr/>mandatory<wbr/>Maximum<wbr/>Resolution<wbr/>Stream<wbr/>Combinations
23170            </td>
23171            <td class="entry_type">
23172                <span class="entry_type_name">int32</span>
23173                <span class="entry_type_container">x</span>
23174
23175                <span class="entry_type_array">
23176                  n
23177                </span>
23178              <span class="entry_type_visibility"> [java_public as mandatoryStreamCombination]</span>
23179
23180              <span class="entry_type_synthetic">[synthetic] </span>
23181
23182
23183
23184
23185
23186            </td> <!-- entry_type -->
23187
23188            <td class="entry_description">
23189              <p>An array of mandatory stream combinations which are applicable when
23190<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
23191to <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/>
23192This is an app-readable conversion of the maximum resolution mandatory stream combination
23193<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">tables</a>.<wbr/></p>
23194            </td>
23195
23196            <td class="entry_units">
23197            </td>
23198
23199            <td class="entry_range">
23200            </td>
23201
23202            <td class="entry_hal_version">
23203              <p>3.<wbr/>2</p>
23204            </td>
23205
23206            <td class="entry_tags">
23207            </td>
23208
23209          </tr>
23210          <tr class="entries_header">
23211            <th class="th_details" colspan="6">Details</th>
23212          </tr>
23213          <tr class="entry_cont">
23214            <td class="entry_details" colspan="6">
23215              <p>The array of
23216<a href="https://developer.android.com/reference/android/hardware/camera2/params/MandatoryStreamCombination.html">combinations</a> is
23217generated according to the documented
23218<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">guideline</a> for each
23219device which has the
23220<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>
23221capability.<wbr/>
23222Clients can use the array as a quick reference to find an appropriate camera stream
23223combination.<wbr/>
23224The mandatory stream combination array will be {@code null} in case the device is not an
23225<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>
23226device.<wbr/></p>
23227            </td>
23228          </tr>
23229
23230          <tr class="entries_header">
23231            <th class="th_details" colspan="6">HAL Implementation Details</th>
23232          </tr>
23233          <tr class="entry_cont">
23234            <td class="entry_details" colspan="6">
23235              <p>Do not set this property directly
23236(it is synthetic and will not be available at the HAL layer).<wbr/></p>
23237            </td>
23238          </tr>
23239
23240          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23241           <!-- end of entry -->
23242
23243
23244          <tr class="entry" id="static_android.scaler.multiResolutionStreamSupported">
23245            <td class="entry_name
23246             " rowspan="5">
23247              android.<wbr/>scaler.<wbr/>multi<wbr/>Resolution<wbr/>Stream<wbr/>Supported
23248            </td>
23249            <td class="entry_type">
23250                <span class="entry_type_name entry_type_name_enum">byte</span>
23251
23252              <span class="entry_type_visibility"> [ndk_public as boolean]</span>
23253
23254
23255              <span class="entry_type_hwlevel">[limited] </span>
23256
23257
23258
23259                <ul class="entry_type_enum">
23260                  <li>
23261                    <span class="entry_type_enum_name">FALSE (v3.6)</span>
23262                  </li>
23263                  <li>
23264                    <span class="entry_type_enum_name">TRUE (v3.6)</span>
23265                  </li>
23266                </ul>
23267
23268            </td> <!-- entry_type -->
23269
23270            <td class="entry_description">
23271              <p>Whether the camera device supports multi-resolution input or output streams</p>
23272            </td>
23273
23274            <td class="entry_units">
23275            </td>
23276
23277            <td class="entry_range">
23278            </td>
23279
23280            <td class="entry_hal_version">
23281              <p>3.<wbr/>6</p>
23282            </td>
23283
23284            <td class="entry_tags">
23285            </td>
23286
23287          </tr>
23288          <tr class="entries_header">
23289            <th class="th_details" colspan="6">Details</th>
23290          </tr>
23291          <tr class="entry_cont">
23292            <td class="entry_details" colspan="6">
23293              <p>A logical multi-camera or an ultra high resolution camera may support multi-resolution
23294input or output streams.<wbr/> With multi-resolution output streams,<wbr/> the camera device is able
23295to output different resolution images depending on the current active physical camera or
23296pixel mode.<wbr/> With multi-resolution input streams,<wbr/> the camera device can reprocess images
23297of different resolutions from different physical cameras or sensor pixel modes.<wbr/></p>
23298<p>When set to TRUE:
23299* For a logical multi-camera,<wbr/> the camera framework derives
23300<a href="#static_android.scaler.multiResolutionStreamConfigurationMap">android.<wbr/>scaler.<wbr/>multi<wbr/>Resolution<wbr/>Stream<wbr/>Configuration<wbr/>Map</a> by combining the
23301<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
23302cameras.<wbr/>
23303* For an ultra-high resolution sensor camera,<wbr/> the camera framework directly copies
23304the 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
23305<a href="#static_android.scaler.multiResolutionStreamConfigurationMap">android.<wbr/>scaler.<wbr/>multi<wbr/>Resolution<wbr/>Stream<wbr/>Configuration<wbr/>Map</a>.<wbr/></p>
23306            </td>
23307          </tr>
23308
23309          <tr class="entries_header">
23310            <th class="th_details" colspan="6">HAL Implementation Details</th>
23311          </tr>
23312          <tr class="entry_cont">
23313            <td class="entry_details" colspan="6">
23314              <p>For the HAL to claim support for multi-resolution streams:
23315* The HAL must support the buffer management API by setting
23316supportedBufferManagementVersion to HIDL_<wbr/>DEVICE_<wbr/>3_<wbr/>5.<wbr/>
23317* For a logical multi-camera,<wbr/> when combined from all its physical cameras,<wbr/> there must be
23318at a minimum one input or output stream format with at least two different
23319physicalCameraMultiResolutionStreamConfigurations entries for that format.<wbr/>
23320* For an ultra high resolution sensor camera,<wbr/> for each supported multi-resolution format,<wbr/>
23321the physicalCameraMultiResolutionStreamConfigurations must contain both the largest stream
23322configuration within the <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> and the largest stream
23323configuration within the <a href="#static_android.scaler.streamConfigurationMapMaximumResolution">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map<wbr/>Maximum<wbr/>Resolution</a>.<wbr/>
23324* If the HAL advertises multi-resolution input stream support for a particular format
23325(namely PRIVATE,<wbr/> or YUV),<wbr/> the logical multi-camera or ultra high resolution sensor camera
23326must have the corresponding reprocessing capabilities (PRIVATE_<wbr/>REPROCESSING,<wbr/>
23327or YUV_<wbr/>REPROCESSING respectively).<wbr/> The camera HAL must support reprocessing the
23328multi-resolution input stream to the output formats specified in the camera's
23329<a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a>.<wbr/></p>
23330            </td>
23331          </tr>
23332
23333          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23334           <!-- end of entry -->
23335
23336
23337
23338      <!-- end of kind -->
23339      </tbody>
23340      <tr><td colspan="7" class="kind">dynamic</td></tr>
23341
23342      <thead class="entries_header">
23343        <tr>
23344          <th class="th_name">Property Name</th>
23345          <th class="th_type">Type</th>
23346          <th class="th_description">Description</th>
23347          <th class="th_units">Units</th>
23348          <th class="th_range">Range</th>
23349          <th class="th_hal_version">Initial HIDL HAL version</th>
23350          <th class="th_tags">Tags</th>
23351        </tr>
23352      </thead>
23353
23354      <tbody>
23355
23356
23357
23358
23359
23360
23361
23362
23363
23364
23365          <tr class="entry" id="dynamic_android.scaler.cropRegion">
23366            <td class="entry_name
23367             " rowspan="5">
23368              android.<wbr/>scaler.<wbr/>crop<wbr/>Region
23369            </td>
23370            <td class="entry_type">
23371                <span class="entry_type_name">int32</span>
23372                <span class="entry_type_container">x</span>
23373
23374                <span class="entry_type_array">
23375                  4
23376                </span>
23377              <span class="entry_type_visibility"> [public as rectangle]</span>
23378
23379
23380              <span class="entry_type_hwlevel">[legacy] </span>
23381
23382
23383
23384
23385            </td> <!-- entry_type -->
23386
23387            <td class="entry_description">
23388              <p>The desired region of the sensor to read out for this capture.<wbr/></p>
23389            </td>
23390
23391            <td class="entry_units">
23392              Pixel coordinates relative to
23393          android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size or
23394          android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size depending on distortion correction
23395          capability and mode
23396            </td>
23397
23398            <td class="entry_range">
23399            </td>
23400
23401            <td class="entry_hal_version">
23402              <p>3.<wbr/>2</p>
23403            </td>
23404
23405            <td class="entry_tags">
23406              <ul class="entry_tags">
23407                  <li><a href="#tag_BC">BC</a></li>
23408              </ul>
23409            </td>
23410
23411          </tr>
23412          <tr class="entries_header">
23413            <th class="th_details" colspan="6">Details</th>
23414          </tr>
23415          <tr class="entry_cont">
23416            <td class="entry_details" colspan="6">
23417              <p>This control can be used to implement digital zoom.<wbr/></p>
23418<p>For devices not supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate
23419system 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
23420the top-left pixel of the active array.<wbr/></p>
23421<p>For devices supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate system
23422depends on the mode being set.<wbr/>  When the distortion correction mode is OFF,<wbr/> the
23423coordinate 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/>
234240)</code> being the top-left pixel of the pre-correction active array.<wbr/>  When the distortion
23425correction mode is not OFF,<wbr/> the coordinate system follows
23426<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
23427active array.<wbr/></p>
23428<p>Output streams use this rectangle to produce their output,<wbr/> cropping to a smaller region
23429if necessary to maintain the stream's aspect ratio,<wbr/> then scaling the sensor input to
23430match the output's configured resolution.<wbr/></p>
23431<p>The crop region is applied after the RAW to other color space (e.<wbr/>g.<wbr/> YUV)
23432conversion.<wbr/> Since raw streams (e.<wbr/>g.<wbr/> RAW16) don't have the conversion stage,<wbr/> they are not
23433croppable.<wbr/> The crop region will be ignored by raw streams.<wbr/></p>
23434<p>For non-raw streams,<wbr/> any additional per-stream cropping will be done to maximize the
23435final pixel area of the stream.<wbr/></p>
23436<p>For example,<wbr/> if the crop region is set to a 4:3 aspect ratio,<wbr/> then 4:3 streams will use
23437the exact crop region.<wbr/> 16:9 streams will further crop vertically (letterbox).<wbr/></p>
23438<p>Conversely,<wbr/> if the crop region is set to a 16:9,<wbr/> then 4:3 outputs will crop horizontally
23439(pillarbox),<wbr/> and 16:9 streams will match exactly.<wbr/> These additional crops will be
23440centered within the crop region.<wbr/></p>
23441<p>To illustrate,<wbr/> here are several scenarios of different crop regions and output streams,<wbr/>
23442for a hypothetical camera device with an active array of size <code>(2000,<wbr/>1500)</code>.<wbr/>  Note that
23443several of these examples use non-centered crop regions for ease of illustration; such
23444regions are only supported on devices with FREEFORM capability
23445(<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
23446rules work otherwise.<wbr/></p>
23447<ul>
23448<li>Camera Configuration:<ul>
23449<li>Active array size: <code>2000x1500</code> (3 MP,<wbr/> 4:3 aspect ratio)</li>
23450<li>Output stream #1: <code>640x480</code> (VGA,<wbr/> 4:3 aspect ratio)</li>
23451<li>Output stream #2: <code>1280x720</code> (720p,<wbr/> 16:9 aspect ratio)</li>
23452</ul>
23453</li>
23454<li>Case #1: 4:3 crop region with 2x digital zoom<ul>
23455<li>Crop region: <code>Rect(500,<wbr/> 375,<wbr/> 1500,<wbr/> 1125) //<wbr/> (left,<wbr/> top,<wbr/> right,<wbr/> bottom)</code></li>
23456<li><img alt="4:3 aspect ratio crop diagram" src="images/camera2/metadata/android.scaler.cropRegion/crop-region-43-ratio.png"/></li>
23457<li><code>640x480</code> stream source area: <code>(500,<wbr/> 375,<wbr/> 1500,<wbr/> 1125)</code> (equal to crop region)</li>
23458<li><code>1280x720</code> stream source area: <code>(500,<wbr/> 469,<wbr/> 1500,<wbr/> 1031)</code> (letterboxed)</li>
23459</ul>
23460</li>
23461<li>Case #2: 16:9 crop region with ~1.<wbr/>5x digital zoom.<wbr/><ul>
23462<li>Crop region: <code>Rect(500,<wbr/> 375,<wbr/> 1833,<wbr/> 1125)</code></li>
23463<li><img alt="16:9 aspect ratio crop diagram" src="images/camera2/metadata/android.scaler.cropRegion/crop-region-169-ratio.png"/></li>
23464<li><code>640x480</code> stream source area: <code>(666,<wbr/> 375,<wbr/> 1666,<wbr/> 1125)</code> (pillarboxed)</li>
23465<li><code>1280x720</code> stream source area: <code>(500,<wbr/> 375,<wbr/> 1833,<wbr/> 1125)</code> (equal to crop region)</li>
23466</ul>
23467</li>
23468<li>Case #3: 1:1 crop region with ~2.<wbr/>6x digital zoom.<wbr/><ul>
23469<li>Crop region: <code>Rect(500,<wbr/> 375,<wbr/> 1250,<wbr/> 1125)</code></li>
23470<li><img alt="1:1 aspect ratio crop diagram" src="images/camera2/metadata/android.scaler.cropRegion/crop-region-11-ratio.png"/></li>
23471<li><code>640x480</code> stream source area: <code>(500,<wbr/> 469,<wbr/> 1250,<wbr/> 1031)</code> (letterboxed)</li>
23472<li><code>1280x720</code> stream source area: <code>(500,<wbr/> 543,<wbr/> 1250,<wbr/> 957)</code> (letterboxed)</li>
23473</ul>
23474</li>
23475<li>Case #4: Replace <code>640x480</code> stream with <code>1024x1024</code> stream,<wbr/> with 4:3 crop region:<ul>
23476<li>Crop region: <code>Rect(500,<wbr/> 375,<wbr/> 1500,<wbr/> 1125)</code></li>
23477<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>
23478<li><code>1024x1024</code> stream source area: <code>(625,<wbr/> 375,<wbr/> 1375,<wbr/> 1125)</code> (pillarboxed)</li>
23479<li><code>1280x720</code> stream source area: <code>(500,<wbr/> 469,<wbr/> 1500,<wbr/> 1031)</code> (letterboxed)</li>
23480<li>Note that in this case,<wbr/> neither of the two outputs is a subset of the other,<wbr/> with
23481  each containing image data the other doesn't have.<wbr/></li>
23482</ul>
23483</li>
23484</ul>
23485<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
23486of the crop region cannot be set to be smaller than
23487<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
23488<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>
23489<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
23490and height of the crop region cannot be set to be smaller than
23491<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>
23492and
23493<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/>
23494respectively.<wbr/></p>
23495<p>The camera device may adjust the crop region to account for rounding and other hardware
23496requirements; the final crop region used will be included in the output capture result.<wbr/></p>
23497<p>The camera sensor output aspect ratio depends on factors such as output stream
23498combination 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
23499this control.<wbr/> And the camera device will treat different camera sensor output sizes
23500(potentially with in-sensor crop) as the same crop of
23501<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
23502maximum crop region always maps to the same aspect ratio or field of view for the
23503sensor output.<wbr/></p>
23504<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>
23505to take advantage of better support for zoom with logical multi-camera.<wbr/> The benefits
23506include better precision with optical-digital zoom combination,<wbr/> and ability to do
23507zoom-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
23508the capture request should be left as the default activeArray size.<wbr/> The
23509coordinate system is post-zoom,<wbr/> meaning that the activeArraySize or
23510preCorrectionActiveArraySize covers the camera device's field of view "after" zoom.<wbr/>  See
23511<a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> for details.<wbr/></p>
23512<p>For camera devices with the
23513<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>
23514capability,<wbr/> <a href="#static_android.sensor.info.activeArraySizeMaximumResolution">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution</a> /<wbr/>
23515<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
23516coordinate system for requests where <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to
23517<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>
23518            </td>
23519          </tr>
23520
23521          <tr class="entries_header">
23522            <th class="th_details" colspan="6">HAL Implementation Details</th>
23523          </tr>
23524          <tr class="entry_cont">
23525            <td class="entry_details" colspan="6">
23526              <p>The output streams must maintain square pixels at all
23527times,<wbr/> no matter what the relative aspect ratios of the
23528crop region and the stream are.<wbr/>  Negative values for
23529corner are allowed for raw output if full pixel array is
23530larger than active pixel array.<wbr/> Width and height may be
23531rounded to nearest larger supportable width,<wbr/> especially
23532for raw output,<wbr/> where only a few fixed scales may be
23533possible.<wbr/></p>
23534<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
23535ratio via <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a>,<wbr/> and change the coordinate system such that
23536<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
23537represent the camera field-of-view after zoom.<wbr/> see <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> for
23538details.<wbr/></p>
23539<p>HAL2.<wbr/>x uses only (x,<wbr/> y,<wbr/> width)</p>
23540            </td>
23541          </tr>
23542
23543          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23544           <!-- end of entry -->
23545
23546
23547          <tr class="entry" id="dynamic_android.scaler.rotateAndCrop">
23548            <td class="entry_name
23549             " rowspan="5">
23550              android.<wbr/>scaler.<wbr/>rotate<wbr/>And<wbr/>Crop
23551            </td>
23552            <td class="entry_type">
23553                <span class="entry_type_name entry_type_name_enum">byte</span>
23554
23555              <span class="entry_type_visibility"> [public]</span>
23556
23557
23558
23559
23560
23561                <ul class="entry_type_enum">
23562                  <li>
23563                    <span class="entry_type_enum_name">NONE (v3.5)</span>
23564                    <span class="entry_type_enum_notes"><p>No rotate and crop is applied.<wbr/> Processed outputs are in the sensor orientation.<wbr/></p></span>
23565                  </li>
23566                  <li>
23567                    <span class="entry_type_enum_name">90 (v3.5)</span>
23568                    <span class="entry_type_enum_notes"><p>Processed images are rotated by 90 degrees clockwise,<wbr/> and then cropped
23569to the original aspect ratio.<wbr/></p></span>
23570                  </li>
23571                  <li>
23572                    <span class="entry_type_enum_name">180 (v3.5)</span>
23573                    <span class="entry_type_enum_notes"><p>Processed images are rotated by 180 degrees.<wbr/>  Since the aspect ratio does not
23574change,<wbr/> no cropping is performed.<wbr/></p></span>
23575                  </li>
23576                  <li>
23577                    <span class="entry_type_enum_name">270 (v3.5)</span>
23578                    <span class="entry_type_enum_notes"><p>Processed images are rotated by 270 degrees clockwise,<wbr/> and then cropped
23579to the original aspect ratio.<wbr/></p></span>
23580                  </li>
23581                  <li>
23582                    <span class="entry_type_enum_name">AUTO (v3.5)</span>
23583                    <span class="entry_type_enum_notes"><p>The camera API automatically selects the best concrete value for
23584rotate-and-crop based on the application's support for resizability and the current
23585multi-window mode.<wbr/></p>
23586<p>If the application does not support resizing but the display mode for its main
23587Activity is not in a typical orientation,<wbr/> the camera API will set <code>ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>90</code>
23588or some other supported rotation value,<wbr/> depending on device configuration,<wbr/>
23589to ensure preview and captured images are correctly shown to the user.<wbr/> Otherwise,<wbr/>
23590<code>ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>NONE</code> will be selected.<wbr/></p>
23591<p>When a value other than NONE is selected,<wbr/> several metadata fields will also be parsed
23592differently to ensure that coordinates are correctly handled for features like drawing
23593face detection boxes or passing in tap-to-focus coordinates.<wbr/>  The camera API will
23594convert positions in the active array coordinate system to/<wbr/>from the cropped-and-rotated
23595coordinate system to make the operation transparent for applications.<wbr/></p>
23596<p>No coordinate mapping will be done when the application selects a non-AUTO mode.<wbr/></p></span>
23597                  </li>
23598                </ul>
23599
23600            </td> <!-- entry_type -->
23601
23602            <td class="entry_description">
23603              <p>Whether a rotation-and-crop operation is applied to processed
23604outputs from the camera.<wbr/></p>
23605            </td>
23606
23607            <td class="entry_units">
23608            </td>
23609
23610            <td class="entry_range">
23611              <p><a href="#static_android.scaler.availableRotateAndCropModes">android.<wbr/>scaler.<wbr/>available<wbr/>Rotate<wbr/>And<wbr/>Crop<wbr/>Modes</a></p>
23612            </td>
23613
23614            <td class="entry_hal_version">
23615              <p>3.<wbr/>5</p>
23616            </td>
23617
23618            <td class="entry_tags">
23619            </td>
23620
23621          </tr>
23622          <tr class="entries_header">
23623            <th class="th_details" colspan="6">Details</th>
23624          </tr>
23625          <tr class="entry_cont">
23626            <td class="entry_details" colspan="6">
23627              <p>This control is primarily intended to help camera applications with no support for
23628multi-window modes to work correctly on devices where multi-window scenarios are
23629unavoidable,<wbr/> such as foldables or other devices with variable display geometry or more
23630free-form window placement (such as laptops,<wbr/> which often place portrait-orientation apps
23631in landscape with pillarboxing).<wbr/></p>
23632<p>If supported,<wbr/> the default value is <code>ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>AUTO</code>,<wbr/> which allows the camera API
23633to enable backwards-compatibility support for applications that do not support resizing
23634/<wbr/> multi-window modes,<wbr/> when the device is in fact in a multi-window mode (such as inset
23635portrait on laptops,<wbr/> or on a foldable device in some fold states).<wbr/>  In addition,<wbr/>
23636<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
23637is supported by the device.<wbr/>  If not supported,<wbr/> devices API level 30 or higher will always
23638list only <code>ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>NONE</code>.<wbr/></p>
23639<p>When <code>CROP_<wbr/>AUTO</code> is in use,<wbr/> and the camera API activates backward-compatibility mode,<wbr/>
23640several metadata fields will also be parsed differently to ensure that coordinates are
23641correctly handled for features like drawing face detection boxes or passing in
23642tap-to-focus coordinates.<wbr/>  The camera API will convert positions in the active array
23643coordinate system to/<wbr/>from the cropped-and-rotated coordinate system to make the
23644operation transparent for applications.<wbr/>  The following controls are affected:</p>
23645<ul>
23646<li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li>
23647<li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li>
23648<li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li>
23649<li><a href="#dynamic_android.statistics.faces">android.<wbr/>statistics.<wbr/>faces</a></li>
23650</ul>
23651<p>Capture results will contain the actual value selected by the API;
23652<code>ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>AUTO</code> will never be seen in a capture result.<wbr/></p>
23653<p>Applications can also select their preferred cropping mode,<wbr/> either to opt out of the
23654backwards-compatibility treatment,<wbr/> or to use the cropping feature themselves as needed.<wbr/>
23655In this case,<wbr/> no coordinate translation will be done automatically,<wbr/> and all controls
23656will continue to use the normal active array coordinates.<wbr/></p>
23657<p>Cropping and rotating is done after the application of digital zoom (via either
23658<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
23659output is further cropped and scaled.<wbr/> It only affects processed outputs such as
23660YUV,<wbr/> PRIVATE,<wbr/> and JPEG.<wbr/>  It has no effect on RAW outputs.<wbr/></p>
23661<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
23662view.<wbr/> For example,<wbr/> with a 4:3 aspect ratio output of 1600x1200,<wbr/> <code>CROP_<wbr/>90</code> will still
23663produce 1600x1200 output,<wbr/> but these buffers are cropped from a vertical 3:4 slice at the
23664center of the 4:3 area,<wbr/> then rotated to be 4:3,<wbr/> and then upscaled to 1600x1200.<wbr/>  Only
2366556.<wbr/>25% of the original FOV is still visible.<wbr/>  In general,<wbr/> for an aspect ratio of <code>w:h</code>,<wbr/>
23666the crop and rotate operation leaves <code>(h/<wbr/>w)^2</code> of the field of view visible.<wbr/> For 16:9,<wbr/>
23667this is ~31.<wbr/>6%.<wbr/></p>
23668<p>As a visual example,<wbr/> the figure below shows the effect of <code>ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>90</code> on the
23669outputs for the following parameters:</p>
23670<ul>
23671<li>Sensor active array: <code>2000x1500</code></li>
23672<li>Crop region: top-left: <code>(500,<wbr/> 375)</code>,<wbr/> size: <code>(1000,<wbr/> 750)</code> (4:3 aspect ratio)</li>
23673<li>Output streams: YUV <code>640x480</code> and YUV <code>1280x720</code></li>
23674<li><code>ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>90</code></li>
23675</ul>
23676<p><img alt="Effect of ROTATE_AND_CROP_90" src="images/camera2/metadata/android.scaler.rotateAndCrop/crop-region-rotate-90-43-ratio.png"/></p>
23677<p>With these settings,<wbr/> the regions of the active array covered by the output streams are:</p>
23678<ul>
23679<li>640x480 stream crop: top-left: <code>(219,<wbr/> 375)</code>,<wbr/> size: <code>(562,<wbr/> 750)</code></li>
23680<li>1280x720 stream crop: top-left: <code>(289,<wbr/> 375)</code>,<wbr/> size: <code>(422,<wbr/> 750)</code></li>
23681</ul>
23682<p>Since the buffers are rotated,<wbr/> the buffers as seen by the application are:</p>
23683<ul>
23684<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>
23685<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>
23686</ul>
23687            </td>
23688          </tr>
23689
23690          <tr class="entries_header">
23691            <th class="th_details" colspan="6">HAL Implementation Details</th>
23692          </tr>
23693          <tr class="entry_cont">
23694            <td class="entry_details" colspan="6">
23695              <p>ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>AUTO will never be sent to the HAL,<wbr/> though it must be set as the default
23696value in all the capture request templates by the HAL.<wbr/>  The camera service will
23697translate AUTO to a specific rotation value based on the current application's
23698multi-window state and its support of resizability.<wbr/></p>
23699<p>The HAL also does not need to consider coordinate transforms for ROTATE_<wbr/>AND_<wbr/>CROP - all
23700capture request and result fields should be kept in the active array coordinate frame.<wbr/>
23701Any translation required to implement ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>AUTO will be handled by the camera
23702service.<wbr/></p>
23703            </td>
23704          </tr>
23705
23706          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23707           <!-- end of entry -->
23708
23709
23710
23711      <!-- end of kind -->
23712      </tbody>
23713
23714  <!-- end of section -->
23715  <tr><td colspan="7" id="section_sensor" class="section">sensor</td></tr>
23716
23717
23718      <tr><td colspan="7" class="kind">controls</td></tr>
23719
23720      <thead class="entries_header">
23721        <tr>
23722          <th class="th_name">Property Name</th>
23723          <th class="th_type">Type</th>
23724          <th class="th_description">Description</th>
23725          <th class="th_units">Units</th>
23726          <th class="th_range">Range</th>
23727          <th class="th_hal_version">Initial HIDL HAL version</th>
23728          <th class="th_tags">Tags</th>
23729        </tr>
23730      </thead>
23731
23732      <tbody>
23733
23734
23735
23736
23737
23738
23739
23740
23741
23742
23743          <tr class="entry" id="controls_android.sensor.exposureTime">
23744            <td class="entry_name
23745             " rowspan="3">
23746              android.<wbr/>sensor.<wbr/>exposure<wbr/>Time
23747            </td>
23748            <td class="entry_type">
23749                <span class="entry_type_name">int64</span>
23750
23751              <span class="entry_type_visibility"> [public]</span>
23752
23753
23754              <span class="entry_type_hwlevel">[full] </span>
23755
23756
23757
23758
23759            </td> <!-- entry_type -->
23760
23761            <td class="entry_description">
23762              <p>Duration each pixel is exposed to
23763light.<wbr/></p>
23764            </td>
23765
23766            <td class="entry_units">
23767              Nanoseconds
23768            </td>
23769
23770            <td class="entry_range">
23771              <p><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></p>
23772            </td>
23773
23774            <td class="entry_hal_version">
23775              <p>3.<wbr/>2</p>
23776            </td>
23777
23778            <td class="entry_tags">
23779              <ul class="entry_tags">
23780                  <li><a href="#tag_V1">V1</a></li>
23781              </ul>
23782            </td>
23783
23784          </tr>
23785          <tr class="entries_header">
23786            <th class="th_details" colspan="6">Details</th>
23787          </tr>
23788          <tr class="entry_cont">
23789            <td class="entry_details" colspan="6">
23790              <p>If the sensor can't expose this exact duration,<wbr/> it will shorten the
23791duration exposed to the nearest possible value (rather than expose longer).<wbr/>
23792The final exposure time used will be available in the output capture result.<wbr/></p>
23793<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
23794OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
23795            </td>
23796          </tr>
23797
23798
23799          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23800           <!-- end of entry -->
23801
23802
23803          <tr class="entry" id="controls_android.sensor.frameDuration">
23804            <td class="entry_name
23805             " rowspan="5">
23806              android.<wbr/>sensor.<wbr/>frame<wbr/>Duration
23807            </td>
23808            <td class="entry_type">
23809                <span class="entry_type_name">int64</span>
23810
23811              <span class="entry_type_visibility"> [public]</span>
23812
23813
23814              <span class="entry_type_hwlevel">[full] </span>
23815
23816
23817
23818
23819            </td> <!-- entry_type -->
23820
23821            <td class="entry_description">
23822              <p>Duration from start of frame exposure to
23823start of next frame exposure.<wbr/></p>
23824            </td>
23825
23826            <td class="entry_units">
23827              Nanoseconds
23828            </td>
23829
23830            <td class="entry_range">
23831              <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/>
23832The duration is capped to <code>max(duration,<wbr/> exposureTime + overhead)</code>.<wbr/></p>
23833            </td>
23834
23835            <td class="entry_hal_version">
23836              <p>3.<wbr/>2</p>
23837            </td>
23838
23839            <td class="entry_tags">
23840              <ul class="entry_tags">
23841                  <li><a href="#tag_V1">V1</a></li>
23842              </ul>
23843            </td>
23844
23845          </tr>
23846          <tr class="entries_header">
23847            <th class="th_details" colspan="6">Details</th>
23848          </tr>
23849          <tr class="entry_cont">
23850            <td class="entry_details" colspan="6">
23851              <p>The maximum frame rate that can be supported by a camera subsystem is
23852a function of many factors:</p>
23853<ul>
23854<li>Requested resolutions of output image streams</li>
23855<li>Availability of binning /<wbr/> skipping modes on the imager</li>
23856<li>The bandwidth of the imager interface</li>
23857<li>The bandwidth of the various ISP processing blocks</li>
23858</ul>
23859<p>Since these factors can vary greatly between different ISPs and
23860sensors,<wbr/> the camera abstraction tries to represent the bandwidth
23861restrictions with as simple a model as possible.<wbr/></p>
23862<p>The model presented has the following characteristics:</p>
23863<ul>
23864<li>The image sensor is always configured to output the smallest
23865resolution possible given the application's requested output stream
23866sizes.<wbr/>  The smallest resolution is defined as being at least as large
23867as the largest requested output stream size; the camera pipeline must
23868never digitally upsample sensor data when the crop region covers the
23869whole sensor.<wbr/> In general,<wbr/> this means that if only small output stream
23870resolutions are configured,<wbr/> the sensor can provide a higher frame
23871rate.<wbr/></li>
23872<li>Since any request may use any or all the currently configured
23873output streams,<wbr/> the sensor and ISP must be configured to support
23874scaling a single capture to all the streams at the same time.<wbr/>  This
23875means the camera pipeline must be ready to produce the largest
23876requested output size without any delay.<wbr/>  Therefore,<wbr/> the overall
23877frame rate of a given configured stream set is governed only by the
23878largest requested stream resolution.<wbr/></li>
23879<li>Using more than one output stream in a request does not affect the
23880frame duration.<wbr/></li>
23881<li>Certain format-streams may need to do additional background processing
23882before data is consumed/<wbr/>produced by that stream.<wbr/> These processors
23883can run concurrently to the rest of the camera pipeline,<wbr/> but
23884cannot process more than 1 capture at a time.<wbr/></li>
23885</ul>
23886<p>The necessary information for the application,<wbr/> given the model above,<wbr/> is provided via
23887<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/>
23888These are used to determine the maximum frame rate /<wbr/> minimum frame duration that is
23889possible for a given stream configuration.<wbr/></p>
23890<p>Specifically,<wbr/> the application can use the following rules to
23891determine the minimum frame duration it can request from the camera
23892device:</p>
23893<ol>
23894<li>Let the set of currently configured input/<wbr/>output streams be called <code>S</code>.<wbr/></li>
23895<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>
23896(with its respective size/<wbr/>format).<wbr/> Let this set of frame durations be called <code>F</code>.<wbr/></li>
23897<li>For any given request <code>R</code>,<wbr/> the minimum frame duration allowed for <code>R</code> is the maximum
23898out 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>
23899</ol>
23900<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>
23901using its respective size/<wbr/>format),<wbr/> then the frame duration in <code>F</code> determines the steady
23902state frame rate that the application will get if it uses <code>R</code> as a repeating request.<wbr/> Let
23903this special kind of request be called <code>Rsimple</code>.<wbr/></p>
23904<p>A repeating request <code>Rsimple</code> can be <em>occasionally</em> interleaved by a single capture of a
23905new request <code>Rstall</code> (which has at least one in-use stream with a non-0 stall time) and if
23906<code>Rstall</code> has the same minimum frame duration this will not cause a frame rate loss if all
23907buffers from the previous <code>Rstall</code> have already been delivered.<wbr/></p>
23908<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>
23909<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
23910OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
23911            </td>
23912          </tr>
23913
23914          <tr class="entries_header">
23915            <th class="th_details" colspan="6">HAL Implementation Details</th>
23916          </tr>
23917          <tr class="entry_cont">
23918            <td class="entry_details" colspan="6">
23919              <p>For more details about stalling,<wbr/> see
23920<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>.<wbr/></p>
23921            </td>
23922          </tr>
23923
23924          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23925           <!-- end of entry -->
23926
23927
23928          <tr class="entry" id="controls_android.sensor.sensitivity">
23929            <td class="entry_name
23930             " rowspan="5">
23931              android.<wbr/>sensor.<wbr/>sensitivity
23932            </td>
23933            <td class="entry_type">
23934                <span class="entry_type_name">int32</span>
23935
23936              <span class="entry_type_visibility"> [public]</span>
23937
23938
23939              <span class="entry_type_hwlevel">[full] </span>
23940
23941
23942
23943
23944            </td> <!-- entry_type -->
23945
23946            <td class="entry_description">
23947              <p>The amount of gain applied to sensor data
23948before processing.<wbr/></p>
23949            </td>
23950
23951            <td class="entry_units">
23952              ISO arithmetic units
23953            </td>
23954
23955            <td class="entry_range">
23956              <p><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></p>
23957            </td>
23958
23959            <td class="entry_hal_version">
23960              <p>3.<wbr/>2</p>
23961            </td>
23962
23963            <td class="entry_tags">
23964              <ul class="entry_tags">
23965                  <li><a href="#tag_V1">V1</a></li>
23966              </ul>
23967            </td>
23968
23969          </tr>
23970          <tr class="entries_header">
23971            <th class="th_details" colspan="6">Details</th>
23972          </tr>
23973          <tr class="entry_cont">
23974            <td class="entry_details" colspan="6">
23975              <p>The sensitivity is the standard ISO sensitivity value,<wbr/>
23976as defined in ISO 12232:2006.<wbr/></p>
23977<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
23978if if it less than <a href="#static_android.sensor.maxAnalogSensitivity">android.<wbr/>sensor.<wbr/>max<wbr/>Analog<wbr/>Sensitivity</a>,<wbr/> the camera device
23979is guaranteed to use only analog amplification for applying the gain.<wbr/></p>
23980<p>If the camera device cannot apply the exact sensitivity
23981requested,<wbr/> it will reduce the gain to the nearest supported
23982value.<wbr/> The final sensitivity used will be available in the
23983output capture result.<wbr/></p>
23984<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
23985OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
23986<p>Note that for devices supporting postRawSensitivityBoost,<wbr/> the total sensitivity applied
23987to the final processed image is the combination of <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> and
23988<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
23989sensitivity from last capture result of an auto request for a manual request,<wbr/> in order
23990to achieve the same brightness in the output image,<wbr/> the application should also
23991set postRawSensitivityBoost.<wbr/></p>
23992            </td>
23993          </tr>
23994
23995          <tr class="entries_header">
23996            <th class="th_details" colspan="6">HAL Implementation Details</th>
23997          </tr>
23998          <tr class="entry_cont">
23999            <td class="entry_details" colspan="6">
24000              <p>ISO 12232:2006 REI method is acceptable.<wbr/></p>
24001            </td>
24002          </tr>
24003
24004          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24005           <!-- end of entry -->
24006
24007
24008          <tr class="entry" id="controls_android.sensor.testPatternData">
24009            <td class="entry_name
24010             " rowspan="5">
24011              android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data
24012            </td>
24013            <td class="entry_type">
24014                <span class="entry_type_name">int32</span>
24015                <span class="entry_type_container">x</span>
24016
24017                <span class="entry_type_array">
24018                  4
24019                </span>
24020              <span class="entry_type_visibility"> [public]</span>
24021
24022
24023
24024
24025
24026
24027            </td> <!-- entry_type -->
24028
24029            <td class="entry_description">
24030              <p>A pixel <code>[R,<wbr/> G_<wbr/>even,<wbr/> G_<wbr/>odd,<wbr/> B]</code> that supplies the test pattern
24031when <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a> is SOLID_<wbr/>COLOR.<wbr/></p>
24032            </td>
24033
24034            <td class="entry_units">
24035            </td>
24036
24037            <td class="entry_range">
24038            </td>
24039
24040            <td class="entry_hal_version">
24041              <p>3.<wbr/>2</p>
24042            </td>
24043
24044            <td class="entry_tags">
24045            </td>
24046
24047          </tr>
24048          <tr class="entries_header">
24049            <th class="th_details" colspan="6">Details</th>
24050          </tr>
24051          <tr class="entry_cont">
24052            <td class="entry_details" colspan="6">
24053              <p>Each color channel is treated as an unsigned 32-bit integer.<wbr/>
24054The camera device then uses the most significant X bits
24055that correspond to how many bits are in its Bayer raw sensor
24056output.<wbr/></p>
24057<p>For example,<wbr/> a sensor with RAW10 Bayer output would use the
2405810 most significant bits from each color channel.<wbr/></p>
24059            </td>
24060          </tr>
24061
24062          <tr class="entries_header">
24063            <th class="th_details" colspan="6">HAL Implementation Details</th>
24064          </tr>
24065          <tr class="entry_cont">
24066            <td class="entry_details" colspan="6">
24067
24068            </td>
24069          </tr>
24070
24071          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24072           <!-- end of entry -->
24073
24074
24075          <tr class="entry" id="controls_android.sensor.testPatternMode">
24076            <td class="entry_name
24077             " rowspan="5">
24078              android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode
24079            </td>
24080            <td class="entry_type">
24081                <span class="entry_type_name entry_type_name_enum">int32</span>
24082
24083              <span class="entry_type_visibility"> [public]</span>
24084
24085
24086
24087
24088
24089                <ul class="entry_type_enum">
24090                  <li>
24091                    <span class="entry_type_enum_name">OFF (v3.2)</span>
24092                    <span class="entry_type_enum_notes"><p>No test pattern mode is used,<wbr/> and the camera
24093device returns captures from the image sensor.<wbr/></p>
24094<p>This is the default if the key is not set.<wbr/></p></span>
24095                  </li>
24096                  <li>
24097                    <span class="entry_type_enum_name">SOLID_COLOR (v3.2)</span>
24098                    <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
24099respective color channel provided in
24100<a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a>.<wbr/></p>
24101<p>For example:</p>
24102<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]
24103</code></pre>
24104<p>All green pixels are 100% green.<wbr/> All red/<wbr/>blue pixels are black.<wbr/></p>
24105<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]
24106</code></pre>
24107<p>All red pixels are 100% red.<wbr/> Only the odd green pixels
24108are 100% green.<wbr/> All blue pixels are 100% black.<wbr/></p></span>
24109                  </li>
24110                  <li>
24111                    <span class="entry_type_enum_name">COLOR_BARS (v3.2)</span>
24112                    <span class="entry_type_enum_notes"><p>All pixel data is replaced with an 8-bar color pattern.<wbr/></p>
24113<p>The vertical bars (left-to-right) are as follows:</p>
24114<ul>
24115<li>100% white</li>
24116<li>yellow</li>
24117<li>cyan</li>
24118<li>green</li>
24119<li>magenta</li>
24120<li>red</li>
24121<li>blue</li>
24122<li>black</li>
24123</ul>
24124<p>In general the image would look like the following:</p>
24125<pre><code>W Y C G M R B K
24126W Y C G M R B K
24127W Y C G M R B K
24128W Y C G M R B K
24129W Y C G M R B K
24130.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
24131.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
24132.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
24133
24134(B = Blue,<wbr/> K = Black)
24135</code></pre>
24136<p>Each bar should take up 1/<wbr/>8 of the sensor pixel array width.<wbr/>
24137When this is not possible,<wbr/> the bar size should be rounded
24138down to the nearest integer and the pattern can repeat
24139on the right side.<wbr/></p>
24140<p>Each bar's height must always take up the full sensor
24141pixel array height.<wbr/></p>
24142<p>Each pixel in this test pattern must be set to either
241430% intensity or 100% intensity.<wbr/></p></span>
24144                  </li>
24145                  <li>
24146                    <span class="entry_type_enum_name">COLOR_BARS_FADE_TO_GRAY (v3.2)</span>
24147                    <span class="entry_type_enum_notes"><p>The test pattern is similar to COLOR_<wbr/>BARS,<wbr/> except that
24148each bar should start at its specified color at the top,<wbr/>
24149and fade to gray at the bottom.<wbr/></p>
24150<p>Furthermore each bar is further subdivided into a left and
24151right half.<wbr/> The left half should have a smooth gradient,<wbr/>
24152and the right half should have a quantized gradient.<wbr/></p>
24153<p>In particular,<wbr/> the right half's should consist of blocks of the
24154same color for 1/<wbr/>16th active sensor pixel array width.<wbr/></p>
24155<p>The least significant bits in the quantized gradient should
24156be copied from the most significant bits of the smooth gradient.<wbr/></p>
24157<p>The height of each bar should always be a multiple of 128.<wbr/>
24158When this is not the case,<wbr/> the pattern should repeat at the bottom
24159of the image.<wbr/></p></span>
24160                  </li>
24161                  <li>
24162                    <span class="entry_type_enum_name">PN9 (v3.2)</span>
24163                    <span class="entry_type_enum_notes"><p>All pixel data is replaced by a pseudo-random sequence
24164generated from a PN9 512-bit sequence (typically implemented
24165in hardware with a linear feedback shift register).<wbr/></p>
24166<p>The generator should be reset at the beginning of each frame,<wbr/>
24167and thus each subsequent raw frame with this test pattern should
24168be exactly the same as the last.<wbr/></p></span>
24169                  </li>
24170                  <li>
24171                    <span class="entry_type_enum_name">BLACK (v3.6)</span>
24172                    <span class="entry_type_enum_hidden">[test]</span>
24173                    <span class="entry_type_enum_notes"><p>All pixel data is replaced by 0% intensity (black) values.<wbr/></p>
24174<p>This test pattern is identical to SOLID_<wbr/>COLOR with a value of <code>[0,<wbr/> 0,<wbr/> 0,<wbr/> 0]</code> for
24175<a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a>.<wbr/>  It is recommended that devices implement full
24176SOLID_<wbr/>COLOR support instead,<wbr/> but BLACK can be used to provide minimal support for a
24177test pattern suitable for privacy use cases.<wbr/></p></span>
24178                  </li>
24179                  <li>
24180                    <span class="entry_type_enum_name">CUSTOM1 (v3.2)</span>
24181                    <span class="entry_type_enum_value">256</span>
24182                    <span class="entry_type_enum_notes"><p>The first custom test pattern.<wbr/> All custom patterns that are
24183available only on this camera device are at least this numeric
24184value.<wbr/></p>
24185<p>All of the custom test patterns will be static
24186(that is the raw image must not vary from frame to frame).<wbr/></p></span>
24187                  </li>
24188                </ul>
24189
24190            </td> <!-- entry_type -->
24191
24192            <td class="entry_description">
24193              <p>When enabled,<wbr/> the sensor sends a test pattern instead of
24194doing a real exposure from the camera.<wbr/></p>
24195            </td>
24196
24197            <td class="entry_units">
24198            </td>
24199
24200            <td class="entry_range">
24201              <p><a href="#static_android.sensor.availableTestPatternModes">android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes</a></p>
24202            </td>
24203
24204            <td class="entry_hal_version">
24205              <p>3.<wbr/>2</p>
24206            </td>
24207
24208            <td class="entry_tags">
24209            </td>
24210
24211          </tr>
24212          <tr class="entries_header">
24213            <th class="th_details" colspan="6">Details</th>
24214          </tr>
24215          <tr class="entry_cont">
24216            <td class="entry_details" colspan="6">
24217              <p>When a test pattern is enabled,<wbr/> all manual sensor controls specified
24218by android.<wbr/>sensor.<wbr/>* will be ignored.<wbr/> All other controls should
24219work as normal.<wbr/></p>
24220<p>For example,<wbr/> if manual flash is enabled,<wbr/> flash firing should still
24221occur (and that the test pattern remain unmodified,<wbr/> since the flash
24222would not actually affect it).<wbr/></p>
24223<p>Defaults to OFF.<wbr/></p>
24224            </td>
24225          </tr>
24226
24227          <tr class="entries_header">
24228            <th class="th_details" colspan="6">HAL Implementation Details</th>
24229          </tr>
24230          <tr class="entry_cont">
24231            <td class="entry_details" colspan="6">
24232              <p>All test patterns are specified in the Bayer domain.<wbr/></p>
24233<p>The HAL may choose to substitute test patterns from the sensor
24234with test patterns from on-device memory.<wbr/> In that case,<wbr/> it should be
24235indistinguishable to the ISP whether the data came from the
24236sensor interconnect bus (such as CSI2) or memory.<wbr/></p>
24237<p>For privacy use cases,<wbr/> if the camera device:</p>
24238<ul>
24239<li>supports SOLID_<wbr/>COLOR or BLACK test patterns,<wbr/></li>
24240<li>is a logical multi-camera,<wbr/> and</li>
24241<li>lists testPatternMode as a physical request key,<wbr/></li>
24242</ul>
24243<p>Each physical camera must support the same SOLID_<wbr/>COLOR and/<wbr/>or BLACK test patterns
24244as the logical camera.<wbr/></p>
24245            </td>
24246          </tr>
24247
24248          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24249           <!-- end of entry -->
24250
24251
24252          <tr class="entry" id="controls_android.sensor.pixelMode">
24253            <td class="entry_name
24254             " rowspan="3">
24255              android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode
24256            </td>
24257            <td class="entry_type">
24258                <span class="entry_type_name entry_type_name_enum">byte</span>
24259
24260              <span class="entry_type_visibility"> [public]</span>
24261
24262
24263
24264
24265
24266                <ul class="entry_type_enum">
24267                  <li>
24268                    <span class="entry_type_enum_name">DEFAULT (v3.6)</span>
24269                    <span class="entry_type_enum_notes"><p>This is the default sensor pixel mode.<wbr/> This is the only sensor pixel mode
24270supported unless a camera device advertises
24271<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>.<wbr/></p></span>
24272                  </li>
24273                  <li>
24274                    <span class="entry_type_enum_name">MAXIMUM_RESOLUTION (v3.6)</span>
24275                    <span class="entry_type_enum_notes"><p>This sensor pixel mode is offered by devices with capability
24276<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>.<wbr/>
24277In this mode,<wbr/> sensors typically do not bin pixels,<wbr/> as a result can offer larger
24278image sizes.<wbr/></p></span>
24279                  </li>
24280                </ul>
24281
24282            </td> <!-- entry_type -->
24283
24284            <td class="entry_description">
24285              <p>Switches sensor pixel mode between maximum resolution mode and default mode.<wbr/></p>
24286            </td>
24287
24288            <td class="entry_units">
24289            </td>
24290
24291            <td class="entry_range">
24292            </td>
24293
24294            <td class="entry_hal_version">
24295              <p>3.<wbr/>6</p>
24296            </td>
24297
24298            <td class="entry_tags">
24299            </td>
24300
24301          </tr>
24302          <tr class="entries_header">
24303            <th class="th_details" colspan="6">Details</th>
24304          </tr>
24305          <tr class="entry_cont">
24306            <td class="entry_details" colspan="6">
24307              <p>This key controls whether the camera sensor operates in
24308<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>
24309mode or not.<wbr/> By default,<wbr/> all camera devices operate in
24310<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/>
24311When operating in
24312<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
24313with <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>
24314capability would typically perform pixel binning in order to improve low light
24315performance,<wbr/> noise reduction etc.<wbr/> However,<wbr/> in
24316<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>
24317mode (supported only
24318by <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>
24319sensors),<wbr/> sensors typically operate in unbinned mode allowing for a larger image size.<wbr/>
24320The stream configurations supported in
24321<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>
24322mode are also different from those of
24323<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/>
24324They can be queried through
24325<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#get">CameraCharacteristics#get</a> with
24326<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/>
24327Unless reported by both
24328<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html">StreamConfigurationMap</a>s,<wbr/> the outputs from
24329<code><a href="#static_android.scaler.streamConfigurationMapMaximumResolution">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map<wbr/>Maximum<wbr/>Resolution</a></code> and
24330<code><a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a></code>
24331must not be mixed in the same CaptureRequest.<wbr/> In other words,<wbr/> these outputs are
24332exclusive to each other.<wbr/>
24333This key does not need to be set for reprocess requests.<wbr/></p>
24334            </td>
24335          </tr>
24336
24337
24338          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24339           <!-- end of entry -->
24340
24341
24342
24343      <!-- end of kind -->
24344      </tbody>
24345      <tr><td colspan="7" class="kind">static</td></tr>
24346
24347      <thead class="entries_header">
24348        <tr>
24349          <th class="th_name">Property Name</th>
24350          <th class="th_type">Type</th>
24351          <th class="th_description">Description</th>
24352          <th class="th_units">Units</th>
24353          <th class="th_range">Range</th>
24354          <th class="th_hal_version">Initial HIDL HAL version</th>
24355          <th class="th_tags">Tags</th>
24356        </tr>
24357      </thead>
24358
24359      <tbody>
24360
24361
24362
24363
24364
24365
24366
24367
24368
24369
24370
24371
24372          <tr class="entry" id="static_android.sensor.info.activeArraySize">
24373            <td class="entry_name
24374             " rowspan="5">
24375              android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
24376            </td>
24377            <td class="entry_type">
24378                <span class="entry_type_name">int32</span>
24379                <span class="entry_type_container">x</span>
24380
24381                <span class="entry_type_array">
24382                  4
24383                </span>
24384              <span class="entry_type_visibility"> [public as rectangle]</span>
24385
24386
24387              <span class="entry_type_hwlevel">[legacy] </span>
24388
24389
24390                <div class="entry_type_notes">Four ints defining the active pixel rectangle</div>
24391
24392
24393            </td> <!-- entry_type -->
24394
24395            <td class="entry_description">
24396              <p>The area of the image sensor which corresponds to active pixels after any geometric
24397distortion correction has been applied.<wbr/></p>
24398            </td>
24399
24400            <td class="entry_units">
24401              Pixel coordinates on the image sensor
24402            </td>
24403
24404            <td class="entry_range">
24405            </td>
24406
24407            <td class="entry_hal_version">
24408              <p>3.<wbr/>2</p>
24409            </td>
24410
24411            <td class="entry_tags">
24412              <ul class="entry_tags">
24413                  <li><a href="#tag_RAW">RAW</a></li>
24414              </ul>
24415            </td>
24416
24417          </tr>
24418          <tr class="entries_header">
24419            <th class="th_details" colspan="6">Details</th>
24420          </tr>
24421          <tr class="entry_cont">
24422            <td class="entry_details" colspan="6">
24423              <p>This is the rectangle representing the size of the active region of the sensor (i.<wbr/>e.<wbr/>
24424the region that actually receives light from the scene) after any geometric correction
24425has been applied,<wbr/> and should be treated as the maximum size in pixels of any of the
24426image output formats aside from the raw formats.<wbr/></p>
24427<p>This rectangle is defined relative to the full pixel array; (0,<wbr/>0) is the top-left of
24428the full pixel array,<wbr/> and the size of the full pixel array is given by
24429<a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
24430<p>The coordinate system for most other keys that list pixel coordinates,<wbr/> including
24431<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
24432this field,<wbr/> with <code>(0,<wbr/> 0)</code> being the top-left of this rectangle.<wbr/></p>
24433<p>The active array may be smaller than the full pixel array,<wbr/> since the full array may
24434include black calibration pixels or other inactive regions.<wbr/></p>
24435<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
24436array 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>
24437<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
24438be 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
24439pre-correction active array and active array accounts for scaling or cropping caused
24440by lens geometric distortion correction.<wbr/></p>
24441<p>In general,<wbr/> application should always refer to active array size for controls like
24442metering regions or crop region.<wbr/> Two exceptions are when the application is dealing with
24443RAW image buffers (RAW_<wbr/>SENSOR,<wbr/> RAW10,<wbr/> RAW12 etc),<wbr/> or when application explicitly set
24444<a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> to OFF.<wbr/> In these cases,<wbr/> application should refer
24445to <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>
24446            </td>
24447          </tr>
24448
24449          <tr class="entries_header">
24450            <th class="th_details" colspan="6">HAL Implementation Details</th>
24451          </tr>
24452          <tr class="entry_cont">
24453            <td class="entry_details" colspan="6">
24454              <p>This array contains <code>(xmin,<wbr/> ymin,<wbr/> width,<wbr/> height)</code>.<wbr/> The <code>(xmin,<wbr/> ymin)</code> must be
24455&gt;= <code>(0,<wbr/>0)</code>.<wbr/>
24456The <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>
24457            </td>
24458          </tr>
24459
24460          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24461           <!-- end of entry -->
24462
24463
24464          <tr class="entry" id="static_android.sensor.info.sensitivityRange">
24465            <td class="entry_name
24466             " rowspan="3">
24467              android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range
24468            </td>
24469            <td class="entry_type">
24470                <span class="entry_type_name">int32</span>
24471                <span class="entry_type_container">x</span>
24472
24473                <span class="entry_type_array">
24474                  2
24475                </span>
24476              <span class="entry_type_visibility"> [public as rangeInt]</span>
24477
24478
24479              <span class="entry_type_hwlevel">[full] </span>
24480
24481
24482                <div class="entry_type_notes">Range of supported sensitivities</div>
24483
24484
24485            </td> <!-- entry_type -->
24486
24487            <td class="entry_description">
24488              <p>Range of sensitivities for <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> supported by this
24489camera device.<wbr/></p>
24490            </td>
24491
24492            <td class="entry_units">
24493            </td>
24494
24495            <td class="entry_range">
24496              <p>Min &lt;= 100,<wbr/> Max &gt;= 800</p>
24497            </td>
24498
24499            <td class="entry_hal_version">
24500              <p>3.<wbr/>2</p>
24501            </td>
24502
24503            <td class="entry_tags">
24504              <ul class="entry_tags">
24505                  <li><a href="#tag_BC">BC</a></li>
24506                  <li><a href="#tag_V1">V1</a></li>
24507              </ul>
24508            </td>
24509
24510          </tr>
24511          <tr class="entries_header">
24512            <th class="th_details" colspan="6">Details</th>
24513          </tr>
24514          <tr class="entry_cont">
24515            <td class="entry_details" colspan="6">
24516              <p>The values are the standard ISO sensitivity values,<wbr/>
24517as defined in ISO 12232:2006.<wbr/></p>
24518            </td>
24519          </tr>
24520
24521
24522          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24523           <!-- end of entry -->
24524
24525
24526          <tr class="entry" id="static_android.sensor.info.colorFilterArrangement">
24527            <td class="entry_name
24528             " rowspan="3">
24529              android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement
24530            </td>
24531            <td class="entry_type">
24532                <span class="entry_type_name entry_type_name_enum">byte</span>
24533
24534              <span class="entry_type_visibility"> [public]</span>
24535
24536
24537              <span class="entry_type_hwlevel">[full] </span>
24538
24539
24540
24541                <ul class="entry_type_enum">
24542                  <li>
24543                    <span class="entry_type_enum_name">RGGB (v3.2)</span>
24544                  </li>
24545                  <li>
24546                    <span class="entry_type_enum_name">GRBG (v3.2)</span>
24547                  </li>
24548                  <li>
24549                    <span class="entry_type_enum_name">GBRG (v3.2)</span>
24550                  </li>
24551                  <li>
24552                    <span class="entry_type_enum_name">BGGR (v3.2)</span>
24553                  </li>
24554                  <li>
24555                    <span class="entry_type_enum_name">RGB (v3.2)</span>
24556                    <span class="entry_type_enum_notes"><p>Sensor is not Bayer; output has 3 16-bit
24557values for each pixel,<wbr/> instead of just 1 16-bit value
24558per pixel.<wbr/></p></span>
24559                  </li>
24560                  <li>
24561                    <span class="entry_type_enum_name">MONO (v3.4)</span>
24562                    <span class="entry_type_enum_notes"><p>Sensor doesn't have any Bayer color filter.<wbr/>
24563Such sensor captures visible light in monochrome.<wbr/> The exact weighting and
24564wavelengths captured is not specified,<wbr/> but generally only includes the visible
24565frequencies.<wbr/> This value implies a MONOCHROME camera.<wbr/></p></span>
24566                  </li>
24567                  <li>
24568                    <span class="entry_type_enum_name">NIR (v3.4)</span>
24569                    <span class="entry_type_enum_notes"><p>Sensor has a near infrared filter capturing light with wavelength between
24570roughly 750nm and 1400nm,<wbr/> and the same filter covers the whole sensor array.<wbr/> This
24571value implies a MONOCHROME camera.<wbr/></p></span>
24572                  </li>
24573                </ul>
24574
24575            </td> <!-- entry_type -->
24576
24577            <td class="entry_description">
24578              <p>The arrangement of color filters on sensor;
24579represents the colors in the top-left 2x2 section of
24580the sensor,<wbr/> in reading order,<wbr/> for a Bayer camera,<wbr/> or the
24581light spectrum it captures for MONOCHROME camera.<wbr/></p>
24582            </td>
24583
24584            <td class="entry_units">
24585            </td>
24586
24587            <td class="entry_range">
24588            </td>
24589
24590            <td class="entry_hal_version">
24591              <p>3.<wbr/>2</p>
24592            </td>
24593
24594            <td class="entry_tags">
24595              <ul class="entry_tags">
24596                  <li><a href="#tag_RAW">RAW</a></li>
24597              </ul>
24598            </td>
24599
24600          </tr>
24601
24602          <tr class="entries_header">
24603            <th class="th_details" colspan="6">HAL Implementation Details</th>
24604          </tr>
24605          <tr class="entry_cont">
24606            <td class="entry_details" colspan="6">
24607              <p>Starting from Android Q,<wbr/> the colorFilterArrangement for a MONOCHROME camera must be
24608single color patterns,<wbr/> such as MONO or NIR.<wbr/></p>
24609            </td>
24610          </tr>
24611
24612          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24613           <!-- end of entry -->
24614
24615
24616          <tr class="entry" id="static_android.sensor.info.exposureTimeRange">
24617            <td class="entry_name
24618             " rowspan="3">
24619              android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range
24620            </td>
24621            <td class="entry_type">
24622                <span class="entry_type_name">int64</span>
24623                <span class="entry_type_container">x</span>
24624
24625                <span class="entry_type_array">
24626                  2
24627                </span>
24628              <span class="entry_type_visibility"> [public as rangeLong]</span>
24629
24630
24631              <span class="entry_type_hwlevel">[full] </span>
24632
24633
24634                <div class="entry_type_notes">nanoseconds</div>
24635
24636
24637            </td> <!-- entry_type -->
24638
24639            <td class="entry_description">
24640              <p>The range of image exposure times for <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> supported
24641by this camera device.<wbr/></p>
24642            </td>
24643
24644            <td class="entry_units">
24645              Nanoseconds
24646            </td>
24647
24648            <td class="entry_range">
24649              <p>The minimum exposure time will be less than 100 us.<wbr/> For FULL
24650capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/>
24651the maximum exposure time will be greater than 100ms.<wbr/></p>
24652            </td>
24653
24654            <td class="entry_hal_version">
24655              <p>3.<wbr/>2</p>
24656            </td>
24657
24658            <td class="entry_tags">
24659              <ul class="entry_tags">
24660                  <li><a href="#tag_V1">V1</a></li>
24661              </ul>
24662            </td>
24663
24664          </tr>
24665
24666          <tr class="entries_header">
24667            <th class="th_details" colspan="6">HAL Implementation Details</th>
24668          </tr>
24669          <tr class="entry_cont">
24670            <td class="entry_details" colspan="6">
24671              <p>For FULL capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/>
24672The maximum of the range SHOULD be at least 1 second (1e9),<wbr/> MUST be at least
24673100ms.<wbr/></p>
24674            </td>
24675          </tr>
24676
24677          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24678           <!-- end of entry -->
24679
24680
24681          <tr class="entry" id="static_android.sensor.info.maxFrameDuration">
24682            <td class="entry_name
24683             " rowspan="5">
24684              android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration
24685            </td>
24686            <td class="entry_type">
24687                <span class="entry_type_name">int64</span>
24688
24689              <span class="entry_type_visibility"> [public]</span>
24690
24691
24692              <span class="entry_type_hwlevel">[full] </span>
24693
24694
24695
24696
24697            </td> <!-- entry_type -->
24698
24699            <td class="entry_description">
24700              <p>The maximum possible frame duration (minimum frame rate) for
24701<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> that is supported this camera device.<wbr/></p>
24702            </td>
24703
24704            <td class="entry_units">
24705              Nanoseconds
24706            </td>
24707
24708            <td class="entry_range">
24709              <p>For FULL capability devices
24710(<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/> at least 100ms.<wbr/></p>
24711            </td>
24712
24713            <td class="entry_hal_version">
24714              <p>3.<wbr/>2</p>
24715            </td>
24716
24717            <td class="entry_tags">
24718              <ul class="entry_tags">
24719                  <li><a href="#tag_V1">V1</a></li>
24720              </ul>
24721            </td>
24722
24723          </tr>
24724          <tr class="entries_header">
24725            <th class="th_details" colspan="6">Details</th>
24726          </tr>
24727          <tr class="entry_cont">
24728            <td class="entry_details" colspan="6">
24729              <p>Attempting to use frame durations beyond the maximum will result in the frame
24730duration being clipped to the maximum.<wbr/> See that control for a full definition of frame
24731durations.<wbr/></p>
24732<p>Refer to <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>
24733for the minimum frame duration values.<wbr/></p>
24734            </td>
24735          </tr>
24736
24737          <tr class="entries_header">
24738            <th class="th_details" colspan="6">HAL Implementation Details</th>
24739          </tr>
24740          <tr class="entry_cont">
24741            <td class="entry_details" colspan="6">
24742              <p>For FULL capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/>
24743The maximum of the range SHOULD be at least
247441 second (1e9),<wbr/> MUST be at least 100ms (100e6).<wbr/></p>
24745<p><a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a> must be greater or
24746equal to the <a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a> max
24747value (since exposure time overrides frame duration).<wbr/></p>
24748<p>Available minimum frame durations for JPEG must be no greater
24749than that of the YUV_<wbr/>420_<wbr/>888/<wbr/>IMPLEMENTATION_<wbr/>DEFINED
24750minimum frame durations (for that respective size).<wbr/></p>
24751<p>Since JPEG processing is considered offline and can take longer than
24752a single uncompressed capture,<wbr/> refer to
24753<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>
24754for details about encoding this scenario.<wbr/></p>
24755            </td>
24756          </tr>
24757
24758          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24759           <!-- end of entry -->
24760
24761
24762          <tr class="entry" id="static_android.sensor.info.physicalSize">
24763            <td class="entry_name
24764             " rowspan="5">
24765              android.<wbr/>sensor.<wbr/>info.<wbr/>physical<wbr/>Size
24766            </td>
24767            <td class="entry_type">
24768                <span class="entry_type_name">float</span>
24769                <span class="entry_type_container">x</span>
24770
24771                <span class="entry_type_array">
24772                  2
24773                </span>
24774              <span class="entry_type_visibility"> [public as sizeF]</span>
24775
24776
24777              <span class="entry_type_hwlevel">[legacy] </span>
24778
24779
24780                <div class="entry_type_notes">width x height</div>
24781
24782
24783            </td> <!-- entry_type -->
24784
24785            <td class="entry_description">
24786              <p>The physical dimensions of the full pixel
24787array.<wbr/></p>
24788            </td>
24789
24790            <td class="entry_units">
24791              Millimeters
24792            </td>
24793
24794            <td class="entry_range">
24795            </td>
24796
24797            <td class="entry_hal_version">
24798              <p>3.<wbr/>2</p>
24799            </td>
24800
24801            <td class="entry_tags">
24802              <ul class="entry_tags">
24803                  <li><a href="#tag_V1">V1</a></li>
24804                  <li><a href="#tag_BC">BC</a></li>
24805              </ul>
24806            </td>
24807
24808          </tr>
24809          <tr class="entries_header">
24810            <th class="th_details" colspan="6">Details</th>
24811          </tr>
24812          <tr class="entry_cont">
24813            <td class="entry_details" colspan="6">
24814              <p>This is the physical size of the sensor pixel
24815array defined by <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
24816            </td>
24817          </tr>
24818
24819          <tr class="entries_header">
24820            <th class="th_details" colspan="6">HAL Implementation Details</th>
24821          </tr>
24822          <tr class="entry_cont">
24823            <td class="entry_details" colspan="6">
24824              <p>Needed for FOV calculation for old API</p>
24825            </td>
24826          </tr>
24827
24828          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24829           <!-- end of entry -->
24830
24831
24832          <tr class="entry" id="static_android.sensor.info.pixelArraySize">
24833            <td class="entry_name
24834             " rowspan="3">
24835              android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size
24836            </td>
24837            <td class="entry_type">
24838                <span class="entry_type_name">int32</span>
24839                <span class="entry_type_container">x</span>
24840
24841                <span class="entry_type_array">
24842                  2
24843                </span>
24844              <span class="entry_type_visibility"> [public as size]</span>
24845
24846
24847              <span class="entry_type_hwlevel">[legacy] </span>
24848
24849
24850
24851
24852            </td> <!-- entry_type -->
24853
24854            <td class="entry_description">
24855              <p>Dimensions of the full pixel array,<wbr/> possibly
24856including black calibration pixels.<wbr/></p>
24857            </td>
24858
24859            <td class="entry_units">
24860              Pixels
24861            </td>
24862
24863            <td class="entry_range">
24864            </td>
24865
24866            <td class="entry_hal_version">
24867              <p>3.<wbr/>2</p>
24868            </td>
24869
24870            <td class="entry_tags">
24871              <ul class="entry_tags">
24872                  <li><a href="#tag_RAW">RAW</a></li>
24873                  <li><a href="#tag_BC">BC</a></li>
24874              </ul>
24875            </td>
24876
24877          </tr>
24878          <tr class="entries_header">
24879            <th class="th_details" colspan="6">Details</th>
24880          </tr>
24881          <tr class="entry_cont">
24882            <td class="entry_details" colspan="6">
24883              <p>The pixel count of the full pixel array of the image sensor,<wbr/> which covers
24884<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
24885the raw buffers produced by this sensor.<wbr/></p>
24886<p>If a camera device supports raw sensor formats,<wbr/> either this or
24887<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
24888output formats listed in <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html">StreamConfigurationMap</a>
24889(this depends on whether or not the image sensor returns buffers containing pixels that
24890are not part of the active array region for blacklevel calibration or other purposes).<wbr/></p>
24891<p>Some parts of the full pixel array may not receive light from the scene,<wbr/>
24892or 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
24893defines the rectangle of active pixels that will be included in processed image
24894formats.<wbr/></p>
24895            </td>
24896          </tr>
24897
24898
24899          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24900           <!-- end of entry -->
24901
24902
24903          <tr class="entry" id="static_android.sensor.info.whiteLevel">
24904            <td class="entry_name
24905             " rowspan="5">
24906              android.<wbr/>sensor.<wbr/>info.<wbr/>white<wbr/>Level
24907            </td>
24908            <td class="entry_type">
24909                <span class="entry_type_name">int32</span>
24910
24911              <span class="entry_type_visibility"> [public]</span>
24912
24913
24914
24915
24916
24917
24918            </td> <!-- entry_type -->
24919
24920            <td class="entry_description">
24921              <p>Maximum raw value output by sensor.<wbr/></p>
24922            </td>
24923
24924            <td class="entry_units">
24925            </td>
24926
24927            <td class="entry_range">
24928              <p>&gt; 255 (8-bit output)</p>
24929            </td>
24930
24931            <td class="entry_hal_version">
24932              <p>3.<wbr/>2</p>
24933            </td>
24934
24935            <td class="entry_tags">
24936              <ul class="entry_tags">
24937                  <li><a href="#tag_RAW">RAW</a></li>
24938              </ul>
24939            </td>
24940
24941          </tr>
24942          <tr class="entries_header">
24943            <th class="th_details" colspan="6">Details</th>
24944          </tr>
24945          <tr class="entry_cont">
24946            <td class="entry_details" colspan="6">
24947              <p>This specifies the fully-saturated encoding level for the raw
24948sample values from the sensor.<wbr/>  This is typically caused by the
24949sensor becoming highly non-linear or clipping.<wbr/> The minimum for
24950each channel is specified by the offset in the
24951<a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> key.<wbr/></p>
24952<p>The white level is typically determined either by sensor bit depth
24953(8-14 bits is expected),<wbr/> or by the point where the sensor response
24954becomes too non-linear to be useful.<wbr/>  The default value for this is
24955maximum representable value for a 16-bit raw sample (2^16 - 1).<wbr/></p>
24956<p>The white level values of captured images may vary for different
24957capture settings (e.<wbr/>g.,<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>).<wbr/> This key
24958represents a coarse approximation for such case.<wbr/> It is recommended
24959to use <a href="#dynamic_android.sensor.dynamicWhiteLevel">android.<wbr/>sensor.<wbr/>dynamic<wbr/>White<wbr/>Level</a> for captures when supported
24960by the camera device,<wbr/> which provides more accurate white level values.<wbr/></p>
24961            </td>
24962          </tr>
24963
24964          <tr class="entries_header">
24965            <th class="th_details" colspan="6">HAL Implementation Details</th>
24966          </tr>
24967          <tr class="entry_cont">
24968            <td class="entry_details" colspan="6">
24969              <p>The full bit depth of the sensor must be available in the raw data,<wbr/>
24970so the value for linear sensors should not be significantly lower
24971than maximum raw value supported,<wbr/> i.<wbr/>e.<wbr/> 2^(sensor bits per pixel).<wbr/></p>
24972            </td>
24973          </tr>
24974
24975          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24976           <!-- end of entry -->
24977
24978
24979          <tr class="entry" id="static_android.sensor.info.timestampSource">
24980            <td class="entry_name
24981             " rowspan="5">
24982              android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source
24983            </td>
24984            <td class="entry_type">
24985                <span class="entry_type_name entry_type_name_enum">byte</span>
24986
24987              <span class="entry_type_visibility"> [public]</span>
24988
24989
24990              <span class="entry_type_hwlevel">[legacy] </span>
24991
24992
24993
24994                <ul class="entry_type_enum">
24995                  <li>
24996                    <span class="entry_type_enum_name">UNKNOWN (v3.2)</span>
24997                    <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
24998not be compared to timestamps from other subsystems (e.<wbr/>g.<wbr/> accelerometer,<wbr/> gyro etc.<wbr/>),<wbr/>
24999or other instances of the same or different camera devices in the same system with
25000accuracy.<wbr/> However,<wbr/> the timestamps are roughly in the same timebase as
25001<a href="https://developer.android.com/reference/android/os/SystemClock.html#uptimeMillis">SystemClock#uptimeMillis</a>.<wbr/>  The accuracy is sufficient for tasks
25002like A/<wbr/>V synchronization for video recording,<wbr/> at least,<wbr/> and the timestamps can be
25003directly used together with timestamps from the audio subsystem for that task.<wbr/></p>
25004<p>Timestamps between streams and results for a single camera instance are comparable,<wbr/>
25005and the timestamps for all buffers and the result metadata generated by a single
25006capture are identical.<wbr/></p></span>
25007                  </li>
25008                  <li>
25009                    <span class="entry_type_enum_name">REALTIME (v3.2)</span>
25010                    <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
25011<a href="https://developer.android.com/reference/android/os/SystemClock.html#elapsedRealtimeNanos">SystemClock#elapsedRealtimeNanos</a>,<wbr/>
25012and they can be compared to other timestamps using that base.<wbr/></p>
25013<p>When buffers from a REALTIME device are passed directly to a video encoder from the
25014camera,<wbr/> automatic compensation is done to account for differing timebases of the
25015audio and camera subsystems.<wbr/>  If the application is receiving buffers and then later
25016sending them to a video encoder or other application where they are compared with
25017audio subsystem timestamps or similar,<wbr/> this compensation is not present.<wbr/>  In those
25018cases,<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
25019offset between the two sources can be measured once per active session and applied
25020to timestamps for sufficient accuracy for A/<wbr/>V sync.<wbr/></p></span>
25021                  </li>
25022                </ul>
25023
25024            </td> <!-- entry_type -->
25025
25026            <td class="entry_description">
25027              <p>The time base source for sensor capture start timestamps.<wbr/></p>
25028            </td>
25029
25030            <td class="entry_units">
25031            </td>
25032
25033            <td class="entry_range">
25034            </td>
25035
25036            <td class="entry_hal_version">
25037              <p>3.<wbr/>2</p>
25038            </td>
25039
25040            <td class="entry_tags">
25041              <ul class="entry_tags">
25042                  <li><a href="#tag_V1">V1</a></li>
25043              </ul>
25044            </td>
25045
25046          </tr>
25047          <tr class="entries_header">
25048            <th class="th_details" colspan="6">Details</th>
25049          </tr>
25050          <tr class="entry_cont">
25051            <td class="entry_details" colspan="6">
25052              <p>The timestamps provided for captures are always in nanoseconds and monotonic,<wbr/> but
25053may not based on a time source that can be compared to other system time sources.<wbr/></p>
25054<p>This characteristic defines the source for the timestamps,<wbr/> and therefore whether they
25055can be compared against other system time sources/<wbr/>timestamps.<wbr/></p>
25056            </td>
25057          </tr>
25058
25059          <tr class="entries_header">
25060            <th class="th_details" colspan="6">HAL Implementation Details</th>
25061          </tr>
25062          <tr class="entry_cont">
25063            <td class="entry_details" colspan="6">
25064              <p>For camera devices implement UNKNOWN,<wbr/> the camera framework expects that the timestamp
25065source to be SYSTEM_<wbr/>TIME_<wbr/>MONOTONIC.<wbr/> For camera devices implement REALTIME,<wbr/> the camera
25066framework expects that the timestamp source to be SYSTEM_<wbr/>TIME_<wbr/>BOOTTIME.<wbr/> See
25067system/<wbr/>core/<wbr/>include/<wbr/>utils/<wbr/>Timers.<wbr/>h for the definition of SYSTEM_<wbr/>TIME_<wbr/>MONOTONIC and
25068SYSTEM_<wbr/>TIME_<wbr/>BOOTTIME.<wbr/> Note that HAL must follow above expectation; otherwise video
25069recording might suffer unexpected behavior.<wbr/></p>
25070<p>Also,<wbr/> camera devices which implement REALTIME must pass the ITS sensor fusion test which
25071tests the alignment between camera timestamps and gyro sensor timestamps.<wbr/></p>
25072            </td>
25073          </tr>
25074
25075          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25076           <!-- end of entry -->
25077
25078
25079          <tr class="entry" id="static_android.sensor.info.lensShadingApplied">
25080            <td class="entry_name
25081             " rowspan="3">
25082              android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied
25083            </td>
25084            <td class="entry_type">
25085                <span class="entry_type_name entry_type_name_enum">byte</span>
25086
25087              <span class="entry_type_visibility"> [public as boolean]</span>
25088
25089
25090
25091
25092
25093                <ul class="entry_type_enum">
25094                  <li>
25095                    <span class="entry_type_enum_name">FALSE (v3.2)</span>
25096                  </li>
25097                  <li>
25098                    <span class="entry_type_enum_name">TRUE (v3.2)</span>
25099                  </li>
25100                </ul>
25101
25102            </td> <!-- entry_type -->
25103
25104            <td class="entry_description">
25105              <p>Whether the RAW images output from this camera device are subject to
25106lens shading correction.<wbr/></p>
25107            </td>
25108
25109            <td class="entry_units">
25110            </td>
25111
25112            <td class="entry_range">
25113            </td>
25114
25115            <td class="entry_hal_version">
25116              <p>3.<wbr/>2</p>
25117            </td>
25118
25119            <td class="entry_tags">
25120            </td>
25121
25122          </tr>
25123          <tr class="entries_header">
25124            <th class="th_details" colspan="6">Details</th>
25125          </tr>
25126          <tr class="entry_cont">
25127            <td class="entry_details" colspan="6">
25128              <p>If TRUE,<wbr/> all images produced by the camera device in the RAW image formats will
25129have lens shading correction already applied to it.<wbr/> If FALSE,<wbr/> the images will
25130not be adjusted for lens shading correction.<wbr/>
25131See <a href="#static_android.request.maxNumOutputRaw">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Raw</a> for a list of RAW image formats.<wbr/></p>
25132<p>This key will be <code>null</code> for all devices do not report this information.<wbr/>
25133Devices with RAW capability will always report this information in this key.<wbr/></p>
25134            </td>
25135          </tr>
25136
25137
25138          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25139           <!-- end of entry -->
25140
25141
25142          <tr class="entry" id="static_android.sensor.info.preCorrectionActiveArraySize">
25143            <td class="entry_name
25144             " rowspan="5">
25145              android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size
25146            </td>
25147            <td class="entry_type">
25148                <span class="entry_type_name">int32</span>
25149                <span class="entry_type_container">x</span>
25150
25151                <span class="entry_type_array">
25152                  4
25153                </span>
25154              <span class="entry_type_visibility"> [public as rectangle]</span>
25155
25156
25157              <span class="entry_type_hwlevel">[legacy] </span>
25158
25159
25160                <div class="entry_type_notes">Four ints defining the active pixel rectangle</div>
25161
25162
25163            </td> <!-- entry_type -->
25164
25165            <td class="entry_description">
25166              <p>The area of the image sensor which corresponds to active pixels prior to the
25167application of any geometric distortion correction.<wbr/></p>
25168            </td>
25169
25170            <td class="entry_units">
25171              Pixel coordinates on the image sensor
25172            </td>
25173
25174            <td class="entry_range">
25175            </td>
25176
25177            <td class="entry_hal_version">
25178              <p>3.<wbr/>2</p>
25179            </td>
25180
25181            <td class="entry_tags">
25182              <ul class="entry_tags">
25183                  <li><a href="#tag_RAW">RAW</a></li>
25184              </ul>
25185            </td>
25186
25187          </tr>
25188          <tr class="entries_header">
25189            <th class="th_details" colspan="6">Details</th>
25190          </tr>
25191          <tr class="entry_cont">
25192            <td class="entry_details" colspan="6">
25193              <p>This is the rectangle representing the size of the active region of the sensor (i.<wbr/>e.<wbr/>
25194the region that actually receives light from the scene) before any geometric correction
25195has been applied,<wbr/> and should be treated as the active region rectangle for any of the
25196raw formats.<wbr/>  All metadata associated with raw processing (e.<wbr/>g.<wbr/> the lens shading
25197correction map,<wbr/> and radial distortion fields) treats the top,<wbr/> left of this rectangle as
25198the origin,<wbr/> (0,<wbr/>0).<wbr/></p>
25199<p>The size of this region determines the maximum field of view and the maximum number of
25200pixels that an image from this sensor can contain,<wbr/> prior to the application of
25201geometric distortion correction.<wbr/> The effective maximum pixel dimensions of a
25202post-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>
25203field,<wbr/> and the effective maximum field of view for a post-distortion-corrected image
25204can be calculated by applying the geometric distortion correction fields to this
25205rectangle,<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>
25206<p>E.<wbr/>g.<wbr/> to calculate position of a pixel,<wbr/> (x,<wbr/>y),<wbr/> in a processed YUV output image with the
25207dimensions 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/>
25208(x',<wbr/> y'),<wbr/> in the raw pixel array with dimensions given in
25209<a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>:</p>
25210<ol>
25211<li>Choose a pixel (x',<wbr/> y') within the active array region of the raw buffer given in
25212<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
25213to be outside of the FOV,<wbr/> and will not be shown in the processed output image.<wbr/></li>
25214<li>Apply geometric distortion correction to get the post-distortion pixel coordinate,<wbr/>
25215(x_<wbr/>i,<wbr/> y_<wbr/>i).<wbr/> When applying geometric correction metadata,<wbr/> note that metadata for raw
25216buffers is defined relative to the top,<wbr/> left of the
25217<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>
25218<li>If the resulting corrected pixel coordinate is within the region given in
25219<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
25220processed output image buffer is <code>(x_<wbr/>i - activeArray.<wbr/>left,<wbr/> y_<wbr/>i - activeArray.<wbr/>top)</code>,<wbr/>
25221when the top,<wbr/> left coordinate of that buffer is treated as (0,<wbr/> 0).<wbr/></li>
25222</ol>
25223<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>
25224is (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/>
25225<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
25226correction doesn't change the pixel coordinate,<wbr/> the resulting pixel selected in
25227pixel coordinates would be x,<wbr/>y = (25,<wbr/> 25) relative to the top,<wbr/>left of the raw buffer
25228with 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)
25229relative to the top,<wbr/>left of post-processed YUV output buffer with dimensions given in
25230<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
25231<p>The currently supported fields that correct for geometric distortion are:</p>
25232<ol>
25233<li><a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a>.<wbr/></li>
25234</ol>
25235<p>If the camera device doesn't support geometric distortion correction,<wbr/> or all of the
25236geometric distortion fields are no-ops,<wbr/> this rectangle will be the same as the
25237post-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>
25238<p>This rectangle is defined relative to the full pixel array; (0,<wbr/>0) is the top-left of
25239the full pixel array,<wbr/> and the size of the full pixel array is given by
25240<a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
25241<p>The pre-correction active array may be smaller than the full pixel array,<wbr/> since the
25242full array may include black calibration pixels or other inactive regions.<wbr/></p>
25243            </td>
25244          </tr>
25245
25246          <tr class="entries_header">
25247            <th class="th_details" colspan="6">HAL Implementation Details</th>
25248          </tr>
25249          <tr class="entry_cont">
25250            <td class="entry_details" colspan="6">
25251              <p>This array contains <code>(xmin,<wbr/> ymin,<wbr/> width,<wbr/> height)</code>.<wbr/> The <code>(xmin,<wbr/> ymin)</code> must be
25252&gt;= <code>(0,<wbr/>0)</code>.<wbr/>
25253The <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>
25254<p>If omitted by the HAL implementation,<wbr/> the camera framework will assume that this is
25255the same as the post-correction active array region given in
25256<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
25257            </td>
25258          </tr>
25259
25260          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25261           <!-- end of entry -->
25262
25263
25264          <tr class="entry" id="static_android.sensor.info.activeArraySizeMaximumResolution">
25265            <td class="entry_name
25266             " rowspan="5">
25267              android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution
25268            </td>
25269            <td class="entry_type">
25270                <span class="entry_type_name">int32</span>
25271                <span class="entry_type_container">x</span>
25272
25273                <span class="entry_type_array">
25274                  4
25275                </span>
25276              <span class="entry_type_visibility"> [public as rectangle]</span>
25277
25278
25279
25280
25281                <div class="entry_type_notes">Four ints defining the active pixel rectangle</div>
25282
25283
25284            </td> <!-- entry_type -->
25285
25286            <td class="entry_description">
25287              <p>The area of the image sensor which corresponds to active pixels after any geometric
25288distortion correction has been applied,<wbr/> when the sensor runs in maximum resolution mode.<wbr/></p>
25289            </td>
25290
25291            <td class="entry_units">
25292              Pixel coordinates on the image sensor
25293            </td>
25294
25295            <td class="entry_range">
25296            </td>
25297
25298            <td class="entry_hal_version">
25299              <p>3.<wbr/>6</p>
25300            </td>
25301
25302            <td class="entry_tags">
25303              <ul class="entry_tags">
25304                  <li><a href="#tag_RAW">RAW</a></li>
25305              </ul>
25306            </td>
25307
25308          </tr>
25309          <tr class="entries_header">
25310            <th class="th_details" colspan="6">Details</th>
25311          </tr>
25312          <tr class="entry_cont">
25313            <td class="entry_details" colspan="6">
25314              <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>
25315is set to
25316<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/>
25317Refer 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
25318replaced with their
25319<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>
25320counterparts.<wbr/>
25321This key will only be present for devices which advertise the
25322<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>
25323capability.<wbr/></p>
25324            </td>
25325          </tr>
25326
25327          <tr class="entries_header">
25328            <th class="th_details" colspan="6">HAL Implementation Details</th>
25329          </tr>
25330          <tr class="entry_cont">
25331            <td class="entry_details" colspan="6">
25332              <p>This array contains <code>(xmin,<wbr/> ymin,<wbr/> width,<wbr/> height)</code>.<wbr/> The <code>(xmin,<wbr/> ymin)</code> must be
25333&gt;= <code>(0,<wbr/>0)</code>.<wbr/>
25334The <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>
25335            </td>
25336          </tr>
25337
25338          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25339           <!-- end of entry -->
25340
25341
25342          <tr class="entry" id="static_android.sensor.info.pixelArraySizeMaximumResolution">
25343            <td class="entry_name
25344             " rowspan="3">
25345              android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution
25346            </td>
25347            <td class="entry_type">
25348                <span class="entry_type_name">int32</span>
25349                <span class="entry_type_container">x</span>
25350
25351                <span class="entry_type_array">
25352                  2
25353                </span>
25354              <span class="entry_type_visibility"> [public as size]</span>
25355
25356
25357
25358
25359
25360
25361            </td> <!-- entry_type -->
25362
25363            <td class="entry_description">
25364              <p>Dimensions of the full pixel array,<wbr/> possibly
25365including black calibration pixels,<wbr/> when the sensor runs in maximum resolution mode.<wbr/>
25366Analogous 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
25367set to
25368<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>
25369            </td>
25370
25371            <td class="entry_units">
25372              Pixels
25373            </td>
25374
25375            <td class="entry_range">
25376            </td>
25377
25378            <td class="entry_hal_version">
25379              <p>3.<wbr/>6</p>
25380            </td>
25381
25382            <td class="entry_tags">
25383              <ul class="entry_tags">
25384                  <li><a href="#tag_RAW">RAW</a></li>
25385              </ul>
25386            </td>
25387
25388          </tr>
25389          <tr class="entries_header">
25390            <th class="th_details" colspan="6">Details</th>
25391          </tr>
25392          <tr class="entry_cont">
25393            <td class="entry_details" colspan="6">
25394              <p>The pixel count of the full pixel array of the image sensor,<wbr/> which covers
25395<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
25396the raw buffers produced by this sensor,<wbr/> when it runs in maximum resolution mode.<wbr/> That
25397is,<wbr/> when <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to
25398<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/>
25399This key will only be present for devices which advertise the
25400<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>
25401capability.<wbr/></p>
25402            </td>
25403          </tr>
25404
25405
25406          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25407           <!-- end of entry -->
25408
25409
25410          <tr class="entry" id="static_android.sensor.info.preCorrectionActiveArraySizeMaximumResolution">
25411            <td class="entry_name
25412             " rowspan="5">
25413              android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution
25414            </td>
25415            <td class="entry_type">
25416                <span class="entry_type_name">int32</span>
25417                <span class="entry_type_container">x</span>
25418
25419                <span class="entry_type_array">
25420                  4
25421                </span>
25422              <span class="entry_type_visibility"> [public as rectangle]</span>
25423
25424
25425
25426
25427                <div class="entry_type_notes">Four ints defining the active pixel rectangle</div>
25428
25429
25430            </td> <!-- entry_type -->
25431
25432            <td class="entry_description">
25433              <p>The area of the image sensor which corresponds to active pixels prior to the
25434application of any geometric distortion correction,<wbr/> when the sensor runs in maximum
25435resolution mode.<wbr/> This key must be used for crop /<wbr/> metering regions,<wbr/> only when
25436<a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to
25437<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>
25438            </td>
25439
25440            <td class="entry_units">
25441              Pixel coordinates on the image sensor
25442            </td>
25443
25444            <td class="entry_range">
25445            </td>
25446
25447            <td class="entry_hal_version">
25448              <p>3.<wbr/>6</p>
25449            </td>
25450
25451            <td class="entry_tags">
25452              <ul class="entry_tags">
25453                  <li><a href="#tag_RAW">RAW</a></li>
25454              </ul>
25455            </td>
25456
25457          </tr>
25458          <tr class="entries_header">
25459            <th class="th_details" colspan="6">Details</th>
25460          </tr>
25461          <tr class="entry_cont">
25462            <td class="entry_details" colspan="6">
25463              <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/>
25464when <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to
25465<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/>
25466This key will only be present for devices which advertise the
25467<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>
25468capability.<wbr/></p>
25469            </td>
25470          </tr>
25471
25472          <tr class="entries_header">
25473            <th class="th_details" colspan="6">HAL Implementation Details</th>
25474          </tr>
25475          <tr class="entry_cont">
25476            <td class="entry_details" colspan="6">
25477              <p>This array contains <code>(xmin,<wbr/> ymin,<wbr/> width,<wbr/> height)</code>.<wbr/> The <code>(xmin,<wbr/> ymin)</code> must be
25478&gt;= <code>(0,<wbr/>0)</code>.<wbr/>
25479The <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>
25480<p>If omitted by the HAL implementation,<wbr/> the camera framework will assume that this is
25481the same as the post-correction active array region given in
25482<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>
25483            </td>
25484          </tr>
25485
25486          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25487           <!-- end of entry -->
25488
25489
25490          <tr class="entry" id="static_android.sensor.info.binningFactor">
25491            <td class="entry_name
25492             " rowspan="3">
25493              android.<wbr/>sensor.<wbr/>info.<wbr/>binning<wbr/>Factor
25494            </td>
25495            <td class="entry_type">
25496                <span class="entry_type_name">int32</span>
25497                <span class="entry_type_container">x</span>
25498
25499                <span class="entry_type_array">
25500                  2
25501                </span>
25502              <span class="entry_type_visibility"> [public as size]</span>
25503
25504
25505
25506
25507
25508
25509            </td> <!-- entry_type -->
25510
25511            <td class="entry_description">
25512              <p>Dimensions of the group of pixels which are under the same color filter.<wbr/>
25513This specifies the width and height (pair of integers) of the group of pixels which fall
25514under the same color filter for ULTRA_<wbr/>HIGH_<wbr/>RESOLUTION sensors.<wbr/></p>
25515            </td>
25516
25517            <td class="entry_units">
25518              Pixels
25519            </td>
25520
25521            <td class="entry_range">
25522            </td>
25523
25524            <td class="entry_hal_version">
25525              <p>3.<wbr/>6</p>
25526            </td>
25527
25528            <td class="entry_tags">
25529            </td>
25530
25531          </tr>
25532          <tr class="entries_header">
25533            <th class="th_details" colspan="6">Details</th>
25534          </tr>
25535          <tr class="entry_cont">
25536            <td class="entry_details" colspan="6">
25537              <p>Sensors can have pixels grouped together under the same color filter in order
25538to improve various aspects of imaging such as noise reduction,<wbr/> low light
25539performance etc.<wbr/> These groups can be of various sizes such as 2X2 (quad bayer),<wbr/>
255403X3 (nona-bayer).<wbr/> This key specifies the length and width of the pixels grouped under
25541the same color filter.<wbr/></p>
25542<p>This key will not be present if REMOSAIC_<wbr/>REPROCESSING is not supported,<wbr/> since RAW images
25543will have a regular bayer pattern.<wbr/></p>
25544<p>This key will not be present for sensors which don't have the
25545<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>
25546capability.<wbr/></p>
25547            </td>
25548          </tr>
25549
25550
25551          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25552           <!-- end of entry -->
25553
25554
25555
25556
25557
25558          <tr class="entry" id="static_android.sensor.referenceIlluminant1">
25559            <td class="entry_name
25560             " rowspan="5">
25561              android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1
25562            </td>
25563            <td class="entry_type">
25564                <span class="entry_type_name entry_type_name_enum">byte</span>
25565
25566              <span class="entry_type_visibility"> [public]</span>
25567
25568
25569
25570
25571
25572                <ul class="entry_type_enum">
25573                  <li>
25574                    <span class="entry_type_enum_name">DAYLIGHT (v3.2)</span>
25575                    <span class="entry_type_enum_value">1</span>
25576                  </li>
25577                  <li>
25578                    <span class="entry_type_enum_name">FLUORESCENT (v3.2)</span>
25579                    <span class="entry_type_enum_value">2</span>
25580                  </li>
25581                  <li>
25582                    <span class="entry_type_enum_name">TUNGSTEN (v3.2)</span>
25583                    <span class="entry_type_enum_value">3</span>
25584                    <span class="entry_type_enum_notes"><p>Incandescent light</p></span>
25585                  </li>
25586                  <li>
25587                    <span class="entry_type_enum_name">FLASH (v3.2)</span>
25588                    <span class="entry_type_enum_value">4</span>
25589                  </li>
25590                  <li>
25591                    <span class="entry_type_enum_name">FINE_WEATHER (v3.2)</span>
25592                    <span class="entry_type_enum_value">9</span>
25593                  </li>
25594                  <li>
25595                    <span class="entry_type_enum_name">CLOUDY_WEATHER (v3.2)</span>
25596                    <span class="entry_type_enum_value">10</span>
25597                  </li>
25598                  <li>
25599                    <span class="entry_type_enum_name">SHADE (v3.2)</span>
25600                    <span class="entry_type_enum_value">11</span>
25601                  </li>
25602                  <li>
25603                    <span class="entry_type_enum_name">DAYLIGHT_FLUORESCENT (v3.2)</span>
25604                    <span class="entry_type_enum_value">12</span>
25605                    <span class="entry_type_enum_notes"><p>D 5700 - 7100K</p></span>
25606                  </li>
25607                  <li>
25608                    <span class="entry_type_enum_name">DAY_WHITE_FLUORESCENT (v3.2)</span>
25609                    <span class="entry_type_enum_value">13</span>
25610                    <span class="entry_type_enum_notes"><p>N 4600 - 5400K</p></span>
25611                  </li>
25612                  <li>
25613                    <span class="entry_type_enum_name">COOL_WHITE_FLUORESCENT (v3.2)</span>
25614                    <span class="entry_type_enum_value">14</span>
25615                    <span class="entry_type_enum_notes"><p>W 3900 - 4500K</p></span>
25616                  </li>
25617                  <li>
25618                    <span class="entry_type_enum_name">WHITE_FLUORESCENT (v3.2)</span>
25619                    <span class="entry_type_enum_value">15</span>
25620                    <span class="entry_type_enum_notes"><p>WW 3200 - 3700K</p></span>
25621                  </li>
25622                  <li>
25623                    <span class="entry_type_enum_name">STANDARD_A (v3.2)</span>
25624                    <span class="entry_type_enum_value">17</span>
25625                  </li>
25626                  <li>
25627                    <span class="entry_type_enum_name">STANDARD_B (v3.2)</span>
25628                    <span class="entry_type_enum_value">18</span>
25629                  </li>
25630                  <li>
25631                    <span class="entry_type_enum_name">STANDARD_C (v3.2)</span>
25632                    <span class="entry_type_enum_value">19</span>
25633                  </li>
25634                  <li>
25635                    <span class="entry_type_enum_name">D55 (v3.2)</span>
25636                    <span class="entry_type_enum_value">20</span>
25637                  </li>
25638                  <li>
25639                    <span class="entry_type_enum_name">D65 (v3.2)</span>
25640                    <span class="entry_type_enum_value">21</span>
25641                  </li>
25642                  <li>
25643                    <span class="entry_type_enum_name">D75 (v3.2)</span>
25644                    <span class="entry_type_enum_value">22</span>
25645                  </li>
25646                  <li>
25647                    <span class="entry_type_enum_name">D50 (v3.2)</span>
25648                    <span class="entry_type_enum_value">23</span>
25649                  </li>
25650                  <li>
25651                    <span class="entry_type_enum_name">ISO_STUDIO_TUNGSTEN (v3.2)</span>
25652                    <span class="entry_type_enum_value">24</span>
25653                  </li>
25654                </ul>
25655
25656            </td> <!-- entry_type -->
25657
25658            <td class="entry_description">
25659              <p>The standard reference illuminant used as the scene light source when
25660calculating the <a href="#static_android.sensor.colorTransform1">android.<wbr/>sensor.<wbr/>color<wbr/>Transform1</a>,<wbr/>
25661<a href="#static_android.sensor.calibrationTransform1">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1</a>,<wbr/> and
25662<a href="#static_android.sensor.forwardMatrix1">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1</a> matrices.<wbr/></p>
25663            </td>
25664
25665            <td class="entry_units">
25666            </td>
25667
25668            <td class="entry_range">
25669            </td>
25670
25671            <td class="entry_hal_version">
25672              <p>3.<wbr/>2</p>
25673            </td>
25674
25675            <td class="entry_tags">
25676              <ul class="entry_tags">
25677                  <li><a href="#tag_RAW">RAW</a></li>
25678              </ul>
25679            </td>
25680
25681          </tr>
25682          <tr class="entries_header">
25683            <th class="th_details" colspan="6">Details</th>
25684          </tr>
25685          <tr class="entry_cont">
25686            <td class="entry_details" colspan="6">
25687              <p>The values in this key correspond to the values defined for the
25688EXIF LightSource tag.<wbr/> These illuminants are standard light sources
25689that are often used calibrating camera devices.<wbr/></p>
25690<p>If this key is present,<wbr/> then <a href="#static_android.sensor.colorTransform1">android.<wbr/>sensor.<wbr/>color<wbr/>Transform1</a>,<wbr/>
25691<a href="#static_android.sensor.calibrationTransform1">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1</a>,<wbr/> and
25692<a href="#static_android.sensor.forwardMatrix1">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1</a> will also be present.<wbr/></p>
25693<p>Some devices may choose to provide a second set of calibration
25694information for improved quality,<wbr/> including
25695<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> and its corresponding matrices.<wbr/></p>
25696<p>Starting from Android Q,<wbr/> this key will not be present for a MONOCHROME camera,<wbr/> even if
25697the camera device has RAW capability.<wbr/></p>
25698            </td>
25699          </tr>
25700
25701          <tr class="entries_header">
25702            <th class="th_details" colspan="6">HAL Implementation Details</th>
25703          </tr>
25704          <tr class="entry_cont">
25705            <td class="entry_details" colspan="6">
25706              <p>The first reference illuminant (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>)
25707and corresponding matrices must be present to support the RAW capability
25708and DNG output.<wbr/></p>
25709<p>When producing raw images with a color profile that has only been
25710calibrated against a single light source,<wbr/> it is valid to omit
25711<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> along with the
25712<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/>
25713and <a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> matrices.<wbr/></p>
25714<p>If only <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> is included,<wbr/> it should be
25715chosen so that it is representative of typical scene lighting.<wbr/>  In
25716general,<wbr/> D50 or DAYLIGHT will be chosen for this case.<wbr/></p>
25717<p>If both <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> and
25718<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> are included,<wbr/> they should be
25719chosen to represent the typical range of scene lighting conditions.<wbr/>
25720In general,<wbr/> low color temperature illuminant such as Standard-A will
25721be chosen for the first reference illuminant and a higher color
25722temperature illuminant such as D65 will be chosen for the second
25723reference illuminant.<wbr/></p>
25724            </td>
25725          </tr>
25726
25727          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25728           <!-- end of entry -->
25729
25730
25731          <tr class="entry" id="static_android.sensor.referenceIlluminant2">
25732            <td class="entry_name
25733             " rowspan="3">
25734              android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2
25735            </td>
25736            <td class="entry_type">
25737                <span class="entry_type_name">byte</span>
25738
25739              <span class="entry_type_visibility"> [public]</span>
25740
25741
25742
25743
25744
25745
25746            </td> <!-- entry_type -->
25747
25748            <td class="entry_description">
25749              <p>The standard reference illuminant used as the scene light source when
25750calculating the <a href="#static_android.sensor.colorTransform2">android.<wbr/>sensor.<wbr/>color<wbr/>Transform2</a>,<wbr/>
25751<a href="#static_android.sensor.calibrationTransform2">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2</a>,<wbr/> and
25752<a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> matrices.<wbr/></p>
25753            </td>
25754
25755            <td class="entry_units">
25756            </td>
25757
25758            <td class="entry_range">
25759              <p>Any value listed in <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a></p>
25760            </td>
25761
25762            <td class="entry_hal_version">
25763              <p>3.<wbr/>2</p>
25764            </td>
25765
25766            <td class="entry_tags">
25767              <ul class="entry_tags">
25768                  <li><a href="#tag_RAW">RAW</a></li>
25769              </ul>
25770            </td>
25771
25772          </tr>
25773          <tr class="entries_header">
25774            <th class="th_details" colspan="6">Details</th>
25775          </tr>
25776          <tr class="entry_cont">
25777            <td class="entry_details" colspan="6">
25778              <p>See <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> for more details.<wbr/></p>
25779<p>If this key is present,<wbr/> then <a href="#static_android.sensor.colorTransform2">android.<wbr/>sensor.<wbr/>color<wbr/>Transform2</a>,<wbr/>
25780<a href="#static_android.sensor.calibrationTransform2">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2</a>,<wbr/> and
25781<a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> will also be present.<wbr/></p>
25782<p>Starting from Android Q,<wbr/> this key will not be present for a MONOCHROME camera,<wbr/> even if
25783the camera device has RAW capability.<wbr/></p>
25784            </td>
25785          </tr>
25786
25787
25788          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25789           <!-- end of entry -->
25790
25791
25792          <tr class="entry" id="static_android.sensor.calibrationTransform1">
25793            <td class="entry_name
25794             " rowspan="3">
25795              android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1
25796            </td>
25797            <td class="entry_type">
25798                <span class="entry_type_name">rational</span>
25799                <span class="entry_type_container">x</span>
25800
25801                <span class="entry_type_array">
25802                  3 x 3
25803                </span>
25804              <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
25805
25806
25807
25808
25809                <div class="entry_type_notes">3x3 matrix in row-major-order</div>
25810
25811
25812            </td> <!-- entry_type -->
25813
25814            <td class="entry_description">
25815              <p>A per-device calibration transform matrix that maps from the
25816reference sensor colorspace to the actual device sensor colorspace.<wbr/></p>
25817            </td>
25818
25819            <td class="entry_units">
25820            </td>
25821
25822            <td class="entry_range">
25823            </td>
25824
25825            <td class="entry_hal_version">
25826              <p>3.<wbr/>2</p>
25827            </td>
25828
25829            <td class="entry_tags">
25830              <ul class="entry_tags">
25831                  <li><a href="#tag_RAW">RAW</a></li>
25832              </ul>
25833            </td>
25834
25835          </tr>
25836          <tr class="entries_header">
25837            <th class="th_details" colspan="6">Details</th>
25838          </tr>
25839          <tr class="entry_cont">
25840            <td class="entry_details" colspan="6">
25841              <p>This matrix is used to correct for per-device variations in the
25842sensor colorspace,<wbr/> and is used for processing raw buffer data.<wbr/></p>
25843<p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
25844contains a per-device calibration transform that maps colors
25845from reference sensor color space (i.<wbr/>e.<wbr/> the "golden module"
25846colorspace) into this camera device's native sensor color
25847space under the first reference illuminant
25848(<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>).<wbr/></p>
25849<p>Starting from Android Q,<wbr/> this key will not be present for a MONOCHROME camera,<wbr/> even if
25850the camera device has RAW capability.<wbr/></p>
25851            </td>
25852          </tr>
25853
25854
25855          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25856           <!-- end of entry -->
25857
25858
25859          <tr class="entry" id="static_android.sensor.calibrationTransform2">
25860            <td class="entry_name
25861             " rowspan="3">
25862              android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2
25863            </td>
25864            <td class="entry_type">
25865                <span class="entry_type_name">rational</span>
25866                <span class="entry_type_container">x</span>
25867
25868                <span class="entry_type_array">
25869                  3 x 3
25870                </span>
25871              <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
25872
25873
25874
25875
25876                <div class="entry_type_notes">3x3 matrix in row-major-order</div>
25877
25878
25879            </td> <!-- entry_type -->
25880
25881            <td class="entry_description">
25882              <p>A per-device calibration transform matrix that maps from the
25883reference sensor colorspace to the actual device sensor colorspace
25884(this is the colorspace of the raw buffer data).<wbr/></p>
25885            </td>
25886
25887            <td class="entry_units">
25888            </td>
25889
25890            <td class="entry_range">
25891            </td>
25892
25893            <td class="entry_hal_version">
25894              <p>3.<wbr/>2</p>
25895            </td>
25896
25897            <td class="entry_tags">
25898              <ul class="entry_tags">
25899                  <li><a href="#tag_RAW">RAW</a></li>
25900              </ul>
25901            </td>
25902
25903          </tr>
25904          <tr class="entries_header">
25905            <th class="th_details" colspan="6">Details</th>
25906          </tr>
25907          <tr class="entry_cont">
25908            <td class="entry_details" colspan="6">
25909              <p>This matrix is used to correct for per-device variations in the
25910sensor colorspace,<wbr/> and is used for processing raw buffer data.<wbr/></p>
25911<p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
25912contains a per-device calibration transform that maps colors
25913from reference sensor color space (i.<wbr/>e.<wbr/> the "golden module"
25914colorspace) into this camera device's native sensor color
25915space under the second reference illuminant
25916(<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>).<wbr/></p>
25917<p>This matrix will only be present if the second reference
25918illuminant is present.<wbr/></p>
25919<p>Starting from Android Q,<wbr/> this key will not be present for a MONOCHROME camera,<wbr/> even if
25920the camera device has RAW capability.<wbr/></p>
25921            </td>
25922          </tr>
25923
25924
25925          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25926           <!-- end of entry -->
25927
25928
25929          <tr class="entry" id="static_android.sensor.colorTransform1">
25930            <td class="entry_name
25931             " rowspan="3">
25932              android.<wbr/>sensor.<wbr/>color<wbr/>Transform1
25933            </td>
25934            <td class="entry_type">
25935                <span class="entry_type_name">rational</span>
25936                <span class="entry_type_container">x</span>
25937
25938                <span class="entry_type_array">
25939                  3 x 3
25940                </span>
25941              <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
25942
25943
25944
25945
25946                <div class="entry_type_notes">3x3 matrix in row-major-order</div>
25947
25948
25949            </td> <!-- entry_type -->
25950
25951            <td class="entry_description">
25952              <p>A matrix that transforms color values from CIE XYZ color space to
25953reference sensor color space.<wbr/></p>
25954            </td>
25955
25956            <td class="entry_units">
25957            </td>
25958
25959            <td class="entry_range">
25960            </td>
25961
25962            <td class="entry_hal_version">
25963              <p>3.<wbr/>2</p>
25964            </td>
25965
25966            <td class="entry_tags">
25967              <ul class="entry_tags">
25968                  <li><a href="#tag_RAW">RAW</a></li>
25969              </ul>
25970            </td>
25971
25972          </tr>
25973          <tr class="entries_header">
25974            <th class="th_details" colspan="6">Details</th>
25975          </tr>
25976          <tr class="entry_cont">
25977            <td class="entry_details" colspan="6">
25978              <p>This matrix is used to convert from the standard CIE XYZ color
25979space to the reference sensor colorspace,<wbr/> and is used when processing
25980raw buffer data.<wbr/></p>
25981<p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
25982contains a color transform matrix that maps colors from the CIE
25983XYZ color space to the reference sensor color space (i.<wbr/>e.<wbr/> the
25984"golden module" colorspace) under the first reference illuminant
25985(<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>).<wbr/></p>
25986<p>The white points chosen in both the reference sensor color space
25987and the CIE XYZ colorspace when calculating this transform will
25988match the standard white point for the first reference illuminant
25989(i.<wbr/>e.<wbr/> no chromatic adaptation will be applied by this transform).<wbr/></p>
25990<p>Starting from Android Q,<wbr/> this key will not be present for a MONOCHROME camera,<wbr/> even if
25991the camera device has RAW capability.<wbr/></p>
25992            </td>
25993          </tr>
25994
25995
25996          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25997           <!-- end of entry -->
25998
25999
26000          <tr class="entry" id="static_android.sensor.colorTransform2">
26001            <td class="entry_name
26002             " rowspan="3">
26003              android.<wbr/>sensor.<wbr/>color<wbr/>Transform2
26004            </td>
26005            <td class="entry_type">
26006                <span class="entry_type_name">rational</span>
26007                <span class="entry_type_container">x</span>
26008
26009                <span class="entry_type_array">
26010                  3 x 3
26011                </span>
26012              <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
26013
26014
26015
26016
26017                <div class="entry_type_notes">3x3 matrix in row-major-order</div>
26018
26019
26020            </td> <!-- entry_type -->
26021
26022            <td class="entry_description">
26023              <p>A matrix that transforms color values from CIE XYZ color space to
26024reference sensor color space.<wbr/></p>
26025            </td>
26026
26027            <td class="entry_units">
26028            </td>
26029
26030            <td class="entry_range">
26031            </td>
26032
26033            <td class="entry_hal_version">
26034              <p>3.<wbr/>2</p>
26035            </td>
26036
26037            <td class="entry_tags">
26038              <ul class="entry_tags">
26039                  <li><a href="#tag_RAW">RAW</a></li>
26040              </ul>
26041            </td>
26042
26043          </tr>
26044          <tr class="entries_header">
26045            <th class="th_details" colspan="6">Details</th>
26046          </tr>
26047          <tr class="entry_cont">
26048            <td class="entry_details" colspan="6">
26049              <p>This matrix is used to convert from the standard CIE XYZ color
26050space to the reference sensor colorspace,<wbr/> and is used when processing
26051raw buffer data.<wbr/></p>
26052<p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
26053contains a color transform matrix that maps colors from the CIE
26054XYZ color space to the reference sensor color space (i.<wbr/>e.<wbr/> the
26055"golden module" colorspace) under the second reference illuminant
26056(<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>).<wbr/></p>
26057<p>The white points chosen in both the reference sensor color space
26058and the CIE XYZ colorspace when calculating this transform will
26059match the standard white point for the second reference illuminant
26060(i.<wbr/>e.<wbr/> no chromatic adaptation will be applied by this transform).<wbr/></p>
26061<p>This matrix will only be present if the second reference
26062illuminant is present.<wbr/></p>
26063<p>Starting from Android Q,<wbr/> this key will not be present for a MONOCHROME camera,<wbr/> even if
26064the camera device has RAW capability.<wbr/></p>
26065            </td>
26066          </tr>
26067
26068
26069          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26070           <!-- end of entry -->
26071
26072
26073          <tr class="entry" id="static_android.sensor.forwardMatrix1">
26074            <td class="entry_name
26075             " rowspan="3">
26076              android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1
26077            </td>
26078            <td class="entry_type">
26079                <span class="entry_type_name">rational</span>
26080                <span class="entry_type_container">x</span>
26081
26082                <span class="entry_type_array">
26083                  3 x 3
26084                </span>
26085              <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
26086
26087
26088
26089
26090                <div class="entry_type_notes">3x3 matrix in row-major-order</div>
26091
26092
26093            </td> <!-- entry_type -->
26094
26095            <td class="entry_description">
26096              <p>A matrix that transforms white balanced camera colors from the reference
26097sensor colorspace to the CIE XYZ colorspace with a D50 whitepoint.<wbr/></p>
26098            </td>
26099
26100            <td class="entry_units">
26101            </td>
26102
26103            <td class="entry_range">
26104            </td>
26105
26106            <td class="entry_hal_version">
26107              <p>3.<wbr/>2</p>
26108            </td>
26109
26110            <td class="entry_tags">
26111              <ul class="entry_tags">
26112                  <li><a href="#tag_RAW">RAW</a></li>
26113              </ul>
26114            </td>
26115
26116          </tr>
26117          <tr class="entries_header">
26118            <th class="th_details" colspan="6">Details</th>
26119          </tr>
26120          <tr class="entry_cont">
26121            <td class="entry_details" colspan="6">
26122              <p>This matrix is used to convert to the standard CIE XYZ colorspace,<wbr/> and
26123is used when processing raw buffer data.<wbr/></p>
26124<p>This matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and contains
26125a color transform matrix that maps white balanced colors from the
26126reference sensor color space to the CIE XYZ color space with a D50 white
26127point.<wbr/></p>
26128<p>Under the first reference illuminant (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>)
26129this matrix is chosen so that the standard white point for this reference
26130illuminant in the reference sensor colorspace is mapped to D50 in the
26131CIE XYZ colorspace.<wbr/></p>
26132<p>Starting from Android Q,<wbr/> this key will not be present for a MONOCHROME camera,<wbr/> even if
26133the camera device has RAW capability.<wbr/></p>
26134            </td>
26135          </tr>
26136
26137
26138          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26139           <!-- end of entry -->
26140
26141
26142          <tr class="entry" id="static_android.sensor.forwardMatrix2">
26143            <td class="entry_name
26144             " rowspan="3">
26145              android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2
26146            </td>
26147            <td class="entry_type">
26148                <span class="entry_type_name">rational</span>
26149                <span class="entry_type_container">x</span>
26150
26151                <span class="entry_type_array">
26152                  3 x 3
26153                </span>
26154              <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
26155
26156
26157
26158
26159                <div class="entry_type_notes">3x3 matrix in row-major-order</div>
26160
26161
26162            </td> <!-- entry_type -->
26163
26164            <td class="entry_description">
26165              <p>A matrix that transforms white balanced camera colors from the reference
26166sensor colorspace to the CIE XYZ colorspace with a D50 whitepoint.<wbr/></p>
26167            </td>
26168
26169            <td class="entry_units">
26170            </td>
26171
26172            <td class="entry_range">
26173            </td>
26174
26175            <td class="entry_hal_version">
26176              <p>3.<wbr/>2</p>
26177            </td>
26178
26179            <td class="entry_tags">
26180              <ul class="entry_tags">
26181                  <li><a href="#tag_RAW">RAW</a></li>
26182              </ul>
26183            </td>
26184
26185          </tr>
26186          <tr class="entries_header">
26187            <th class="th_details" colspan="6">Details</th>
26188          </tr>
26189          <tr class="entry_cont">
26190            <td class="entry_details" colspan="6">
26191              <p>This matrix is used to convert to the standard CIE XYZ colorspace,<wbr/> and
26192is used when processing raw buffer data.<wbr/></p>
26193<p>This matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and contains
26194a color transform matrix that maps white balanced colors from the
26195reference sensor color space to the CIE XYZ color space with a D50 white
26196point.<wbr/></p>
26197<p>Under the second reference illuminant (<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>)
26198this matrix is chosen so that the standard white point for this reference
26199illuminant in the reference sensor colorspace is mapped to D50 in the
26200CIE XYZ colorspace.<wbr/></p>
26201<p>This matrix will only be present if the second reference
26202illuminant is present.<wbr/></p>
26203<p>Starting from Android Q,<wbr/> this key will not be present for a MONOCHROME camera,<wbr/> even if
26204the camera device has RAW capability.<wbr/></p>
26205            </td>
26206          </tr>
26207
26208
26209          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26210           <!-- end of entry -->
26211
26212
26213          <tr class="entry" id="static_android.sensor.baseGainFactor">
26214            <td class="entry_name
26215             " rowspan="1">
26216              android.<wbr/>sensor.<wbr/>base<wbr/>Gain<wbr/>Factor
26217            </td>
26218            <td class="entry_type">
26219                <span class="entry_type_name">rational</span>
26220
26221              <span class="entry_type_visibility"> [system]</span>
26222
26223
26224
26225
26226
26227
26228            </td> <!-- entry_type -->
26229
26230            <td class="entry_description">
26231              <p>Gain factor from electrons to raw units when
26232ISO=100</p>
26233            </td>
26234
26235            <td class="entry_units">
26236            </td>
26237
26238            <td class="entry_range">
26239            </td>
26240
26241            <td class="entry_hal_version">
26242              <p>3.<wbr/>2</p>
26243            </td>
26244
26245            <td class="entry_tags">
26246              <ul class="entry_tags">
26247                  <li><a href="#tag_FUTURE">FUTURE</a></li>
26248              </ul>
26249            </td>
26250
26251          </tr>
26252
26253
26254          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26255           <!-- end of entry -->
26256
26257
26258          <tr class="entry" id="static_android.sensor.blackLevelPattern">
26259            <td class="entry_name
26260             " rowspan="5">
26261              android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern
26262            </td>
26263            <td class="entry_type">
26264                <span class="entry_type_name">int32</span>
26265                <span class="entry_type_container">x</span>
26266
26267                <span class="entry_type_array">
26268                  4
26269                </span>
26270              <span class="entry_type_visibility"> [public as blackLevelPattern]</span>
26271
26272
26273
26274
26275                <div class="entry_type_notes">2x2 raw count block</div>
26276
26277
26278            </td> <!-- entry_type -->
26279
26280            <td class="entry_description">
26281              <p>A fixed black level offset for each of the color filter arrangement
26282(CFA) mosaic channels.<wbr/></p>
26283            </td>
26284
26285            <td class="entry_units">
26286            </td>
26287
26288            <td class="entry_range">
26289              <p>&gt;= 0 for each.<wbr/></p>
26290            </td>
26291
26292            <td class="entry_hal_version">
26293              <p>3.<wbr/>2</p>
26294            </td>
26295
26296            <td class="entry_tags">
26297              <ul class="entry_tags">
26298                  <li><a href="#tag_RAW">RAW</a></li>
26299              </ul>
26300            </td>
26301
26302          </tr>
26303          <tr class="entries_header">
26304            <th class="th_details" colspan="6">Details</th>
26305          </tr>
26306          <tr class="entry_cont">
26307            <td class="entry_details" colspan="6">
26308              <p>This key specifies the zero light value for each of the CFA mosaic
26309channels in the camera sensor.<wbr/>  The maximal value output by the
26310sensor 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>
26311<p>The values are given in the same order as channels listed for the CFA
26312layout 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
26313nth value given corresponds to the black level offset for the nth
26314color channel listed in the CFA.<wbr/></p>
26315<p>The black level values of captured images may vary for different
26316capture settings (e.<wbr/>g.,<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>).<wbr/> This key
26317represents a coarse approximation for such case.<wbr/> It is recommended to
26318use <a href="#dynamic_android.sensor.dynamicBlackLevel">android.<wbr/>sensor.<wbr/>dynamic<wbr/>Black<wbr/>Level</a> or use pixels from
26319<a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a> directly for captures when
26320supported by the camera device,<wbr/> which provides more accurate black
26321level values.<wbr/> For raw capture in particular,<wbr/> it is recommended to use
26322pixels from <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a> to calculate black
26323level values for each frame.<wbr/></p>
26324<p>For a MONOCHROME camera device,<wbr/> all of the 2x2 channels must have the same values.<wbr/></p>
26325            </td>
26326          </tr>
26327
26328          <tr class="entries_header">
26329            <th class="th_details" colspan="6">HAL Implementation Details</th>
26330          </tr>
26331          <tr class="entry_cont">
26332            <td class="entry_details" colspan="6">
26333              <p>The values are given in row-column scan order,<wbr/> with the first value
26334corresponding to the element of the CFA in row=0,<wbr/> column=0.<wbr/></p>
26335            </td>
26336          </tr>
26337
26338          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26339           <!-- end of entry -->
26340
26341
26342          <tr class="entry" id="static_android.sensor.maxAnalogSensitivity">
26343            <td class="entry_name
26344             " rowspan="3">
26345              android.<wbr/>sensor.<wbr/>max<wbr/>Analog<wbr/>Sensitivity
26346            </td>
26347            <td class="entry_type">
26348                <span class="entry_type_name">int32</span>
26349
26350              <span class="entry_type_visibility"> [public]</span>
26351
26352
26353              <span class="entry_type_hwlevel">[full] </span>
26354
26355
26356
26357
26358            </td> <!-- entry_type -->
26359
26360            <td class="entry_description">
26361              <p>Maximum sensitivity that is implemented
26362purely through analog gain.<wbr/></p>
26363            </td>
26364
26365            <td class="entry_units">
26366            </td>
26367
26368            <td class="entry_range">
26369            </td>
26370
26371            <td class="entry_hal_version">
26372              <p>3.<wbr/>2</p>
26373            </td>
26374
26375            <td class="entry_tags">
26376              <ul class="entry_tags">
26377                  <li><a href="#tag_V1">V1</a></li>
26378                  <li><a href="#tag_FULL">FULL</a></li>
26379              </ul>
26380            </td>
26381
26382          </tr>
26383          <tr class="entries_header">
26384            <th class="th_details" colspan="6">Details</th>
26385          </tr>
26386          <tr class="entry_cont">
26387            <td class="entry_details" colspan="6">
26388              <p>For <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> values less than or
26389equal to this,<wbr/> all applied gain must be analog.<wbr/> For
26390values above this,<wbr/> the gain applied can be a mix of analog and
26391digital.<wbr/></p>
26392            </td>
26393          </tr>
26394
26395
26396          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26397           <!-- end of entry -->
26398
26399
26400          <tr class="entry" id="static_android.sensor.orientation">
26401            <td class="entry_name
26402             " rowspan="3">
26403              android.<wbr/>sensor.<wbr/>orientation
26404            </td>
26405            <td class="entry_type">
26406                <span class="entry_type_name">int32</span>
26407
26408              <span class="entry_type_visibility"> [public]</span>
26409
26410
26411              <span class="entry_type_hwlevel">[legacy] </span>
26412
26413
26414
26415
26416            </td> <!-- entry_type -->
26417
26418            <td class="entry_description">
26419              <p>Clockwise angle through which the output image needs to be rotated to be
26420upright on the device screen in its native orientation.<wbr/></p>
26421            </td>
26422
26423            <td class="entry_units">
26424              Degrees of clockwise rotation; always a multiple of
26425          90
26426            </td>
26427
26428            <td class="entry_range">
26429              <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p>
26430            </td>
26431
26432            <td class="entry_hal_version">
26433              <p>3.<wbr/>2</p>
26434            </td>
26435
26436            <td class="entry_tags">
26437              <ul class="entry_tags">
26438                  <li><a href="#tag_BC">BC</a></li>
26439              </ul>
26440            </td>
26441
26442          </tr>
26443          <tr class="entries_header">
26444            <th class="th_details" colspan="6">Details</th>
26445          </tr>
26446          <tr class="entry_cont">
26447            <td class="entry_details" colspan="6">
26448              <p>Also defines the direction of rolling shutter readout,<wbr/> which is from top to bottom in
26449the sensor's coordinate system.<wbr/></p>
26450<p>Starting with Android API level 32,<wbr/> camera clients that query the orientation via
26451<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#get">CameraCharacteristics#get</a> on foldable devices which
26452include logical cameras can receive a value that can dynamically change depending on the
26453device/<wbr/>fold state.<wbr/>
26454Clients are advised to not cache or store the orientation value of such logical sensors.<wbr/>
26455In case repeated queries to CameraCharacteristics are not preferred,<wbr/> then clients can
26456also access the entire mapping from device state to sensor orientation in
26457<a href="https://developer.android.com/reference/android/hardware/camera2/params/DeviceStateSensorOrientationMap.html">DeviceStateSensorOrientationMap</a>.<wbr/>
26458Do note that a dynamically changing sensor orientation value in camera characteristics
26459will not be the best way to establish the orientation per frame.<wbr/> Clients that want to
26460know the sensor orientation of a particular captured frame should query the
26461<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
26462check the respective physical camera orientation.<wbr/></p>
26463            </td>
26464          </tr>
26465
26466
26467          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26468           <!-- end of entry -->
26469
26470
26471          <tr class="entry" id="static_android.sensor.profileHueSatMapDimensions">
26472            <td class="entry_name
26473             " rowspan="3">
26474              android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map<wbr/>Dimensions
26475            </td>
26476            <td class="entry_type">
26477                <span class="entry_type_name">int32</span>
26478                <span class="entry_type_container">x</span>
26479
26480                <span class="entry_type_array">
26481                  3
26482                </span>
26483              <span class="entry_type_visibility"> [system]</span>
26484
26485
26486
26487
26488                <div class="entry_type_notes">Number of samples for hue,<wbr/> saturation,<wbr/> and value</div>
26489
26490
26491            </td> <!-- entry_type -->
26492
26493            <td class="entry_description">
26494              <p>The number of input samples for each dimension of
26495<a href="#dynamic_android.sensor.profileHueSatMap">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map</a>.<wbr/></p>
26496            </td>
26497
26498            <td class="entry_units">
26499            </td>
26500
26501            <td class="entry_range">
26502              <p>Hue &gt;= 1,<wbr/>
26503Saturation &gt;= 2,<wbr/>
26504Value &gt;= 1</p>
26505            </td>
26506
26507            <td class="entry_hal_version">
26508              <p>3.<wbr/>2</p>
26509            </td>
26510
26511            <td class="entry_tags">
26512              <ul class="entry_tags">
26513                  <li><a href="#tag_RAW">RAW</a></li>
26514              </ul>
26515            </td>
26516
26517          </tr>
26518          <tr class="entries_header">
26519            <th class="th_details" colspan="6">Details</th>
26520          </tr>
26521          <tr class="entry_cont">
26522            <td class="entry_details" colspan="6">
26523              <p>The number of input samples for the hue,<wbr/> saturation,<wbr/> and value
26524dimension of <a href="#dynamic_android.sensor.profileHueSatMap">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map</a>.<wbr/> The order of the
26525dimensions given is hue,<wbr/> saturation,<wbr/> value; where hue is the 0th
26526element.<wbr/></p>
26527            </td>
26528          </tr>
26529
26530
26531          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26532           <!-- end of entry -->
26533
26534
26535          <tr class="entry" id="static_android.sensor.availableTestPatternModes">
26536            <td class="entry_name
26537             " rowspan="5">
26538              android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes
26539            </td>
26540            <td class="entry_type">
26541                <span class="entry_type_name">int32</span>
26542                <span class="entry_type_container">x</span>
26543
26544                <span class="entry_type_array">
26545                  n
26546                </span>
26547              <span class="entry_type_visibility"> [public]</span>
26548
26549
26550
26551
26552                <div class="entry_type_notes">list of enums</div>
26553
26554
26555            </td> <!-- entry_type -->
26556
26557            <td class="entry_description">
26558              <p>List of sensor test pattern modes for <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a>
26559supported by this camera device.<wbr/></p>
26560            </td>
26561
26562            <td class="entry_units">
26563            </td>
26564
26565            <td class="entry_range">
26566              <p>Any value listed in <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a></p>
26567            </td>
26568
26569            <td class="entry_hal_version">
26570              <p>3.<wbr/>2</p>
26571            </td>
26572
26573            <td class="entry_tags">
26574            </td>
26575
26576          </tr>
26577          <tr class="entries_header">
26578            <th class="th_details" colspan="6">Details</th>
26579          </tr>
26580          <tr class="entry_cont">
26581            <td class="entry_details" colspan="6">
26582              <p>Defaults to OFF,<wbr/> and always includes OFF if defined.<wbr/></p>
26583            </td>
26584          </tr>
26585
26586          <tr class="entries_header">
26587            <th class="th_details" colspan="6">HAL Implementation Details</th>
26588          </tr>
26589          <tr class="entry_cont">
26590            <td class="entry_details" colspan="6">
26591              <p>All custom modes must be &gt;= CUSTOM1.<wbr/></p>
26592            </td>
26593          </tr>
26594
26595          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26596           <!-- end of entry -->
26597
26598
26599          <tr class="entry" id="static_android.sensor.opticalBlackRegions">
26600            <td class="entry_name
26601             " rowspan="5">
26602              android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions
26603            </td>
26604            <td class="entry_type">
26605                <span class="entry_type_name">int32</span>
26606                <span class="entry_type_container">x</span>
26607
26608                <span class="entry_type_array">
26609                  4 x num_regions
26610                </span>
26611              <span class="entry_type_visibility"> [public as rectangle]</span>
26612
26613
26614
26615
26616
26617
26618            </td> <!-- entry_type -->
26619
26620            <td class="entry_description">
26621              <p>List of disjoint rectangles indicating the sensor
26622optically shielded black pixel regions.<wbr/></p>
26623            </td>
26624
26625            <td class="entry_units">
26626            </td>
26627
26628            <td class="entry_range">
26629            </td>
26630
26631            <td class="entry_hal_version">
26632              <p>3.<wbr/>2</p>
26633            </td>
26634
26635            <td class="entry_tags">
26636            </td>
26637
26638          </tr>
26639          <tr class="entries_header">
26640            <th class="th_details" colspan="6">Details</th>
26641          </tr>
26642          <tr class="entry_cont">
26643            <td class="entry_details" colspan="6">
26644              <p>In most camera sensors,<wbr/> the active array is surrounded by some
26645optically shielded pixel areas.<wbr/> By blocking light,<wbr/> these pixels
26646provides a reliable black reference for black level compensation
26647in active array region.<wbr/></p>
26648<p>This key provides a list of disjoint rectangles specifying the
26649regions of optically shielded (with metal shield) black pixel
26650regions if the camera device is capable of reading out these black
26651pixels in the output raw images.<wbr/> In comparison to the fixed black
26652level values reported by <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a>,<wbr/> this key
26653may provide a more accurate way for the application to calculate
26654black level of each captured raw images.<wbr/></p>
26655<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
26656<a href="#dynamic_android.sensor.dynamicWhiteLevel">android.<wbr/>sensor.<wbr/>dynamic<wbr/>White<wbr/>Level</a> will also be reported.<wbr/></p>
26657            </td>
26658          </tr>
26659
26660          <tr class="entries_header">
26661            <th class="th_details" colspan="6">HAL Implementation Details</th>
26662          </tr>
26663          <tr class="entry_cont">
26664            <td class="entry_details" colspan="6">
26665              <p>This array contains (xmin,<wbr/> ymin,<wbr/> width,<wbr/> height).<wbr/> The (xmin,<wbr/> ymin)
26666must be &gt;= (0,<wbr/>0) and &lt;=
26667<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
26668&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
26669outside the region reported by
26670<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>
26671<p>The HAL must report minimal number of disjoint regions for the
26672optically shielded back pixel regions.<wbr/> For example,<wbr/> if a region can
26673be covered by one rectangle,<wbr/> the HAL must not split this region into
26674multiple rectangles.<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.sensor.opaqueRawSize">
26683            <td class="entry_name
26684             " rowspan="5">
26685              android.<wbr/>sensor.<wbr/>opaque<wbr/>Raw<wbr/>Size
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 x 3
26693                </span>
26694              <span class="entry_type_visibility"> [system]</span>
26695
26696
26697
26698
26699
26700
26701            </td> <!-- entry_type -->
26702
26703            <td class="entry_description">
26704              <p>Size in bytes for all the listed opaque RAW buffer sizes</p>
26705            </td>
26706
26707            <td class="entry_units">
26708            </td>
26709
26710            <td class="entry_range">
26711              <p>Must be large enough to fit the opaque RAW of corresponding size produced by
26712the camera</p>
26713            </td>
26714
26715            <td class="entry_hal_version">
26716              <p>3.<wbr/>2</p>
26717            </td>
26718
26719            <td class="entry_tags">
26720            </td>
26721
26722          </tr>
26723          <tr class="entries_header">
26724            <th class="th_details" colspan="6">Details</th>
26725          </tr>
26726          <tr class="entry_cont">
26727            <td class="entry_details" colspan="6">
26728              <p>This configurations are listed as <code>(width,<wbr/> height,<wbr/> size_<wbr/>in_<wbr/>bytes)</code> tuples.<wbr/>
26729This is used for sizing the gralloc buffers for opaque RAW buffers.<wbr/>
26730All RAW_<wbr/>OPAQUE output stream configuration listed in
26731<a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> will have a corresponding tuple in
26732this key.<wbr/></p>
26733            </td>
26734          </tr>
26735
26736          <tr class="entries_header">
26737            <th class="th_details" colspan="6">HAL Implementation Details</th>
26738          </tr>
26739          <tr class="entry_cont">
26740            <td class="entry_details" colspan="6">
26741              <p>This key is added in legacy HAL3.<wbr/>4.<wbr/></p>
26742<p>For legacy HAL3.<wbr/>4 or above: devices advertising RAW_<wbr/>OPAQUE format output must list this
26743key.<wbr/>  For legacy HAL3.<wbr/>3 or earlier devices: if RAW_<wbr/>OPAQUE ouput is advertised,<wbr/> camera
26744framework will derive this key by assuming each pixel takes two bytes and no padding bytes
26745between rows.<wbr/></p>
26746            </td>
26747          </tr>
26748
26749          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26750           <!-- end of entry -->
26751
26752
26753          <tr class="entry" id="static_android.sensor.opaqueRawSizeMaximumResolution">
26754            <td class="entry_name
26755             " rowspan="5">
26756              android.<wbr/>sensor.<wbr/>opaque<wbr/>Raw<wbr/>Size<wbr/>Maximum<wbr/>Resolution
26757            </td>
26758            <td class="entry_type">
26759                <span class="entry_type_name">int32</span>
26760                <span class="entry_type_container">x</span>
26761
26762                <span class="entry_type_array">
26763                  n x 3
26764                </span>
26765              <span class="entry_type_visibility"> [system]</span>
26766
26767
26768
26769
26770
26771
26772            </td> <!-- entry_type -->
26773
26774            <td class="entry_description">
26775              <p>Size in bytes for all the listed opaque RAW buffer sizes when
26776<a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to
26777<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>
26778            </td>
26779
26780            <td class="entry_units">
26781            </td>
26782
26783            <td class="entry_range">
26784              <p>Must be large enough to fit the opaque RAW of corresponding size produced by
26785the camera</p>
26786            </td>
26787
26788            <td class="entry_hal_version">
26789              <p>3.<wbr/>6</p>
26790            </td>
26791
26792            <td class="entry_tags">
26793            </td>
26794
26795          </tr>
26796          <tr class="entries_header">
26797            <th class="th_details" colspan="6">Details</th>
26798          </tr>
26799          <tr class="entry_cont">
26800            <td class="entry_details" colspan="6">
26801              <p>Refer to <a href="#static_android.sensor.opaqueRawSize">android.<wbr/>sensor.<wbr/>opaque<wbr/>Raw<wbr/>Size</a> for details.<wbr/></p>
26802            </td>
26803          </tr>
26804
26805          <tr class="entries_header">
26806            <th class="th_details" colspan="6">HAL Implementation Details</th>
26807          </tr>
26808          <tr class="entry_cont">
26809            <td class="entry_details" colspan="6">
26810              <p>Refer to <a href="#static_android.sensor.opaqueRawSize">android.<wbr/>sensor.<wbr/>opaque<wbr/>Raw<wbr/>Size</a> for details.<wbr/></p>
26811            </td>
26812          </tr>
26813
26814          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26815           <!-- end of entry -->
26816
26817
26818
26819      <!-- end of kind -->
26820      </tbody>
26821      <tr><td colspan="7" class="kind">dynamic</td></tr>
26822
26823      <thead class="entries_header">
26824        <tr>
26825          <th class="th_name">Property Name</th>
26826          <th class="th_type">Type</th>
26827          <th class="th_description">Description</th>
26828          <th class="th_units">Units</th>
26829          <th class="th_range">Range</th>
26830          <th class="th_hal_version">Initial HIDL HAL version</th>
26831          <th class="th_tags">Tags</th>
26832        </tr>
26833      </thead>
26834
26835      <tbody>
26836
26837
26838
26839
26840
26841
26842
26843
26844
26845
26846          <tr class="entry" id="dynamic_android.sensor.exposureTime">
26847            <td class="entry_name
26848             " rowspan="3">
26849              android.<wbr/>sensor.<wbr/>exposure<wbr/>Time
26850            </td>
26851            <td class="entry_type">
26852                <span class="entry_type_name">int64</span>
26853
26854              <span class="entry_type_visibility"> [public]</span>
26855
26856
26857              <span class="entry_type_hwlevel">[full] </span>
26858
26859
26860
26861
26862            </td> <!-- entry_type -->
26863
26864            <td class="entry_description">
26865              <p>Duration each pixel is exposed to
26866light.<wbr/></p>
26867            </td>
26868
26869            <td class="entry_units">
26870              Nanoseconds
26871            </td>
26872
26873            <td class="entry_range">
26874              <p><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></p>
26875            </td>
26876
26877            <td class="entry_hal_version">
26878              <p>3.<wbr/>2</p>
26879            </td>
26880
26881            <td class="entry_tags">
26882              <ul class="entry_tags">
26883                  <li><a href="#tag_V1">V1</a></li>
26884              </ul>
26885            </td>
26886
26887          </tr>
26888          <tr class="entries_header">
26889            <th class="th_details" colspan="6">Details</th>
26890          </tr>
26891          <tr class="entry_cont">
26892            <td class="entry_details" colspan="6">
26893              <p>If the sensor can't expose this exact duration,<wbr/> it will shorten the
26894duration exposed to the nearest possible value (rather than expose longer).<wbr/>
26895The final exposure time used will be available in the output capture result.<wbr/></p>
26896<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
26897OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
26898            </td>
26899          </tr>
26900
26901
26902          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26903           <!-- end of entry -->
26904
26905
26906          <tr class="entry" id="dynamic_android.sensor.frameDuration">
26907            <td class="entry_name
26908             " rowspan="5">
26909              android.<wbr/>sensor.<wbr/>frame<wbr/>Duration
26910            </td>
26911            <td class="entry_type">
26912                <span class="entry_type_name">int64</span>
26913
26914              <span class="entry_type_visibility"> [public]</span>
26915
26916
26917              <span class="entry_type_hwlevel">[full] </span>
26918
26919
26920
26921
26922            </td> <!-- entry_type -->
26923
26924            <td class="entry_description">
26925              <p>Duration from start of frame exposure to
26926start of next frame exposure.<wbr/></p>
26927            </td>
26928
26929            <td class="entry_units">
26930              Nanoseconds
26931            </td>
26932
26933            <td class="entry_range">
26934              <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/>
26935The duration is capped to <code>max(duration,<wbr/> exposureTime + overhead)</code>.<wbr/></p>
26936            </td>
26937
26938            <td class="entry_hal_version">
26939              <p>3.<wbr/>2</p>
26940            </td>
26941
26942            <td class="entry_tags">
26943              <ul class="entry_tags">
26944                  <li><a href="#tag_V1">V1</a></li>
26945              </ul>
26946            </td>
26947
26948          </tr>
26949          <tr class="entries_header">
26950            <th class="th_details" colspan="6">Details</th>
26951          </tr>
26952          <tr class="entry_cont">
26953            <td class="entry_details" colspan="6">
26954              <p>The maximum frame rate that can be supported by a camera subsystem is
26955a function of many factors:</p>
26956<ul>
26957<li>Requested resolutions of output image streams</li>
26958<li>Availability of binning /<wbr/> skipping modes on the imager</li>
26959<li>The bandwidth of the imager interface</li>
26960<li>The bandwidth of the various ISP processing blocks</li>
26961</ul>
26962<p>Since these factors can vary greatly between different ISPs and
26963sensors,<wbr/> the camera abstraction tries to represent the bandwidth
26964restrictions with as simple a model as possible.<wbr/></p>
26965<p>The model presented has the following characteristics:</p>
26966<ul>
26967<li>The image sensor is always configured to output the smallest
26968resolution possible given the application's requested output stream
26969sizes.<wbr/>  The smallest resolution is defined as being at least as large
26970as the largest requested output stream size; the camera pipeline must
26971never digitally upsample sensor data when the crop region covers the
26972whole sensor.<wbr/> In general,<wbr/> this means that if only small output stream
26973resolutions are configured,<wbr/> the sensor can provide a higher frame
26974rate.<wbr/></li>
26975<li>Since any request may use any or all the currently configured
26976output streams,<wbr/> the sensor and ISP must be configured to support
26977scaling a single capture to all the streams at the same time.<wbr/>  This
26978means the camera pipeline must be ready to produce the largest
26979requested output size without any delay.<wbr/>  Therefore,<wbr/> the overall
26980frame rate of a given configured stream set is governed only by the
26981largest requested stream resolution.<wbr/></li>
26982<li>Using more than one output stream in a request does not affect the
26983frame duration.<wbr/></li>
26984<li>Certain format-streams may need to do additional background processing
26985before data is consumed/<wbr/>produced by that stream.<wbr/> These processors
26986can run concurrently to the rest of the camera pipeline,<wbr/> but
26987cannot process more than 1 capture at a time.<wbr/></li>
26988</ul>
26989<p>The necessary information for the application,<wbr/> given the model above,<wbr/> is provided via
26990<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/>
26991These are used to determine the maximum frame rate /<wbr/> minimum frame duration that is
26992possible for a given stream configuration.<wbr/></p>
26993<p>Specifically,<wbr/> the application can use the following rules to
26994determine the minimum frame duration it can request from the camera
26995device:</p>
26996<ol>
26997<li>Let the set of currently configured input/<wbr/>output streams be called <code>S</code>.<wbr/></li>
26998<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>
26999(with its respective size/<wbr/>format).<wbr/> Let this set of frame durations be called <code>F</code>.<wbr/></li>
27000<li>For any given request <code>R</code>,<wbr/> the minimum frame duration allowed for <code>R</code> is the maximum
27001out 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>
27002</ol>
27003<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>
27004using its respective size/<wbr/>format),<wbr/> then the frame duration in <code>F</code> determines the steady
27005state frame rate that the application will get if it uses <code>R</code> as a repeating request.<wbr/> Let
27006this special kind of request be called <code>Rsimple</code>.<wbr/></p>
27007<p>A repeating request <code>Rsimple</code> can be <em>occasionally</em> interleaved by a single capture of a
27008new request <code>Rstall</code> (which has at least one in-use stream with a non-0 stall time) and if
27009<code>Rstall</code> has the same minimum frame duration this will not cause a frame rate loss if all
27010buffers from the previous <code>Rstall</code> have already been delivered.<wbr/></p>
27011<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>
27012<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
27013OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
27014            </td>
27015          </tr>
27016
27017          <tr class="entries_header">
27018            <th class="th_details" colspan="6">HAL Implementation Details</th>
27019          </tr>
27020          <tr class="entry_cont">
27021            <td class="entry_details" colspan="6">
27022              <p>For more details about stalling,<wbr/> see
27023<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>.<wbr/></p>
27024            </td>
27025          </tr>
27026
27027          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27028           <!-- end of entry -->
27029
27030
27031          <tr class="entry" id="dynamic_android.sensor.sensitivity">
27032            <td class="entry_name
27033             " rowspan="5">
27034              android.<wbr/>sensor.<wbr/>sensitivity
27035            </td>
27036            <td class="entry_type">
27037                <span class="entry_type_name">int32</span>
27038
27039              <span class="entry_type_visibility"> [public]</span>
27040
27041
27042              <span class="entry_type_hwlevel">[full] </span>
27043
27044
27045
27046
27047            </td> <!-- entry_type -->
27048
27049            <td class="entry_description">
27050              <p>The amount of gain applied to sensor data
27051before processing.<wbr/></p>
27052            </td>
27053
27054            <td class="entry_units">
27055              ISO arithmetic units
27056            </td>
27057
27058            <td class="entry_range">
27059              <p><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></p>
27060            </td>
27061
27062            <td class="entry_hal_version">
27063              <p>3.<wbr/>2</p>
27064            </td>
27065
27066            <td class="entry_tags">
27067              <ul class="entry_tags">
27068                  <li><a href="#tag_V1">V1</a></li>
27069              </ul>
27070            </td>
27071
27072          </tr>
27073          <tr class="entries_header">
27074            <th class="th_details" colspan="6">Details</th>
27075          </tr>
27076          <tr class="entry_cont">
27077            <td class="entry_details" colspan="6">
27078              <p>The sensitivity is the standard ISO sensitivity value,<wbr/>
27079as defined in ISO 12232:2006.<wbr/></p>
27080<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
27081if if it less than <a href="#static_android.sensor.maxAnalogSensitivity">android.<wbr/>sensor.<wbr/>max<wbr/>Analog<wbr/>Sensitivity</a>,<wbr/> the camera device
27082is guaranteed to use only analog amplification for applying the gain.<wbr/></p>
27083<p>If the camera device cannot apply the exact sensitivity
27084requested,<wbr/> it will reduce the gain to the nearest supported
27085value.<wbr/> The final sensitivity used will be available in the
27086output capture result.<wbr/></p>
27087<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
27088OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
27089<p>Note that for devices supporting postRawSensitivityBoost,<wbr/> the total sensitivity applied
27090to the final processed image is the combination of <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> and
27091<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
27092sensitivity from last capture result of an auto request for a manual request,<wbr/> in order
27093to achieve the same brightness in the output image,<wbr/> the application should also
27094set postRawSensitivityBoost.<wbr/></p>
27095            </td>
27096          </tr>
27097
27098          <tr class="entries_header">
27099            <th class="th_details" colspan="6">HAL Implementation Details</th>
27100          </tr>
27101          <tr class="entry_cont">
27102            <td class="entry_details" colspan="6">
27103              <p>ISO 12232:2006 REI method is acceptable.<wbr/></p>
27104            </td>
27105          </tr>
27106
27107          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27108           <!-- end of entry -->
27109
27110
27111          <tr class="entry" id="dynamic_android.sensor.timestamp">
27112            <td class="entry_name
27113             " rowspan="5">
27114              android.<wbr/>sensor.<wbr/>timestamp
27115            </td>
27116            <td class="entry_type">
27117                <span class="entry_type_name">int64</span>
27118
27119              <span class="entry_type_visibility"> [public]</span>
27120
27121
27122              <span class="entry_type_hwlevel">[legacy] </span>
27123
27124
27125
27126
27127            </td> <!-- entry_type -->
27128
27129            <td class="entry_description">
27130              <p>Time at start of exposure of first
27131row of the image sensor active array,<wbr/> in nanoseconds.<wbr/></p>
27132            </td>
27133
27134            <td class="entry_units">
27135              Nanoseconds
27136            </td>
27137
27138            <td class="entry_range">
27139              <p>&gt; 0</p>
27140            </td>
27141
27142            <td class="entry_hal_version">
27143              <p>3.<wbr/>2</p>
27144            </td>
27145
27146            <td class="entry_tags">
27147              <ul class="entry_tags">
27148                  <li><a href="#tag_BC">BC</a></li>
27149              </ul>
27150            </td>
27151
27152          </tr>
27153          <tr class="entries_header">
27154            <th class="th_details" colspan="6">Details</th>
27155          </tr>
27156          <tr class="entry_cont">
27157            <td class="entry_details" colspan="6">
27158              <p>The timestamps are also included in all image
27159buffers produced for the same capture,<wbr/> and will be identical
27160on all the outputs.<wbr/></p>
27161<p>When <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> UNKNOWN,<wbr/>
27162the timestamps measure time since an unspecified starting point,<wbr/>
27163and are monotonically increasing.<wbr/> They can be compared with the
27164timestamps for other captures from the same camera device,<wbr/> but are
27165not guaranteed to be comparable to any other time source.<wbr/></p>
27166<p>When <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME,<wbr/> the
27167timestamps 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
27168be compared to other timestamps from other subsystems that
27169are using that base.<wbr/></p>
27170<p>For reprocessing,<wbr/> the timestamp will match the start of exposure of
27171the input image,<wbr/> i.<wbr/>e.<wbr/> <a href="https://developer.android.com/reference/CaptureResult.html#SENSOR_TIMESTAMP">the
27172timestamp</a> in the TotalCaptureResult that was used to create the
27173reprocess capture request.<wbr/></p>
27174            </td>
27175          </tr>
27176
27177          <tr class="entries_header">
27178            <th class="th_details" colspan="6">HAL Implementation Details</th>
27179          </tr>
27180          <tr class="entry_cont">
27181            <td class="entry_details" colspan="6">
27182              <p>All timestamps must be in reference to the kernel's
27183CLOCK_<wbr/>BOOTTIME monotonic clock,<wbr/> which properly accounts for
27184time spent asleep.<wbr/> This allows for synchronization with
27185sensors that continue to operate while the system is
27186otherwise asleep.<wbr/></p>
27187<p>If <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME,<wbr/>
27188The timestamp must be synchronized with the timestamps from other
27189sensor subsystems that are using the same timebase.<wbr/></p>
27190<p>For reprocessing,<wbr/> the input image's start of exposure can be looked up
27191with <a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a> from the metadata included in the
27192capture request.<wbr/></p>
27193            </td>
27194          </tr>
27195
27196          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27197           <!-- end of entry -->
27198
27199
27200          <tr class="entry" id="dynamic_android.sensor.temperature">
27201            <td class="entry_name
27202             " rowspan="1">
27203              android.<wbr/>sensor.<wbr/>temperature
27204            </td>
27205            <td class="entry_type">
27206                <span class="entry_type_name">float</span>
27207
27208              <span class="entry_type_visibility"> [system]</span>
27209
27210
27211
27212
27213
27214
27215            </td> <!-- entry_type -->
27216
27217            <td class="entry_description">
27218              <p>The temperature of the sensor,<wbr/> sampled at the time
27219exposure began for this frame.<wbr/></p>
27220<p>The thermal diode being queried should be inside the sensor PCB,<wbr/> or
27221somewhere close to it.<wbr/></p>
27222            </td>
27223
27224            <td class="entry_units">
27225              Celsius
27226            </td>
27227
27228            <td class="entry_range">
27229              <p>Optional.<wbr/> This value is missing if no temperature is available.<wbr/></p>
27230            </td>
27231
27232            <td class="entry_hal_version">
27233              <p>3.<wbr/>2</p>
27234            </td>
27235
27236            <td class="entry_tags">
27237              <ul class="entry_tags">
27238                  <li><a href="#tag_FUTURE">FUTURE</a></li>
27239              </ul>
27240            </td>
27241
27242          </tr>
27243
27244
27245          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27246           <!-- end of entry -->
27247
27248
27249          <tr class="entry" id="dynamic_android.sensor.neutralColorPoint">
27250            <td class="entry_name
27251             " rowspan="3">
27252              android.<wbr/>sensor.<wbr/>neutral<wbr/>Color<wbr/>Point
27253            </td>
27254            <td class="entry_type">
27255                <span class="entry_type_name">rational</span>
27256                <span class="entry_type_container">x</span>
27257
27258                <span class="entry_type_array">
27259                  3
27260                </span>
27261              <span class="entry_type_visibility"> [public]</span>
27262
27263
27264
27265
27266
27267
27268            </td> <!-- entry_type -->
27269
27270            <td class="entry_description">
27271              <p>The estimated camera neutral color in the native sensor colorspace at
27272the time of capture.<wbr/></p>
27273            </td>
27274
27275            <td class="entry_units">
27276            </td>
27277
27278            <td class="entry_range">
27279            </td>
27280
27281            <td class="entry_hal_version">
27282              <p>3.<wbr/>2</p>
27283            </td>
27284
27285            <td class="entry_tags">
27286              <ul class="entry_tags">
27287                  <li><a href="#tag_RAW">RAW</a></li>
27288              </ul>
27289            </td>
27290
27291          </tr>
27292          <tr class="entries_header">
27293            <th class="th_details" colspan="6">Details</th>
27294          </tr>
27295          <tr class="entry_cont">
27296            <td class="entry_details" colspan="6">
27297              <p>This value gives the neutral color point encoded as an RGB value in the
27298native sensor color space.<wbr/>  The neutral color point indicates the
27299currently estimated white point of the scene illumination.<wbr/>  It can be
27300used to interpolate between the provided color transforms when
27301processing raw sensor data.<wbr/></p>
27302<p>The order of the values is R,<wbr/> G,<wbr/> B; where R is in the lowest index.<wbr/></p>
27303<p>Starting from Android Q,<wbr/> this key will not be present for a MONOCHROME camera,<wbr/> even if
27304the camera device has RAW capability.<wbr/></p>
27305            </td>
27306          </tr>
27307
27308
27309          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27310           <!-- end of entry -->
27311
27312
27313          <tr class="entry" id="dynamic_android.sensor.noiseProfile">
27314            <td class="entry_name
27315             " rowspan="5">
27316              android.<wbr/>sensor.<wbr/>noise<wbr/>Profile
27317            </td>
27318            <td class="entry_type">
27319                <span class="entry_type_name">double</span>
27320                <span class="entry_type_container">x</span>
27321
27322                <span class="entry_type_array">
27323                  2 x CFA Channels
27324                </span>
27325              <span class="entry_type_visibility"> [public as pairDoubleDouble]</span>
27326
27327
27328
27329
27330                <div class="entry_type_notes">Pairs of noise model coefficients</div>
27331
27332
27333            </td> <!-- entry_type -->
27334
27335            <td class="entry_description">
27336              <p>Noise model coefficients for each CFA mosaic channel.<wbr/></p>
27337            </td>
27338
27339            <td class="entry_units">
27340            </td>
27341
27342            <td class="entry_range">
27343            </td>
27344
27345            <td class="entry_hal_version">
27346              <p>3.<wbr/>2</p>
27347            </td>
27348
27349            <td class="entry_tags">
27350              <ul class="entry_tags">
27351                  <li><a href="#tag_RAW">RAW</a></li>
27352              </ul>
27353            </td>
27354
27355          </tr>
27356          <tr class="entries_header">
27357            <th class="th_details" colspan="6">Details</th>
27358          </tr>
27359          <tr class="entry_cont">
27360            <td class="entry_details" colspan="6">
27361              <p>This key contains two noise model coefficients for each CFA channel
27362corresponding to the sensor amplification (S) and sensor readout
27363noise (O).<wbr/>  These are given as pairs of coefficients for each channel
27364in the same order as channels listed for the CFA layout key
27365(see <a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a>).<wbr/>  This is
27366represented as an array of Pair&lt;Double,<wbr/> Double&gt;,<wbr/> where
27367the first member of the Pair at index n is the S coefficient and the
27368second member is the O coefficient for the nth color channel in the CFA.<wbr/></p>
27369<p>These coefficients are used in a two parameter noise model to describe
27370the amount of noise present in the image for each CFA channel.<wbr/>  The
27371noise model used here is:</p>
27372<p>N(x) = sqrt(Sx + O)</p>
27373<p>Where x represents the recorded signal of a CFA channel normalized to
27374the range [0,<wbr/> 1],<wbr/> and S and O are the noise model coeffiecients for
27375that channel.<wbr/></p>
27376<p>A more detailed description of the noise model can be found in the
27377Adobe DNG specification for the NoiseProfile tag.<wbr/></p>
27378<p>For a MONOCHROME camera,<wbr/> there is only one color channel.<wbr/> So the noise model coefficients
27379will only contain one S and one O.<wbr/></p>
27380            </td>
27381          </tr>
27382
27383          <tr class="entries_header">
27384            <th class="th_details" colspan="6">HAL Implementation Details</th>
27385          </tr>
27386          <tr class="entry_cont">
27387            <td class="entry_details" colspan="6">
27388              <p>For a CFA layout of RGGB,<wbr/> the list of coefficients would be given as
27389an array of doubles S0,<wbr/>O0,<wbr/>S1,<wbr/>O1,...,<wbr/> where S0 and O0 are the coefficients
27390for the red channel,<wbr/> S1 and O1 are the coefficients for the first green
27391channel,<wbr/> etc.<wbr/></p>
27392            </td>
27393          </tr>
27394
27395          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27396           <!-- end of entry -->
27397
27398
27399          <tr class="entry" id="dynamic_android.sensor.profileHueSatMap">
27400            <td class="entry_name
27401             " rowspan="3">
27402              android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map
27403            </td>
27404            <td class="entry_type">
27405                <span class="entry_type_name">float</span>
27406                <span class="entry_type_container">x</span>
27407
27408                <span class="entry_type_array">
27409                  hue_samples x saturation_samples x value_samples x 3
27410                </span>
27411              <span class="entry_type_visibility"> [system]</span>
27412
27413
27414
27415
27416                <div class="entry_type_notes">Mapping for hue,<wbr/> saturation,<wbr/> and value</div>
27417
27418
27419            </td> <!-- entry_type -->
27420
27421            <td class="entry_description">
27422              <p>A mapping containing a hue shift,<wbr/> saturation scale,<wbr/> and value scale
27423for each pixel.<wbr/></p>
27424            </td>
27425
27426            <td class="entry_units">
27427
27428          The hue shift is given in degrees; saturation and value scale factors are
27429          unitless and are between 0 and 1 inclusive
27430
27431            </td>
27432
27433            <td class="entry_range">
27434            </td>
27435
27436            <td class="entry_hal_version">
27437              <p>3.<wbr/>2</p>
27438            </td>
27439
27440            <td class="entry_tags">
27441              <ul class="entry_tags">
27442                  <li><a href="#tag_RAW">RAW</a></li>
27443              </ul>
27444            </td>
27445
27446          </tr>
27447          <tr class="entries_header">
27448            <th class="th_details" colspan="6">Details</th>
27449          </tr>
27450          <tr class="entry_cont">
27451            <td class="entry_details" colspan="6">
27452              <p>hue_<wbr/>samples,<wbr/> saturation_<wbr/>samples,<wbr/> and value_<wbr/>samples are given in
27453<a href="#static_android.sensor.profileHueSatMapDimensions">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map<wbr/>Dimensions</a>.<wbr/></p>
27454<p>Each entry of this map contains three floats corresponding to the
27455hue shift,<wbr/> saturation scale,<wbr/> and value scale,<wbr/> respectively; where the
27456hue shift has the lowest index.<wbr/> The map entries are stored in the key
27457in nested loop order,<wbr/> with the value divisions in the outer loop,<wbr/> the
27458hue divisions in the middle loop,<wbr/> and the saturation divisions in the
27459inner loop.<wbr/> All zero input saturation entries are required to have a
27460value scale factor of 1.<wbr/>0.<wbr/></p>
27461            </td>
27462          </tr>
27463
27464
27465          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27466           <!-- end of entry -->
27467
27468
27469          <tr class="entry" id="dynamic_android.sensor.profileToneCurve">
27470            <td class="entry_name
27471             " rowspan="3">
27472              android.<wbr/>sensor.<wbr/>profile<wbr/>Tone<wbr/>Curve
27473            </td>
27474            <td class="entry_type">
27475                <span class="entry_type_name">float</span>
27476                <span class="entry_type_container">x</span>
27477
27478                <span class="entry_type_array">
27479                  samples x 2
27480                </span>
27481              <span class="entry_type_visibility"> [system]</span>
27482
27483
27484
27485
27486                <div class="entry_type_notes">Samples defining a spline for a tone-mapping curve</div>
27487
27488
27489            </td> <!-- entry_type -->
27490
27491            <td class="entry_description">
27492              <p>A list of x,<wbr/>y samples defining a tone-mapping curve for gamma adjustment.<wbr/></p>
27493            </td>
27494
27495            <td class="entry_units">
27496            </td>
27497
27498            <td class="entry_range">
27499              <p>Each sample has an input range of <code>[0,<wbr/> 1]</code> and an output range of
27500<code>[0,<wbr/> 1]</code>.<wbr/>  The first sample is required to be <code>(0,<wbr/> 0)</code>,<wbr/> and the last
27501sample is required to be <code>(1,<wbr/> 1)</code>.<wbr/></p>
27502            </td>
27503
27504            <td class="entry_hal_version">
27505              <p>3.<wbr/>2</p>
27506            </td>
27507
27508            <td class="entry_tags">
27509              <ul class="entry_tags">
27510                  <li><a href="#tag_RAW">RAW</a></li>
27511              </ul>
27512            </td>
27513
27514          </tr>
27515          <tr class="entries_header">
27516            <th class="th_details" colspan="6">Details</th>
27517          </tr>
27518          <tr class="entry_cont">
27519            <td class="entry_details" colspan="6">
27520              <p>This key contains a default tone curve that can be applied while
27521processing the image as a starting point for user adjustments.<wbr/>
27522The curve is specified as a list of value pairs in linear gamma.<wbr/>
27523The curve is interpolated using a cubic spline.<wbr/></p>
27524            </td>
27525          </tr>
27526
27527
27528          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27529           <!-- end of entry -->
27530
27531
27532          <tr class="entry" id="dynamic_android.sensor.greenSplit">
27533            <td class="entry_name
27534             " rowspan="5">
27535              android.<wbr/>sensor.<wbr/>green<wbr/>Split
27536            </td>
27537            <td class="entry_type">
27538                <span class="entry_type_name">float</span>
27539
27540              <span class="entry_type_visibility"> [public]</span>
27541
27542
27543
27544
27545
27546
27547            </td> <!-- entry_type -->
27548
27549            <td class="entry_description">
27550              <p>The worst-case divergence between Bayer green channels.<wbr/></p>
27551            </td>
27552
27553            <td class="entry_units">
27554            </td>
27555
27556            <td class="entry_range">
27557              <p>&gt;= 0</p>
27558            </td>
27559
27560            <td class="entry_hal_version">
27561              <p>3.<wbr/>2</p>
27562            </td>
27563
27564            <td class="entry_tags">
27565              <ul class="entry_tags">
27566                  <li><a href="#tag_RAW">RAW</a></li>
27567              </ul>
27568            </td>
27569
27570          </tr>
27571          <tr class="entries_header">
27572            <th class="th_details" colspan="6">Details</th>
27573          </tr>
27574          <tr class="entry_cont">
27575            <td class="entry_details" colspan="6">
27576              <p>This value is an estimate of the worst case split between the
27577Bayer green channels in the red and blue rows in the sensor color
27578filter array.<wbr/></p>
27579<p>The green split is calculated as follows:</p>
27580<ol>
27581<li>A 5x5 pixel (or larger) window W within the active sensor array is
27582chosen.<wbr/> The term 'pixel' here is taken to mean a group of 4 Bayer
27583mosaic channels (R,<wbr/> Gr,<wbr/> Gb,<wbr/> B).<wbr/>  The location and size of the window
27584chosen is implementation defined,<wbr/> and should be chosen to provide a
27585green split estimate that is both representative of the entire image
27586for this camera sensor,<wbr/> and can be calculated quickly.<wbr/></li>
27587<li>The arithmetic mean of the green channels from the red
27588rows (mean_<wbr/>Gr) within W is computed.<wbr/></li>
27589<li>The arithmetic mean of the green channels from the blue
27590rows (mean_<wbr/>Gb) within W is computed.<wbr/></li>
27591<li>The maximum ratio R of the two means is computed as follows:
27592<code>R = max((mean_<wbr/>Gr + 1)/<wbr/>(mean_<wbr/>Gb + 1),<wbr/> (mean_<wbr/>Gb + 1)/<wbr/>(mean_<wbr/>Gr + 1))</code></li>
27593</ol>
27594<p>The ratio R is the green split divergence reported for this property,<wbr/>
27595which represents how much the green channels differ in the mosaic
27596pattern.<wbr/>  This value is typically used to determine the treatment of
27597the green mosaic channels when demosaicing.<wbr/></p>
27598<p>The green split value can be roughly interpreted as follows:</p>
27599<ul>
27600<li>R &lt; 1.<wbr/>03 is a negligible split (&lt;3% divergence).<wbr/></li>
27601<li>1.<wbr/>20 &lt;= R &gt;= 1.<wbr/>03 will require some software
27602correction to avoid demosaic errors (3-20% divergence).<wbr/></li>
27603<li>R &gt; 1.<wbr/>20 will require strong software correction to produce
27604a usuable image (&gt;20% divergence).<wbr/></li>
27605</ul>
27606<p>Starting from Android Q,<wbr/> this key will not be present for a MONOCHROME camera,<wbr/> even if
27607the camera device has RAW capability.<wbr/></p>
27608            </td>
27609          </tr>
27610
27611          <tr class="entries_header">
27612            <th class="th_details" colspan="6">HAL Implementation Details</th>
27613          </tr>
27614          <tr class="entry_cont">
27615            <td class="entry_details" colspan="6">
27616              <p>The green split given may be a static value based on prior
27617characterization of the camera sensor using the green split
27618calculation method given here over a large,<wbr/> representative,<wbr/> sample
27619set of images.<wbr/>  Other methods of calculation that produce equivalent
27620results,<wbr/> and can be interpreted in the same manner,<wbr/> may be used.<wbr/></p>
27621            </td>
27622          </tr>
27623
27624          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27625           <!-- end of entry -->
27626
27627
27628          <tr class="entry" id="dynamic_android.sensor.testPatternData">
27629            <td class="entry_name
27630             " rowspan="5">
27631              android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data
27632            </td>
27633            <td class="entry_type">
27634                <span class="entry_type_name">int32</span>
27635                <span class="entry_type_container">x</span>
27636
27637                <span class="entry_type_array">
27638                  4
27639                </span>
27640              <span class="entry_type_visibility"> [public]</span>
27641
27642
27643
27644
27645
27646
27647            </td> <!-- entry_type -->
27648
27649            <td class="entry_description">
27650              <p>A pixel <code>[R,<wbr/> G_<wbr/>even,<wbr/> G_<wbr/>odd,<wbr/> B]</code> that supplies the test pattern
27651when <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a> is SOLID_<wbr/>COLOR.<wbr/></p>
27652            </td>
27653
27654            <td class="entry_units">
27655            </td>
27656
27657            <td class="entry_range">
27658            </td>
27659
27660            <td class="entry_hal_version">
27661              <p>3.<wbr/>2</p>
27662            </td>
27663
27664            <td class="entry_tags">
27665            </td>
27666
27667          </tr>
27668          <tr class="entries_header">
27669            <th class="th_details" colspan="6">Details</th>
27670          </tr>
27671          <tr class="entry_cont">
27672            <td class="entry_details" colspan="6">
27673              <p>Each color channel is treated as an unsigned 32-bit integer.<wbr/>
27674The camera device then uses the most significant X bits
27675that correspond to how many bits are in its Bayer raw sensor
27676output.<wbr/></p>
27677<p>For example,<wbr/> a sensor with RAW10 Bayer output would use the
2767810 most significant bits from each color channel.<wbr/></p>
27679            </td>
27680          </tr>
27681
27682          <tr class="entries_header">
27683            <th class="th_details" colspan="6">HAL Implementation Details</th>
27684          </tr>
27685          <tr class="entry_cont">
27686            <td class="entry_details" colspan="6">
27687
27688            </td>
27689          </tr>
27690
27691          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27692           <!-- end of entry -->
27693
27694
27695          <tr class="entry" id="dynamic_android.sensor.testPatternMode">
27696            <td class="entry_name
27697             " rowspan="5">
27698              android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode
27699            </td>
27700            <td class="entry_type">
27701                <span class="entry_type_name entry_type_name_enum">int32</span>
27702
27703              <span class="entry_type_visibility"> [public]</span>
27704
27705
27706
27707
27708
27709                <ul class="entry_type_enum">
27710                  <li>
27711                    <span class="entry_type_enum_name">OFF (v3.2)</span>
27712                    <span class="entry_type_enum_notes"><p>No test pattern mode is used,<wbr/> and the camera
27713device returns captures from the image sensor.<wbr/></p>
27714<p>This is the default if the key is not set.<wbr/></p></span>
27715                  </li>
27716                  <li>
27717                    <span class="entry_type_enum_name">SOLID_COLOR (v3.2)</span>
27718                    <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
27719respective color channel provided in
27720<a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a>.<wbr/></p>
27721<p>For example:</p>
27722<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]
27723</code></pre>
27724<p>All green pixels are 100% green.<wbr/> All red/<wbr/>blue pixels are black.<wbr/></p>
27725<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]
27726</code></pre>
27727<p>All red pixels are 100% red.<wbr/> Only the odd green pixels
27728are 100% green.<wbr/> All blue pixels are 100% black.<wbr/></p></span>
27729                  </li>
27730                  <li>
27731                    <span class="entry_type_enum_name">COLOR_BARS (v3.2)</span>
27732                    <span class="entry_type_enum_notes"><p>All pixel data is replaced with an 8-bar color pattern.<wbr/></p>
27733<p>The vertical bars (left-to-right) are as follows:</p>
27734<ul>
27735<li>100% white</li>
27736<li>yellow</li>
27737<li>cyan</li>
27738<li>green</li>
27739<li>magenta</li>
27740<li>red</li>
27741<li>blue</li>
27742<li>black</li>
27743</ul>
27744<p>In general the image would look like the following:</p>
27745<pre><code>W Y C G M R B K
27746W Y C G M R B K
27747W Y C G M R B K
27748W Y C G M R B K
27749W Y C G M R B K
27750.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
27751.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
27752.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
27753
27754(B = Blue,<wbr/> K = Black)
27755</code></pre>
27756<p>Each bar should take up 1/<wbr/>8 of the sensor pixel array width.<wbr/>
27757When this is not possible,<wbr/> the bar size should be rounded
27758down to the nearest integer and the pattern can repeat
27759on the right side.<wbr/></p>
27760<p>Each bar's height must always take up the full sensor
27761pixel array height.<wbr/></p>
27762<p>Each pixel in this test pattern must be set to either
277630% intensity or 100% intensity.<wbr/></p></span>
27764                  </li>
27765                  <li>
27766                    <span class="entry_type_enum_name">COLOR_BARS_FADE_TO_GRAY (v3.2)</span>
27767                    <span class="entry_type_enum_notes"><p>The test pattern is similar to COLOR_<wbr/>BARS,<wbr/> except that
27768each bar should start at its specified color at the top,<wbr/>
27769and fade to gray at the bottom.<wbr/></p>
27770<p>Furthermore each bar is further subdivided into a left and
27771right half.<wbr/> The left half should have a smooth gradient,<wbr/>
27772and the right half should have a quantized gradient.<wbr/></p>
27773<p>In particular,<wbr/> the right half's should consist of blocks of the
27774same color for 1/<wbr/>16th active sensor pixel array width.<wbr/></p>
27775<p>The least significant bits in the quantized gradient should
27776be copied from the most significant bits of the smooth gradient.<wbr/></p>
27777<p>The height of each bar should always be a multiple of 128.<wbr/>
27778When this is not the case,<wbr/> the pattern should repeat at the bottom
27779of the image.<wbr/></p></span>
27780                  </li>
27781                  <li>
27782                    <span class="entry_type_enum_name">PN9 (v3.2)</span>
27783                    <span class="entry_type_enum_notes"><p>All pixel data is replaced by a pseudo-random sequence
27784generated from a PN9 512-bit sequence (typically implemented
27785in hardware with a linear feedback shift register).<wbr/></p>
27786<p>The generator should be reset at the beginning of each frame,<wbr/>
27787and thus each subsequent raw frame with this test pattern should
27788be exactly the same as the last.<wbr/></p></span>
27789                  </li>
27790                  <li>
27791                    <span class="entry_type_enum_name">BLACK (v3.6)</span>
27792                    <span class="entry_type_enum_hidden">[test]</span>
27793                    <span class="entry_type_enum_notes"><p>All pixel data is replaced by 0% intensity (black) values.<wbr/></p>
27794<p>This test pattern is identical to SOLID_<wbr/>COLOR with a value of <code>[0,<wbr/> 0,<wbr/> 0,<wbr/> 0]</code> for
27795<a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a>.<wbr/>  It is recommended that devices implement full
27796SOLID_<wbr/>COLOR support instead,<wbr/> but BLACK can be used to provide minimal support for a
27797test pattern suitable for privacy use cases.<wbr/></p></span>
27798                  </li>
27799                  <li>
27800                    <span class="entry_type_enum_name">CUSTOM1 (v3.2)</span>
27801                    <span class="entry_type_enum_value">256</span>
27802                    <span class="entry_type_enum_notes"><p>The first custom test pattern.<wbr/> All custom patterns that are
27803available only on this camera device are at least this numeric
27804value.<wbr/></p>
27805<p>All of the custom test patterns will be static
27806(that is the raw image must not vary from frame to frame).<wbr/></p></span>
27807                  </li>
27808                </ul>
27809
27810            </td> <!-- entry_type -->
27811
27812            <td class="entry_description">
27813              <p>When enabled,<wbr/> the sensor sends a test pattern instead of
27814doing a real exposure from the camera.<wbr/></p>
27815            </td>
27816
27817            <td class="entry_units">
27818            </td>
27819
27820            <td class="entry_range">
27821              <p><a href="#static_android.sensor.availableTestPatternModes">android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes</a></p>
27822            </td>
27823
27824            <td class="entry_hal_version">
27825              <p>3.<wbr/>2</p>
27826            </td>
27827
27828            <td class="entry_tags">
27829            </td>
27830
27831          </tr>
27832          <tr class="entries_header">
27833            <th class="th_details" colspan="6">Details</th>
27834          </tr>
27835          <tr class="entry_cont">
27836            <td class="entry_details" colspan="6">
27837              <p>When a test pattern is enabled,<wbr/> all manual sensor controls specified
27838by android.<wbr/>sensor.<wbr/>* will be ignored.<wbr/> All other controls should
27839work as normal.<wbr/></p>
27840<p>For example,<wbr/> if manual flash is enabled,<wbr/> flash firing should still
27841occur (and that the test pattern remain unmodified,<wbr/> since the flash
27842would not actually affect it).<wbr/></p>
27843<p>Defaults to OFF.<wbr/></p>
27844            </td>
27845          </tr>
27846
27847          <tr class="entries_header">
27848            <th class="th_details" colspan="6">HAL Implementation Details</th>
27849          </tr>
27850          <tr class="entry_cont">
27851            <td class="entry_details" colspan="6">
27852              <p>All test patterns are specified in the Bayer domain.<wbr/></p>
27853<p>The HAL may choose to substitute test patterns from the sensor
27854with test patterns from on-device memory.<wbr/> In that case,<wbr/> it should be
27855indistinguishable to the ISP whether the data came from the
27856sensor interconnect bus (such as CSI2) or memory.<wbr/></p>
27857<p>For privacy use cases,<wbr/> if the camera device:</p>
27858<ul>
27859<li>supports SOLID_<wbr/>COLOR or BLACK test patterns,<wbr/></li>
27860<li>is a logical multi-camera,<wbr/> and</li>
27861<li>lists testPatternMode as a physical request key,<wbr/></li>
27862</ul>
27863<p>Each physical camera must support the same SOLID_<wbr/>COLOR and/<wbr/>or BLACK test patterns
27864as the logical camera.<wbr/></p>
27865            </td>
27866          </tr>
27867
27868          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27869           <!-- end of entry -->
27870
27871
27872          <tr class="entry" id="dynamic_android.sensor.rollingShutterSkew">
27873            <td class="entry_name
27874             " rowspan="5">
27875              android.<wbr/>sensor.<wbr/>rolling<wbr/>Shutter<wbr/>Skew
27876            </td>
27877            <td class="entry_type">
27878                <span class="entry_type_name">int64</span>
27879
27880              <span class="entry_type_visibility"> [public]</span>
27881
27882
27883              <span class="entry_type_hwlevel">[limited] </span>
27884
27885
27886
27887
27888            </td> <!-- entry_type -->
27889
27890            <td class="entry_description">
27891              <p>Duration between the start of exposure for the first row of the image sensor,<wbr/>
27892and the start of exposure for one past the last row of the image sensor.<wbr/></p>
27893            </td>
27894
27895            <td class="entry_units">
27896              Nanoseconds
27897            </td>
27898
27899            <td class="entry_range">
27900              <p>&gt;= 0 and &lt;
27901<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/></p>
27902            </td>
27903
27904            <td class="entry_hal_version">
27905              <p>3.<wbr/>2</p>
27906            </td>
27907
27908            <td class="entry_tags">
27909              <ul class="entry_tags">
27910                  <li><a href="#tag_V1">V1</a></li>
27911              </ul>
27912            </td>
27913
27914          </tr>
27915          <tr class="entries_header">
27916            <th class="th_details" colspan="6">Details</th>
27917          </tr>
27918          <tr class="entry_cont">
27919            <td class="entry_details" colspan="6">
27920              <p>This is the exposure time skew between the first and <code>(last+1)</code> row exposure start times.<wbr/> The
27921first row and the last row are the first and last rows inside of the
27922<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
27923<p>For typical camera sensors that use rolling shutters,<wbr/> this is also equivalent to the frame
27924readout time.<wbr/></p>
27925<p>If the image sensor is operating in a binned or cropped mode due to the current output
27926target resolutions,<wbr/> it's possible this skew is reported to be larger than the exposure
27927time,<wbr/> for example,<wbr/> since it is based on the full array even if a partial array is read
27928out.<wbr/> Be sure to scale the number to cover the section of the sensor actually being used
27929for the outputs you care about.<wbr/> So if your output covers N rows of the active array of
27930height H,<wbr/> scale this value by N/<wbr/>H to get the total skew for that viewport.<wbr/></p>
27931<p><em>Note:</em> Prior to Android 11,<wbr/> this field was described as measuring duration from
27932first to last row of the image sensor,<wbr/> which is not equal to the frame readout time for a
27933rolling shutter sensor.<wbr/> Implementations generally reported the latter value,<wbr/> so to resolve
27934the inconsistency,<wbr/> the description has been updated to range from (first,<wbr/> last+1) row
27935exposure start,<wbr/> instead.<wbr/></p>
27936            </td>
27937          </tr>
27938
27939          <tr class="entries_header">
27940            <th class="th_details" colspan="6">HAL Implementation Details</th>
27941          </tr>
27942          <tr class="entry_cont">
27943            <td class="entry_details" colspan="6">
27944              <p>The HAL must report <code>0</code> if the sensor is using global shutter,<wbr/> where all pixels begin
27945exposure at the same time.<wbr/></p>
27946            </td>
27947          </tr>
27948
27949          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27950           <!-- end of entry -->
27951
27952
27953          <tr class="entry" id="dynamic_android.sensor.dynamicBlackLevel">
27954            <td class="entry_name
27955             " rowspan="5">
27956              android.<wbr/>sensor.<wbr/>dynamic<wbr/>Black<wbr/>Level
27957            </td>
27958            <td class="entry_type">
27959                <span class="entry_type_name">float</span>
27960                <span class="entry_type_container">x</span>
27961
27962                <span class="entry_type_array">
27963                  4
27964                </span>
27965              <span class="entry_type_visibility"> [public]</span>
27966
27967
27968
27969
27970                <div class="entry_type_notes">2x2 raw count block</div>
27971
27972
27973            </td> <!-- entry_type -->
27974
27975            <td class="entry_description">
27976              <p>A per-frame dynamic black level offset for each of the color filter
27977arrangement (CFA) mosaic channels.<wbr/></p>
27978            </td>
27979
27980            <td class="entry_units">
27981            </td>
27982
27983            <td class="entry_range">
27984              <p>&gt;= 0 for each.<wbr/></p>
27985            </td>
27986
27987            <td class="entry_hal_version">
27988              <p>3.<wbr/>2</p>
27989            </td>
27990
27991            <td class="entry_tags">
27992              <ul class="entry_tags">
27993                  <li><a href="#tag_RAW">RAW</a></li>
27994              </ul>
27995            </td>
27996
27997          </tr>
27998          <tr class="entries_header">
27999            <th class="th_details" colspan="6">Details</th>
28000          </tr>
28001          <tr class="entry_cont">
28002            <td class="entry_details" colspan="6">
28003              <p>Camera sensor black levels may vary dramatically for different
28004capture settings (e.<wbr/>g.<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>).<wbr/> The fixed black
28005level reported by <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> may be too
28006inaccurate to represent the actual value on a per-frame basis.<wbr/> The
28007camera device internal pipeline relies on reliable black level values
28008to process the raw images appropriately.<wbr/> To get the best image
28009quality,<wbr/> the camera device may choose to estimate the per frame black
28010level values either based on optically shielded black regions
28011(<a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a>) or its internal model.<wbr/></p>
28012<p>This key reports the camera device estimated per-frame zero light
28013value for each of the CFA mosaic channels in the camera sensor.<wbr/> The
28014<a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> may only represent a coarse
28015approximation of the actual black level values.<wbr/> This value is the
28016black level used in camera device internal image processing pipeline
28017and generally more accurate than the fixed black level values.<wbr/>
28018However,<wbr/> since they are estimated values by the camera device,<wbr/> they
28019may not be as accurate as the black level values calculated from the
28020optical black pixels reported by <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a>.<wbr/></p>
28021<p>The values are given in the same order as channels listed for the CFA
28022layout 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
28023nth value given corresponds to the black level offset for the nth
28024color channel listed in the CFA.<wbr/></p>
28025<p>For a MONOCHROME camera,<wbr/> all of the 2x2 channels must have the same values.<wbr/></p>
28026<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
28027camera device advertises this key via <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureResultKeys">CameraCharacteristics#getAvailableCaptureResultKeys</a>.<wbr/></p>
28028            </td>
28029          </tr>
28030
28031          <tr class="entries_header">
28032            <th class="th_details" colspan="6">HAL Implementation Details</th>
28033          </tr>
28034          <tr class="entry_cont">
28035            <td class="entry_details" colspan="6">
28036              <p>The values are given in row-column scan order,<wbr/> with the first value
28037corresponding to the element of the CFA in row=0,<wbr/> column=0.<wbr/></p>
28038            </td>
28039          </tr>
28040
28041          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28042           <!-- end of entry -->
28043
28044
28045          <tr class="entry" id="dynamic_android.sensor.dynamicWhiteLevel">
28046            <td class="entry_name
28047             " rowspan="5">
28048              android.<wbr/>sensor.<wbr/>dynamic<wbr/>White<wbr/>Level
28049            </td>
28050            <td class="entry_type">
28051                <span class="entry_type_name">int32</span>
28052
28053              <span class="entry_type_visibility"> [public]</span>
28054
28055
28056
28057
28058
28059
28060            </td> <!-- entry_type -->
28061
28062            <td class="entry_description">
28063              <p>Maximum raw value output by sensor for this frame.<wbr/></p>
28064            </td>
28065
28066            <td class="entry_units">
28067            </td>
28068
28069            <td class="entry_range">
28070              <p>&gt;= 0</p>
28071            </td>
28072
28073            <td class="entry_hal_version">
28074              <p>3.<wbr/>2</p>
28075            </td>
28076
28077            <td class="entry_tags">
28078              <ul class="entry_tags">
28079                  <li><a href="#tag_RAW">RAW</a></li>
28080              </ul>
28081            </td>
28082
28083          </tr>
28084          <tr class="entries_header">
28085            <th class="th_details" colspan="6">Details</th>
28086          </tr>
28087          <tr class="entry_cont">
28088            <td class="entry_details" colspan="6">
28089              <p>Since the <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> may change for different
28090capture settings (e.<wbr/>g.,<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>),<wbr/> the white
28091level will change accordingly.<wbr/> This key is similar to
28092<a href="#static_android.sensor.info.whiteLevel">android.<wbr/>sensor.<wbr/>info.<wbr/>white<wbr/>Level</a>,<wbr/> but specifies the camera device
28093estimated white level for each frame.<wbr/></p>
28094<p>This key will be available if <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a> is
28095available or the camera device advertises this key via
28096<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a>.<wbr/></p>
28097            </td>
28098          </tr>
28099
28100          <tr class="entries_header">
28101            <th class="th_details" colspan="6">HAL Implementation Details</th>
28102          </tr>
28103          <tr class="entry_cont">
28104            <td class="entry_details" colspan="6">
28105              <p>The full bit depth of the sensor must be available in the raw data,<wbr/>
28106so the value for linear sensors should not be significantly lower
28107than maximum raw value supported,<wbr/> i.<wbr/>e.<wbr/> 2^(sensor bits per pixel).<wbr/></p>
28108            </td>
28109          </tr>
28110
28111          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28112           <!-- end of entry -->
28113
28114
28115          <tr class="entry" id="dynamic_android.sensor.pixelMode">
28116            <td class="entry_name
28117             " rowspan="3">
28118              android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode
28119            </td>
28120            <td class="entry_type">
28121                <span class="entry_type_name entry_type_name_enum">byte</span>
28122
28123              <span class="entry_type_visibility"> [public]</span>
28124
28125
28126
28127
28128
28129                <ul class="entry_type_enum">
28130                  <li>
28131                    <span class="entry_type_enum_name">DEFAULT (v3.6)</span>
28132                    <span class="entry_type_enum_notes"><p>This is the default sensor pixel mode.<wbr/> This is the only sensor pixel mode
28133supported unless a camera device advertises
28134<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>.<wbr/></p></span>
28135                  </li>
28136                  <li>
28137                    <span class="entry_type_enum_name">MAXIMUM_RESOLUTION (v3.6)</span>
28138                    <span class="entry_type_enum_notes"><p>This sensor pixel mode is offered by devices with capability
28139<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>.<wbr/>
28140In this mode,<wbr/> sensors typically do not bin pixels,<wbr/> as a result can offer larger
28141image sizes.<wbr/></p></span>
28142                  </li>
28143                </ul>
28144
28145            </td> <!-- entry_type -->
28146
28147            <td class="entry_description">
28148              <p>Switches sensor pixel mode between maximum resolution mode and default mode.<wbr/></p>
28149            </td>
28150
28151            <td class="entry_units">
28152            </td>
28153
28154            <td class="entry_range">
28155            </td>
28156
28157            <td class="entry_hal_version">
28158              <p>3.<wbr/>6</p>
28159            </td>
28160
28161            <td class="entry_tags">
28162            </td>
28163
28164          </tr>
28165          <tr class="entries_header">
28166            <th class="th_details" colspan="6">Details</th>
28167          </tr>
28168          <tr class="entry_cont">
28169            <td class="entry_details" colspan="6">
28170              <p>This key controls whether the camera sensor operates in
28171<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>
28172mode or not.<wbr/> By default,<wbr/> all camera devices operate in
28173<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/>
28174When operating in
28175<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
28176with <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>
28177capability would typically perform pixel binning in order to improve low light
28178performance,<wbr/> noise reduction etc.<wbr/> However,<wbr/> in
28179<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>
28180mode (supported only
28181by <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>
28182sensors),<wbr/> sensors typically operate in unbinned mode allowing for a larger image size.<wbr/>
28183The stream configurations supported in
28184<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>
28185mode are also different from those of
28186<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/>
28187They can be queried through
28188<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#get">CameraCharacteristics#get</a> with
28189<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/>
28190Unless reported by both
28191<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html">StreamConfigurationMap</a>s,<wbr/> the outputs from
28192<code><a href="#static_android.scaler.streamConfigurationMapMaximumResolution">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map<wbr/>Maximum<wbr/>Resolution</a></code> and
28193<code><a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a></code>
28194must not be mixed in the same CaptureRequest.<wbr/> In other words,<wbr/> these outputs are
28195exclusive to each other.<wbr/>
28196This key does not need to be set for reprocess requests.<wbr/></p>
28197            </td>
28198          </tr>
28199
28200
28201          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28202           <!-- end of entry -->
28203
28204
28205          <tr class="entry" id="dynamic_android.sensor.rawBinningFactorUsed">
28206            <td class="entry_name
28207             " rowspan="3">
28208              android.<wbr/>sensor.<wbr/>raw<wbr/>Binning<wbr/>Factor<wbr/>Used
28209            </td>
28210            <td class="entry_type">
28211                <span class="entry_type_name entry_type_name_enum">byte</span>
28212
28213              <span class="entry_type_visibility"> [public as boolean]</span>
28214
28215
28216
28217
28218
28219                <ul class="entry_type_enum">
28220                  <li>
28221                    <span class="entry_type_enum_name">TRUE (v3.6)</span>
28222                    <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
28223bayer pattern.<wbr/></p></span>
28224                  </li>
28225                  <li>
28226                    <span class="entry_type_enum_name">FALSE (v3.6)</span>
28227                    <span class="entry_type_enum_notes"><p>The <code>RAW</code> targets have a regular bayer pattern in this capture.<wbr/></p></span>
28228                  </li>
28229                </ul>
28230
28231            </td> <!-- entry_type -->
28232
28233            <td class="entry_description">
28234              <p>Whether <code>RAW</code> images requested have their bayer pattern as described by
28235<a href="#static_android.sensor.info.binningFactor">android.<wbr/>sensor.<wbr/>info.<wbr/>binning<wbr/>Factor</a>.<wbr/></p>
28236            </td>
28237
28238            <td class="entry_units">
28239            </td>
28240
28241            <td class="entry_range">
28242            </td>
28243
28244            <td class="entry_hal_version">
28245              <p>3.<wbr/>6</p>
28246            </td>
28247
28248            <td class="entry_tags">
28249            </td>
28250
28251          </tr>
28252          <tr class="entries_header">
28253            <th class="th_details" colspan="6">Details</th>
28254          </tr>
28255          <tr class="entry_cont">
28256            <td class="entry_details" colspan="6">
28257              <p>This key will only be present in devices advertisting the
28258<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>
28259capability which also advertise <code>REMOSAIC_<wbr/>REPROCESSING</code> capability.<wbr/> On all other devices
28260RAW targets will have a regular bayer pattern.<wbr/></p>
28261            </td>
28262          </tr>
28263
28264
28265          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28266           <!-- end of entry -->
28267
28268
28269
28270      <!-- end of kind -->
28271      </tbody>
28272
28273  <!-- end of section -->
28274  <tr><td colspan="7" id="section_shading" class="section">shading</td></tr>
28275
28276
28277      <tr><td colspan="7" class="kind">controls</td></tr>
28278
28279      <thead class="entries_header">
28280        <tr>
28281          <th class="th_name">Property Name</th>
28282          <th class="th_type">Type</th>
28283          <th class="th_description">Description</th>
28284          <th class="th_units">Units</th>
28285          <th class="th_range">Range</th>
28286          <th class="th_hal_version">Initial HIDL HAL version</th>
28287          <th class="th_tags">Tags</th>
28288        </tr>
28289      </thead>
28290
28291      <tbody>
28292
28293
28294
28295
28296
28297
28298
28299
28300
28301
28302          <tr class="entry" id="controls_android.shading.mode">
28303            <td class="entry_name
28304             " rowspan="3">
28305              android.<wbr/>shading.<wbr/>mode
28306            </td>
28307            <td class="entry_type">
28308                <span class="entry_type_name entry_type_name_enum">byte</span>
28309
28310              <span class="entry_type_visibility"> [public]</span>
28311
28312
28313              <span class="entry_type_hwlevel">[full] </span>
28314
28315
28316
28317                <ul class="entry_type_enum">
28318                  <li>
28319                    <span class="entry_type_enum_name">OFF (v3.2)</span>
28320                    <span class="entry_type_enum_notes"><p>No lens shading correction is applied.<wbr/></p></span>
28321                  </li>
28322                  <li>
28323                    <span class="entry_type_enum_name">FAST (v3.2)</span>
28324                    <span class="entry_type_enum_notes"><p>Apply lens shading corrections,<wbr/> without slowing
28325frame rate relative to sensor raw output</p></span>
28326                  </li>
28327                  <li>
28328                    <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
28329                    <span class="entry_type_enum_notes"><p>Apply high-quality lens shading correction,<wbr/> at the
28330cost of possibly reduced frame rate.<wbr/></p></span>
28331                  </li>
28332                </ul>
28333
28334            </td> <!-- entry_type -->
28335
28336            <td class="entry_description">
28337              <p>Quality of lens shading correction applied
28338to the image data.<wbr/></p>
28339            </td>
28340
28341            <td class="entry_units">
28342            </td>
28343
28344            <td class="entry_range">
28345              <p><a href="#static_android.shading.availableModes">android.<wbr/>shading.<wbr/>available<wbr/>Modes</a></p>
28346            </td>
28347
28348            <td class="entry_hal_version">
28349              <p>3.<wbr/>2</p>
28350            </td>
28351
28352            <td class="entry_tags">
28353            </td>
28354
28355          </tr>
28356          <tr class="entries_header">
28357            <th class="th_details" colspan="6">Details</th>
28358          </tr>
28359          <tr class="entry_cont">
28360            <td class="entry_details" colspan="6">
28361              <p>When set to OFF mode,<wbr/> no lens shading correction will be applied by the
28362camera device,<wbr/> and an identity lens shading map data will be provided
28363if <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
28364shading map with size of <code>[ 4,<wbr/> 3 ]</code>,<wbr/>
28365the 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
28366map shown below:</p>
28367<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/>
28368 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/>
28369 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/>
28370 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/>
28371 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/>
28372 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 ]
28373</code></pre>
28374<p>When set to other modes,<wbr/> lens shading correction will be applied by the camera
28375device.<wbr/> Applications can request lens shading map data by setting
28376<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
28377shading 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
28378data will be the one applied by the camera device for this capture request.<wbr/></p>
28379<p>The shading map data may depend on the auto-exposure (AE) and AWB statistics,<wbr/> therefore
28380the reliability of the map data may be affected by the AE and AWB algorithms.<wbr/> When AE and
28381AWB 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>
28382OFF),<wbr/> to get best results,<wbr/> it is recommended that the applications wait for the AE and AWB
28383to be converged before using the returned shading map data.<wbr/></p>
28384            </td>
28385          </tr>
28386
28387
28388          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28389           <!-- end of entry -->
28390
28391
28392          <tr class="entry" id="controls_android.shading.strength">
28393            <td class="entry_name
28394             " rowspan="1">
28395              android.<wbr/>shading.<wbr/>strength
28396            </td>
28397            <td class="entry_type">
28398                <span class="entry_type_name">byte</span>
28399
28400              <span class="entry_type_visibility"> [system]</span>
28401
28402
28403
28404
28405
28406
28407            </td> <!-- entry_type -->
28408
28409            <td class="entry_description">
28410              <p>Control the amount of shading correction
28411applied to the images</p>
28412            </td>
28413
28414            <td class="entry_units">
28415              unitless: 1-10; 10 is full shading
28416          compensation
28417            </td>
28418
28419            <td class="entry_range">
28420            </td>
28421
28422            <td class="entry_hal_version">
28423              <p>3.<wbr/>2</p>
28424            </td>
28425
28426            <td class="entry_tags">
28427              <ul class="entry_tags">
28428                  <li><a href="#tag_FUTURE">FUTURE</a></li>
28429              </ul>
28430            </td>
28431
28432          </tr>
28433
28434
28435          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28436           <!-- end of entry -->
28437
28438
28439
28440      <!-- end of kind -->
28441      </tbody>
28442      <tr><td colspan="7" class="kind">dynamic</td></tr>
28443
28444      <thead class="entries_header">
28445        <tr>
28446          <th class="th_name">Property Name</th>
28447          <th class="th_type">Type</th>
28448          <th class="th_description">Description</th>
28449          <th class="th_units">Units</th>
28450          <th class="th_range">Range</th>
28451          <th class="th_hal_version">Initial HIDL HAL version</th>
28452          <th class="th_tags">Tags</th>
28453        </tr>
28454      </thead>
28455
28456      <tbody>
28457
28458
28459
28460
28461
28462
28463
28464
28465
28466
28467          <tr class="entry" id="dynamic_android.shading.mode">
28468            <td class="entry_name
28469             " rowspan="3">
28470              android.<wbr/>shading.<wbr/>mode
28471            </td>
28472            <td class="entry_type">
28473                <span class="entry_type_name entry_type_name_enum">byte</span>
28474
28475              <span class="entry_type_visibility"> [public]</span>
28476
28477
28478              <span class="entry_type_hwlevel">[full] </span>
28479
28480
28481
28482                <ul class="entry_type_enum">
28483                  <li>
28484                    <span class="entry_type_enum_name">OFF (v3.2)</span>
28485                    <span class="entry_type_enum_notes"><p>No lens shading correction is applied.<wbr/></p></span>
28486                  </li>
28487                  <li>
28488                    <span class="entry_type_enum_name">FAST (v3.2)</span>
28489                    <span class="entry_type_enum_notes"><p>Apply lens shading corrections,<wbr/> without slowing
28490frame rate relative to sensor raw output</p></span>
28491                  </li>
28492                  <li>
28493                    <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
28494                    <span class="entry_type_enum_notes"><p>Apply high-quality lens shading correction,<wbr/> at the
28495cost of possibly reduced frame rate.<wbr/></p></span>
28496                  </li>
28497                </ul>
28498
28499            </td> <!-- entry_type -->
28500
28501            <td class="entry_description">
28502              <p>Quality of lens shading correction applied
28503to the image data.<wbr/></p>
28504            </td>
28505
28506            <td class="entry_units">
28507            </td>
28508
28509            <td class="entry_range">
28510              <p><a href="#static_android.shading.availableModes">android.<wbr/>shading.<wbr/>available<wbr/>Modes</a></p>
28511            </td>
28512
28513            <td class="entry_hal_version">
28514              <p>3.<wbr/>2</p>
28515            </td>
28516
28517            <td class="entry_tags">
28518            </td>
28519
28520          </tr>
28521          <tr class="entries_header">
28522            <th class="th_details" colspan="6">Details</th>
28523          </tr>
28524          <tr class="entry_cont">
28525            <td class="entry_details" colspan="6">
28526              <p>When set to OFF mode,<wbr/> no lens shading correction will be applied by the
28527camera device,<wbr/> and an identity lens shading map data will be provided
28528if <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
28529shading map with size of <code>[ 4,<wbr/> 3 ]</code>,<wbr/>
28530the 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
28531map shown below:</p>
28532<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/>
28533 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/>
28534 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/>
28535 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/>
28536 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/>
28537 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 ]
28538</code></pre>
28539<p>When set to other modes,<wbr/> lens shading correction will be applied by the camera
28540device.<wbr/> Applications can request lens shading map data by setting
28541<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
28542shading 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
28543data will be the one applied by the camera device for this capture request.<wbr/></p>
28544<p>The shading map data may depend on the auto-exposure (AE) and AWB statistics,<wbr/> therefore
28545the reliability of the map data may be affected by the AE and AWB algorithms.<wbr/> When AE and
28546AWB 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>
28547OFF),<wbr/> to get best results,<wbr/> it is recommended that the applications wait for the AE and AWB
28548to be converged before using the returned shading map data.<wbr/></p>
28549            </td>
28550          </tr>
28551
28552
28553          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28554           <!-- end of entry -->
28555
28556
28557
28558      <!-- end of kind -->
28559      </tbody>
28560      <tr><td colspan="7" class="kind">static</td></tr>
28561
28562      <thead class="entries_header">
28563        <tr>
28564          <th class="th_name">Property Name</th>
28565          <th class="th_type">Type</th>
28566          <th class="th_description">Description</th>
28567          <th class="th_units">Units</th>
28568          <th class="th_range">Range</th>
28569          <th class="th_hal_version">Initial HIDL HAL version</th>
28570          <th class="th_tags">Tags</th>
28571        </tr>
28572      </thead>
28573
28574      <tbody>
28575
28576
28577
28578
28579
28580
28581
28582
28583
28584
28585          <tr class="entry" id="static_android.shading.availableModes">
28586            <td class="entry_name
28587             " rowspan="5">
28588              android.<wbr/>shading.<wbr/>available<wbr/>Modes
28589            </td>
28590            <td class="entry_type">
28591                <span class="entry_type_name">byte</span>
28592                <span class="entry_type_container">x</span>
28593
28594                <span class="entry_type_array">
28595                  n
28596                </span>
28597              <span class="entry_type_visibility"> [public as enumList]</span>
28598
28599
28600              <span class="entry_type_hwlevel">[legacy] </span>
28601
28602
28603                <div class="entry_type_notes">List of enums (android.<wbr/>shading.<wbr/>mode).<wbr/></div>
28604
28605
28606            </td> <!-- entry_type -->
28607
28608            <td class="entry_description">
28609              <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>
28610            </td>
28611
28612            <td class="entry_units">
28613            </td>
28614
28615            <td class="entry_range">
28616              <p>Any value listed in <a href="#controls_android.shading.mode">android.<wbr/>shading.<wbr/>mode</a></p>
28617            </td>
28618
28619            <td class="entry_hal_version">
28620              <p>3.<wbr/>2</p>
28621            </td>
28622
28623            <td class="entry_tags">
28624            </td>
28625
28626          </tr>
28627          <tr class="entries_header">
28628            <th class="th_details" colspan="6">Details</th>
28629          </tr>
28630          <tr class="entry_cont">
28631            <td class="entry_details" colspan="6">
28632              <p>This list contains lens shading modes that can be set for the camera device.<wbr/>
28633Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always
28634list OFF and FAST mode.<wbr/> This includes all FULL level devices.<wbr/>
28635LEGACY devices will always only support FAST mode.<wbr/></p>
28636            </td>
28637          </tr>
28638
28639          <tr class="entries_header">
28640            <th class="th_details" colspan="6">HAL Implementation Details</th>
28641          </tr>
28642          <tr class="entry_cont">
28643            <td class="entry_details" colspan="6">
28644              <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if lens shading correction control is
28645available on the camera device,<wbr/> but the underlying implementation can be the same for
28646both modes.<wbr/> That is,<wbr/> if the highest quality implementation on the camera device does not
28647slow down capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
28648            </td>
28649          </tr>
28650
28651          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28652           <!-- end of entry -->
28653
28654
28655
28656      <!-- end of kind -->
28657      </tbody>
28658
28659  <!-- end of section -->
28660  <tr><td colspan="7" id="section_statistics" class="section">statistics</td></tr>
28661
28662
28663      <tr><td colspan="7" class="kind">controls</td></tr>
28664
28665      <thead class="entries_header">
28666        <tr>
28667          <th class="th_name">Property Name</th>
28668          <th class="th_type">Type</th>
28669          <th class="th_description">Description</th>
28670          <th class="th_units">Units</th>
28671          <th class="th_range">Range</th>
28672          <th class="th_hal_version">Initial HIDL HAL version</th>
28673          <th class="th_tags">Tags</th>
28674        </tr>
28675      </thead>
28676
28677      <tbody>
28678
28679
28680
28681
28682
28683
28684
28685
28686
28687
28688          <tr class="entry" id="controls_android.statistics.faceDetectMode">
28689            <td class="entry_name
28690             " rowspan="5">
28691              android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode
28692            </td>
28693            <td class="entry_type">
28694                <span class="entry_type_name entry_type_name_enum">byte</span>
28695
28696              <span class="entry_type_visibility"> [public]</span>
28697
28698
28699              <span class="entry_type_hwlevel">[legacy] </span>
28700
28701
28702
28703                <ul class="entry_type_enum">
28704                  <li>
28705                    <span class="entry_type_enum_name">OFF (v3.2)</span>
28706                    <span class="entry_type_enum_notes"><p>Do not include face detection statistics in capture
28707results.<wbr/></p></span>
28708                  </li>
28709                  <li>
28710                    <span class="entry_type_enum_name">SIMPLE (v3.2)</span>
28711                    <span class="entry_type_enum_optional">[optional]</span>
28712                    <span class="entry_type_enum_notes"><p>Return face rectangle and confidence values only.<wbr/></p></span>
28713                  </li>
28714                  <li>
28715                    <span class="entry_type_enum_name">FULL (v3.2)</span>
28716                    <span class="entry_type_enum_optional">[optional]</span>
28717                    <span class="entry_type_enum_notes"><p>Return all face
28718metadata.<wbr/></p>
28719<p>In this mode,<wbr/> face rectangles,<wbr/> scores,<wbr/> landmarks,<wbr/> and face IDs are all valid.<wbr/></p></span>
28720                  </li>
28721                </ul>
28722
28723            </td> <!-- entry_type -->
28724
28725            <td class="entry_description">
28726              <p>Operating mode for the face detector
28727unit.<wbr/></p>
28728            </td>
28729
28730            <td class="entry_units">
28731            </td>
28732
28733            <td class="entry_range">
28734              <p><a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a></p>
28735            </td>
28736
28737            <td class="entry_hal_version">
28738              <p>3.<wbr/>2</p>
28739            </td>
28740
28741            <td class="entry_tags">
28742              <ul class="entry_tags">
28743                  <li><a href="#tag_BC">BC</a></li>
28744              </ul>
28745            </td>
28746
28747          </tr>
28748          <tr class="entries_header">
28749            <th class="th_details" colspan="6">Details</th>
28750          </tr>
28751          <tr class="entry_cont">
28752            <td class="entry_details" colspan="6">
28753              <p>Whether face detection is enabled,<wbr/> and whether it
28754should output just the basic fields or the full set of
28755fields.<wbr/></p>
28756            </td>
28757          </tr>
28758
28759          <tr class="entries_header">
28760            <th class="th_details" colspan="6">HAL Implementation Details</th>
28761          </tr>
28762          <tr class="entry_cont">
28763            <td class="entry_details" colspan="6">
28764              <p>SIMPLE mode must fill in <a href="#dynamic_android.statistics.faceRectangles">android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles</a> and
28765<a href="#dynamic_android.statistics.faceScores">android.<wbr/>statistics.<wbr/>face<wbr/>Scores</a>.<wbr/>
28766FULL mode must also fill in <a href="#dynamic_android.statistics.faceIds">android.<wbr/>statistics.<wbr/>face<wbr/>Ids</a>,<wbr/> and
28767<a href="#dynamic_android.statistics.faceLandmarks">android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks</a>.<wbr/></p>
28768            </td>
28769          </tr>
28770
28771          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28772           <!-- end of entry -->
28773
28774
28775          <tr class="entry" id="controls_android.statistics.histogramMode">
28776            <td class="entry_name
28777             " rowspan="1">
28778              android.<wbr/>statistics.<wbr/>histogram<wbr/>Mode
28779            </td>
28780            <td class="entry_type">
28781                <span class="entry_type_name entry_type_name_enum">byte</span>
28782
28783              <span class="entry_type_visibility"> [system as boolean]</span>
28784
28785
28786
28787
28788
28789                <ul class="entry_type_enum">
28790                  <li>
28791                    <span class="entry_type_enum_name">OFF (v3.2)</span>
28792                  </li>
28793                  <li>
28794                    <span class="entry_type_enum_name">ON (v3.2)</span>
28795                  </li>
28796                </ul>
28797
28798            </td> <!-- entry_type -->
28799
28800            <td class="entry_description">
28801              <p>Operating mode for histogram
28802generation</p>
28803            </td>
28804
28805            <td class="entry_units">
28806            </td>
28807
28808            <td class="entry_range">
28809            </td>
28810
28811            <td class="entry_hal_version">
28812              <p>3.<wbr/>2</p>
28813            </td>
28814
28815            <td class="entry_tags">
28816              <ul class="entry_tags">
28817                  <li><a href="#tag_FUTURE">FUTURE</a></li>
28818              </ul>
28819            </td>
28820
28821          </tr>
28822
28823
28824          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28825           <!-- end of entry -->
28826
28827
28828          <tr class="entry" id="controls_android.statistics.sharpnessMapMode">
28829            <td class="entry_name
28830             " rowspan="1">
28831              android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map<wbr/>Mode
28832            </td>
28833            <td class="entry_type">
28834                <span class="entry_type_name entry_type_name_enum">byte</span>
28835
28836              <span class="entry_type_visibility"> [system as boolean]</span>
28837
28838
28839
28840
28841
28842                <ul class="entry_type_enum">
28843                  <li>
28844                    <span class="entry_type_enum_name">OFF (v3.2)</span>
28845                  </li>
28846                  <li>
28847                    <span class="entry_type_enum_name">ON (v3.2)</span>
28848                  </li>
28849                </ul>
28850
28851            </td> <!-- entry_type -->
28852
28853            <td class="entry_description">
28854              <p>Operating mode for sharpness map
28855generation</p>
28856            </td>
28857
28858            <td class="entry_units">
28859            </td>
28860
28861            <td class="entry_range">
28862            </td>
28863
28864            <td class="entry_hal_version">
28865              <p>3.<wbr/>2</p>
28866            </td>
28867
28868            <td class="entry_tags">
28869              <ul class="entry_tags">
28870                  <li><a href="#tag_FUTURE">FUTURE</a></li>
28871              </ul>
28872            </td>
28873
28874          </tr>
28875
28876
28877          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28878           <!-- end of entry -->
28879
28880
28881          <tr class="entry" id="controls_android.statistics.hotPixelMapMode">
28882            <td class="entry_name
28883             " rowspan="3">
28884              android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode
28885            </td>
28886            <td class="entry_type">
28887                <span class="entry_type_name entry_type_name_enum">byte</span>
28888
28889              <span class="entry_type_visibility"> [public as boolean]</span>
28890
28891
28892
28893
28894
28895                <ul class="entry_type_enum">
28896                  <li>
28897                    <span class="entry_type_enum_name">OFF (v3.2)</span>
28898                    <span class="entry_type_enum_notes"><p>Hot pixel map production is disabled.<wbr/></p></span>
28899                  </li>
28900                  <li>
28901                    <span class="entry_type_enum_name">ON (v3.2)</span>
28902                    <span class="entry_type_enum_notes"><p>Hot pixel map production is enabled.<wbr/></p></span>
28903                  </li>
28904                </ul>
28905
28906            </td> <!-- entry_type -->
28907
28908            <td class="entry_description">
28909              <p>Operating mode for hot pixel map generation.<wbr/></p>
28910            </td>
28911
28912            <td class="entry_units">
28913            </td>
28914
28915            <td class="entry_range">
28916              <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>
28917            </td>
28918
28919            <td class="entry_hal_version">
28920              <p>3.<wbr/>2</p>
28921            </td>
28922
28923            <td class="entry_tags">
28924              <ul class="entry_tags">
28925                  <li><a href="#tag_V1">V1</a></li>
28926                  <li><a href="#tag_RAW">RAW</a></li>
28927              </ul>
28928            </td>
28929
28930          </tr>
28931          <tr class="entries_header">
28932            <th class="th_details" colspan="6">Details</th>
28933          </tr>
28934          <tr class="entry_cont">
28935            <td class="entry_details" colspan="6">
28936              <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/>
28937If set to <code>false</code>,<wbr/> no hot pixel map will be returned.<wbr/></p>
28938            </td>
28939          </tr>
28940
28941
28942          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28943           <!-- end of entry -->
28944
28945
28946          <tr class="entry" id="controls_android.statistics.lensShadingMapMode">
28947            <td class="entry_name
28948             " rowspan="3">
28949              android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode
28950            </td>
28951            <td class="entry_type">
28952                <span class="entry_type_name entry_type_name_enum">byte</span>
28953
28954              <span class="entry_type_visibility"> [public]</span>
28955
28956
28957              <span class="entry_type_hwlevel">[full] </span>
28958
28959
28960
28961                <ul class="entry_type_enum">
28962                  <li>
28963                    <span class="entry_type_enum_name">OFF (v3.2)</span>
28964                    <span class="entry_type_enum_notes"><p>Do not include a lens shading map in the capture result.<wbr/></p></span>
28965                  </li>
28966                  <li>
28967                    <span class="entry_type_enum_name">ON (v3.2)</span>
28968                    <span class="entry_type_enum_notes"><p>Include a lens shading map in the capture result.<wbr/></p></span>
28969                  </li>
28970                </ul>
28971
28972            </td> <!-- entry_type -->
28973
28974            <td class="entry_description">
28975              <p>Whether the camera device will output the lens
28976shading map in output result metadata.<wbr/></p>
28977            </td>
28978
28979            <td class="entry_units">
28980            </td>
28981
28982            <td class="entry_range">
28983              <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>
28984            </td>
28985
28986            <td class="entry_hal_version">
28987              <p>3.<wbr/>2</p>
28988            </td>
28989
28990            <td class="entry_tags">
28991              <ul class="entry_tags">
28992                  <li><a href="#tag_RAW">RAW</a></li>
28993              </ul>
28994            </td>
28995
28996          </tr>
28997          <tr class="entries_header">
28998            <th class="th_details" colspan="6">Details</th>
28999          </tr>
29000          <tr class="entry_cont">
29001            <td class="entry_details" colspan="6">
29002              <p>When set to ON,<wbr/>
29003<a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> will be provided in
29004the output result metadata.<wbr/></p>
29005<p>ON is always supported on devices with the RAW capability.<wbr/></p>
29006            </td>
29007          </tr>
29008
29009
29010          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29011           <!-- end of entry -->
29012
29013
29014          <tr class="entry" id="controls_android.statistics.oisDataMode">
29015            <td class="entry_name
29016             " rowspan="3">
29017              android.<wbr/>statistics.<wbr/>ois<wbr/>Data<wbr/>Mode
29018            </td>
29019            <td class="entry_type">
29020                <span class="entry_type_name entry_type_name_enum">byte</span>
29021
29022              <span class="entry_type_visibility"> [public]</span>
29023
29024
29025
29026
29027
29028                <ul class="entry_type_enum">
29029                  <li>
29030                    <span class="entry_type_enum_name">OFF (v3.3)</span>
29031                    <span class="entry_type_enum_notes"><p>Do not include OIS data in the capture result.<wbr/></p></span>
29032                  </li>
29033                  <li>
29034                    <span class="entry_type_enum_name">ON (v3.3)</span>
29035                    <span class="entry_type_enum_notes"><p>Include OIS data in the capture result.<wbr/></p></span>
29036                  </li>
29037                </ul>
29038
29039            </td> <!-- entry_type -->
29040
29041            <td class="entry_description">
29042              <p>A control for selecting whether optical stabilization (OIS) position
29043information is included in output result metadata.<wbr/></p>
29044            </td>
29045
29046            <td class="entry_units">
29047            </td>
29048
29049            <td class="entry_range">
29050              <p><a href="#static_android.statistics.info.availableOisDataModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Ois<wbr/>Data<wbr/>Modes</a></p>
29051            </td>
29052
29053            <td class="entry_hal_version">
29054              <p>3.<wbr/>3</p>
29055            </td>
29056
29057            <td class="entry_tags">
29058            </td>
29059
29060          </tr>
29061          <tr class="entries_header">
29062            <th class="th_details" colspan="6">Details</th>
29063          </tr>
29064          <tr class="entry_cont">
29065            <td class="entry_details" colspan="6">
29066              <p>Since optical image stabilization generally involves motion much faster than the duration
29067of individual image exposure,<wbr/> multiple OIS samples can be included for a single capture
29068result.<wbr/> For example,<wbr/> if the OIS reporting operates at 200 Hz,<wbr/> a typical camera operating
29069at 30fps may have 6-7 OIS samples per capture result.<wbr/> This information can be combined
29070with the rolling shutter skew to account for lens motion during image exposure in
29071post-processing algorithms.<wbr/></p>
29072            </td>
29073          </tr>
29074
29075
29076          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29077           <!-- end of entry -->
29078
29079
29080
29081      <!-- end of kind -->
29082      </tbody>
29083      <tr><td colspan="7" class="kind">static</td></tr>
29084
29085      <thead class="entries_header">
29086        <tr>
29087          <th class="th_name">Property Name</th>
29088          <th class="th_type">Type</th>
29089          <th class="th_description">Description</th>
29090          <th class="th_units">Units</th>
29091          <th class="th_range">Range</th>
29092          <th class="th_hal_version">Initial HIDL HAL version</th>
29093          <th class="th_tags">Tags</th>
29094        </tr>
29095      </thead>
29096
29097      <tbody>
29098
29099
29100
29101
29102
29103
29104
29105
29106
29107
29108
29109
29110          <tr class="entry" id="static_android.statistics.info.availableFaceDetectModes">
29111            <td class="entry_name
29112             " rowspan="3">
29113              android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes
29114            </td>
29115            <td class="entry_type">
29116                <span class="entry_type_name">byte</span>
29117                <span class="entry_type_container">x</span>
29118
29119                <span class="entry_type_array">
29120                  n
29121                </span>
29122              <span class="entry_type_visibility"> [public as enumList]</span>
29123
29124
29125              <span class="entry_type_hwlevel">[legacy] </span>
29126
29127
29128                <div class="entry_type_notes">List of enums from android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</div>
29129
29130
29131            </td> <!-- entry_type -->
29132
29133            <td class="entry_description">
29134              <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
29135supported by this camera device.<wbr/></p>
29136            </td>
29137
29138            <td class="entry_units">
29139            </td>
29140
29141            <td class="entry_range">
29142              <p>Any value listed in <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></p>
29143            </td>
29144
29145            <td class="entry_hal_version">
29146              <p>3.<wbr/>2</p>
29147            </td>
29148
29149            <td class="entry_tags">
29150            </td>
29151
29152          </tr>
29153          <tr class="entries_header">
29154            <th class="th_details" colspan="6">Details</th>
29155          </tr>
29156          <tr class="entry_cont">
29157            <td class="entry_details" colspan="6">
29158              <p>OFF is always supported.<wbr/></p>
29159            </td>
29160          </tr>
29161
29162
29163          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29164           <!-- end of entry -->
29165
29166
29167          <tr class="entry" id="static_android.statistics.info.histogramBucketCount">
29168            <td class="entry_name
29169             " rowspan="1">
29170              android.<wbr/>statistics.<wbr/>info.<wbr/>histogram<wbr/>Bucket<wbr/>Count
29171            </td>
29172            <td class="entry_type">
29173                <span class="entry_type_name">int32</span>
29174
29175              <span class="entry_type_visibility"> [system]</span>
29176
29177
29178
29179
29180
29181
29182            </td> <!-- entry_type -->
29183
29184            <td class="entry_description">
29185              <p>Number of histogram buckets
29186supported</p>
29187            </td>
29188
29189            <td class="entry_units">
29190            </td>
29191
29192            <td class="entry_range">
29193              <p>&gt;= 64</p>
29194            </td>
29195
29196            <td class="entry_hal_version">
29197              <p>3.<wbr/>2</p>
29198            </td>
29199
29200            <td class="entry_tags">
29201              <ul class="entry_tags">
29202                  <li><a href="#tag_FUTURE">FUTURE</a></li>
29203              </ul>
29204            </td>
29205
29206          </tr>
29207
29208
29209          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29210           <!-- end of entry -->
29211
29212
29213          <tr class="entry" id="static_android.statistics.info.maxFaceCount">
29214            <td class="entry_name
29215             " rowspan="1">
29216              android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Face<wbr/>Count
29217            </td>
29218            <td class="entry_type">
29219                <span class="entry_type_name">int32</span>
29220
29221              <span class="entry_type_visibility"> [public]</span>
29222
29223
29224              <span class="entry_type_hwlevel">[legacy] </span>
29225
29226
29227
29228
29229            </td> <!-- entry_type -->
29230
29231            <td class="entry_description">
29232              <p>The maximum number of simultaneously detectable
29233faces.<wbr/></p>
29234            </td>
29235
29236            <td class="entry_units">
29237            </td>
29238
29239            <td class="entry_range">
29240              <p>0 for cameras without available face detection; otherwise:
29241<code>&gt;=4</code> for LIMITED or FULL hwlevel devices or
29242<code>&gt;0</code> for LEGACY devices.<wbr/></p>
29243            </td>
29244
29245            <td class="entry_hal_version">
29246              <p>3.<wbr/>2</p>
29247            </td>
29248
29249            <td class="entry_tags">
29250              <ul class="entry_tags">
29251                  <li><a href="#tag_BC">BC</a></li>
29252              </ul>
29253            </td>
29254
29255          </tr>
29256
29257
29258          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29259           <!-- end of entry -->
29260
29261
29262          <tr class="entry" id="static_android.statistics.info.maxHistogramCount">
29263            <td class="entry_name
29264             " rowspan="1">
29265              android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Histogram<wbr/>Count
29266            </td>
29267            <td class="entry_type">
29268                <span class="entry_type_name">int32</span>
29269
29270              <span class="entry_type_visibility"> [system]</span>
29271
29272
29273
29274
29275
29276
29277            </td> <!-- entry_type -->
29278
29279            <td class="entry_description">
29280              <p>Maximum value possible for a histogram
29281bucket</p>
29282            </td>
29283
29284            <td class="entry_units">
29285            </td>
29286
29287            <td class="entry_range">
29288            </td>
29289
29290            <td class="entry_hal_version">
29291              <p>3.<wbr/>2</p>
29292            </td>
29293
29294            <td class="entry_tags">
29295              <ul class="entry_tags">
29296                  <li><a href="#tag_FUTURE">FUTURE</a></li>
29297              </ul>
29298            </td>
29299
29300          </tr>
29301
29302
29303          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29304           <!-- end of entry -->
29305
29306
29307          <tr class="entry" id="static_android.statistics.info.maxSharpnessMapValue">
29308            <td class="entry_name
29309             " rowspan="1">
29310              android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Sharpness<wbr/>Map<wbr/>Value
29311            </td>
29312            <td class="entry_type">
29313                <span class="entry_type_name">int32</span>
29314
29315              <span class="entry_type_visibility"> [system]</span>
29316
29317
29318
29319
29320
29321
29322            </td> <!-- entry_type -->
29323
29324            <td class="entry_description">
29325              <p>Maximum value possible for a sharpness map
29326region.<wbr/></p>
29327            </td>
29328
29329            <td class="entry_units">
29330            </td>
29331
29332            <td class="entry_range">
29333            </td>
29334
29335            <td class="entry_hal_version">
29336              <p>3.<wbr/>2</p>
29337            </td>
29338
29339            <td class="entry_tags">
29340              <ul class="entry_tags">
29341                  <li><a href="#tag_FUTURE">FUTURE</a></li>
29342              </ul>
29343            </td>
29344
29345          </tr>
29346
29347
29348          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29349           <!-- end of entry -->
29350
29351
29352          <tr class="entry" id="static_android.statistics.info.sharpnessMapSize">
29353            <td class="entry_name
29354             " rowspan="1">
29355              android.<wbr/>statistics.<wbr/>info.<wbr/>sharpness<wbr/>Map<wbr/>Size
29356            </td>
29357            <td class="entry_type">
29358                <span class="entry_type_name">int32</span>
29359                <span class="entry_type_container">x</span>
29360
29361                <span class="entry_type_array">
29362                  2
29363                </span>
29364              <span class="entry_type_visibility"> [system as size]</span>
29365
29366
29367
29368
29369                <div class="entry_type_notes">width x height</div>
29370
29371
29372            </td> <!-- entry_type -->
29373
29374            <td class="entry_description">
29375              <p>Dimensions of the sharpness
29376map</p>
29377            </td>
29378
29379            <td class="entry_units">
29380            </td>
29381
29382            <td class="entry_range">
29383              <p>Must be at least 32 x 32</p>
29384            </td>
29385
29386            <td class="entry_hal_version">
29387              <p>3.<wbr/>2</p>
29388            </td>
29389
29390            <td class="entry_tags">
29391              <ul class="entry_tags">
29392                  <li><a href="#tag_FUTURE">FUTURE</a></li>
29393              </ul>
29394            </td>
29395
29396          </tr>
29397
29398
29399          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29400           <!-- end of entry -->
29401
29402
29403          <tr class="entry" id="static_android.statistics.info.availableHotPixelMapModes">
29404            <td class="entry_name
29405             " rowspan="3">
29406              android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Map<wbr/>Modes
29407            </td>
29408            <td class="entry_type">
29409                <span class="entry_type_name">byte</span>
29410                <span class="entry_type_container">x</span>
29411
29412                <span class="entry_type_array">
29413                  n
29414                </span>
29415              <span class="entry_type_visibility"> [public as boolean]</span>
29416
29417
29418
29419
29420                <div class="entry_type_notes">list of enums</div>
29421
29422
29423            </td> <!-- entry_type -->
29424
29425            <td class="entry_description">
29426              <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
29427supported by this camera device.<wbr/></p>
29428            </td>
29429
29430            <td class="entry_units">
29431            </td>
29432
29433            <td class="entry_range">
29434              <p>Any value listed in <a href="#controls_android.statistics.hotPixelMapMode">android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode</a></p>
29435            </td>
29436
29437            <td class="entry_hal_version">
29438              <p>3.<wbr/>2</p>
29439            </td>
29440
29441            <td class="entry_tags">
29442              <ul class="entry_tags">
29443                  <li><a href="#tag_V1">V1</a></li>
29444                  <li><a href="#tag_RAW">RAW</a></li>
29445              </ul>
29446            </td>
29447
29448          </tr>
29449          <tr class="entries_header">
29450            <th class="th_details" colspan="6">Details</th>
29451          </tr>
29452          <tr class="entry_cont">
29453            <td class="entry_details" colspan="6">
29454              <p>If no hotpixel map output is available for this camera device,<wbr/> this will contain only
29455<code>false</code>.<wbr/></p>
29456<p>ON is always supported on devices with the RAW capability.<wbr/></p>
29457            </td>
29458          </tr>
29459
29460
29461          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29462           <!-- end of entry -->
29463
29464
29465          <tr class="entry" id="static_android.statistics.info.availableLensShadingMapModes">
29466            <td class="entry_name
29467             " rowspan="3">
29468              android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Lens<wbr/>Shading<wbr/>Map<wbr/>Modes
29469            </td>
29470            <td class="entry_type">
29471                <span class="entry_type_name">byte</span>
29472                <span class="entry_type_container">x</span>
29473
29474                <span class="entry_type_array">
29475                  n
29476                </span>
29477              <span class="entry_type_visibility"> [public as enumList]</span>
29478
29479
29480
29481
29482                <div class="entry_type_notes">list of enums</div>
29483
29484
29485            </td> <!-- entry_type -->
29486
29487            <td class="entry_description">
29488              <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
29489are supported by this camera device.<wbr/></p>
29490            </td>
29491
29492            <td class="entry_units">
29493            </td>
29494
29495            <td class="entry_range">
29496              <p>Any value listed in <a href="#controls_android.statistics.lensShadingMapMode">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode</a></p>
29497            </td>
29498
29499            <td class="entry_hal_version">
29500              <p>3.<wbr/>2</p>
29501            </td>
29502
29503            <td class="entry_tags">
29504            </td>
29505
29506          </tr>
29507          <tr class="entries_header">
29508            <th class="th_details" colspan="6">Details</th>
29509          </tr>
29510          <tr class="entry_cont">
29511            <td class="entry_details" colspan="6">
29512              <p>If no lens shading map output is available for this camera device,<wbr/> this key will
29513contain only OFF.<wbr/></p>
29514<p>ON is always supported on devices with the RAW capability.<wbr/>
29515LEGACY mode devices will always only support OFF.<wbr/></p>
29516            </td>
29517          </tr>
29518
29519
29520          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29521           <!-- end of entry -->
29522
29523
29524          <tr class="entry" id="static_android.statistics.info.availableOisDataModes">
29525            <td class="entry_name
29526             " rowspan="3">
29527              android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Ois<wbr/>Data<wbr/>Modes
29528            </td>
29529            <td class="entry_type">
29530                <span class="entry_type_name">byte</span>
29531                <span class="entry_type_container">x</span>
29532
29533                <span class="entry_type_array">
29534                  n
29535                </span>
29536              <span class="entry_type_visibility"> [public as enumList]</span>
29537
29538
29539
29540
29541                <div class="entry_type_notes">list of enums</div>
29542
29543
29544            </td> <!-- entry_type -->
29545
29546            <td class="entry_description">
29547              <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
29548are supported by this camera device.<wbr/></p>
29549            </td>
29550
29551            <td class="entry_units">
29552            </td>
29553
29554            <td class="entry_range">
29555              <p>Any value listed in <a href="#controls_android.statistics.oisDataMode">android.<wbr/>statistics.<wbr/>ois<wbr/>Data<wbr/>Mode</a></p>
29556            </td>
29557
29558            <td class="entry_hal_version">
29559              <p>3.<wbr/>3</p>
29560            </td>
29561
29562            <td class="entry_tags">
29563            </td>
29564
29565          </tr>
29566          <tr class="entries_header">
29567            <th class="th_details" colspan="6">Details</th>
29568          </tr>
29569          <tr class="entry_cont">
29570            <td class="entry_details" colspan="6">
29571              <p>If no OIS data output is available for this camera device,<wbr/> this key will
29572contain only OFF.<wbr/></p>
29573            </td>
29574          </tr>
29575
29576
29577          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29578           <!-- end of entry -->
29579
29580
29581
29582
29583
29584
29585      <!-- end of kind -->
29586      </tbody>
29587      <tr><td colspan="7" class="kind">dynamic</td></tr>
29588
29589      <thead class="entries_header">
29590        <tr>
29591          <th class="th_name">Property Name</th>
29592          <th class="th_type">Type</th>
29593          <th class="th_description">Description</th>
29594          <th class="th_units">Units</th>
29595          <th class="th_range">Range</th>
29596          <th class="th_hal_version">Initial HIDL HAL version</th>
29597          <th class="th_tags">Tags</th>
29598        </tr>
29599      </thead>
29600
29601      <tbody>
29602
29603
29604
29605
29606
29607
29608
29609
29610
29611
29612          <tr class="entry" id="dynamic_android.statistics.faceDetectMode">
29613            <td class="entry_name
29614             " rowspan="5">
29615              android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode
29616            </td>
29617            <td class="entry_type">
29618                <span class="entry_type_name entry_type_name_enum">byte</span>
29619
29620              <span class="entry_type_visibility"> [public]</span>
29621
29622
29623              <span class="entry_type_hwlevel">[legacy] </span>
29624
29625
29626
29627                <ul class="entry_type_enum">
29628                  <li>
29629                    <span class="entry_type_enum_name">OFF (v3.2)</span>
29630                    <span class="entry_type_enum_notes"><p>Do not include face detection statistics in capture
29631results.<wbr/></p></span>
29632                  </li>
29633                  <li>
29634                    <span class="entry_type_enum_name">SIMPLE (v3.2)</span>
29635                    <span class="entry_type_enum_optional">[optional]</span>
29636                    <span class="entry_type_enum_notes"><p>Return face rectangle and confidence values only.<wbr/></p></span>
29637                  </li>
29638                  <li>
29639                    <span class="entry_type_enum_name">FULL (v3.2)</span>
29640                    <span class="entry_type_enum_optional">[optional]</span>
29641                    <span class="entry_type_enum_notes"><p>Return all face
29642metadata.<wbr/></p>
29643<p>In this mode,<wbr/> face rectangles,<wbr/> scores,<wbr/> landmarks,<wbr/> and face IDs are all valid.<wbr/></p></span>
29644                  </li>
29645                </ul>
29646
29647            </td> <!-- entry_type -->
29648
29649            <td class="entry_description">
29650              <p>Operating mode for the face detector
29651unit.<wbr/></p>
29652            </td>
29653
29654            <td class="entry_units">
29655            </td>
29656
29657            <td class="entry_range">
29658              <p><a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a></p>
29659            </td>
29660
29661            <td class="entry_hal_version">
29662              <p>3.<wbr/>2</p>
29663            </td>
29664
29665            <td class="entry_tags">
29666              <ul class="entry_tags">
29667                  <li><a href="#tag_BC">BC</a></li>
29668              </ul>
29669            </td>
29670
29671          </tr>
29672          <tr class="entries_header">
29673            <th class="th_details" colspan="6">Details</th>
29674          </tr>
29675          <tr class="entry_cont">
29676            <td class="entry_details" colspan="6">
29677              <p>Whether face detection is enabled,<wbr/> and whether it
29678should output just the basic fields or the full set of
29679fields.<wbr/></p>
29680            </td>
29681          </tr>
29682
29683          <tr class="entries_header">
29684            <th class="th_details" colspan="6">HAL Implementation Details</th>
29685          </tr>
29686          <tr class="entry_cont">
29687            <td class="entry_details" colspan="6">
29688              <p>SIMPLE mode must fill in <a href="#dynamic_android.statistics.faceRectangles">android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles</a> and
29689<a href="#dynamic_android.statistics.faceScores">android.<wbr/>statistics.<wbr/>face<wbr/>Scores</a>.<wbr/>
29690FULL mode must also fill in <a href="#dynamic_android.statistics.faceIds">android.<wbr/>statistics.<wbr/>face<wbr/>Ids</a>,<wbr/> and
29691<a href="#dynamic_android.statistics.faceLandmarks">android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks</a>.<wbr/></p>
29692            </td>
29693          </tr>
29694
29695          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29696           <!-- end of entry -->
29697
29698
29699          <tr class="entry" id="dynamic_android.statistics.faceIds">
29700            <td class="entry_name
29701             " rowspan="3">
29702              android.<wbr/>statistics.<wbr/>face<wbr/>Ids
29703            </td>
29704            <td class="entry_type">
29705                <span class="entry_type_name">int32</span>
29706                <span class="entry_type_container">x</span>
29707
29708                <span class="entry_type_array">
29709                  n
29710                </span>
29711              <span class="entry_type_visibility"> [ndk_public]</span>
29712
29713
29714              <span class="entry_type_hwlevel">[legacy] </span>
29715
29716
29717
29718
29719            </td> <!-- entry_type -->
29720
29721            <td class="entry_description">
29722              <p>List of unique IDs for detected faces.<wbr/></p>
29723            </td>
29724
29725            <td class="entry_units">
29726            </td>
29727
29728            <td class="entry_range">
29729            </td>
29730
29731            <td class="entry_hal_version">
29732              <p>3.<wbr/>2</p>
29733            </td>
29734
29735            <td class="entry_tags">
29736              <ul class="entry_tags">
29737                  <li><a href="#tag_BC">BC</a></li>
29738              </ul>
29739            </td>
29740
29741          </tr>
29742          <tr class="entries_header">
29743            <th class="th_details" colspan="6">Details</th>
29744          </tr>
29745          <tr class="entry_cont">
29746            <td class="entry_details" colspan="6">
29747              <p>Each detected face is given a unique ID that is valid for as long as the face is visible
29748to the camera device.<wbr/>  A face that leaves the field of view and later returns may be
29749assigned a new ID.<wbr/></p>
29750<p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> == FULL</p>
29751            </td>
29752          </tr>
29753
29754
29755          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29756           <!-- end of entry -->
29757
29758
29759          <tr class="entry" id="dynamic_android.statistics.faceLandmarks">
29760            <td class="entry_name
29761             " rowspan="5">
29762              android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks
29763            </td>
29764            <td class="entry_type">
29765                <span class="entry_type_name">int32</span>
29766                <span class="entry_type_container">x</span>
29767
29768                <span class="entry_type_array">
29769                  n x 6
29770                </span>
29771              <span class="entry_type_visibility"> [ndk_public]</span>
29772
29773
29774              <span class="entry_type_hwlevel">[legacy] </span>
29775
29776
29777                <div class="entry_type_notes">(leftEyeX,<wbr/> leftEyeY,<wbr/> rightEyeX,<wbr/> rightEyeY,<wbr/> mouthX,<wbr/> mouthY)</div>
29778
29779
29780            </td> <!-- entry_type -->
29781
29782            <td class="entry_description">
29783              <p>List of landmarks for detected
29784faces.<wbr/></p>
29785            </td>
29786
29787            <td class="entry_units">
29788            </td>
29789
29790            <td class="entry_range">
29791            </td>
29792
29793            <td class="entry_hal_version">
29794              <p>3.<wbr/>2</p>
29795            </td>
29796
29797            <td class="entry_tags">
29798              <ul class="entry_tags">
29799                  <li><a href="#tag_BC">BC</a></li>
29800              </ul>
29801            </td>
29802
29803          </tr>
29804          <tr class="entries_header">
29805            <th class="th_details" colspan="6">Details</th>
29806          </tr>
29807          <tr class="entry_cont">
29808            <td class="entry_details" colspan="6">
29809              <p>For devices not supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate
29810system 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
29811the top-left pixel of the active array.<wbr/></p>
29812<p>For devices supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate
29813system depends on the mode being set.<wbr/>
29814When the distortion correction mode is OFF,<wbr/> the coordinate system follows
29815<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
29816<code>(0,<wbr/> 0)</code> being the top-left pixel of the pre-correction active array.<wbr/>
29817When the distortion correction mode is not OFF,<wbr/> the coordinate system follows
29818<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> with
29819<code>(0,<wbr/> 0)</code> being the top-left pixel of the active array.<wbr/></p>
29820<p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> == FULL.<wbr/></p>
29821<p>Starting from API level 30,<wbr/> the coordinate system of activeArraySize or
29822preCorrectionActiveArraySize is used to represent post-zoomRatio field of view,<wbr/> not
29823pre-zoomRatio field of view.<wbr/> This means that if the relative position of faces and
29824the camera device doesn't change,<wbr/> when zooming in by increasing
29825<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
29826activeArray or preCorrectionActiveArray.<wbr/> If <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> is set to 1.<wbr/>0
29827(default),<wbr/> the face landmarks coordinates won't change as <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>
29828changes.<wbr/> See <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> for details.<wbr/> Whether to use activeArraySize or
29829preCorrectionActiveArraySize still depends on distortion correction mode.<wbr/></p>
29830            </td>
29831          </tr>
29832
29833          <tr class="entries_header">
29834            <th class="th_details" colspan="6">HAL Implementation Details</th>
29835          </tr>
29836          <tr class="entry_cont">
29837            <td class="entry_details" colspan="6">
29838              <p>HAL must always report face landmarks in the coordinate system of pre-correction
29839active array.<wbr/></p>
29840            </td>
29841          </tr>
29842
29843          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29844           <!-- end of entry -->
29845
29846
29847          <tr class="entry" id="dynamic_android.statistics.faceRectangles">
29848            <td class="entry_name
29849             " rowspan="5">
29850              android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles
29851            </td>
29852            <td class="entry_type">
29853                <span class="entry_type_name">int32</span>
29854                <span class="entry_type_container">x</span>
29855
29856                <span class="entry_type_array">
29857                  n x 4
29858                </span>
29859              <span class="entry_type_visibility"> [ndk_public as rectangle]</span>
29860
29861
29862              <span class="entry_type_hwlevel">[legacy] </span>
29863
29864
29865                <div class="entry_type_notes">(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax).<wbr/> (0,<wbr/>0) is top-left of active pixel area</div>
29866
29867
29868            </td> <!-- entry_type -->
29869
29870            <td class="entry_description">
29871              <p>List of the bounding rectangles for detected
29872faces.<wbr/></p>
29873            </td>
29874
29875            <td class="entry_units">
29876            </td>
29877
29878            <td class="entry_range">
29879            </td>
29880
29881            <td class="entry_hal_version">
29882              <p>3.<wbr/>2</p>
29883            </td>
29884
29885            <td class="entry_tags">
29886              <ul class="entry_tags">
29887                  <li><a href="#tag_BC">BC</a></li>
29888              </ul>
29889            </td>
29890
29891          </tr>
29892          <tr class="entries_header">
29893            <th class="th_details" colspan="6">Details</th>
29894          </tr>
29895          <tr class="entry_cont">
29896            <td class="entry_details" colspan="6">
29897              <p>For devices not supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate
29898system 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
29899the top-left pixel of the active array.<wbr/></p>
29900<p>For devices supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate
29901system depends on the mode being set.<wbr/>
29902When the distortion correction mode is OFF,<wbr/> the coordinate system follows
29903<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
29904<code>(0,<wbr/> 0)</code> being the top-left pixel of the pre-correction active array.<wbr/>
29905When the distortion correction mode is not OFF,<wbr/> the coordinate system follows
29906<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> with
29907<code>(0,<wbr/> 0)</code> being the top-left pixel of the active array.<wbr/></p>
29908<p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> != OFF.<wbr/></p>
29909<p>Starting from API level 30,<wbr/> the coordinate system of activeArraySize or
29910preCorrectionActiveArraySize is used to represent post-zoomRatio field of view,<wbr/> not
29911pre-zoomRatio field of view.<wbr/> This means that if the relative position of faces and
29912the camera device doesn't change,<wbr/> when zooming in by increasing
29913<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
29914the center of the activeArray or preCorrectionActiveArray.<wbr/> If <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a>
29915is 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>
29916changes.<wbr/> See <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> for details.<wbr/> Whether to use activeArraySize or
29917preCorrectionActiveArraySize still depends on distortion correction mode.<wbr/></p>
29918            </td>
29919          </tr>
29920
29921          <tr class="entries_header">
29922            <th class="th_details" colspan="6">HAL Implementation Details</th>
29923          </tr>
29924          <tr class="entry_cont">
29925            <td class="entry_details" colspan="6">
29926              <p>HAL must always report face rectangles in the coordinate system of pre-correction
29927active array.<wbr/></p>
29928            </td>
29929          </tr>
29930
29931          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29932           <!-- end of entry -->
29933
29934
29935          <tr class="entry" id="dynamic_android.statistics.faceScores">
29936            <td class="entry_name
29937             " rowspan="5">
29938              android.<wbr/>statistics.<wbr/>face<wbr/>Scores
29939            </td>
29940            <td class="entry_type">
29941                <span class="entry_type_name">byte</span>
29942                <span class="entry_type_container">x</span>
29943
29944                <span class="entry_type_array">
29945                  n
29946                </span>
29947              <span class="entry_type_visibility"> [ndk_public]</span>
29948
29949
29950              <span class="entry_type_hwlevel">[legacy] </span>
29951
29952
29953
29954
29955            </td> <!-- entry_type -->
29956
29957            <td class="entry_description">
29958              <p>List of the face confidence scores for
29959detected faces</p>
29960            </td>
29961
29962            <td class="entry_units">
29963            </td>
29964
29965            <td class="entry_range">
29966              <p>1-100</p>
29967            </td>
29968
29969            <td class="entry_hal_version">
29970              <p>3.<wbr/>2</p>
29971            </td>
29972
29973            <td class="entry_tags">
29974              <ul class="entry_tags">
29975                  <li><a href="#tag_BC">BC</a></li>
29976              </ul>
29977            </td>
29978
29979          </tr>
29980          <tr class="entries_header">
29981            <th class="th_details" colspan="6">Details</th>
29982          </tr>
29983          <tr class="entry_cont">
29984            <td class="entry_details" colspan="6">
29985              <p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> != OFF.<wbr/></p>
29986            </td>
29987          </tr>
29988
29989          <tr class="entries_header">
29990            <th class="th_details" colspan="6">HAL Implementation Details</th>
29991          </tr>
29992          <tr class="entry_cont">
29993            <td class="entry_details" colspan="6">
29994              <p>The value should be meaningful (for example,<wbr/> setting 100 at
29995all times is illegal).<wbr/></p>
29996            </td>
29997          </tr>
29998
29999          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
30000           <!-- end of entry -->
30001
30002
30003          <tr class="entry" id="dynamic_android.statistics.faces">
30004            <td class="entry_name
30005             " rowspan="3">
30006              android.<wbr/>statistics.<wbr/>faces
30007            </td>
30008            <td class="entry_type">
30009                <span class="entry_type_name">int32</span>
30010                <span class="entry_type_container">x</span>
30011
30012                <span class="entry_type_array">
30013                  n
30014                </span>
30015              <span class="entry_type_visibility"> [java_public as face]</span>
30016
30017              <span class="entry_type_synthetic">[synthetic] </span>
30018
30019              <span class="entry_type_hwlevel">[legacy] </span>
30020
30021
30022
30023
30024            </td> <!-- entry_type -->
30025
30026            <td class="entry_description">
30027              <p>List of the faces detected through camera face detection
30028in this capture.<wbr/></p>
30029            </td>
30030
30031            <td class="entry_units">
30032            </td>
30033
30034            <td class="entry_range">
30035            </td>
30036
30037            <td class="entry_hal_version">
30038              <p>3.<wbr/>2</p>
30039            </td>
30040
30041            <td class="entry_tags">
30042            </td>
30043
30044          </tr>
30045          <tr class="entries_header">
30046            <th class="th_details" colspan="6">Details</th>
30047          </tr>
30048          <tr class="entry_cont">
30049            <td class="entry_details" colspan="6">
30050              <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>
30051            </td>
30052          </tr>
30053
30054
30055          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
30056           <!-- end of entry -->
30057
30058
30059          <tr class="entry" id="dynamic_android.statistics.histogram">
30060            <td class="entry_name
30061             " rowspan="3">
30062              android.<wbr/>statistics.<wbr/>histogram
30063            </td>
30064            <td class="entry_type">
30065                <span class="entry_type_name">int32</span>
30066                <span class="entry_type_container">x</span>
30067
30068                <span class="entry_type_array">
30069                  n x 3
30070                </span>
30071              <span class="entry_type_visibility"> [system]</span>
30072
30073
30074
30075
30076                <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>
30077
30078
30079            </td> <!-- entry_type -->
30080
30081            <td class="entry_description">
30082              <p>A 3-channel histogram based on the raw
30083sensor data</p>
30084            </td>
30085
30086            <td class="entry_units">
30087            </td>
30088
30089            <td class="entry_range">
30090            </td>
30091
30092            <td class="entry_hal_version">
30093              <p>3.<wbr/>2</p>
30094            </td>
30095
30096            <td class="entry_tags">
30097              <ul class="entry_tags">
30098                  <li><a href="#tag_FUTURE">FUTURE</a></li>
30099              </ul>
30100            </td>
30101
30102          </tr>
30103          <tr class="entries_header">
30104            <th class="th_details" colspan="6">Details</th>
30105          </tr>
30106          <tr class="entry_cont">
30107            <td class="entry_details" colspan="6">
30108              <p>The k'th bucket (0-based) covers the input range
30109(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/>
30110(k + 1) * w /<wbr/> N ).<wbr/> If only a monochrome sharpness map is
30111supported,<wbr/> all channels should have the same data</p>
30112            </td>
30113          </tr>
30114
30115
30116          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
30117           <!-- end of entry -->
30118
30119
30120          <tr class="entry" id="dynamic_android.statistics.histogramMode">
30121            <td class="entry_name
30122             " rowspan="1">
30123              android.<wbr/>statistics.<wbr/>histogram<wbr/>Mode
30124            </td>
30125            <td class="entry_type">
30126                <span class="entry_type_name entry_type_name_enum">byte</span>
30127
30128              <span class="entry_type_visibility"> [system as boolean]</span>
30129
30130
30131
30132
30133
30134                <ul class="entry_type_enum">
30135                  <li>
30136                    <span class="entry_type_enum_name">OFF (v3.2)</span>
30137                  </li>
30138                  <li>
30139                    <span class="entry_type_enum_name">ON (v3.2)</span>
30140                  </li>
30141                </ul>
30142
30143            </td> <!-- entry_type -->
30144
30145            <td class="entry_description">
30146              <p>Operating mode for histogram
30147generation</p>
30148            </td>
30149
30150            <td class="entry_units">
30151            </td>
30152
30153            <td class="entry_range">
30154            </td>
30155
30156            <td class="entry_hal_version">
30157              <p>3.<wbr/>2</p>
30158            </td>
30159
30160            <td class="entry_tags">
30161              <ul class="entry_tags">
30162                  <li><a href="#tag_FUTURE">FUTURE</a></li>
30163              </ul>
30164            </td>
30165
30166          </tr>
30167
30168
30169          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
30170           <!-- end of entry -->
30171
30172
30173          <tr class="entry" id="dynamic_android.statistics.sharpnessMap">
30174            <td class="entry_name
30175             " rowspan="3">
30176              android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map
30177            </td>
30178            <td class="entry_type">
30179                <span class="entry_type_name">int32</span>
30180                <span class="entry_type_container">x</span>
30181
30182                <span class="entry_type_array">
30183                  n x m x 3
30184                </span>
30185              <span class="entry_type_visibility"> [system]</span>
30186
30187
30188
30189
30190                <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>
30191
30192
30193            </td> <!-- entry_type -->
30194
30195            <td class="entry_description">
30196              <p>A 3-channel sharpness map,<wbr/> based on the raw
30197sensor data</p>
30198            </td>
30199
30200            <td class="entry_units">
30201            </td>
30202
30203            <td class="entry_range">
30204            </td>
30205
30206            <td class="entry_hal_version">
30207              <p>3.<wbr/>2</p>
30208            </td>
30209
30210            <td class="entry_tags">
30211              <ul class="entry_tags">
30212                  <li><a href="#tag_FUTURE">FUTURE</a></li>
30213              </ul>
30214            </td>
30215
30216          </tr>
30217          <tr class="entries_header">
30218            <th class="th_details" colspan="6">Details</th>
30219          </tr>
30220          <tr class="entry_cont">
30221            <td class="entry_details" colspan="6">
30222              <p>If only a monochrome sharpness map is supported,<wbr/>
30223all channels should have the same data</p>
30224            </td>
30225          </tr>
30226
30227
30228          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
30229           <!-- end of entry -->
30230
30231
30232          <tr class="entry" id="dynamic_android.statistics.sharpnessMapMode">
30233            <td class="entry_name
30234             " rowspan="1">
30235              android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map<wbr/>Mode
30236            </td>
30237            <td class="entry_type">
30238                <span class="entry_type_name entry_type_name_enum">byte</span>
30239
30240              <span class="entry_type_visibility"> [system as boolean]</span>
30241
30242
30243
30244
30245
30246                <ul class="entry_type_enum">
30247                  <li>
30248                    <span class="entry_type_enum_name">OFF (v3.2)</span>
30249                  </li>
30250                  <li>
30251                    <span class="entry_type_enum_name">ON (v3.2)</span>
30252                  </li>
30253                </ul>
30254
30255            </td> <!-- entry_type -->
30256
30257            <td class="entry_description">
30258              <p>Operating mode for sharpness map
30259generation</p>
30260            </td>
30261
30262            <td class="entry_units">
30263            </td>
30264
30265            <td class="entry_range">
30266            </td>
30267
30268            <td class="entry_hal_version">
30269              <p>3.<wbr/>2</p>
30270            </td>
30271
30272            <td class="entry_tags">
30273              <ul class="entry_tags">
30274                  <li><a href="#tag_FUTURE">FUTURE</a></li>
30275              </ul>
30276            </td>
30277
30278          </tr>
30279
30280
30281          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
30282           <!-- end of entry -->
30283
30284
30285          <tr class="entry" id="dynamic_android.statistics.lensShadingCorrectionMap">
30286            <td class="entry_name
30287             " rowspan="3">
30288              android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Correction<wbr/>Map
30289            </td>
30290            <td class="entry_type">
30291                <span class="entry_type_name">byte</span>
30292
30293              <span class="entry_type_visibility"> [java_public as lensShadingMap]</span>
30294
30295
30296              <span class="entry_type_hwlevel">[full] </span>
30297
30298
30299
30300
30301            </td> <!-- entry_type -->
30302
30303            <td class="entry_description">
30304              <p>The shading map is a low-resolution floating-point map
30305that lists the coefficients used to correct for vignetting,<wbr/> for each
30306Bayer color channel.<wbr/></p>
30307            </td>
30308
30309            <td class="entry_units">
30310            </td>
30311
30312            <td class="entry_range">
30313              <p>Each gain factor is &gt;= 1</p>
30314            </td>
30315
30316            <td class="entry_hal_version">
30317              <p>3.<wbr/>2</p>
30318            </td>
30319
30320            <td class="entry_tags">
30321            </td>
30322
30323          </tr>
30324          <tr class="entries_header">
30325            <th class="th_details" colspan="6">Details</th>
30326          </tr>
30327          <tr class="entry_cont">
30328            <td class="entry_details" colspan="6">
30329              <p>The map provided here is the same map that is used by the camera device to
30330correct both color shading and vignetting for output non-RAW images.<wbr/></p>
30331<p>When there is no lens shading correction applied to RAW
30332output images (<a href="#static_android.sensor.info.lensShadingApplied">android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied</a> <code>==</code>
30333false),<wbr/> this map is the complete lens shading correction
30334map; when there is some lens shading correction applied to
30335the 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
30336correction map that needs to be applied to get shading
30337corrected images that match the camera device's output for
30338non-RAW formats.<wbr/></p>
30339<p>For a complete shading correction map,<wbr/> the least shaded
30340section of the image will have a gain factor of 1; all
30341other sections will have gains above 1.<wbr/></p>
30342<p>When <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> = TRANSFORM_<wbr/>MATRIX,<wbr/> the map
30343will take into account the colorCorrection settings.<wbr/></p>
30344<p>The shading map is for the entire active pixel array,<wbr/> and is not
30345affected by the crop region specified in the request.<wbr/> Each shading map
30346entry is the value of the shading compensation map over a specific
30347pixel on the sensor.<wbr/>  Specifically,<wbr/> with a (N x M) resolution shading
30348map,<wbr/> and an active pixel array size (W x H),<wbr/> shading map entry
30349(x,<wbr/>y) ϵ (0 ...<wbr/> N-1,<wbr/> 0 ...<wbr/> M-1) is the value of the shading map at
30350pixel ( ((W-1)/<wbr/>(N-1)) * x,<wbr/> ((H-1)/<wbr/>(M-1)) * y) for the four color channels.<wbr/>
30351The map is assumed to be bilinearly interpolated between the sample points.<wbr/></p>
30352<p>The channel order is [R,<wbr/> Geven,<wbr/> Godd,<wbr/> B],<wbr/> where Geven is the green
30353channel for the even rows of a Bayer pattern,<wbr/> and Godd is the odd rows.<wbr/>
30354The shading map is stored in a fully interleaved format.<wbr/></p>
30355<p>The shading map will generally have on the order of 30-40 rows and columns,<wbr/>
30356and will be smaller than 64x64.<wbr/></p>
30357<p>As an example,<wbr/> given a very small map defined as:</p>
30358<pre><code>width,<wbr/>height = [ 4,<wbr/> 3 ]
30359values =
30360[ 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/>
30361    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/>
30362  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/>
30363    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/>
30364  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/>
30365    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 ]
30366</code></pre>
30367<p>The low-resolution scaling map images for each channel are
30368(displayed using nearest-neighbor interpolation):</p>
30369<p><img alt="Red lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/red_shading.png"/>
30370<img alt="Green (even rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_e_shading.png"/>
30371<img alt="Green (odd rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_o_shading.png"/>
30372<img alt="Blue lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/blue_shading.png"/></p>
30373<p>As a visualization only,<wbr/> inverting the full-color map to recover an
30374image of a gray wall (using bicubic interpolation for visual quality) as captured by the sensor gives:</p>
30375<p><img alt="Image of a uniform white wall (inverse shading map)" src="images/camera2/metadata/android.statistics.lensShadingMap/inv_shading.png"/></p>
30376<p>For a MONOCHROME camera,<wbr/> all of the 2x2 channels must have the same values.<wbr/> An example
30377shading map for such a camera is defined as:</p>
30378<pre><code><a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a> = [ 4,<wbr/> 3 ]
30379<a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> =
30380[ 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/>
30381    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/>
30382  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/>
30383    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/>
30384  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/>
30385    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 ]
30386</code></pre>
30387            </td>
30388          </tr>
30389
30390
30391          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
30392           <!-- end of entry -->
30393
30394
30395          <tr class="entry" id="dynamic_android.statistics.lensShadingMap">
30396            <td class="entry_name
30397             " rowspan="5">
30398              android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map
30399            </td>
30400            <td class="entry_type">
30401                <span class="entry_type_name">float</span>
30402                <span class="entry_type_container">x</span>
30403
30404                <span class="entry_type_array">
30405                  4 x n x m
30406                </span>
30407              <span class="entry_type_visibility"> [ndk_public]</span>
30408
30409
30410              <span class="entry_type_hwlevel">[full] </span>
30411
30412
30413                <div class="entry_type_notes">2D array of float gain factors per channel to correct lens shading</div>
30414
30415
30416            </td> <!-- entry_type -->
30417
30418            <td class="entry_description">
30419              <p>The shading map is a low-resolution floating-point map
30420that lists the coefficients used to correct for vignetting and color shading,<wbr/>
30421for each Bayer color channel of RAW image data.<wbr/></p>
30422            </td>
30423
30424            <td class="entry_units">
30425            </td>
30426
30427            <td class="entry_range">
30428              <p>Each gain factor is &gt;= 1</p>
30429            </td>
30430
30431            <td class="entry_hal_version">
30432              <p>3.<wbr/>2</p>
30433            </td>
30434
30435            <td class="entry_tags">
30436            </td>
30437
30438          </tr>
30439          <tr class="entries_header">
30440            <th class="th_details" colspan="6">Details</th>
30441          </tr>
30442          <tr class="entry_cont">
30443            <td class="entry_details" colspan="6">
30444              <p>The map provided here is the same map that is used by the camera device to
30445correct both color shading and vignetting for output non-RAW images.<wbr/></p>
30446<p>When there is no lens shading correction applied to RAW
30447output images (<a href="#static_android.sensor.info.lensShadingApplied">android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied</a> <code>==</code>
30448false),<wbr/> this map is the complete lens shading correction
30449map; when there is some lens shading correction applied to
30450the 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
30451correction map that needs to be applied to get shading
30452corrected images that match the camera device's output for
30453non-RAW formats.<wbr/></p>
30454<p>For a complete shading correction map,<wbr/> the least shaded
30455section of the image will have a gain factor of 1; all
30456other sections will have gains above 1.<wbr/></p>
30457<p>When <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> = TRANSFORM_<wbr/>MATRIX,<wbr/> the map
30458will take into account the colorCorrection settings.<wbr/></p>
30459<p>The shading map is for the entire active pixel array,<wbr/> and is not
30460affected by the crop region specified in the request.<wbr/> Each shading map
30461entry is the value of the shading compensation map over a specific
30462pixel on the sensor.<wbr/>  Specifically,<wbr/> with a (N x M) resolution shading
30463map,<wbr/> and an active pixel array size (W x H),<wbr/> shading map entry
30464(x,<wbr/>y) ϵ (0 ...<wbr/> N-1,<wbr/> 0 ...<wbr/> M-1) is the value of the shading map at
30465pixel ( ((W-1)/<wbr/>(N-1)) * x,<wbr/> ((H-1)/<wbr/>(M-1)) * y) for the four color channels.<wbr/>
30466The map is assumed to be bilinearly interpolated between the sample points.<wbr/></p>
30467<p>For a Bayer camera,<wbr/> the channel order is [R,<wbr/> Geven,<wbr/> Godd,<wbr/> B],<wbr/> where Geven is
30468the green channel for the even rows of a Bayer pattern,<wbr/> and Godd is the odd rows.<wbr/>
30469The shading map is stored in a fully interleaved format,<wbr/> and its size
30470is 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>
30471<p>The shading map will generally have on the order of 30-40 rows and columns,<wbr/>
30472and will be smaller than 64x64.<wbr/></p>
30473<p>As an example,<wbr/> given a very small map for a Bayer camera defined as:</p>
30474<pre><code><a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a> = [ 4,<wbr/> 3 ]
30475<a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> =
30476[ 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/>
30477    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/>
30478  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/>
30479    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/>
30480  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/>
30481    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 ]
30482</code></pre>
30483<p>The low-resolution scaling map images for each channel are
30484(displayed using nearest-neighbor interpolation):</p>
30485<p><img alt="Red lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/red_shading.png"/>
30486<img alt="Green (even rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_e_shading.png"/>
30487<img alt="Green (odd rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_o_shading.png"/>
30488<img alt="Blue lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/blue_shading.png"/></p>
30489<p>As a visualization only,<wbr/> inverting the full-color map to recover an
30490image of a gray wall (using bicubic interpolation for visual quality)
30491as captured by the sensor gives:</p>
30492<p><img alt="Image of a uniform white wall (inverse shading map)" src="images/camera2/metadata/android.statistics.lensShadingMap/inv_shading.png"/></p>
30493<p>For a MONOCHROME camera,<wbr/> all of the 2x2 channels must have the same values.<wbr/> An example
30494shading map for such a camera is defined as:</p>
30495<pre><code><a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a> = [ 4,<wbr/> 3 ]
30496<a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> =
30497[ 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/>
30498    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/>
30499  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/>
30500    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/>
30501  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/>
30502    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 ]
30503</code></pre>
30504<p>Note that the RAW image data might be subject to lens shading
30505correction not reported on this map.<wbr/> Query
30506<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
30507to lens shading correction.<wbr/> If <a href="#static_android.sensor.info.lensShadingApplied">android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied</a>
30508is TRUE,<wbr/> the RAW image data is subject to partial or full lens shading
30509correction.<wbr/> In the case full lens shading correction is applied to RAW
30510images,<wbr/> the gain factor map reported in this key will contain all 1.<wbr/>0 gains.<wbr/>
30511In other words,<wbr/> the map reported in this key is the remaining lens shading
30512that needs to be applied on the RAW image to get images without lens shading
30513artifacts.<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
30514formats.<wbr/></p>
30515            </td>
30516          </tr>
30517
30518          <tr class="entries_header">
30519            <th class="th_details" colspan="6">HAL Implementation Details</th>
30520          </tr>
30521          <tr class="entry_cont">
30522            <td class="entry_details" colspan="6">
30523              <p>The lens shading map calculation may depend on exposure and white balance statistics.<wbr/>
30524When AE and AWB are in AUTO modes
30525(<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
30526may have all the information it need to generate most accurate lens shading map.<wbr/> When
30527AE or AWB are in manual mode
30528(<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
30529may be adversely impacted by manual exposure or white balance parameters.<wbr/> To avoid
30530generating unreliable shading map data,<wbr/> the HAL may choose to lock the shading map with
30531the latest known good map generated when the AE and AWB are in AUTO modes.<wbr/></p>
30532            </td>
30533          </tr>
30534
30535          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
30536           <!-- end of entry -->
30537
30538
30539          <tr class="entry" id="dynamic_android.statistics.predictedColorGains">
30540            <td class="entry_name
30541                entry_name_deprecated
30542             " rowspan="3">
30543              android.<wbr/>statistics.<wbr/>predicted<wbr/>Color<wbr/>Gains
30544            </td>
30545            <td class="entry_type">
30546                <span class="entry_type_name">float</span>
30547                <span class="entry_type_container">x</span>
30548
30549                <span class="entry_type_array">
30550                  4
30551                </span>
30552              <span class="entry_type_visibility"> [hidden]</span>
30553
30554
30555
30556              <span class="entry_type_deprecated">[deprecated] </span>
30557
30558                <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div>
30559
30560
30561            </td> <!-- entry_type -->
30562
30563            <td class="entry_description">
30564              <p>The best-fit color channel gains calculated
30565by the camera device's statistics units for the current output frame.<wbr/></p>
30566            </td>
30567
30568            <td class="entry_units">
30569            </td>
30570
30571            <td class="entry_range">
30572              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
30573            </td>
30574
30575            <td class="entry_hal_version">
30576              <p>3.<wbr/>2</p>
30577            </td>
30578
30579            <td class="entry_tags">
30580            </td>
30581
30582          </tr>
30583          <tr class="entries_header">
30584            <th class="th_details" colspan="6">Details</th>
30585          </tr>
30586          <tr class="entry_cont">
30587            <td class="entry_details" colspan="6">
30588              <p>This may be different than the gains used for this frame,<wbr/>
30589since statistics processing on data from a new frame
30590typically completes after the transform has already been
30591applied to that frame.<wbr/></p>
30592<p>The 4 channel gains are defined in Bayer domain,<wbr/>
30593see <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> for details.<wbr/></p>
30594<p>This value should always be calculated by the auto-white balance (AWB) block,<wbr/>
30595regardless of the android.<wbr/>control.<wbr/>* current values.<wbr/></p>
30596            </td>
30597          </tr>
30598
30599
30600          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
30601           <!-- end of entry -->
30602
30603
30604          <tr class="entry" id="dynamic_android.statistics.predictedColorTransform">
30605            <td class="entry_name
30606                entry_name_deprecated
30607             " rowspan="3">
30608              android.<wbr/>statistics.<wbr/>predicted<wbr/>Color<wbr/>Transform
30609            </td>
30610            <td class="entry_type">
30611                <span class="entry_type_name">rational</span>
30612                <span class="entry_type_container">x</span>
30613
30614                <span class="entry_type_array">
30615                  3 x 3
30616                </span>
30617              <span class="entry_type_visibility"> [hidden]</span>
30618
30619
30620
30621              <span class="entry_type_deprecated">[deprecated] </span>
30622
30623                <div class="entry_type_notes">3x3 rational matrix in row-major order</div>
30624
30625
30626            </td> <!-- entry_type -->
30627
30628            <td class="entry_description">
30629              <p>The best-fit color transform matrix estimate
30630calculated by the camera device's statistics units for the current
30631output frame.<wbr/></p>
30632            </td>
30633
30634            <td class="entry_units">
30635            </td>
30636
30637            <td class="entry_range">
30638              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
30639            </td>
30640
30641            <td class="entry_hal_version">
30642              <p>3.<wbr/>2</p>
30643            </td>
30644
30645            <td class="entry_tags">
30646            </td>
30647
30648          </tr>
30649          <tr class="entries_header">
30650            <th class="th_details" colspan="6">Details</th>
30651          </tr>
30652          <tr class="entry_cont">
30653            <td class="entry_details" colspan="6">
30654              <p>The camera device will provide the estimate from its
30655statistics unit on the white balance transforms to use
30656for the next frame.<wbr/> These are the values the camera device believes
30657are the best fit for the current output frame.<wbr/> This may
30658be different than the transform used for this frame,<wbr/> since
30659statistics processing on data from a new frame typically
30660completes after the transform has already been applied to
30661that frame.<wbr/></p>
30662<p>These estimates must be provided for all frames,<wbr/> even if
30663capture settings and color transforms are set by the application.<wbr/></p>
30664<p>This value should always be calculated by the auto-white balance (AWB) block,<wbr/>
30665regardless of the android.<wbr/>control.<wbr/>* current values.<wbr/></p>
30666            </td>
30667          </tr>
30668
30669
30670          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
30671           <!-- end of entry -->
30672
30673
30674          <tr class="entry" id="dynamic_android.statistics.sceneFlicker">
30675            <td class="entry_name
30676             " rowspan="3">
30677              android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker
30678            </td>
30679            <td class="entry_type">
30680                <span class="entry_type_name entry_type_name_enum">byte</span>
30681
30682              <span class="entry_type_visibility"> [public]</span>
30683
30684
30685              <span class="entry_type_hwlevel">[full] </span>
30686
30687
30688
30689                <ul class="entry_type_enum">
30690                  <li>
30691                    <span class="entry_type_enum_name">NONE (v3.2)</span>
30692                    <span class="entry_type_enum_notes"><p>The camera device does not detect any flickering illumination
30693in the current scene.<wbr/></p></span>
30694                  </li>
30695                  <li>
30696                    <span class="entry_type_enum_name">50HZ (v3.2)</span>
30697                    <span class="entry_type_enum_notes"><p>The camera device detects illumination flickering at 50Hz
30698in the current scene.<wbr/></p></span>
30699                  </li>
30700                  <li>
30701                    <span class="entry_type_enum_name">60HZ (v3.2)</span>
30702                    <span class="entry_type_enum_notes"><p>The camera device detects illumination flickering at 60Hz
30703in the current scene.<wbr/></p></span>
30704                  </li>
30705                </ul>
30706
30707            </td> <!-- entry_type -->
30708
30709            <td class="entry_description">
30710              <p>The camera device estimated scene illumination lighting
30711frequency.<wbr/></p>
30712            </td>
30713
30714            <td class="entry_units">
30715            </td>
30716
30717            <td class="entry_range">
30718            </td>
30719
30720            <td class="entry_hal_version">
30721              <p>3.<wbr/>2</p>
30722            </td>
30723
30724            <td class="entry_tags">
30725            </td>
30726
30727          </tr>
30728          <tr class="entries_header">
30729            <th class="th_details" colspan="6">Details</th>
30730          </tr>
30731          <tr class="entry_cont">
30732            <td class="entry_details" colspan="6">
30733              <p>Many light sources,<wbr/> such as most fluorescent lights,<wbr/> flicker at a rate
30734that depends on the local utility power standards.<wbr/> This flicker must be
30735accounted for by auto-exposure routines to avoid artifacts in captured images.<wbr/>
30736The camera device uses this entry to tell the application what the scene
30737illuminant frequency is.<wbr/></p>
30738<p>When manual exposure control is enabled
30739(<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> ==
30740OFF</code>),<wbr/> the <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> doesn't perform
30741antibanding,<wbr/> and the application can ensure it selects
30742exposure times that do not cause banding issues by looking
30743into this metadata field.<wbr/> See
30744<a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> for more details.<wbr/></p>
30745<p>Reports NONE if there doesn't appear to be flickering illumination.<wbr/></p>
30746            </td>
30747          </tr>
30748
30749
30750          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
30751           <!-- end of entry -->
30752
30753
30754          <tr class="entry" id="dynamic_android.statistics.hotPixelMapMode">
30755            <td class="entry_name
30756             " rowspan="3">
30757              android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode
30758            </td>
30759            <td class="entry_type">
30760                <span class="entry_type_name entry_type_name_enum">byte</span>
30761
30762              <span class="entry_type_visibility"> [public as boolean]</span>
30763
30764
30765
30766
30767
30768                <ul class="entry_type_enum">
30769                  <li>
30770                    <span class="entry_type_enum_name">OFF (v3.2)</span>
30771                    <span class="entry_type_enum_notes"><p>Hot pixel map production is disabled.<wbr/></p></span>
30772                  </li>
30773                  <li>
30774                    <span class="entry_type_enum_name">ON (v3.2)</span>
30775                    <span class="entry_type_enum_notes"><p>Hot pixel map production is enabled.<wbr/></p></span>
30776                  </li>
30777                </ul>
30778
30779            </td> <!-- entry_type -->
30780
30781            <td class="entry_description">
30782              <p>Operating mode for hot pixel map generation.<wbr/></p>
30783            </td>
30784
30785            <td class="entry_units">
30786            </td>
30787
30788            <td class="entry_range">
30789              <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>
30790            </td>
30791
30792            <td class="entry_hal_version">
30793              <p>3.<wbr/>2</p>
30794            </td>
30795
30796            <td class="entry_tags">
30797              <ul class="entry_tags">
30798                  <li><a href="#tag_V1">V1</a></li>
30799                  <li><a href="#tag_RAW">RAW</a></li>
30800              </ul>
30801            </td>
30802
30803          </tr>
30804          <tr class="entries_header">
30805            <th class="th_details" colspan="6">Details</th>
30806          </tr>
30807          <tr class="entry_cont">
30808            <td class="entry_details" colspan="6">
30809              <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/>
30810If set to <code>false</code>,<wbr/> no hot pixel map will be returned.<wbr/></p>
30811            </td>
30812          </tr>
30813
30814
30815          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
30816           <!-- end of entry -->
30817
30818
30819          <tr class="entry" id="dynamic_android.statistics.hotPixelMap">
30820            <td class="entry_name
30821             " rowspan="5">
30822              android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map
30823            </td>
30824            <td class="entry_type">
30825                <span class="entry_type_name">int32</span>
30826                <span class="entry_type_container">x</span>
30827
30828                <span class="entry_type_array">
30829                  2 x n
30830                </span>
30831              <span class="entry_type_visibility"> [public as point]</span>
30832
30833
30834
30835
30836                <div class="entry_type_notes">list of coordinates based on android.<wbr/>sensor.<wbr/>pixel<wbr/>Array<wbr/>Size</div>
30837
30838
30839            </td> <!-- entry_type -->
30840
30841            <td class="entry_description">
30842              <p>List of <code>(x,<wbr/> y)</code> coordinates of hot/<wbr/>defective pixels on the sensor.<wbr/></p>
30843            </td>
30844
30845            <td class="entry_units">
30846            </td>
30847
30848            <td class="entry_range">
30849              <p>n &lt;= number of pixels on the sensor.<wbr/>
30850The <code>(x,<wbr/> y)</code> coordinates must be bounded by
30851<a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
30852            </td>
30853
30854            <td class="entry_hal_version">
30855              <p>3.<wbr/>2</p>
30856            </td>
30857
30858            <td class="entry_tags">
30859              <ul class="entry_tags">
30860                  <li><a href="#tag_V1">V1</a></li>
30861                  <li><a href="#tag_RAW">RAW</a></li>
30862              </ul>
30863            </td>
30864
30865          </tr>
30866          <tr class="entries_header">
30867            <th class="th_details" colspan="6">Details</th>
30868          </tr>
30869          <tr class="entry_cont">
30870            <td class="entry_details" colspan="6">
30871              <p>A coordinate <code>(x,<wbr/> y)</code> must lie between <code>(0,<wbr/> 0)</code>,<wbr/> and
30872<code>(width - 1,<wbr/> height - 1)</code> (inclusive),<wbr/> which are the top-left and
30873bottom-right of the pixel array,<wbr/> respectively.<wbr/> The width and
30874height dimensions are given in <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/>
30875This may include hot pixels that lie outside of the active array
30876bounds given by <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
30877            </td>
30878          </tr>
30879
30880          <tr class="entries_header">
30881            <th class="th_details" colspan="6">HAL Implementation Details</th>
30882          </tr>
30883          <tr class="entry_cont">
30884            <td class="entry_details" colspan="6">
30885              <p>A hotpixel map contains the coordinates of pixels on the camera
30886sensor that do report valid values (usually due to defects in
30887the camera sensor).<wbr/> This includes pixels that are stuck at certain
30888values,<wbr/> or have a response that does not accuractly encode the
30889incoming light from the scene.<wbr/></p>
30890<p>To avoid performance issues,<wbr/> there should be significantly fewer hot
30891pixels than actual pixels on the camera sensor.<wbr/></p>
30892            </td>
30893          </tr>
30894
30895          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
30896           <!-- end of entry -->
30897
30898
30899          <tr class="entry" id="dynamic_android.statistics.lensShadingMapMode">
30900            <td class="entry_name
30901             " rowspan="3">
30902              android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode
30903            </td>
30904            <td class="entry_type">
30905                <span class="entry_type_name entry_type_name_enum">byte</span>
30906
30907              <span class="entry_type_visibility"> [public]</span>
30908
30909
30910              <span class="entry_type_hwlevel">[full] </span>
30911
30912
30913
30914                <ul class="entry_type_enum">
30915                  <li>
30916                    <span class="entry_type_enum_name">OFF (v3.2)</span>
30917                    <span class="entry_type_enum_notes"><p>Do not include a lens shading map in the capture result.<wbr/></p></span>
30918                  </li>
30919                  <li>
30920                    <span class="entry_type_enum_name">ON (v3.2)</span>
30921                    <span class="entry_type_enum_notes"><p>Include a lens shading map in the capture result.<wbr/></p></span>
30922                  </li>
30923                </ul>
30924
30925            </td> <!-- entry_type -->
30926
30927            <td class="entry_description">
30928              <p>Whether the camera device will output the lens
30929shading map in output result metadata.<wbr/></p>
30930            </td>
30931
30932            <td class="entry_units">
30933            </td>
30934
30935            <td class="entry_range">
30936              <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>
30937            </td>
30938
30939            <td class="entry_hal_version">
30940              <p>3.<wbr/>2</p>
30941            </td>
30942
30943            <td class="entry_tags">
30944              <ul class="entry_tags">
30945                  <li><a href="#tag_RAW">RAW</a></li>
30946              </ul>
30947            </td>
30948
30949          </tr>
30950          <tr class="entries_header">
30951            <th class="th_details" colspan="6">Details</th>
30952          </tr>
30953          <tr class="entry_cont">
30954            <td class="entry_details" colspan="6">
30955              <p>When set to ON,<wbr/>
30956<a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> will be provided in
30957the output result metadata.<wbr/></p>
30958<p>ON is always supported on devices with the RAW capability.<wbr/></p>
30959            </td>
30960          </tr>
30961
30962
30963          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
30964           <!-- end of entry -->
30965
30966
30967          <tr class="entry" id="dynamic_android.statistics.oisDataMode">
30968            <td class="entry_name
30969             " rowspan="3">
30970              android.<wbr/>statistics.<wbr/>ois<wbr/>Data<wbr/>Mode
30971            </td>
30972            <td class="entry_type">
30973                <span class="entry_type_name entry_type_name_enum">byte</span>
30974
30975              <span class="entry_type_visibility"> [public]</span>
30976
30977
30978
30979
30980
30981                <ul class="entry_type_enum">
30982                  <li>
30983                    <span class="entry_type_enum_name">OFF (v3.3)</span>
30984                    <span class="entry_type_enum_notes"><p>Do not include OIS data in the capture result.<wbr/></p></span>
30985                  </li>
30986                  <li>
30987                    <span class="entry_type_enum_name">ON (v3.3)</span>
30988                    <span class="entry_type_enum_notes"><p>Include OIS data in the capture result.<wbr/></p></span>
30989                  </li>
30990                </ul>
30991
30992            </td> <!-- entry_type -->
30993
30994            <td class="entry_description">
30995              <p>A control for selecting whether optical stabilization (OIS) position
30996information is included in output result metadata.<wbr/></p>
30997            </td>
30998
30999            <td class="entry_units">
31000            </td>
31001
31002            <td class="entry_range">
31003              <p><a href="#static_android.statistics.info.availableOisDataModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Ois<wbr/>Data<wbr/>Modes</a></p>
31004            </td>
31005
31006            <td class="entry_hal_version">
31007              <p>3.<wbr/>3</p>
31008            </td>
31009
31010            <td class="entry_tags">
31011            </td>
31012
31013          </tr>
31014          <tr class="entries_header">
31015            <th class="th_details" colspan="6">Details</th>
31016          </tr>
31017          <tr class="entry_cont">
31018            <td class="entry_details" colspan="6">
31019              <p>Since optical image stabilization generally involves motion much faster than the duration
31020of individual image exposure,<wbr/> multiple OIS samples can be included for a single capture
31021result.<wbr/> For example,<wbr/> if the OIS reporting operates at 200 Hz,<wbr/> a typical camera operating
31022at 30fps may have 6-7 OIS samples per capture result.<wbr/> This information can be combined
31023with the rolling shutter skew to account for lens motion during image exposure in
31024post-processing algorithms.<wbr/></p>
31025            </td>
31026          </tr>
31027
31028
31029          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
31030           <!-- end of entry -->
31031
31032
31033          <tr class="entry" id="dynamic_android.statistics.oisTimestamps">
31034            <td class="entry_name
31035             " rowspan="3">
31036              android.<wbr/>statistics.<wbr/>ois<wbr/>Timestamps
31037            </td>
31038            <td class="entry_type">
31039                <span class="entry_type_name">int64</span>
31040                <span class="entry_type_container">x</span>
31041
31042                <span class="entry_type_array">
31043                  n
31044                </span>
31045              <span class="entry_type_visibility"> [ndk_public]</span>
31046
31047
31048
31049
31050
31051
31052            </td> <!-- entry_type -->
31053
31054            <td class="entry_description">
31055              <p>An array of timestamps of OIS samples,<wbr/> in nanoseconds.<wbr/></p>
31056            </td>
31057
31058            <td class="entry_units">
31059              nanoseconds
31060            </td>
31061
31062            <td class="entry_range">
31063            </td>
31064
31065            <td class="entry_hal_version">
31066              <p>3.<wbr/>3</p>
31067            </td>
31068
31069            <td class="entry_tags">
31070            </td>
31071
31072          </tr>
31073          <tr class="entries_header">
31074            <th class="th_details" colspan="6">Details</th>
31075          </tr>
31076          <tr class="entry_cont">
31077            <td class="entry_details" colspan="6">
31078              <p>The array contains the timestamps of OIS samples.<wbr/> The timestamps are in the same
31079timebase as and comparable to <a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a>.<wbr/></p>
31080            </td>
31081          </tr>
31082
31083
31084          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
31085           <!-- end of entry -->
31086
31087
31088          <tr class="entry" id="dynamic_android.statistics.oisXShifts">
31089            <td class="entry_name
31090             " rowspan="3">
31091              android.<wbr/>statistics.<wbr/>ois<wbr/>XShifts
31092            </td>
31093            <td class="entry_type">
31094                <span class="entry_type_name">float</span>
31095                <span class="entry_type_container">x</span>
31096
31097                <span class="entry_type_array">
31098                  n
31099                </span>
31100              <span class="entry_type_visibility"> [ndk_public]</span>
31101
31102
31103
31104
31105
31106
31107            </td> <!-- entry_type -->
31108
31109            <td class="entry_description">
31110              <p>An array of shifts of OIS samples,<wbr/> in x direction.<wbr/></p>
31111            </td>
31112
31113            <td class="entry_units">
31114              Pixels in active array.<wbr/>
31115            </td>
31116
31117            <td class="entry_range">
31118            </td>
31119
31120            <td class="entry_hal_version">
31121              <p>3.<wbr/>3</p>
31122            </td>
31123
31124            <td class="entry_tags">
31125            </td>
31126
31127          </tr>
31128          <tr class="entries_header">
31129            <th class="th_details" colspan="6">Details</th>
31130          </tr>
31131          <tr class="entry_cont">
31132            <td class="entry_details" colspan="6">
31133              <p>The array contains the amount of shifts in x direction,<wbr/> in pixels,<wbr/> based on OIS samples.<wbr/>
31134A positive value is a shift from left to right in the pre-correction active array
31135coordinate system.<wbr/> For example,<wbr/> if the optical center is (1000,<wbr/> 500) in pre-correction
31136active array coordinates,<wbr/> a shift of (3,<wbr/> 0) puts the new optical center at (1003,<wbr/> 500).<wbr/></p>
31137<p>The number of shifts must match the number of timestamps in
31138<a href="#dynamic_android.statistics.oisTimestamps">android.<wbr/>statistics.<wbr/>ois<wbr/>Timestamps</a>.<wbr/></p>
31139<p>The OIS samples are not affected by whether lens distortion correction is enabled (on
31140supporting devices).<wbr/> They are always reported in pre-correction active array coordinates,<wbr/>
31141since the scaling of OIS shifts would depend on the specific spot on the sensor the shift
31142is needed.<wbr/></p>
31143            </td>
31144          </tr>
31145
31146
31147          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
31148           <!-- end of entry -->
31149
31150
31151          <tr class="entry" id="dynamic_android.statistics.oisYShifts">
31152            <td class="entry_name
31153             " rowspan="3">
31154              android.<wbr/>statistics.<wbr/>ois<wbr/>YShifts
31155            </td>
31156            <td class="entry_type">
31157                <span class="entry_type_name">float</span>
31158                <span class="entry_type_container">x</span>
31159
31160                <span class="entry_type_array">
31161                  n
31162                </span>
31163              <span class="entry_type_visibility"> [ndk_public]</span>
31164
31165
31166
31167
31168
31169
31170            </td> <!-- entry_type -->
31171
31172            <td class="entry_description">
31173              <p>An array of shifts of OIS samples,<wbr/> in y direction.<wbr/></p>
31174            </td>
31175
31176            <td class="entry_units">
31177              Pixels in active array.<wbr/>
31178            </td>
31179
31180            <td class="entry_range">
31181            </td>
31182
31183            <td class="entry_hal_version">
31184              <p>3.<wbr/>3</p>
31185            </td>
31186
31187            <td class="entry_tags">
31188            </td>
31189
31190          </tr>
31191          <tr class="entries_header">
31192            <th class="th_details" colspan="6">Details</th>
31193          </tr>
31194          <tr class="entry_cont">
31195            <td class="entry_details" colspan="6">
31196              <p>The array contains the amount of shifts in y direction,<wbr/> in pixels,<wbr/> based on OIS samples.<wbr/>
31197A positive value is a shift from top to bottom in pre-correction active array coordinate
31198system.<wbr/> For example,<wbr/> if the optical center is (1000,<wbr/> 500) in active array coordinates,<wbr/> a
31199shift of (0,<wbr/> 5) puts the new optical center at (1000,<wbr/> 505).<wbr/></p>
31200<p>The number of shifts must match the number of timestamps in
31201<a href="#dynamic_android.statistics.oisTimestamps">android.<wbr/>statistics.<wbr/>ois<wbr/>Timestamps</a>.<wbr/></p>
31202<p>The OIS samples are not affected by whether lens distortion correction is enabled (on
31203supporting devices).<wbr/> They are always reported in pre-correction active array coordinates,<wbr/>
31204since the scaling of OIS shifts would depend on the specific spot on the sensor the shift
31205is needed.<wbr/></p>
31206            </td>
31207          </tr>
31208
31209
31210          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
31211           <!-- end of entry -->
31212
31213
31214          <tr class="entry" id="dynamic_android.statistics.oisSamples">
31215            <td class="entry_name
31216             " rowspan="3">
31217              android.<wbr/>statistics.<wbr/>ois<wbr/>Samples
31218            </td>
31219            <td class="entry_type">
31220                <span class="entry_type_name">float</span>
31221                <span class="entry_type_container">x</span>
31222
31223                <span class="entry_type_array">
31224                  n
31225                </span>
31226              <span class="entry_type_visibility"> [java_public as oisSample]</span>
31227
31228              <span class="entry_type_synthetic">[synthetic] </span>
31229
31230
31231
31232
31233
31234            </td> <!-- entry_type -->
31235
31236            <td class="entry_description">
31237              <p>An array of optical stabilization (OIS) position samples.<wbr/></p>
31238            </td>
31239
31240            <td class="entry_units">
31241            </td>
31242
31243            <td class="entry_range">
31244            </td>
31245
31246            <td class="entry_hal_version">
31247              <p>3.<wbr/>3</p>
31248            </td>
31249
31250            <td class="entry_tags">
31251            </td>
31252
31253          </tr>
31254          <tr class="entries_header">
31255            <th class="th_details" colspan="6">Details</th>
31256          </tr>
31257          <tr class="entry_cont">
31258            <td class="entry_details" colspan="6">
31259              <p>Each OIS sample contains the timestamp and the amount of shifts in x and y direction,<wbr/>
31260in pixels,<wbr/> of the OIS sample.<wbr/></p>
31261<p>A positive value for a shift in x direction is a shift from left to right in the
31262pre-correction active array coordinate system.<wbr/> For example,<wbr/> if the optical center is
31263(1000,<wbr/> 500) in pre-correction active array coordinates,<wbr/> a shift of (3,<wbr/> 0) puts the new
31264optical center at (1003,<wbr/> 500).<wbr/></p>
31265<p>A positive value for a shift in y direction is a shift from top to bottom in
31266pre-correction active array coordinate system.<wbr/> For example,<wbr/> if the optical center is
31267(1000,<wbr/> 500) in active array coordinates,<wbr/> a shift of (0,<wbr/> 5) puts the new optical center at
31268(1000,<wbr/> 505).<wbr/></p>
31269<p>The OIS samples are not affected by whether lens distortion correction is enabled (on
31270supporting devices).<wbr/> They are always reported in pre-correction active array coordinates,<wbr/>
31271since the scaling of OIS shifts would depend on the specific spot on the sensor the shift
31272is needed.<wbr/></p>
31273            </td>
31274          </tr>
31275
31276
31277          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
31278           <!-- end of entry -->
31279
31280
31281
31282      <!-- end of kind -->
31283      </tbody>
31284
31285  <!-- end of section -->
31286  <tr><td colspan="7" id="section_tonemap" class="section">tonemap</td></tr>
31287
31288
31289      <tr><td colspan="7" class="kind">controls</td></tr>
31290
31291      <thead class="entries_header">
31292        <tr>
31293          <th class="th_name">Property Name</th>
31294          <th class="th_type">Type</th>
31295          <th class="th_description">Description</th>
31296          <th class="th_units">Units</th>
31297          <th class="th_range">Range</th>
31298          <th class="th_hal_version">Initial HIDL HAL version</th>
31299          <th class="th_tags">Tags</th>
31300        </tr>
31301      </thead>
31302
31303      <tbody>
31304
31305
31306
31307
31308
31309
31310
31311
31312
31313
31314          <tr class="entry" id="controls_android.tonemap.curveBlue">
31315            <td class="entry_name
31316             " rowspan="3">
31317              android.<wbr/>tonemap.<wbr/>curve<wbr/>Blue
31318            </td>
31319            <td class="entry_type">
31320                <span class="entry_type_name">float</span>
31321                <span class="entry_type_container">x</span>
31322
31323                <span class="entry_type_array">
31324                  n x 2
31325                </span>
31326              <span class="entry_type_visibility"> [ndk_public]</span>
31327
31328
31329              <span class="entry_type_hwlevel">[full] </span>
31330
31331
31332                <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>
31333
31334
31335            </td> <!-- entry_type -->
31336
31337            <td class="entry_description">
31338              <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the blue
31339channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
31340CONTRAST_<wbr/>CURVE.<wbr/></p>
31341            </td>
31342
31343            <td class="entry_units">
31344            </td>
31345
31346            <td class="entry_range">
31347            </td>
31348
31349            <td class="entry_hal_version">
31350              <p>3.<wbr/>2</p>
31351            </td>
31352
31353            <td class="entry_tags">
31354            </td>
31355
31356          </tr>
31357          <tr class="entries_header">
31358            <th class="th_details" colspan="6">Details</th>
31359          </tr>
31360          <tr class="entry_cont">
31361            <td class="entry_details" colspan="6">
31362              <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
31363            </td>
31364          </tr>
31365
31366
31367          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
31368           <!-- end of entry -->
31369
31370
31371          <tr class="entry" id="controls_android.tonemap.curveGreen">
31372            <td class="entry_name
31373             " rowspan="3">
31374              android.<wbr/>tonemap.<wbr/>curve<wbr/>Green
31375            </td>
31376            <td class="entry_type">
31377                <span class="entry_type_name">float</span>
31378                <span class="entry_type_container">x</span>
31379
31380                <span class="entry_type_array">
31381                  n x 2
31382                </span>
31383              <span class="entry_type_visibility"> [ndk_public]</span>
31384
31385
31386              <span class="entry_type_hwlevel">[full] </span>
31387
31388
31389                <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>
31390
31391
31392            </td> <!-- entry_type -->
31393
31394            <td class="entry_description">
31395              <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the green
31396channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
31397CONTRAST_<wbr/>CURVE.<wbr/></p>
31398            </td>
31399
31400            <td class="entry_units">
31401            </td>
31402
31403            <td class="entry_range">
31404            </td>
31405
31406            <td class="entry_hal_version">
31407              <p>3.<wbr/>2</p>
31408            </td>
31409
31410            <td class="entry_tags">
31411            </td>
31412
31413          </tr>
31414          <tr class="entries_header">
31415            <th class="th_details" colspan="6">Details</th>
31416          </tr>
31417          <tr class="entry_cont">
31418            <td class="entry_details" colspan="6">
31419              <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
31420            </td>
31421          </tr>
31422
31423
31424          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
31425           <!-- end of entry -->
31426
31427
31428          <tr class="entry" id="controls_android.tonemap.curveRed">
31429            <td class="entry_name
31430             " rowspan="5">
31431              android.<wbr/>tonemap.<wbr/>curve<wbr/>Red
31432            </td>
31433            <td class="entry_type">
31434                <span class="entry_type_name">float</span>
31435                <span class="entry_type_container">x</span>
31436
31437                <span class="entry_type_array">
31438                  n x 2
31439                </span>
31440              <span class="entry_type_visibility"> [ndk_public]</span>
31441
31442
31443              <span class="entry_type_hwlevel">[full] </span>
31444
31445
31446                <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>
31447
31448
31449            </td> <!-- entry_type -->
31450
31451            <td class="entry_description">
31452              <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the red
31453channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
31454CONTRAST_<wbr/>CURVE.<wbr/></p>
31455            </td>
31456
31457            <td class="entry_units">
31458            </td>
31459
31460            <td class="entry_range">
31461              <p>0-1 on both input and output coordinates,<wbr/> normalized
31462as a floating-point value such that 0 == black and 1 == white.<wbr/></p>
31463            </td>
31464
31465            <td class="entry_hal_version">
31466              <p>3.<wbr/>2</p>
31467            </td>
31468
31469            <td class="entry_tags">
31470            </td>
31471
31472          </tr>
31473          <tr class="entries_header">
31474            <th class="th_details" colspan="6">Details</th>
31475          </tr>
31476          <tr class="entry_cont">
31477            <td class="entry_details" colspan="6">
31478              <p>Each channel's curve is defined by an array of control points:</p>
31479<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> =
31480  [ P0in,<wbr/> P0out,<wbr/> P1in,<wbr/> P1out,<wbr/> P2in,<wbr/> P2out,<wbr/> P3in,<wbr/> P3out,<wbr/> ...,<wbr/> PNin,<wbr/> PNout ]
314812 &lt;= N &lt;= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
31482<p>These are sorted in order of increasing <code>Pin</code>; it is
31483required that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
31484define a complete mapping.<wbr/> For input values between control points,<wbr/>
31485the camera device must linearly interpolate between the control
31486points.<wbr/></p>
31487<p>Each curve can have an independent number of points,<wbr/> and the number
31488of points can be less than max (that is,<wbr/> the request doesn't have to
31489always provide a curve with number of points equivalent to
31490<a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
31491<p>For devices with MONOCHROME capability,<wbr/> all three channels must have the same set of
31492control points.<wbr/></p>
31493<p>A few examples,<wbr/> and their corresponding graphical mappings; these
31494only specify the red channel and the precision is limited to 4
31495digits,<wbr/> for conciseness.<wbr/></p>
31496<p>Linear mapping:</p>
31497<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 ]
31498</code></pre>
31499<p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
31500<p>Invert mapping:</p>
31501<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 ]
31502</code></pre>
31503<p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
31504<p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
31505<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
31506  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/>
31507  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/>
31508  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/>
31509  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 ]
31510</code></pre>
31511<p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
31512<p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
31513<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
31514  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/>
31515  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/>
31516  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/>
31517  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 ]
31518</code></pre>
31519<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
31520            </td>
31521          </tr>
31522
31523          <tr class="entries_header">
31524            <th class="th_details" colspan="6">HAL Implementation Details</th>
31525          </tr>
31526          <tr class="entry_cont">
31527            <td class="entry_details" colspan="6">
31528              <p>For good quality of mapping,<wbr/> at least 128 control points are
31529preferred.<wbr/></p>
31530<p>A typical use case of this would be a gamma-1/<wbr/>2.<wbr/>2 curve,<wbr/> with as many
31531control points used as are available.<wbr/></p>
31532            </td>
31533          </tr>
31534
31535          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
31536           <!-- end of entry -->
31537
31538
31539          <tr class="entry" id="controls_android.tonemap.curve">
31540            <td class="entry_name
31541             " rowspan="5">
31542              android.<wbr/>tonemap.<wbr/>curve
31543            </td>
31544            <td class="entry_type">
31545                <span class="entry_type_name">float</span>
31546
31547              <span class="entry_type_visibility"> [java_public as tonemapCurve]</span>
31548
31549              <span class="entry_type_synthetic">[synthetic] </span>
31550
31551              <span class="entry_type_hwlevel">[full] </span>
31552
31553
31554
31555
31556            </td> <!-- entry_type -->
31557
31558            <td class="entry_description">
31559              <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a>
31560is CONTRAST_<wbr/>CURVE.<wbr/></p>
31561            </td>
31562
31563            <td class="entry_units">
31564            </td>
31565
31566            <td class="entry_range">
31567            </td>
31568
31569            <td class="entry_hal_version">
31570              <p>3.<wbr/>2</p>
31571            </td>
31572
31573            <td class="entry_tags">
31574            </td>
31575
31576          </tr>
31577          <tr class="entries_header">
31578            <th class="th_details" colspan="6">Details</th>
31579          </tr>
31580          <tr class="entry_cont">
31581            <td class="entry_details" colspan="6">
31582              <p>The tonemapCurve consist of three curves for each of red,<wbr/> green,<wbr/> and blue
31583channels respectively.<wbr/> The following example uses the red channel as an
31584example.<wbr/> The same logic applies to green and blue channel.<wbr/>
31585Each channel's curve is defined by an array of control points:</p>
31586<pre><code>curveRed =
31587  [ 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) ]
315882 &lt;= N &lt;= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
31589<p>These are sorted in order of increasing <code>Pin</code>; it is always
31590guaranteed that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
31591define a complete mapping.<wbr/> For input values between control points,<wbr/>
31592the camera device must linearly interpolate between the control
31593points.<wbr/></p>
31594<p>Each curve can have an independent number of points,<wbr/> and the number
31595of points can be less than max (that is,<wbr/> the request doesn't have to
31596always provide a curve with number of points equivalent to
31597<a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
31598<p>For devices with MONOCHROME capability,<wbr/> all three channels must have the same set of
31599control points.<wbr/></p>
31600<p>A few examples,<wbr/> and their corresponding graphical mappings; these
31601only specify the red channel and the precision is limited to 4
31602digits,<wbr/> for conciseness.<wbr/></p>
31603<p>Linear mapping:</p>
31604<pre><code>curveRed = [ (0,<wbr/> 0),<wbr/> (1.<wbr/>0,<wbr/> 1.<wbr/>0) ]
31605</code></pre>
31606<p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
31607<p>Invert mapping:</p>
31608<pre><code>curveRed = [ (0,<wbr/> 1.<wbr/>0),<wbr/> (1.<wbr/>0,<wbr/> 0) ]
31609</code></pre>
31610<p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
31611<p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
31612<pre><code>curveRed = [
31613  (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/>
31614  (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/>
31615  (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/>
31616  (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) ]
31617</code></pre>
31618<p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
31619<p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
31620<pre><code>curveRed = [
31621  (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/>
31622  (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/>
31623  (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/>
31624  (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) ]
31625</code></pre>
31626<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
31627            </td>
31628          </tr>
31629
31630          <tr class="entries_header">
31631            <th class="th_details" colspan="6">HAL Implementation Details</th>
31632          </tr>
31633          <tr class="entry_cont">
31634            <td class="entry_details" colspan="6">
31635              <p>This entry is created by the framework from the curveRed,<wbr/> curveGreen and
31636curveBlue entries.<wbr/></p>
31637            </td>
31638          </tr>
31639
31640          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
31641           <!-- end of entry -->
31642
31643
31644          <tr class="entry" id="controls_android.tonemap.mode">
31645            <td class="entry_name
31646             " rowspan="3">
31647              android.<wbr/>tonemap.<wbr/>mode
31648            </td>
31649            <td class="entry_type">
31650                <span class="entry_type_name entry_type_name_enum">byte</span>
31651
31652              <span class="entry_type_visibility"> [public]</span>
31653
31654
31655              <span class="entry_type_hwlevel">[full] </span>
31656
31657
31658
31659                <ul class="entry_type_enum">
31660                  <li>
31661                    <span class="entry_type_enum_name">CONTRAST_CURVE (v3.2)</span>
31662                    <span class="entry_type_enum_notes"><p>Use the tone mapping curve specified in
31663the <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>* entries.<wbr/></p>
31664<p>All color enhancement and tonemapping must be disabled,<wbr/> except
31665for applying the tonemapping curve specified by
31666<a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p>
31667<p>Must not slow down frame rate relative to raw
31668sensor output.<wbr/></p></span>
31669                  </li>
31670                  <li>
31671                    <span class="entry_type_enum_name">FAST (v3.2)</span>
31672                    <span class="entry_type_enum_notes"><p>Advanced gamma mapping and color enhancement may be applied,<wbr/> without
31673reducing frame rate compared to raw sensor output.<wbr/></p></span>
31674                  </li>
31675                  <li>
31676                    <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
31677                    <span class="entry_type_enum_notes"><p>High-quality gamma mapping and color enhancement will be applied,<wbr/> at
31678the cost of possibly reduced frame rate compared to raw sensor output.<wbr/></p></span>
31679                  </li>
31680                  <li>
31681                    <span class="entry_type_enum_name">GAMMA_VALUE (v3.2)</span>
31682                    <span class="entry_type_enum_notes"><p>Use the gamma value specified in <a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a> to peform
31683tonemapping.<wbr/></p>
31684<p>All color enhancement and tonemapping must be disabled,<wbr/> except
31685for applying the tonemapping curve specified by <a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a>.<wbr/></p>
31686<p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
31687                  </li>
31688                  <li>
31689                    <span class="entry_type_enum_name">PRESET_CURVE (v3.2)</span>
31690                    <span class="entry_type_enum_notes"><p>Use the preset tonemapping curve specified in
31691<a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a> to peform tonemapping.<wbr/></p>
31692<p>All color enhancement and tonemapping must be disabled,<wbr/> except
31693for applying the tonemapping curve specified by
31694<a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a>.<wbr/></p>
31695<p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
31696                  </li>
31697                </ul>
31698
31699            </td> <!-- entry_type -->
31700
31701            <td class="entry_description">
31702              <p>High-level global contrast/<wbr/>gamma/<wbr/>tonemapping control.<wbr/></p>
31703            </td>
31704
31705            <td class="entry_units">
31706            </td>
31707
31708            <td class="entry_range">
31709              <p><a href="#static_android.tonemap.availableToneMapModes">android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes</a></p>
31710            </td>
31711
31712            <td class="entry_hal_version">
31713              <p>3.<wbr/>2</p>
31714            </td>
31715
31716            <td class="entry_tags">
31717            </td>
31718
31719          </tr>
31720          <tr class="entries_header">
31721            <th class="th_details" colspan="6">Details</th>
31722          </tr>
31723          <tr class="entry_cont">
31724            <td class="entry_details" colspan="6">
31725              <p>When switching to an application-defined contrast curve by setting
31726<a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> to CONTRAST_<wbr/>CURVE,<wbr/> the curve is defined
31727per-channel with a set of <code>(in,<wbr/> out)</code> points that specify the
31728mapping from input high-bit-depth pixel value to the output
31729low-bit-depth value.<wbr/>  Since the actual pixel ranges of both input
31730and output may change depending on the camera pipeline,<wbr/> the values
31731are specified by normalized floating-point numbers.<wbr/></p>
31732<p>More-complex color mapping operations such as 3D color look-up
31733tables,<wbr/> selective chroma enhancement,<wbr/> or other non-linear color
31734transforms will be disabled when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
31735CONTRAST_<wbr/>CURVE.<wbr/></p>
31736<p>When using either FAST or HIGH_<wbr/>QUALITY,<wbr/> the camera device will
31737emit its own tonemap curve in <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/>
31738These values are always available,<wbr/> and as close as possible to the
31739actually used nonlinear/<wbr/>nonglobal transforms.<wbr/></p>
31740<p>If a request is sent with CONTRAST_<wbr/>CURVE with the camera device's
31741provided curve in FAST or HIGH_<wbr/>QUALITY,<wbr/> the image's tonemap will be
31742roughly the same.<wbr/></p>
31743            </td>
31744          </tr>
31745
31746
31747          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
31748           <!-- end of entry -->
31749
31750
31751          <tr class="entry" id="controls_android.tonemap.gamma">
31752            <td class="entry_name
31753             " rowspan="3">
31754              android.<wbr/>tonemap.<wbr/>gamma
31755            </td>
31756            <td class="entry_type">
31757                <span class="entry_type_name">float</span>
31758
31759              <span class="entry_type_visibility"> [public]</span>
31760
31761
31762
31763
31764
31765
31766            </td> <!-- entry_type -->
31767
31768            <td class="entry_description">
31769              <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
31770GAMMA_<wbr/>VALUE</p>
31771            </td>
31772
31773            <td class="entry_units">
31774            </td>
31775
31776            <td class="entry_range">
31777            </td>
31778
31779            <td class="entry_hal_version">
31780              <p>3.<wbr/>2</p>
31781            </td>
31782
31783            <td class="entry_tags">
31784            </td>
31785
31786          </tr>
31787          <tr class="entries_header">
31788            <th class="th_details" colspan="6">Details</th>
31789          </tr>
31790          <tr class="entry_cont">
31791            <td class="entry_details" colspan="6">
31792              <p>The tonemap curve will be defined the following formula:
31793* OUT = pow(IN,<wbr/> 1.<wbr/>0 /<wbr/> gamma)
31794where IN and OUT is the input pixel value scaled to range [0.<wbr/>0,<wbr/> 1.<wbr/>0],<wbr/>
31795pow is the power function and gamma is the gamma value specified by this
31796key.<wbr/></p>
31797<p>The same curve will be applied to all color channels.<wbr/> The camera device
31798may clip the input gamma value to its supported range.<wbr/> The actual applied
31799value will be returned in capture result.<wbr/></p>
31800<p>The valid range of gamma value varies on different devices,<wbr/> but values
31801within [1.<wbr/>0,<wbr/> 5.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
31802            </td>
31803          </tr>
31804
31805
31806          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
31807           <!-- end of entry -->
31808
31809
31810          <tr class="entry" id="controls_android.tonemap.presetCurve">
31811            <td class="entry_name
31812             " rowspan="3">
31813              android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve
31814            </td>
31815            <td class="entry_type">
31816                <span class="entry_type_name entry_type_name_enum">byte</span>
31817
31818              <span class="entry_type_visibility"> [public]</span>
31819
31820
31821
31822
31823
31824                <ul class="entry_type_enum">
31825                  <li>
31826                    <span class="entry_type_enum_name">SRGB (v3.2)</span>
31827                    <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by sRGB</p></span>
31828                  </li>
31829                  <li>
31830                    <span class="entry_type_enum_name">REC709 (v3.2)</span>
31831                    <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by ITU-R BT.<wbr/>709</p></span>
31832                  </li>
31833                </ul>
31834
31835            </td> <!-- entry_type -->
31836
31837            <td class="entry_description">
31838              <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
31839PRESET_<wbr/>CURVE</p>
31840            </td>
31841
31842            <td class="entry_units">
31843            </td>
31844
31845            <td class="entry_range">
31846            </td>
31847
31848            <td class="entry_hal_version">
31849              <p>3.<wbr/>2</p>
31850            </td>
31851
31852            <td class="entry_tags">
31853            </td>
31854
31855          </tr>
31856          <tr class="entries_header">
31857            <th class="th_details" colspan="6">Details</th>
31858          </tr>
31859          <tr class="entry_cont">
31860            <td class="entry_details" colspan="6">
31861              <p>The tonemap curve will be defined by specified standard.<wbr/></p>
31862<p>sRGB (approximated by 16 control points):</p>
31863<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
31864<p>Rec.<wbr/> 709 (approximated by 16 control points):</p>
31865<p><img alt="Rec. 709 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/rec709_tonemap.png"/></p>
31866<p>Note that above figures show a 16 control points approximation of preset
31867curves.<wbr/> Camera devices may apply a different approximation to the curve.<wbr/></p>
31868            </td>
31869          </tr>
31870
31871
31872          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
31873           <!-- end of entry -->
31874
31875
31876
31877      <!-- end of kind -->
31878      </tbody>
31879      <tr><td colspan="7" class="kind">static</td></tr>
31880
31881      <thead class="entries_header">
31882        <tr>
31883          <th class="th_name">Property Name</th>
31884          <th class="th_type">Type</th>
31885          <th class="th_description">Description</th>
31886          <th class="th_units">Units</th>
31887          <th class="th_range">Range</th>
31888          <th class="th_hal_version">Initial HIDL HAL version</th>
31889          <th class="th_tags">Tags</th>
31890        </tr>
31891      </thead>
31892
31893      <tbody>
31894
31895
31896
31897
31898
31899
31900
31901
31902
31903
31904          <tr class="entry" id="static_android.tonemap.maxCurvePoints">
31905            <td class="entry_name
31906             " rowspan="5">
31907              android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points
31908            </td>
31909            <td class="entry_type">
31910                <span class="entry_type_name">int32</span>
31911
31912              <span class="entry_type_visibility"> [public]</span>
31913
31914
31915              <span class="entry_type_hwlevel">[full] </span>
31916
31917
31918
31919
31920            </td> <!-- entry_type -->
31921
31922            <td class="entry_description">
31923              <p>Maximum number of supported points in the
31924tonemap curve that can be used for <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p>
31925            </td>
31926
31927            <td class="entry_units">
31928            </td>
31929
31930            <td class="entry_range">
31931            </td>
31932
31933            <td class="entry_hal_version">
31934              <p>3.<wbr/>2</p>
31935            </td>
31936
31937            <td class="entry_tags">
31938            </td>
31939
31940          </tr>
31941          <tr class="entries_header">
31942            <th class="th_details" colspan="6">Details</th>
31943          </tr>
31944          <tr class="entry_cont">
31945            <td class="entry_details" colspan="6">
31946              <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
31947less than this maximum,<wbr/> the camera device will resample the curve to its internal
31948representation,<wbr/> using linear interpolation.<wbr/></p>
31949<p>The output curves in the result metadata may have a different number
31950of points than the input curves,<wbr/> and will represent the actual
31951hardware curves used as closely as possible when linearly interpolated.<wbr/></p>
31952            </td>
31953          </tr>
31954
31955          <tr class="entries_header">
31956            <th class="th_details" colspan="6">HAL Implementation Details</th>
31957          </tr>
31958          <tr class="entry_cont">
31959            <td class="entry_details" colspan="6">
31960              <p>This value must be at least 64.<wbr/> This should be at least 128.<wbr/></p>
31961            </td>
31962          </tr>
31963
31964          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
31965           <!-- end of entry -->
31966
31967
31968          <tr class="entry" id="static_android.tonemap.availableToneMapModes">
31969            <td class="entry_name
31970             " rowspan="5">
31971              android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes
31972            </td>
31973            <td class="entry_type">
31974                <span class="entry_type_name">byte</span>
31975                <span class="entry_type_container">x</span>
31976
31977                <span class="entry_type_array">
31978                  n
31979                </span>
31980              <span class="entry_type_visibility"> [public as enumList]</span>
31981
31982
31983              <span class="entry_type_hwlevel">[full] </span>
31984
31985
31986                <div class="entry_type_notes">list of enums</div>
31987
31988
31989            </td> <!-- entry_type -->
31990
31991            <td class="entry_description">
31992              <p>List of tonemapping modes for <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> that are supported by this camera
31993device.<wbr/></p>
31994            </td>
31995
31996            <td class="entry_units">
31997            </td>
31998
31999            <td class="entry_range">
32000              <p>Any value listed in <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a></p>
32001            </td>
32002
32003            <td class="entry_hal_version">
32004              <p>3.<wbr/>2</p>
32005            </td>
32006
32007            <td class="entry_tags">
32008            </td>
32009
32010          </tr>
32011          <tr class="entries_header">
32012            <th class="th_details" colspan="6">Details</th>
32013          </tr>
32014          <tr class="entry_cont">
32015            <td class="entry_details" colspan="6">
32016              <p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always contain
32017at least one of below mode combinations:</p>
32018<ul>
32019<li>CONTRAST_<wbr/>CURVE,<wbr/> FAST and HIGH_<wbr/>QUALITY</li>
32020<li>GAMMA_<wbr/>VALUE,<wbr/> PRESET_<wbr/>CURVE,<wbr/> FAST and HIGH_<wbr/>QUALITY</li>
32021</ul>
32022<p>This includes all FULL level devices.<wbr/></p>
32023            </td>
32024          </tr>
32025
32026          <tr class="entries_header">
32027            <th class="th_details" colspan="6">HAL Implementation Details</th>
32028          </tr>
32029          <tr class="entry_cont">
32030            <td class="entry_details" colspan="6">
32031              <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if automatic tonemap control is available
32032on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
32033That is,<wbr/> if the highest quality implementation on the camera device does not slow down
32034capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
32035            </td>
32036          </tr>
32037
32038          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
32039           <!-- end of entry -->
32040
32041
32042
32043      <!-- end of kind -->
32044      </tbody>
32045      <tr><td colspan="7" class="kind">dynamic</td></tr>
32046
32047      <thead class="entries_header">
32048        <tr>
32049          <th class="th_name">Property Name</th>
32050          <th class="th_type">Type</th>
32051          <th class="th_description">Description</th>
32052          <th class="th_units">Units</th>
32053          <th class="th_range">Range</th>
32054          <th class="th_hal_version">Initial HIDL HAL version</th>
32055          <th class="th_tags">Tags</th>
32056        </tr>
32057      </thead>
32058
32059      <tbody>
32060
32061
32062
32063
32064
32065
32066
32067
32068
32069
32070          <tr class="entry" id="dynamic_android.tonemap.curveBlue">
32071            <td class="entry_name
32072             " rowspan="3">
32073              android.<wbr/>tonemap.<wbr/>curve<wbr/>Blue
32074            </td>
32075            <td class="entry_type">
32076                <span class="entry_type_name">float</span>
32077                <span class="entry_type_container">x</span>
32078
32079                <span class="entry_type_array">
32080                  n x 2
32081                </span>
32082              <span class="entry_type_visibility"> [ndk_public]</span>
32083
32084
32085              <span class="entry_type_hwlevel">[full] </span>
32086
32087
32088                <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>
32089
32090
32091            </td> <!-- entry_type -->
32092
32093            <td class="entry_description">
32094              <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the blue
32095channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
32096CONTRAST_<wbr/>CURVE.<wbr/></p>
32097            </td>
32098
32099            <td class="entry_units">
32100            </td>
32101
32102            <td class="entry_range">
32103            </td>
32104
32105            <td class="entry_hal_version">
32106              <p>3.<wbr/>2</p>
32107            </td>
32108
32109            <td class="entry_tags">
32110            </td>
32111
32112          </tr>
32113          <tr class="entries_header">
32114            <th class="th_details" colspan="6">Details</th>
32115          </tr>
32116          <tr class="entry_cont">
32117            <td class="entry_details" colspan="6">
32118              <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
32119            </td>
32120          </tr>
32121
32122
32123          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
32124           <!-- end of entry -->
32125
32126
32127          <tr class="entry" id="dynamic_android.tonemap.curveGreen">
32128            <td class="entry_name
32129             " rowspan="3">
32130              android.<wbr/>tonemap.<wbr/>curve<wbr/>Green
32131            </td>
32132            <td class="entry_type">
32133                <span class="entry_type_name">float</span>
32134                <span class="entry_type_container">x</span>
32135
32136                <span class="entry_type_array">
32137                  n x 2
32138                </span>
32139              <span class="entry_type_visibility"> [ndk_public]</span>
32140
32141
32142              <span class="entry_type_hwlevel">[full] </span>
32143
32144
32145                <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>
32146
32147
32148            </td> <!-- entry_type -->
32149
32150            <td class="entry_description">
32151              <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the green
32152channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
32153CONTRAST_<wbr/>CURVE.<wbr/></p>
32154            </td>
32155
32156            <td class="entry_units">
32157            </td>
32158
32159            <td class="entry_range">
32160            </td>
32161
32162            <td class="entry_hal_version">
32163              <p>3.<wbr/>2</p>
32164            </td>
32165
32166            <td class="entry_tags">
32167            </td>
32168
32169          </tr>
32170          <tr class="entries_header">
32171            <th class="th_details" colspan="6">Details</th>
32172          </tr>
32173          <tr class="entry_cont">
32174            <td class="entry_details" colspan="6">
32175              <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
32176            </td>
32177          </tr>
32178
32179
32180          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
32181           <!-- end of entry -->
32182
32183
32184          <tr class="entry" id="dynamic_android.tonemap.curveRed">
32185            <td class="entry_name
32186             " rowspan="5">
32187              android.<wbr/>tonemap.<wbr/>curve<wbr/>Red
32188            </td>
32189            <td class="entry_type">
32190                <span class="entry_type_name">float</span>
32191                <span class="entry_type_container">x</span>
32192
32193                <span class="entry_type_array">
32194                  n x 2
32195                </span>
32196              <span class="entry_type_visibility"> [ndk_public]</span>
32197
32198
32199              <span class="entry_type_hwlevel">[full] </span>
32200
32201
32202                <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>
32203
32204
32205            </td> <!-- entry_type -->
32206
32207            <td class="entry_description">
32208              <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the red
32209channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
32210CONTRAST_<wbr/>CURVE.<wbr/></p>
32211            </td>
32212
32213            <td class="entry_units">
32214            </td>
32215
32216            <td class="entry_range">
32217              <p>0-1 on both input and output coordinates,<wbr/> normalized
32218as a floating-point value such that 0 == black and 1 == white.<wbr/></p>
32219            </td>
32220
32221            <td class="entry_hal_version">
32222              <p>3.<wbr/>2</p>
32223            </td>
32224
32225            <td class="entry_tags">
32226            </td>
32227
32228          </tr>
32229          <tr class="entries_header">
32230            <th class="th_details" colspan="6">Details</th>
32231          </tr>
32232          <tr class="entry_cont">
32233            <td class="entry_details" colspan="6">
32234              <p>Each channel's curve is defined by an array of control points:</p>
32235<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> =
32236  [ P0in,<wbr/> P0out,<wbr/> P1in,<wbr/> P1out,<wbr/> P2in,<wbr/> P2out,<wbr/> P3in,<wbr/> P3out,<wbr/> ...,<wbr/> PNin,<wbr/> PNout ]
322372 &lt;= N &lt;= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
32238<p>These are sorted in order of increasing <code>Pin</code>; it is
32239required that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
32240define a complete mapping.<wbr/> For input values between control points,<wbr/>
32241the camera device must linearly interpolate between the control
32242points.<wbr/></p>
32243<p>Each curve can have an independent number of points,<wbr/> and the number
32244of points can be less than max (that is,<wbr/> the request doesn't have to
32245always provide a curve with number of points equivalent to
32246<a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
32247<p>For devices with MONOCHROME capability,<wbr/> all three channels must have the same set of
32248control points.<wbr/></p>
32249<p>A few examples,<wbr/> and their corresponding graphical mappings; these
32250only specify the red channel and the precision is limited to 4
32251digits,<wbr/> for conciseness.<wbr/></p>
32252<p>Linear mapping:</p>
32253<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 ]
32254</code></pre>
32255<p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
32256<p>Invert mapping:</p>
32257<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 ]
32258</code></pre>
32259<p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
32260<p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
32261<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
32262  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/>
32263  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/>
32264  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/>
32265  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 ]
32266</code></pre>
32267<p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
32268<p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
32269<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
32270  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/>
32271  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/>
32272  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/>
32273  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 ]
32274</code></pre>
32275<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
32276            </td>
32277          </tr>
32278
32279          <tr class="entries_header">
32280            <th class="th_details" colspan="6">HAL Implementation Details</th>
32281          </tr>
32282          <tr class="entry_cont">
32283            <td class="entry_details" colspan="6">
32284              <p>For good quality of mapping,<wbr/> at least 128 control points are
32285preferred.<wbr/></p>
32286<p>A typical use case of this would be a gamma-1/<wbr/>2.<wbr/>2 curve,<wbr/> with as many
32287control points used as are available.<wbr/></p>
32288            </td>
32289          </tr>
32290
32291          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
32292           <!-- end of entry -->
32293
32294
32295          <tr class="entry" id="dynamic_android.tonemap.curve">
32296            <td class="entry_name
32297             " rowspan="5">
32298              android.<wbr/>tonemap.<wbr/>curve
32299            </td>
32300            <td class="entry_type">
32301                <span class="entry_type_name">float</span>
32302
32303              <span class="entry_type_visibility"> [java_public as tonemapCurve]</span>
32304
32305              <span class="entry_type_synthetic">[synthetic] </span>
32306
32307              <span class="entry_type_hwlevel">[full] </span>
32308
32309
32310
32311
32312            </td> <!-- entry_type -->
32313
32314            <td class="entry_description">
32315              <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a>
32316is CONTRAST_<wbr/>CURVE.<wbr/></p>
32317            </td>
32318
32319            <td class="entry_units">
32320            </td>
32321
32322            <td class="entry_range">
32323            </td>
32324
32325            <td class="entry_hal_version">
32326              <p>3.<wbr/>2</p>
32327            </td>
32328
32329            <td class="entry_tags">
32330            </td>
32331
32332          </tr>
32333          <tr class="entries_header">
32334            <th class="th_details" colspan="6">Details</th>
32335          </tr>
32336          <tr class="entry_cont">
32337            <td class="entry_details" colspan="6">
32338              <p>The tonemapCurve consist of three curves for each of red,<wbr/> green,<wbr/> and blue
32339channels respectively.<wbr/> The following example uses the red channel as an
32340example.<wbr/> The same logic applies to green and blue channel.<wbr/>
32341Each channel's curve is defined by an array of control points:</p>
32342<pre><code>curveRed =
32343  [ 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) ]
323442 &lt;= N &lt;= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
32345<p>These are sorted in order of increasing <code>Pin</code>; it is always
32346guaranteed that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
32347define a complete mapping.<wbr/> For input values between control points,<wbr/>
32348the camera device must linearly interpolate between the control
32349points.<wbr/></p>
32350<p>Each curve can have an independent number of points,<wbr/> and the number
32351of points can be less than max (that is,<wbr/> the request doesn't have to
32352always provide a curve with number of points equivalent to
32353<a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
32354<p>For devices with MONOCHROME capability,<wbr/> all three channels must have the same set of
32355control points.<wbr/></p>
32356<p>A few examples,<wbr/> and their corresponding graphical mappings; these
32357only specify the red channel and the precision is limited to 4
32358digits,<wbr/> for conciseness.<wbr/></p>
32359<p>Linear mapping:</p>
32360<pre><code>curveRed = [ (0,<wbr/> 0),<wbr/> (1.<wbr/>0,<wbr/> 1.<wbr/>0) ]
32361</code></pre>
32362<p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
32363<p>Invert mapping:</p>
32364<pre><code>curveRed = [ (0,<wbr/> 1.<wbr/>0),<wbr/> (1.<wbr/>0,<wbr/> 0) ]
32365</code></pre>
32366<p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
32367<p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
32368<pre><code>curveRed = [
32369  (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/>
32370  (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/>
32371  (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/>
32372  (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) ]
32373</code></pre>
32374<p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
32375<p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
32376<pre><code>curveRed = [
32377  (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/>
32378  (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/>
32379  (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/>
32380  (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) ]
32381</code></pre>
32382<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
32383            </td>
32384          </tr>
32385
32386          <tr class="entries_header">
32387            <th class="th_details" colspan="6">HAL Implementation Details</th>
32388          </tr>
32389          <tr class="entry_cont">
32390            <td class="entry_details" colspan="6">
32391              <p>This entry is created by the framework from the curveRed,<wbr/> curveGreen and
32392curveBlue entries.<wbr/></p>
32393            </td>
32394          </tr>
32395
32396          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
32397           <!-- end of entry -->
32398
32399
32400          <tr class="entry" id="dynamic_android.tonemap.mode">
32401            <td class="entry_name
32402             " rowspan="3">
32403              android.<wbr/>tonemap.<wbr/>mode
32404            </td>
32405            <td class="entry_type">
32406                <span class="entry_type_name entry_type_name_enum">byte</span>
32407
32408              <span class="entry_type_visibility"> [public]</span>
32409
32410
32411              <span class="entry_type_hwlevel">[full] </span>
32412
32413
32414
32415                <ul class="entry_type_enum">
32416                  <li>
32417                    <span class="entry_type_enum_name">CONTRAST_CURVE (v3.2)</span>
32418                    <span class="entry_type_enum_notes"><p>Use the tone mapping curve specified in
32419the <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>* entries.<wbr/></p>
32420<p>All color enhancement and tonemapping must be disabled,<wbr/> except
32421for applying the tonemapping curve specified by
32422<a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p>
32423<p>Must not slow down frame rate relative to raw
32424sensor output.<wbr/></p></span>
32425                  </li>
32426                  <li>
32427                    <span class="entry_type_enum_name">FAST (v3.2)</span>
32428                    <span class="entry_type_enum_notes"><p>Advanced gamma mapping and color enhancement may be applied,<wbr/> without
32429reducing frame rate compared to raw sensor output.<wbr/></p></span>
32430                  </li>
32431                  <li>
32432                    <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
32433                    <span class="entry_type_enum_notes"><p>High-quality gamma mapping and color enhancement will be applied,<wbr/> at
32434the cost of possibly reduced frame rate compared to raw sensor output.<wbr/></p></span>
32435                  </li>
32436                  <li>
32437                    <span class="entry_type_enum_name">GAMMA_VALUE (v3.2)</span>
32438                    <span class="entry_type_enum_notes"><p>Use the gamma value specified in <a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a> to peform
32439tonemapping.<wbr/></p>
32440<p>All color enhancement and tonemapping must be disabled,<wbr/> except
32441for applying the tonemapping curve specified by <a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a>.<wbr/></p>
32442<p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
32443                  </li>
32444                  <li>
32445                    <span class="entry_type_enum_name">PRESET_CURVE (v3.2)</span>
32446                    <span class="entry_type_enum_notes"><p>Use the preset tonemapping curve specified in
32447<a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a> to peform tonemapping.<wbr/></p>
32448<p>All color enhancement and tonemapping must be disabled,<wbr/> except
32449for applying the tonemapping curve specified by
32450<a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a>.<wbr/></p>
32451<p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
32452                  </li>
32453                </ul>
32454
32455            </td> <!-- entry_type -->
32456
32457            <td class="entry_description">
32458              <p>High-level global contrast/<wbr/>gamma/<wbr/>tonemapping control.<wbr/></p>
32459            </td>
32460
32461            <td class="entry_units">
32462            </td>
32463
32464            <td class="entry_range">
32465              <p><a href="#static_android.tonemap.availableToneMapModes">android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes</a></p>
32466            </td>
32467
32468            <td class="entry_hal_version">
32469              <p>3.<wbr/>2</p>
32470            </td>
32471
32472            <td class="entry_tags">
32473            </td>
32474
32475          </tr>
32476          <tr class="entries_header">
32477            <th class="th_details" colspan="6">Details</th>
32478          </tr>
32479          <tr class="entry_cont">
32480            <td class="entry_details" colspan="6">
32481              <p>When switching to an application-defined contrast curve by setting
32482<a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> to CONTRAST_<wbr/>CURVE,<wbr/> the curve is defined
32483per-channel with a set of <code>(in,<wbr/> out)</code> points that specify the
32484mapping from input high-bit-depth pixel value to the output
32485low-bit-depth value.<wbr/>  Since the actual pixel ranges of both input
32486and output may change depending on the camera pipeline,<wbr/> the values
32487are specified by normalized floating-point numbers.<wbr/></p>
32488<p>More-complex color mapping operations such as 3D color look-up
32489tables,<wbr/> selective chroma enhancement,<wbr/> or other non-linear color
32490transforms will be disabled when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
32491CONTRAST_<wbr/>CURVE.<wbr/></p>
32492<p>When using either FAST or HIGH_<wbr/>QUALITY,<wbr/> the camera device will
32493emit its own tonemap curve in <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/>
32494These values are always available,<wbr/> and as close as possible to the
32495actually used nonlinear/<wbr/>nonglobal transforms.<wbr/></p>
32496<p>If a request is sent with CONTRAST_<wbr/>CURVE with the camera device's
32497provided curve in FAST or HIGH_<wbr/>QUALITY,<wbr/> the image's tonemap will be
32498roughly the same.<wbr/></p>
32499            </td>
32500          </tr>
32501
32502
32503          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
32504           <!-- end of entry -->
32505
32506
32507          <tr class="entry" id="dynamic_android.tonemap.gamma">
32508            <td class="entry_name
32509             " rowspan="3">
32510              android.<wbr/>tonemap.<wbr/>gamma
32511            </td>
32512            <td class="entry_type">
32513                <span class="entry_type_name">float</span>
32514
32515              <span class="entry_type_visibility"> [public]</span>
32516
32517
32518
32519
32520
32521
32522            </td> <!-- entry_type -->
32523
32524            <td class="entry_description">
32525              <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
32526GAMMA_<wbr/>VALUE</p>
32527            </td>
32528
32529            <td class="entry_units">
32530            </td>
32531
32532            <td class="entry_range">
32533            </td>
32534
32535            <td class="entry_hal_version">
32536              <p>3.<wbr/>2</p>
32537            </td>
32538
32539            <td class="entry_tags">
32540            </td>
32541
32542          </tr>
32543          <tr class="entries_header">
32544            <th class="th_details" colspan="6">Details</th>
32545          </tr>
32546          <tr class="entry_cont">
32547            <td class="entry_details" colspan="6">
32548              <p>The tonemap curve will be defined the following formula:
32549* OUT = pow(IN,<wbr/> 1.<wbr/>0 /<wbr/> gamma)
32550where IN and OUT is the input pixel value scaled to range [0.<wbr/>0,<wbr/> 1.<wbr/>0],<wbr/>
32551pow is the power function and gamma is the gamma value specified by this
32552key.<wbr/></p>
32553<p>The same curve will be applied to all color channels.<wbr/> The camera device
32554may clip the input gamma value to its supported range.<wbr/> The actual applied
32555value will be returned in capture result.<wbr/></p>
32556<p>The valid range of gamma value varies on different devices,<wbr/> but values
32557within [1.<wbr/>0,<wbr/> 5.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
32558            </td>
32559          </tr>
32560
32561
32562          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
32563           <!-- end of entry -->
32564
32565
32566          <tr class="entry" id="dynamic_android.tonemap.presetCurve">
32567            <td class="entry_name
32568             " rowspan="3">
32569              android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve
32570            </td>
32571            <td class="entry_type">
32572                <span class="entry_type_name entry_type_name_enum">byte</span>
32573
32574              <span class="entry_type_visibility"> [public]</span>
32575
32576
32577
32578
32579
32580                <ul class="entry_type_enum">
32581                  <li>
32582                    <span class="entry_type_enum_name">SRGB (v3.2)</span>
32583                    <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by sRGB</p></span>
32584                  </li>
32585                  <li>
32586                    <span class="entry_type_enum_name">REC709 (v3.2)</span>
32587                    <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by ITU-R BT.<wbr/>709</p></span>
32588                  </li>
32589                </ul>
32590
32591            </td> <!-- entry_type -->
32592
32593            <td class="entry_description">
32594              <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
32595PRESET_<wbr/>CURVE</p>
32596            </td>
32597
32598            <td class="entry_units">
32599            </td>
32600
32601            <td class="entry_range">
32602            </td>
32603
32604            <td class="entry_hal_version">
32605              <p>3.<wbr/>2</p>
32606            </td>
32607
32608            <td class="entry_tags">
32609            </td>
32610
32611          </tr>
32612          <tr class="entries_header">
32613            <th class="th_details" colspan="6">Details</th>
32614          </tr>
32615          <tr class="entry_cont">
32616            <td class="entry_details" colspan="6">
32617              <p>The tonemap curve will be defined by specified standard.<wbr/></p>
32618<p>sRGB (approximated by 16 control points):</p>
32619<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
32620<p>Rec.<wbr/> 709 (approximated by 16 control points):</p>
32621<p><img alt="Rec. 709 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/rec709_tonemap.png"/></p>
32622<p>Note that above figures show a 16 control points approximation of preset
32623curves.<wbr/> Camera devices may apply a different approximation to the curve.<wbr/></p>
32624            </td>
32625          </tr>
32626
32627
32628          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
32629           <!-- end of entry -->
32630
32631
32632
32633      <!-- end of kind -->
32634      </tbody>
32635
32636  <!-- end of section -->
32637  <tr><td colspan="7" id="section_led" class="section">led</td></tr>
32638
32639
32640      <tr><td colspan="7" class="kind">controls</td></tr>
32641
32642      <thead class="entries_header">
32643        <tr>
32644          <th class="th_name">Property Name</th>
32645          <th class="th_type">Type</th>
32646          <th class="th_description">Description</th>
32647          <th class="th_units">Units</th>
32648          <th class="th_range">Range</th>
32649          <th class="th_hal_version">Initial HIDL HAL version</th>
32650          <th class="th_tags">Tags</th>
32651        </tr>
32652      </thead>
32653
32654      <tbody>
32655
32656
32657
32658
32659
32660
32661
32662
32663
32664
32665          <tr class="entry" id="controls_android.led.transmit">
32666            <td class="entry_name
32667             " rowspan="1">
32668              android.<wbr/>led.<wbr/>transmit
32669            </td>
32670            <td class="entry_type">
32671                <span class="entry_type_name entry_type_name_enum">byte</span>
32672
32673              <span class="entry_type_visibility"> [hidden as boolean]</span>
32674
32675
32676
32677
32678
32679                <ul class="entry_type_enum">
32680                  <li>
32681                    <span class="entry_type_enum_name">OFF (v3.2)</span>
32682                  </li>
32683                  <li>
32684                    <span class="entry_type_enum_name">ON (v3.2)</span>
32685                  </li>
32686                </ul>
32687
32688            </td> <!-- entry_type -->
32689
32690            <td class="entry_description">
32691              <p>This LED is nominally used to indicate to the user
32692that the camera is powered on and may be streaming images back to the
32693Application Processor.<wbr/> In certain rare circumstances,<wbr/> the OS may
32694disable this when video is processed locally and not transmitted to
32695any untrusted applications.<wbr/></p>
32696<p>In particular,<wbr/> the LED <em>must</em> always be on when the data could be
32697transmitted off the device.<wbr/> The LED <em>should</em> always be on whenever
32698data is stored locally on the device.<wbr/></p>
32699<p>The LED <em>may</em> be off if a trusted application is using the data that
32700doesn't violate the above rules.<wbr/></p>
32701            </td>
32702
32703            <td class="entry_units">
32704            </td>
32705
32706            <td class="entry_range">
32707            </td>
32708
32709            <td class="entry_hal_version">
32710              <p>3.<wbr/>2</p>
32711            </td>
32712
32713            <td class="entry_tags">
32714            </td>
32715
32716          </tr>
32717
32718
32719          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
32720           <!-- end of entry -->
32721
32722
32723
32724      <!-- end of kind -->
32725      </tbody>
32726      <tr><td colspan="7" class="kind">dynamic</td></tr>
32727
32728      <thead class="entries_header">
32729        <tr>
32730          <th class="th_name">Property Name</th>
32731          <th class="th_type">Type</th>
32732          <th class="th_description">Description</th>
32733          <th class="th_units">Units</th>
32734          <th class="th_range">Range</th>
32735          <th class="th_hal_version">Initial HIDL HAL version</th>
32736          <th class="th_tags">Tags</th>
32737        </tr>
32738      </thead>
32739
32740      <tbody>
32741
32742
32743
32744
32745
32746
32747
32748
32749
32750
32751          <tr class="entry" id="dynamic_android.led.transmit">
32752            <td class="entry_name
32753             " rowspan="1">
32754              android.<wbr/>led.<wbr/>transmit
32755            </td>
32756            <td class="entry_type">
32757                <span class="entry_type_name entry_type_name_enum">byte</span>
32758
32759              <span class="entry_type_visibility"> [hidden as boolean]</span>
32760
32761
32762
32763
32764
32765                <ul class="entry_type_enum">
32766                  <li>
32767                    <span class="entry_type_enum_name">OFF (v3.2)</span>
32768                  </li>
32769                  <li>
32770                    <span class="entry_type_enum_name">ON (v3.2)</span>
32771                  </li>
32772                </ul>
32773
32774            </td> <!-- entry_type -->
32775
32776            <td class="entry_description">
32777              <p>This LED is nominally used to indicate to the user
32778that the camera is powered on and may be streaming images back to the
32779Application Processor.<wbr/> In certain rare circumstances,<wbr/> the OS may
32780disable this when video is processed locally and not transmitted to
32781any untrusted applications.<wbr/></p>
32782<p>In particular,<wbr/> the LED <em>must</em> always be on when the data could be
32783transmitted off the device.<wbr/> The LED <em>should</em> always be on whenever
32784data is stored locally on the device.<wbr/></p>
32785<p>The LED <em>may</em> be off if a trusted application is using the data that
32786doesn't violate the above rules.<wbr/></p>
32787            </td>
32788
32789            <td class="entry_units">
32790            </td>
32791
32792            <td class="entry_range">
32793            </td>
32794
32795            <td class="entry_hal_version">
32796              <p>3.<wbr/>2</p>
32797            </td>
32798
32799            <td class="entry_tags">
32800            </td>
32801
32802          </tr>
32803
32804
32805          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
32806           <!-- end of entry -->
32807
32808
32809
32810      <!-- end of kind -->
32811      </tbody>
32812      <tr><td colspan="7" class="kind">static</td></tr>
32813
32814      <thead class="entries_header">
32815        <tr>
32816          <th class="th_name">Property Name</th>
32817          <th class="th_type">Type</th>
32818          <th class="th_description">Description</th>
32819          <th class="th_units">Units</th>
32820          <th class="th_range">Range</th>
32821          <th class="th_hal_version">Initial HIDL HAL version</th>
32822          <th class="th_tags">Tags</th>
32823        </tr>
32824      </thead>
32825
32826      <tbody>
32827
32828
32829
32830
32831
32832
32833
32834
32835
32836
32837          <tr class="entry" id="static_android.led.availableLeds">
32838            <td class="entry_name
32839             " rowspan="1">
32840              android.<wbr/>led.<wbr/>available<wbr/>Leds
32841            </td>
32842            <td class="entry_type">
32843                <span class="entry_type_name entry_type_name_enum">byte</span>
32844                <span class="entry_type_container">x</span>
32845
32846                <span class="entry_type_array">
32847                  n
32848                </span>
32849              <span class="entry_type_visibility"> [hidden]</span>
32850
32851
32852
32853
32854
32855                <ul class="entry_type_enum">
32856                  <li>
32857                    <span class="entry_type_enum_name">TRANSMIT (v3.2)</span>
32858                    <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>
32859                  </li>
32860                </ul>
32861
32862            </td> <!-- entry_type -->
32863
32864            <td class="entry_description">
32865              <p>A list of camera LEDs that are available on this system.<wbr/></p>
32866            </td>
32867
32868            <td class="entry_units">
32869            </td>
32870
32871            <td class="entry_range">
32872            </td>
32873
32874            <td class="entry_hal_version">
32875              <p>3.<wbr/>2</p>
32876            </td>
32877
32878            <td class="entry_tags">
32879            </td>
32880
32881          </tr>
32882
32883
32884          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
32885           <!-- end of entry -->
32886
32887
32888
32889      <!-- end of kind -->
32890      </tbody>
32891
32892  <!-- end of section -->
32893  <tr><td colspan="7" id="section_info" class="section">info</td></tr>
32894
32895
32896      <tr><td colspan="7" class="kind">static</td></tr>
32897
32898      <thead class="entries_header">
32899        <tr>
32900          <th class="th_name">Property Name</th>
32901          <th class="th_type">Type</th>
32902          <th class="th_description">Description</th>
32903          <th class="th_units">Units</th>
32904          <th class="th_range">Range</th>
32905          <th class="th_hal_version">Initial HIDL HAL version</th>
32906          <th class="th_tags">Tags</th>
32907        </tr>
32908      </thead>
32909
32910      <tbody>
32911
32912
32913
32914
32915
32916
32917
32918
32919
32920
32921          <tr class="entry" id="static_android.info.supportedHardwareLevel">
32922            <td class="entry_name
32923             " rowspan="5">
32924              android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level
32925            </td>
32926            <td class="entry_type">
32927                <span class="entry_type_name entry_type_name_enum">byte</span>
32928
32929              <span class="entry_type_visibility"> [public]</span>
32930
32931
32932              <span class="entry_type_hwlevel">[legacy] </span>
32933
32934
32935
32936                <ul class="entry_type_enum">
32937                  <li>
32938                    <span class="entry_type_enum_name">LIMITED (v3.2)</span>
32939                    <span class="entry_type_enum_notes"><p>This camera device does not have enough capabilities to qualify as a <code>FULL</code> device or
32940better.<wbr/></p>
32941<p>Only the stream configurations listed in the <code>LEGACY</code> and <code>LIMITED</code> tables in the
32942<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">createCaptureSession</a> documentation are guaranteed to be supported.<wbr/></p>
32943<p>All <code>LIMITED</code> devices support the <code>BACKWARDS_<wbr/>COMPATIBLE</code> capability,<wbr/> indicating basic
32944support for color image capture.<wbr/> The only exception is that the device may
32945alternatively support only the <code>DEPTH_<wbr/>OUTPUT</code> capability,<wbr/> if it can only output depth
32946measurements and not color images.<wbr/></p>
32947<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>
32948to lock exposure metering (and calculate flash power,<wbr/> for cameras with flash) before
32949capturing a high-quality still image.<wbr/></p>
32950<p>A <code>LIMITED</code> device that only lists the <code>BACKWARDS_<wbr/>COMPATIBLE</code> capability is only
32951required to support full-automatic operation and post-processing (<code>OFF</code> is not
32952supported 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
32953<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>)</p>
32954<p>Additional capabilities may optionally be supported by a <code>LIMITED</code>-level device,<wbr/> and
32955can be checked for in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p></span>
32956                  </li>
32957                  <li>
32958                    <span class="entry_type_enum_name">FULL (v3.2)</span>
32959                    <span class="entry_type_enum_notes"><p>This camera device is capable of supporting advanced imaging applications.<wbr/></p>
32960<p>The stream configurations listed in the <code>FULL</code>,<wbr/> <code>LEGACY</code> and <code>LIMITED</code> tables in the
32961<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">createCaptureSession</a> documentation are guaranteed to be supported.<wbr/></p>
32962<p>A <code>FULL</code> device will support below capabilities:</p>
32963<ul>
32964<li><code>BURST_<wbr/>CAPTURE</code> capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
32965  <code>BURST_<wbr/>CAPTURE</code>)</li>
32966<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>
32967<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>
32968<li>Manual post-processing control (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
32969  <code>MANUAL_<wbr/>POST_<wbr/>PROCESSING</code>)</li>
32970<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>
32971<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>
32972</ul>
32973<p>Note:
32974Pre-API level 23,<wbr/> FULL devices also supported arbitrary cropping region
32975(<a href="#static_android.scaler.croppingType">android.<wbr/>scaler.<wbr/>cropping<wbr/>Type</a> <code>== FREEFORM</code>); this requirement was relaxed in API level
3297623,<wbr/> and <code>FULL</code> devices may only support <code>CENTERED</code> cropping.<wbr/></p></span>
32977                  </li>
32978                  <li>
32979                    <span class="entry_type_enum_name">LEGACY (v3.2)</span>
32980                    <span class="entry_type_enum_notes"><p>This camera device is running in backward compatibility mode.<wbr/></p>
32981<p>Only the stream configurations listed in the <code>LEGACY</code> table in the <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">createCaptureSession</a> documentation are supported.<wbr/></p>
32982<p>A <code>LEGACY</code> device does not support per-frame control,<wbr/> manual sensor control,<wbr/> manual
32983post-processing,<wbr/> arbitrary cropping regions,<wbr/> and has relaxed performance constraints.<wbr/>
32984No additional capabilities beyond <code>BACKWARD_<wbr/>COMPATIBLE</code> will ever be listed by a
32985<code>LEGACY</code> device in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
32986<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>
32987devices.<wbr/> Instead,<wbr/> every request that includes a JPEG-format output target is treated
32988as triggering a still capture,<wbr/> internally executing a precapture trigger.<wbr/>  This may
32989fire the flash for flash power metering during precapture,<wbr/> and then fire the flash
32990for the final capture,<wbr/> if a flash is available on the device and the AE mode is set to
32991enable the flash.<wbr/></p>
32992<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>
32993                  </li>
32994                  <li>
32995                    <span class="entry_type_enum_name">3 (v3.2)</span>
32996                    <span class="entry_type_enum_notes"><p>This camera device is capable of YUV reprocessing and RAW data capture,<wbr/> in addition to
32997FULL-level capabilities.<wbr/></p>
32998<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
32999<code>LIMITED</code> tables in the <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">createCaptureSession</a> documentation are guaranteed to be supported.<wbr/></p>
33000<p>The following additional capabilities are guaranteed to be supported:</p>
33001<ul>
33002<li><code>YUV_<wbr/>REPROCESSING</code> capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
33003  <code>YUV_<wbr/>REPROCESSING</code>)</li>
33004<li><code>RAW</code> capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
33005  <code>RAW</code>)</li>
33006</ul></span>
33007                  </li>
33008                  <li>
33009                    <span class="entry_type_enum_name">EXTERNAL (v3.3)</span>
33010                    <span class="entry_type_enum_notes"><p>This camera device is backed by an external camera connected to this Android device.<wbr/></p>
33011<p>The device has capability identical to a LIMITED level device,<wbr/> with the following
33012exceptions:</p>
33013<ul>
33014<li>The device may not report lens/<wbr/>sensor related information such as<ul>
33015<li><a href="#controls_android.lens.focalLength">android.<wbr/>lens.<wbr/>focal<wbr/>Length</a></li>
33016<li><a href="#static_android.lens.info.hyperfocalDistance">android.<wbr/>lens.<wbr/>info.<wbr/>hyperfocal<wbr/>Distance</a></li>
33017<li><a href="#static_android.sensor.info.physicalSize">android.<wbr/>sensor.<wbr/>info.<wbr/>physical<wbr/>Size</a></li>
33018<li><a href="#static_android.sensor.info.whiteLevel">android.<wbr/>sensor.<wbr/>info.<wbr/>white<wbr/>Level</a></li>
33019<li><a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a></li>
33020<li><a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a></li>
33021<li><a href="#dynamic_android.sensor.rollingShutterSkew">android.<wbr/>sensor.<wbr/>rolling<wbr/>Shutter<wbr/>Skew</a></li>
33022</ul>
33023</li>
33024<li>The device will report 0 for <a href="#static_android.sensor.orientation">android.<wbr/>sensor.<wbr/>orientation</a></li>
33025<li>The device has less guarantee on stable framerate,<wbr/> as the framerate partly depends
33026  on the external camera being used.<wbr/></li>
33027</ul></span>
33028                  </li>
33029                </ul>
33030
33031            </td> <!-- entry_type -->
33032
33033            <td class="entry_description">
33034              <p>Generally classifies the overall set of the camera device functionality.<wbr/></p>
33035            </td>
33036
33037            <td class="entry_units">
33038            </td>
33039
33040            <td class="entry_range">
33041            </td>
33042
33043            <td class="entry_hal_version">
33044              <p>3.<wbr/>2</p>
33045            </td>
33046
33047            <td class="entry_tags">
33048            </td>
33049
33050          </tr>
33051          <tr class="entries_header">
33052            <th class="th_details" colspan="6">Details</th>
33053          </tr>
33054          <tr class="entry_cont">
33055            <td class="entry_details" colspan="6">
33056              <p>The supported hardware level is a high-level description of the camera device's
33057capabilities,<wbr/> summarizing several capabilities into one field.<wbr/>  Each level adds additional
33058features to the previous one,<wbr/> and is always a strict superset of the previous level.<wbr/>
33059The ordering is <code>LEGACY &lt; LIMITED &lt; FULL &lt; LEVEL_<wbr/>3</code>.<wbr/></p>
33060<p>Starting from <code>LEVEL_<wbr/>3</code>,<wbr/> the level enumerations are guaranteed to be in increasing
33061numerical value as well.<wbr/> To check if a given device is at least at a given hardware level,<wbr/>
33062the following code snippet can be used:</p>
33063<pre><code>//<wbr/> Returns true if the device supports the required hardware level,<wbr/> or better.<wbr/>
33064boolean isHardwareLevelSupported(CameraCharacteristics c,<wbr/> int requiredLevel) {
33065    final int[] sortedHwLevels = {
33066        Camera<wbr/>Characteristics.<wbr/>INFO_<wbr/>SUPPORTED_<wbr/>HARDWARE_<wbr/>LEVEL_<wbr/>LEGACY,<wbr/>
33067        Camera<wbr/>Characteristics.<wbr/>INFO_<wbr/>SUPPORTED_<wbr/>HARDWARE_<wbr/>LEVEL_<wbr/>EXTERNAL,<wbr/>
33068        Camera<wbr/>Characteristics.<wbr/>INFO_<wbr/>SUPPORTED_<wbr/>HARDWARE_<wbr/>LEVEL_<wbr/>LIMITED,<wbr/>
33069        Camera<wbr/>Characteristics.<wbr/>INFO_<wbr/>SUPPORTED_<wbr/>HARDWARE_<wbr/>LEVEL_<wbr/>FULL,<wbr/>
33070        Camera<wbr/>Characteristics.<wbr/>INFO_<wbr/>SUPPORTED_<wbr/>HARDWARE_<wbr/>LEVEL_<wbr/>3
33071    };
33072    int deviceLevel = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>INFO_<wbr/>SUPPORTED_<wbr/>HARDWARE_<wbr/>LEVEL);
33073    if (requiredLevel == deviceLevel) {
33074        return true;
33075    }
33076
33077    for (int sortedlevel : sortedHwLevels) {
33078        if (sortedlevel == requiredLevel) {
33079            return true;
33080        } else if (sortedlevel == deviceLevel) {
33081            return false;
33082        }
33083    }
33084    return false; //<wbr/> Should never reach here
33085}
33086</code></pre>
33087<p>At a high level,<wbr/> the levels are:</p>
33088<ul>
33089<li><code>LEGACY</code> devices operate in a backwards-compatibility mode for older
33090  Android devices,<wbr/> and have very limited capabilities.<wbr/></li>
33091<li><code>LIMITED</code> devices represent the
33092  baseline feature set,<wbr/> and may also include additional capabilities that are
33093  subsets of <code>FULL</code>.<wbr/></li>
33094<li><code>FULL</code> devices additionally support per-frame manual control of sensor,<wbr/> flash,<wbr/> lens and
33095  post-processing settings,<wbr/> and image capture at a high rate.<wbr/></li>
33096<li><code>LEVEL_<wbr/>3</code> devices additionally support YUV reprocessing and RAW image capture,<wbr/> along
33097  with additional output stream configurations.<wbr/></li>
33098<li><code>EXTERNAL</code> devices are similar to <code>LIMITED</code> devices with exceptions like some sensor or
33099  lens information not reported or less stable framerates.<wbr/></li>
33100</ul>
33101<p>See the individual level enums for full descriptions of the supported capabilities.<wbr/>  The
33102<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> entry describes the device's capabilities at a
33103finer-grain level,<wbr/> if needed.<wbr/> In addition,<wbr/> many controls have their available settings or
33104ranges defined in individual entries from <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html">CameraCharacteristics</a>.<wbr/></p>
33105<p>Some features are not part of any particular hardware level or capability and must be
33106queried separately.<wbr/> These include:</p>
33107<ul>
33108<li>Calibrated timestamps (<a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME)</li>
33109<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>
33110<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>
33111<li>Optical or electrical image stabilization
33112  (<a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a>,<wbr/>
33113   <a href="#static_android.control.availableVideoStabilizationModes">android.<wbr/>control.<wbr/>available<wbr/>Video<wbr/>Stabilization<wbr/>Modes</a>)</li>
33114</ul>
33115            </td>
33116          </tr>
33117
33118          <tr class="entries_header">
33119            <th class="th_details" colspan="6">HAL Implementation Details</th>
33120          </tr>
33121          <tr class="entry_cont">
33122            <td class="entry_details" colspan="6">
33123              <p>A camera HALv3 device can implement one of three possible operational modes; LIMITED,<wbr/>
33124FULL,<wbr/> and LEVEL_<wbr/>3.<wbr/></p>
33125<p>FULL support or better is expected from new higher-end devices.<wbr/> Limited
33126mode has hardware requirements roughly in line with those for a camera HAL device v1
33127implementation,<wbr/> and is expected from older or inexpensive devices.<wbr/> Each level is a strict
33128superset of the previous level,<wbr/> and they share the same essential operational flow.<wbr/></p>
33129<p>For full details refer to "S3.<wbr/> Operational Modes" in camera3.<wbr/>h</p>
33130<p>Camera HAL3+ must not implement LEGACY mode.<wbr/> It is there for backwards compatibility in
33131the <code>android.<wbr/>hardware.<wbr/>camera2</code> user-facing API only on legacy HALv1 devices,<wbr/> and is
33132implemented by the camera framework code.<wbr/></p>
33133<p>EXTERNAL level devices have lower peformance bar in CTS since the peformance might depend
33134on the external camera being used and is not fully controlled by the device manufacturer.<wbr/>
33135The ITS test suite is exempted for the same reason.<wbr/></p>
33136            </td>
33137          </tr>
33138
33139          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
33140           <!-- end of entry -->
33141
33142
33143          <tr class="entry" id="static_android.info.version">
33144            <td class="entry_name
33145             " rowspan="5">
33146              android.<wbr/>info.<wbr/>version
33147            </td>
33148            <td class="entry_type">
33149                <span class="entry_type_name">byte</span>
33150
33151              <span class="entry_type_visibility"> [public as string]</span>
33152
33153
33154
33155
33156
33157
33158            </td> <!-- entry_type -->
33159
33160            <td class="entry_description">
33161              <p>A short string for manufacturer version information about the camera device,<wbr/> such as
33162ISP hardware,<wbr/> sensors,<wbr/> etc.<wbr/></p>
33163            </td>
33164
33165            <td class="entry_units">
33166            </td>
33167
33168            <td class="entry_range">
33169            </td>
33170
33171            <td class="entry_hal_version">
33172              <p>3.<wbr/>3</p>
33173            </td>
33174
33175            <td class="entry_tags">
33176            </td>
33177
33178          </tr>
33179          <tr class="entries_header">
33180            <th class="th_details" colspan="6">Details</th>
33181          </tr>
33182          <tr class="entry_cont">
33183            <td class="entry_details" colspan="6">
33184              <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>
33185in jpeg EXIF.<wbr/> This key may be absent if no version information is available on the
33186device.<wbr/></p>
33187            </td>
33188          </tr>
33189
33190          <tr class="entries_header">
33191            <th class="th_details" colspan="6">HAL Implementation Details</th>
33192          </tr>
33193          <tr class="entry_cont">
33194            <td class="entry_details" colspan="6">
33195              <p>The string must consist of only alphanumeric characters,<wbr/> punctuation,<wbr/> and
33196whitespace,<wbr/> i.<wbr/>e.<wbr/> it must match regular expression "[\p{Alnum}\p{Punct}\p{Space}]*".<wbr/>
33197It must not exceed 256 characters.<wbr/></p>
33198            </td>
33199          </tr>
33200
33201          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
33202           <!-- end of entry -->
33203
33204
33205          <tr class="entry" id="static_android.info.supportedBufferManagementVersion">
33206            <td class="entry_name
33207             " rowspan="3">
33208              android.<wbr/>info.<wbr/>supported<wbr/>Buffer<wbr/>Management<wbr/>Version
33209            </td>
33210            <td class="entry_type">
33211                <span class="entry_type_name entry_type_name_enum">byte</span>
33212
33213              <span class="entry_type_visibility"> [system]</span>
33214
33215
33216
33217
33218
33219                <ul class="entry_type_enum">
33220                  <li>
33221                    <span class="entry_type_enum_name">HIDL_DEVICE_3_5 (v3.4)</span>
33222                    <span class="entry_type_enum_notes"><p>This camera device supports and opts in to the buffer management APIs provided by
33223HIDL ICameraDevice version 3.<wbr/>5.<wbr/></p></span>
33224                  </li>
33225                </ul>
33226
33227            </td> <!-- entry_type -->
33228
33229            <td class="entry_description">
33230              <p>The version of buffer management API this camera device supports and opts into.<wbr/></p>
33231            </td>
33232
33233            <td class="entry_units">
33234            </td>
33235
33236            <td class="entry_range">
33237            </td>
33238
33239            <td class="entry_hal_version">
33240              <p>3.<wbr/>4</p>
33241            </td>
33242
33243            <td class="entry_tags">
33244            </td>
33245
33246          </tr>
33247          <tr class="entries_header">
33248            <th class="th_details" colspan="6">Details</th>
33249          </tr>
33250          <tr class="entry_cont">
33251            <td class="entry_details" colspan="6">
33252              <p>When this key is not present,<wbr/> camera framework will interact with this camera device
33253without any buffer management HAL API.<wbr/> When this key is present and camera framework
33254supports the buffer management API version,<wbr/> camera framework will interact with camera
33255HAL using such version of buffer management API.<wbr/></p>
33256            </td>
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.info.deviceStateSensorOrientationMap">
33265            <td class="entry_name
33266             " rowspan="3">
33267              android.<wbr/>info.<wbr/>device<wbr/>State<wbr/>Sensor<wbr/>Orientation<wbr/>Map
33268            </td>
33269            <td class="entry_type">
33270                <span class="entry_type_name">int64</span>
33271
33272              <span class="entry_type_visibility"> [java_public as deviceStateSensorOrientationMap]</span>
33273
33274              <span class="entry_type_synthetic">[synthetic] </span>
33275
33276              <span class="entry_type_hwlevel">[limited] </span>
33277
33278
33279
33280
33281            </td> <!-- entry_type -->
33282
33283            <td class="entry_description">
33284              <p>This lists the mapping between a device folding state and
33285specific camera sensor orientation for logical cameras on a foldable device.<wbr/></p>
33286            </td>
33287
33288            <td class="entry_units">
33289            </td>
33290
33291            <td class="entry_range">
33292            </td>
33293
33294            <td class="entry_hal_version">
33295              <p>3.<wbr/>2</p>
33296            </td>
33297
33298            <td class="entry_tags">
33299            </td>
33300
33301          </tr>
33302          <tr class="entries_header">
33303            <th class="th_details" colspan="6">Details</th>
33304          </tr>
33305          <tr class="entry_cont">
33306            <td class="entry_details" colspan="6">
33307              <p>Logical cameras on foldable devices can support sensors with different orientation
33308values.<wbr/> The orientation value may need to change depending on the specific folding
33309state.<wbr/> Information about the mapping between the device folding state and the
33310sensor orientation can be obtained in
33311<a href="https://developer.android.com/reference/android/hardware/camera2/params/DeviceStateSensorOrientationMap.html">DeviceStateSensorOrientationMap</a>.<wbr/>
33312Device state orientation maps are optional and maybe present on devices that support
33313<a href="#controls_android.scaler.rotateAndCrop">android.<wbr/>scaler.<wbr/>rotate<wbr/>And<wbr/>Crop</a>.<wbr/></p>
33314            </td>
33315          </tr>
33316
33317
33318          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
33319           <!-- end of entry -->
33320
33321
33322          <tr class="entry" id="static_android.info.deviceStateOrientations">
33323            <td class="entry_name
33324             " rowspan="3">
33325              android.<wbr/>info.<wbr/>device<wbr/>State<wbr/>Orientations
33326            </td>
33327            <td class="entry_type">
33328                <span class="entry_type_name">int64</span>
33329                <span class="entry_type_container">x</span>
33330
33331                <span class="entry_type_array">
33332                  2 x n
33333                </span>
33334              <span class="entry_type_visibility"> [ndk_public]</span>
33335
33336
33337              <span class="entry_type_hwlevel">[limited] </span>
33338
33339
33340
33341
33342            </td> <!-- entry_type -->
33343
33344            <td class="entry_description">
33345            </td>
33346
33347            <td class="entry_units">
33348              (device fold state,<wbr/> sensor orientation) x n
33349            </td>
33350
33351            <td class="entry_range">
33352            </td>
33353
33354            <td class="entry_hal_version">
33355              <p>3.<wbr/>7</p>
33356            </td>
33357
33358            <td class="entry_tags">
33359            </td>
33360
33361          </tr>
33362          <tr class="entries_header">
33363            <th class="th_details" colspan="6">Details</th>
33364          </tr>
33365          <tr class="entry_cont">
33366            <td class="entry_details" colspan="6">
33367              <p>HAL must populate the array with
33368(hardware::camera::provider::V2_<wbr/>5::DeviceState,<wbr/> sensorOrientation) pairs for each
33369supported device state bitwise combination.<wbr/></p>
33370            </td>
33371          </tr>
33372
33373
33374          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
33375           <!-- end of entry -->
33376
33377
33378
33379      <!-- end of kind -->
33380      </tbody>
33381
33382  <!-- end of section -->
33383  <tr><td colspan="7" id="section_blackLevel" class="section">blackLevel</td></tr>
33384
33385
33386      <tr><td colspan="7" class="kind">controls</td></tr>
33387
33388      <thead class="entries_header">
33389        <tr>
33390          <th class="th_name">Property Name</th>
33391          <th class="th_type">Type</th>
33392          <th class="th_description">Description</th>
33393          <th class="th_units">Units</th>
33394          <th class="th_range">Range</th>
33395          <th class="th_hal_version">Initial HIDL HAL version</th>
33396          <th class="th_tags">Tags</th>
33397        </tr>
33398      </thead>
33399
33400      <tbody>
33401
33402
33403
33404
33405
33406
33407
33408
33409
33410
33411          <tr class="entry" id="controls_android.blackLevel.lock">
33412            <td class="entry_name
33413             " rowspan="5">
33414              android.<wbr/>black<wbr/>Level.<wbr/>lock
33415            </td>
33416            <td class="entry_type">
33417                <span class="entry_type_name entry_type_name_enum">byte</span>
33418
33419              <span class="entry_type_visibility"> [public as boolean]</span>
33420
33421
33422              <span class="entry_type_hwlevel">[full] </span>
33423
33424
33425
33426                <ul class="entry_type_enum">
33427                  <li>
33428                    <span class="entry_type_enum_name">OFF (v3.2)</span>
33429                  </li>
33430                  <li>
33431                    <span class="entry_type_enum_name">ON (v3.2)</span>
33432                  </li>
33433                </ul>
33434
33435            </td> <!-- entry_type -->
33436
33437            <td class="entry_description">
33438              <p>Whether black-level compensation is locked
33439to its current values,<wbr/> or is free to vary.<wbr/></p>
33440            </td>
33441
33442            <td class="entry_units">
33443            </td>
33444
33445            <td class="entry_range">
33446            </td>
33447
33448            <td class="entry_hal_version">
33449              <p>3.<wbr/>2</p>
33450            </td>
33451
33452            <td class="entry_tags">
33453              <ul class="entry_tags">
33454                  <li><a href="#tag_HAL2">HAL2</a></li>
33455              </ul>
33456            </td>
33457
33458          </tr>
33459          <tr class="entries_header">
33460            <th class="th_details" colspan="6">Details</th>
33461          </tr>
33462          <tr class="entry_cont">
33463            <td class="entry_details" colspan="6">
33464              <p>When set to <code>true</code> (ON),<wbr/> the values used for black-level
33465compensation will not change until the lock is set to
33466<code>false</code> (OFF).<wbr/></p>
33467<p>Since changes to certain capture parameters (such as
33468exposure time) may require resetting of black level
33469compensation,<wbr/> the camera device must report whether setting
33470the black level lock was successful in the output result
33471metadata.<wbr/></p>
33472<p>For example,<wbr/> if a sequence of requests is as follows:</p>
33473<ul>
33474<li>Request 1: Exposure = 10ms,<wbr/> Black level lock = OFF</li>
33475<li>Request 2: Exposure = 10ms,<wbr/> Black level lock = ON</li>
33476<li>Request 3: Exposure = 10ms,<wbr/> Black level lock = ON</li>
33477<li>Request 4: Exposure = 20ms,<wbr/> Black level lock = ON</li>
33478<li>Request 5: Exposure = 20ms,<wbr/> Black level lock = ON</li>
33479<li>Request 6: Exposure = 20ms,<wbr/> Black level lock = ON</li>
33480</ul>
33481<p>And the exposure change in Request 4 requires the camera
33482device to reset the black level offsets,<wbr/> then the output
33483result metadata is expected to be:</p>
33484<ul>
33485<li>Result 1: Exposure = 10ms,<wbr/> Black level lock = OFF</li>
33486<li>Result 2: Exposure = 10ms,<wbr/> Black level lock = ON</li>
33487<li>Result 3: Exposure = 10ms,<wbr/> Black level lock = ON</li>
33488<li>Result 4: Exposure = 20ms,<wbr/> Black level lock = OFF</li>
33489<li>Result 5: Exposure = 20ms,<wbr/> Black level lock = ON</li>
33490<li>Result 6: Exposure = 20ms,<wbr/> Black level lock = ON</li>
33491</ul>
33492<p>This indicates to the application that on frame 4,<wbr/> black
33493levels were reset due to exposure value changes,<wbr/> and pixel
33494values may not be consistent across captures.<wbr/></p>
33495<p>The camera device will maintain the lock to the extent
33496possible,<wbr/> only overriding the lock to OFF when changes to
33497other request parameters require a black level recalculation
33498or reset.<wbr/></p>
33499            </td>
33500          </tr>
33501
33502          <tr class="entries_header">
33503            <th class="th_details" colspan="6">HAL Implementation Details</th>
33504          </tr>
33505          <tr class="entry_cont">
33506            <td class="entry_details" colspan="6">
33507              <p>If for some reason black level locking is no longer possible
33508(for example,<wbr/> the analog gain has changed,<wbr/> which forces
33509black level offsets to be recalculated),<wbr/> then the HAL must
33510override this request (and it must report 'OFF' when this
33511does happen) until the next capture for which locking is
33512possible again.<wbr/></p>
33513            </td>
33514          </tr>
33515
33516          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
33517           <!-- end of entry -->
33518
33519
33520
33521      <!-- end of kind -->
33522      </tbody>
33523      <tr><td colspan="7" class="kind">dynamic</td></tr>
33524
33525      <thead class="entries_header">
33526        <tr>
33527          <th class="th_name">Property Name</th>
33528          <th class="th_type">Type</th>
33529          <th class="th_description">Description</th>
33530          <th class="th_units">Units</th>
33531          <th class="th_range">Range</th>
33532          <th class="th_hal_version">Initial HIDL HAL version</th>
33533          <th class="th_tags">Tags</th>
33534        </tr>
33535      </thead>
33536
33537      <tbody>
33538
33539
33540
33541
33542
33543
33544
33545
33546
33547
33548          <tr class="entry" id="dynamic_android.blackLevel.lock">
33549            <td class="entry_name
33550             " rowspan="5">
33551              android.<wbr/>black<wbr/>Level.<wbr/>lock
33552            </td>
33553            <td class="entry_type">
33554                <span class="entry_type_name entry_type_name_enum">byte</span>
33555
33556              <span class="entry_type_visibility"> [public as boolean]</span>
33557
33558
33559              <span class="entry_type_hwlevel">[full] </span>
33560
33561
33562
33563                <ul class="entry_type_enum">
33564                  <li>
33565                    <span class="entry_type_enum_name">OFF (v3.2)</span>
33566                  </li>
33567                  <li>
33568                    <span class="entry_type_enum_name">ON (v3.2)</span>
33569                  </li>
33570                </ul>
33571
33572            </td> <!-- entry_type -->
33573
33574            <td class="entry_description">
33575              <p>Whether black-level compensation is locked
33576to its current values,<wbr/> or is free to vary.<wbr/></p>
33577            </td>
33578
33579            <td class="entry_units">
33580            </td>
33581
33582            <td class="entry_range">
33583            </td>
33584
33585            <td class="entry_hal_version">
33586              <p>3.<wbr/>2</p>
33587            </td>
33588
33589            <td class="entry_tags">
33590              <ul class="entry_tags">
33591                  <li><a href="#tag_HAL2">HAL2</a></li>
33592              </ul>
33593            </td>
33594
33595          </tr>
33596          <tr class="entries_header">
33597            <th class="th_details" colspan="6">Details</th>
33598          </tr>
33599          <tr class="entry_cont">
33600            <td class="entry_details" colspan="6">
33601              <p>Whether the black level offset was locked for this frame.<wbr/>  Should be
33602ON if <a href="#controls_android.blackLevel.lock">android.<wbr/>black<wbr/>Level.<wbr/>lock</a> was ON in the capture request,<wbr/> unless
33603a change in other capture settings forced the camera device to
33604perform a black level reset.<wbr/></p>
33605            </td>
33606          </tr>
33607
33608          <tr class="entries_header">
33609            <th class="th_details" colspan="6">HAL Implementation Details</th>
33610          </tr>
33611          <tr class="entry_cont">
33612            <td class="entry_details" colspan="6">
33613              <p>If for some reason black level locking is no longer possible
33614(for example,<wbr/> the analog gain has changed,<wbr/> which forces
33615black level offsets to be recalculated),<wbr/> then the HAL must
33616override this request (and it must report 'OFF' when this
33617does happen) until the next capture for which locking is
33618possible again.<wbr/></p>
33619            </td>
33620          </tr>
33621
33622          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
33623           <!-- end of entry -->
33624
33625
33626
33627      <!-- end of kind -->
33628      </tbody>
33629
33630  <!-- end of section -->
33631  <tr><td colspan="7" id="section_sync" class="section">sync</td></tr>
33632
33633
33634      <tr><td colspan="7" class="kind">dynamic</td></tr>
33635
33636      <thead class="entries_header">
33637        <tr>
33638          <th class="th_name">Property Name</th>
33639          <th class="th_type">Type</th>
33640          <th class="th_description">Description</th>
33641          <th class="th_units">Units</th>
33642          <th class="th_range">Range</th>
33643          <th class="th_hal_version">Initial HIDL HAL version</th>
33644          <th class="th_tags">Tags</th>
33645        </tr>
33646      </thead>
33647
33648      <tbody>
33649
33650
33651
33652
33653
33654
33655
33656
33657
33658
33659          <tr class="entry" id="dynamic_android.sync.frameNumber">
33660            <td class="entry_name
33661             " rowspan="5">
33662              android.<wbr/>sync.<wbr/>frame<wbr/>Number
33663            </td>
33664            <td class="entry_type">
33665                <span class="entry_type_name entry_type_name_enum">int64</span>
33666
33667              <span class="entry_type_visibility"> [ndk_public]</span>
33668
33669
33670              <span class="entry_type_hwlevel">[legacy] </span>
33671
33672
33673
33674                <ul class="entry_type_enum">
33675                  <li>
33676                    <span class="entry_type_enum_name">CONVERGING (v3.2)</span>
33677                    <span class="entry_type_enum_value">-1</span>
33678                    <span class="entry_type_enum_notes"><p>The current result is not yet fully synchronized to any request.<wbr/></p>
33679<p>Synchronization is in progress,<wbr/> and reading metadata from this
33680result may include a mix of data that have taken effect since the
33681last synchronization time.<wbr/></p>
33682<p>In some future result,<wbr/> within <a href="#static_android.sync.maxLatency">android.<wbr/>sync.<wbr/>max<wbr/>Latency</a> frames,<wbr/>
33683this value will update to the actual frame number frame number
33684the result is guaranteed to be synchronized to (as long as the
33685request settings remain constant).<wbr/></p></span>
33686                  </li>
33687                  <li>
33688                    <span class="entry_type_enum_name">UNKNOWN (v3.2)</span>
33689                    <span class="entry_type_enum_value">-2</span>
33690                    <span class="entry_type_enum_notes"><p>The current result's synchronization status is unknown.<wbr/></p>
33691<p>The result may have already converged,<wbr/> or it may be in
33692progress.<wbr/>  Reading from this result may include some mix
33693of settings from past requests.<wbr/></p>
33694<p>After a settings change,<wbr/> the new settings will eventually all
33695take effect for the output buffers and results.<wbr/> However,<wbr/> this
33696value will not change when that happens.<wbr/> Altering settings
33697rapidly may provide outcomes using mixes of settings from recent
33698requests.<wbr/></p>
33699<p>This value is intended primarily for backwards compatibility with
33700the older camera implementations (for android.<wbr/>hardware.<wbr/>Camera).<wbr/></p></span>
33701                  </li>
33702                </ul>
33703
33704            </td> <!-- entry_type -->
33705
33706            <td class="entry_description">
33707              <p>The frame number corresponding to the last request
33708with which the output result (metadata + buffers) has been fully
33709synchronized.<wbr/></p>
33710            </td>
33711
33712            <td class="entry_units">
33713            </td>
33714
33715            <td class="entry_range">
33716              <p>Either a non-negative value corresponding to a
33717<code>frame_<wbr/>number</code>,<wbr/> or one of the two enums (CONVERGING /<wbr/> UNKNOWN).<wbr/></p>
33718            </td>
33719
33720            <td class="entry_hal_version">
33721              <p>3.<wbr/>2</p>
33722            </td>
33723
33724            <td class="entry_tags">
33725              <ul class="entry_tags">
33726                  <li><a href="#tag_V1">V1</a></li>
33727              </ul>
33728            </td>
33729
33730          </tr>
33731          <tr class="entries_header">
33732            <th class="th_details" colspan="6">Details</th>
33733          </tr>
33734          <tr class="entry_cont">
33735            <td class="entry_details" colspan="6">
33736              <p>When a request is submitted to the camera device,<wbr/> there is usually a
33737delay of several frames before the controls get applied.<wbr/> A camera
33738device may either choose to account for this delay by implementing a
33739pipeline and carefully submit well-timed atomic control updates,<wbr/> or
33740it may start streaming control changes that span over several frame
33741boundaries.<wbr/></p>
33742<p>In the latter case,<wbr/> whenever a request's settings change relative to
33743the previous submitted request,<wbr/> the full set of changes may take
33744multiple frame durations to fully take effect.<wbr/> Some settings may
33745take effect sooner (in less frame durations) than others.<wbr/></p>
33746<p>While a set of control changes are being propagated,<wbr/> this value
33747will be CONVERGING.<wbr/></p>
33748<p>Once it is fully known that a set of control changes have been
33749finished propagating,<wbr/> and the resulting updated control settings
33750have been read back by the camera device,<wbr/> this value will be set
33751to a non-negative frame number (corresponding to the request to
33752which the results have synchronized to).<wbr/></p>
33753<p>Older camera device implementations may not have a way to detect
33754when all camera controls have been applied,<wbr/> and will always set this
33755value to UNKNOWN.<wbr/></p>
33756<p>FULL capability devices will always have this value set to the
33757frame number of the request corresponding to this result.<wbr/></p>
33758<p><em>Further details</em>:</p>
33759<ul>
33760<li>Whenever a request differs from the last request,<wbr/> any future
33761results not yet returned may have this value set to CONVERGING (this
33762could include any in-progress captures not yet returned by the camera
33763device,<wbr/> for more details see pipeline considerations below).<wbr/></li>
33764<li>Submitting a series of multiple requests that differ from the
33765previous request (e.<wbr/>g.<wbr/> r1,<wbr/> r2,<wbr/> r3 s.<wbr/>t.<wbr/> r1 != r2 != r3)
33766moves the new synchronization frame to the last non-repeating
33767request (using the smallest frame number from the contiguous list of
33768repeating requests).<wbr/></li>
33769<li>Submitting the same request repeatedly will not change this value
33770to CONVERGING,<wbr/> if it was already a non-negative value.<wbr/></li>
33771<li>When this value changes to non-negative,<wbr/> that means that all of the
33772metadata controls from the request have been applied,<wbr/> all of the
33773metadata controls from the camera device have been read to the
33774updated values (into the result),<wbr/> and all of the graphics buffers
33775corresponding to this result are also synchronized to the request.<wbr/></li>
33776</ul>
33777<p><em>Pipeline considerations</em>:</p>
33778<p>Submitting a request with updated controls relative to the previously
33779submitted requests may also invalidate the synchronization state
33780of all the results corresponding to currently in-flight requests.<wbr/></p>
33781<p>In other words,<wbr/> results for this current request and up to
33782<a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a> prior requests may have their
33783<a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> change to CONVERGING.<wbr/></p>
33784            </td>
33785          </tr>
33786
33787          <tr class="entries_header">
33788            <th class="th_details" colspan="6">HAL Implementation Details</th>
33789          </tr>
33790          <tr class="entry_cont">
33791            <td class="entry_details" colspan="6">
33792              <p>Using UNKNOWN here is illegal unless <a href="#static_android.sync.maxLatency">android.<wbr/>sync.<wbr/>max<wbr/>Latency</a>
33793is also UNKNOWN.<wbr/></p>
33794<p>FULL capability devices should simply set this value to the
33795<code>frame_<wbr/>number</code> of the request this result corresponds to.<wbr/></p>
33796            </td>
33797          </tr>
33798
33799          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
33800           <!-- end of entry -->
33801
33802
33803
33804      <!-- end of kind -->
33805      </tbody>
33806      <tr><td colspan="7" class="kind">static</td></tr>
33807
33808      <thead class="entries_header">
33809        <tr>
33810          <th class="th_name">Property Name</th>
33811          <th class="th_type">Type</th>
33812          <th class="th_description">Description</th>
33813          <th class="th_units">Units</th>
33814          <th class="th_range">Range</th>
33815          <th class="th_hal_version">Initial HIDL HAL version</th>
33816          <th class="th_tags">Tags</th>
33817        </tr>
33818      </thead>
33819
33820      <tbody>
33821
33822
33823
33824
33825
33826
33827
33828
33829
33830
33831          <tr class="entry" id="static_android.sync.maxLatency">
33832            <td class="entry_name
33833             " rowspan="5">
33834              android.<wbr/>sync.<wbr/>max<wbr/>Latency
33835            </td>
33836            <td class="entry_type">
33837                <span class="entry_type_name entry_type_name_enum">int32</span>
33838
33839              <span class="entry_type_visibility"> [public]</span>
33840
33841
33842              <span class="entry_type_hwlevel">[legacy] </span>
33843
33844
33845
33846                <ul class="entry_type_enum">
33847                  <li>
33848                    <span class="entry_type_enum_name">PER_FRAME_CONTROL (v3.2)</span>
33849                    <span class="entry_type_enum_value">0</span>
33850                    <span class="entry_type_enum_notes"><p>Every frame has the requests immediately applied.<wbr/></p>
33851<p>Changing controls over multiple requests one after another will
33852produce results that have those controls applied atomically
33853each frame.<wbr/></p>
33854<p>All FULL capability devices will have this as their maxLatency.<wbr/></p></span>
33855                  </li>
33856                  <li>
33857                    <span class="entry_type_enum_name">UNKNOWN (v3.2)</span>
33858                    <span class="entry_type_enum_value">-1</span>
33859                    <span class="entry_type_enum_notes"><p>Each new frame has some subset (potentially the entire set)
33860of the past requests applied to the camera settings.<wbr/></p>
33861<p>By submitting a series of identical requests,<wbr/> the camera device
33862will eventually have the camera settings applied,<wbr/> but it is
33863unknown when that exact point will be.<wbr/></p>
33864<p>All LEGACY capability devices will have this as their maxLatency.<wbr/></p></span>
33865                  </li>
33866                </ul>
33867
33868            </td> <!-- entry_type -->
33869
33870            <td class="entry_description">
33871              <p>The maximum number of frames that can occur after a request
33872(different than the previous) has been submitted,<wbr/> and before the
33873result's state becomes synchronized.<wbr/></p>
33874            </td>
33875
33876            <td class="entry_units">
33877              Frame counts
33878            </td>
33879
33880            <td class="entry_range">
33881              <p>A positive value,<wbr/> PER_<wbr/>FRAME_<wbr/>CONTROL,<wbr/> or UNKNOWN.<wbr/></p>
33882            </td>
33883
33884            <td class="entry_hal_version">
33885              <p>3.<wbr/>2</p>
33886            </td>
33887
33888            <td class="entry_tags">
33889              <ul class="entry_tags">
33890                  <li><a href="#tag_V1">V1</a></li>
33891              </ul>
33892            </td>
33893
33894          </tr>
33895          <tr class="entries_header">
33896            <th class="th_details" colspan="6">Details</th>
33897          </tr>
33898          <tr class="entry_cont">
33899            <td class="entry_details" colspan="6">
33900              <p>This defines the maximum distance (in number of metadata results),<wbr/>
33901between the frame number of the request that has new controls to apply
33902and the frame number of the result that has all the controls applied.<wbr/></p>
33903<p>In other words this acts as an upper boundary for how many frames
33904must occur before the camera device knows for a fact that the new
33905submitted camera settings have been applied in outgoing frames.<wbr/></p>
33906            </td>
33907          </tr>
33908
33909          <tr class="entries_header">
33910            <th class="th_details" colspan="6">HAL Implementation Details</th>
33911          </tr>
33912          <tr class="entry_cont">
33913            <td class="entry_details" colspan="6">
33914              <p>For example if maxLatency was 2,<wbr/></p>
33915<pre><code>initial request = X (repeating)
33916request1 = X
33917request2 = Y
33918request3 = Y
33919request4 = Y
33920
33921where requestN has frameNumber N,<wbr/> and the first of the repeating
33922initial request's has frameNumber F (and F &lt; 1).<wbr/>
33923
33924initial result = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == F }
33925result1 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == F }
33926result2 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == CONVERGING }
33927result3 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == CONVERGING }
33928result4 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == 2 }
33929
33930where resultN has frameNumber N.<wbr/>
33931</code></pre>
33932<p>Since <code>result4</code> has a <code>frameNumber == 4</code> and
33933<code><a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == 2</code>,<wbr/> the distance is clearly
33934<code>4 - 2 = 2</code>.<wbr/></p>
33935<p>Use <code>frame_<wbr/>count</code> from camera3_<wbr/>request_<wbr/>t instead of
33936<a href="#controls_android.request.frameCount">android.<wbr/>request.<wbr/>frame<wbr/>Count</a> or
33937<code><a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html#getFrameNumber">CaptureResult#getFrameNumber</a></code>.<wbr/></p>
33938<p>LIMITED devices are strongly encouraged to use a non-negative
33939value.<wbr/> If UNKNOWN is used here then app developers do not have a way
33940to know when sensor settings have been applied.<wbr/></p>
33941            </td>
33942          </tr>
33943
33944          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
33945           <!-- end of entry -->
33946
33947
33948
33949      <!-- end of kind -->
33950      </tbody>
33951
33952  <!-- end of section -->
33953  <tr><td colspan="7" id="section_reprocess" class="section">reprocess</td></tr>
33954
33955
33956      <tr><td colspan="7" class="kind">controls</td></tr>
33957
33958      <thead class="entries_header">
33959        <tr>
33960          <th class="th_name">Property Name</th>
33961          <th class="th_type">Type</th>
33962          <th class="th_description">Description</th>
33963          <th class="th_units">Units</th>
33964          <th class="th_range">Range</th>
33965          <th class="th_hal_version">Initial HIDL HAL version</th>
33966          <th class="th_tags">Tags</th>
33967        </tr>
33968      </thead>
33969
33970      <tbody>
33971
33972
33973
33974
33975
33976
33977
33978
33979
33980
33981          <tr class="entry" id="controls_android.reprocess.effectiveExposureFactor">
33982            <td class="entry_name
33983             " rowspan="3">
33984              android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor
33985            </td>
33986            <td class="entry_type">
33987                <span class="entry_type_name">float</span>
33988
33989              <span class="entry_type_visibility"> [java_public]</span>
33990
33991
33992              <span class="entry_type_hwlevel">[limited] </span>
33993
33994
33995
33996
33997            </td> <!-- entry_type -->
33998
33999            <td class="entry_description">
34000              <p>The amount of exposure time increase factor applied to the original output
34001frame by the application processing before sending for reprocessing.<wbr/></p>
34002            </td>
34003
34004            <td class="entry_units">
34005              Relative exposure time increase factor.<wbr/>
34006            </td>
34007
34008            <td class="entry_range">
34009              <p>&gt;= 1.<wbr/>0</p>
34010            </td>
34011
34012            <td class="entry_hal_version">
34013              <p>3.<wbr/>2</p>
34014            </td>
34015
34016            <td class="entry_tags">
34017              <ul class="entry_tags">
34018                  <li><a href="#tag_REPROC">REPROC</a></li>
34019              </ul>
34020            </td>
34021
34022          </tr>
34023          <tr class="entries_header">
34024            <th class="th_details" colspan="6">Details</th>
34025          </tr>
34026          <tr class="entry_cont">
34027            <td class="entry_details" colspan="6">
34028              <p>This is optional,<wbr/> and will be supported if the camera device supports YUV_<wbr/>REPROCESSING
34029capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains YUV_<wbr/>REPROCESSING).<wbr/></p>
34030<p>For some YUV reprocessing use cases,<wbr/> the application may choose to filter the original
34031output frames to effectively reduce the noise to the same level as a frame that was
34032captured with longer exposure time.<wbr/> To be more specific,<wbr/> assuming the original captured
34033images were captured with a sensitivity of S and an exposure time of T,<wbr/> the model in
34034the camera device is that the amount of noise in the image would be approximately what
34035would be expected if the original capture parameters had been a sensitivity of
34036S/<wbr/>effectiveExposureFactor and an exposure time of T*effectiveExposureFactor,<wbr/> rather
34037than S and T respectively.<wbr/> If the captured images were processed by the application
34038before being sent for reprocessing,<wbr/> then the application may have used image processing
34039algorithms and/<wbr/>or multi-frame image fusion to reduce the noise in the
34040application-processed images (input images).<wbr/> By using the effectiveExposureFactor
34041control,<wbr/> the application can communicate to the camera device the actual noise level
34042improvement in the application-processed image.<wbr/> With this information,<wbr/> the camera
34043device can select appropriate noise reduction and edge enhancement parameters to avoid
34044excessive noise reduction (<a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a>) and insufficient edge
34045enhancement (<a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a>) being applied to the reprocessed frames.<wbr/></p>
34046<p>For example,<wbr/> for multi-frame image fusion use case,<wbr/> the application may fuse
34047multiple output frames together to a final frame for reprocessing.<wbr/> When N image are
34048fused into 1 image for reprocessing,<wbr/> the exposure time increase factor could be up to
34049square root of N (based on a simple photon shot noise model).<wbr/> The camera device will
34050adjust the reprocessing noise reduction and edge enhancement parameters accordingly to
34051produce the best quality images.<wbr/></p>
34052<p>This is relative factor,<wbr/> 1.<wbr/>0 indicates the application hasn't processed the input
34053buffer in a way that affects its effective exposure time.<wbr/></p>
34054<p>This control is only effective for YUV reprocessing capture request.<wbr/> For noise
34055reduction 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/>
34056Similarly,<wbr/> for edge enhancement reprocessing,<wbr/> it is only effective when
34057<code><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a> != OFF</code>.<wbr/></p>
34058            </td>
34059          </tr>
34060
34061
34062          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
34063           <!-- end of entry -->
34064
34065
34066
34067      <!-- end of kind -->
34068      </tbody>
34069      <tr><td colspan="7" class="kind">dynamic</td></tr>
34070
34071      <thead class="entries_header">
34072        <tr>
34073          <th class="th_name">Property Name</th>
34074          <th class="th_type">Type</th>
34075          <th class="th_description">Description</th>
34076          <th class="th_units">Units</th>
34077          <th class="th_range">Range</th>
34078          <th class="th_hal_version">Initial HIDL HAL version</th>
34079          <th class="th_tags">Tags</th>
34080        </tr>
34081      </thead>
34082
34083      <tbody>
34084
34085
34086
34087
34088
34089
34090
34091
34092
34093
34094          <tr class="entry" id="dynamic_android.reprocess.effectiveExposureFactor">
34095            <td class="entry_name
34096             " rowspan="3">
34097              android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor
34098            </td>
34099            <td class="entry_type">
34100                <span class="entry_type_name">float</span>
34101
34102              <span class="entry_type_visibility"> [java_public]</span>
34103
34104
34105              <span class="entry_type_hwlevel">[limited] </span>
34106
34107
34108
34109
34110            </td> <!-- entry_type -->
34111
34112            <td class="entry_description">
34113              <p>The amount of exposure time increase factor applied to the original output
34114frame by the application processing before sending for reprocessing.<wbr/></p>
34115            </td>
34116
34117            <td class="entry_units">
34118              Relative exposure time increase factor.<wbr/>
34119            </td>
34120
34121            <td class="entry_range">
34122              <p>&gt;= 1.<wbr/>0</p>
34123            </td>
34124
34125            <td class="entry_hal_version">
34126              <p>3.<wbr/>2</p>
34127            </td>
34128
34129            <td class="entry_tags">
34130              <ul class="entry_tags">
34131                  <li><a href="#tag_REPROC">REPROC</a></li>
34132              </ul>
34133            </td>
34134
34135          </tr>
34136          <tr class="entries_header">
34137            <th class="th_details" colspan="6">Details</th>
34138          </tr>
34139          <tr class="entry_cont">
34140            <td class="entry_details" colspan="6">
34141              <p>This is optional,<wbr/> and will be supported if the camera device supports YUV_<wbr/>REPROCESSING
34142capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains YUV_<wbr/>REPROCESSING).<wbr/></p>
34143<p>For some YUV reprocessing use cases,<wbr/> the application may choose to filter the original
34144output frames to effectively reduce the noise to the same level as a frame that was
34145captured with longer exposure time.<wbr/> To be more specific,<wbr/> assuming the original captured
34146images were captured with a sensitivity of S and an exposure time of T,<wbr/> the model in
34147the camera device is that the amount of noise in the image would be approximately what
34148would be expected if the original capture parameters had been a sensitivity of
34149S/<wbr/>effectiveExposureFactor and an exposure time of T*effectiveExposureFactor,<wbr/> rather
34150than S and T respectively.<wbr/> If the captured images were processed by the application
34151before being sent for reprocessing,<wbr/> then the application may have used image processing
34152algorithms and/<wbr/>or multi-frame image fusion to reduce the noise in the
34153application-processed images (input images).<wbr/> By using the effectiveExposureFactor
34154control,<wbr/> the application can communicate to the camera device the actual noise level
34155improvement in the application-processed image.<wbr/> With this information,<wbr/> the camera
34156device can select appropriate noise reduction and edge enhancement parameters to avoid
34157excessive noise reduction (<a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a>) and insufficient edge
34158enhancement (<a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a>) being applied to the reprocessed frames.<wbr/></p>
34159<p>For example,<wbr/> for multi-frame image fusion use case,<wbr/> the application may fuse
34160multiple output frames together to a final frame for reprocessing.<wbr/> When N image are
34161fused into 1 image for reprocessing,<wbr/> the exposure time increase factor could be up to
34162square root of N (based on a simple photon shot noise model).<wbr/> The camera device will
34163adjust the reprocessing noise reduction and edge enhancement parameters accordingly to
34164produce the best quality images.<wbr/></p>
34165<p>This is relative factor,<wbr/> 1.<wbr/>0 indicates the application hasn't processed the input
34166buffer in a way that affects its effective exposure time.<wbr/></p>
34167<p>This control is only effective for YUV reprocessing capture request.<wbr/> For noise
34168reduction 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/>
34169Similarly,<wbr/> for edge enhancement reprocessing,<wbr/> it is only effective when
34170<code><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a> != OFF</code>.<wbr/></p>
34171            </td>
34172          </tr>
34173
34174
34175          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
34176           <!-- end of entry -->
34177
34178
34179
34180      <!-- end of kind -->
34181      </tbody>
34182      <tr><td colspan="7" class="kind">static</td></tr>
34183
34184      <thead class="entries_header">
34185        <tr>
34186          <th class="th_name">Property Name</th>
34187          <th class="th_type">Type</th>
34188          <th class="th_description">Description</th>
34189          <th class="th_units">Units</th>
34190          <th class="th_range">Range</th>
34191          <th class="th_hal_version">Initial HIDL HAL version</th>
34192          <th class="th_tags">Tags</th>
34193        </tr>
34194      </thead>
34195
34196      <tbody>
34197
34198
34199
34200
34201
34202
34203
34204
34205
34206
34207          <tr class="entry" id="static_android.reprocess.maxCaptureStall">
34208            <td class="entry_name
34209             " rowspan="3">
34210              android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall
34211            </td>
34212            <td class="entry_type">
34213                <span class="entry_type_name">int32</span>
34214
34215              <span class="entry_type_visibility"> [java_public]</span>
34216
34217
34218              <span class="entry_type_hwlevel">[limited] </span>
34219
34220
34221
34222
34223            </td> <!-- entry_type -->
34224
34225            <td class="entry_description">
34226              <p>The maximal camera capture pipeline stall (in unit of frame count) introduced by a
34227reprocess capture request.<wbr/></p>
34228            </td>
34229
34230            <td class="entry_units">
34231              Number of frames.<wbr/>
34232            </td>
34233
34234            <td class="entry_range">
34235              <p>&lt;= 4</p>
34236            </td>
34237
34238            <td class="entry_hal_version">
34239              <p>3.<wbr/>2</p>
34240            </td>
34241
34242            <td class="entry_tags">
34243              <ul class="entry_tags">
34244                  <li><a href="#tag_REPROC">REPROC</a></li>
34245              </ul>
34246            </td>
34247
34248          </tr>
34249          <tr class="entries_header">
34250            <th class="th_details" colspan="6">Details</th>
34251          </tr>
34252          <tr class="entry_cont">
34253            <td class="entry_details" colspan="6">
34254              <p>The key describes the maximal interference that one reprocess (input) request
34255can introduce to the camera simultaneous streaming of regular (output) capture
34256requests,<wbr/> including repeating requests.<wbr/></p>
34257<p>When a reprocessing capture request is submitted while a camera output repeating request
34258(e.<wbr/>g.<wbr/> preview) is being served by the camera device,<wbr/> it may preempt the camera capture
34259pipeline for at least one frame duration so that the camera device is unable to process
34260the following capture request in time for the next sensor start of exposure boundary.<wbr/>
34261When this happens,<wbr/> the application may observe a capture time gap (longer than one frame
34262duration) between adjacent capture output frames,<wbr/> which usually exhibits as preview
34263glitch if the repeating request output targets include a preview surface.<wbr/> This key gives
34264the worst-case number of frame stall introduced by one reprocess request with any kind of
34265formats/<wbr/>sizes combination.<wbr/></p>
34266<p>If this key reports 0,<wbr/> it means a reprocess request doesn't introduce any glitch to the
34267ongoing camera repeating request outputs,<wbr/> as if this reprocess request is never issued.<wbr/></p>
34268<p>This key is supported if the camera device supports PRIVATE or YUV reprocessing (
34269i.<wbr/>e.<wbr/> <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains PRIVATE_<wbr/>REPROCESSING or
34270YUV_<wbr/>REPROCESSING).<wbr/></p>
34271            </td>
34272          </tr>
34273
34274
34275          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
34276           <!-- end of entry -->
34277
34278
34279
34280      <!-- end of kind -->
34281      </tbody>
34282
34283  <!-- end of section -->
34284  <tr><td colspan="7" id="section_depth" class="section">depth</td></tr>
34285
34286
34287      <tr><td colspan="7" class="kind">static</td></tr>
34288
34289      <thead class="entries_header">
34290        <tr>
34291          <th class="th_name">Property Name</th>
34292          <th class="th_type">Type</th>
34293          <th class="th_description">Description</th>
34294          <th class="th_units">Units</th>
34295          <th class="th_range">Range</th>
34296          <th class="th_hal_version">Initial HIDL HAL version</th>
34297          <th class="th_tags">Tags</th>
34298        </tr>
34299      </thead>
34300
34301      <tbody>
34302
34303
34304
34305
34306
34307
34308
34309
34310
34311
34312          <tr class="entry" id="static_android.depth.maxDepthSamples">
34313            <td class="entry_name
34314             " rowspan="3">
34315              android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples
34316            </td>
34317            <td class="entry_type">
34318                <span class="entry_type_name">int32</span>
34319
34320              <span class="entry_type_visibility"> [system]</span>
34321
34322
34323              <span class="entry_type_hwlevel">[limited] </span>
34324
34325
34326
34327
34328            </td> <!-- entry_type -->
34329
34330            <td class="entry_description">
34331              <p>Maximum number of points that a depth point cloud may contain.<wbr/></p>
34332            </td>
34333
34334            <td class="entry_units">
34335            </td>
34336
34337            <td class="entry_range">
34338            </td>
34339
34340            <td class="entry_hal_version">
34341              <p>3.<wbr/>2</p>
34342            </td>
34343
34344            <td class="entry_tags">
34345              <ul class="entry_tags">
34346                  <li><a href="#tag_DEPTH">DEPTH</a></li>
34347              </ul>
34348            </td>
34349
34350          </tr>
34351          <tr class="entries_header">
34352            <th class="th_details" colspan="6">Details</th>
34353          </tr>
34354          <tr class="entry_cont">
34355            <td class="entry_details" colspan="6">
34356              <p>If a camera device supports outputting depth range data in the form of a depth point
34357cloud (<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
34358number of points an output buffer may contain.<wbr/></p>
34359<p>Any given buffer may contain between 0 and maxDepthSamples points,<wbr/> inclusive.<wbr/>
34360If output in the depth point cloud format is not supported,<wbr/> this entry will
34361not be defined.<wbr/></p>
34362            </td>
34363          </tr>
34364
34365
34366          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
34367           <!-- end of entry -->
34368
34369
34370          <tr class="entry" id="static_android.depth.availableDepthStreamConfigurations">
34371            <td class="entry_name
34372             " rowspan="3">
34373              android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stream<wbr/>Configurations
34374            </td>
34375            <td class="entry_type">
34376                <span class="entry_type_name entry_type_name_enum">int32</span>
34377                <span class="entry_type_container">x</span>
34378
34379                <span class="entry_type_array">
34380                  n x 4
34381                </span>
34382              <span class="entry_type_visibility"> [ndk_public as streamConfiguration]</span>
34383
34384
34385              <span class="entry_type_hwlevel">[limited] </span>
34386
34387
34388
34389                <ul class="entry_type_enum">
34390                  <li>
34391                    <span class="entry_type_enum_name">OUTPUT (v3.2)</span>
34392                  </li>
34393                  <li>
34394                    <span class="entry_type_enum_name">INPUT (v3.2)</span>
34395                  </li>
34396                </ul>
34397
34398            </td> <!-- entry_type -->
34399
34400            <td class="entry_description">
34401              <p>The available depth dataspace stream
34402configurations that this camera device supports
34403(i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p>
34404            </td>
34405
34406            <td class="entry_units">
34407            </td>
34408
34409            <td class="entry_range">
34410            </td>
34411
34412            <td class="entry_hal_version">
34413              <p>3.<wbr/>2</p>
34414            </td>
34415
34416            <td class="entry_tags">
34417              <ul class="entry_tags">
34418                  <li><a href="#tag_DEPTH">DEPTH</a></li>
34419              </ul>
34420            </td>
34421
34422          </tr>
34423          <tr class="entries_header">
34424            <th class="th_details" colspan="6">Details</th>
34425          </tr>
34426          <tr class="entry_cont">
34427            <td class="entry_details" colspan="6">
34428              <p>These are output stream configurations for use with
34429dataSpace HAL_<wbr/>DATASPACE_<wbr/>DEPTH.<wbr/> The configurations are
34430listed as <code>(format,<wbr/> width,<wbr/> height,<wbr/> input?)</code> tuples.<wbr/></p>
34431<p>Only devices that support depth output for at least
34432the HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>Y16 dense depth map may include
34433this entry.<wbr/></p>
34434<p>A device that also supports the HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>BLOB
34435sparse depth point cloud must report a single entry for
34436the format in this list as <code>(HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>BLOB,<wbr/>
34437<a href="#static_android.depth.maxDepthSamples">android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples</a>,<wbr/> 1,<wbr/> OUTPUT)</code> in addition to
34438the entries for HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>Y16.<wbr/></p>
34439            </td>
34440          </tr>
34441
34442
34443          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
34444           <!-- end of entry -->
34445
34446
34447          <tr class="entry" id="static_android.depth.availableDepthMinFrameDurations">
34448            <td class="entry_name
34449             " rowspan="3">
34450              android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Min<wbr/>Frame<wbr/>Durations
34451            </td>
34452            <td class="entry_type">
34453                <span class="entry_type_name">int64</span>
34454                <span class="entry_type_container">x</span>
34455
34456                <span class="entry_type_array">
34457                  4 x n
34458                </span>
34459              <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
34460
34461
34462              <span class="entry_type_hwlevel">[limited] </span>
34463
34464
34465
34466
34467            </td> <!-- entry_type -->
34468
34469            <td class="entry_description">
34470              <p>This lists the minimum frame duration for each
34471format/<wbr/>size combination for depth output formats.<wbr/></p>
34472            </td>
34473
34474            <td class="entry_units">
34475              (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
34476            </td>
34477
34478            <td class="entry_range">
34479            </td>
34480
34481            <td class="entry_hal_version">
34482              <p>3.<wbr/>2</p>
34483            </td>
34484
34485            <td class="entry_tags">
34486              <ul class="entry_tags">
34487                  <li><a href="#tag_DEPTH">DEPTH</a></li>
34488              </ul>
34489            </td>
34490
34491          </tr>
34492          <tr class="entries_header">
34493            <th class="th_details" colspan="6">Details</th>
34494          </tr>
34495          <tr class="entry_cont">
34496            <td class="entry_details" colspan="6">
34497              <p>This should correspond to the frame duration when only that
34498stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode)
34499set to either OFF or FAST.<wbr/></p>
34500<p>When multiple streams are used in a request,<wbr/> the minimum frame
34501duration will be max(individual stream min durations).<wbr/></p>
34502<p>The minimum frame duration of a stream (of a particular format,<wbr/> size)
34503is the same regardless of whether the stream is input or output.<wbr/></p>
34504<p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> and
34505<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for more details about
34506calculating the max frame rate.<wbr/></p>
34507            </td>
34508          </tr>
34509
34510
34511          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
34512           <!-- end of entry -->
34513
34514
34515          <tr class="entry" id="static_android.depth.availableDepthStallDurations">
34516            <td class="entry_name
34517             " rowspan="3">
34518              android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stall<wbr/>Durations
34519            </td>
34520            <td class="entry_type">
34521                <span class="entry_type_name">int64</span>
34522                <span class="entry_type_container">x</span>
34523
34524                <span class="entry_type_array">
34525                  4 x n
34526                </span>
34527              <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
34528
34529
34530              <span class="entry_type_hwlevel">[limited] </span>
34531
34532
34533
34534
34535            </td> <!-- entry_type -->
34536
34537            <td class="entry_description">
34538              <p>This lists the maximum stall duration for each
34539output format/<wbr/>size combination for depth streams.<wbr/></p>
34540            </td>
34541
34542            <td class="entry_units">
34543              (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
34544            </td>
34545
34546            <td class="entry_range">
34547            </td>
34548
34549            <td class="entry_hal_version">
34550              <p>3.<wbr/>2</p>
34551            </td>
34552
34553            <td class="entry_tags">
34554              <ul class="entry_tags">
34555                  <li><a href="#tag_DEPTH">DEPTH</a></li>
34556              </ul>
34557            </td>
34558
34559          </tr>
34560          <tr class="entries_header">
34561            <th class="th_details" colspan="6">Details</th>
34562          </tr>
34563          <tr class="entry_cont">
34564            <td class="entry_details" colspan="6">
34565              <p>A stall duration is how much extra time would get added
34566to the normal minimum frame duration for a repeating request
34567that has streams with non-zero stall.<wbr/></p>
34568<p>This functions similarly to
34569<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for depth
34570streams.<wbr/></p>
34571<p>All depth output stream formats may have a nonzero stall
34572duration.<wbr/></p>
34573            </td>
34574          </tr>
34575
34576
34577          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
34578           <!-- end of entry -->
34579
34580
34581          <tr class="entry" id="static_android.depth.depthIsExclusive">
34582            <td class="entry_name
34583             " rowspan="3">
34584              android.<wbr/>depth.<wbr/>depth<wbr/>Is<wbr/>Exclusive
34585            </td>
34586            <td class="entry_type">
34587                <span class="entry_type_name entry_type_name_enum">byte</span>
34588
34589              <span class="entry_type_visibility"> [public as boolean]</span>
34590
34591
34592              <span class="entry_type_hwlevel">[limited] </span>
34593
34594
34595
34596                <ul class="entry_type_enum">
34597                  <li>
34598                    <span class="entry_type_enum_name">FALSE (v3.2)</span>
34599                  </li>
34600                  <li>
34601                    <span class="entry_type_enum_name">TRUE (v3.2)</span>
34602                  </li>
34603                </ul>
34604
34605            </td> <!-- entry_type -->
34606
34607            <td class="entry_description">
34608              <p>Indicates whether a capture request may target both a
34609DEPTH16 /<wbr/> DEPTH_<wbr/>POINT_<wbr/>CLOUD output,<wbr/> and normal color outputs (such as
34610YUV_<wbr/>420_<wbr/>888,<wbr/> JPEG,<wbr/> or RAW) simultaneously.<wbr/></p>
34611            </td>
34612
34613            <td class="entry_units">
34614            </td>
34615
34616            <td class="entry_range">
34617            </td>
34618
34619            <td class="entry_hal_version">
34620              <p>3.<wbr/>2</p>
34621            </td>
34622
34623            <td class="entry_tags">
34624            </td>
34625
34626          </tr>
34627          <tr class="entries_header">
34628            <th class="th_details" colspan="6">Details</th>
34629          </tr>
34630          <tr class="entry_cont">
34631            <td class="entry_details" colspan="6">
34632              <p>If TRUE,<wbr/> including both depth and color outputs in a single
34633capture request is not supported.<wbr/> An application must interleave color
34634and depth requests.<wbr/>  If FALSE,<wbr/> a single request can target both types
34635of output.<wbr/></p>
34636<p>Typically,<wbr/> this restriction exists on camera devices that
34637need to emit a specific pattern or wavelength of light to
34638measure depth values,<wbr/> which causes the color image to be
34639corrupted during depth measurement.<wbr/></p>
34640            </td>
34641          </tr>
34642
34643
34644          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
34645           <!-- end of entry -->
34646
34647
34648          <tr class="entry" id="static_android.depth.availableRecommendedDepthStreamConfigurations">
34649            <td class="entry_name
34650             " rowspan="5">
34651              android.<wbr/>depth.<wbr/>available<wbr/>Recommended<wbr/>Depth<wbr/>Stream<wbr/>Configurations
34652            </td>
34653            <td class="entry_type">
34654                <span class="entry_type_name">int32</span>
34655                <span class="entry_type_container">x</span>
34656
34657                <span class="entry_type_array">
34658                  n x 5
34659                </span>
34660              <span class="entry_type_visibility"> [ndk_public as recommendedStreamConfiguration]</span>
34661
34662
34663
34664
34665
34666
34667            </td> <!-- entry_type -->
34668
34669            <td class="entry_description">
34670              <p>Recommended depth stream configurations for common client use cases.<wbr/></p>
34671            </td>
34672
34673            <td class="entry_units">
34674            </td>
34675
34676            <td class="entry_range">
34677            </td>
34678
34679            <td class="entry_hal_version">
34680              <p>3.<wbr/>4</p>
34681            </td>
34682
34683            <td class="entry_tags">
34684            </td>
34685
34686          </tr>
34687          <tr class="entries_header">
34688            <th class="th_details" colspan="6">Details</th>
34689          </tr>
34690          <tr class="entry_cont">
34691            <td class="entry_details" colspan="6">
34692              <p>Optional subset of the <a href="#static_android.depth.availableDepthStreamConfigurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stream<wbr/>Configurations</a> that
34693contains similar tuples listed as
34694(i.<wbr/>e.<wbr/> width,<wbr/> height,<wbr/> format,<wbr/> output/<wbr/>input stream,<wbr/> usecase bit field).<wbr/>
34695Camera devices will be able to suggest particular depth stream configurations which are
34696power and performance efficient for specific use cases.<wbr/> For more information about
34697retrieving the suggestions see
34698<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getRecommendedStreamConfigurationMap">CameraCharacteristics#getRecommendedStreamConfigurationMap</a>.<wbr/></p>
34699            </td>
34700          </tr>
34701
34702          <tr class="entries_header">
34703            <th class="th_details" colspan="6">HAL Implementation Details</th>
34704          </tr>
34705          <tr class="entry_cont">
34706            <td class="entry_details" colspan="6">
34707              <p>Recommended depth configurations are expected to be declared with SNAPSHOT and/<wbr/>or
34708ZSL if supported by the device.<wbr/>
34709For additional details on how to declare recommended stream configurations,<wbr/> check
34710<a href="#static_android.scaler.availableRecommendedStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Recommended<wbr/>Stream<wbr/>Configurations</a>.<wbr/>
34711For additional requirements on depth streams please consider
34712<a href="#static_android.depth.availableDepthStreamConfigurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stream<wbr/>Configurations</a>.<wbr/></p>
34713            </td>
34714          </tr>
34715
34716          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
34717           <!-- end of entry -->
34718
34719
34720          <tr class="entry" id="static_android.depth.availableDynamicDepthStreamConfigurations">
34721            <td class="entry_name
34722             " rowspan="5">
34723              android.<wbr/>depth.<wbr/>available<wbr/>Dynamic<wbr/>Depth<wbr/>Stream<wbr/>Configurations
34724            </td>
34725            <td class="entry_type">
34726                <span class="entry_type_name entry_type_name_enum">int32</span>
34727                <span class="entry_type_container">x</span>
34728
34729                <span class="entry_type_array">
34730                  n x 4
34731                </span>
34732              <span class="entry_type_visibility"> [ndk_public as streamConfiguration]</span>
34733
34734
34735
34736
34737
34738                <ul class="entry_type_enum">
34739                  <li>
34740                    <span class="entry_type_enum_name">OUTPUT (v3.4)</span>
34741                  </li>
34742                  <li>
34743                    <span class="entry_type_enum_name">INPUT (v3.4)</span>
34744                  </li>
34745                </ul>
34746
34747            </td> <!-- entry_type -->
34748
34749            <td class="entry_description">
34750              <p>The available dynamic depth dataspace stream
34751configurations that this camera device supports
34752(i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p>
34753            </td>
34754
34755            <td class="entry_units">
34756            </td>
34757
34758            <td class="entry_range">
34759            </td>
34760
34761            <td class="entry_hal_version">
34762              <p>3.<wbr/>4</p>
34763            </td>
34764
34765            <td class="entry_tags">
34766              <ul class="entry_tags">
34767                  <li><a href="#tag_DEPTH">DEPTH</a></li>
34768              </ul>
34769            </td>
34770
34771          </tr>
34772          <tr class="entries_header">
34773            <th class="th_details" colspan="6">Details</th>
34774          </tr>
34775          <tr class="entry_cont">
34776            <td class="entry_details" colspan="6">
34777              <p>These are output stream configurations for use with
34778dataSpace DYNAMIC_<wbr/>DEPTH.<wbr/> The configurations are
34779listed as <code>(format,<wbr/> width,<wbr/> height,<wbr/> input?)</code> tuples.<wbr/></p>
34780<p>Only devices that support depth output for at least
34781the HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>Y16 dense depth map along with
34782HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>BLOB with the same size or size with
34783the same aspect ratio can have dynamic depth dataspace
34784stream configuration.<wbr/> <a href="#static_android.depth.depthIsExclusive">android.<wbr/>depth.<wbr/>depth<wbr/>Is<wbr/>Exclusive</a> also
34785needs to be set to FALSE.<wbr/></p>
34786            </td>
34787          </tr>
34788
34789          <tr class="entries_header">
34790            <th class="th_details" colspan="6">HAL Implementation Details</th>
34791          </tr>
34792          <tr class="entry_cont">
34793            <td class="entry_details" colspan="6">
34794              <p>Do not set this property directly.<wbr/>
34795It is populated by camera framework and must not be set
34796at the HAL layer.<wbr/></p>
34797            </td>
34798          </tr>
34799
34800          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
34801           <!-- end of entry -->
34802
34803
34804          <tr class="entry" id="static_android.depth.availableDynamicDepthMinFrameDurations">
34805            <td class="entry_name
34806             " rowspan="5">
34807              android.<wbr/>depth.<wbr/>available<wbr/>Dynamic<wbr/>Depth<wbr/>Min<wbr/>Frame<wbr/>Durations
34808            </td>
34809            <td class="entry_type">
34810                <span class="entry_type_name">int64</span>
34811                <span class="entry_type_container">x</span>
34812
34813                <span class="entry_type_array">
34814                  4 x n
34815                </span>
34816              <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
34817
34818
34819
34820
34821
34822
34823            </td> <!-- entry_type -->
34824
34825            <td class="entry_description">
34826              <p>This lists the minimum frame duration for each
34827format/<wbr/>size combination for dynamic depth output streams.<wbr/></p>
34828            </td>
34829
34830            <td class="entry_units">
34831              (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
34832            </td>
34833
34834            <td class="entry_range">
34835            </td>
34836
34837            <td class="entry_hal_version">
34838              <p>3.<wbr/>4</p>
34839            </td>
34840
34841            <td class="entry_tags">
34842              <ul class="entry_tags">
34843                  <li><a href="#tag_DEPTH">DEPTH</a></li>
34844              </ul>
34845            </td>
34846
34847          </tr>
34848          <tr class="entries_header">
34849            <th class="th_details" colspan="6">Details</th>
34850          </tr>
34851          <tr class="entry_cont">
34852            <td class="entry_details" colspan="6">
34853              <p>This should correspond to the frame duration when only that
34854stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode)
34855set to either OFF or FAST.<wbr/></p>
34856<p>When multiple streams are used in a request,<wbr/> the minimum frame
34857duration will be max(individual stream min durations).<wbr/></p>
34858<p>The minimum frame duration of a stream (of a particular format,<wbr/> size)
34859is the same regardless of whether the stream is input or output.<wbr/></p>
34860            </td>
34861          </tr>
34862
34863          <tr class="entries_header">
34864            <th class="th_details" colspan="6">HAL Implementation Details</th>
34865          </tr>
34866          <tr class="entry_cont">
34867            <td class="entry_details" colspan="6">
34868              <p>Do not set this property directly.<wbr/>
34869It is populated by camera framework and must not be set
34870at the HAL layer.<wbr/></p>
34871            </td>
34872          </tr>
34873
34874          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
34875           <!-- end of entry -->
34876
34877
34878          <tr class="entry" id="static_android.depth.availableDynamicDepthStallDurations">
34879            <td class="entry_name
34880             " rowspan="5">
34881              android.<wbr/>depth.<wbr/>available<wbr/>Dynamic<wbr/>Depth<wbr/>Stall<wbr/>Durations
34882            </td>
34883            <td class="entry_type">
34884                <span class="entry_type_name">int64</span>
34885                <span class="entry_type_container">x</span>
34886
34887                <span class="entry_type_array">
34888                  4 x n
34889                </span>
34890              <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
34891
34892
34893
34894
34895
34896
34897            </td> <!-- entry_type -->
34898
34899            <td class="entry_description">
34900              <p>This lists the maximum stall duration for each
34901output format/<wbr/>size combination for dynamic depth streams.<wbr/></p>
34902            </td>
34903
34904            <td class="entry_units">
34905              (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
34906            </td>
34907
34908            <td class="entry_range">
34909            </td>
34910
34911            <td class="entry_hal_version">
34912              <p>3.<wbr/>4</p>
34913            </td>
34914
34915            <td class="entry_tags">
34916              <ul class="entry_tags">
34917                  <li><a href="#tag_DEPTH">DEPTH</a></li>
34918              </ul>
34919            </td>
34920
34921          </tr>
34922          <tr class="entries_header">
34923            <th class="th_details" colspan="6">Details</th>
34924          </tr>
34925          <tr class="entry_cont">
34926            <td class="entry_details" colspan="6">
34927              <p>A stall duration is how much extra time would get added
34928to the normal minimum frame duration for a repeating request
34929that has streams with non-zero stall.<wbr/></p>
34930<p>All dynamic depth output streams may have a nonzero stall
34931duration.<wbr/></p>
34932            </td>
34933          </tr>
34934
34935          <tr class="entries_header">
34936            <th class="th_details" colspan="6">HAL Implementation Details</th>
34937          </tr>
34938          <tr class="entry_cont">
34939            <td class="entry_details" colspan="6">
34940              <p>Do not set this property directly.<wbr/>
34941It is populated by camera framework and must not be set
34942at the HAL layer.<wbr/></p>
34943            </td>
34944          </tr>
34945
34946          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
34947           <!-- end of entry -->
34948
34949
34950          <tr class="entry" id="static_android.depth.availableDepthStreamConfigurationsMaximumResolution">
34951            <td class="entry_name
34952             " rowspan="3">
34953              android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stream<wbr/>Configurations<wbr/>Maximum<wbr/>Resolution
34954            </td>
34955            <td class="entry_type">
34956                <span class="entry_type_name entry_type_name_enum">int32</span>
34957                <span class="entry_type_container">x</span>
34958
34959                <span class="entry_type_array">
34960                  n x 4
34961                </span>
34962              <span class="entry_type_visibility"> [ndk_public as streamConfiguration]</span>
34963
34964
34965
34966
34967
34968                <ul class="entry_type_enum">
34969                  <li>
34970                    <span class="entry_type_enum_name">OUTPUT (v3.6)</span>
34971                  </li>
34972                  <li>
34973                    <span class="entry_type_enum_name">INPUT (v3.6)</span>
34974                  </li>
34975                </ul>
34976
34977            </td> <!-- entry_type -->
34978
34979            <td class="entry_description">
34980              <p>The available depth dataspace stream
34981configurations that this camera device supports
34982(i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream) when a CaptureRequest is submitted with
34983<a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> set to
34984<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>
34985            </td>
34986
34987            <td class="entry_units">
34988            </td>
34989
34990            <td class="entry_range">
34991            </td>
34992
34993            <td class="entry_hal_version">
34994              <p>3.<wbr/>6</p>
34995            </td>
34996
34997            <td class="entry_tags">
34998              <ul class="entry_tags">
34999                  <li><a href="#tag_DEPTH">DEPTH</a></li>
35000              </ul>
35001            </td>
35002
35003          </tr>
35004          <tr class="entries_header">
35005            <th class="th_details" colspan="6">Details</th>
35006          </tr>
35007          <tr class="entry_cont">
35008            <td class="entry_details" colspan="6">
35009              <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
35010are applicable when <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to
35011<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>
35012            </td>
35013          </tr>
35014
35015
35016          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
35017           <!-- end of entry -->
35018
35019
35020          <tr class="entry" id="static_android.depth.availableDepthMinFrameDurationsMaximumResolution">
35021            <td class="entry_name
35022             " rowspan="3">
35023              android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Min<wbr/>Frame<wbr/>Durations<wbr/>Maximum<wbr/>Resolution
35024            </td>
35025            <td class="entry_type">
35026                <span class="entry_type_name">int64</span>
35027                <span class="entry_type_container">x</span>
35028
35029                <span class="entry_type_array">
35030                  4 x n
35031                </span>
35032              <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
35033
35034
35035
35036
35037
35038
35039            </td> <!-- entry_type -->
35040
35041            <td class="entry_description">
35042              <p>This lists the minimum frame duration for each
35043format/<wbr/>size combination for depth output formats when a CaptureRequest is submitted with
35044<a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> set to
35045<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>
35046            </td>
35047
35048            <td class="entry_units">
35049              (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
35050            </td>
35051
35052            <td class="entry_range">
35053            </td>
35054
35055            <td class="entry_hal_version">
35056              <p>3.<wbr/>6</p>
35057            </td>
35058
35059            <td class="entry_tags">
35060              <ul class="entry_tags">
35061                  <li><a href="#tag_DEPTH">DEPTH</a></li>
35062              </ul>
35063            </td>
35064
35065          </tr>
35066          <tr class="entries_header">
35067            <th class="th_details" colspan="6">Details</th>
35068          </tr>
35069          <tr class="entry_cont">
35070            <td class="entry_details" colspan="6">
35071              <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
35072are applicable when <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to
35073<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>
35074<p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> and
35075<a href="#static_android.scaler.availableStallDurationsMaximumResolution">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations<wbr/>Maximum<wbr/>Resolution</a> for more details about
35076calculating the max frame rate.<wbr/></p>
35077            </td>
35078          </tr>
35079
35080
35081          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
35082           <!-- end of entry -->
35083
35084
35085          <tr class="entry" id="static_android.depth.availableDepthStallDurationsMaximumResolution">
35086            <td class="entry_name
35087             " rowspan="3">
35088              android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stall<wbr/>Durations<wbr/>Maximum<wbr/>Resolution
35089            </td>
35090            <td class="entry_type">
35091                <span class="entry_type_name">int64</span>
35092                <span class="entry_type_container">x</span>
35093
35094                <span class="entry_type_array">
35095                  4 x n
35096                </span>
35097              <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
35098
35099
35100
35101
35102
35103
35104            </td> <!-- entry_type -->
35105
35106            <td class="entry_description">
35107              <p>This lists the maximum stall duration for each
35108output format/<wbr/>size combination for depth streams for CaptureRequests where
35109<a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to
35110<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>
35111            </td>
35112
35113            <td class="entry_units">
35114              (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
35115            </td>
35116
35117            <td class="entry_range">
35118            </td>
35119
35120            <td class="entry_hal_version">
35121              <p>3.<wbr/>6</p>
35122            </td>
35123
35124            <td class="entry_tags">
35125              <ul class="entry_tags">
35126                  <li><a href="#tag_DEPTH">DEPTH</a></li>
35127              </ul>
35128            </td>
35129
35130          </tr>
35131          <tr class="entries_header">
35132            <th class="th_details" colspan="6">Details</th>
35133          </tr>
35134          <tr class="entry_cont">
35135            <td class="entry_details" colspan="6">
35136              <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
35137are applicable when <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to
35138<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>
35139            </td>
35140          </tr>
35141
35142
35143          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
35144           <!-- end of entry -->
35145
35146
35147          <tr class="entry" id="static_android.depth.availableDynamicDepthStreamConfigurationsMaximumResolution">
35148            <td class="entry_name
35149             " rowspan="5">
35150              android.<wbr/>depth.<wbr/>available<wbr/>Dynamic<wbr/>Depth<wbr/>Stream<wbr/>Configurations<wbr/>Maximum<wbr/>Resolution
35151            </td>
35152            <td class="entry_type">
35153                <span class="entry_type_name entry_type_name_enum">int32</span>
35154                <span class="entry_type_container">x</span>
35155
35156                <span class="entry_type_array">
35157                  n x 4
35158                </span>
35159              <span class="entry_type_visibility"> [ndk_public as streamConfiguration]</span>
35160
35161
35162
35163
35164
35165                <ul class="entry_type_enum">
35166                  <li>
35167                    <span class="entry_type_enum_name">OUTPUT (v3.6)</span>
35168                  </li>
35169                  <li>
35170                    <span class="entry_type_enum_name">INPUT (v3.6)</span>
35171                  </li>
35172                </ul>
35173
35174            </td> <!-- entry_type -->
35175
35176            <td class="entry_description">
35177              <p>The available dynamic depth dataspace stream
35178configurations that this camera device supports (i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/>
35179output/<wbr/>input stream) for CaptureRequests where <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to
35180<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>
35181            </td>
35182
35183            <td class="entry_units">
35184            </td>
35185
35186            <td class="entry_range">
35187            </td>
35188
35189            <td class="entry_hal_version">
35190              <p>3.<wbr/>6</p>
35191            </td>
35192
35193            <td class="entry_tags">
35194              <ul class="entry_tags">
35195                  <li><a href="#tag_DEPTH">DEPTH</a></li>
35196              </ul>
35197            </td>
35198
35199          </tr>
35200          <tr class="entries_header">
35201            <th class="th_details" colspan="6">Details</th>
35202          </tr>
35203          <tr class="entry_cont">
35204            <td class="entry_details" colspan="6">
35205              <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
35206which are applicable when <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to
35207<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>
35208            </td>
35209          </tr>
35210
35211          <tr class="entries_header">
35212            <th class="th_details" colspan="6">HAL Implementation Details</th>
35213          </tr>
35214          <tr class="entry_cont">
35215            <td class="entry_details" colspan="6">
35216              <p>Do not set this property directly.<wbr/>
35217It is populated by camera framework and must not be set
35218at the HAL layer.<wbr/></p>
35219            </td>
35220          </tr>
35221
35222          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
35223           <!-- end of entry -->
35224
35225
35226          <tr class="entry" id="static_android.depth.availableDynamicDepthMinFrameDurationsMaximumResolution">
35227            <td class="entry_name
35228             " rowspan="5">
35229              android.<wbr/>depth.<wbr/>available<wbr/>Dynamic<wbr/>Depth<wbr/>Min<wbr/>Frame<wbr/>Durations<wbr/>Maximum<wbr/>Resolution
35230            </td>
35231            <td class="entry_type">
35232                <span class="entry_type_name">int64</span>
35233                <span class="entry_type_container">x</span>
35234
35235                <span class="entry_type_array">
35236                  4 x n
35237                </span>
35238              <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
35239
35240
35241
35242
35243
35244
35245            </td> <!-- entry_type -->
35246
35247            <td class="entry_description">
35248              <p>This lists the minimum frame duration for each
35249format/<wbr/>size combination for dynamic depth output streams  for CaptureRequests where
35250<a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to
35251<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>
35252            </td>
35253
35254            <td class="entry_units">
35255              (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
35256            </td>
35257
35258            <td class="entry_range">
35259            </td>
35260
35261            <td class="entry_hal_version">
35262              <p>3.<wbr/>6</p>
35263            </td>
35264
35265            <td class="entry_tags">
35266              <ul class="entry_tags">
35267                  <li><a href="#tag_DEPTH">DEPTH</a></li>
35268              </ul>
35269            </td>
35270
35271          </tr>
35272          <tr class="entries_header">
35273            <th class="th_details" colspan="6">Details</th>
35274          </tr>
35275          <tr class="entry_cont">
35276            <td class="entry_details" colspan="6">
35277              <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
35278which are applicable when <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to
35279<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>
35280            </td>
35281          </tr>
35282
35283          <tr class="entries_header">
35284            <th class="th_details" colspan="6">HAL Implementation Details</th>
35285          </tr>
35286          <tr class="entry_cont">
35287            <td class="entry_details" colspan="6">
35288              <p>Do not set this property directly.<wbr/>
35289It is populated by camera framework and must not be set
35290at the HAL layer.<wbr/></p>
35291            </td>
35292          </tr>
35293
35294          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
35295           <!-- end of entry -->
35296
35297
35298          <tr class="entry" id="static_android.depth.availableDynamicDepthStallDurationsMaximumResolution">
35299            <td class="entry_name
35300             " rowspan="5">
35301              android.<wbr/>depth.<wbr/>available<wbr/>Dynamic<wbr/>Depth<wbr/>Stall<wbr/>Durations<wbr/>Maximum<wbr/>Resolution
35302            </td>
35303            <td class="entry_type">
35304                <span class="entry_type_name">int64</span>
35305                <span class="entry_type_container">x</span>
35306
35307                <span class="entry_type_array">
35308                  4 x n
35309                </span>
35310              <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
35311
35312
35313
35314
35315
35316
35317            </td> <!-- entry_type -->
35318
35319            <td class="entry_description">
35320              <p>This lists the maximum stall duration for each
35321output format/<wbr/>size combination for dynamic depth streams for CaptureRequests where
35322<a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to
35323<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>
35324            </td>
35325
35326            <td class="entry_units">
35327              (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
35328            </td>
35329
35330            <td class="entry_range">
35331            </td>
35332
35333            <td class="entry_hal_version">
35334              <p>3.<wbr/>6</p>
35335            </td>
35336
35337            <td class="entry_tags">
35338              <ul class="entry_tags">
35339                  <li><a href="#tag_DEPTH">DEPTH</a></li>
35340              </ul>
35341            </td>
35342
35343          </tr>
35344          <tr class="entries_header">
35345            <th class="th_details" colspan="6">Details</th>
35346          </tr>
35347          <tr class="entry_cont">
35348            <td class="entry_details" colspan="6">
35349              <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
35350which are applicable when <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to
35351<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>
35352            </td>
35353          </tr>
35354
35355          <tr class="entries_header">
35356            <th class="th_details" colspan="6">HAL Implementation Details</th>
35357          </tr>
35358          <tr class="entry_cont">
35359            <td class="entry_details" colspan="6">
35360              <p>Do not set this property directly.<wbr/>
35361It is populated by camera framework and must not be set
35362at the HAL layer.<wbr/></p>
35363            </td>
35364          </tr>
35365
35366          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
35367           <!-- end of entry -->
35368
35369
35370
35371      <!-- end of kind -->
35372      </tbody>
35373
35374  <!-- end of section -->
35375  <tr><td colspan="7" id="section_logicalMultiCamera" class="section">logicalMultiCamera</td></tr>
35376
35377
35378      <tr><td colspan="7" class="kind">static</td></tr>
35379
35380      <thead class="entries_header">
35381        <tr>
35382          <th class="th_name">Property Name</th>
35383          <th class="th_type">Type</th>
35384          <th class="th_description">Description</th>
35385          <th class="th_units">Units</th>
35386          <th class="th_range">Range</th>
35387          <th class="th_hal_version">Initial HIDL HAL version</th>
35388          <th class="th_tags">Tags</th>
35389        </tr>
35390      </thead>
35391
35392      <tbody>
35393
35394
35395
35396
35397
35398
35399
35400
35401
35402
35403          <tr class="entry" id="static_android.logicalMultiCamera.physicalIds">
35404            <td class="entry_name
35405             " rowspan="3">
35406              android.<wbr/>logical<wbr/>Multi<wbr/>Camera.<wbr/>physical<wbr/>Ids
35407            </td>
35408            <td class="entry_type">
35409                <span class="entry_type_name">byte</span>
35410                <span class="entry_type_container">x</span>
35411
35412                <span class="entry_type_array">
35413                  n
35414                </span>
35415              <span class="entry_type_visibility"> [ndk_public]</span>
35416
35417
35418              <span class="entry_type_hwlevel">[limited] </span>
35419
35420
35421
35422
35423            </td> <!-- entry_type -->
35424
35425            <td class="entry_description">
35426              <p>String containing the ids of the underlying physical cameras.<wbr/></p>
35427            </td>
35428
35429            <td class="entry_units">
35430              UTF-8 null-terminated string
35431            </td>
35432
35433            <td class="entry_range">
35434            </td>
35435
35436            <td class="entry_hal_version">
35437              <p>3.<wbr/>3</p>
35438            </td>
35439
35440            <td class="entry_tags">
35441              <ul class="entry_tags">
35442                  <li><a href="#tag_LOGICALCAMERA">LOGICALCAMERA</a></li>
35443              </ul>
35444            </td>
35445
35446          </tr>
35447          <tr class="entries_header">
35448            <th class="th_details" colspan="6">Details</th>
35449          </tr>
35450          <tr class="entry_cont">
35451            <td class="entry_details" colspan="6">
35452              <p>For a logical camera,<wbr/> this is concatenation of all underlying physical camera IDs.<wbr/>
35453The null terminator for physical camera ID must be preserved so that the whole string
35454can be tokenized using '\0' to generate list of physical camera IDs.<wbr/></p>
35455<p>For example,<wbr/> if the physical camera IDs of the logical camera are "2" and "3",<wbr/> the
35456value of this tag will be ['2',<wbr/> '\0',<wbr/> '3',<wbr/> '\0'].<wbr/></p>
35457<p>The number of physical camera IDs must be no less than 2.<wbr/></p>
35458            </td>
35459          </tr>
35460
35461
35462          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
35463           <!-- end of entry -->
35464
35465
35466          <tr class="entry" id="static_android.logicalMultiCamera.sensorSyncType">
35467            <td class="entry_name
35468             " rowspan="3">
35469              android.<wbr/>logical<wbr/>Multi<wbr/>Camera.<wbr/>sensor<wbr/>Sync<wbr/>Type
35470            </td>
35471            <td class="entry_type">
35472                <span class="entry_type_name entry_type_name_enum">byte</span>
35473
35474              <span class="entry_type_visibility"> [public]</span>
35475
35476
35477              <span class="entry_type_hwlevel">[limited] </span>
35478
35479
35480
35481                <ul class="entry_type_enum">
35482                  <li>
35483                    <span class="entry_type_enum_name">APPROXIMATE (v3.3)</span>
35484                    <span class="entry_type_enum_notes"><p>A software mechanism is used to synchronize between the physical cameras.<wbr/> As a result,<wbr/>
35485the timestamp of an image from a physical stream is only an approximation of the
35486image sensor start-of-exposure time.<wbr/></p></span>
35487                  </li>
35488                  <li>
35489                    <span class="entry_type_enum_name">CALIBRATED (v3.3)</span>
35490                    <span class="entry_type_enum_notes"><p>The camera device supports frame timestamp synchronization at the hardware level,<wbr/>
35491and the timestamp of a physical stream image accurately reflects its
35492start-of-exposure time.<wbr/></p></span>
35493                  </li>
35494                </ul>
35495
35496            </td> <!-- entry_type -->
35497
35498            <td class="entry_description">
35499              <p>The accuracy of frame timestamp synchronization between physical cameras</p>
35500            </td>
35501
35502            <td class="entry_units">
35503            </td>
35504
35505            <td class="entry_range">
35506            </td>
35507
35508            <td class="entry_hal_version">
35509              <p>3.<wbr/>3</p>
35510            </td>
35511
35512            <td class="entry_tags">
35513              <ul class="entry_tags">
35514                  <li><a href="#tag_LOGICALCAMERA">LOGICALCAMERA</a></li>
35515              </ul>
35516            </td>
35517
35518          </tr>
35519          <tr class="entries_header">
35520            <th class="th_details" colspan="6">Details</th>
35521          </tr>
35522          <tr class="entry_cont">
35523            <td class="entry_details" colspan="6">
35524              <p>The accuracy of the frame timestamp synchronization determines the physical cameras'
35525ability to start exposure at the same time.<wbr/> If the sensorSyncType is CALIBRATED,<wbr/> the
35526physical camera sensors usually run in leader/<wbr/>follower mode where one sensor generates a
35527timing signal for the other,<wbr/> so that their shutter time is synchronized.<wbr/> For APPROXIMATE
35528sensorSyncType,<wbr/> the camera sensors usually run in leader/<wbr/>leader mode,<wbr/> where both sensors
35529use their own timing generator,<wbr/> and there could be offset between their start of exposure.<wbr/></p>
35530<p>In both cases,<wbr/> all images generated for a particular capture request still carry the same
35531timestamps,<wbr/> so that they can be used to look up the matching frame number and
35532onCaptureStarted callback.<wbr/></p>
35533<p>This tag is only applicable if the logical camera device supports concurrent physical
35534streams from different physical cameras.<wbr/></p>
35535            </td>
35536          </tr>
35537
35538
35539          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
35540           <!-- end of entry -->
35541
35542
35543
35544      <!-- end of kind -->
35545      </tbody>
35546      <tr><td colspan="7" class="kind">dynamic</td></tr>
35547
35548      <thead class="entries_header">
35549        <tr>
35550          <th class="th_name">Property Name</th>
35551          <th class="th_type">Type</th>
35552          <th class="th_description">Description</th>
35553          <th class="th_units">Units</th>
35554          <th class="th_range">Range</th>
35555          <th class="th_hal_version">Initial HIDL HAL version</th>
35556          <th class="th_tags">Tags</th>
35557        </tr>
35558      </thead>
35559
35560      <tbody>
35561
35562
35563
35564
35565
35566
35567
35568
35569
35570
35571          <tr class="entry" id="dynamic_android.logicalMultiCamera.activePhysicalId">
35572            <td class="entry_name
35573             " rowspan="5">
35574              android.<wbr/>logical<wbr/>Multi<wbr/>Camera.<wbr/>active<wbr/>Physical<wbr/>Id
35575            </td>
35576            <td class="entry_type">
35577                <span class="entry_type_name">byte</span>
35578
35579              <span class="entry_type_visibility"> [public as string]</span>
35580
35581
35582
35583
35584
35585
35586            </td> <!-- entry_type -->
35587
35588            <td class="entry_description">
35589              <p>String containing the ID of the underlying active physical camera.<wbr/></p>
35590            </td>
35591
35592            <td class="entry_units">
35593              UTF-8 null-terminated string
35594            </td>
35595
35596            <td class="entry_range">
35597            </td>
35598
35599            <td class="entry_hal_version">
35600              <p>3.<wbr/>4</p>
35601            </td>
35602
35603            <td class="entry_tags">
35604              <ul class="entry_tags">
35605                  <li><a href="#tag_LOGICALCAMERA">LOGICALCAMERA</a></li>
35606              </ul>
35607            </td>
35608
35609          </tr>
35610          <tr class="entries_header">
35611            <th class="th_details" colspan="6">Details</th>
35612          </tr>
35613          <tr class="entry_cont">
35614            <td class="entry_details" colspan="6">
35615              <p>The ID of the active physical camera that's backing the logical camera.<wbr/> All camera
35616streams and metadata that are not physical camera specific will be originating from this
35617physical camera.<wbr/></p>
35618<p>For a logical camera made up of physical cameras where each camera's lenses have
35619different characteristics,<wbr/> the camera device may choose to switch between the physical
35620cameras when application changes FOCAL_<wbr/>LENGTH or SCALER_<wbr/>CROP_<wbr/>REGION.<wbr/>
35621At the time of lens switch,<wbr/> this result metadata reflects the new active physical camera
35622ID.<wbr/></p>
35623<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/>
35624When available,<wbr/> this must be one of valid physical IDs backing this logical multi-camera.<wbr/>
35625If this key is not available for a logical multi-camera,<wbr/> the camera device implementation
35626may still switch between different active physical cameras based on use case,<wbr/> but the
35627current active physical camera information won't be available to the application.<wbr/></p>
35628            </td>
35629          </tr>
35630
35631          <tr class="entries_header">
35632            <th class="th_details" colspan="6">HAL Implementation Details</th>
35633          </tr>
35634          <tr class="entry_cont">
35635            <td class="entry_details" colspan="6">
35636              <p>Staring from HIDL ICameraDevice version 3.<wbr/>5,<wbr/> the tag must be available in the capture
35637result metadata to indicate current active physical camera ID.<wbr/></p>
35638            </td>
35639          </tr>
35640
35641          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
35642           <!-- end of entry -->
35643
35644
35645
35646      <!-- end of kind -->
35647      </tbody>
35648
35649  <!-- end of section -->
35650  <tr><td colspan="7" id="section_distortionCorrection" class="section">distortionCorrection</td></tr>
35651
35652
35653      <tr><td colspan="7" class="kind">controls</td></tr>
35654
35655      <thead class="entries_header">
35656        <tr>
35657          <th class="th_name">Property Name</th>
35658          <th class="th_type">Type</th>
35659          <th class="th_description">Description</th>
35660          <th class="th_units">Units</th>
35661          <th class="th_range">Range</th>
35662          <th class="th_hal_version">Initial HIDL HAL version</th>
35663          <th class="th_tags">Tags</th>
35664        </tr>
35665      </thead>
35666
35667      <tbody>
35668
35669
35670
35671
35672
35673
35674
35675
35676
35677
35678          <tr class="entry" id="controls_android.distortionCorrection.mode">
35679            <td class="entry_name
35680             " rowspan="3">
35681              android.<wbr/>distortion<wbr/>Correction.<wbr/>mode
35682            </td>
35683            <td class="entry_type">
35684                <span class="entry_type_name entry_type_name_enum">byte</span>
35685
35686              <span class="entry_type_visibility"> [public]</span>
35687
35688
35689
35690
35691
35692                <ul class="entry_type_enum">
35693                  <li>
35694                    <span class="entry_type_enum_name">OFF (v3.3)</span>
35695                    <span class="entry_type_enum_notes"><p>No distortion correction is applied.<wbr/></p></span>
35696                  </li>
35697                  <li>
35698                    <span class="entry_type_enum_name">FAST (v3.3)</span>
35699                    <span class="entry_type_enum_notes"><p>Lens distortion correction is applied without reducing frame rate
35700relative to sensor output.<wbr/> It may be the same as OFF if distortion correction would
35701reduce frame rate relative to sensor.<wbr/></p></span>
35702                  </li>
35703                  <li>
35704                    <span class="entry_type_enum_name">HIGH_QUALITY (v3.3)</span>
35705                    <span class="entry_type_enum_notes"><p>High-quality distortion correction is applied,<wbr/> at the cost of
35706possibly reduced frame rate relative to sensor output.<wbr/></p></span>
35707                  </li>
35708                </ul>
35709
35710            </td> <!-- entry_type -->
35711
35712            <td class="entry_description">
35713              <p>Mode of operation for the lens distortion correction block.<wbr/></p>
35714            </td>
35715
35716            <td class="entry_units">
35717            </td>
35718
35719            <td class="entry_range">
35720              <p><a href="#static_android.distortionCorrection.availableModes">android.<wbr/>distortion<wbr/>Correction.<wbr/>available<wbr/>Modes</a></p>
35721            </td>
35722
35723            <td class="entry_hal_version">
35724              <p>3.<wbr/>3</p>
35725            </td>
35726
35727            <td class="entry_tags">
35728            </td>
35729
35730          </tr>
35731          <tr class="entries_header">
35732            <th class="th_details" colspan="6">Details</th>
35733          </tr>
35734          <tr class="entry_cont">
35735            <td class="entry_details" colspan="6">
35736              <p>The lens distortion correction block attempts to improve image quality by fixing
35737radial,<wbr/> tangential,<wbr/> or other geometric aberrations in the camera device's optics.<wbr/>  If
35738available,<wbr/> the <a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a> field documents the lens's distortion parameters.<wbr/></p>
35739<p>OFF means no distortion correction is done.<wbr/></p>
35740<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined distortion correction will be
35741applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device will use the highest-quality
35742correction algorithms,<wbr/> even if it slows down capture rate.<wbr/> FAST means the camera device
35743will not slow down capture rate when applying correction.<wbr/> FAST may be the same as OFF if
35744any correction at all would slow down capture rate.<wbr/>  Every output stream will have a
35745similar amount of enhancement applied.<wbr/></p>
35746<p>The correction only applies to processed outputs such as YUV,<wbr/> Y8,<wbr/> JPEG,<wbr/> or DEPTH16; it is
35747not applied to any RAW output.<wbr/></p>
35748<p>This control will be on by default on devices that support this control.<wbr/> Applications
35749disabling distortion correction need to pay extra attention with the coordinate system of
35750metering regions,<wbr/> crop region,<wbr/> and face rectangles.<wbr/> When distortion correction is OFF,<wbr/>
35751metadata coordinates follow the coordinate system of
35752<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
35753coordinates 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
35754camera device will map these metadata fields to match the corrected image produced by the
35755camera device,<wbr/> for both capture requests and results.<wbr/>  However,<wbr/> this mapping is not very
35756precise,<wbr/> since rectangles do not generally map to rectangles when corrected.<wbr/>  Only linear
35757scaling between the active array and precorrection active array coordinates is
35758performed.<wbr/> Applications that require precise correction of metadata need to undo that
35759linear scaling,<wbr/> and apply a more complete correction that takes into the account the app's
35760own requirements.<wbr/></p>
35761<p>The full list of metadata that is affected in this way by distortion correction is:</p>
35762<ul>
35763<li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li>
35764<li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li>
35765<li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li>
35766<li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li>
35767<li><a href="#dynamic_android.statistics.faces">android.<wbr/>statistics.<wbr/>faces</a></li>
35768</ul>
35769            </td>
35770          </tr>
35771
35772
35773          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
35774           <!-- end of entry -->
35775
35776
35777
35778      <!-- end of kind -->
35779      </tbody>
35780      <tr><td colspan="7" class="kind">static</td></tr>
35781
35782      <thead class="entries_header">
35783        <tr>
35784          <th class="th_name">Property Name</th>
35785          <th class="th_type">Type</th>
35786          <th class="th_description">Description</th>
35787          <th class="th_units">Units</th>
35788          <th class="th_range">Range</th>
35789          <th class="th_hal_version">Initial HIDL HAL version</th>
35790          <th class="th_tags">Tags</th>
35791        </tr>
35792      </thead>
35793
35794      <tbody>
35795
35796
35797
35798
35799
35800
35801
35802
35803
35804
35805          <tr class="entry" id="static_android.distortionCorrection.availableModes">
35806            <td class="entry_name
35807             " rowspan="5">
35808              android.<wbr/>distortion<wbr/>Correction.<wbr/>available<wbr/>Modes
35809            </td>
35810            <td class="entry_type">
35811                <span class="entry_type_name">byte</span>
35812                <span class="entry_type_container">x</span>
35813
35814                <span class="entry_type_array">
35815                  n
35816                </span>
35817              <span class="entry_type_visibility"> [public as enumList]</span>
35818
35819
35820
35821
35822                <div class="entry_type_notes">list of enums</div>
35823
35824
35825            </td> <!-- entry_type -->
35826
35827            <td class="entry_description">
35828              <p>List of distortion correction modes for <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> that are
35829supported by this camera device.<wbr/></p>
35830            </td>
35831
35832            <td class="entry_units">
35833            </td>
35834
35835            <td class="entry_range">
35836              <p>Any value listed in <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a></p>
35837            </td>
35838
35839            <td class="entry_hal_version">
35840              <p>3.<wbr/>3</p>
35841            </td>
35842
35843            <td class="entry_tags">
35844              <ul class="entry_tags">
35845                  <li><a href="#tag_V1">V1</a></li>
35846                  <li><a href="#tag_REPROC">REPROC</a></li>
35847              </ul>
35848            </td>
35849
35850          </tr>
35851          <tr class="entries_header">
35852            <th class="th_details" colspan="6">Details</th>
35853          </tr>
35854          <tr class="entry_cont">
35855            <td class="entry_details" colspan="6">
35856              <p>No device is required to support this API; such devices will always list only 'OFF'.<wbr/>
35857All devices that support this API will list both FAST and HIGH_<wbr/>QUALITY.<wbr/></p>
35858            </td>
35859          </tr>
35860
35861          <tr class="entries_header">
35862            <th class="th_details" colspan="6">HAL Implementation Details</th>
35863          </tr>
35864          <tr class="entry_cont">
35865            <td class="entry_details" colspan="6">
35866              <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if distortion correction is available
35867on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
35868That is,<wbr/> if the highest quality implementation on the camera device does not slow down
35869capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
35870            </td>
35871          </tr>
35872
35873          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
35874           <!-- end of entry -->
35875
35876
35877
35878      <!-- end of kind -->
35879      </tbody>
35880      <tr><td colspan="7" class="kind">dynamic</td></tr>
35881
35882      <thead class="entries_header">
35883        <tr>
35884          <th class="th_name">Property Name</th>
35885          <th class="th_type">Type</th>
35886          <th class="th_description">Description</th>
35887          <th class="th_units">Units</th>
35888          <th class="th_range">Range</th>
35889          <th class="th_hal_version">Initial HIDL HAL version</th>
35890          <th class="th_tags">Tags</th>
35891        </tr>
35892      </thead>
35893
35894      <tbody>
35895
35896
35897
35898
35899
35900
35901
35902
35903
35904
35905          <tr class="entry" id="dynamic_android.distortionCorrection.mode">
35906            <td class="entry_name
35907             " rowspan="3">
35908              android.<wbr/>distortion<wbr/>Correction.<wbr/>mode
35909            </td>
35910            <td class="entry_type">
35911                <span class="entry_type_name entry_type_name_enum">byte</span>
35912
35913              <span class="entry_type_visibility"> [public]</span>
35914
35915
35916
35917
35918
35919                <ul class="entry_type_enum">
35920                  <li>
35921                    <span class="entry_type_enum_name">OFF (v3.3)</span>
35922                    <span class="entry_type_enum_notes"><p>No distortion correction is applied.<wbr/></p></span>
35923                  </li>
35924                  <li>
35925                    <span class="entry_type_enum_name">FAST (v3.3)</span>
35926                    <span class="entry_type_enum_notes"><p>Lens distortion correction is applied without reducing frame rate
35927relative to sensor output.<wbr/> It may be the same as OFF if distortion correction would
35928reduce frame rate relative to sensor.<wbr/></p></span>
35929                  </li>
35930                  <li>
35931                    <span class="entry_type_enum_name">HIGH_QUALITY (v3.3)</span>
35932                    <span class="entry_type_enum_notes"><p>High-quality distortion correction is applied,<wbr/> at the cost of
35933possibly reduced frame rate relative to sensor output.<wbr/></p></span>
35934                  </li>
35935                </ul>
35936
35937            </td> <!-- entry_type -->
35938
35939            <td class="entry_description">
35940              <p>Mode of operation for the lens distortion correction block.<wbr/></p>
35941            </td>
35942
35943            <td class="entry_units">
35944            </td>
35945
35946            <td class="entry_range">
35947              <p><a href="#static_android.distortionCorrection.availableModes">android.<wbr/>distortion<wbr/>Correction.<wbr/>available<wbr/>Modes</a></p>
35948            </td>
35949
35950            <td class="entry_hal_version">
35951              <p>3.<wbr/>3</p>
35952            </td>
35953
35954            <td class="entry_tags">
35955            </td>
35956
35957          </tr>
35958          <tr class="entries_header">
35959            <th class="th_details" colspan="6">Details</th>
35960          </tr>
35961          <tr class="entry_cont">
35962            <td class="entry_details" colspan="6">
35963              <p>The lens distortion correction block attempts to improve image quality by fixing
35964radial,<wbr/> tangential,<wbr/> or other geometric aberrations in the camera device's optics.<wbr/>  If
35965available,<wbr/> the <a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a> field documents the lens's distortion parameters.<wbr/></p>
35966<p>OFF means no distortion correction is done.<wbr/></p>
35967<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined distortion correction will be
35968applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device will use the highest-quality
35969correction algorithms,<wbr/> even if it slows down capture rate.<wbr/> FAST means the camera device
35970will not slow down capture rate when applying correction.<wbr/> FAST may be the same as OFF if
35971any correction at all would slow down capture rate.<wbr/>  Every output stream will have a
35972similar amount of enhancement applied.<wbr/></p>
35973<p>The correction only applies to processed outputs such as YUV,<wbr/> Y8,<wbr/> JPEG,<wbr/> or DEPTH16; it is
35974not applied to any RAW output.<wbr/></p>
35975<p>This control will be on by default on devices that support this control.<wbr/> Applications
35976disabling distortion correction need to pay extra attention with the coordinate system of
35977metering regions,<wbr/> crop region,<wbr/> and face rectangles.<wbr/> When distortion correction is OFF,<wbr/>
35978metadata coordinates follow the coordinate system of
35979<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
35980coordinates 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
35981camera device will map these metadata fields to match the corrected image produced by the
35982camera device,<wbr/> for both capture requests and results.<wbr/>  However,<wbr/> this mapping is not very
35983precise,<wbr/> since rectangles do not generally map to rectangles when corrected.<wbr/>  Only linear
35984scaling between the active array and precorrection active array coordinates is
35985performed.<wbr/> Applications that require precise correction of metadata need to undo that
35986linear scaling,<wbr/> and apply a more complete correction that takes into the account the app's
35987own requirements.<wbr/></p>
35988<p>The full list of metadata that is affected in this way by distortion correction is:</p>
35989<ul>
35990<li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li>
35991<li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li>
35992<li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li>
35993<li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li>
35994<li><a href="#dynamic_android.statistics.faces">android.<wbr/>statistics.<wbr/>faces</a></li>
35995</ul>
35996            </td>
35997          </tr>
35998
35999
36000          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
36001           <!-- end of entry -->
36002
36003
36004
36005      <!-- end of kind -->
36006      </tbody>
36007
36008  <!-- end of section -->
36009  <tr><td colspan="7" id="section_heic" class="section">heic</td></tr>
36010
36011
36012      <tr><td colspan="7" class="kind">static</td></tr>
36013
36014      <thead class="entries_header">
36015        <tr>
36016          <th class="th_name">Property Name</th>
36017          <th class="th_type">Type</th>
36018          <th class="th_description">Description</th>
36019          <th class="th_units">Units</th>
36020          <th class="th_range">Range</th>
36021          <th class="th_hal_version">Initial HIDL HAL version</th>
36022          <th class="th_tags">Tags</th>
36023        </tr>
36024      </thead>
36025
36026      <tbody>
36027
36028
36029
36030
36031
36032
36033
36034
36035
36036
36037
36038
36039          <tr class="entry" id="static_android.heic.info.supported">
36040            <td class="entry_name
36041             " rowspan="3">
36042              android.<wbr/>heic.<wbr/>info.<wbr/>supported
36043            </td>
36044            <td class="entry_type">
36045                <span class="entry_type_name entry_type_name_enum">byte</span>
36046
36047              <span class="entry_type_visibility"> [system as boolean]</span>
36048
36049
36050              <span class="entry_type_hwlevel">[limited] </span>
36051
36052
36053
36054                <ul class="entry_type_enum">
36055                  <li>
36056                    <span class="entry_type_enum_name">FALSE (v3.4)</span>
36057                  </li>
36058                  <li>
36059                    <span class="entry_type_enum_name">TRUE (v3.4)</span>
36060                  </li>
36061                </ul>
36062
36063            </td> <!-- entry_type -->
36064
36065            <td class="entry_description">
36066              <p>Whether this camera device can support identical set of stream combinations
36067involving HEIC image format,<wbr/> compared to the
36068<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">table of combinations</a>
36069involving JPEG image format required for the device's hardware level and capabilities.<wbr/></p>
36070            </td>
36071
36072            <td class="entry_units">
36073            </td>
36074
36075            <td class="entry_range">
36076            </td>
36077
36078            <td class="entry_hal_version">
36079              <p>3.<wbr/>4</p>
36080            </td>
36081
36082            <td class="entry_tags">
36083              <ul class="entry_tags">
36084                  <li><a href="#tag_HEIC">HEIC</a></li>
36085              </ul>
36086            </td>
36087
36088          </tr>
36089          <tr class="entries_header">
36090            <th class="th_details" colspan="6">Details</th>
36091          </tr>
36092          <tr class="entry_cont">
36093            <td class="entry_details" colspan="6">
36094              <p>All the static,<wbr/> control and dynamic metadata tags related to JPEG apply to HEIC formats
36095as 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
36096used to control the orientation and quality of the HEIC image.<wbr/> Configuring JPEG and
36097HEIC streams at the same time is not supported.<wbr/></p>
36098<p>If a camera device supports HEIC format (ISO/<wbr/>IEC 23008-12),<wbr/> not only does it
36099support the existing mandatory stream
36100<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">combinations</a>
36101required for the device's hardware level and capabilities,<wbr/> it also supports swapping
36102each JPEG stream with HEIC stream in all guaranteed combinations.<wbr/></p>
36103<p>For every HEIC stream configured by the application,<wbr/> the camera framework sets up 2
36104internal streams with camera HAL:</p>
36105<ul>
36106<li>A YUV_<wbr/>420_<wbr/>888 or IMPLEMENTATION_<wbr/>DEFINED HAL stream as input to HEIC or HEVC encoder.<wbr/></li>
36107<li>A BLOB stream with JPEG_<wbr/>APPS_<wbr/>SEGMENTS dataspace to extract application markers
36108including EXIF and thumbnail to be saved in HEIF container.<wbr/></li>
36109</ul>
36110<p>A camera device can output HEIC format to the application if and only if:</p>
36111<ul>
36112<li>The system contains a HEIC or HEVC encoder with constant quality mode,<wbr/> and</li>
36113<li>This tag is set to TRUE,<wbr/> meaning that camera HAL supports replacing JPEG streams in
36114all mandatory stream combinations with a [YUV_<wbr/>420_<wbr/>888/<wbr/>IMPLEMENTATION_<wbr/>DEFINED stream +
36115JPEG_<wbr/>APPS_<wbr/>SEGMENT BLOB stream] combo.<wbr/></li>
36116</ul>
36117<p>As an example,<wbr/> if the camera device's hardware level is LIMITED,<wbr/> and it supports HEIC,<wbr/>
36118in addition to the required stream combinations,<wbr/> HAL must support below stream
36119combinations as well:</p>
36120<ul>
36121<li>IMPLEMENTATION_<wbr/>DEFINED/<wbr/>YUV_<wbr/>420_<wbr/>888 MAXIMUM + JPEG_<wbr/>SEGMENTS_<wbr/>BLOB,<wbr/></li>
36122<li>PRIV PREVIEW + IMPLEMENTATION_<wbr/>DEFINED/<wbr/>YUV_<wbr/>420_<wbr/>888 MAXIMUM + JPEG_<wbr/>SEGMENTS_<wbr/>BLOB,<wbr/></li>
36123<li>YUV PREVIEW + IMPLEMENTATION_<wbr/>DEFINED/<wbr/>YUV_<wbr/>420_<wbr/>888 MAXIMUM + JPEG_<wbr/>SEGMENTS_<wbr/>BLOB,<wbr/></li>
36124<li>PRIV PREVIEW + YUV PREVIEW + IMPLEMENTATION_<wbr/>DEFINED/<wbr/>YUV_<wbr/>420_<wbr/>888 MAXIMUM +
36125JPEG_<wbr/>SEGMENTS_<wbr/>BLOB</li>
36126</ul>
36127<p>The selection logic between YUV_<wbr/>420_<wbr/>888 and IMPLEMENTATION_<wbr/>DEFINED for HAL internal
36128stream is as follows:</p>
36129<pre><code>if (HEIC encoder exists and supports the size) {
36130    use IMPLEMENTATION_<wbr/>DEFINED with GRALLOC_<wbr/>USAGE_<wbr/>HW_<wbr/>IMAGE_<wbr/>ENCODER usage flag;
36131} else {
36132    //<wbr/> HVC encoder exists
36133    if (size is less than framework predefined tile size) {
36134        use IMPLEMENTATINO_<wbr/>DEFINED with GRALLOC_<wbr/>USAGE_<wbr/>HW_<wbr/>VIDEO_<wbr/>ENCODER usage flag;
36135    } else {
36136        use YUV_<wbr/>420_<wbr/>888;
36137    }
36138}
36139</code></pre>
36140            </td>
36141          </tr>
36142
36143
36144          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
36145           <!-- end of entry -->
36146
36147
36148          <tr class="entry" id="static_android.heic.info.maxJpegAppSegmentsCount">
36149            <td class="entry_name
36150             " rowspan="3">
36151              android.<wbr/>heic.<wbr/>info.<wbr/>max<wbr/>Jpeg<wbr/>App<wbr/>Segments<wbr/>Count
36152            </td>
36153            <td class="entry_type">
36154                <span class="entry_type_name">byte</span>
36155
36156              <span class="entry_type_visibility"> [system]</span>
36157
36158
36159              <span class="entry_type_hwlevel">[limited] </span>
36160
36161
36162
36163
36164            </td> <!-- entry_type -->
36165
36166            <td class="entry_description">
36167              <p>The maximum number of Jpeg APP segments supported by the camera HAL device.<wbr/></p>
36168            </td>
36169
36170            <td class="entry_units">
36171            </td>
36172
36173            <td class="entry_range">
36174            </td>
36175
36176            <td class="entry_hal_version">
36177              <p>3.<wbr/>4</p>
36178            </td>
36179
36180            <td class="entry_tags">
36181              <ul class="entry_tags">
36182                  <li><a href="#tag_HEIC">HEIC</a></li>
36183              </ul>
36184            </td>
36185
36186          </tr>
36187          <tr class="entries_header">
36188            <th class="th_details" colspan="6">Details</th>
36189          </tr>
36190          <tr class="entry_cont">
36191            <td class="entry_details" colspan="6">
36192              <p>The camera framework will use this value to derive the size of the BLOB buffer with
36193JPEG_<wbr/>APP_<wbr/>SEGMENTS dataspace,<wbr/> with each APP segment occupying at most 64K bytes.<wbr/> If the
36194value of this tag is n,<wbr/> the size of the framework allocated buffer will be:</p>
36195<pre><code>n * (2 + 0xFFFF) + sizeof(struct CameraBlob)
36196</code></pre>
36197<p>where 2 is number of bytes for APP marker,<wbr/> 0xFFFF is the maximum size per APP segment
36198(including segment size).<wbr/></p>
36199<p>The value of this tag must be at least 1,<wbr/> and APP1 marker (0xFFE1) segment must be the
36200first segment stored in the JPEG_<wbr/>APPS_<wbr/>SEGMENTS BLOB buffer.<wbr/> APP1 segment stores EXIF and
36201thumbnail.<wbr/></p>
36202<p>Since media encoder embeds the orientation in the metadata of the output image,<wbr/> to be
36203consistent between main image and thumbnail,<wbr/> camera HAL must not rotate the thumbnail
36204image data based on <a href="#controls_android.jpeg.orientation">android.<wbr/>jpeg.<wbr/>orientation</a>.<wbr/> The framework will write the orientation
36205into EXIF and HEIC container.<wbr/></p>
36206<p>APP1 segment is followed immediately by one or multiple APP2 segments,<wbr/> and APPn
36207segments.<wbr/> After the HAL fills and returns the JPEG_<wbr/>APP_<wbr/>SEGMENTS buffer,<wbr/> the camera
36208framework modifies the APP1 segment by filling in the EXIF tags that are related to
36209main image bitstream and the tags that can be derived from capture result metadata,<wbr/>
36210before saving them into the HEIC container.<wbr/></p>
36211<p>The value of this tag must not be more than 16.<wbr/></p>
36212            </td>
36213          </tr>
36214
36215
36216          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
36217           <!-- end of entry -->
36218
36219
36220
36221
36222
36223          <tr class="entry" id="static_android.heic.availableHeicStreamConfigurations">
36224            <td class="entry_name
36225             " rowspan="5">
36226              android.<wbr/>heic.<wbr/>available<wbr/>Heic<wbr/>Stream<wbr/>Configurations
36227            </td>
36228            <td class="entry_type">
36229                <span class="entry_type_name entry_type_name_enum">int32</span>
36230                <span class="entry_type_container">x</span>
36231
36232                <span class="entry_type_array">
36233                  n x 4
36234                </span>
36235              <span class="entry_type_visibility"> [ndk_public as streamConfiguration]</span>
36236
36237
36238              <span class="entry_type_hwlevel">[limited] </span>
36239
36240
36241
36242                <ul class="entry_type_enum">
36243                  <li>
36244                    <span class="entry_type_enum_name">OUTPUT (v3.4)</span>
36245                  </li>
36246                  <li>
36247                    <span class="entry_type_enum_name">INPUT (v3.4)</span>
36248                  </li>
36249                </ul>
36250
36251            </td> <!-- entry_type -->
36252
36253            <td class="entry_description">
36254              <p>The available HEIC (ISO/<wbr/>IEC 23008-12) stream
36255configurations that this camera device supports
36256(i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p>
36257            </td>
36258
36259            <td class="entry_units">
36260            </td>
36261
36262            <td class="entry_range">
36263            </td>
36264
36265            <td class="entry_hal_version">
36266              <p>3.<wbr/>4</p>
36267            </td>
36268
36269            <td class="entry_tags">
36270              <ul class="entry_tags">
36271                  <li><a href="#tag_HEIC">HEIC</a></li>
36272              </ul>
36273            </td>
36274
36275          </tr>
36276          <tr class="entries_header">
36277            <th class="th_details" colspan="6">Details</th>
36278          </tr>
36279          <tr class="entry_cont">
36280            <td class="entry_details" colspan="6">
36281              <p>The configurations are listed as <code>(format,<wbr/> width,<wbr/> height,<wbr/> input?)</code> tuples.<wbr/></p>
36282<p>If the camera device supports HEIC image format,<wbr/> it will support identical set of stream
36283combinations involving HEIC image format,<wbr/> compared to the combinations involving JPEG
36284image format as required by the device's hardware level and capabilities.<wbr/></p>
36285<p>All the static,<wbr/> control,<wbr/> and dynamic metadata tags related to JPEG apply to HEIC formats.<wbr/>
36286Configuring JPEG and HEIC streams at the same time is not supported.<wbr/></p>
36287            </td>
36288          </tr>
36289
36290          <tr class="entries_header">
36291            <th class="th_details" colspan="6">HAL Implementation Details</th>
36292          </tr>
36293          <tr class="entry_cont">
36294            <td class="entry_details" colspan="6">
36295              <p>These are output stream configurations for use with dataSpace HAL_<wbr/>DATASPACE_<wbr/>HEIF.<wbr/></p>
36296<p>Do not set this property directly.<wbr/> It is populated by camera framework and must not be
36297set by the HAL layer.<wbr/></p>
36298            </td>
36299          </tr>
36300
36301          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
36302           <!-- end of entry -->
36303
36304
36305          <tr class="entry" id="static_android.heic.availableHeicMinFrameDurations">
36306            <td class="entry_name
36307             " rowspan="5">
36308              android.<wbr/>heic.<wbr/>available<wbr/>Heic<wbr/>Min<wbr/>Frame<wbr/>Durations
36309            </td>
36310            <td class="entry_type">
36311                <span class="entry_type_name">int64</span>
36312                <span class="entry_type_container">x</span>
36313
36314                <span class="entry_type_array">
36315                  4 x n
36316                </span>
36317              <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
36318
36319
36320              <span class="entry_type_hwlevel">[limited] </span>
36321
36322
36323
36324
36325            </td> <!-- entry_type -->
36326
36327            <td class="entry_description">
36328              <p>This lists the minimum frame duration for each
36329format/<wbr/>size combination for HEIC output formats.<wbr/></p>
36330            </td>
36331
36332            <td class="entry_units">
36333              (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
36334            </td>
36335
36336            <td class="entry_range">
36337            </td>
36338
36339            <td class="entry_hal_version">
36340              <p>3.<wbr/>4</p>
36341            </td>
36342
36343            <td class="entry_tags">
36344              <ul class="entry_tags">
36345                  <li><a href="#tag_HEIC">HEIC</a></li>
36346              </ul>
36347            </td>
36348
36349          </tr>
36350          <tr class="entries_header">
36351            <th class="th_details" colspan="6">Details</th>
36352          </tr>
36353          <tr class="entry_cont">
36354            <td class="entry_details" colspan="6">
36355              <p>This should correspond to the frame duration when only that
36356stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode)
36357set to either OFF or FAST.<wbr/></p>
36358<p>When multiple streams are used in a request,<wbr/> the minimum frame
36359duration will be max(individual stream min durations).<wbr/></p>
36360<p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> and
36361<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for more details about
36362calculating the max frame rate.<wbr/></p>
36363            </td>
36364          </tr>
36365
36366          <tr class="entries_header">
36367            <th class="th_details" colspan="6">HAL Implementation Details</th>
36368          </tr>
36369          <tr class="entry_cont">
36370            <td class="entry_details" colspan="6">
36371              <p>Do not set this property directly.<wbr/> It is populated by camera framework and must not be
36372set by the HAL layer.<wbr/></p>
36373            </td>
36374          </tr>
36375
36376          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
36377           <!-- end of entry -->
36378
36379
36380          <tr class="entry" id="static_android.heic.availableHeicStallDurations">
36381            <td class="entry_name
36382             " rowspan="5">
36383              android.<wbr/>heic.<wbr/>available<wbr/>Heic<wbr/>Stall<wbr/>Durations
36384            </td>
36385            <td class="entry_type">
36386                <span class="entry_type_name">int64</span>
36387                <span class="entry_type_container">x</span>
36388
36389                <span class="entry_type_array">
36390                  4 x n
36391                </span>
36392              <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
36393
36394
36395              <span class="entry_type_hwlevel">[limited] </span>
36396
36397
36398
36399
36400            </td> <!-- entry_type -->
36401
36402            <td class="entry_description">
36403              <p>This lists the maximum stall duration for each
36404output format/<wbr/>size combination for HEIC streams.<wbr/></p>
36405            </td>
36406
36407            <td class="entry_units">
36408              (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
36409            </td>
36410
36411            <td class="entry_range">
36412            </td>
36413
36414            <td class="entry_hal_version">
36415              <p>3.<wbr/>4</p>
36416            </td>
36417
36418            <td class="entry_tags">
36419              <ul class="entry_tags">
36420                  <li><a href="#tag_HEIC">HEIC</a></li>
36421              </ul>
36422            </td>
36423
36424          </tr>
36425          <tr class="entries_header">
36426            <th class="th_details" colspan="6">Details</th>
36427          </tr>
36428          <tr class="entry_cont">
36429            <td class="entry_details" colspan="6">
36430              <p>A stall duration is how much extra time would get added
36431to the normal minimum frame duration for a repeating request
36432that has streams with non-zero stall.<wbr/></p>
36433<p>This functions similarly to
36434<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for HEIC
36435streams.<wbr/></p>
36436<p>All HEIC output stream formats may have a nonzero stall
36437duration.<wbr/></p>
36438            </td>
36439          </tr>
36440
36441          <tr class="entries_header">
36442            <th class="th_details" colspan="6">HAL Implementation Details</th>
36443          </tr>
36444          <tr class="entry_cont">
36445            <td class="entry_details" colspan="6">
36446              <p>Do not set this property directly.<wbr/> It is populated by camera framework and must not be
36447set by the HAL layer.<wbr/></p>
36448            </td>
36449          </tr>
36450
36451          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
36452           <!-- end of entry -->
36453
36454
36455          <tr class="entry" id="static_android.heic.availableHeicStreamConfigurationsMaximumResolution">
36456            <td class="entry_name
36457             " rowspan="5">
36458              android.<wbr/>heic.<wbr/>available<wbr/>Heic<wbr/>Stream<wbr/>Configurations<wbr/>Maximum<wbr/>Resolution
36459            </td>
36460            <td class="entry_type">
36461                <span class="entry_type_name entry_type_name_enum">int32</span>
36462                <span class="entry_type_container">x</span>
36463
36464                <span class="entry_type_array">
36465                  n x 4
36466                </span>
36467              <span class="entry_type_visibility"> [ndk_public as streamConfiguration]</span>
36468
36469
36470
36471
36472
36473                <ul class="entry_type_enum">
36474                  <li>
36475                    <span class="entry_type_enum_name">OUTPUT (v3.6)</span>
36476                  </li>
36477                  <li>
36478                    <span class="entry_type_enum_name">INPUT (v3.6)</span>
36479                  </li>
36480                </ul>
36481
36482            </td> <!-- entry_type -->
36483
36484            <td class="entry_description">
36485              <p>The available HEIC (ISO/<wbr/>IEC 23008-12) stream
36486configurations that this camera device supports
36487(i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p>
36488            </td>
36489
36490            <td class="entry_units">
36491            </td>
36492
36493            <td class="entry_range">
36494            </td>
36495
36496            <td class="entry_hal_version">
36497              <p>3.<wbr/>6</p>
36498            </td>
36499
36500            <td class="entry_tags">
36501              <ul class="entry_tags">
36502                  <li><a href="#tag_HEIC">HEIC</a></li>
36503              </ul>
36504            </td>
36505
36506          </tr>
36507          <tr class="entries_header">
36508            <th class="th_details" colspan="6">Details</th>
36509          </tr>
36510          <tr class="entry_cont">
36511            <td class="entry_details" colspan="6">
36512              <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>
36513            </td>
36514          </tr>
36515
36516          <tr class="entries_header">
36517            <th class="th_details" colspan="6">HAL Implementation Details</th>
36518          </tr>
36519          <tr class="entry_cont">
36520            <td class="entry_details" colspan="6">
36521              <p>These are output stream configurations for use with dataSpace HAL_<wbr/>DATASPACE_<wbr/>HEIF.<wbr/></p>
36522<p>Do not set this property directly.<wbr/> It is populated by camera framework and must not be
36523set by the HAL layer.<wbr/></p>
36524            </td>
36525          </tr>
36526
36527          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
36528           <!-- end of entry -->
36529
36530
36531          <tr class="entry" id="static_android.heic.availableHeicMinFrameDurationsMaximumResolution">
36532            <td class="entry_name
36533             " rowspan="5">
36534              android.<wbr/>heic.<wbr/>available<wbr/>Heic<wbr/>Min<wbr/>Frame<wbr/>Durations<wbr/>Maximum<wbr/>Resolution
36535            </td>
36536            <td class="entry_type">
36537                <span class="entry_type_name">int64</span>
36538                <span class="entry_type_container">x</span>
36539
36540                <span class="entry_type_array">
36541                  4 x n
36542                </span>
36543              <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
36544
36545
36546
36547
36548
36549
36550            </td> <!-- entry_type -->
36551
36552            <td class="entry_description">
36553              <p>This lists the minimum frame duration for each
36554format/<wbr/>size combination for HEIC output formats for CaptureRequests where
36555<a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to
36556<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>
36557            </td>
36558
36559            <td class="entry_units">
36560              (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
36561            </td>
36562
36563            <td class="entry_range">
36564            </td>
36565
36566            <td class="entry_hal_version">
36567              <p>3.<wbr/>6</p>
36568            </td>
36569
36570            <td class="entry_tags">
36571              <ul class="entry_tags">
36572                  <li><a href="#tag_HEIC">HEIC</a></li>
36573              </ul>
36574            </td>
36575
36576          </tr>
36577          <tr class="entries_header">
36578            <th class="th_details" colspan="6">Details</th>
36579          </tr>
36580          <tr class="entry_cont">
36581            <td class="entry_details" colspan="6">
36582              <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>
36583            </td>
36584          </tr>
36585
36586          <tr class="entries_header">
36587            <th class="th_details" colspan="6">HAL Implementation Details</th>
36588          </tr>
36589          <tr class="entry_cont">
36590            <td class="entry_details" colspan="6">
36591              <p>Do not set this property directly.<wbr/> It is populated by camera framework and must not be
36592set by the HAL layer.<wbr/></p>
36593            </td>
36594          </tr>
36595
36596          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
36597           <!-- end of entry -->
36598
36599
36600          <tr class="entry" id="static_android.heic.availableHeicStallDurationsMaximumResolution">
36601            <td class="entry_name
36602             " rowspan="5">
36603              android.<wbr/>heic.<wbr/>available<wbr/>Heic<wbr/>Stall<wbr/>Durations<wbr/>Maximum<wbr/>Resolution
36604            </td>
36605            <td class="entry_type">
36606                <span class="entry_type_name">int64</span>
36607                <span class="entry_type_container">x</span>
36608
36609                <span class="entry_type_array">
36610                  4 x n
36611                </span>
36612              <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
36613
36614
36615
36616
36617
36618
36619            </td> <!-- entry_type -->
36620
36621            <td class="entry_description">
36622              <p>This lists the maximum stall duration for each
36623output format/<wbr/>size combination for HEIC streams for CaptureRequests where
36624<a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to
36625<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>
36626            </td>
36627
36628            <td class="entry_units">
36629              (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
36630            </td>
36631
36632            <td class="entry_range">
36633            </td>
36634
36635            <td class="entry_hal_version">
36636              <p>3.<wbr/>6</p>
36637            </td>
36638
36639            <td class="entry_tags">
36640              <ul class="entry_tags">
36641                  <li><a href="#tag_HEIC">HEIC</a></li>
36642              </ul>
36643            </td>
36644
36645          </tr>
36646          <tr class="entries_header">
36647            <th class="th_details" colspan="6">Details</th>
36648          </tr>
36649          <tr class="entry_cont">
36650            <td class="entry_details" colspan="6">
36651              <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>
36652            </td>
36653          </tr>
36654
36655          <tr class="entries_header">
36656            <th class="th_details" colspan="6">HAL Implementation Details</th>
36657          </tr>
36658          <tr class="entry_cont">
36659            <td class="entry_details" colspan="6">
36660              <p>Do not set this property directly.<wbr/> It is populated by camera framework and must not be
36661set by the HAL layer.<wbr/></p>
36662            </td>
36663          </tr>
36664
36665          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
36666           <!-- end of entry -->
36667
36668
36669
36670      <!-- end of kind -->
36671      </tbody>
36672
36673  <!-- end of section -->
36674<!-- </namespace> -->
36675  </table>
36676
36677  <div class="tags" id="tag_index">
36678    <h2>Tags</h2>
36679    <ul>
36680      <li id="tag_BC">BC -
36681        Needed for backwards compatibility with old Java API
36682
36683        <ul class="tags_entries">
36684          <li><a href="#controls_android.control.aeAntibandingMode">android.control.aeAntibandingMode</a> (controls)</li>
36685          <li><a href="#controls_android.control.aeExposureCompensation">android.control.aeExposureCompensation</a> (controls)</li>
36686          <li><a href="#controls_android.control.aeLock">android.control.aeLock</a> (controls)</li>
36687          <li><a href="#controls_android.control.aeMode">android.control.aeMode</a> (controls)</li>
36688          <li><a href="#controls_android.control.aeRegions">android.control.aeRegions</a> (controls)</li>
36689          <li><a href="#controls_android.control.aeTargetFpsRange">android.control.aeTargetFpsRange</a> (controls)</li>
36690          <li><a href="#controls_android.control.aePrecaptureTrigger">android.control.aePrecaptureTrigger</a> (controls)</li>
36691          <li><a href="#controls_android.control.afMode">android.control.afMode</a> (controls)</li>
36692          <li><a href="#controls_android.control.afRegions">android.control.afRegions</a> (controls)</li>
36693          <li><a href="#controls_android.control.afTrigger">android.control.afTrigger</a> (controls)</li>
36694          <li><a href="#controls_android.control.awbLock">android.control.awbLock</a> (controls)</li>
36695          <li><a href="#controls_android.control.awbMode">android.control.awbMode</a> (controls)</li>
36696          <li><a href="#controls_android.control.awbRegions">android.control.awbRegions</a> (controls)</li>
36697          <li><a href="#controls_android.control.captureIntent">android.control.captureIntent</a> (controls)</li>
36698          <li><a href="#controls_android.control.effectMode">android.control.effectMode</a> (controls)</li>
36699          <li><a href="#controls_android.control.mode">android.control.mode</a> (controls)</li>
36700          <li><a href="#controls_android.control.sceneMode">android.control.sceneMode</a> (controls)</li>
36701          <li><a href="#controls_android.control.videoStabilizationMode">android.control.videoStabilizationMode</a> (controls)</li>
36702          <li><a href="#static_android.control.aeAvailableAntibandingModes">android.control.aeAvailableAntibandingModes</a> (static)</li>
36703          <li><a href="#static_android.control.aeAvailableModes">android.control.aeAvailableModes</a> (static)</li>
36704          <li><a href="#static_android.control.aeAvailableTargetFpsRanges">android.control.aeAvailableTargetFpsRanges</a> (static)</li>
36705          <li><a href="#static_android.control.aeCompensationRange">android.control.aeCompensationRange</a> (static)</li>
36706          <li><a href="#static_android.control.aeCompensationStep">android.control.aeCompensationStep</a> (static)</li>
36707          <li><a href="#static_android.control.afAvailableModes">android.control.afAvailableModes</a> (static)</li>
36708          <li><a href="#static_android.control.availableEffects">android.control.availableEffects</a> (static)</li>
36709          <li><a href="#static_android.control.availableSceneModes">android.control.availableSceneModes</a> (static)</li>
36710          <li><a href="#static_android.control.availableVideoStabilizationModes">android.control.availableVideoStabilizationModes</a> (static)</li>
36711          <li><a href="#static_android.control.awbAvailableModes">android.control.awbAvailableModes</a> (static)</li>
36712          <li><a href="#static_android.control.maxRegions">android.control.maxRegions</a> (static)</li>
36713          <li><a href="#static_android.control.sceneModeOverrides">android.control.sceneModeOverrides</a> (static)</li>
36714          <li><a href="#static_android.control.aeLockAvailable">android.control.aeLockAvailable</a> (static)</li>
36715          <li><a href="#static_android.control.awbLockAvailable">android.control.awbLockAvailable</a> (static)</li>
36716          <li><a href="#controls_android.flash.mode">android.flash.mode</a> (controls)</li>
36717          <li><a href="#static_android.flash.info.available">android.flash.info.available</a> (static)</li>
36718          <li><a href="#controls_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a> (controls)</li>
36719          <li><a href="#controls_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a> (controls)</li>
36720          <li><a href="#controls_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a> (controls)</li>
36721          <li><a href="#controls_android.jpeg.orientation">android.jpeg.orientation</a> (controls)</li>
36722          <li><a href="#controls_android.jpeg.quality">android.jpeg.quality</a> (controls)</li>
36723          <li><a href="#controls_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a> (controls)</li>
36724          <li><a href="#controls_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a> (controls)</li>
36725          <li><a href="#static_android.jpeg.availableThumbnailSizes">android.jpeg.availableThumbnailSizes</a> (static)</li>
36726          <li><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a> (controls)</li>
36727          <li><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a> (static)</li>
36728          <li><a href="#dynamic_android.lens.focusRange">android.lens.focusRange</a> (dynamic)</li>
36729          <li><a href="#static_android.request.maxNumOutputStreams">android.request.maxNumOutputStreams</a> (static)</li>
36730          <li><a href="#controls_android.scaler.cropRegion">android.scaler.cropRegion</a> (controls)</li>
36731          <li><a href="#static_android.scaler.availableFormats">android.scaler.availableFormats</a> (static)</li>
36732          <li><a href="#static_android.scaler.availableJpegMinDurations">android.scaler.availableJpegMinDurations</a> (static)</li>
36733          <li><a href="#static_android.scaler.availableJpegSizes">android.scaler.availableJpegSizes</a> (static)</li>
36734          <li><a href="#static_android.scaler.availableMaxDigitalZoom">android.scaler.availableMaxDigitalZoom</a> (static)</li>
36735          <li><a href="#static_android.scaler.availableProcessedMinDurations">android.scaler.availableProcessedMinDurations</a> (static)</li>
36736          <li><a href="#static_android.scaler.availableProcessedSizes">android.scaler.availableProcessedSizes</a> (static)</li>
36737          <li><a href="#static_android.scaler.availableRawMinDurations">android.scaler.availableRawMinDurations</a> (static)</li>
36738          <li><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a> (static)</li>
36739          <li><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a> (static)</li>
36740          <li><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a> (static)</li>
36741          <li><a href="#static_android.sensor.orientation">android.sensor.orientation</a> (static)</li>
36742          <li><a href="#dynamic_android.sensor.timestamp">android.sensor.timestamp</a> (dynamic)</li>
36743          <li><a href="#controls_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a> (controls)</li>
36744          <li><a href="#static_android.statistics.info.maxFaceCount">android.statistics.info.maxFaceCount</a> (static)</li>
36745          <li><a href="#dynamic_android.statistics.faceIds">android.statistics.faceIds</a> (dynamic)</li>
36746          <li><a href="#dynamic_android.statistics.faceLandmarks">android.statistics.faceLandmarks</a> (dynamic)</li>
36747          <li><a href="#dynamic_android.statistics.faceRectangles">android.statistics.faceRectangles</a> (dynamic)</li>
36748          <li><a href="#dynamic_android.statistics.faceScores">android.statistics.faceScores</a> (dynamic)</li>
36749          <li><a href="#dynamic_android.lens.focalLength">android.lens.focalLength</a> (dynamic)</li>
36750          <li><a href="#dynamic_android.lens.focusDistance">android.lens.focusDistance</a> (dynamic)</li>
36751        </ul>
36752      </li> <!-- tag_BC -->
36753      <li id="tag_V1">V1 -
36754        New features for first camera 2 release (API1)
36755
36756        <ul class="tags_entries">
36757          <li><a href="#static_android.colorCorrection.availableAberrationModes">android.colorCorrection.availableAberrationModes</a> (static)</li>
36758          <li><a href="#static_android.control.availableHighSpeedVideoConfigurations">android.control.availableHighSpeedVideoConfigurations</a> (static)</li>
36759          <li><a href="#static_android.control.availableHighSpeedVideoConfigurationsMaximumResolution">android.control.availableHighSpeedVideoConfigurationsMaximumResolution</a> (static)</li>
36760          <li><a href="#controls_android.edge.mode">android.edge.mode</a> (controls)</li>
36761          <li><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a> (static)</li>
36762          <li><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a> (controls)</li>
36763          <li><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a> (static)</li>
36764          <li><a href="#controls_android.lens.aperture">android.lens.aperture</a> (controls)</li>
36765          <li><a href="#controls_android.lens.filterDensity">android.lens.filterDensity</a> (controls)</li>
36766          <li><a href="#controls_android.lens.focalLength">android.lens.focalLength</a> (controls)</li>
36767          <li><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a> (controls)</li>
36768          <li><a href="#controls_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a> (controls)</li>
36769          <li><a href="#static_android.lens.info.availableApertures">android.lens.info.availableApertures</a> (static)</li>
36770          <li><a href="#static_android.lens.info.availableFilterDensities">android.lens.info.availableFilterDensities</a> (static)</li>
36771          <li><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a> (static)</li>
36772          <li><a href="#static_android.lens.info.availableOpticalStabilization">android.lens.info.availableOpticalStabilization</a> (static)</li>
36773          <li><a href="#static_android.lens.info.minimumFocusDistance">android.lens.info.minimumFocusDistance</a> (static)</li>
36774          <li><a href="#static_android.lens.info.shadingMapSize">android.lens.info.shadingMapSize</a> (static)</li>
36775          <li><a href="#static_android.lens.info.focusDistanceCalibration">android.lens.info.focusDistanceCalibration</a> (static)</li>
36776          <li><a href="#dynamic_android.lens.state">android.lens.state</a> (dynamic)</li>
36777          <li><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a> (controls)</li>
36778          <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a> (static)</li>
36779          <li><a href="#controls_android.request.id">android.request.id</a> (controls)</li>
36780          <li><a href="#static_android.scaler.availableMinFrameDurations">android.scaler.availableMinFrameDurations</a> (static)</li>
36781          <li><a href="#static_android.scaler.availableStallDurations">android.scaler.availableStallDurations</a> (static)</li>
36782          <li><a href="#controls_android.sensor.exposureTime">android.sensor.exposureTime</a> (controls)</li>
36783          <li><a href="#controls_android.sensor.frameDuration">android.sensor.frameDuration</a> (controls)</li>
36784          <li><a href="#controls_android.sensor.sensitivity">android.sensor.sensitivity</a> (controls)</li>
36785          <li><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a> (static)</li>
36786          <li><a href="#static_android.sensor.info.exposureTimeRange">android.sensor.info.exposureTimeRange</a> (static)</li>
36787          <li><a href="#static_android.sensor.info.maxFrameDuration">android.sensor.info.maxFrameDuration</a> (static)</li>
36788          <li><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a> (static)</li>
36789          <li><a href="#static_android.sensor.info.timestampSource">android.sensor.info.timestampSource</a> (static)</li>
36790          <li><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a> (static)</li>
36791          <li><a href="#dynamic_android.sensor.rollingShutterSkew">android.sensor.rollingShutterSkew</a> (dynamic)</li>
36792          <li><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a> (controls)</li>
36793          <li><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a> (static)</li>
36794          <li><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a> (dynamic)</li>
36795          <li><a href="#dynamic_android.sync.frameNumber">android.sync.frameNumber</a> (dynamic)</li>
36796          <li><a href="#static_android.sync.maxLatency">android.sync.maxLatency</a> (static)</li>
36797          <li><a href="#static_android.distortionCorrection.availableModes">android.distortionCorrection.availableModes</a> (static)</li>
36798          <li><a href="#dynamic_android.edge.mode">android.edge.mode</a> (dynamic)</li>
36799          <li><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a> (dynamic)</li>
36800          <li><a href="#dynamic_android.lens.aperture">android.lens.aperture</a> (dynamic)</li>
36801          <li><a href="#dynamic_android.lens.filterDensity">android.lens.filterDensity</a> (dynamic)</li>
36802          <li><a href="#dynamic_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a> (dynamic)</li>
36803          <li><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a> (dynamic)</li>
36804        </ul>
36805      </li> <!-- tag_V1 -->
36806      <li id="tag_RAW">RAW -
36807        Needed for useful RAW image processing and DNG file support
36808
36809        <ul class="tags_entries">
36810          <li><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a> (controls)</li>
36811          <li><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a> (static)</li>
36812          <li><a href="#static_android.sensor.info.activeArraySize">android.sensor.info.activeArraySize</a> (static)</li>
36813          <li><a href="#static_android.sensor.info.colorFilterArrangement">android.sensor.info.colorFilterArrangement</a> (static)</li>
36814          <li><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a> (static)</li>
36815          <li><a href="#static_android.sensor.info.whiteLevel">android.sensor.info.whiteLevel</a> (static)</li>
36816          <li><a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.sensor.info.preCorrectionActiveArraySize</a> (static)</li>
36817          <li><a href="#static_android.sensor.info.activeArraySizeMaximumResolution">android.sensor.info.activeArraySizeMaximumResolution</a> (static)</li>
36818          <li><a href="#static_android.sensor.info.pixelArraySizeMaximumResolution">android.sensor.info.pixelArraySizeMaximumResolution</a> (static)</li>
36819          <li><a href="#static_android.sensor.info.preCorrectionActiveArraySizeMaximumResolution">android.sensor.info.preCorrectionActiveArraySizeMaximumResolution</a> (static)</li>
36820          <li><a href="#static_android.sensor.referenceIlluminant1">android.sensor.referenceIlluminant1</a> (static)</li>
36821          <li><a href="#static_android.sensor.referenceIlluminant2">android.sensor.referenceIlluminant2</a> (static)</li>
36822          <li><a href="#static_android.sensor.calibrationTransform1">android.sensor.calibrationTransform1</a> (static)</li>
36823          <li><a href="#static_android.sensor.calibrationTransform2">android.sensor.calibrationTransform2</a> (static)</li>
36824          <li><a href="#static_android.sensor.colorTransform1">android.sensor.colorTransform1</a> (static)</li>
36825          <li><a href="#static_android.sensor.colorTransform2">android.sensor.colorTransform2</a> (static)</li>
36826          <li><a href="#static_android.sensor.forwardMatrix1">android.sensor.forwardMatrix1</a> (static)</li>
36827          <li><a href="#static_android.sensor.forwardMatrix2">android.sensor.forwardMatrix2</a> (static)</li>
36828          <li><a href="#static_android.sensor.blackLevelPattern">android.sensor.blackLevelPattern</a> (static)</li>
36829          <li><a href="#static_android.sensor.profileHueSatMapDimensions">android.sensor.profileHueSatMapDimensions</a> (static)</li>
36830          <li><a href="#dynamic_android.sensor.neutralColorPoint">android.sensor.neutralColorPoint</a> (dynamic)</li>
36831          <li><a href="#dynamic_android.sensor.noiseProfile">android.sensor.noiseProfile</a> (dynamic)</li>
36832          <li><a href="#dynamic_android.sensor.profileHueSatMap">android.sensor.profileHueSatMap</a> (dynamic)</li>
36833          <li><a href="#dynamic_android.sensor.profileToneCurve">android.sensor.profileToneCurve</a> (dynamic)</li>
36834          <li><a href="#dynamic_android.sensor.greenSplit">android.sensor.greenSplit</a> (dynamic)</li>
36835          <li><a href="#dynamic_android.sensor.dynamicBlackLevel">android.sensor.dynamicBlackLevel</a> (dynamic)</li>
36836          <li><a href="#dynamic_android.sensor.dynamicWhiteLevel">android.sensor.dynamicWhiteLevel</a> (dynamic)</li>
36837          <li><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a> (controls)</li>
36838          <li><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a> (static)</li>
36839          <li><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a> (dynamic)</li>
36840          <li><a href="#controls_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a> (controls)</li>
36841          <li><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a> (dynamic)</li>
36842        </ul>
36843      </li> <!-- tag_RAW -->
36844      <li id="tag_HAL2">HAL2 -
36845        Entry is only used by camera device legacy HAL 2.x
36846
36847        <ul class="tags_entries">
36848          <li><a href="#controls_android.request.inputStreams">android.request.inputStreams</a> (controls)</li>
36849          <li><a href="#controls_android.request.outputStreams">android.request.outputStreams</a> (controls)</li>
36850          <li><a href="#controls_android.request.type">android.request.type</a> (controls)</li>
36851          <li><a href="#static_android.request.maxNumReprocessStreams">android.request.maxNumReprocessStreams</a> (static)</li>
36852          <li><a href="#controls_android.blackLevel.lock">android.blackLevel.lock</a> (controls)</li>
36853        </ul>
36854      </li> <!-- tag_HAL2 -->
36855      <li id="tag_FULL">FULL -
36856        Entry is required for full hardware level devices, and optional for other hardware levels
36857
36858        <ul class="tags_entries">
36859          <li><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a> (static)</li>
36860        </ul>
36861      </li> <!-- tag_FULL -->
36862      <li id="tag_DEPTH">DEPTH -
36863        Entry is required for the depth capability.
36864
36865        <ul class="tags_entries">
36866          <li><a href="#static_android.lens.poseRotation">android.lens.poseRotation</a> (static)</li>
36867          <li><a href="#static_android.lens.poseTranslation">android.lens.poseTranslation</a> (static)</li>
36868          <li><a href="#static_android.lens.intrinsicCalibration">android.lens.intrinsicCalibration</a> (static)</li>
36869          <li><a href="#static_android.lens.radialDistortion">android.lens.radialDistortion</a> (static)</li>
36870          <li><a href="#static_android.lens.distortion">android.lens.distortion</a> (static)</li>
36871          <li><a href="#static_android.lens.distortionMaximumResolution">android.lens.distortionMaximumResolution</a> (static)</li>
36872          <li><a href="#static_android.lens.intrinsicCalibrationMaximumResolution">android.lens.intrinsicCalibrationMaximumResolution</a> (static)</li>
36873          <li><a href="#static_android.depth.maxDepthSamples">android.depth.maxDepthSamples</a> (static)</li>
36874          <li><a href="#static_android.depth.availableDepthStreamConfigurations">android.depth.availableDepthStreamConfigurations</a> (static)</li>
36875          <li><a href="#static_android.depth.availableDepthMinFrameDurations">android.depth.availableDepthMinFrameDurations</a> (static)</li>
36876          <li><a href="#static_android.depth.availableDepthStallDurations">android.depth.availableDepthStallDurations</a> (static)</li>
36877          <li><a href="#static_android.depth.availableDynamicDepthStreamConfigurations">android.depth.availableDynamicDepthStreamConfigurations</a> (static)</li>
36878          <li><a href="#static_android.depth.availableDynamicDepthMinFrameDurations">android.depth.availableDynamicDepthMinFrameDurations</a> (static)</li>
36879          <li><a href="#static_android.depth.availableDynamicDepthStallDurations">android.depth.availableDynamicDepthStallDurations</a> (static)</li>
36880          <li><a href="#static_android.depth.availableDepthStreamConfigurationsMaximumResolution">android.depth.availableDepthStreamConfigurationsMaximumResolution</a> (static)</li>
36881          <li><a href="#static_android.depth.availableDepthMinFrameDurationsMaximumResolution">android.depth.availableDepthMinFrameDurationsMaximumResolution</a> (static)</li>
36882          <li><a href="#static_android.depth.availableDepthStallDurationsMaximumResolution">android.depth.availableDepthStallDurationsMaximumResolution</a> (static)</li>
36883          <li><a href="#static_android.depth.availableDynamicDepthStreamConfigurationsMaximumResolution">android.depth.availableDynamicDepthStreamConfigurationsMaximumResolution</a> (static)</li>
36884          <li><a href="#static_android.depth.availableDynamicDepthMinFrameDurationsMaximumResolution">android.depth.availableDynamicDepthMinFrameDurationsMaximumResolution</a> (static)</li>
36885          <li><a href="#static_android.depth.availableDynamicDepthStallDurationsMaximumResolution">android.depth.availableDynamicDepthStallDurationsMaximumResolution</a> (static)</li>
36886        </ul>
36887      </li> <!-- tag_DEPTH -->
36888      <li id="tag_REPROC">REPROC -
36889        Entry is required for the YUV or PRIVATE reprocessing capability.
36890
36891        <ul class="tags_entries">
36892          <li><a href="#controls_android.edge.mode">android.edge.mode</a> (controls)</li>
36893          <li><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a> (static)</li>
36894          <li><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a> (controls)</li>
36895          <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a> (static)</li>
36896          <li><a href="#static_android.request.maxNumInputStreams">android.request.maxNumInputStreams</a> (static)</li>
36897          <li><a href="#static_android.scaler.availableInputOutputFormatsMap">android.scaler.availableInputOutputFormatsMap</a> (static)</li>
36898          <li><a href="#static_android.scaler.availableRecommendedInputOutputFormatsMap">android.scaler.availableRecommendedInputOutputFormatsMap</a> (static)</li>
36899          <li><a href="#static_android.scaler.availableInputOutputFormatsMapMaximumResolution">android.scaler.availableInputOutputFormatsMapMaximumResolution</a> (static)</li>
36900          <li><a href="#controls_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a> (controls)</li>
36901          <li><a href="#static_android.reprocess.maxCaptureStall">android.reprocess.maxCaptureStall</a> (static)</li>
36902          <li><a href="#static_android.distortionCorrection.availableModes">android.distortionCorrection.availableModes</a> (static)</li>
36903          <li><a href="#dynamic_android.edge.mode">android.edge.mode</a> (dynamic)</li>
36904          <li><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a> (dynamic)</li>
36905        </ul>
36906      </li> <!-- tag_REPROC -->
36907      <li id="tag_LOGICALCAMERA">LOGICALCAMERA -
36908        Entry is required for logical multi-camera capability.
36909
36910        <ul class="tags_entries">
36911          <li><a href="#static_android.logicalMultiCamera.physicalIds">android.logicalMultiCamera.physicalIds</a> (static)</li>
36912          <li><a href="#static_android.logicalMultiCamera.sensorSyncType">android.logicalMultiCamera.sensorSyncType</a> (static)</li>
36913          <li><a href="#dynamic_android.logicalMultiCamera.activePhysicalId">android.logicalMultiCamera.activePhysicalId</a> (dynamic)</li>
36914        </ul>
36915      </li> <!-- tag_LOGICALCAMERA -->
36916      <li id="tag_HEIC">HEIC -
36917        Entry is required for devices with HEIC (High Efficiency Image Format) support.
36918
36919        <ul class="tags_entries">
36920          <li><a href="#static_android.heic.info.supported">android.heic.info.supported</a> (static)</li>
36921          <li><a href="#static_android.heic.info.maxJpegAppSegmentsCount">android.heic.info.maxJpegAppSegmentsCount</a> (static)</li>
36922          <li><a href="#static_android.heic.availableHeicStreamConfigurations">android.heic.availableHeicStreamConfigurations</a> (static)</li>
36923          <li><a href="#static_android.heic.availableHeicMinFrameDurations">android.heic.availableHeicMinFrameDurations</a> (static)</li>
36924          <li><a href="#static_android.heic.availableHeicStallDurations">android.heic.availableHeicStallDurations</a> (static)</li>
36925          <li><a href="#static_android.heic.availableHeicStreamConfigurationsMaximumResolution">android.heic.availableHeicStreamConfigurationsMaximumResolution</a> (static)</li>
36926          <li><a href="#static_android.heic.availableHeicMinFrameDurationsMaximumResolution">android.heic.availableHeicMinFrameDurationsMaximumResolution</a> (static)</li>
36927          <li><a href="#static_android.heic.availableHeicStallDurationsMaximumResolution">android.heic.availableHeicStallDurationsMaximumResolution</a> (static)</li>
36928        </ul>
36929      </li> <!-- tag_HEIC -->
36930      <li id="tag_FUTURE">FUTURE -
36931        Entry is  under-specified and is not required for now. This is for book-keeping purpose,
36932        do not implement or use it, it may be revised for future.
36933
36934        <ul class="tags_entries">
36935          <li><a href="#controls_android.demosaic.mode">android.demosaic.mode</a> (controls)</li>
36936          <li><a href="#controls_android.edge.strength">android.edge.strength</a> (controls)</li>
36937          <li><a href="#controls_android.flash.firingPower">android.flash.firingPower</a> (controls)</li>
36938          <li><a href="#controls_android.flash.firingTime">android.flash.firingTime</a> (controls)</li>
36939          <li><a href="#static_android.flash.info.chargeDuration">android.flash.info.chargeDuration</a> (static)</li>
36940          <li><a href="#static_android.flash.colorTemperature">android.flash.colorTemperature</a> (static)</li>
36941          <li><a href="#static_android.flash.maxEnergy">android.flash.maxEnergy</a> (static)</li>
36942          <li><a href="#dynamic_android.jpeg.size">android.jpeg.size</a> (dynamic)</li>
36943          <li><a href="#controls_android.noiseReduction.strength">android.noiseReduction.strength</a> (controls)</li>
36944          <li><a href="#controls_android.request.metadataMode">android.request.metadataMode</a> (controls)</li>
36945          <li><a href="#static_android.sensor.baseGainFactor">android.sensor.baseGainFactor</a> (static)</li>
36946          <li><a href="#dynamic_android.sensor.temperature">android.sensor.temperature</a> (dynamic)</li>
36947          <li><a href="#controls_android.shading.strength">android.shading.strength</a> (controls)</li>
36948          <li><a href="#controls_android.statistics.histogramMode">android.statistics.histogramMode</a> (controls)</li>
36949          <li><a href="#controls_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a> (controls)</li>
36950          <li><a href="#static_android.statistics.info.histogramBucketCount">android.statistics.info.histogramBucketCount</a> (static)</li>
36951          <li><a href="#static_android.statistics.info.maxHistogramCount">android.statistics.info.maxHistogramCount</a> (static)</li>
36952          <li><a href="#static_android.statistics.info.maxSharpnessMapValue">android.statistics.info.maxSharpnessMapValue</a> (static)</li>
36953          <li><a href="#static_android.statistics.info.sharpnessMapSize">android.statistics.info.sharpnessMapSize</a> (static)</li>
36954          <li><a href="#dynamic_android.statistics.histogram">android.statistics.histogram</a> (dynamic)</li>
36955          <li><a href="#dynamic_android.statistics.sharpnessMap">android.statistics.sharpnessMap</a> (dynamic)</li>
36956        </ul>
36957      </li> <!-- tag_FUTURE -->
36958    </ul>
36959  </div>
36960
36961  [ <a href="#">top</a> ]
36962
36963</body>
36964</html>
36965