• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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          </ul>
197        </li>
198        <li>
199          <span class="toc_kind_header">static</span>
200          <ul class="toc_section">
201            <li
202            ><a href="#static_android.control.aeAvailableAntibandingModes">android.control.aeAvailableAntibandingModes</a></li>
203            <li
204            ><a href="#static_android.control.aeAvailableModes">android.control.aeAvailableModes</a></li>
205            <li
206            ><a href="#static_android.control.aeAvailableTargetFpsRanges">android.control.aeAvailableTargetFpsRanges</a></li>
207            <li
208            ><a href="#static_android.control.aeCompensationRange">android.control.aeCompensationRange</a></li>
209            <li
210            ><a href="#static_android.control.aeCompensationStep">android.control.aeCompensationStep</a></li>
211            <li
212            ><a href="#static_android.control.afAvailableModes">android.control.afAvailableModes</a></li>
213            <li
214            ><a href="#static_android.control.availableEffects">android.control.availableEffects</a></li>
215            <li
216            ><a href="#static_android.control.availableSceneModes">android.control.availableSceneModes</a></li>
217            <li
218            ><a href="#static_android.control.availableVideoStabilizationModes">android.control.availableVideoStabilizationModes</a></li>
219            <li
220            ><a href="#static_android.control.awbAvailableModes">android.control.awbAvailableModes</a></li>
221            <li
222            ><a href="#static_android.control.maxRegions">android.control.maxRegions</a></li>
223            <li
224            ><a href="#static_android.control.maxRegionsAe">android.control.maxRegionsAe</a></li>
225            <li
226            ><a href="#static_android.control.maxRegionsAwb">android.control.maxRegionsAwb</a></li>
227            <li
228            ><a href="#static_android.control.maxRegionsAf">android.control.maxRegionsAf</a></li>
229            <li
230            ><a href="#static_android.control.sceneModeOverrides">android.control.sceneModeOverrides</a></li>
231            <li
232            ><a href="#static_android.control.availableHighSpeedVideoConfigurations">android.control.availableHighSpeedVideoConfigurations</a></li>
233            <li
234            ><a href="#static_android.control.aeLockAvailable">android.control.aeLockAvailable</a></li>
235            <li
236            ><a href="#static_android.control.awbLockAvailable">android.control.awbLockAvailable</a></li>
237            <li
238            ><a href="#static_android.control.availableModes">android.control.availableModes</a></li>
239            <li
240            ><a href="#static_android.control.postRawSensitivityBoostRange">android.control.postRawSensitivityBoostRange</a></li>
241          </ul>
242        </li>
243        <li>
244          <span class="toc_kind_header">dynamic</span>
245          <ul class="toc_section">
246            <li
247                class="toc_deprecated"
248            ><a href="#dynamic_android.control.aePrecaptureId">android.control.aePrecaptureId</a></li>
249            <li
250            ><a href="#dynamic_android.control.aeAntibandingMode">android.control.aeAntibandingMode</a></li>
251            <li
252            ><a href="#dynamic_android.control.aeExposureCompensation">android.control.aeExposureCompensation</a></li>
253            <li
254            ><a href="#dynamic_android.control.aeLock">android.control.aeLock</a></li>
255            <li
256            ><a href="#dynamic_android.control.aeMode">android.control.aeMode</a></li>
257            <li
258            ><a href="#dynamic_android.control.aeRegions">android.control.aeRegions</a></li>
259            <li
260            ><a href="#dynamic_android.control.aeTargetFpsRange">android.control.aeTargetFpsRange</a></li>
261            <li
262            ><a href="#dynamic_android.control.aePrecaptureTrigger">android.control.aePrecaptureTrigger</a></li>
263            <li
264            ><a href="#dynamic_android.control.aeState">android.control.aeState</a></li>
265            <li
266            ><a href="#dynamic_android.control.afMode">android.control.afMode</a></li>
267            <li
268            ><a href="#dynamic_android.control.afRegions">android.control.afRegions</a></li>
269            <li
270            ><a href="#dynamic_android.control.afTrigger">android.control.afTrigger</a></li>
271            <li
272            ><a href="#dynamic_android.control.afState">android.control.afState</a></li>
273            <li
274                class="toc_deprecated"
275            ><a href="#dynamic_android.control.afTriggerId">android.control.afTriggerId</a></li>
276            <li
277            ><a href="#dynamic_android.control.awbLock">android.control.awbLock</a></li>
278            <li
279            ><a href="#dynamic_android.control.awbMode">android.control.awbMode</a></li>
280            <li
281            ><a href="#dynamic_android.control.awbRegions">android.control.awbRegions</a></li>
282            <li
283            ><a href="#dynamic_android.control.captureIntent">android.control.captureIntent</a></li>
284            <li
285            ><a href="#dynamic_android.control.awbState">android.control.awbState</a></li>
286            <li
287            ><a href="#dynamic_android.control.effectMode">android.control.effectMode</a></li>
288            <li
289            ><a href="#dynamic_android.control.mode">android.control.mode</a></li>
290            <li
291            ><a href="#dynamic_android.control.sceneMode">android.control.sceneMode</a></li>
292            <li
293            ><a href="#dynamic_android.control.videoStabilizationMode">android.control.videoStabilizationMode</a></li>
294            <li
295            ><a href="#dynamic_android.control.postRawSensitivityBoost">android.control.postRawSensitivityBoost</a></li>
296            <li
297            ><a href="#dynamic_android.control.enableZsl">android.control.enableZsl</a></li>
298            <li
299            ><a href="#dynamic_android.control.afSceneChange">android.control.afSceneChange</a></li>
300          </ul>
301        </li>
302      </ul> <!-- toc_section -->
303    </li>
304    <li>
305      <span class="toc_section_header"><a href="#section_demosaic">demosaic</a></span>
306      <ul class="toc_section">
307        <li>
308          <span class="toc_kind_header">controls</span>
309          <ul class="toc_section">
310            <li
311            ><a href="#controls_android.demosaic.mode">android.demosaic.mode</a></li>
312          </ul>
313        </li>
314      </ul> <!-- toc_section -->
315    </li>
316    <li>
317      <span class="toc_section_header"><a href="#section_edge">edge</a></span>
318      <ul class="toc_section">
319        <li>
320          <span class="toc_kind_header">controls</span>
321          <ul class="toc_section">
322            <li
323            ><a href="#controls_android.edge.mode">android.edge.mode</a></li>
324            <li
325            ><a href="#controls_android.edge.strength">android.edge.strength</a></li>
326          </ul>
327        </li>
328        <li>
329          <span class="toc_kind_header">static</span>
330          <ul class="toc_section">
331            <li
332            ><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a></li>
333          </ul>
334        </li>
335        <li>
336          <span class="toc_kind_header">dynamic</span>
337          <ul class="toc_section">
338            <li
339            ><a href="#dynamic_android.edge.mode">android.edge.mode</a></li>
340          </ul>
341        </li>
342      </ul> <!-- toc_section -->
343    </li>
344    <li>
345      <span class="toc_section_header"><a href="#section_flash">flash</a></span>
346      <ul class="toc_section">
347        <li>
348          <span class="toc_kind_header">controls</span>
349          <ul class="toc_section">
350            <li
351            ><a href="#controls_android.flash.firingPower">android.flash.firingPower</a></li>
352            <li
353            ><a href="#controls_android.flash.firingTime">android.flash.firingTime</a></li>
354            <li
355            ><a href="#controls_android.flash.mode">android.flash.mode</a></li>
356          </ul>
357        </li>
358        <li>
359          <span class="toc_kind_header">static</span>
360          <ul class="toc_section">
361
362            <li
363            ><a href="#static_android.flash.info.available">android.flash.info.available</a></li>
364            <li
365            ><a href="#static_android.flash.info.chargeDuration">android.flash.info.chargeDuration</a></li>
366
367            <li
368            ><a href="#static_android.flash.colorTemperature">android.flash.colorTemperature</a></li>
369            <li
370            ><a href="#static_android.flash.maxEnergy">android.flash.maxEnergy</a></li>
371          </ul>
372        </li>
373        <li>
374          <span class="toc_kind_header">dynamic</span>
375          <ul class="toc_section">
376            <li
377            ><a href="#dynamic_android.flash.firingPower">android.flash.firingPower</a></li>
378            <li
379            ><a href="#dynamic_android.flash.firingTime">android.flash.firingTime</a></li>
380            <li
381            ><a href="#dynamic_android.flash.mode">android.flash.mode</a></li>
382            <li
383            ><a href="#dynamic_android.flash.state">android.flash.state</a></li>
384          </ul>
385        </li>
386      </ul> <!-- toc_section -->
387    </li>
388    <li>
389      <span class="toc_section_header"><a href="#section_hotPixel">hotPixel</a></span>
390      <ul class="toc_section">
391        <li>
392          <span class="toc_kind_header">controls</span>
393          <ul class="toc_section">
394            <li
395            ><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a></li>
396          </ul>
397        </li>
398        <li>
399          <span class="toc_kind_header">static</span>
400          <ul class="toc_section">
401            <li
402            ><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a></li>
403          </ul>
404        </li>
405        <li>
406          <span class="toc_kind_header">dynamic</span>
407          <ul class="toc_section">
408            <li
409            ><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a></li>
410          </ul>
411        </li>
412      </ul> <!-- toc_section -->
413    </li>
414    <li>
415      <span class="toc_section_header"><a href="#section_jpeg">jpeg</a></span>
416      <ul class="toc_section">
417        <li>
418          <span class="toc_kind_header">controls</span>
419          <ul class="toc_section">
420            <li
421            ><a href="#controls_android.jpeg.gpsLocation">android.jpeg.gpsLocation</a></li>
422            <li
423            ><a href="#controls_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a></li>
424            <li
425            ><a href="#controls_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a></li>
426            <li
427            ><a href="#controls_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a></li>
428            <li
429            ><a href="#controls_android.jpeg.orientation">android.jpeg.orientation</a></li>
430            <li
431            ><a href="#controls_android.jpeg.quality">android.jpeg.quality</a></li>
432            <li
433            ><a href="#controls_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a></li>
434            <li
435            ><a href="#controls_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a></li>
436          </ul>
437        </li>
438        <li>
439          <span class="toc_kind_header">static</span>
440          <ul class="toc_section">
441            <li
442            ><a href="#static_android.jpeg.availableThumbnailSizes">android.jpeg.availableThumbnailSizes</a></li>
443            <li
444            ><a href="#static_android.jpeg.maxSize">android.jpeg.maxSize</a></li>
445          </ul>
446        </li>
447        <li>
448          <span class="toc_kind_header">dynamic</span>
449          <ul class="toc_section">
450            <li
451            ><a href="#dynamic_android.jpeg.gpsLocation">android.jpeg.gpsLocation</a></li>
452            <li
453            ><a href="#dynamic_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a></li>
454            <li
455            ><a href="#dynamic_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a></li>
456            <li
457            ><a href="#dynamic_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a></li>
458            <li
459            ><a href="#dynamic_android.jpeg.orientation">android.jpeg.orientation</a></li>
460            <li
461            ><a href="#dynamic_android.jpeg.quality">android.jpeg.quality</a></li>
462            <li
463            ><a href="#dynamic_android.jpeg.size">android.jpeg.size</a></li>
464            <li
465            ><a href="#dynamic_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a></li>
466            <li
467            ><a href="#dynamic_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a></li>
468          </ul>
469        </li>
470      </ul> <!-- toc_section -->
471    </li>
472    <li>
473      <span class="toc_section_header"><a href="#section_lens">lens</a></span>
474      <ul class="toc_section">
475        <li>
476          <span class="toc_kind_header">controls</span>
477          <ul class="toc_section">
478            <li
479            ><a href="#controls_android.lens.aperture">android.lens.aperture</a></li>
480            <li
481            ><a href="#controls_android.lens.filterDensity">android.lens.filterDensity</a></li>
482            <li
483            ><a href="#controls_android.lens.focalLength">android.lens.focalLength</a></li>
484            <li
485            ><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a></li>
486            <li
487            ><a href="#controls_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a></li>
488          </ul>
489        </li>
490        <li>
491          <span class="toc_kind_header">static</span>
492          <ul class="toc_section">
493
494            <li
495            ><a href="#static_android.lens.info.availableApertures">android.lens.info.availableApertures</a></li>
496            <li
497            ><a href="#static_android.lens.info.availableFilterDensities">android.lens.info.availableFilterDensities</a></li>
498            <li
499            ><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a></li>
500            <li
501            ><a href="#static_android.lens.info.availableOpticalStabilization">android.lens.info.availableOpticalStabilization</a></li>
502            <li
503            ><a href="#static_android.lens.info.hyperfocalDistance">android.lens.info.hyperfocalDistance</a></li>
504            <li
505            ><a href="#static_android.lens.info.minimumFocusDistance">android.lens.info.minimumFocusDistance</a></li>
506            <li
507            ><a href="#static_android.lens.info.shadingMapSize">android.lens.info.shadingMapSize</a></li>
508            <li
509            ><a href="#static_android.lens.info.focusDistanceCalibration">android.lens.info.focusDistanceCalibration</a></li>
510
511            <li
512            ><a href="#static_android.lens.facing">android.lens.facing</a></li>
513            <li
514            ><a href="#static_android.lens.poseRotation">android.lens.poseRotation</a></li>
515            <li
516            ><a href="#static_android.lens.poseTranslation">android.lens.poseTranslation</a></li>
517            <li
518            ><a href="#static_android.lens.intrinsicCalibration">android.lens.intrinsicCalibration</a></li>
519            <li
520                class="toc_deprecated"
521            ><a href="#static_android.lens.radialDistortion">android.lens.radialDistortion</a></li>
522            <li
523            ><a href="#static_android.lens.poseReference">android.lens.poseReference</a></li>
524            <li
525            ><a href="#static_android.lens.distortion">android.lens.distortion</a></li>
526          </ul>
527        </li>
528        <li>
529          <span class="toc_kind_header">dynamic</span>
530          <ul class="toc_section">
531            <li
532            ><a href="#dynamic_android.lens.aperture">android.lens.aperture</a></li>
533            <li
534            ><a href="#dynamic_android.lens.filterDensity">android.lens.filterDensity</a></li>
535            <li
536            ><a href="#dynamic_android.lens.focalLength">android.lens.focalLength</a></li>
537            <li
538            ><a href="#dynamic_android.lens.focusDistance">android.lens.focusDistance</a></li>
539            <li
540            ><a href="#dynamic_android.lens.focusRange">android.lens.focusRange</a></li>
541            <li
542            ><a href="#dynamic_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a></li>
543            <li
544            ><a href="#dynamic_android.lens.state">android.lens.state</a></li>
545            <li
546            ><a href="#dynamic_android.lens.poseRotation">android.lens.poseRotation</a></li>
547            <li
548            ><a href="#dynamic_android.lens.poseTranslation">android.lens.poseTranslation</a></li>
549            <li
550            ><a href="#dynamic_android.lens.intrinsicCalibration">android.lens.intrinsicCalibration</a></li>
551            <li
552                class="toc_deprecated"
553            ><a href="#dynamic_android.lens.radialDistortion">android.lens.radialDistortion</a></li>
554            <li
555            ><a href="#dynamic_android.lens.distortion">android.lens.distortion</a></li>
556          </ul>
557        </li>
558      </ul> <!-- toc_section -->
559    </li>
560    <li>
561      <span class="toc_section_header"><a href="#section_noiseReduction">noiseReduction</a></span>
562      <ul class="toc_section">
563        <li>
564          <span class="toc_kind_header">controls</span>
565          <ul class="toc_section">
566            <li
567            ><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a></li>
568            <li
569            ><a href="#controls_android.noiseReduction.strength">android.noiseReduction.strength</a></li>
570          </ul>
571        </li>
572        <li>
573          <span class="toc_kind_header">static</span>
574          <ul class="toc_section">
575            <li
576            ><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a></li>
577          </ul>
578        </li>
579        <li>
580          <span class="toc_kind_header">dynamic</span>
581          <ul class="toc_section">
582            <li
583            ><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a></li>
584          </ul>
585        </li>
586      </ul> <!-- toc_section -->
587    </li>
588    <li>
589      <span class="toc_section_header"><a href="#section_quirks">quirks</a></span>
590      <ul class="toc_section">
591        <li>
592          <span class="toc_kind_header">static</span>
593          <ul class="toc_section">
594            <li
595                class="toc_deprecated"
596            ><a href="#static_android.quirks.meteringCropRegion">android.quirks.meteringCropRegion</a></li>
597            <li
598                class="toc_deprecated"
599            ><a href="#static_android.quirks.triggerAfWithAuto">android.quirks.triggerAfWithAuto</a></li>
600            <li
601                class="toc_deprecated"
602            ><a href="#static_android.quirks.useZslFormat">android.quirks.useZslFormat</a></li>
603            <li
604                class="toc_deprecated"
605            ><a href="#static_android.quirks.usePartialResult">android.quirks.usePartialResult</a></li>
606          </ul>
607        </li>
608        <li>
609          <span class="toc_kind_header">dynamic</span>
610          <ul class="toc_section">
611            <li
612                class="toc_deprecated"
613            ><a href="#dynamic_android.quirks.partialResult">android.quirks.partialResult</a></li>
614          </ul>
615        </li>
616      </ul> <!-- toc_section -->
617    </li>
618    <li>
619      <span class="toc_section_header"><a href="#section_request">request</a></span>
620      <ul class="toc_section">
621        <li>
622          <span class="toc_kind_header">controls</span>
623          <ul class="toc_section">
624            <li
625                class="toc_deprecated"
626            ><a href="#controls_android.request.frameCount">android.request.frameCount</a></li>
627            <li
628            ><a href="#controls_android.request.id">android.request.id</a></li>
629            <li
630                class="toc_deprecated"
631            ><a href="#controls_android.request.inputStreams">android.request.inputStreams</a></li>
632            <li
633            ><a href="#controls_android.request.metadataMode">android.request.metadataMode</a></li>
634            <li
635                class="toc_deprecated"
636            ><a href="#controls_android.request.outputStreams">android.request.outputStreams</a></li>
637            <li
638                class="toc_deprecated"
639            ><a href="#controls_android.request.type">android.request.type</a></li>
640          </ul>
641        </li>
642        <li>
643          <span class="toc_kind_header">static</span>
644          <ul class="toc_section">
645            <li
646            ><a href="#static_android.request.maxNumOutputStreams">android.request.maxNumOutputStreams</a></li>
647            <li
648            ><a href="#static_android.request.maxNumOutputRaw">android.request.maxNumOutputRaw</a></li>
649            <li
650            ><a href="#static_android.request.maxNumOutputProc">android.request.maxNumOutputProc</a></li>
651            <li
652            ><a href="#static_android.request.maxNumOutputProcStalling">android.request.maxNumOutputProcStalling</a></li>
653            <li
654                class="toc_deprecated"
655            ><a href="#static_android.request.maxNumReprocessStreams">android.request.maxNumReprocessStreams</a></li>
656            <li
657            ><a href="#static_android.request.maxNumInputStreams">android.request.maxNumInputStreams</a></li>
658            <li
659            ><a href="#static_android.request.pipelineMaxDepth">android.request.pipelineMaxDepth</a></li>
660            <li
661            ><a href="#static_android.request.partialResultCount">android.request.partialResultCount</a></li>
662            <li
663            ><a href="#static_android.request.availableCapabilities">android.request.availableCapabilities</a></li>
664            <li
665            ><a href="#static_android.request.availableRequestKeys">android.request.availableRequestKeys</a></li>
666            <li
667            ><a href="#static_android.request.availableResultKeys">android.request.availableResultKeys</a></li>
668            <li
669            ><a href="#static_android.request.availableCharacteristicsKeys">android.request.availableCharacteristicsKeys</a></li>
670            <li
671            ><a href="#static_android.request.availableSessionKeys">android.request.availableSessionKeys</a></li>
672            <li
673            ><a href="#static_android.request.availablePhysicalCameraRequestKeys">android.request.availablePhysicalCameraRequestKeys</a></li>
674            <li
675            ><a href="#static_android.request.characteristicKeysNeedingPermission">android.request.characteristicKeysNeedingPermission</a></li>
676          </ul>
677        </li>
678        <li>
679          <span class="toc_kind_header">dynamic</span>
680          <ul class="toc_section">
681            <li
682                class="toc_deprecated"
683            ><a href="#dynamic_android.request.frameCount">android.request.frameCount</a></li>
684            <li
685            ><a href="#dynamic_android.request.id">android.request.id</a></li>
686            <li
687            ><a href="#dynamic_android.request.metadataMode">android.request.metadataMode</a></li>
688            <li
689                class="toc_deprecated"
690            ><a href="#dynamic_android.request.outputStreams">android.request.outputStreams</a></li>
691            <li
692            ><a href="#dynamic_android.request.pipelineDepth">android.request.pipelineDepth</a></li>
693          </ul>
694        </li>
695      </ul> <!-- toc_section -->
696    </li>
697    <li>
698      <span class="toc_section_header"><a href="#section_scaler">scaler</a></span>
699      <ul class="toc_section">
700        <li>
701          <span class="toc_kind_header">controls</span>
702          <ul class="toc_section">
703            <li
704            ><a href="#controls_android.scaler.cropRegion">android.scaler.cropRegion</a></li>
705          </ul>
706        </li>
707        <li>
708          <span class="toc_kind_header">static</span>
709          <ul class="toc_section">
710            <li
711                class="toc_deprecated"
712            ><a href="#static_android.scaler.availableFormats">android.scaler.availableFormats</a></li>
713            <li
714                class="toc_deprecated"
715            ><a href="#static_android.scaler.availableJpegMinDurations">android.scaler.availableJpegMinDurations</a></li>
716            <li
717                class="toc_deprecated"
718            ><a href="#static_android.scaler.availableJpegSizes">android.scaler.availableJpegSizes</a></li>
719            <li
720            ><a href="#static_android.scaler.availableMaxDigitalZoom">android.scaler.availableMaxDigitalZoom</a></li>
721            <li
722                class="toc_deprecated"
723            ><a href="#static_android.scaler.availableProcessedMinDurations">android.scaler.availableProcessedMinDurations</a></li>
724            <li
725                class="toc_deprecated"
726            ><a href="#static_android.scaler.availableProcessedSizes">android.scaler.availableProcessedSizes</a></li>
727            <li
728                class="toc_deprecated"
729            ><a href="#static_android.scaler.availableRawMinDurations">android.scaler.availableRawMinDurations</a></li>
730            <li
731                class="toc_deprecated"
732            ><a href="#static_android.scaler.availableRawSizes">android.scaler.availableRawSizes</a></li>
733            <li
734            ><a href="#static_android.scaler.availableInputOutputFormatsMap">android.scaler.availableInputOutputFormatsMap</a></li>
735            <li
736            ><a href="#static_android.scaler.availableStreamConfigurations">android.scaler.availableStreamConfigurations</a></li>
737            <li
738            ><a href="#static_android.scaler.availableMinFrameDurations">android.scaler.availableMinFrameDurations</a></li>
739            <li
740            ><a href="#static_android.scaler.availableStallDurations">android.scaler.availableStallDurations</a></li>
741            <li
742            ><a href="#static_android.scaler.streamConfigurationMap">android.scaler.streamConfigurationMap</a></li>
743            <li
744            ><a href="#static_android.scaler.croppingType">android.scaler.croppingType</a></li>
745            <li
746            ><a href="#static_android.scaler.availableRecommendedStreamConfigurations">android.scaler.availableRecommendedStreamConfigurations</a></li>
747            <li
748            ><a href="#static_android.scaler.availableRecommendedInputOutputFormatsMap">android.scaler.availableRecommendedInputOutputFormatsMap</a></li>
749            <li
750            ><a href="#static_android.scaler.mandatoryStreamCombinations">android.scaler.mandatoryStreamCombinations</a></li>
751          </ul>
752        </li>
753        <li>
754          <span class="toc_kind_header">dynamic</span>
755          <ul class="toc_section">
756            <li
757            ><a href="#dynamic_android.scaler.cropRegion">android.scaler.cropRegion</a></li>
758          </ul>
759        </li>
760      </ul> <!-- toc_section -->
761    </li>
762    <li>
763      <span class="toc_section_header"><a href="#section_sensor">sensor</a></span>
764      <ul class="toc_section">
765        <li>
766          <span class="toc_kind_header">controls</span>
767          <ul class="toc_section">
768            <li
769            ><a href="#controls_android.sensor.exposureTime">android.sensor.exposureTime</a></li>
770            <li
771            ><a href="#controls_android.sensor.frameDuration">android.sensor.frameDuration</a></li>
772            <li
773            ><a href="#controls_android.sensor.sensitivity">android.sensor.sensitivity</a></li>
774            <li
775            ><a href="#controls_android.sensor.testPatternData">android.sensor.testPatternData</a></li>
776            <li
777            ><a href="#controls_android.sensor.testPatternMode">android.sensor.testPatternMode</a></li>
778          </ul>
779        </li>
780        <li>
781          <span class="toc_kind_header">static</span>
782          <ul class="toc_section">
783
784            <li
785            ><a href="#static_android.sensor.info.activeArraySize">android.sensor.info.activeArraySize</a></li>
786            <li
787            ><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a></li>
788            <li
789            ><a href="#static_android.sensor.info.colorFilterArrangement">android.sensor.info.colorFilterArrangement</a></li>
790            <li
791            ><a href="#static_android.sensor.info.exposureTimeRange">android.sensor.info.exposureTimeRange</a></li>
792            <li
793            ><a href="#static_android.sensor.info.maxFrameDuration">android.sensor.info.maxFrameDuration</a></li>
794            <li
795            ><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a></li>
796            <li
797            ><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a></li>
798            <li
799            ><a href="#static_android.sensor.info.whiteLevel">android.sensor.info.whiteLevel</a></li>
800            <li
801            ><a href="#static_android.sensor.info.timestampSource">android.sensor.info.timestampSource</a></li>
802            <li
803            ><a href="#static_android.sensor.info.lensShadingApplied">android.sensor.info.lensShadingApplied</a></li>
804            <li
805            ><a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.sensor.info.preCorrectionActiveArraySize</a></li>
806
807            <li
808            ><a href="#static_android.sensor.referenceIlluminant1">android.sensor.referenceIlluminant1</a></li>
809            <li
810            ><a href="#static_android.sensor.referenceIlluminant2">android.sensor.referenceIlluminant2</a></li>
811            <li
812            ><a href="#static_android.sensor.calibrationTransform1">android.sensor.calibrationTransform1</a></li>
813            <li
814            ><a href="#static_android.sensor.calibrationTransform2">android.sensor.calibrationTransform2</a></li>
815            <li
816            ><a href="#static_android.sensor.colorTransform1">android.sensor.colorTransform1</a></li>
817            <li
818            ><a href="#static_android.sensor.colorTransform2">android.sensor.colorTransform2</a></li>
819            <li
820            ><a href="#static_android.sensor.forwardMatrix1">android.sensor.forwardMatrix1</a></li>
821            <li
822            ><a href="#static_android.sensor.forwardMatrix2">android.sensor.forwardMatrix2</a></li>
823            <li
824            ><a href="#static_android.sensor.baseGainFactor">android.sensor.baseGainFactor</a></li>
825            <li
826            ><a href="#static_android.sensor.blackLevelPattern">android.sensor.blackLevelPattern</a></li>
827            <li
828            ><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a></li>
829            <li
830            ><a href="#static_android.sensor.orientation">android.sensor.orientation</a></li>
831            <li
832            ><a href="#static_android.sensor.profileHueSatMapDimensions">android.sensor.profileHueSatMapDimensions</a></li>
833            <li
834            ><a href="#static_android.sensor.availableTestPatternModes">android.sensor.availableTestPatternModes</a></li>
835            <li
836            ><a href="#static_android.sensor.opticalBlackRegions">android.sensor.opticalBlackRegions</a></li>
837            <li
838            ><a href="#static_android.sensor.opaqueRawSize">android.sensor.opaqueRawSize</a></li>
839          </ul>
840        </li>
841        <li>
842          <span class="toc_kind_header">dynamic</span>
843          <ul class="toc_section">
844            <li
845            ><a href="#dynamic_android.sensor.exposureTime">android.sensor.exposureTime</a></li>
846            <li
847            ><a href="#dynamic_android.sensor.frameDuration">android.sensor.frameDuration</a></li>
848            <li
849            ><a href="#dynamic_android.sensor.sensitivity">android.sensor.sensitivity</a></li>
850            <li
851            ><a href="#dynamic_android.sensor.timestamp">android.sensor.timestamp</a></li>
852            <li
853            ><a href="#dynamic_android.sensor.temperature">android.sensor.temperature</a></li>
854            <li
855            ><a href="#dynamic_android.sensor.neutralColorPoint">android.sensor.neutralColorPoint</a></li>
856            <li
857            ><a href="#dynamic_android.sensor.noiseProfile">android.sensor.noiseProfile</a></li>
858            <li
859            ><a href="#dynamic_android.sensor.profileHueSatMap">android.sensor.profileHueSatMap</a></li>
860            <li
861            ><a href="#dynamic_android.sensor.profileToneCurve">android.sensor.profileToneCurve</a></li>
862            <li
863            ><a href="#dynamic_android.sensor.greenSplit">android.sensor.greenSplit</a></li>
864            <li
865            ><a href="#dynamic_android.sensor.testPatternData">android.sensor.testPatternData</a></li>
866            <li
867            ><a href="#dynamic_android.sensor.testPatternMode">android.sensor.testPatternMode</a></li>
868            <li
869            ><a href="#dynamic_android.sensor.rollingShutterSkew">android.sensor.rollingShutterSkew</a></li>
870            <li
871            ><a href="#dynamic_android.sensor.dynamicBlackLevel">android.sensor.dynamicBlackLevel</a></li>
872            <li
873            ><a href="#dynamic_android.sensor.dynamicWhiteLevel">android.sensor.dynamicWhiteLevel</a></li>
874          </ul>
875        </li>
876      </ul> <!-- toc_section -->
877    </li>
878    <li>
879      <span class="toc_section_header"><a href="#section_shading">shading</a></span>
880      <ul class="toc_section">
881        <li>
882          <span class="toc_kind_header">controls</span>
883          <ul class="toc_section">
884            <li
885            ><a href="#controls_android.shading.mode">android.shading.mode</a></li>
886            <li
887            ><a href="#controls_android.shading.strength">android.shading.strength</a></li>
888          </ul>
889        </li>
890        <li>
891          <span class="toc_kind_header">dynamic</span>
892          <ul class="toc_section">
893            <li
894            ><a href="#dynamic_android.shading.mode">android.shading.mode</a></li>
895          </ul>
896        </li>
897        <li>
898          <span class="toc_kind_header">static</span>
899          <ul class="toc_section">
900            <li
901            ><a href="#static_android.shading.availableModes">android.shading.availableModes</a></li>
902          </ul>
903        </li>
904      </ul> <!-- toc_section -->
905    </li>
906    <li>
907      <span class="toc_section_header"><a href="#section_statistics">statistics</a></span>
908      <ul class="toc_section">
909        <li>
910          <span class="toc_kind_header">controls</span>
911          <ul class="toc_section">
912            <li
913            ><a href="#controls_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a></li>
914            <li
915            ><a href="#controls_android.statistics.histogramMode">android.statistics.histogramMode</a></li>
916            <li
917            ><a href="#controls_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a></li>
918            <li
919            ><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a></li>
920            <li
921            ><a href="#controls_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a></li>
922            <li
923            ><a href="#controls_android.statistics.oisDataMode">android.statistics.oisDataMode</a></li>
924          </ul>
925        </li>
926        <li>
927          <span class="toc_kind_header">static</span>
928          <ul class="toc_section">
929
930            <li
931            ><a href="#static_android.statistics.info.availableFaceDetectModes">android.statistics.info.availableFaceDetectModes</a></li>
932            <li
933            ><a href="#static_android.statistics.info.histogramBucketCount">android.statistics.info.histogramBucketCount</a></li>
934            <li
935            ><a href="#static_android.statistics.info.maxFaceCount">android.statistics.info.maxFaceCount</a></li>
936            <li
937            ><a href="#static_android.statistics.info.maxHistogramCount">android.statistics.info.maxHistogramCount</a></li>
938            <li
939            ><a href="#static_android.statistics.info.maxSharpnessMapValue">android.statistics.info.maxSharpnessMapValue</a></li>
940            <li
941            ><a href="#static_android.statistics.info.sharpnessMapSize">android.statistics.info.sharpnessMapSize</a></li>
942            <li
943            ><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a></li>
944            <li
945            ><a href="#static_android.statistics.info.availableLensShadingMapModes">android.statistics.info.availableLensShadingMapModes</a></li>
946            <li
947            ><a href="#static_android.statistics.info.availableOisDataModes">android.statistics.info.availableOisDataModes</a></li>
948
949          </ul>
950        </li>
951        <li>
952          <span class="toc_kind_header">dynamic</span>
953          <ul class="toc_section">
954            <li
955            ><a href="#dynamic_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a></li>
956            <li
957            ><a href="#dynamic_android.statistics.faceIds">android.statistics.faceIds</a></li>
958            <li
959            ><a href="#dynamic_android.statistics.faceLandmarks">android.statistics.faceLandmarks</a></li>
960            <li
961            ><a href="#dynamic_android.statistics.faceRectangles">android.statistics.faceRectangles</a></li>
962            <li
963            ><a href="#dynamic_android.statistics.faceScores">android.statistics.faceScores</a></li>
964            <li
965            ><a href="#dynamic_android.statistics.faces">android.statistics.faces</a></li>
966            <li
967            ><a href="#dynamic_android.statistics.histogram">android.statistics.histogram</a></li>
968            <li
969            ><a href="#dynamic_android.statistics.histogramMode">android.statistics.histogramMode</a></li>
970            <li
971            ><a href="#dynamic_android.statistics.sharpnessMap">android.statistics.sharpnessMap</a></li>
972            <li
973            ><a href="#dynamic_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a></li>
974            <li
975            ><a href="#dynamic_android.statistics.lensShadingCorrectionMap">android.statistics.lensShadingCorrectionMap</a></li>
976            <li
977            ><a href="#dynamic_android.statistics.lensShadingMap">android.statistics.lensShadingMap</a></li>
978            <li
979                class="toc_deprecated"
980            ><a href="#dynamic_android.statistics.predictedColorGains">android.statistics.predictedColorGains</a></li>
981            <li
982                class="toc_deprecated"
983            ><a href="#dynamic_android.statistics.predictedColorTransform">android.statistics.predictedColorTransform</a></li>
984            <li
985            ><a href="#dynamic_android.statistics.sceneFlicker">android.statistics.sceneFlicker</a></li>
986            <li
987            ><a href="#dynamic_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a></li>
988            <li
989            ><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a></li>
990            <li
991            ><a href="#dynamic_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a></li>
992            <li
993            ><a href="#dynamic_android.statistics.oisDataMode">android.statistics.oisDataMode</a></li>
994            <li
995            ><a href="#dynamic_android.statistics.oisTimestamps">android.statistics.oisTimestamps</a></li>
996            <li
997            ><a href="#dynamic_android.statistics.oisXShifts">android.statistics.oisXShifts</a></li>
998            <li
999            ><a href="#dynamic_android.statistics.oisYShifts">android.statistics.oisYShifts</a></li>
1000            <li
1001            ><a href="#dynamic_android.statistics.oisSamples">android.statistics.oisSamples</a></li>
1002          </ul>
1003        </li>
1004      </ul> <!-- toc_section -->
1005    </li>
1006    <li>
1007      <span class="toc_section_header"><a href="#section_tonemap">tonemap</a></span>
1008      <ul class="toc_section">
1009        <li>
1010          <span class="toc_kind_header">controls</span>
1011          <ul class="toc_section">
1012            <li
1013            ><a href="#controls_android.tonemap.curveBlue">android.tonemap.curveBlue</a></li>
1014            <li
1015            ><a href="#controls_android.tonemap.curveGreen">android.tonemap.curveGreen</a></li>
1016            <li
1017            ><a href="#controls_android.tonemap.curveRed">android.tonemap.curveRed</a></li>
1018            <li
1019            ><a href="#controls_android.tonemap.curve">android.tonemap.curve</a></li>
1020            <li
1021            ><a href="#controls_android.tonemap.mode">android.tonemap.mode</a></li>
1022            <li
1023            ><a href="#controls_android.tonemap.gamma">android.tonemap.gamma</a></li>
1024            <li
1025            ><a href="#controls_android.tonemap.presetCurve">android.tonemap.presetCurve</a></li>
1026          </ul>
1027        </li>
1028        <li>
1029          <span class="toc_kind_header">static</span>
1030          <ul class="toc_section">
1031            <li
1032            ><a href="#static_android.tonemap.maxCurvePoints">android.tonemap.maxCurvePoints</a></li>
1033            <li
1034            ><a href="#static_android.tonemap.availableToneMapModes">android.tonemap.availableToneMapModes</a></li>
1035          </ul>
1036        </li>
1037        <li>
1038          <span class="toc_kind_header">dynamic</span>
1039          <ul class="toc_section">
1040            <li
1041            ><a href="#dynamic_android.tonemap.curveBlue">android.tonemap.curveBlue</a></li>
1042            <li
1043            ><a href="#dynamic_android.tonemap.curveGreen">android.tonemap.curveGreen</a></li>
1044            <li
1045            ><a href="#dynamic_android.tonemap.curveRed">android.tonemap.curveRed</a></li>
1046            <li
1047            ><a href="#dynamic_android.tonemap.curve">android.tonemap.curve</a></li>
1048            <li
1049            ><a href="#dynamic_android.tonemap.mode">android.tonemap.mode</a></li>
1050            <li
1051            ><a href="#dynamic_android.tonemap.gamma">android.tonemap.gamma</a></li>
1052            <li
1053            ><a href="#dynamic_android.tonemap.presetCurve">android.tonemap.presetCurve</a></li>
1054          </ul>
1055        </li>
1056      </ul> <!-- toc_section -->
1057    </li>
1058    <li>
1059      <span class="toc_section_header"><a href="#section_led">led</a></span>
1060      <ul class="toc_section">
1061        <li>
1062          <span class="toc_kind_header">controls</span>
1063          <ul class="toc_section">
1064            <li
1065            ><a href="#controls_android.led.transmit">android.led.transmit</a></li>
1066          </ul>
1067        </li>
1068        <li>
1069          <span class="toc_kind_header">dynamic</span>
1070          <ul class="toc_section">
1071            <li
1072            ><a href="#dynamic_android.led.transmit">android.led.transmit</a></li>
1073          </ul>
1074        </li>
1075        <li>
1076          <span class="toc_kind_header">static</span>
1077          <ul class="toc_section">
1078            <li
1079            ><a href="#static_android.led.availableLeds">android.led.availableLeds</a></li>
1080          </ul>
1081        </li>
1082      </ul> <!-- toc_section -->
1083    </li>
1084    <li>
1085      <span class="toc_section_header"><a href="#section_info">info</a></span>
1086      <ul class="toc_section">
1087        <li>
1088          <span class="toc_kind_header">static</span>
1089          <ul class="toc_section">
1090            <li
1091            ><a href="#static_android.info.supportedHardwareLevel">android.info.supportedHardwareLevel</a></li>
1092            <li
1093            ><a href="#static_android.info.version">android.info.version</a></li>
1094            <li
1095            ><a href="#static_android.info.supportedBufferManagementVersion">android.info.supportedBufferManagementVersion</a></li>
1096          </ul>
1097        </li>
1098      </ul> <!-- toc_section -->
1099    </li>
1100    <li>
1101      <span class="toc_section_header"><a href="#section_blackLevel">blackLevel</a></span>
1102      <ul class="toc_section">
1103        <li>
1104          <span class="toc_kind_header">controls</span>
1105          <ul class="toc_section">
1106            <li
1107            ><a href="#controls_android.blackLevel.lock">android.blackLevel.lock</a></li>
1108          </ul>
1109        </li>
1110        <li>
1111          <span class="toc_kind_header">dynamic</span>
1112          <ul class="toc_section">
1113            <li
1114            ><a href="#dynamic_android.blackLevel.lock">android.blackLevel.lock</a></li>
1115          </ul>
1116        </li>
1117      </ul> <!-- toc_section -->
1118    </li>
1119    <li>
1120      <span class="toc_section_header"><a href="#section_sync">sync</a></span>
1121      <ul class="toc_section">
1122        <li>
1123          <span class="toc_kind_header">dynamic</span>
1124          <ul class="toc_section">
1125            <li
1126            ><a href="#dynamic_android.sync.frameNumber">android.sync.frameNumber</a></li>
1127          </ul>
1128        </li>
1129        <li>
1130          <span class="toc_kind_header">static</span>
1131          <ul class="toc_section">
1132            <li
1133            ><a href="#static_android.sync.maxLatency">android.sync.maxLatency</a></li>
1134          </ul>
1135        </li>
1136      </ul> <!-- toc_section -->
1137    </li>
1138    <li>
1139      <span class="toc_section_header"><a href="#section_reprocess">reprocess</a></span>
1140      <ul class="toc_section">
1141        <li>
1142          <span class="toc_kind_header">controls</span>
1143          <ul class="toc_section">
1144            <li
1145            ><a href="#controls_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a></li>
1146          </ul>
1147        </li>
1148        <li>
1149          <span class="toc_kind_header">dynamic</span>
1150          <ul class="toc_section">
1151            <li
1152            ><a href="#dynamic_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a></li>
1153          </ul>
1154        </li>
1155        <li>
1156          <span class="toc_kind_header">static</span>
1157          <ul class="toc_section">
1158            <li
1159            ><a href="#static_android.reprocess.maxCaptureStall">android.reprocess.maxCaptureStall</a></li>
1160          </ul>
1161        </li>
1162      </ul> <!-- toc_section -->
1163    </li>
1164    <li>
1165      <span class="toc_section_header"><a href="#section_depth">depth</a></span>
1166      <ul class="toc_section">
1167        <li>
1168          <span class="toc_kind_header">static</span>
1169          <ul class="toc_section">
1170            <li
1171            ><a href="#static_android.depth.maxDepthSamples">android.depth.maxDepthSamples</a></li>
1172            <li
1173            ><a href="#static_android.depth.availableDepthStreamConfigurations">android.depth.availableDepthStreamConfigurations</a></li>
1174            <li
1175            ><a href="#static_android.depth.availableDepthMinFrameDurations">android.depth.availableDepthMinFrameDurations</a></li>
1176            <li
1177            ><a href="#static_android.depth.availableDepthStallDurations">android.depth.availableDepthStallDurations</a></li>
1178            <li
1179            ><a href="#static_android.depth.depthIsExclusive">android.depth.depthIsExclusive</a></li>
1180            <li
1181            ><a href="#static_android.depth.availableRecommendedDepthStreamConfigurations">android.depth.availableRecommendedDepthStreamConfigurations</a></li>
1182            <li
1183            ><a href="#static_android.depth.availableDynamicDepthStreamConfigurations">android.depth.availableDynamicDepthStreamConfigurations</a></li>
1184            <li
1185            ><a href="#static_android.depth.availableDynamicDepthMinFrameDurations">android.depth.availableDynamicDepthMinFrameDurations</a></li>
1186            <li
1187            ><a href="#static_android.depth.availableDynamicDepthStallDurations">android.depth.availableDynamicDepthStallDurations</a></li>
1188          </ul>
1189        </li>
1190      </ul> <!-- toc_section -->
1191    </li>
1192    <li>
1193      <span class="toc_section_header"><a href="#section_logicalMultiCamera">logicalMultiCamera</a></span>
1194      <ul class="toc_section">
1195        <li>
1196          <span class="toc_kind_header">static</span>
1197          <ul class="toc_section">
1198            <li
1199            ><a href="#static_android.logicalMultiCamera.physicalIds">android.logicalMultiCamera.physicalIds</a></li>
1200            <li
1201            ><a href="#static_android.logicalMultiCamera.sensorSyncType">android.logicalMultiCamera.sensorSyncType</a></li>
1202          </ul>
1203        </li>
1204        <li>
1205          <span class="toc_kind_header">dynamic</span>
1206          <ul class="toc_section">
1207            <li
1208            ><a href="#dynamic_android.logicalMultiCamera.activePhysicalId">android.logicalMultiCamera.activePhysicalId</a></li>
1209          </ul>
1210        </li>
1211      </ul> <!-- toc_section -->
1212    </li>
1213    <li>
1214      <span class="toc_section_header"><a href="#section_distortionCorrection">distortionCorrection</a></span>
1215      <ul class="toc_section">
1216        <li>
1217          <span class="toc_kind_header">controls</span>
1218          <ul class="toc_section">
1219            <li
1220            ><a href="#controls_android.distortionCorrection.mode">android.distortionCorrection.mode</a></li>
1221          </ul>
1222        </li>
1223        <li>
1224          <span class="toc_kind_header">static</span>
1225          <ul class="toc_section">
1226            <li
1227            ><a href="#static_android.distortionCorrection.availableModes">android.distortionCorrection.availableModes</a></li>
1228          </ul>
1229        </li>
1230        <li>
1231          <span class="toc_kind_header">dynamic</span>
1232          <ul class="toc_section">
1233            <li
1234            ><a href="#dynamic_android.distortionCorrection.mode">android.distortionCorrection.mode</a></li>
1235          </ul>
1236        </li>
1237      </ul> <!-- toc_section -->
1238    </li>
1239    <li>
1240      <span class="toc_section_header"><a href="#section_heic">heic</a></span>
1241      <ul class="toc_section">
1242        <li>
1243          <span class="toc_kind_header">static</span>
1244          <ul class="toc_section">
1245
1246            <li
1247            ><a href="#static_android.heic.info.supported">android.heic.info.supported</a></li>
1248            <li
1249            ><a href="#static_android.heic.info.maxJpegAppSegmentsCount">android.heic.info.maxJpegAppSegmentsCount</a></li>
1250
1251            <li
1252            ><a href="#static_android.heic.availableHeicStreamConfigurations">android.heic.availableHeicStreamConfigurations</a></li>
1253            <li
1254            ><a href="#static_android.heic.availableHeicMinFrameDurations">android.heic.availableHeicMinFrameDurations</a></li>
1255            <li
1256            ><a href="#static_android.heic.availableHeicStallDurations">android.heic.availableHeicStallDurations</a></li>
1257          </ul>
1258        </li>
1259      </ul> <!-- toc_section -->
1260    </li>
1261  </ul>
1262
1263
1264  <h1>Properties</h1>
1265  <table class="properties">
1266
1267    <thead class="thead_dummy">
1268      <tr>
1269        <th class="th_name">Property Name</th>
1270        <th class="th_type">Type</th>
1271        <th class="th_description">Description</th>
1272        <th class="th_units">Units</th>
1273        <th class="th_range">Range</th>
1274        <th class="th_hal_version">HIDL HAL version</th>
1275        <th class="th_tags">Tags</th>
1276      </tr>
1277    </thead> <!-- so that the first occurrence of thead is not
1278                         above the first occurrence of tr -->
1279<!-- <namespace name="android"> -->
1280  <tr><td colspan="7" id="section_colorCorrection" class="section">colorCorrection</td></tr>
1281
1282
1283      <tr><td colspan="7" class="kind">controls</td></tr>
1284
1285      <thead class="entries_header">
1286        <tr>
1287          <th class="th_name">Property Name</th>
1288          <th class="th_type">Type</th>
1289          <th class="th_description">Description</th>
1290          <th class="th_units">Units</th>
1291          <th class="th_range">Range</th>
1292          <th class="th_hal_version">Initial HIDL HAL version</th>
1293          <th class="th_tags">Tags</th>
1294        </tr>
1295      </thead>
1296
1297      <tbody>
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308          <tr class="entry" id="controls_android.colorCorrection.mode">
1309            <td class="entry_name
1310             " rowspan="5">
1311              android.<wbr/>color<wbr/>Correction.<wbr/>mode
1312            </td>
1313            <td class="entry_type">
1314                <span class="entry_type_name entry_type_name_enum">byte</span>
1315
1316              <span class="entry_type_visibility"> [public]</span>
1317
1318
1319              <span class="entry_type_hwlevel">[full] </span>
1320
1321
1322
1323                <ul class="entry_type_enum">
1324                  <li>
1325                    <span class="entry_type_enum_name">TRANSFORM_MATRIX (v3.2)</span>
1326                    <span class="entry_type_enum_notes"><p>Use the <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> matrix
1327and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> to do color conversion.<wbr/></p>
1328<p>All advanced white balance adjustments (not specified
1329by our white balance pipeline) must be disabled.<wbr/></p>
1330<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
1331TRANSFORM_<wbr/>MATRIX is ignored.<wbr/> The camera device will override
1332this value to either FAST or HIGH_<wbr/>QUALITY.<wbr/></p></span>
1333                  </li>
1334                  <li>
1335                    <span class="entry_type_enum_name">FAST (v3.2)</span>
1336                    <span class="entry_type_enum_notes"><p>Color correction processing must not slow down
1337capture rate relative to sensor raw output.<wbr/></p>
1338<p>Advanced white balance adjustments above and beyond
1339the specified white balance pipeline may be applied.<wbr/></p>
1340<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
1341the camera device uses the last frame's AWB values
1342(or defaults if AWB has never been run).<wbr/></p></span>
1343                  </li>
1344                  <li>
1345                    <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
1346                    <span class="entry_type_enum_notes"><p>Color correction processing operates at improved
1347quality but the capture rate might be reduced (relative to sensor
1348raw output rate)</p>
1349<p>Advanced white balance adjustments above and beyond
1350the specified white balance pipeline may be applied.<wbr/></p>
1351<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
1352the camera device uses the last frame's AWB values
1353(or defaults if AWB has never been run).<wbr/></p></span>
1354                  </li>
1355                </ul>
1356
1357            </td> <!-- entry_type -->
1358
1359            <td class="entry_description">
1360              <p>The mode control selects how the image data is converted from the
1361sensor's native color into linear sRGB color.<wbr/></p>
1362            </td>
1363
1364            <td class="entry_units">
1365            </td>
1366
1367            <td class="entry_range">
1368            </td>
1369
1370            <td class="entry_hal_version">
1371              <p>3.<wbr/>2</p>
1372            </td>
1373
1374            <td class="entry_tags">
1375            </td>
1376
1377          </tr>
1378          <tr class="entries_header">
1379            <th class="th_details" colspan="6">Details</th>
1380          </tr>
1381          <tr class="entry_cont">
1382            <td class="entry_details" colspan="6">
1383              <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
1384control is overridden by the AWB routine.<wbr/> When AWB is disabled,<wbr/> the
1385application controls how the color mapping is performed.<wbr/></p>
1386<p>We define the expected processing pipeline below.<wbr/> For consistency
1387across devices,<wbr/> this is always the case with TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1388<p>When either FULL or HIGH_<wbr/>QUALITY is used,<wbr/> the camera device may
1389do additional processing but <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
1390<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> will still be provided by the
1391camera device (in the results) and be roughly correct.<wbr/></p>
1392<p>Switching to TRANSFORM_<wbr/>MATRIX and using the data provided from
1393FAST or HIGH_<wbr/>QUALITY will yield a picture with the same white point
1394as what was produced by the camera device in the earlier frame.<wbr/></p>
1395<p>The expected processing pipeline is as follows:</p>
1396<p><img alt="White balance processing pipeline" src="images/camera2/metadata/android.colorCorrection.mode/processing_pipeline.png"/></p>
1397<p>The white balance is encoded by two values,<wbr/> a 4-channel white-balance
1398gain vector (applied in the Bayer domain),<wbr/> and a 3x3 color transform
1399matrix (applied after demosaic).<wbr/></p>
1400<p>The 4-channel white-balance gains are defined as:</p>
1401<pre><code><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> = [ R G_<wbr/>even G_<wbr/>odd B ]
1402</code></pre>
1403<p>where <code>G_<wbr/>even</code> is the gain for green pixels on even rows of the
1404output,<wbr/> and <code>G_<wbr/>odd</code> is the gain for green pixels on the odd rows.<wbr/>
1405These may be identical for a given camera device implementation; if
1406the camera device does not support a separate gain for even/<wbr/>odd green
1407channels,<wbr/> it will use the <code>G_<wbr/>even</code> value,<wbr/> and write <code>G_<wbr/>odd</code> equal to
1408<code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
1409<p>The matrices for color transforms are defined as a 9-entry vector:</p>
1410<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 ]
1411</code></pre>
1412<p>which define a transform from input sensor colors,<wbr/> <code>P_<wbr/>in = [ r g b ]</code>,<wbr/>
1413to output linear sRGB,<wbr/> <code>P_<wbr/>out = [ r' g' b' ]</code>,<wbr/></p>
1414<p>with colors as follows:</p>
1415<pre><code>r' = I0r + I1g + I2b
1416g' = I3r + I4g + I5b
1417b' = I6r + I7g + I8b
1418</code></pre>
1419<p>Both the input and output value ranges must match.<wbr/> Overflow/<wbr/>underflow
1420values are clipped to fit within the range.<wbr/></p>
1421            </td>
1422          </tr>
1423
1424          <tr class="entries_header">
1425            <th class="th_details" colspan="6">HAL Implementation Details</th>
1426          </tr>
1427          <tr class="entry_cont">
1428            <td class="entry_details" colspan="6">
1429              <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if color correction control is available
1430on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
1431That is,<wbr/> if the highest quality implementation on the camera device does not slow down
1432capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY should generate the same output.<wbr/></p>
1433            </td>
1434          </tr>
1435
1436          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
1437           <!-- end of entry -->
1438
1439
1440          <tr class="entry" id="controls_android.colorCorrection.transform">
1441            <td class="entry_name
1442             " rowspan="3">
1443              android.<wbr/>color<wbr/>Correction.<wbr/>transform
1444            </td>
1445            <td class="entry_type">
1446                <span class="entry_type_name">rational</span>
1447                <span class="entry_type_container">x</span>
1448
1449                <span class="entry_type_array">
1450                  3 x 3
1451                </span>
1452              <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
1453
1454
1455              <span class="entry_type_hwlevel">[full] </span>
1456
1457
1458                <div class="entry_type_notes">3x3 rational matrix in row-major order</div>
1459
1460
1461            </td> <!-- entry_type -->
1462
1463            <td class="entry_description">
1464              <p>A color transform matrix to use to transform
1465from sensor RGB color space to output linear sRGB color space.<wbr/></p>
1466            </td>
1467
1468            <td class="entry_units">
1469              Unitless scale factors
1470            </td>
1471
1472            <td class="entry_range">
1473            </td>
1474
1475            <td class="entry_hal_version">
1476              <p>3.<wbr/>2</p>
1477            </td>
1478
1479            <td class="entry_tags">
1480            </td>
1481
1482          </tr>
1483          <tr class="entries_header">
1484            <th class="th_details" colspan="6">Details</th>
1485          </tr>
1486          <tr class="entry_cont">
1487            <td class="entry_details" colspan="6">
1488              <p>This matrix is either set by the camera device when the request
1489<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not TRANSFORM_<wbr/>MATRIX,<wbr/> or
1490directly by the application in the request when the
1491<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1492<p>In the latter case,<wbr/> the camera device may round the matrix to account
1493for precision issues; the final rounded matrix should be reported back
1494in this matrix result metadata.<wbr/> The transform should keep the magnitude
1495of the output color values within <code>[0,<wbr/> 1.<wbr/>0]</code> (assuming input color
1496values is within the normalized range <code>[0,<wbr/> 1.<wbr/>0]</code>),<wbr/> or clipping may occur.<wbr/></p>
1497<p>The valid range of each matrix element varies on different devices,<wbr/> but
1498values within [-1.<wbr/>5,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
1499            </td>
1500          </tr>
1501
1502
1503          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
1504           <!-- end of entry -->
1505
1506
1507          <tr class="entry" id="controls_android.colorCorrection.gains">
1508            <td class="entry_name
1509             " rowspan="5">
1510              android.<wbr/>color<wbr/>Correction.<wbr/>gains
1511            </td>
1512            <td class="entry_type">
1513                <span class="entry_type_name">float</span>
1514                <span class="entry_type_container">x</span>
1515
1516                <span class="entry_type_array">
1517                  4
1518                </span>
1519              <span class="entry_type_visibility"> [public as rggbChannelVector]</span>
1520
1521
1522              <span class="entry_type_hwlevel">[full] </span>
1523
1524
1525                <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div>
1526
1527
1528            </td> <!-- entry_type -->
1529
1530            <td class="entry_description">
1531              <p>Gains applying to Bayer raw color channels for
1532white-balance.<wbr/></p>
1533            </td>
1534
1535            <td class="entry_units">
1536              Unitless gain factors
1537            </td>
1538
1539            <td class="entry_range">
1540            </td>
1541
1542            <td class="entry_hal_version">
1543              <p>3.<wbr/>2</p>
1544            </td>
1545
1546            <td class="entry_tags">
1547            </td>
1548
1549          </tr>
1550          <tr class="entries_header">
1551            <th class="th_details" colspan="6">Details</th>
1552          </tr>
1553          <tr class="entry_cont">
1554            <td class="entry_details" colspan="6">
1555              <p>These per-channel gains are either set by the camera device
1556when the request <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not
1557TRANSFORM_<wbr/>MATRIX,<wbr/> or directly by the application in the
1558request when the <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is
1559TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1560<p>The gains in the result metadata are the gains actually
1561applied by the camera device to the current frame.<wbr/></p>
1562<p>The valid range of gains varies on different devices,<wbr/> but gains
1563between [1.<wbr/>0,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/> Even if a given
1564device allows gains below 1.<wbr/>0,<wbr/> this is usually not recommended because
1565this can create color artifacts.<wbr/></p>
1566            </td>
1567          </tr>
1568
1569          <tr class="entries_header">
1570            <th class="th_details" colspan="6">HAL Implementation Details</th>
1571          </tr>
1572          <tr class="entry_cont">
1573            <td class="entry_details" colspan="6">
1574              <p>The 4-channel white-balance gains are defined in
1575the order of <code>[R G_<wbr/>even G_<wbr/>odd B]</code>,<wbr/> where <code>G_<wbr/>even</code> is the gain
1576for green pixels on even rows of the output,<wbr/> and <code>G_<wbr/>odd</code>
1577is the gain for green pixels on the odd rows.<wbr/></p>
1578<p>If a HAL does not support a separate gain for even/<wbr/>odd green
1579channels,<wbr/> it must use the <code>G_<wbr/>even</code> value,<wbr/> and write
1580<code>G_<wbr/>odd</code> equal to <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
1581            </td>
1582          </tr>
1583
1584          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
1585           <!-- end of entry -->
1586
1587
1588          <tr class="entry" id="controls_android.colorCorrection.aberrationMode">
1589            <td class="entry_name
1590             " rowspan="3">
1591              android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode
1592            </td>
1593            <td class="entry_type">
1594                <span class="entry_type_name entry_type_name_enum">byte</span>
1595
1596              <span class="entry_type_visibility"> [public]</span>
1597
1598
1599              <span class="entry_type_hwlevel">[legacy] </span>
1600
1601
1602
1603                <ul class="entry_type_enum">
1604                  <li>
1605                    <span class="entry_type_enum_name">OFF (v3.2)</span>
1606                    <span class="entry_type_enum_notes"><p>No aberration correction is applied.<wbr/></p></span>
1607                  </li>
1608                  <li>
1609                    <span class="entry_type_enum_name">FAST (v3.2)</span>
1610                    <span class="entry_type_enum_notes"><p>Aberration correction will not slow down capture rate
1611relative to sensor raw output.<wbr/></p></span>
1612                  </li>
1613                  <li>
1614                    <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
1615                    <span class="entry_type_enum_notes"><p>Aberration correction operates at improved quality but the capture rate might be
1616reduced (relative to sensor raw output rate)</p></span>
1617                  </li>
1618                </ul>
1619
1620            </td> <!-- entry_type -->
1621
1622            <td class="entry_description">
1623              <p>Mode of operation for the chromatic aberration correction algorithm.<wbr/></p>
1624            </td>
1625
1626            <td class="entry_units">
1627            </td>
1628
1629            <td class="entry_range">
1630              <p><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></p>
1631            </td>
1632
1633            <td class="entry_hal_version">
1634              <p>3.<wbr/>2</p>
1635            </td>
1636
1637            <td class="entry_tags">
1638            </td>
1639
1640          </tr>
1641          <tr class="entries_header">
1642            <th class="th_details" colspan="6">Details</th>
1643          </tr>
1644          <tr class="entry_cont">
1645            <td class="entry_details" colspan="6">
1646              <p>Chromatic (color) aberration is caused by the fact that different wavelengths of light
1647can not focus on the same point after exiting from the lens.<wbr/> This metadata defines
1648the high level control of chromatic aberration correction algorithm,<wbr/> which aims to
1649minimize the chromatic artifacts that may occur along the object boundaries in an
1650image.<wbr/></p>
1651<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean that camera device determined aberration
1652correction will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device will
1653use the highest-quality aberration correction algorithms,<wbr/> even if it slows down
1654capture rate.<wbr/> FAST means the camera device will not slow down capture rate when
1655applying aberration correction.<wbr/></p>
1656<p>LEGACY devices will always be in FAST mode.<wbr/></p>
1657            </td>
1658          </tr>
1659
1660
1661          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
1662           <!-- end of entry -->
1663
1664
1665
1666      <!-- end of kind -->
1667      </tbody>
1668      <tr><td colspan="7" class="kind">dynamic</td></tr>
1669
1670      <thead class="entries_header">
1671        <tr>
1672          <th class="th_name">Property Name</th>
1673          <th class="th_type">Type</th>
1674          <th class="th_description">Description</th>
1675          <th class="th_units">Units</th>
1676          <th class="th_range">Range</th>
1677          <th class="th_hal_version">Initial HIDL HAL version</th>
1678          <th class="th_tags">Tags</th>
1679        </tr>
1680      </thead>
1681
1682      <tbody>
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693          <tr class="entry" id="dynamic_android.colorCorrection.mode">
1694            <td class="entry_name
1695             " rowspan="5">
1696              android.<wbr/>color<wbr/>Correction.<wbr/>mode
1697            </td>
1698            <td class="entry_type">
1699                <span class="entry_type_name entry_type_name_enum">byte</span>
1700
1701              <span class="entry_type_visibility"> [public]</span>
1702
1703
1704              <span class="entry_type_hwlevel">[full] </span>
1705
1706
1707
1708                <ul class="entry_type_enum">
1709                  <li>
1710                    <span class="entry_type_enum_name">TRANSFORM_MATRIX (v3.2)</span>
1711                    <span class="entry_type_enum_notes"><p>Use the <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> matrix
1712and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> to do color conversion.<wbr/></p>
1713<p>All advanced white balance adjustments (not specified
1714by our white balance pipeline) must be disabled.<wbr/></p>
1715<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
1716TRANSFORM_<wbr/>MATRIX is ignored.<wbr/> The camera device will override
1717this value to either FAST or HIGH_<wbr/>QUALITY.<wbr/></p></span>
1718                  </li>
1719                  <li>
1720                    <span class="entry_type_enum_name">FAST (v3.2)</span>
1721                    <span class="entry_type_enum_notes"><p>Color correction processing must not slow down
1722capture rate relative to sensor raw output.<wbr/></p>
1723<p>Advanced white balance adjustments above and beyond
1724the specified white balance pipeline may be applied.<wbr/></p>
1725<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
1726the camera device uses the last frame's AWB values
1727(or defaults if AWB has never been run).<wbr/></p></span>
1728                  </li>
1729                  <li>
1730                    <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
1731                    <span class="entry_type_enum_notes"><p>Color correction processing operates at improved
1732quality but the capture rate might be reduced (relative to sensor
1733raw output rate)</p>
1734<p>Advanced white balance adjustments above and beyond
1735the specified white balance pipeline may be applied.<wbr/></p>
1736<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
1737the camera device uses the last frame's AWB values
1738(or defaults if AWB has never been run).<wbr/></p></span>
1739                  </li>
1740                </ul>
1741
1742            </td> <!-- entry_type -->
1743
1744            <td class="entry_description">
1745              <p>The mode control selects how the image data is converted from the
1746sensor's native color into linear sRGB color.<wbr/></p>
1747            </td>
1748
1749            <td class="entry_units">
1750            </td>
1751
1752            <td class="entry_range">
1753            </td>
1754
1755            <td class="entry_hal_version">
1756              <p>3.<wbr/>2</p>
1757            </td>
1758
1759            <td class="entry_tags">
1760            </td>
1761
1762          </tr>
1763          <tr class="entries_header">
1764            <th class="th_details" colspan="6">Details</th>
1765          </tr>
1766          <tr class="entry_cont">
1767            <td class="entry_details" colspan="6">
1768              <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
1769control is overridden by the AWB routine.<wbr/> When AWB is disabled,<wbr/> the
1770application controls how the color mapping is performed.<wbr/></p>
1771<p>We define the expected processing pipeline below.<wbr/> For consistency
1772across devices,<wbr/> this is always the case with TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1773<p>When either FULL or HIGH_<wbr/>QUALITY is used,<wbr/> the camera device may
1774do additional processing but <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
1775<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> will still be provided by the
1776camera device (in the results) and be roughly correct.<wbr/></p>
1777<p>Switching to TRANSFORM_<wbr/>MATRIX and using the data provided from
1778FAST or HIGH_<wbr/>QUALITY will yield a picture with the same white point
1779as what was produced by the camera device in the earlier frame.<wbr/></p>
1780<p>The expected processing pipeline is as follows:</p>
1781<p><img alt="White balance processing pipeline" src="images/camera2/metadata/android.colorCorrection.mode/processing_pipeline.png"/></p>
1782<p>The white balance is encoded by two values,<wbr/> a 4-channel white-balance
1783gain vector (applied in the Bayer domain),<wbr/> and a 3x3 color transform
1784matrix (applied after demosaic).<wbr/></p>
1785<p>The 4-channel white-balance gains are defined as:</p>
1786<pre><code><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> = [ R G_<wbr/>even G_<wbr/>odd B ]
1787</code></pre>
1788<p>where <code>G_<wbr/>even</code> is the gain for green pixels on even rows of the
1789output,<wbr/> and <code>G_<wbr/>odd</code> is the gain for green pixels on the odd rows.<wbr/>
1790These may be identical for a given camera device implementation; if
1791the camera device does not support a separate gain for even/<wbr/>odd green
1792channels,<wbr/> it will use the <code>G_<wbr/>even</code> value,<wbr/> and write <code>G_<wbr/>odd</code> equal to
1793<code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
1794<p>The matrices for color transforms are defined as a 9-entry vector:</p>
1795<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 ]
1796</code></pre>
1797<p>which define a transform from input sensor colors,<wbr/> <code>P_<wbr/>in = [ r g b ]</code>,<wbr/>
1798to output linear sRGB,<wbr/> <code>P_<wbr/>out = [ r' g' b' ]</code>,<wbr/></p>
1799<p>with colors as follows:</p>
1800<pre><code>r' = I0r + I1g + I2b
1801g' = I3r + I4g + I5b
1802b' = I6r + I7g + I8b
1803</code></pre>
1804<p>Both the input and output value ranges must match.<wbr/> Overflow/<wbr/>underflow
1805values are clipped to fit within the range.<wbr/></p>
1806            </td>
1807          </tr>
1808
1809          <tr class="entries_header">
1810            <th class="th_details" colspan="6">HAL Implementation Details</th>
1811          </tr>
1812          <tr class="entry_cont">
1813            <td class="entry_details" colspan="6">
1814              <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if color correction control is available
1815on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
1816That is,<wbr/> if the highest quality implementation on the camera device does not slow down
1817capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY should generate the same output.<wbr/></p>
1818            </td>
1819          </tr>
1820
1821          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
1822           <!-- end of entry -->
1823
1824
1825          <tr class="entry" id="dynamic_android.colorCorrection.transform">
1826            <td class="entry_name
1827             " rowspan="3">
1828              android.<wbr/>color<wbr/>Correction.<wbr/>transform
1829            </td>
1830            <td class="entry_type">
1831                <span class="entry_type_name">rational</span>
1832                <span class="entry_type_container">x</span>
1833
1834                <span class="entry_type_array">
1835                  3 x 3
1836                </span>
1837              <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
1838
1839
1840              <span class="entry_type_hwlevel">[full] </span>
1841
1842
1843                <div class="entry_type_notes">3x3 rational matrix in row-major order</div>
1844
1845
1846            </td> <!-- entry_type -->
1847
1848            <td class="entry_description">
1849              <p>A color transform matrix to use to transform
1850from sensor RGB color space to output linear sRGB color space.<wbr/></p>
1851            </td>
1852
1853            <td class="entry_units">
1854              Unitless scale factors
1855            </td>
1856
1857            <td class="entry_range">
1858            </td>
1859
1860            <td class="entry_hal_version">
1861              <p>3.<wbr/>2</p>
1862            </td>
1863
1864            <td class="entry_tags">
1865            </td>
1866
1867          </tr>
1868          <tr class="entries_header">
1869            <th class="th_details" colspan="6">Details</th>
1870          </tr>
1871          <tr class="entry_cont">
1872            <td class="entry_details" colspan="6">
1873              <p>This matrix is either set by the camera device when the request
1874<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not TRANSFORM_<wbr/>MATRIX,<wbr/> or
1875directly by the application in the request when the
1876<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1877<p>In the latter case,<wbr/> the camera device may round the matrix to account
1878for precision issues; the final rounded matrix should be reported back
1879in this matrix result metadata.<wbr/> The transform should keep the magnitude
1880of the output color values within <code>[0,<wbr/> 1.<wbr/>0]</code> (assuming input color
1881values is within the normalized range <code>[0,<wbr/> 1.<wbr/>0]</code>),<wbr/> or clipping may occur.<wbr/></p>
1882<p>The valid range of each matrix element varies on different devices,<wbr/> but
1883values within [-1.<wbr/>5,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
1884            </td>
1885          </tr>
1886
1887
1888          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
1889           <!-- end of entry -->
1890
1891
1892          <tr class="entry" id="dynamic_android.colorCorrection.gains">
1893            <td class="entry_name
1894             " rowspan="5">
1895              android.<wbr/>color<wbr/>Correction.<wbr/>gains
1896            </td>
1897            <td class="entry_type">
1898                <span class="entry_type_name">float</span>
1899                <span class="entry_type_container">x</span>
1900
1901                <span class="entry_type_array">
1902                  4
1903                </span>
1904              <span class="entry_type_visibility"> [public as rggbChannelVector]</span>
1905
1906
1907              <span class="entry_type_hwlevel">[full] </span>
1908
1909
1910                <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div>
1911
1912
1913            </td> <!-- entry_type -->
1914
1915            <td class="entry_description">
1916              <p>Gains applying to Bayer raw color channels for
1917white-balance.<wbr/></p>
1918            </td>
1919
1920            <td class="entry_units">
1921              Unitless gain factors
1922            </td>
1923
1924            <td class="entry_range">
1925            </td>
1926
1927            <td class="entry_hal_version">
1928              <p>3.<wbr/>2</p>
1929            </td>
1930
1931            <td class="entry_tags">
1932            </td>
1933
1934          </tr>
1935          <tr class="entries_header">
1936            <th class="th_details" colspan="6">Details</th>
1937          </tr>
1938          <tr class="entry_cont">
1939            <td class="entry_details" colspan="6">
1940              <p>These per-channel gains are either set by the camera device
1941when the request <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not
1942TRANSFORM_<wbr/>MATRIX,<wbr/> or directly by the application in the
1943request when the <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is
1944TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1945<p>The gains in the result metadata are the gains actually
1946applied by the camera device to the current frame.<wbr/></p>
1947<p>The valid range of gains varies on different devices,<wbr/> but gains
1948between [1.<wbr/>0,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/> Even if a given
1949device allows gains below 1.<wbr/>0,<wbr/> this is usually not recommended because
1950this can create color artifacts.<wbr/></p>
1951            </td>
1952          </tr>
1953
1954          <tr class="entries_header">
1955            <th class="th_details" colspan="6">HAL Implementation Details</th>
1956          </tr>
1957          <tr class="entry_cont">
1958            <td class="entry_details" colspan="6">
1959              <p>The 4-channel white-balance gains are defined in
1960the order of <code>[R G_<wbr/>even G_<wbr/>odd B]</code>,<wbr/> where <code>G_<wbr/>even</code> is the gain
1961for green pixels on even rows of the output,<wbr/> and <code>G_<wbr/>odd</code>
1962is the gain for green pixels on the odd rows.<wbr/></p>
1963<p>If a HAL does not support a separate gain for even/<wbr/>odd green
1964channels,<wbr/> it must use the <code>G_<wbr/>even</code> value,<wbr/> and write
1965<code>G_<wbr/>odd</code> equal to <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
1966            </td>
1967          </tr>
1968
1969          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
1970           <!-- end of entry -->
1971
1972
1973          <tr class="entry" id="dynamic_android.colorCorrection.aberrationMode">
1974            <td class="entry_name
1975             " rowspan="3">
1976              android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode
1977            </td>
1978            <td class="entry_type">
1979                <span class="entry_type_name entry_type_name_enum">byte</span>
1980
1981              <span class="entry_type_visibility"> [public]</span>
1982
1983
1984              <span class="entry_type_hwlevel">[legacy] </span>
1985
1986
1987
1988                <ul class="entry_type_enum">
1989                  <li>
1990                    <span class="entry_type_enum_name">OFF (v3.2)</span>
1991                    <span class="entry_type_enum_notes"><p>No aberration correction is applied.<wbr/></p></span>
1992                  </li>
1993                  <li>
1994                    <span class="entry_type_enum_name">FAST (v3.2)</span>
1995                    <span class="entry_type_enum_notes"><p>Aberration correction will not slow down capture rate
1996relative to sensor raw output.<wbr/></p></span>
1997                  </li>
1998                  <li>
1999                    <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
2000                    <span class="entry_type_enum_notes"><p>Aberration correction operates at improved quality but the capture rate might be
2001reduced (relative to sensor raw output rate)</p></span>
2002                  </li>
2003                </ul>
2004
2005            </td> <!-- entry_type -->
2006
2007            <td class="entry_description">
2008              <p>Mode of operation for the chromatic aberration correction algorithm.<wbr/></p>
2009            </td>
2010
2011            <td class="entry_units">
2012            </td>
2013
2014            <td class="entry_range">
2015              <p><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></p>
2016            </td>
2017
2018            <td class="entry_hal_version">
2019              <p>3.<wbr/>2</p>
2020            </td>
2021
2022            <td class="entry_tags">
2023            </td>
2024
2025          </tr>
2026          <tr class="entries_header">
2027            <th class="th_details" colspan="6">Details</th>
2028          </tr>
2029          <tr class="entry_cont">
2030            <td class="entry_details" colspan="6">
2031              <p>Chromatic (color) aberration is caused by the fact that different wavelengths of light
2032can not focus on the same point after exiting from the lens.<wbr/> This metadata defines
2033the high level control of chromatic aberration correction algorithm,<wbr/> which aims to
2034minimize the chromatic artifacts that may occur along the object boundaries in an
2035image.<wbr/></p>
2036<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean that camera device determined aberration
2037correction will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device will
2038use the highest-quality aberration correction algorithms,<wbr/> even if it slows down
2039capture rate.<wbr/> FAST means the camera device will not slow down capture rate when
2040applying aberration correction.<wbr/></p>
2041<p>LEGACY devices will always be in FAST mode.<wbr/></p>
2042            </td>
2043          </tr>
2044
2045
2046          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2047           <!-- end of entry -->
2048
2049
2050
2051      <!-- end of kind -->
2052      </tbody>
2053      <tr><td colspan="7" class="kind">static</td></tr>
2054
2055      <thead class="entries_header">
2056        <tr>
2057          <th class="th_name">Property Name</th>
2058          <th class="th_type">Type</th>
2059          <th class="th_description">Description</th>
2060          <th class="th_units">Units</th>
2061          <th class="th_range">Range</th>
2062          <th class="th_hal_version">Initial HIDL HAL version</th>
2063          <th class="th_tags">Tags</th>
2064        </tr>
2065      </thead>
2066
2067      <tbody>
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078          <tr class="entry" id="static_android.colorCorrection.availableAberrationModes">
2079            <td class="entry_name
2080             " rowspan="5">
2081              android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes
2082            </td>
2083            <td class="entry_type">
2084                <span class="entry_type_name">byte</span>
2085                <span class="entry_type_container">x</span>
2086
2087                <span class="entry_type_array">
2088                  n
2089                </span>
2090              <span class="entry_type_visibility"> [public as enumList]</span>
2091
2092
2093              <span class="entry_type_hwlevel">[legacy] </span>
2094
2095
2096                <div class="entry_type_notes">list of enums</div>
2097
2098
2099            </td> <!-- entry_type -->
2100
2101            <td class="entry_description">
2102              <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
2103supported by this camera device.<wbr/></p>
2104            </td>
2105
2106            <td class="entry_units">
2107            </td>
2108
2109            <td class="entry_range">
2110              <p>Any value listed in <a href="#controls_android.colorCorrection.aberrationMode">android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode</a></p>
2111            </td>
2112
2113            <td class="entry_hal_version">
2114              <p>3.<wbr/>2</p>
2115            </td>
2116
2117            <td class="entry_tags">
2118              <ul class="entry_tags">
2119                  <li><a href="#tag_V1">V1</a></li>
2120              </ul>
2121            </td>
2122
2123          </tr>
2124          <tr class="entries_header">
2125            <th class="th_details" colspan="6">Details</th>
2126          </tr>
2127          <tr class="entry_cont">
2128            <td class="entry_details" colspan="6">
2129              <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
2130aberration correction modes are available for a device,<wbr/> this list will solely include
2131OFF mode.<wbr/> All camera devices will support either OFF or FAST mode.<wbr/></p>
2132<p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always list
2133OFF mode.<wbr/> This includes all FULL level devices.<wbr/></p>
2134<p>LEGACY devices will always only support FAST mode.<wbr/></p>
2135            </td>
2136          </tr>
2137
2138          <tr class="entries_header">
2139            <th class="th_details" colspan="6">HAL Implementation Details</th>
2140          </tr>
2141          <tr class="entry_cont">
2142            <td class="entry_details" colspan="6">
2143              <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if chromatic aberration control is available
2144on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
2145That is,<wbr/> if the highest quality implementation on the camera device does not slow down
2146capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
2147            </td>
2148          </tr>
2149
2150          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2151           <!-- end of entry -->
2152
2153
2154
2155      <!-- end of kind -->
2156      </tbody>
2157
2158  <!-- end of section -->
2159  <tr><td colspan="7" id="section_control" class="section">control</td></tr>
2160
2161
2162      <tr><td colspan="7" class="kind">controls</td></tr>
2163
2164      <thead class="entries_header">
2165        <tr>
2166          <th class="th_name">Property Name</th>
2167          <th class="th_type">Type</th>
2168          <th class="th_description">Description</th>
2169          <th class="th_units">Units</th>
2170          <th class="th_range">Range</th>
2171          <th class="th_hal_version">Initial HIDL HAL version</th>
2172          <th class="th_tags">Tags</th>
2173        </tr>
2174      </thead>
2175
2176      <tbody>
2177
2178
2179
2180
2181
2182
2183
2184
2185
2186
2187          <tr class="entry" id="controls_android.control.aeAntibandingMode">
2188            <td class="entry_name
2189             " rowspan="5">
2190              android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode
2191            </td>
2192            <td class="entry_type">
2193                <span class="entry_type_name entry_type_name_enum">byte</span>
2194
2195              <span class="entry_type_visibility"> [public]</span>
2196
2197
2198              <span class="entry_type_hwlevel">[legacy] </span>
2199
2200
2201
2202                <ul class="entry_type_enum">
2203                  <li>
2204                    <span class="entry_type_enum_name">OFF (v3.2)</span>
2205                    <span class="entry_type_enum_notes"><p>The camera device will not adjust exposure duration to
2206avoid banding problems.<wbr/></p></span>
2207                  </li>
2208                  <li>
2209                    <span class="entry_type_enum_name">50HZ (v3.2)</span>
2210                    <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
2211avoid banding problems with 50Hz illumination sources.<wbr/></p></span>
2212                  </li>
2213                  <li>
2214                    <span class="entry_type_enum_name">60HZ (v3.2)</span>
2215                    <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
2216avoid banding problems with 60Hz illumination
2217sources.<wbr/></p></span>
2218                  </li>
2219                  <li>
2220                    <span class="entry_type_enum_name">AUTO (v3.2)</span>
2221                    <span class="entry_type_enum_notes"><p>The camera device will automatically adapt its
2222antibanding routine to the current illumination
2223condition.<wbr/> This is the default mode if AUTO is
2224available on given camera device.<wbr/></p></span>
2225                  </li>
2226                </ul>
2227
2228            </td> <!-- entry_type -->
2229
2230            <td class="entry_description">
2231              <p>The desired setting for the camera device's auto-exposure
2232algorithm's antibanding compensation.<wbr/></p>
2233            </td>
2234
2235            <td class="entry_units">
2236            </td>
2237
2238            <td class="entry_range">
2239              <p><a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a></p>
2240            </td>
2241
2242            <td class="entry_hal_version">
2243              <p>3.<wbr/>2</p>
2244            </td>
2245
2246            <td class="entry_tags">
2247              <ul class="entry_tags">
2248                  <li><a href="#tag_BC">BC</a></li>
2249              </ul>
2250            </td>
2251
2252          </tr>
2253          <tr class="entries_header">
2254            <th class="th_details" colspan="6">Details</th>
2255          </tr>
2256          <tr class="entry_cont">
2257            <td class="entry_details" colspan="6">
2258              <p>Some kinds of lighting fixtures,<wbr/> such as some fluorescent
2259lights,<wbr/> flicker at the rate of the power supply frequency
2260(60Hz or 50Hz,<wbr/> depending on country).<wbr/> While this is
2261typically not noticeable to a person,<wbr/> it can be visible to
2262a camera device.<wbr/> If a camera sets its exposure time to the
2263wrong value,<wbr/> the flicker may become visible in the
2264viewfinder as flicker or in a final captured image,<wbr/> as a
2265set of variable-brightness bands across the image.<wbr/></p>
2266<p>Therefore,<wbr/> the auto-exposure routines of camera devices
2267include antibanding routines that ensure that the chosen
2268exposure value will not cause such banding.<wbr/> The choice of
2269exposure time depends on the rate of flicker,<wbr/> which the
2270camera device can detect automatically,<wbr/> or the expected
2271rate can be selected by the application using this
2272control.<wbr/></p>
2273<p>A given camera device may not support all of the possible
2274options for the antibanding mode.<wbr/> The
2275<a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a> key contains
2276the available modes for a given camera device.<wbr/></p>
2277<p>AUTO mode is the default if it is available on given
2278camera device.<wbr/> When AUTO mode is not available,<wbr/> the
2279default will be either 50HZ or 60HZ,<wbr/> and both 50HZ
2280and 60HZ will be available.<wbr/></p>
2281<p>If manual exposure control is enabled (by setting
2282<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/>
2283then this setting has no effect,<wbr/> and the application must
2284ensure it selects exposure times that do not cause banding
2285issues.<wbr/> The <a href="#dynamic_android.statistics.sceneFlicker">android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker</a> key can assist
2286the application in this.<wbr/></p>
2287            </td>
2288          </tr>
2289
2290          <tr class="entries_header">
2291            <th class="th_details" colspan="6">HAL Implementation Details</th>
2292          </tr>
2293          <tr class="entry_cont">
2294            <td class="entry_details" colspan="6">
2295              <p>For all capture request templates,<wbr/> this field must be set
2296to AUTO if AUTO mode is available.<wbr/> If AUTO is not available,<wbr/>
2297the default must be either 50HZ or 60HZ,<wbr/> and both 50HZ and
229860HZ must be available.<wbr/></p>
2299<p>If manual exposure control is enabled (by setting
2300<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/>
2301then the exposure values provided by the application must not be
2302adjusted for antibanding.<wbr/></p>
2303            </td>
2304          </tr>
2305
2306          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2307           <!-- end of entry -->
2308
2309
2310          <tr class="entry" id="controls_android.control.aeExposureCompensation">
2311            <td class="entry_name
2312             " rowspan="3">
2313              android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation
2314            </td>
2315            <td class="entry_type">
2316                <span class="entry_type_name">int32</span>
2317
2318              <span class="entry_type_visibility"> [public]</span>
2319
2320
2321              <span class="entry_type_hwlevel">[legacy] </span>
2322
2323
2324
2325
2326            </td> <!-- entry_type -->
2327
2328            <td class="entry_description">
2329              <p>Adjustment to auto-exposure (AE) target image
2330brightness.<wbr/></p>
2331            </td>
2332
2333            <td class="entry_units">
2334              Compensation steps
2335            </td>
2336
2337            <td class="entry_range">
2338              <p><a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a></p>
2339            </td>
2340
2341            <td class="entry_hal_version">
2342              <p>3.<wbr/>2</p>
2343            </td>
2344
2345            <td class="entry_tags">
2346              <ul class="entry_tags">
2347                  <li><a href="#tag_BC">BC</a></li>
2348              </ul>
2349            </td>
2350
2351          </tr>
2352          <tr class="entries_header">
2353            <th class="th_details" colspan="6">Details</th>
2354          </tr>
2355          <tr class="entry_cont">
2356            <td class="entry_details" colspan="6">
2357              <p>The adjustment is measured as a count of steps,<wbr/> with the
2358step size defined by <a href="#static_android.control.aeCompensationStep">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step</a> and the
2359allowed range by <a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a>.<wbr/></p>
2360<p>For example,<wbr/> if the exposure value (EV) step is 0.<wbr/>333,<wbr/> '6'
2361will mean an exposure compensation of +2 EV; -3 will mean an
2362exposure compensation of -1 EV.<wbr/> One EV represents a doubling
2363of image brightness.<wbr/> Note that this control will only be
2364effective if <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>!=</code> OFF.<wbr/> This control
2365will take effect even when <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> <code>== true</code>.<wbr/></p>
2366<p>In the event of exposure compensation value being changed,<wbr/> camera device
2367may take several frames to reach the newly requested exposure target.<wbr/>
2368During that time,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> field will be in the SEARCHING
2369state.<wbr/> Once the new exposure target is reached,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> will
2370change from SEARCHING to either CONVERGED,<wbr/> LOCKED (if AE lock is enabled),<wbr/> or
2371FLASH_<wbr/>REQUIRED (if the scene is too dark for still capture).<wbr/></p>
2372            </td>
2373          </tr>
2374
2375
2376          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2377           <!-- end of entry -->
2378
2379
2380          <tr class="entry" id="controls_android.control.aeLock">
2381            <td class="entry_name
2382             " rowspan="3">
2383              android.<wbr/>control.<wbr/>ae<wbr/>Lock
2384            </td>
2385            <td class="entry_type">
2386                <span class="entry_type_name entry_type_name_enum">byte</span>
2387
2388              <span class="entry_type_visibility"> [public as boolean]</span>
2389
2390
2391              <span class="entry_type_hwlevel">[legacy] </span>
2392
2393
2394
2395                <ul class="entry_type_enum">
2396                  <li>
2397                    <span class="entry_type_enum_name">OFF (v3.2)</span>
2398                    <span class="entry_type_enum_notes"><p>Auto-exposure lock is disabled; the AE algorithm
2399is free to update its parameters.<wbr/></p></span>
2400                  </li>
2401                  <li>
2402                    <span class="entry_type_enum_name">ON (v3.2)</span>
2403                    <span class="entry_type_enum_notes"><p>Auto-exposure lock is enabled; the AE algorithm
2404must not update the exposure and sensitivity parameters
2405while the lock is active.<wbr/></p>
2406<p><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a> setting changes
2407will still take effect while auto-exposure is locked.<wbr/></p>
2408<p>Some rare LEGACY devices may not support
2409this,<wbr/> in which case the value will always be overridden to OFF.<wbr/></p></span>
2410                  </li>
2411                </ul>
2412
2413            </td> <!-- entry_type -->
2414
2415            <td class="entry_description">
2416              <p>Whether auto-exposure (AE) is currently locked to its latest
2417calculated values.<wbr/></p>
2418            </td>
2419
2420            <td class="entry_units">
2421            </td>
2422
2423            <td class="entry_range">
2424            </td>
2425
2426            <td class="entry_hal_version">
2427              <p>3.<wbr/>2</p>
2428            </td>
2429
2430            <td class="entry_tags">
2431              <ul class="entry_tags">
2432                  <li><a href="#tag_BC">BC</a></li>
2433              </ul>
2434            </td>
2435
2436          </tr>
2437          <tr class="entries_header">
2438            <th class="th_details" colspan="6">Details</th>
2439          </tr>
2440          <tr class="entry_cont">
2441            <td class="entry_details" colspan="6">
2442              <p>When set to <code>true</code> (ON),<wbr/> the AE algorithm is locked to its latest parameters,<wbr/>
2443and will not change exposure settings until the lock is set to <code>false</code> (OFF).<wbr/></p>
2444<p>Note that even when AE is locked,<wbr/> the flash may be fired if
2445the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is ON_<wbr/>AUTO_<wbr/>FLASH /<wbr/>
2446ON_<wbr/>ALWAYS_<wbr/>FLASH /<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE.<wbr/></p>
2447<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
2448is ON,<wbr/> the camera device will still adjust its exposure value.<wbr/></p>
2449<p>If AE precapture is triggered (see <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>)
2450when AE is already locked,<wbr/> the camera device will not change the exposure time
2451(<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>)
2452parameters.<wbr/> The flash may be fired if the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>
2453is ON_<wbr/>AUTO_<wbr/>FLASH/<wbr/>ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE and the scene is too dark.<wbr/> If the
2454<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/>
2455Similarly,<wbr/> AE precapture trigger CANCEL has no effect when AE is already locked.<wbr/></p>
2456<p>When an AE precapture sequence is triggered,<wbr/> AE unlock will not be able to unlock
2457the AE if AE is locked by the camera device internally during precapture metering
2458sequence In other words,<wbr/> submitting requests with AE unlock has no effect for an
2459ongoing precapture metering sequence.<wbr/> Otherwise,<wbr/> the precapture metering sequence
2460will never succeed in a sequence of preview requests where AE lock is always set
2461to <code>false</code>.<wbr/></p>
2462<p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that
2463get locked do not necessarily correspond to the settings that were present in the
2464latest capture result received from the camera device,<wbr/> since additional captures
2465and AE updates may have occurred even before the result was sent out.<wbr/> If an
2466application is switching between automatic and manual control and wishes to eliminate
2467any flicker during the switch,<wbr/> the following procedure is recommended:</p>
2468<ol>
2469<li>Starting in auto-AE mode:</li>
2470<li>Lock AE</li>
2471<li>Wait for the first result to be output that has the AE locked</li>
2472<li>Copy exposure settings from that result into a request,<wbr/> set the request to manual AE</li>
2473<li>Submit the capture request,<wbr/> proceed to run manual AE as desired.<wbr/></li>
2474</ol>
2475<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>
2476            </td>
2477          </tr>
2478
2479
2480          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2481           <!-- end of entry -->
2482
2483
2484          <tr class="entry" id="controls_android.control.aeMode">
2485            <td class="entry_name
2486             " rowspan="3">
2487              android.<wbr/>control.<wbr/>ae<wbr/>Mode
2488            </td>
2489            <td class="entry_type">
2490                <span class="entry_type_name entry_type_name_enum">byte</span>
2491
2492              <span class="entry_type_visibility"> [public]</span>
2493
2494
2495              <span class="entry_type_hwlevel">[legacy] </span>
2496
2497
2498
2499                <ul class="entry_type_enum">
2500                  <li>
2501                    <span class="entry_type_enum_name">OFF (v3.2)</span>
2502                    <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is disabled.<wbr/></p>
2503<p>The application-selected <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
2504<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> and
2505<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are used by the camera
2506device,<wbr/> along with android.<wbr/>flash.<wbr/>* fields,<wbr/> if there's
2507a flash unit for this camera device.<wbr/></p>
2508<p>Note that auto-white balance (AWB) and auto-focus (AF)
2509behavior is device dependent when AE is in OFF mode.<wbr/>
2510To have consistent behavior across different devices,<wbr/>
2511it is recommended to either set AWB and AF to OFF mode
2512or lock AWB and AF before setting AE to OFF.<wbr/>
2513See <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/>
2514<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>
2515for more details.<wbr/></p>
2516<p>LEGACY devices do not support the OFF mode and will
2517override attempts to use this value to ON.<wbr/></p></span>
2518                  </li>
2519                  <li>
2520                    <span class="entry_type_enum_name">ON (v3.2)</span>
2521                    <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is active,<wbr/>
2522with no flash control.<wbr/></p>
2523<p>The application's values for
2524<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
2525<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
2526<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are ignored.<wbr/> The
2527application has control over the various
2528android.<wbr/>flash.<wbr/>* fields.<wbr/></p></span>
2529                  </li>
2530                  <li>
2531                    <span class="entry_type_enum_name">ON_AUTO_FLASH (v3.2)</span>
2532                    <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
2533the camera's flash unit,<wbr/> firing it in low-light
2534conditions.<wbr/></p>
2535<p>The flash may be fired during a precapture sequence
2536(triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and
2537may be fired for captures for which the
2538<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to
2539STILL_<wbr/>CAPTURE</p></span>
2540                  </li>
2541                  <li>
2542                    <span class="entry_type_enum_name">ON_ALWAYS_FLASH (v3.2)</span>
2543                    <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
2544the camera's flash unit,<wbr/> always firing it for still
2545captures.<wbr/></p>
2546<p>The flash may be fired during a precapture sequence
2547(triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and
2548will always be fired for captures for which the
2549<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to
2550STILL_<wbr/>CAPTURE</p></span>
2551                  </li>
2552                  <li>
2553                    <span class="entry_type_enum_name">ON_AUTO_FLASH_REDEYE (v3.2)</span>
2554                    <span class="entry_type_enum_notes"><p>Like ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> but with automatic red eye
2555reduction.<wbr/></p>
2556<p>If deemed necessary by the camera device,<wbr/> a red eye
2557reduction flash will fire during the precapture
2558sequence.<wbr/></p></span>
2559                  </li>
2560                  <li>
2561                    <span class="entry_type_enum_name">ON_EXTERNAL_FLASH (v3.3)</span>
2562                    <span class="entry_type_enum_notes"><p>An external flash has been turned on.<wbr/></p>
2563<p>It informs the camera device that an external flash has been turned on,<wbr/> and that
2564metering (and continuous focus if active) should be quickly recaculated to account
2565for the external flash.<wbr/> Otherwise,<wbr/> this mode acts like ON.<wbr/></p>
2566<p>When the external flash is turned off,<wbr/> AE mode should be changed to one of the
2567other available AE modes.<wbr/></p>
2568<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
2569be FLASH_<wbr/>REQUIRED after the camera device finishes AE scan and it's too dark without
2570flash.<wbr/></p></span>
2571                  </li>
2572                </ul>
2573
2574            </td> <!-- entry_type -->
2575
2576            <td class="entry_description">
2577              <p>The desired mode for the camera device's
2578auto-exposure routine.<wbr/></p>
2579            </td>
2580
2581            <td class="entry_units">
2582            </td>
2583
2584            <td class="entry_range">
2585              <p><a href="#static_android.control.aeAvailableModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes</a></p>
2586            </td>
2587
2588            <td class="entry_hal_version">
2589              <p>3.<wbr/>2</p>
2590            </td>
2591
2592            <td class="entry_tags">
2593              <ul class="entry_tags">
2594                  <li><a href="#tag_BC">BC</a></li>
2595              </ul>
2596            </td>
2597
2598          </tr>
2599          <tr class="entries_header">
2600            <th class="th_details" colspan="6">Details</th>
2601          </tr>
2602          <tr class="entry_cont">
2603            <td class="entry_details" colspan="6">
2604              <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is
2605AUTO.<wbr/></p>
2606<p>When set to any of the ON modes,<wbr/> the camera device's
2607auto-exposure routine is enabled,<wbr/> overriding the
2608application's selected exposure time,<wbr/> sensor sensitivity,<wbr/>
2609and frame duration (<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
2610<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
2611<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>).<wbr/> If one of the FLASH modes
2612is selected,<wbr/> the camera device's flash unit controls are
2613also overridden.<wbr/></p>
2614<p>The FLASH modes are only available if the camera device
2615has a flash unit (<a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> is <code>true</code>).<wbr/></p>
2616<p>If flash TORCH mode is desired,<wbr/> this field must be set to
2617ON or OFF,<wbr/> and <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> set to TORCH.<wbr/></p>
2618<p>When set to any of the ON modes,<wbr/> the values chosen by the
2619camera device auto-exposure routine for the overridden
2620fields for a given capture will be available in its
2621CaptureResult.<wbr/></p>
2622            </td>
2623          </tr>
2624
2625
2626          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2627           <!-- end of entry -->
2628
2629
2630          <tr class="entry" id="controls_android.control.aeRegions">
2631            <td class="entry_name
2632             " rowspan="5">
2633              android.<wbr/>control.<wbr/>ae<wbr/>Regions
2634            </td>
2635            <td class="entry_type">
2636                <span class="entry_type_name">int32</span>
2637                <span class="entry_type_container">x</span>
2638
2639                <span class="entry_type_array">
2640                  5 x area_count
2641                </span>
2642              <span class="entry_type_visibility"> [public as meteringRectangle]</span>
2643
2644
2645
2646
2647
2648
2649            </td> <!-- entry_type -->
2650
2651            <td class="entry_description">
2652              <p>List of metering areas to use for auto-exposure adjustment.<wbr/></p>
2653            </td>
2654
2655            <td class="entry_units">
2656              Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size or
2657            android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size depending on
2658            distortion correction capability and mode
2659            </td>
2660
2661            <td class="entry_range">
2662              <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
2663<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>
2664depending on distortion correction capability and mode</p>
2665            </td>
2666
2667            <td class="entry_hal_version">
2668              <p>3.<wbr/>2</p>
2669            </td>
2670
2671            <td class="entry_tags">
2672              <ul class="entry_tags">
2673                  <li><a href="#tag_BC">BC</a></li>
2674              </ul>
2675            </td>
2676
2677          </tr>
2678          <tr class="entries_header">
2679            <th class="th_details" colspan="6">Details</th>
2680          </tr>
2681          <tr class="entry_cont">
2682            <td class="entry_details" colspan="6">
2683              <p>Not available if <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a> is 0.<wbr/>
2684Otherwise will always be present.<wbr/></p>
2685<p>The maximum number of regions supported by the device is determined by the value
2686of <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a>.<wbr/></p>
2687<p>For devices not supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate
2688system 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
2689the top-left pixel in the active pixel array,<wbr/> and
2690(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
2691<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
2692active pixel array.<wbr/></p>
2693<p>For devices supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate
2694system depends on the mode being set.<wbr/>
2695When the distortion correction mode is OFF,<wbr/> the coordinate system follows
2696<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
2697<code>(0,<wbr/> 0)</code> being the top-left pixel of the pre-correction active array,<wbr/> and
2698(<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/>
2699<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
2700pixel in the pre-correction active pixel array.<wbr/>
2701When the distortion correction mode is not OFF,<wbr/> the coordinate system follows
2702<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> with
2703<code>(0,<wbr/> 0)</code> being the top-left pixel of the active array,<wbr/> and
2704(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
2705<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
2706active pixel array.<wbr/></p>
2707<p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight
2708for every pixel in the area.<wbr/> This means that a large metering area
2709with the same weight as a smaller area will have more effect in
2710the metering result.<wbr/> Metering areas can partially overlap and the
2711camera device will add the weights in the overlap region.<wbr/></p>
2712<p>The weights are relative to weights of other exposure metering regions,<wbr/> so if only one
2713region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0
2714weight is ignored.<wbr/></p>
2715<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
2716camera device.<wbr/></p>
2717<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
2718capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
2719region and output only the intersection rectangle as the metering region in the result
2720metadata.<wbr/>  If the region is entirely outside the crop region,<wbr/> it will be ignored and
2721not reported in the result metadata.<wbr/></p>
2722            </td>
2723          </tr>
2724
2725          <tr class="entries_header">
2726            <th class="th_details" colspan="6">HAL Implementation Details</th>
2727          </tr>
2728          <tr class="entry_cont">
2729            <td class="entry_details" colspan="6">
2730              <p>The HAL level representation of MeteringRectangle[] is a
2731int[5 * area_<wbr/>count].<wbr/>
2732Every five elements represent a metering region of
2733(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
2734The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
2735exclusive on xmax and ymax.<wbr/>
2736HAL must always report metering regions in the coordinate system of pre-correction
2737active array.<wbr/></p>
2738            </td>
2739          </tr>
2740
2741          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2742           <!-- end of entry -->
2743
2744
2745          <tr class="entry" id="controls_android.control.aeTargetFpsRange">
2746            <td class="entry_name
2747             " rowspan="3">
2748              android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range
2749            </td>
2750            <td class="entry_type">
2751                <span class="entry_type_name">int32</span>
2752                <span class="entry_type_container">x</span>
2753
2754                <span class="entry_type_array">
2755                  2
2756                </span>
2757              <span class="entry_type_visibility"> [public as rangeInt]</span>
2758
2759
2760              <span class="entry_type_hwlevel">[legacy] </span>
2761
2762
2763
2764
2765            </td> <!-- entry_type -->
2766
2767            <td class="entry_description">
2768              <p>Range over which the auto-exposure routine can
2769adjust the capture frame rate to maintain good
2770exposure.<wbr/></p>
2771            </td>
2772
2773            <td class="entry_units">
2774              Frames per second (FPS)
2775            </td>
2776
2777            <td class="entry_range">
2778              <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>
2779            </td>
2780
2781            <td class="entry_hal_version">
2782              <p>3.<wbr/>2</p>
2783            </td>
2784
2785            <td class="entry_tags">
2786              <ul class="entry_tags">
2787                  <li><a href="#tag_BC">BC</a></li>
2788              </ul>
2789            </td>
2790
2791          </tr>
2792          <tr class="entries_header">
2793            <th class="th_details" colspan="6">Details</th>
2794          </tr>
2795          <tr class="entry_cont">
2796            <td class="entry_details" colspan="6">
2797              <p>Only constrains auto-exposure (AE) algorithm,<wbr/> not
2798manual control of <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> and
2799<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>.<wbr/></p>
2800            </td>
2801          </tr>
2802
2803
2804          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2805           <!-- end of entry -->
2806
2807
2808          <tr class="entry" id="controls_android.control.aePrecaptureTrigger">
2809            <td class="entry_name
2810             " rowspan="5">
2811              android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger
2812            </td>
2813            <td class="entry_type">
2814                <span class="entry_type_name entry_type_name_enum">byte</span>
2815
2816              <span class="entry_type_visibility"> [public]</span>
2817
2818
2819              <span class="entry_type_hwlevel">[limited] </span>
2820
2821
2822
2823                <ul class="entry_type_enum">
2824                  <li>
2825                    <span class="entry_type_enum_name">IDLE (v3.2)</span>
2826                    <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
2827                  </li>
2828                  <li>
2829                    <span class="entry_type_enum_name">START (v3.2)</span>
2830                    <span class="entry_type_enum_notes"><p>The precapture metering sequence will be started
2831by the camera device.<wbr/></p>
2832<p>The exact effect of the precapture trigger depends on
2833the current AE mode and state.<wbr/></p></span>
2834                  </li>
2835                  <li>
2836                    <span class="entry_type_enum_name">CANCEL (v3.2)</span>
2837                    <span class="entry_type_enum_notes"><p>The camera device will cancel any currently active or completed
2838precapture metering sequence,<wbr/> the auto-exposure routine will return to its
2839initial state.<wbr/></p></span>
2840                  </li>
2841                </ul>
2842
2843            </td> <!-- entry_type -->
2844
2845            <td class="entry_description">
2846              <p>Whether the camera device will trigger a precapture
2847metering sequence when it processes this request.<wbr/></p>
2848            </td>
2849
2850            <td class="entry_units">
2851            </td>
2852
2853            <td class="entry_range">
2854            </td>
2855
2856            <td class="entry_hal_version">
2857              <p>3.<wbr/>2</p>
2858            </td>
2859
2860            <td class="entry_tags">
2861              <ul class="entry_tags">
2862                  <li><a href="#tag_BC">BC</a></li>
2863              </ul>
2864            </td>
2865
2866          </tr>
2867          <tr class="entries_header">
2868            <th class="th_details" colspan="6">Details</th>
2869          </tr>
2870          <tr class="entry_cont">
2871            <td class="entry_details" colspan="6">
2872              <p>This entry is normally set to IDLE,<wbr/> or is not
2873included at all in the request settings.<wbr/> When included and
2874set to START,<wbr/> the camera device will trigger the auto-exposure (AE)
2875precapture metering sequence.<wbr/></p>
2876<p>When set to CANCEL,<wbr/> the camera device will cancel any active
2877precapture metering trigger,<wbr/> and return to its initial AE state.<wbr/>
2878If a precapture metering sequence is already completed,<wbr/> and the camera
2879device has implicitly locked the AE for subsequent still capture,<wbr/> the
2880CANCEL trigger will unlock the AE and return to its initial AE state.<wbr/></p>
2881<p>The precapture sequence should be triggered before starting a
2882high-quality still capture for final metering decisions to
2883be made,<wbr/> and for firing pre-capture flash pulses to estimate
2884scene brightness and required final capture flash power,<wbr/> when
2885the flash is enabled.<wbr/></p>
2886<p>Normally,<wbr/> this entry should be set to START for only a
2887single request,<wbr/> and the application should wait until the
2888sequence completes before starting a new one.<wbr/></p>
2889<p>When a precapture metering sequence is finished,<wbr/> the camera device
2890may lock the auto-exposure routine internally to be able to accurately expose the
2891subsequent still capture image (<code><a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE</code>).<wbr/>
2892For this case,<wbr/> the AE may not resume normal scan if no subsequent still capture is
2893submitted.<wbr/> To ensure that the AE routine restarts normal scan,<wbr/> the application should
2894submit 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
2895with <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
2896still capture request after the precapture sequence completes.<wbr/> Alternatively,<wbr/> for
2897API level 23 or newer devices,<wbr/> the CANCEL can be used to unlock the camera device
2898internally locked AE if the application doesn't submit a still capture request after
2899the AE precapture trigger.<wbr/> Note that,<wbr/> the CANCEL was added in API level 23,<wbr/> and must not
2900be used in devices that have earlier API levels.<wbr/></p>
2901<p>The exact effect of auto-exposure (AE) precapture trigger
2902depends on the current AE mode and state; see
2903<a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> for AE precapture state transition
2904details.<wbr/></p>
2905<p>On LEGACY-level devices,<wbr/> the precapture trigger is not supported;
2906capturing a high-resolution JPEG image will automatically trigger a
2907precapture sequence before the high-resolution capture,<wbr/> including
2908potentially firing a pre-capture flash.<wbr/></p>
2909<p>Using the precapture trigger and the auto-focus trigger <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>
2910simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between
2911the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a
2912focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous
2913trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and
2914changes to <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> indicating the start of the precapture sequence,<wbr/> for
2915example.<wbr/></p>
2916<p>If both the precapture and the auto-focus trigger are activated on the same request,<wbr/> then
2917the camera device will complete them in the optimal order for that device.<wbr/></p>
2918            </td>
2919          </tr>
2920
2921          <tr class="entries_header">
2922            <th class="th_details" colspan="6">HAL Implementation Details</th>
2923          </tr>
2924          <tr class="entry_cont">
2925            <td class="entry_details" colspan="6">
2926              <p>The HAL must support triggering the AE precapture trigger while an AF trigger is active
2927(and vice versa),<wbr/> or at the same time as the AF trigger.<wbr/>  It is acceptable for the HAL to
2928treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the
2929AE trigger.<wbr/>  Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/>
2930to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p>
2931            </td>
2932          </tr>
2933
2934          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2935           <!-- end of entry -->
2936
2937
2938          <tr class="entry" id="controls_android.control.afMode">
2939            <td class="entry_name
2940             " rowspan="5">
2941              android.<wbr/>control.<wbr/>af<wbr/>Mode
2942            </td>
2943            <td class="entry_type">
2944                <span class="entry_type_name entry_type_name_enum">byte</span>
2945
2946              <span class="entry_type_visibility"> [public]</span>
2947
2948
2949              <span class="entry_type_hwlevel">[legacy] </span>
2950
2951
2952
2953                <ul class="entry_type_enum">
2954                  <li>
2955                    <span class="entry_type_enum_name">OFF (v3.2)</span>
2956                    <span class="entry_type_enum_notes"><p>The auto-focus routine does not control the lens;
2957<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> is controlled by the
2958application.<wbr/></p></span>
2959                  </li>
2960                  <li>
2961                    <span class="entry_type_enum_name">AUTO (v3.2)</span>
2962                    <span class="entry_type_enum_notes"><p>Basic automatic focus mode.<wbr/></p>
2963<p>In this mode,<wbr/> the lens does not move unless
2964the autofocus trigger action is called.<wbr/> When that trigger
2965is activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
2966the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/></p>
2967<p>Always supported if lens is not fixed focus.<wbr/></p>
2968<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
2969is fixed-focus.<wbr/></p>
2970<p>Triggering AF_<wbr/>CANCEL resets the lens position to default,<wbr/>
2971and sets the AF state to INACTIVE.<wbr/></p></span>
2972                  </li>
2973                  <li>
2974                    <span class="entry_type_enum_name">MACRO (v3.2)</span>
2975                    <span class="entry_type_enum_notes"><p>Close-up focusing mode.<wbr/></p>
2976<p>In this mode,<wbr/> the lens does not move unless the
2977autofocus trigger action is called.<wbr/> When that trigger is
2978activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
2979the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/> This
2980mode is optimized for focusing on objects very close to
2981the camera.<wbr/></p>
2982<p>When that trigger is activated,<wbr/> AF will transition to
2983ACTIVE_<wbr/>SCAN,<wbr/> then to the outcome of the scan (FOCUSED or
2984NOT_<wbr/>FOCUSED).<wbr/> Triggering cancel AF resets the lens
2985position to default,<wbr/> and sets the AF state to
2986INACTIVE.<wbr/></p></span>
2987                  </li>
2988                  <li>
2989                    <span class="entry_type_enum_name">CONTINUOUS_VIDEO (v3.2)</span>
2990                    <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
2991position continually to attempt to provide a
2992constantly-in-focus image stream.<wbr/></p>
2993<p>The focusing behavior should be suitable for good quality
2994video recording; typically this means slower focus
2995movement and no overshoots.<wbr/> When the AF trigger is not
2996involved,<wbr/> the AF algorithm should start in INACTIVE state,<wbr/>
2997and then transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED
2998states as appropriate.<wbr/> When the AF trigger is activated,<wbr/>
2999the algorithm should immediately transition into
3000AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the
3001lens position until a cancel AF trigger is received.<wbr/></p>
3002<p>Once cancel is received,<wbr/> the algorithm should transition
3003back to INACTIVE and resume passive scan.<wbr/> Note that this
3004behavior is not identical to CONTINUOUS_<wbr/>PICTURE,<wbr/> since an
3005ongoing PASSIVE_<wbr/>SCAN must immediately be
3006canceled.<wbr/></p></span>
3007                  </li>
3008                  <li>
3009                    <span class="entry_type_enum_name">CONTINUOUS_PICTURE (v3.2)</span>
3010                    <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
3011position continually to attempt to provide a
3012constantly-in-focus image stream.<wbr/></p>
3013<p>The focusing behavior should be suitable for still image
3014capture; typically this means focusing as fast as
3015possible.<wbr/> When the AF trigger is not involved,<wbr/> the AF
3016algorithm should start in INACTIVE state,<wbr/> and then
3017transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED states as
3018appropriate as it attempts to maintain focus.<wbr/> When the AF
3019trigger is activated,<wbr/> the algorithm should finish its
3020PASSIVE_<wbr/>SCAN if active,<wbr/> and then transition into
3021AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the
3022lens position until a cancel AF trigger is received.<wbr/></p>
3023<p>When the AF cancel trigger is activated,<wbr/> the algorithm
3024should transition back to INACTIVE and then act as if it
3025has just been started.<wbr/></p></span>
3026                  </li>
3027                  <li>
3028                    <span class="entry_type_enum_name">EDOF (v3.2)</span>
3029                    <span class="entry_type_enum_notes"><p>Extended depth of field (digital focus) mode.<wbr/></p>
3030<p>The camera device will produce images with an extended
3031depth of field automatically; no special focusing
3032operations need to be done before taking a picture.<wbr/></p>
3033<p>AF triggers are ignored,<wbr/> and the AF state will always be
3034INACTIVE.<wbr/></p></span>
3035                  </li>
3036                </ul>
3037
3038            </td> <!-- entry_type -->
3039
3040            <td class="entry_description">
3041              <p>Whether auto-focus (AF) is currently enabled,<wbr/> and what
3042mode it is set to.<wbr/></p>
3043            </td>
3044
3045            <td class="entry_units">
3046            </td>
3047
3048            <td class="entry_range">
3049              <p><a href="#static_android.control.afAvailableModes">android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes</a></p>
3050            </td>
3051
3052            <td class="entry_hal_version">
3053              <p>3.<wbr/>2</p>
3054            </td>
3055
3056            <td class="entry_tags">
3057              <ul class="entry_tags">
3058                  <li><a href="#tag_BC">BC</a></li>
3059              </ul>
3060            </td>
3061
3062          </tr>
3063          <tr class="entries_header">
3064            <th class="th_details" colspan="6">Details</th>
3065          </tr>
3066          <tr class="entry_cont">
3067            <td class="entry_details" colspan="6">
3068              <p>Only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> = AUTO and the lens is not fixed focus
3069(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
3070when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> the behavior of AF is device
3071dependent.<wbr/> It is recommended to lock AF by using <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a> before
3072setting <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>
3073<p>If the lens is controlled by the camera device auto-focus algorithm,<wbr/>
3074the camera device will report the current AF status in <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>
3075in result metadata.<wbr/></p>
3076            </td>
3077          </tr>
3078
3079          <tr class="entries_header">
3080            <th class="th_details" colspan="6">HAL Implementation Details</th>
3081          </tr>
3082          <tr class="entry_cont">
3083            <td class="entry_details" colspan="6">
3084              <p>When afMode is AUTO or MACRO,<wbr/> the lens must not move until an AF trigger is sent in a
3085request (<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
3086up with either FOCUSED_<wbr/>LOCKED or NOT_<wbr/>FOCUSED_<wbr/>LOCKED state (see
3087<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
3088locked and will not move.<wbr/> If camera movement (e.<wbr/>g.<wbr/> tilting camera) causes the lens to move
3089after the lens is locked,<wbr/> the HAL must compensate this movement appropriately such that
3090the same focal plane remains in focus.<wbr/></p>
3091<p>When afMode is one of the continuous auto focus modes,<wbr/> the HAL is free to start a AF
3092scan whenever it's not locked.<wbr/> When the lens is locked after an AF trigger
3093(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
3094same lock behavior as above.<wbr/></p>
3095<p>When afMode is OFF,<wbr/> the application controls focus manually.<wbr/> The accuracy of the
3096focus 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/>
3097However,<wbr/> the lens must not move regardless of the camera movement for any focus distance
3098manual control.<wbr/></p>
3099<p>To put this in concrete terms,<wbr/> if the camera has lens elements which may move based on
3100camera orientation or motion (e.<wbr/>g.<wbr/> due to gravity),<wbr/> then the HAL must drive the lens to
3101remain in a fixed position invariant to the camera's orientation or motion,<wbr/> for example,<wbr/>
3102by using accelerometer measurements in the lens control logic.<wbr/> This is a typical issue
3103that will arise on camera modules with open-loop VCMs.<wbr/></p>
3104            </td>
3105          </tr>
3106
3107          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3108           <!-- end of entry -->
3109
3110
3111          <tr class="entry" id="controls_android.control.afRegions">
3112            <td class="entry_name
3113             " rowspan="5">
3114              android.<wbr/>control.<wbr/>af<wbr/>Regions
3115            </td>
3116            <td class="entry_type">
3117                <span class="entry_type_name">int32</span>
3118                <span class="entry_type_container">x</span>
3119
3120                <span class="entry_type_array">
3121                  5 x area_count
3122                </span>
3123              <span class="entry_type_visibility"> [public as meteringRectangle]</span>
3124
3125
3126
3127
3128
3129
3130            </td> <!-- entry_type -->
3131
3132            <td class="entry_description">
3133              <p>List of metering areas to use for auto-focus.<wbr/></p>
3134            </td>
3135
3136            <td class="entry_units">
3137              Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size or
3138            android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size depending on
3139            distortion correction capability and mode
3140            </td>
3141
3142            <td class="entry_range">
3143              <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
3144<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>
3145depending on distortion correction capability and mode</p>
3146            </td>
3147
3148            <td class="entry_hal_version">
3149              <p>3.<wbr/>2</p>
3150            </td>
3151
3152            <td class="entry_tags">
3153              <ul class="entry_tags">
3154                  <li><a href="#tag_BC">BC</a></li>
3155              </ul>
3156            </td>
3157
3158          </tr>
3159          <tr class="entries_header">
3160            <th class="th_details" colspan="6">Details</th>
3161          </tr>
3162          <tr class="entry_cont">
3163            <td class="entry_details" colspan="6">
3164              <p>Not available if <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a> is 0.<wbr/>
3165Otherwise will always be present.<wbr/></p>
3166<p>The maximum number of focus areas supported by the device is determined by the value
3167of <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a>.<wbr/></p>
3168<p>For devices not supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate
3169system 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
3170the top-left pixel in the active pixel array,<wbr/> and
3171(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
3172<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
3173active pixel array.<wbr/></p>
3174<p>For devices supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate
3175system depends on the mode being set.<wbr/>
3176When the distortion correction mode is OFF,<wbr/> the coordinate system follows
3177<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
3178<code>(0,<wbr/> 0)</code> being the top-left pixel of the pre-correction active array,<wbr/> and
3179(<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/>
3180<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
3181pixel in the pre-correction active pixel array.<wbr/>
3182When the distortion correction mode is not OFF,<wbr/> the coordinate system follows
3183<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> with
3184<code>(0,<wbr/> 0)</code> being the top-left pixel of the active array,<wbr/> and
3185(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
3186<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
3187active pixel array.<wbr/></p>
3188<p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight
3189for every pixel in the area.<wbr/> This means that a large metering area
3190with the same weight as a smaller area will have more effect in
3191the metering result.<wbr/> Metering areas can partially overlap and the
3192camera device will add the weights in the overlap region.<wbr/></p>
3193<p>The weights are relative to weights of other metering regions,<wbr/> so if only one region
3194is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0 weight is
3195ignored.<wbr/></p>
3196<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
3197camera device.<wbr/> The capture result will either be a zero weight region as well,<wbr/> or
3198the region selected by the camera device as the focus area of interest.<wbr/></p>
3199<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
3200capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
3201region and output only the intersection rectangle as the metering region in the result
3202metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and
3203not reported in the result metadata.<wbr/></p>
3204            </td>
3205          </tr>
3206
3207          <tr class="entries_header">
3208            <th class="th_details" colspan="6">HAL Implementation Details</th>
3209          </tr>
3210          <tr class="entry_cont">
3211            <td class="entry_details" colspan="6">
3212              <p>The HAL level representation of MeteringRectangle[] is a
3213int[5 * area_<wbr/>count].<wbr/>
3214Every five elements represent a metering region of
3215(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
3216The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
3217exclusive on xmax and ymax.<wbr/>
3218HAL must always report metering regions in the coordinate system of pre-correction
3219active array.<wbr/></p>
3220            </td>
3221          </tr>
3222
3223          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3224           <!-- end of entry -->
3225
3226
3227          <tr class="entry" id="controls_android.control.afTrigger">
3228            <td class="entry_name
3229             " rowspan="5">
3230              android.<wbr/>control.<wbr/>af<wbr/>Trigger
3231            </td>
3232            <td class="entry_type">
3233                <span class="entry_type_name entry_type_name_enum">byte</span>
3234
3235              <span class="entry_type_visibility"> [public]</span>
3236
3237
3238              <span class="entry_type_hwlevel">[legacy] </span>
3239
3240
3241
3242                <ul class="entry_type_enum">
3243                  <li>
3244                    <span class="entry_type_enum_name">IDLE (v3.2)</span>
3245                    <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
3246                  </li>
3247                  <li>
3248                    <span class="entry_type_enum_name">START (v3.2)</span>
3249                    <span class="entry_type_enum_notes"><p>Autofocus will trigger now.<wbr/></p></span>
3250                  </li>
3251                  <li>
3252                    <span class="entry_type_enum_name">CANCEL (v3.2)</span>
3253                    <span class="entry_type_enum_notes"><p>Autofocus will return to its initial
3254state,<wbr/> and cancel any currently active trigger.<wbr/></p></span>
3255                  </li>
3256                </ul>
3257
3258            </td> <!-- entry_type -->
3259
3260            <td class="entry_description">
3261              <p>Whether the camera device will trigger autofocus for this request.<wbr/></p>
3262            </td>
3263
3264            <td class="entry_units">
3265            </td>
3266
3267            <td class="entry_range">
3268            </td>
3269
3270            <td class="entry_hal_version">
3271              <p>3.<wbr/>2</p>
3272            </td>
3273
3274            <td class="entry_tags">
3275              <ul class="entry_tags">
3276                  <li><a href="#tag_BC">BC</a></li>
3277              </ul>
3278            </td>
3279
3280          </tr>
3281          <tr class="entries_header">
3282            <th class="th_details" colspan="6">Details</th>
3283          </tr>
3284          <tr class="entry_cont">
3285            <td class="entry_details" colspan="6">
3286              <p>This entry is normally set to IDLE,<wbr/> or is not
3287included at all in the request settings.<wbr/></p>
3288<p>When included and set to START,<wbr/> the camera device will trigger the
3289autofocus algorithm.<wbr/> If autofocus is disabled,<wbr/> this trigger has no effect.<wbr/></p>
3290<p>When set to CANCEL,<wbr/> the camera device will cancel any active trigger,<wbr/>
3291and return to its initial AF state.<wbr/></p>
3292<p>Generally,<wbr/> applications should set this entry to START or CANCEL for only a
3293single capture,<wbr/> and then return it to IDLE (or not set at all).<wbr/> Specifying
3294START for multiple captures in a row means restarting the AF operation over
3295and over again.<wbr/></p>
3296<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>
3297<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>
3298simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between
3299the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a
3300focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous
3301trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and
3302changes to <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>,<wbr/> for example.<wbr/></p>
3303            </td>
3304          </tr>
3305
3306          <tr class="entries_header">
3307            <th class="th_details" colspan="6">HAL Implementation Details</th>
3308          </tr>
3309          <tr class="entry_cont">
3310            <td class="entry_details" colspan="6">
3311              <p>The HAL must support triggering the AF trigger while an AE precapture trigger is active
3312(and vice versa),<wbr/> or at the same time as the AE trigger.<wbr/>  It is acceptable for the HAL to
3313treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the
3314AE trigger.<wbr/>  Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/>
3315to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p>
3316            </td>
3317          </tr>
3318
3319          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3320           <!-- end of entry -->
3321
3322
3323          <tr class="entry" id="controls_android.control.awbLock">
3324            <td class="entry_name
3325             " rowspan="3">
3326              android.<wbr/>control.<wbr/>awb<wbr/>Lock
3327            </td>
3328            <td class="entry_type">
3329                <span class="entry_type_name entry_type_name_enum">byte</span>
3330
3331              <span class="entry_type_visibility"> [public as boolean]</span>
3332
3333
3334              <span class="entry_type_hwlevel">[legacy] </span>
3335
3336
3337
3338                <ul class="entry_type_enum">
3339                  <li>
3340                    <span class="entry_type_enum_name">OFF (v3.2)</span>
3341                    <span class="entry_type_enum_notes"><p>Auto-white balance lock is disabled; the AWB
3342algorithm is free to update its parameters if in AUTO
3343mode.<wbr/></p></span>
3344                  </li>
3345                  <li>
3346                    <span class="entry_type_enum_name">ON (v3.2)</span>
3347                    <span class="entry_type_enum_notes"><p>Auto-white balance lock is enabled; the AWB
3348algorithm will not update its parameters while the lock
3349is active.<wbr/></p></span>
3350                  </li>
3351                </ul>
3352
3353            </td> <!-- entry_type -->
3354
3355            <td class="entry_description">
3356              <p>Whether auto-white balance (AWB) is currently locked to its
3357latest calculated values.<wbr/></p>
3358            </td>
3359
3360            <td class="entry_units">
3361            </td>
3362
3363            <td class="entry_range">
3364            </td>
3365
3366            <td class="entry_hal_version">
3367              <p>3.<wbr/>2</p>
3368            </td>
3369
3370            <td class="entry_tags">
3371              <ul class="entry_tags">
3372                  <li><a href="#tag_BC">BC</a></li>
3373              </ul>
3374            </td>
3375
3376          </tr>
3377          <tr class="entries_header">
3378            <th class="th_details" colspan="6">Details</th>
3379          </tr>
3380          <tr class="entry_cont">
3381            <td class="entry_details" colspan="6">
3382              <p>When set to <code>true</code> (ON),<wbr/> the AWB algorithm is locked to its latest parameters,<wbr/>
3383and will not change color balance settings until the lock is set to <code>false</code> (OFF).<wbr/></p>
3384<p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that
3385get locked do not necessarily correspond to the settings that were present in the
3386latest capture result received from the camera device,<wbr/> since additional captures
3387and AWB updates may have occurred even before the result was sent out.<wbr/> If an
3388application is switching between automatic and manual control and wishes to eliminate
3389any flicker during the switch,<wbr/> the following procedure is recommended:</p>
3390<ol>
3391<li>Starting in auto-AWB mode:</li>
3392<li>Lock AWB</li>
3393<li>Wait for the first result to be output that has the AWB locked</li>
3394<li>Copy AWB settings from that result into a request,<wbr/> set the request to manual AWB</li>
3395<li>Submit the capture request,<wbr/> proceed to run manual AWB as desired.<wbr/></li>
3396</ol>
3397<p>Note that AWB lock is only meaningful when
3398<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is in the AUTO mode; in other modes,<wbr/>
3399AWB is already fixed to a specific setting.<wbr/></p>
3400<p>Some LEGACY devices may not support ON; the value is then overridden to OFF.<wbr/></p>
3401            </td>
3402          </tr>
3403
3404
3405          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3406           <!-- end of entry -->
3407
3408
3409          <tr class="entry" id="controls_android.control.awbMode">
3410            <td class="entry_name
3411             " rowspan="3">
3412              android.<wbr/>control.<wbr/>awb<wbr/>Mode
3413            </td>
3414            <td class="entry_type">
3415                <span class="entry_type_name entry_type_name_enum">byte</span>
3416
3417              <span class="entry_type_visibility"> [public]</span>
3418
3419
3420              <span class="entry_type_hwlevel">[legacy] </span>
3421
3422
3423
3424                <ul class="entry_type_enum">
3425                  <li>
3426                    <span class="entry_type_enum_name">OFF (v3.2)</span>
3427                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled.<wbr/></p>
3428<p>The application-selected color transform matrix
3429(<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>) and gains
3430(<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a>) are used by the camera
3431device for manual white balance control.<wbr/></p></span>
3432                  </li>
3433                  <li>
3434                    <span class="entry_type_enum_name">AUTO (v3.2)</span>
3435                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is active.<wbr/></p>
3436<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3437and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3438For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3439values used by the camera device for the transform and gains
3440will be available in the capture result for this request.<wbr/></p></span>
3441                  </li>
3442                  <li>
3443                    <span class="entry_type_enum_name">INCANDESCENT (v3.2)</span>
3444                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3445the camera device uses incandescent light as the assumed scene
3446illumination for white balance.<wbr/></p>
3447<p>While the exact white balance transforms are up to the
3448camera device,<wbr/> they will approximately match the CIE
3449standard illuminant A.<wbr/></p>
3450<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3451and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3452For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3453values used by the camera device for the transform and gains
3454will be available in the capture result for this request.<wbr/></p></span>
3455                  </li>
3456                  <li>
3457                    <span class="entry_type_enum_name">FLUORESCENT (v3.2)</span>
3458                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3459the camera device uses fluorescent light as the assumed scene
3460illumination for white balance.<wbr/></p>
3461<p>While the exact white balance transforms are up to the
3462camera device,<wbr/> they will approximately match the CIE
3463standard illuminant F2.<wbr/></p>
3464<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3465and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3466For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3467values used by the camera device for the transform and gains
3468will be available in the capture result for this request.<wbr/></p></span>
3469                  </li>
3470                  <li>
3471                    <span class="entry_type_enum_name">WARM_FLUORESCENT (v3.2)</span>
3472                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3473the camera device uses warm fluorescent light as the assumed scene
3474illumination for white balance.<wbr/></p>
3475<p>While the exact white balance transforms are up to the
3476camera device,<wbr/> they will approximately match the CIE
3477standard illuminant F4.<wbr/></p>
3478<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3479and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3480For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3481values used by the camera device for the transform and gains
3482will be available in the capture result for this request.<wbr/></p></span>
3483                  </li>
3484                  <li>
3485                    <span class="entry_type_enum_name">DAYLIGHT (v3.2)</span>
3486                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3487the camera device uses daylight light as the assumed scene
3488illumination for white balance.<wbr/></p>
3489<p>While the exact white balance transforms are up to the
3490camera device,<wbr/> they will approximately match the CIE
3491standard illuminant D65.<wbr/></p>
3492<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3493and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3494For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3495values used by the camera device for the transform and gains
3496will be available in the capture result for this request.<wbr/></p></span>
3497                  </li>
3498                  <li>
3499                    <span class="entry_type_enum_name">CLOUDY_DAYLIGHT (v3.2)</span>
3500                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3501the camera device uses cloudy daylight light as the assumed scene
3502illumination for white balance.<wbr/></p>
3503<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3504and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3505For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3506values used by the camera device for the transform and gains
3507will be available in the capture result for this request.<wbr/></p></span>
3508                  </li>
3509                  <li>
3510                    <span class="entry_type_enum_name">TWILIGHT (v3.2)</span>
3511                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3512the camera device uses twilight light as the assumed scene
3513illumination for white balance.<wbr/></p>
3514<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3515and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3516For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3517values used by the camera device for the transform and gains
3518will be available in the capture result for this request.<wbr/></p></span>
3519                  </li>
3520                  <li>
3521                    <span class="entry_type_enum_name">SHADE (v3.2)</span>
3522                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3523the camera device uses shade light as the assumed scene
3524illumination for white balance.<wbr/></p>
3525<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3526and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3527For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3528values used by the camera device for the transform and gains
3529will be available in the capture result for this request.<wbr/></p></span>
3530                  </li>
3531                </ul>
3532
3533            </td> <!-- entry_type -->
3534
3535            <td class="entry_description">
3536              <p>Whether auto-white balance (AWB) is currently setting the color
3537transform fields,<wbr/> and what its illumination target
3538is.<wbr/></p>
3539            </td>
3540
3541            <td class="entry_units">
3542            </td>
3543
3544            <td class="entry_range">
3545              <p><a href="#static_android.control.awbAvailableModes">android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes</a></p>
3546            </td>
3547
3548            <td class="entry_hal_version">
3549              <p>3.<wbr/>2</p>
3550            </td>
3551
3552            <td class="entry_tags">
3553              <ul class="entry_tags">
3554                  <li><a href="#tag_BC">BC</a></li>
3555              </ul>
3556            </td>
3557
3558          </tr>
3559          <tr class="entries_header">
3560            <th class="th_details" colspan="6">Details</th>
3561          </tr>
3562          <tr class="entry_cont">
3563            <td class="entry_details" colspan="6">
3564              <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is AUTO.<wbr/></p>
3565<p>When set to the ON mode,<wbr/> the camera device's auto-white balance
3566routine is enabled,<wbr/> overriding the application's selected
3567<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
3568<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>
3569is OFF,<wbr/> the behavior of AWB is device dependent.<wbr/> It is recommened to
3570also 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
3571setting AE mode to OFF.<wbr/></p>
3572<p>When set to the OFF mode,<wbr/> the camera device's auto-white balance
3573routine is disabled.<wbr/> The application manually controls the white
3574balance 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>
3575and <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/></p>
3576<p>When set to any other modes,<wbr/> the camera device's auto-white
3577balance routine is disabled.<wbr/> The camera device uses each
3578particular illumination target for white balance
3579adjustment.<wbr/> The application's values for
3580<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>,<wbr/>
3581<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
3582<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> are ignored.<wbr/></p>
3583            </td>
3584          </tr>
3585
3586
3587          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3588           <!-- end of entry -->
3589
3590
3591          <tr class="entry" id="controls_android.control.awbRegions">
3592            <td class="entry_name
3593             " rowspan="5">
3594              android.<wbr/>control.<wbr/>awb<wbr/>Regions
3595            </td>
3596            <td class="entry_type">
3597                <span class="entry_type_name">int32</span>
3598                <span class="entry_type_container">x</span>
3599
3600                <span class="entry_type_array">
3601                  5 x area_count
3602                </span>
3603              <span class="entry_type_visibility"> [public as meteringRectangle]</span>
3604
3605
3606
3607
3608
3609
3610            </td> <!-- entry_type -->
3611
3612            <td class="entry_description">
3613              <p>List of metering areas to use for auto-white-balance illuminant
3614estimation.<wbr/></p>
3615            </td>
3616
3617            <td class="entry_units">
3618              Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size or
3619            android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size depending on
3620            distortion correction capability and mode
3621            </td>
3622
3623            <td class="entry_range">
3624              <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
3625<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>
3626depending on distortion correction capability and mode</p>
3627            </td>
3628
3629            <td class="entry_hal_version">
3630              <p>3.<wbr/>2</p>
3631            </td>
3632
3633            <td class="entry_tags">
3634              <ul class="entry_tags">
3635                  <li><a href="#tag_BC">BC</a></li>
3636              </ul>
3637            </td>
3638
3639          </tr>
3640          <tr class="entries_header">
3641            <th class="th_details" colspan="6">Details</th>
3642          </tr>
3643          <tr class="entry_cont">
3644            <td class="entry_details" colspan="6">
3645              <p>Not available if <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a> is 0.<wbr/>
3646Otherwise will always be present.<wbr/></p>
3647<p>The maximum number of regions supported by the device is determined by the value
3648of <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a>.<wbr/></p>
3649<p>For devices not supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate
3650system 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
3651the top-left pixel in the active pixel array,<wbr/> and
3652(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
3653<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
3654active pixel array.<wbr/></p>
3655<p>For devices supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate
3656system depends on the mode being set.<wbr/>
3657When the distortion correction mode is OFF,<wbr/> the coordinate system follows
3658<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
3659<code>(0,<wbr/> 0)</code> being the top-left pixel of the pre-correction active array,<wbr/> and
3660(<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/>
3661<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
3662pixel in the pre-correction active pixel array.<wbr/>
3663When the distortion correction mode is not OFF,<wbr/> the coordinate system follows
3664<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> with
3665<code>(0,<wbr/> 0)</code> being the top-left pixel of the active array,<wbr/> and
3666(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
3667<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
3668active pixel array.<wbr/></p>
3669<p>The weight must range from 0 to 1000,<wbr/> and represents a weight
3670for every pixel in the area.<wbr/> This means that a large metering area
3671with the same weight as a smaller area will have more effect in
3672the metering result.<wbr/> Metering areas can partially overlap and the
3673camera device will add the weights in the overlap region.<wbr/></p>
3674<p>The weights are relative to weights of other white balance metering regions,<wbr/> so if
3675only one region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with
36760 weight is ignored.<wbr/></p>
3677<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
3678camera device.<wbr/></p>
3679<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
3680capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
3681region and output only the intersection rectangle as the metering region in the result
3682metadata.<wbr/>  If the region is entirely outside the crop region,<wbr/> it will be ignored and
3683not reported in the result metadata.<wbr/></p>
3684            </td>
3685          </tr>
3686
3687          <tr class="entries_header">
3688            <th class="th_details" colspan="6">HAL Implementation Details</th>
3689          </tr>
3690          <tr class="entry_cont">
3691            <td class="entry_details" colspan="6">
3692              <p>The HAL level representation of MeteringRectangle[] is a
3693int[5 * area_<wbr/>count].<wbr/>
3694Every five elements represent a metering region of
3695(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
3696The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
3697exclusive on xmax and ymax.<wbr/>
3698HAL must always report metering regions in the coordinate system of pre-correction
3699active array.<wbr/></p>
3700            </td>
3701          </tr>
3702
3703          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3704           <!-- end of entry -->
3705
3706
3707          <tr class="entry" id="controls_android.control.captureIntent">
3708            <td class="entry_name
3709             " rowspan="3">
3710              android.<wbr/>control.<wbr/>capture<wbr/>Intent
3711            </td>
3712            <td class="entry_type">
3713                <span class="entry_type_name entry_type_name_enum">byte</span>
3714
3715              <span class="entry_type_visibility"> [public]</span>
3716
3717
3718              <span class="entry_type_hwlevel">[legacy] </span>
3719
3720
3721
3722                <ul class="entry_type_enum">
3723                  <li>
3724                    <span class="entry_type_enum_name">CUSTOM (v3.2)</span>
3725                    <span class="entry_type_enum_notes"><p>The goal of this request doesn't fall into the other
3726categories.<wbr/> The camera device will default to preview-like
3727behavior.<wbr/></p></span>
3728                  </li>
3729                  <li>
3730                    <span class="entry_type_enum_name">PREVIEW (v3.2)</span>
3731                    <span class="entry_type_enum_notes"><p>This request is for a preview-like use case.<wbr/></p>
3732<p>The precapture trigger may be used to start off a metering
3733w/<wbr/>flash sequence.<wbr/></p></span>
3734                  </li>
3735                  <li>
3736                    <span class="entry_type_enum_name">STILL_CAPTURE (v3.2)</span>
3737                    <span class="entry_type_enum_notes"><p>This request is for a still capture-type
3738use case.<wbr/></p>
3739<p>If the flash unit is under automatic control,<wbr/> it may fire as needed.<wbr/></p></span>
3740                  </li>
3741                  <li>
3742                    <span class="entry_type_enum_name">VIDEO_RECORD (v3.2)</span>
3743                    <span class="entry_type_enum_notes"><p>This request is for a video recording
3744use case.<wbr/></p></span>
3745                  </li>
3746                  <li>
3747                    <span class="entry_type_enum_name">VIDEO_SNAPSHOT (v3.2)</span>
3748                    <span class="entry_type_enum_notes"><p>This request is for a video snapshot (still
3749image while recording video) use case.<wbr/></p>
3750<p>The camera device should take the highest-quality image
3751possible (given the other settings) without disrupting the
3752frame rate of video recording.<wbr/>  </p></span>
3753                  </li>
3754                  <li>
3755                    <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span>
3756                    <span class="entry_type_enum_notes"><p>This request is for a ZSL usecase; the
3757application will stream full-resolution images and
3758reprocess one or several later for a final
3759capture.<wbr/></p></span>
3760                  </li>
3761                  <li>
3762                    <span class="entry_type_enum_name">MANUAL (v3.2)</span>
3763                    <span class="entry_type_enum_notes"><p>This request is for manual capture use case where
3764the applications want to directly control the capture parameters.<wbr/></p>
3765<p>For example,<wbr/> the application may wish to manually control
3766<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>
3767                  </li>
3768                  <li>
3769                    <span class="entry_type_enum_name">MOTION_TRACKING (v3.3)</span>
3770                    <span class="entry_type_enum_notes"><p>This request is for a motion tracking use case,<wbr/> where
3771the application will use camera and inertial sensor data to
3772locate and track objects in the world.<wbr/></p>
3773<p>The camera device auto-exposure routine will limit the exposure time
3774of the camera to no more than 20 milliseconds,<wbr/> to minimize motion blur.<wbr/></p></span>
3775                  </li>
3776                </ul>
3777
3778            </td> <!-- entry_type -->
3779
3780            <td class="entry_description">
3781              <p>Information to the camera device 3A (auto-exposure,<wbr/>
3782auto-focus,<wbr/> auto-white balance) routines about the purpose
3783of this capture,<wbr/> to help the camera device to decide optimal 3A
3784strategy.<wbr/></p>
3785            </td>
3786
3787            <td class="entry_units">
3788            </td>
3789
3790            <td class="entry_range">
3791            </td>
3792
3793            <td class="entry_hal_version">
3794              <p>3.<wbr/>2</p>
3795            </td>
3796
3797            <td class="entry_tags">
3798              <ul class="entry_tags">
3799                  <li><a href="#tag_BC">BC</a></li>
3800              </ul>
3801            </td>
3802
3803          </tr>
3804          <tr class="entries_header">
3805            <th class="th_details" colspan="6">Details</th>
3806          </tr>
3807          <tr class="entry_cont">
3808            <td class="entry_details" colspan="6">
3809              <p>This control (except for MANUAL) is only effective if
3810<code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF</code> and any 3A routine is active.<wbr/></p>
3811<p>All intents are supported by all devices,<wbr/> except that:
3812  * ZERO_<wbr/>SHUTTER_<wbr/>LAG will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
3813PRIVATE_<wbr/>REPROCESSING or YUV_<wbr/>REPROCESSING.<wbr/>
3814  * MANUAL will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
3815MANUAL_<wbr/>SENSOR.<wbr/>
3816  * MOTION_<wbr/>TRACKING will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
3817MOTION_<wbr/>TRACKING.<wbr/></p>
3818            </td>
3819          </tr>
3820
3821
3822          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3823           <!-- end of entry -->
3824
3825
3826          <tr class="entry" id="controls_android.control.effectMode">
3827            <td class="entry_name
3828             " rowspan="3">
3829              android.<wbr/>control.<wbr/>effect<wbr/>Mode
3830            </td>
3831            <td class="entry_type">
3832                <span class="entry_type_name entry_type_name_enum">byte</span>
3833
3834              <span class="entry_type_visibility"> [public]</span>
3835
3836
3837              <span class="entry_type_hwlevel">[legacy] </span>
3838
3839
3840
3841                <ul class="entry_type_enum">
3842                  <li>
3843                    <span class="entry_type_enum_name">OFF (v3.2)</span>
3844                    <span class="entry_type_enum_notes"><p>No color effect will be applied.<wbr/></p></span>
3845                  </li>
3846                  <li>
3847                    <span class="entry_type_enum_name">MONO (v3.2)</span>
3848                    <span class="entry_type_enum_optional">[optional]</span>
3849                    <span class="entry_type_enum_notes"><p>A "monocolor" effect where the image is mapped into
3850a single color.<wbr/></p>
3851<p>This will typically be grayscale.<wbr/></p></span>
3852                  </li>
3853                  <li>
3854                    <span class="entry_type_enum_name">NEGATIVE (v3.2)</span>
3855                    <span class="entry_type_enum_optional">[optional]</span>
3856                    <span class="entry_type_enum_notes"><p>A "photo-negative" effect where the image's colors
3857are inverted.<wbr/></p></span>
3858                  </li>
3859                  <li>
3860                    <span class="entry_type_enum_name">SOLARIZE (v3.2)</span>
3861                    <span class="entry_type_enum_optional">[optional]</span>
3862                    <span class="entry_type_enum_notes"><p>A "solarisation" effect (Sabattier effect) where the
3863image is wholly or partially reversed in
3864tone.<wbr/></p></span>
3865                  </li>
3866                  <li>
3867                    <span class="entry_type_enum_name">SEPIA (v3.2)</span>
3868                    <span class="entry_type_enum_optional">[optional]</span>
3869                    <span class="entry_type_enum_notes"><p>A "sepia" effect where the image is mapped into warm
3870gray,<wbr/> red,<wbr/> and brown tones.<wbr/></p></span>
3871                  </li>
3872                  <li>
3873                    <span class="entry_type_enum_name">POSTERIZE (v3.2)</span>
3874                    <span class="entry_type_enum_optional">[optional]</span>
3875                    <span class="entry_type_enum_notes"><p>A "posterization" effect where the image uses
3876discrete regions of tone rather than a continuous
3877gradient of tones.<wbr/></p></span>
3878                  </li>
3879                  <li>
3880                    <span class="entry_type_enum_name">WHITEBOARD (v3.2)</span>
3881                    <span class="entry_type_enum_optional">[optional]</span>
3882                    <span class="entry_type_enum_notes"><p>A "whiteboard" effect where the image is typically displayed
3883as regions of white,<wbr/> with black or grey details.<wbr/></p></span>
3884                  </li>
3885                  <li>
3886                    <span class="entry_type_enum_name">BLACKBOARD (v3.2)</span>
3887                    <span class="entry_type_enum_optional">[optional]</span>
3888                    <span class="entry_type_enum_notes"><p>A "blackboard" effect where the image is typically displayed
3889as regions of black,<wbr/> with white or grey details.<wbr/></p></span>
3890                  </li>
3891                  <li>
3892                    <span class="entry_type_enum_name">AQUA (v3.2)</span>
3893                    <span class="entry_type_enum_optional">[optional]</span>
3894                    <span class="entry_type_enum_notes"><p>An "aqua" effect where a blue hue is added to the image.<wbr/></p></span>
3895                  </li>
3896                </ul>
3897
3898            </td> <!-- entry_type -->
3899
3900            <td class="entry_description">
3901              <p>A special color effect to apply.<wbr/></p>
3902            </td>
3903
3904            <td class="entry_units">
3905            </td>
3906
3907            <td class="entry_range">
3908              <p><a href="#static_android.control.availableEffects">android.<wbr/>control.<wbr/>available<wbr/>Effects</a></p>
3909            </td>
3910
3911            <td class="entry_hal_version">
3912              <p>3.<wbr/>2</p>
3913            </td>
3914
3915            <td class="entry_tags">
3916              <ul class="entry_tags">
3917                  <li><a href="#tag_BC">BC</a></li>
3918              </ul>
3919            </td>
3920
3921          </tr>
3922          <tr class="entries_header">
3923            <th class="th_details" colspan="6">Details</th>
3924          </tr>
3925          <tr class="entry_cont">
3926            <td class="entry_details" colspan="6">
3927              <p>When this mode is set,<wbr/> a color effect will be applied
3928to images produced by the camera device.<wbr/> The interpretation
3929and implementation of these color effects is left to the
3930implementor of the camera device,<wbr/> and should not be
3931depended on to be consistent (or present) across all
3932devices.<wbr/></p>
3933            </td>
3934          </tr>
3935
3936
3937          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3938           <!-- end of entry -->
3939
3940
3941          <tr class="entry" id="controls_android.control.mode">
3942            <td class="entry_name
3943             " rowspan="3">
3944              android.<wbr/>control.<wbr/>mode
3945            </td>
3946            <td class="entry_type">
3947                <span class="entry_type_name entry_type_name_enum">byte</span>
3948
3949              <span class="entry_type_visibility"> [public]</span>
3950
3951
3952              <span class="entry_type_hwlevel">[legacy] </span>
3953
3954
3955
3956                <ul class="entry_type_enum">
3957                  <li>
3958                    <span class="entry_type_enum_name">OFF (v3.2)</span>
3959                    <span class="entry_type_enum_notes"><p>Full application control of pipeline.<wbr/></p>
3960<p>All control by the device's metering and focusing (3A)
3961routines is disabled,<wbr/> and no other settings in
3962android.<wbr/>control.<wbr/>* have any effect,<wbr/> except that
3963<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> may be used by the camera
3964device to select post-processing values for processing
3965blocks that do not allow for manual control,<wbr/> or are not
3966exposed by the camera API.<wbr/></p>
3967<p>However,<wbr/> the camera device's 3A routines may continue to
3968collect statistics and update their internal state so that
3969when control is switched to AUTO mode,<wbr/> good control values
3970can be immediately applied.<wbr/></p></span>
3971                  </li>
3972                  <li>
3973                    <span class="entry_type_enum_name">AUTO (v3.2)</span>
3974                    <span class="entry_type_enum_notes"><p>Use settings for each individual 3A routine.<wbr/></p>
3975<p>Manual control of capture parameters is disabled.<wbr/> All
3976controls in android.<wbr/>control.<wbr/>* besides sceneMode take
3977effect.<wbr/></p></span>
3978                  </li>
3979                  <li>
3980                    <span class="entry_type_enum_name">USE_SCENE_MODE (v3.2)</span>
3981                    <span class="entry_type_enum_optional">[optional]</span>
3982                    <span class="entry_type_enum_notes"><p>Use a specific scene mode.<wbr/></p>
3983<p>Enabling this disables control.<wbr/>aeMode,<wbr/> control.<wbr/>awbMode and
3984control.<wbr/>afMode controls; the camera device will ignore
3985those settings while USE_<wbr/>SCENE_<wbr/>MODE is active (except for
3986FACE_<wbr/>PRIORITY scene mode).<wbr/> Other control entries are still active.<wbr/>
3987This setting can only be used if scene mode is supported (i.<wbr/>e.<wbr/>
3988<a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a>
3989contain some modes other than DISABLED).<wbr/></p></span>
3990                  </li>
3991                  <li>
3992                    <span class="entry_type_enum_name">OFF_KEEP_STATE (v3.2)</span>
3993                    <span class="entry_type_enum_optional">[optional]</span>
3994                    <span class="entry_type_enum_notes"><p>Same as OFF mode,<wbr/> except that this capture will not be
3995used by camera device background auto-exposure,<wbr/> auto-white balance and
3996auto-focus algorithms (3A) to update their statistics.<wbr/></p>
3997<p>Specifically,<wbr/> the 3A routines are locked to the last
3998values set from a request with AUTO,<wbr/> OFF,<wbr/> or
3999USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> and any statistics or state updates
4000collected from manual captures with OFF_<wbr/>KEEP_<wbr/>STATE will be
4001discarded by the camera device.<wbr/></p></span>
4002                  </li>
4003                </ul>
4004
4005            </td> <!-- entry_type -->
4006
4007            <td class="entry_description">
4008              <p>Overall mode of 3A (auto-exposure,<wbr/> auto-white-balance,<wbr/> auto-focus) control
4009routines.<wbr/></p>
4010            </td>
4011
4012            <td class="entry_units">
4013            </td>
4014
4015            <td class="entry_range">
4016              <p><a href="#static_android.control.availableModes">android.<wbr/>control.<wbr/>available<wbr/>Modes</a></p>
4017            </td>
4018
4019            <td class="entry_hal_version">
4020              <p>3.<wbr/>2</p>
4021            </td>
4022
4023            <td class="entry_tags">
4024              <ul class="entry_tags">
4025                  <li><a href="#tag_BC">BC</a></li>
4026              </ul>
4027            </td>
4028
4029          </tr>
4030          <tr class="entries_header">
4031            <th class="th_details" colspan="6">Details</th>
4032          </tr>
4033          <tr class="entry_cont">
4034            <td class="entry_details" colspan="6">
4035              <p>This is a top-level 3A control switch.<wbr/> When set to OFF,<wbr/> all 3A control
4036by the camera device is disabled.<wbr/> The application must set the fields for
4037capture parameters itself.<wbr/></p>
4038<p>When set to AUTO,<wbr/> the individual algorithm controls in
4039android.<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>
4040<p>When set to USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> the individual controls in
4041android.<wbr/>control.<wbr/>* are mostly disabled,<wbr/> and the camera device
4042implements one of the scene mode settings (such as ACTION,<wbr/>
4043SUNSET,<wbr/> or PARTY) as it wishes.<wbr/> The camera device scene mode
40443A settings are provided by <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">capture results</a>.<wbr/></p>
4045<p>When set to OFF_<wbr/>KEEP_<wbr/>STATE,<wbr/> it is similar to OFF mode,<wbr/> the only difference
4046is that this frame will not be used by camera device background 3A statistics
4047update,<wbr/> as if this frame is never captured.<wbr/> This mode can be used in the scenario
4048where the application doesn't want a 3A manual control capture to affect
4049the subsequent auto 3A capture results.<wbr/></p>
4050            </td>
4051          </tr>
4052
4053
4054          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4055           <!-- end of entry -->
4056
4057
4058          <tr class="entry" id="controls_android.control.sceneMode">
4059            <td class="entry_name
4060             " rowspan="5">
4061              android.<wbr/>control.<wbr/>scene<wbr/>Mode
4062            </td>
4063            <td class="entry_type">
4064                <span class="entry_type_name entry_type_name_enum">byte</span>
4065
4066              <span class="entry_type_visibility"> [public]</span>
4067
4068
4069              <span class="entry_type_hwlevel">[legacy] </span>
4070
4071
4072
4073                <ul class="entry_type_enum">
4074                  <li>
4075                    <span class="entry_type_enum_name">DISABLED (v3.2)</span>
4076                    <span class="entry_type_enum_value">0</span>
4077                    <span class="entry_type_enum_notes"><p>Indicates that no scene modes are set for a given capture request.<wbr/></p></span>
4078                  </li>
4079                  <li>
4080                    <span class="entry_type_enum_name">FACE_PRIORITY (v3.2)</span>
4081                    <span class="entry_type_enum_notes"><p>If face detection support exists,<wbr/> use face
4082detection data for auto-focus,<wbr/> auto-white balance,<wbr/> and
4083auto-exposure routines.<wbr/></p>
4084<p>If face detection statistics are disabled
4085(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/>
4086this should still operate correctly (but will not return
4087face detection statistics to the framework).<wbr/></p>
4088<p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
4089<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>
4090remain active when FACE_<wbr/>PRIORITY is set.<wbr/></p></span>
4091                  </li>
4092                  <li>
4093                    <span class="entry_type_enum_name">ACTION (v3.2)</span>
4094                    <span class="entry_type_enum_optional">[optional]</span>
4095                    <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving objects.<wbr/></p>
4096<p>Similar to SPORTS.<wbr/></p></span>
4097                  </li>
4098                  <li>
4099                    <span class="entry_type_enum_name">PORTRAIT (v3.2)</span>
4100                    <span class="entry_type_enum_optional">[optional]</span>
4101                    <span class="entry_type_enum_notes"><p>Optimized for still photos of people.<wbr/></p></span>
4102                  </li>
4103                  <li>
4104                    <span class="entry_type_enum_name">LANDSCAPE (v3.2)</span>
4105                    <span class="entry_type_enum_optional">[optional]</span>
4106                    <span class="entry_type_enum_notes"><p>Optimized for photos of distant macroscopic objects.<wbr/></p></span>
4107                  </li>
4108                  <li>
4109                    <span class="entry_type_enum_name">NIGHT (v3.2)</span>
4110                    <span class="entry_type_enum_optional">[optional]</span>
4111                    <span class="entry_type_enum_notes"><p>Optimized for low-light settings.<wbr/></p></span>
4112                  </li>
4113                  <li>
4114                    <span class="entry_type_enum_name">NIGHT_PORTRAIT (v3.2)</span>
4115                    <span class="entry_type_enum_optional">[optional]</span>
4116                    <span class="entry_type_enum_notes"><p>Optimized for still photos of people in low-light
4117settings.<wbr/></p></span>
4118                  </li>
4119                  <li>
4120                    <span class="entry_type_enum_name">THEATRE (v3.2)</span>
4121                    <span class="entry_type_enum_optional">[optional]</span>
4122                    <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings where flash must
4123remain off.<wbr/></p></span>
4124                  </li>
4125                  <li>
4126                    <span class="entry_type_enum_name">BEACH (v3.2)</span>
4127                    <span class="entry_type_enum_optional">[optional]</span>
4128                    <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor beach settings.<wbr/></p></span>
4129                  </li>
4130                  <li>
4131                    <span class="entry_type_enum_name">SNOW (v3.2)</span>
4132                    <span class="entry_type_enum_optional">[optional]</span>
4133                    <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor settings containing snow.<wbr/></p></span>
4134                  </li>
4135                  <li>
4136                    <span class="entry_type_enum_name">SUNSET (v3.2)</span>
4137                    <span class="entry_type_enum_optional">[optional]</span>
4138                    <span class="entry_type_enum_notes"><p>Optimized for scenes of the setting sun.<wbr/></p></span>
4139                  </li>
4140                  <li>
4141                    <span class="entry_type_enum_name">STEADYPHOTO (v3.2)</span>
4142                    <span class="entry_type_enum_optional">[optional]</span>
4143                    <span class="entry_type_enum_notes"><p>Optimized to avoid blurry photos due to small amounts of
4144device motion (for example: due to hand shake).<wbr/></p></span>
4145                  </li>
4146                  <li>
4147                    <span class="entry_type_enum_name">FIREWORKS (v3.2)</span>
4148                    <span class="entry_type_enum_optional">[optional]</span>
4149                    <span class="entry_type_enum_notes"><p>Optimized for nighttime photos of fireworks.<wbr/></p></span>
4150                  </li>
4151                  <li>
4152                    <span class="entry_type_enum_name">SPORTS (v3.2)</span>
4153                    <span class="entry_type_enum_optional">[optional]</span>
4154                    <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving people.<wbr/></p>
4155<p>Similar to ACTION.<wbr/></p></span>
4156                  </li>
4157                  <li>
4158                    <span class="entry_type_enum_name">PARTY (v3.2)</span>
4159                    <span class="entry_type_enum_optional">[optional]</span>
4160                    <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings with multiple moving
4161people.<wbr/></p></span>
4162                  </li>
4163                  <li>
4164                    <span class="entry_type_enum_name">CANDLELIGHT (v3.2)</span>
4165                    <span class="entry_type_enum_optional">[optional]</span>
4166                    <span class="entry_type_enum_notes"><p>Optimized for dim settings where the main light source
4167is a candle.<wbr/></p></span>
4168                  </li>
4169                  <li>
4170                    <span class="entry_type_enum_name">BARCODE (v3.2)</span>
4171                    <span class="entry_type_enum_optional">[optional]</span>
4172                    <span class="entry_type_enum_notes"><p>Optimized for accurately capturing a photo of barcode
4173for use by camera applications that wish to read the
4174barcode value.<wbr/></p></span>
4175                  </li>
4176                  <li>
4177                    <span class="entry_type_enum_name">HIGH_SPEED_VIDEO (v3.2)</span>
4178                    <span class="entry_type_enum_deprecated">[deprecated]</span>
4179                    <span class="entry_type_enum_optional">[optional]</span>
4180                    <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>
4181and <a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a>
4182for high speed video recording.<wbr/></p>
4183<p>Optimized for high speed video recording (frame rate &gt;=60fps) use case.<wbr/></p>
4184<p>The supported high speed video sizes and fps ranges are specified in
4185<a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/> To get desired
4186output frame rates,<wbr/> the application is only allowed to select video size
4187and fps range combinations listed in this static metadata.<wbr/> The fps range
4188can be control via <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a>.<wbr/></p>
4189<p>In this mode,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to
4190ON,<wbr/> ON,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode
4191controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture
4192and post-processing parameters is possible.<wbr/> All other controls operate the
4193same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other
4194android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p>
4195<ul>
4196<li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li>
4197<li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li>
4198<li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li>
4199<li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li>
4200<li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li>
4201<li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li>
4202<li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li>
4203<li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li>
4204<li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li>
4205<li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li>
4206</ul>
4207<p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p>
4208<ul>
4209<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>
4210<li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li>
4211<li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li>
4212<li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></li>
4213</ul>
4214<p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may
4215be lower than what camera can output,<wbr/> depending on the destination Surfaces for
4216the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/>
4217the application need check if the video encoder is capable of supporting the
4218high frame rate for a given video size,<wbr/> or it will end up with lower recording
4219frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the preview frame
4220rate will be bounded by the screen refresh rate.<wbr/></p>
4221<p>The camera device will only support up to 2 output high speed streams
4222(processed non-stalling format defined in <a href="#static_android.request.maxNumOutputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams</a>)
4223in this mode.<wbr/> This control will be effective only if all of below conditions are true:</p>
4224<ul>
4225<li>The application created no more than maxNumHighSpeedStreams processed non-stalling
4226format output streams,<wbr/> where maxNumHighSpeedStreams is calculated as
4227min(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>
4228<li>The stream sizes are selected from the sizes reported by
4229<a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/></li>
4230<li>No processed non-stalling or raw streams are configured.<wbr/></li>
4231</ul>
4232<p>When above conditions are NOT satistied,<wbr/> the controls of this mode and
4233<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/>
4234the camera device will fall back to <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> <code>==</code> AUTO,<wbr/>
4235and the returned capture result metadata will give the fps range choosen
4236by the camera device.<wbr/></p>
4237<p>Switching into or out of this mode may trigger some camera ISP/<wbr/>sensor
4238reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that
4239the application avoids unnecessary scene mode switch as much as possible.<wbr/></p></span>
4240                  </li>
4241                  <li>
4242                    <span class="entry_type_enum_name">HDR (v3.2)</span>
4243                    <span class="entry_type_enum_optional">[optional]</span>
4244                    <span class="entry_type_enum_notes"><p>Turn on a device-specific high dynamic range (HDR) mode.<wbr/></p>
4245<p>In this scene mode,<wbr/> the camera device captures images
4246that keep a larger range of scene illumination levels
4247visible in the final image.<wbr/> For example,<wbr/> when taking a
4248picture of a object in front of a bright window,<wbr/> both
4249the object and the scene through the window may be
4250visible when using HDR mode,<wbr/> while in normal AUTO mode,<wbr/>
4251one or the other may be poorly exposed.<wbr/> As a tradeoff,<wbr/>
4252HDR mode generally takes much longer to capture a single
4253image,<wbr/> has no user control,<wbr/> and may have other artifacts
4254depending on the HDR method used.<wbr/></p>
4255<p>Therefore,<wbr/> HDR captures operate at a much slower rate
4256than regular captures.<wbr/></p>
4257<p>In this mode,<wbr/> on LIMITED or FULL devices,<wbr/> when a request
4258is made with a <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> of
4259STILL_<wbr/>CAPTURE,<wbr/> the camera device will capture an image
4260using a high dynamic range capture technique.<wbr/>  On LEGACY
4261devices,<wbr/> captures that target a JPEG-format output will
4262be captured with HDR,<wbr/> and the capture intent is not
4263relevant.<wbr/></p>
4264<p>The HDR capture may involve the device capturing a burst
4265of images internally and combining them into one,<wbr/> or it
4266may involve the device using specialized high dynamic
4267range capture hardware.<wbr/> In all cases,<wbr/> a single image is
4268produced in response to a capture request submitted
4269while in HDR mode.<wbr/></p>
4270<p>Since substantial post-processing is generally needed to
4271produce an HDR image,<wbr/> only YUV,<wbr/> PRIVATE,<wbr/> and JPEG
4272outputs are supported for LIMITED/<wbr/>FULL device HDR
4273captures,<wbr/> and only JPEG outputs are supported for LEGACY
4274HDR captures.<wbr/> Using a RAW output for HDR capture is not
4275supported.<wbr/></p>
4276<p>Some devices may also support always-on HDR,<wbr/> which
4277applies HDR processing at full frame rate.<wbr/>  For these
4278devices,<wbr/> intents other than STILL_<wbr/>CAPTURE will also
4279produce an HDR output with no frame rate impact compared
4280to normal operation,<wbr/> though the quality may be lower
4281than for STILL_<wbr/>CAPTURE intents.<wbr/></p>
4282<p>If SCENE_<wbr/>MODE_<wbr/>HDR is used with unsupported output types
4283or capture intents,<wbr/> the images captured will be as if
4284the SCENE_<wbr/>MODE was not enabled at all.<wbr/></p></span>
4285                  </li>
4286                  <li>
4287                    <span class="entry_type_enum_name">FACE_PRIORITY_LOW_LIGHT (v3.2)</span>
4288                    <span class="entry_type_enum_optional">[optional]</span>
4289                    <span class="entry_type_enum_hidden">[hidden]</span>
4290                    <span class="entry_type_enum_notes"><p>Same as FACE_<wbr/>PRIORITY scene mode,<wbr/> except that the camera
4291device will choose higher sensitivity values (<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>)
4292under low light conditions.<wbr/></p>
4293<p>The camera device may be tuned to expose the images in a reduced
4294sensitivity range to produce the best quality images.<wbr/> For example,<wbr/>
4295if 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/>
4296the camera device auto-exposure routine tuning process may limit the actual
4297exposure sensitivity range to [100,<wbr/> 1200] to ensure that the noise level isn't
4298exessive in order to preserve the image quality.<wbr/> Under this situation,<wbr/> the image under
4299low light may be under-exposed when the sensor max exposure time (bounded by the
4300<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
4301ON_<wbr/>* modes) and effective max sensitivity are reached.<wbr/> This scene mode allows the
4302camera device auto-exposure routine to increase the sensitivity up to the max
4303sensitivity specified by <a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a> when the scene is too
4304dark and the max exposure time is reached.<wbr/> The captured images may be noisier
4305compared with the images captured in normal FACE_<wbr/>PRIORITY mode; therefore,<wbr/> it is
4306recommended that the application only use this scene mode when it is capable of
4307reducing the noise level of the captured images.<wbr/></p>
4308<p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
4309<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>
4310remain active when FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT is set.<wbr/></p></span>
4311                  </li>
4312                  <li>
4313                    <span class="entry_type_enum_name">DEVICE_CUSTOM_START (v3.2)</span>
4314                    <span class="entry_type_enum_optional">[optional]</span>
4315                    <span class="entry_type_enum_hidden">[hidden]</span>
4316                    <span class="entry_type_enum_value">100</span>
4317                    <span class="entry_type_enum_notes"><p>Scene mode values within the range of
4318<code>[DEVICE_<wbr/>CUSTOM_<wbr/>START,<wbr/> DEVICE_<wbr/>CUSTOM_<wbr/>END]</code> are reserved for device specific
4319customized scene modes.<wbr/></p></span>
4320                  </li>
4321                  <li>
4322                    <span class="entry_type_enum_name">DEVICE_CUSTOM_END (v3.2)</span>
4323                    <span class="entry_type_enum_optional">[optional]</span>
4324                    <span class="entry_type_enum_hidden">[hidden]</span>
4325                    <span class="entry_type_enum_value">127</span>
4326                    <span class="entry_type_enum_notes"><p>Scene mode values within the range of
4327<code>[DEVICE_<wbr/>CUSTOM_<wbr/>START,<wbr/> DEVICE_<wbr/>CUSTOM_<wbr/>END]</code> are reserved for device specific
4328customized scene modes.<wbr/></p></span>
4329                  </li>
4330                </ul>
4331
4332            </td> <!-- entry_type -->
4333
4334            <td class="entry_description">
4335              <p>Control for which scene mode is currently active.<wbr/></p>
4336            </td>
4337
4338            <td class="entry_units">
4339            </td>
4340
4341            <td class="entry_range">
4342              <p><a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a></p>
4343            </td>
4344
4345            <td class="entry_hal_version">
4346              <p>3.<wbr/>2</p>
4347            </td>
4348
4349            <td class="entry_tags">
4350              <ul class="entry_tags">
4351                  <li><a href="#tag_BC">BC</a></li>
4352              </ul>
4353            </td>
4354
4355          </tr>
4356          <tr class="entries_header">
4357            <th class="th_details" colspan="6">Details</th>
4358          </tr>
4359          <tr class="entry_cont">
4360            <td class="entry_details" colspan="6">
4361              <p>Scene modes are custom camera modes optimized for a certain set of conditions and
4362capture settings.<wbr/></p>
4363<p>This is the mode that that is active when
4364<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
4365disable <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>
4366while in use.<wbr/></p>
4367<p>The interpretation and implementation of these scene modes is left
4368to the implementor of the camera device.<wbr/> Their behavior will not be
4369consistent across all devices,<wbr/> and any given device may only implement
4370a subset of these modes.<wbr/></p>
4371            </td>
4372          </tr>
4373
4374          <tr class="entries_header">
4375            <th class="th_details" colspan="6">HAL Implementation Details</th>
4376          </tr>
4377          <tr class="entry_cont">
4378            <td class="entry_details" colspan="6">
4379              <p>HAL implementations that include scene modes are expected to provide
4380the per-scene settings to use for <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
4381<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
4382<a href="#static_android.control.sceneModeOverrides">android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides</a>.<wbr/></p>
4383<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
4384HAL must list supported video size and fps range in
4385<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/>
4386if the HAL has two different sensor configurations for normal streaming mode and high
4387speed streaming,<wbr/> when this scene mode is set/<wbr/>reset in a sequence of capture requests,<wbr/> the
4388HAL may have to switch between different sensor modes.<wbr/>  This mode is deprecated in legacy
4389HAL3.<wbr/>3,<wbr/> to support high speed video recording,<wbr/> please implement
4390<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
4391capbility defined in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
4392            </td>
4393          </tr>
4394
4395          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4396           <!-- end of entry -->
4397
4398
4399          <tr class="entry" id="controls_android.control.videoStabilizationMode">
4400            <td class="entry_name
4401             " rowspan="3">
4402              android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode
4403            </td>
4404            <td class="entry_type">
4405                <span class="entry_type_name entry_type_name_enum">byte</span>
4406
4407              <span class="entry_type_visibility"> [public]</span>
4408
4409
4410              <span class="entry_type_hwlevel">[legacy] </span>
4411
4412
4413
4414                <ul class="entry_type_enum">
4415                  <li>
4416                    <span class="entry_type_enum_name">OFF (v3.2)</span>
4417                    <span class="entry_type_enum_notes"><p>Video stabilization is disabled.<wbr/></p></span>
4418                  </li>
4419                  <li>
4420                    <span class="entry_type_enum_name">ON (v3.2)</span>
4421                    <span class="entry_type_enum_notes"><p>Video stabilization is enabled.<wbr/></p></span>
4422                  </li>
4423                </ul>
4424
4425            </td> <!-- entry_type -->
4426
4427            <td class="entry_description">
4428              <p>Whether video stabilization is
4429active.<wbr/></p>
4430            </td>
4431
4432            <td class="entry_units">
4433            </td>
4434
4435            <td class="entry_range">
4436            </td>
4437
4438            <td class="entry_hal_version">
4439              <p>3.<wbr/>2</p>
4440            </td>
4441
4442            <td class="entry_tags">
4443              <ul class="entry_tags">
4444                  <li><a href="#tag_BC">BC</a></li>
4445              </ul>
4446            </td>
4447
4448          </tr>
4449          <tr class="entries_header">
4450            <th class="th_details" colspan="6">Details</th>
4451          </tr>
4452          <tr class="entry_cont">
4453            <td class="entry_details" colspan="6">
4454              <p>Video stabilization automatically warps images from
4455the camera in order to stabilize motion between consecutive frames.<wbr/></p>
4456<p>If enabled,<wbr/> video stabilization can modify the
4457<a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> to keep the video stream stabilized.<wbr/></p>
4458<p>Switching between different video stabilization modes may take several
4459frames to initialize,<wbr/> the camera device will report the current mode
4460in capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/>
4461the video stabilization modes in the first several capture results may
4462still be "OFF",<wbr/> and it will become "ON" when the initialization is
4463done.<wbr/></p>
4464<p>In addition,<wbr/> not all recording sizes or frame rates may be supported for
4465stabilization by a device that reports stabilization support.<wbr/> It is guaranteed
4466that an output targeting a MediaRecorder or MediaCodec will be stabilized if
4467the recording resolution is less than or equal to 1920 x 1080 (width less than
4468or equal to 1920,<wbr/> height less than or equal to 1080),<wbr/> and the recording
4469frame rate is less than or equal to 30fps.<wbr/>  At other sizes,<wbr/> the CaptureResult
4470<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a> field will return
4471OFF if the recording output is not stabilized,<wbr/> or if there are no output
4472Surface types that can be stabilized.<wbr/></p>
4473<p>If a camera device supports both this mode and OIS
4474(<a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may
4475produce undesirable interaction,<wbr/> so it is recommended not to enable
4476both at the same time.<wbr/></p>
4477            </td>
4478          </tr>
4479
4480
4481          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4482           <!-- end of entry -->
4483
4484
4485          <tr class="entry" id="controls_android.control.postRawSensitivityBoost">
4486            <td class="entry_name
4487             " rowspan="3">
4488              android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost
4489            </td>
4490            <td class="entry_type">
4491                <span class="entry_type_name">int32</span>
4492
4493              <span class="entry_type_visibility"> [public]</span>
4494
4495
4496
4497
4498
4499
4500            </td> <!-- entry_type -->
4501
4502            <td class="entry_description">
4503              <p>The amount of additional sensitivity boost applied to output images
4504after RAW sensor data is captured.<wbr/></p>
4505            </td>
4506
4507            <td class="entry_units">
4508              ISO arithmetic units,<wbr/> the same as android.<wbr/>sensor.<wbr/>sensitivity
4509            </td>
4510
4511            <td class="entry_range">
4512              <p><a href="#static_android.control.postRawSensitivityBoostRange">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost<wbr/>Range</a></p>
4513            </td>
4514
4515            <td class="entry_hal_version">
4516              <p>3.<wbr/>2</p>
4517            </td>
4518
4519            <td class="entry_tags">
4520            </td>
4521
4522          </tr>
4523          <tr class="entries_header">
4524            <th class="th_details" colspan="6">Details</th>
4525          </tr>
4526          <tr class="entry_cont">
4527            <td class="entry_details" colspan="6">
4528              <p>Some camera devices support additional digital sensitivity boosting in the
4529camera processing pipeline after sensor RAW image is captured.<wbr/>
4530Such a boost will be applied to YUV/<wbr/>JPEG format output images but will not
4531have effect on RAW output formats like RAW_<wbr/>SENSOR,<wbr/> RAW10,<wbr/> RAW12 or RAW_<wbr/>OPAQUE.<wbr/></p>
4532<p>This key will be <code>null</code> for devices that do not support any RAW format
4533outputs.<wbr/> For devices that do support RAW format outputs,<wbr/> this key will always
4534present,<wbr/> and if a device does not support post RAW sensitivity boost,<wbr/> it will
4535list <code>100</code> in this key.<wbr/></p>
4536<p>If the camera device cannot apply the exact boost requested,<wbr/> it will reduce the
4537boost to the nearest supported value.<wbr/>
4538The final boost value used will be available in the output capture result.<wbr/></p>
4539<p>For devices that support post RAW sensitivity boost,<wbr/> the YUV/<wbr/>JPEG output images
4540of such device will have the total sensitivity of
4541<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>
4542The sensitivity of RAW format images will always be <code><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></code></p>
4543<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
4544OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
4545            </td>
4546          </tr>
4547
4548
4549          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4550           <!-- end of entry -->
4551
4552
4553          <tr class="entry" id="controls_android.control.enableZsl">
4554            <td class="entry_name
4555             " rowspan="5">
4556              android.<wbr/>control.<wbr/>enable<wbr/>Zsl
4557            </td>
4558            <td class="entry_type">
4559                <span class="entry_type_name entry_type_name_enum">byte</span>
4560
4561              <span class="entry_type_visibility"> [public as boolean]</span>
4562
4563
4564
4565
4566
4567                <ul class="entry_type_enum">
4568                  <li>
4569                    <span class="entry_type_enum_name">FALSE (v3.2)</span>
4570                    <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
4571after previous requests.<wbr/></p></span>
4572                  </li>
4573                  <li>
4574                    <span class="entry_type_enum_name">TRUE (v3.2)</span>
4575                    <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
4576captured before previous requests.<wbr/></p></span>
4577                  </li>
4578                </ul>
4579
4580            </td> <!-- entry_type -->
4581
4582            <td class="entry_description">
4583              <p>Allow camera device to enable zero-shutter-lag mode for requests with
4584<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE.<wbr/></p>
4585            </td>
4586
4587            <td class="entry_units">
4588            </td>
4589
4590            <td class="entry_range">
4591            </td>
4592
4593            <td class="entry_hal_version">
4594              <p>3.<wbr/>2</p>
4595            </td>
4596
4597            <td class="entry_tags">
4598            </td>
4599
4600          </tr>
4601          <tr class="entries_header">
4602            <th class="th_details" colspan="6">Details</th>
4603          </tr>
4604          <tr class="entry_cont">
4605            <td class="entry_details" colspan="6">
4606              <p>If enableZsl is <code>true</code>,<wbr/> the camera device may enable zero-shutter-lag mode for requests with
4607STILL_<wbr/>CAPTURE capture intent.<wbr/> The camera device may use images captured in the past to
4608produce output images for a zero-shutter-lag request.<wbr/> The result metadata including the
4609<a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a> reflects the source frames used to produce output images.<wbr/>
4610Therefore,<wbr/> the contents of the output images and the result metadata may be out of order
4611compared to previous regular requests.<wbr/> enableZsl does not affect requests with other
4612capture intents.<wbr/></p>
4613<p>For example,<wbr/> when requests are submitted in the following order:
4614  Request A: enableZsl is ON,<wbr/> <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> is PREVIEW
4615  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>
4616<p>The output images for request B may have contents captured before the output images for
4617request A,<wbr/> and the result metadata for request B may be older than the result metadata for
4618request A.<wbr/></p>
4619<p>Note that when enableZsl is <code>true</code>,<wbr/> it is not guaranteed to get output images captured in
4620the past for requests with STILL_<wbr/>CAPTURE capture intent.<wbr/></p>
4621<p>For applications targeting SDK versions O and newer,<wbr/> the value of enableZsl in
4622TEMPLATE_<wbr/>STILL_<wbr/>CAPTURE template may be <code>true</code>.<wbr/> The value in other templates is always
4623<code>false</code> if present.<wbr/></p>
4624<p>For applications targeting SDK versions older than O,<wbr/> the value of enableZsl in all
4625capture templates is always <code>false</code> if present.<wbr/></p>
4626<p>For application-operated ZSL,<wbr/> use CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p>
4627            </td>
4628          </tr>
4629
4630          <tr class="entries_header">
4631            <th class="th_details" colspan="6">HAL Implementation Details</th>
4632          </tr>
4633          <tr class="entry_cont">
4634            <td class="entry_details" colspan="6">
4635              <p>It is valid for HAL to produce regular output images for requests with STILL_<wbr/>CAPTURE
4636capture intent.<wbr/></p>
4637            </td>
4638          </tr>
4639
4640          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4641           <!-- end of entry -->
4642
4643
4644
4645      <!-- end of kind -->
4646      </tbody>
4647      <tr><td colspan="7" class="kind">static</td></tr>
4648
4649      <thead class="entries_header">
4650        <tr>
4651          <th class="th_name">Property Name</th>
4652          <th class="th_type">Type</th>
4653          <th class="th_description">Description</th>
4654          <th class="th_units">Units</th>
4655          <th class="th_range">Range</th>
4656          <th class="th_hal_version">Initial HIDL HAL version</th>
4657          <th class="th_tags">Tags</th>
4658        </tr>
4659      </thead>
4660
4661      <tbody>
4662
4663
4664
4665
4666
4667
4668
4669
4670
4671
4672          <tr class="entry" id="static_android.control.aeAvailableAntibandingModes">
4673            <td class="entry_name
4674             " rowspan="3">
4675              android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes
4676            </td>
4677            <td class="entry_type">
4678                <span class="entry_type_name">byte</span>
4679                <span class="entry_type_container">x</span>
4680
4681                <span class="entry_type_array">
4682                  n
4683                </span>
4684              <span class="entry_type_visibility"> [public as enumList]</span>
4685
4686
4687              <span class="entry_type_hwlevel">[legacy] </span>
4688
4689
4690                <div class="entry_type_notes">list of enums</div>
4691
4692
4693            </td> <!-- entry_type -->
4694
4695            <td class="entry_description">
4696              <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
4697supported by this camera device.<wbr/></p>
4698            </td>
4699
4700            <td class="entry_units">
4701            </td>
4702
4703            <td class="entry_range">
4704              <p>Any value listed in <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a></p>
4705            </td>
4706
4707            <td class="entry_hal_version">
4708              <p>3.<wbr/>2</p>
4709            </td>
4710
4711            <td class="entry_tags">
4712              <ul class="entry_tags">
4713                  <li><a href="#tag_BC">BC</a></li>
4714              </ul>
4715            </td>
4716
4717          </tr>
4718          <tr class="entries_header">
4719            <th class="th_details" colspan="6">Details</th>
4720          </tr>
4721          <tr class="entry_cont">
4722            <td class="entry_details" colspan="6">
4723              <p>Not all of the auto-exposure anti-banding modes may be
4724supported by a given camera device.<wbr/> This field lists the
4725valid anti-banding modes that the application may request
4726for this camera device with the
4727<a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> control.<wbr/></p>
4728            </td>
4729          </tr>
4730
4731
4732          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4733           <!-- end of entry -->
4734
4735
4736          <tr class="entry" id="static_android.control.aeAvailableModes">
4737            <td class="entry_name
4738             " rowspan="3">
4739              android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes
4740            </td>
4741            <td class="entry_type">
4742                <span class="entry_type_name">byte</span>
4743                <span class="entry_type_container">x</span>
4744
4745                <span class="entry_type_array">
4746                  n
4747                </span>
4748              <span class="entry_type_visibility"> [public as enumList]</span>
4749
4750
4751              <span class="entry_type_hwlevel">[legacy] </span>
4752
4753
4754                <div class="entry_type_notes">list of enums</div>
4755
4756
4757            </td> <!-- entry_type -->
4758
4759            <td class="entry_description">
4760              <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
4761device.<wbr/></p>
4762            </td>
4763
4764            <td class="entry_units">
4765            </td>
4766
4767            <td class="entry_range">
4768              <p>Any value listed in <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a></p>
4769            </td>
4770
4771            <td class="entry_hal_version">
4772              <p>3.<wbr/>2</p>
4773            </td>
4774
4775            <td class="entry_tags">
4776              <ul class="entry_tags">
4777                  <li><a href="#tag_BC">BC</a></li>
4778              </ul>
4779            </td>
4780
4781          </tr>
4782          <tr class="entries_header">
4783            <th class="th_details" colspan="6">Details</th>
4784          </tr>
4785          <tr class="entry_cont">
4786            <td class="entry_details" colspan="6">
4787              <p>Not all the auto-exposure modes may be supported by a
4788given camera device,<wbr/> especially if no flash unit is
4789available.<wbr/> This entry lists the valid modes for
4790<a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> for this camera device.<wbr/></p>
4791<p>All camera devices support ON,<wbr/> and all camera devices with flash
4792units support ON_<wbr/>AUTO_<wbr/>FLASH and ON_<wbr/>ALWAYS_<wbr/>FLASH.<wbr/></p>
4793<p>FULL mode camera devices always support OFF mode,<wbr/>
4794which enables application control of camera exposure time,<wbr/>
4795sensitivity,<wbr/> and frame duration.<wbr/></p>
4796<p>LEGACY mode camera devices never support OFF mode.<wbr/>
4797LIMITED mode devices support OFF if they support the MANUAL_<wbr/>SENSOR
4798capability.<wbr/></p>
4799            </td>
4800          </tr>
4801
4802
4803          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4804           <!-- end of entry -->
4805
4806
4807          <tr class="entry" id="static_android.control.aeAvailableTargetFpsRanges">
4808            <td class="entry_name
4809             " rowspan="3">
4810              android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Target<wbr/>Fps<wbr/>Ranges
4811            </td>
4812            <td class="entry_type">
4813                <span class="entry_type_name">int32</span>
4814                <span class="entry_type_container">x</span>
4815
4816                <span class="entry_type_array">
4817                  2 x n
4818                </span>
4819              <span class="entry_type_visibility"> [public as rangeInt]</span>
4820
4821
4822              <span class="entry_type_hwlevel">[legacy] </span>
4823
4824
4825                <div class="entry_type_notes">list of pairs of frame rates</div>
4826
4827
4828            </td> <!-- entry_type -->
4829
4830            <td class="entry_description">
4831              <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
4832this camera device.<wbr/></p>
4833            </td>
4834
4835            <td class="entry_units">
4836              Frames per second (FPS)
4837            </td>
4838
4839            <td class="entry_range">
4840            </td>
4841
4842            <td class="entry_hal_version">
4843              <p>3.<wbr/>2</p>
4844            </td>
4845
4846            <td class="entry_tags">
4847              <ul class="entry_tags">
4848                  <li><a href="#tag_BC">BC</a></li>
4849              </ul>
4850            </td>
4851
4852          </tr>
4853          <tr class="entries_header">
4854            <th class="th_details" colspan="6">Details</th>
4855          </tr>
4856          <tr class="entry_cont">
4857            <td class="entry_details" colspan="6">
4858              <p>For devices at the LEGACY level or above:</p>
4859<ul>
4860<li>
4861<p>For constant-framerate recording,<wbr/> for each normal
4862<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a>,<wbr/> that is,<wbr/> a
4863<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a> that has
4864<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#quality">quality</a> in
4865the range [<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#QUALITY_LOW">QUALITY_<wbr/>LOW</a>,<wbr/>
4866<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#QUALITY_2160P">QUALITY_<wbr/>2160P</a>],<wbr/> if the profile is
4867supported by the device and has
4868<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#videoFrameRate">videoFrameRate</a> <code>x</code>,<wbr/> this list will
4869always include (<code>x</code>,<wbr/><code>x</code>).<wbr/></p>
4870</li>
4871<li>
4872<p>Also,<wbr/> a camera device must either not support any
4873<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a>,<wbr/>
4874or support at least one
4875normal <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a> that has
4876<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#videoFrameRate">videoFrameRate</a> <code>x</code> &gt;= 24.<wbr/></p>
4877</li>
4878</ul>
4879<p>For devices at the LIMITED level or above:</p>
4880<ul>
4881<li>For YUV_<wbr/>420_<wbr/>888 burst capture use case,<wbr/> this list will always include (<code>min</code>,<wbr/> <code>max</code>)
4882and (<code>max</code>,<wbr/> <code>max</code>) where <code>min</code> &lt;= 15 and <code>max</code> = the maximum output frame rate of the
4883maximum YUV_<wbr/>420_<wbr/>888 output size.<wbr/></li>
4884</ul>
4885            </td>
4886          </tr>
4887
4888
4889          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4890           <!-- end of entry -->
4891
4892
4893          <tr class="entry" id="static_android.control.aeCompensationRange">
4894            <td class="entry_name
4895             " rowspan="1">
4896              android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range
4897            </td>
4898            <td class="entry_type">
4899                <span class="entry_type_name">int32</span>
4900                <span class="entry_type_container">x</span>
4901
4902                <span class="entry_type_array">
4903                  2
4904                </span>
4905              <span class="entry_type_visibility"> [public as rangeInt]</span>
4906
4907
4908              <span class="entry_type_hwlevel">[legacy] </span>
4909
4910
4911
4912
4913            </td> <!-- entry_type -->
4914
4915            <td class="entry_description">
4916              <p>Maximum and minimum exposure compensation values for
4917<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/>
4918that are supported by this camera device.<wbr/></p>
4919            </td>
4920
4921            <td class="entry_units">
4922            </td>
4923
4924            <td class="entry_range">
4925              <p>Range [0,<wbr/>0] indicates that exposure compensation is not supported.<wbr/></p>
4926<p>For LIMITED and FULL devices,<wbr/> range must follow below requirements if exposure
4927compensation is supported (<code>range != [0,<wbr/> 0]</code>):</p>
4928<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>
4929<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>
4930<p>LEGACY devices may support a smaller range than this.<wbr/></p>
4931            </td>
4932
4933            <td class="entry_hal_version">
4934              <p>3.<wbr/>2</p>
4935            </td>
4936
4937            <td class="entry_tags">
4938              <ul class="entry_tags">
4939                  <li><a href="#tag_BC">BC</a></li>
4940              </ul>
4941            </td>
4942
4943          </tr>
4944
4945
4946          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4947           <!-- end of entry -->
4948
4949
4950          <tr class="entry" id="static_android.control.aeCompensationStep">
4951            <td class="entry_name
4952             " rowspan="5">
4953              android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step
4954            </td>
4955            <td class="entry_type">
4956                <span class="entry_type_name">rational</span>
4957
4958              <span class="entry_type_visibility"> [public]</span>
4959
4960
4961              <span class="entry_type_hwlevel">[legacy] </span>
4962
4963
4964
4965
4966            </td> <!-- entry_type -->
4967
4968            <td class="entry_description">
4969              <p>Smallest step by which the exposure compensation
4970can be changed.<wbr/></p>
4971            </td>
4972
4973            <td class="entry_units">
4974              Exposure Value (EV)
4975            </td>
4976
4977            <td class="entry_range">
4978            </td>
4979
4980            <td class="entry_hal_version">
4981              <p>3.<wbr/>2</p>
4982            </td>
4983
4984            <td class="entry_tags">
4985              <ul class="entry_tags">
4986                  <li><a href="#tag_BC">BC</a></li>
4987              </ul>
4988            </td>
4989
4990          </tr>
4991          <tr class="entries_header">
4992            <th class="th_details" colspan="6">Details</th>
4993          </tr>
4994          <tr class="entry_cont">
4995            <td class="entry_details" colspan="6">
4996              <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
4997a 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
4998that the target EV offset for the auto-exposure routine is -1 EV.<wbr/></p>
4999<p>One unit of EV compensation changes the brightness of the captured image by a factor
5000of two.<wbr/> +1 EV doubles the image brightness,<wbr/> while -1 EV halves the image brightness.<wbr/></p>
5001            </td>
5002          </tr>
5003
5004          <tr class="entries_header">
5005            <th class="th_details" colspan="6">HAL Implementation Details</th>
5006          </tr>
5007          <tr class="entry_cont">
5008            <td class="entry_details" colspan="6">
5009              <p>This must be less than or equal to 1/<wbr/>2.<wbr/></p>
5010            </td>
5011          </tr>
5012
5013          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5014           <!-- end of entry -->
5015
5016
5017          <tr class="entry" id="static_android.control.afAvailableModes">
5018            <td class="entry_name
5019             " rowspan="3">
5020              android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes
5021            </td>
5022            <td class="entry_type">
5023                <span class="entry_type_name">byte</span>
5024                <span class="entry_type_container">x</span>
5025
5026                <span class="entry_type_array">
5027                  n
5028                </span>
5029              <span class="entry_type_visibility"> [public as enumList]</span>
5030
5031
5032              <span class="entry_type_hwlevel">[legacy] </span>
5033
5034
5035                <div class="entry_type_notes">List of enums</div>
5036
5037
5038            </td> <!-- entry_type -->
5039
5040            <td class="entry_description">
5041              <p>List of auto-focus (AF) modes for <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> that are
5042supported by this camera device.<wbr/></p>
5043            </td>
5044
5045            <td class="entry_units">
5046            </td>
5047
5048            <td class="entry_range">
5049              <p>Any value listed in <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a></p>
5050            </td>
5051
5052            <td class="entry_hal_version">
5053              <p>3.<wbr/>2</p>
5054            </td>
5055
5056            <td class="entry_tags">
5057              <ul class="entry_tags">
5058                  <li><a href="#tag_BC">BC</a></li>
5059              </ul>
5060            </td>
5061
5062          </tr>
5063          <tr class="entries_header">
5064            <th class="th_details" colspan="6">Details</th>
5065          </tr>
5066          <tr class="entry_cont">
5067            <td class="entry_details" colspan="6">
5068              <p>Not all the auto-focus modes may be supported by a
5069given camera device.<wbr/> This entry lists the valid modes for
5070<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> for this camera device.<wbr/></p>
5071<p>All LIMITED and FULL mode camera devices will support OFF mode,<wbr/> and all
5072camera devices with adjustable focuser units
5073(<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>
5074<p>LEGACY devices will support OFF mode only if they support
5075focusing to infinity (by also setting <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> to
5076<code>0.<wbr/>0f</code>).<wbr/></p>
5077            </td>
5078          </tr>
5079
5080
5081          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5082           <!-- end of entry -->
5083
5084
5085          <tr class="entry" id="static_android.control.availableEffects">
5086            <td class="entry_name
5087             " rowspan="3">
5088              android.<wbr/>control.<wbr/>available<wbr/>Effects
5089            </td>
5090            <td class="entry_type">
5091                <span class="entry_type_name">byte</span>
5092                <span class="entry_type_container">x</span>
5093
5094                <span class="entry_type_array">
5095                  n
5096                </span>
5097              <span class="entry_type_visibility"> [public as enumList]</span>
5098
5099
5100              <span class="entry_type_hwlevel">[legacy] </span>
5101
5102
5103                <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>effect<wbr/>Mode).<wbr/></div>
5104
5105
5106            </td> <!-- entry_type -->
5107
5108            <td class="entry_description">
5109              <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
5110device.<wbr/></p>
5111            </td>
5112
5113            <td class="entry_units">
5114            </td>
5115
5116            <td class="entry_range">
5117              <p>Any value listed in <a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></p>
5118            </td>
5119
5120            <td class="entry_hal_version">
5121              <p>3.<wbr/>2</p>
5122            </td>
5123
5124            <td class="entry_tags">
5125              <ul class="entry_tags">
5126                  <li><a href="#tag_BC">BC</a></li>
5127              </ul>
5128            </td>
5129
5130          </tr>
5131          <tr class="entries_header">
5132            <th class="th_details" colspan="6">Details</th>
5133          </tr>
5134          <tr class="entry_cont">
5135            <td class="entry_details" colspan="6">
5136              <p>This list contains the color effect modes that can be applied to
5137images produced by the camera device.<wbr/>
5138Implementations are not expected to be consistent across all devices.<wbr/>
5139If no color effect modes are available for a device,<wbr/> this will only list
5140OFF.<wbr/></p>
5141<p>A color effect will only be applied if
5142<a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF.<wbr/>  OFF is always included in this list.<wbr/></p>
5143<p>This control has no effect on the operation of other control routines such
5144as auto-exposure,<wbr/> white balance,<wbr/> or focus.<wbr/></p>
5145            </td>
5146          </tr>
5147
5148
5149          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5150           <!-- end of entry -->
5151
5152
5153          <tr class="entry" id="static_android.control.availableSceneModes">
5154            <td class="entry_name
5155             " rowspan="3">
5156              android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes
5157            </td>
5158            <td class="entry_type">
5159                <span class="entry_type_name">byte</span>
5160                <span class="entry_type_container">x</span>
5161
5162                <span class="entry_type_array">
5163                  n
5164                </span>
5165              <span class="entry_type_visibility"> [public as enumList]</span>
5166
5167
5168              <span class="entry_type_hwlevel">[legacy] </span>
5169
5170
5171                <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>scene<wbr/>Mode).<wbr/></div>
5172
5173
5174            </td> <!-- entry_type -->
5175
5176            <td class="entry_description">
5177              <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
5178device.<wbr/></p>
5179            </td>
5180
5181            <td class="entry_units">
5182            </td>
5183
5184            <td class="entry_range">
5185              <p>Any value listed in <a href="#controls_android.control.sceneMode">android.<wbr/>control.<wbr/>scene<wbr/>Mode</a></p>
5186            </td>
5187
5188            <td class="entry_hal_version">
5189              <p>3.<wbr/>2</p>
5190            </td>
5191
5192            <td class="entry_tags">
5193              <ul class="entry_tags">
5194                  <li><a href="#tag_BC">BC</a></li>
5195              </ul>
5196            </td>
5197
5198          </tr>
5199          <tr class="entries_header">
5200            <th class="th_details" colspan="6">Details</th>
5201          </tr>
5202          <tr class="entry_cont">
5203            <td class="entry_details" colspan="6">
5204              <p>This list contains scene modes that can be set for the camera device.<wbr/>
5205Only scene modes that have been fully implemented for the
5206camera device may be included here.<wbr/> Implementations are not expected
5207to be consistent across all devices.<wbr/></p>
5208<p>If no scene modes are supported by the camera device,<wbr/> this
5209will be set to DISABLED.<wbr/> Otherwise DISABLED will not be listed.<wbr/></p>
5210<p>FACE_<wbr/>PRIORITY is always listed if face detection is
5211supported (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;
52120</code>).<wbr/></p>
5213            </td>
5214          </tr>
5215
5216
5217          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5218           <!-- end of entry -->
5219
5220
5221          <tr class="entry" id="static_android.control.availableVideoStabilizationModes">
5222            <td class="entry_name
5223             " rowspan="3">
5224              android.<wbr/>control.<wbr/>available<wbr/>Video<wbr/>Stabilization<wbr/>Modes
5225            </td>
5226            <td class="entry_type">
5227                <span class="entry_type_name">byte</span>
5228                <span class="entry_type_container">x</span>
5229
5230                <span class="entry_type_array">
5231                  n
5232                </span>
5233              <span class="entry_type_visibility"> [public as enumList]</span>
5234
5235
5236              <span class="entry_type_hwlevel">[legacy] </span>
5237
5238
5239                <div class="entry_type_notes">List of enums.<wbr/></div>
5240
5241
5242            </td> <!-- entry_type -->
5243
5244            <td class="entry_description">
5245              <p>List of video stabilization modes for <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>
5246that are supported by this camera device.<wbr/></p>
5247            </td>
5248
5249            <td class="entry_units">
5250            </td>
5251
5252            <td class="entry_range">
5253              <p>Any value listed in <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a></p>
5254            </td>
5255
5256            <td class="entry_hal_version">
5257              <p>3.<wbr/>2</p>
5258            </td>
5259
5260            <td class="entry_tags">
5261              <ul class="entry_tags">
5262                  <li><a href="#tag_BC">BC</a></li>
5263              </ul>
5264            </td>
5265
5266          </tr>
5267          <tr class="entries_header">
5268            <th class="th_details" colspan="6">Details</th>
5269          </tr>
5270          <tr class="entry_cont">
5271            <td class="entry_details" colspan="6">
5272              <p>OFF will always be listed.<wbr/></p>
5273            </td>
5274          </tr>
5275
5276
5277          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5278           <!-- end of entry -->
5279
5280
5281          <tr class="entry" id="static_android.control.awbAvailableModes">
5282            <td class="entry_name
5283             " rowspan="3">
5284              android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes
5285            </td>
5286            <td class="entry_type">
5287                <span class="entry_type_name">byte</span>
5288                <span class="entry_type_container">x</span>
5289
5290                <span class="entry_type_array">
5291                  n
5292                </span>
5293              <span class="entry_type_visibility"> [public as enumList]</span>
5294
5295
5296              <span class="entry_type_hwlevel">[legacy] </span>
5297
5298
5299                <div class="entry_type_notes">List of enums</div>
5300
5301
5302            </td> <!-- entry_type -->
5303
5304            <td class="entry_description">
5305              <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
5306camera device.<wbr/></p>
5307            </td>
5308
5309            <td class="entry_units">
5310            </td>
5311
5312            <td class="entry_range">
5313              <p>Any value listed in <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a></p>
5314            </td>
5315
5316            <td class="entry_hal_version">
5317              <p>3.<wbr/>2</p>
5318            </td>
5319
5320            <td class="entry_tags">
5321              <ul class="entry_tags">
5322                  <li><a href="#tag_BC">BC</a></li>
5323              </ul>
5324            </td>
5325
5326          </tr>
5327          <tr class="entries_header">
5328            <th class="th_details" colspan="6">Details</th>
5329          </tr>
5330          <tr class="entry_cont">
5331            <td class="entry_details" colspan="6">
5332              <p>Not all the auto-white-balance modes may be supported by a
5333given camera device.<wbr/> This entry lists the valid modes for
5334<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> for this camera device.<wbr/></p>
5335<p>All camera devices will support ON mode.<wbr/></p>
5336<p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always support OFF
5337mode,<wbr/> which enables application control of white balance,<wbr/> by using
5338<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
5339mode camera devices.<wbr/></p>
5340            </td>
5341          </tr>
5342
5343
5344          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5345           <!-- end of entry -->
5346
5347
5348          <tr class="entry" id="static_android.control.maxRegions">
5349            <td class="entry_name
5350             " rowspan="1">
5351              android.<wbr/>control.<wbr/>max<wbr/>Regions
5352            </td>
5353            <td class="entry_type">
5354                <span class="entry_type_name">int32</span>
5355                <span class="entry_type_container">x</span>
5356
5357                <span class="entry_type_array">
5358                  3
5359                </span>
5360              <span class="entry_type_visibility"> [ndk_public]</span>
5361
5362
5363              <span class="entry_type_hwlevel">[legacy] </span>
5364
5365
5366
5367
5368            </td> <!-- entry_type -->
5369
5370            <td class="entry_description">
5371              <p>List of the maximum number of regions that can be used for metering in
5372auto-exposure (AE),<wbr/> auto-white balance (AWB),<wbr/> and auto-focus (AF);
5373this corresponds to the the maximum number of elements in
5374<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/>
5375and <a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a>.<wbr/></p>
5376            </td>
5377
5378            <td class="entry_units">
5379            </td>
5380
5381            <td class="entry_range">
5382              <p>Value must be &gt;= 0 for each element.<wbr/> For full-capability devices
5383this value must be &gt;= 1 for AE and AF.<wbr/> The order of the elements is:
5384<code>(AE,<wbr/> AWB,<wbr/> AF)</code>.<wbr/></p>
5385            </td>
5386
5387            <td class="entry_hal_version">
5388              <p>3.<wbr/>2</p>
5389            </td>
5390
5391            <td class="entry_tags">
5392              <ul class="entry_tags">
5393                  <li><a href="#tag_BC">BC</a></li>
5394              </ul>
5395            </td>
5396
5397          </tr>
5398
5399
5400          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5401           <!-- end of entry -->
5402
5403
5404          <tr class="entry" id="static_android.control.maxRegionsAe">
5405            <td class="entry_name
5406             " rowspan="5">
5407              android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae
5408            </td>
5409            <td class="entry_type">
5410                <span class="entry_type_name">int32</span>
5411
5412              <span class="entry_type_visibility"> [java_public]</span>
5413
5414              <span class="entry_type_synthetic">[synthetic] </span>
5415
5416              <span class="entry_type_hwlevel">[legacy] </span>
5417
5418
5419
5420
5421            </td> <!-- entry_type -->
5422
5423            <td class="entry_description">
5424              <p>The maximum number of metering regions that can be used by the auto-exposure (AE)
5425routine.<wbr/></p>
5426            </td>
5427
5428            <td class="entry_units">
5429            </td>
5430
5431            <td class="entry_range">
5432              <p>Value will be &gt;= 0.<wbr/> For FULL-capability devices,<wbr/> this
5433value will be &gt;= 1.<wbr/></p>
5434            </td>
5435
5436            <td class="entry_hal_version">
5437              <p>3.<wbr/>2</p>
5438            </td>
5439
5440            <td class="entry_tags">
5441            </td>
5442
5443          </tr>
5444          <tr class="entries_header">
5445            <th class="th_details" colspan="6">Details</th>
5446          </tr>
5447          <tr class="entry_cont">
5448            <td class="entry_details" colspan="6">
5449              <p>This corresponds to the the maximum allowed number of elements in
5450<a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a>.<wbr/></p>
5451            </td>
5452          </tr>
5453
5454          <tr class="entries_header">
5455            <th class="th_details" colspan="6">HAL Implementation Details</th>
5456          </tr>
5457          <tr class="entry_cont">
5458            <td class="entry_details" colspan="6">
5459              <p>This entry is private to the framework.<wbr/> Fill in
5460maxRegions to have this entry be automatically populated.<wbr/></p>
5461            </td>
5462          </tr>
5463
5464          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5465           <!-- end of entry -->
5466
5467
5468          <tr class="entry" id="static_android.control.maxRegionsAwb">
5469            <td class="entry_name
5470             " rowspan="5">
5471              android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb
5472            </td>
5473            <td class="entry_type">
5474                <span class="entry_type_name">int32</span>
5475
5476              <span class="entry_type_visibility"> [java_public]</span>
5477
5478              <span class="entry_type_synthetic">[synthetic] </span>
5479
5480              <span class="entry_type_hwlevel">[legacy] </span>
5481
5482
5483
5484
5485            </td> <!-- entry_type -->
5486
5487            <td class="entry_description">
5488              <p>The maximum number of metering regions that can be used by the auto-white balance (AWB)
5489routine.<wbr/></p>
5490            </td>
5491
5492            <td class="entry_units">
5493            </td>
5494
5495            <td class="entry_range">
5496              <p>Value will be &gt;= 0.<wbr/></p>
5497            </td>
5498
5499            <td class="entry_hal_version">
5500              <p>3.<wbr/>2</p>
5501            </td>
5502
5503            <td class="entry_tags">
5504            </td>
5505
5506          </tr>
5507          <tr class="entries_header">
5508            <th class="th_details" colspan="6">Details</th>
5509          </tr>
5510          <tr class="entry_cont">
5511            <td class="entry_details" colspan="6">
5512              <p>This corresponds to the the maximum allowed number of elements in
5513<a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a>.<wbr/></p>
5514            </td>
5515          </tr>
5516
5517          <tr class="entries_header">
5518            <th class="th_details" colspan="6">HAL Implementation Details</th>
5519          </tr>
5520          <tr class="entry_cont">
5521            <td class="entry_details" colspan="6">
5522              <p>This entry is private to the framework.<wbr/> Fill in
5523maxRegions to have this entry be automatically populated.<wbr/></p>
5524            </td>
5525          </tr>
5526
5527          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5528           <!-- end of entry -->
5529
5530
5531          <tr class="entry" id="static_android.control.maxRegionsAf">
5532            <td class="entry_name
5533             " rowspan="5">
5534              android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af
5535            </td>
5536            <td class="entry_type">
5537                <span class="entry_type_name">int32</span>
5538
5539              <span class="entry_type_visibility"> [java_public]</span>
5540
5541              <span class="entry_type_synthetic">[synthetic] </span>
5542
5543              <span class="entry_type_hwlevel">[legacy] </span>
5544
5545
5546
5547
5548            </td> <!-- entry_type -->
5549
5550            <td class="entry_description">
5551              <p>The maximum number of metering regions that can be used by the auto-focus (AF) routine.<wbr/></p>
5552            </td>
5553
5554            <td class="entry_units">
5555            </td>
5556
5557            <td class="entry_range">
5558              <p>Value will be &gt;= 0.<wbr/> For FULL-capability devices,<wbr/> this
5559value will be &gt;= 1.<wbr/></p>
5560            </td>
5561
5562            <td class="entry_hal_version">
5563              <p>3.<wbr/>2</p>
5564            </td>
5565
5566            <td class="entry_tags">
5567            </td>
5568
5569          </tr>
5570          <tr class="entries_header">
5571            <th class="th_details" colspan="6">Details</th>
5572          </tr>
5573          <tr class="entry_cont">
5574            <td class="entry_details" colspan="6">
5575              <p>This corresponds to the the maximum allowed number of elements in
5576<a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a>.<wbr/></p>
5577            </td>
5578          </tr>
5579
5580          <tr class="entries_header">
5581            <th class="th_details" colspan="6">HAL Implementation Details</th>
5582          </tr>
5583          <tr class="entry_cont">
5584            <td class="entry_details" colspan="6">
5585              <p>This entry is private to the framework.<wbr/> Fill in
5586maxRegions to have this entry be automatically populated.<wbr/></p>
5587            </td>
5588          </tr>
5589
5590          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5591           <!-- end of entry -->
5592
5593
5594          <tr class="entry" id="static_android.control.sceneModeOverrides">
5595            <td class="entry_name
5596             " rowspan="5">
5597              android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides
5598            </td>
5599            <td class="entry_type">
5600                <span class="entry_type_name">byte</span>
5601                <span class="entry_type_container">x</span>
5602
5603                <span class="entry_type_array">
5604                  3 x length(availableSceneModes)
5605                </span>
5606              <span class="entry_type_visibility"> [system]</span>
5607
5608
5609              <span class="entry_type_hwlevel">[limited] </span>
5610
5611
5612
5613
5614            </td> <!-- entry_type -->
5615
5616            <td class="entry_description">
5617              <p>Ordered list of auto-exposure,<wbr/> auto-white balance,<wbr/> and auto-focus
5618settings to use with each available scene mode.<wbr/></p>
5619            </td>
5620
5621            <td class="entry_units">
5622            </td>
5623
5624            <td class="entry_range">
5625              <p>For each available scene mode,<wbr/> the list must contain three
5626entries containing the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
5627<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
5628by the camera device.<wbr/> The entry order is <code>(aeMode,<wbr/> awbMode,<wbr/> afMode)</code>
5629where aeMode has the lowest index position.<wbr/></p>
5630            </td>
5631
5632            <td class="entry_hal_version">
5633              <p>3.<wbr/>2</p>
5634            </td>
5635
5636            <td class="entry_tags">
5637              <ul class="entry_tags">
5638                  <li><a href="#tag_BC">BC</a></li>
5639              </ul>
5640            </td>
5641
5642          </tr>
5643          <tr class="entries_header">
5644            <th class="th_details" colspan="6">Details</th>
5645          </tr>
5646          <tr class="entry_cont">
5647            <td class="entry_details" colspan="6">
5648              <p>When a scene mode is enabled,<wbr/> the camera device is expected
5649to 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/>
5650and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> with its preferred settings for
5651that scene mode.<wbr/></p>
5652<p>The order of this list matches that of availableSceneModes,<wbr/>
5653with 3 entries for each mode.<wbr/>  The overrides listed
5654for FACE_<wbr/>PRIORITY and FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT (if supported) are ignored,<wbr/>
5655since for that mode the application-set <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
5656<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
5657used instead,<wbr/> matching the behavior when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>
5658is set to AUTO.<wbr/> It is recommended that the FACE_<wbr/>PRIORITY and
5659FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT (if supported) overrides should be set to 0.<wbr/></p>
5660<p>For example,<wbr/> if availableSceneModes contains
5661<code>(FACE_<wbr/>PRIORITY,<wbr/> ACTION,<wbr/> NIGHT)</code>,<wbr/>  then the camera framework
5662expects sceneModeOverrides to have 9 entries formatted like:
5663<code>(0,<wbr/> 0,<wbr/> 0,<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> AUTO,<wbr/> CONTINUOUS_<wbr/>PICTURE,<wbr/>
5664ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> INCANDESCENT,<wbr/> AUTO)</code>.<wbr/></p>
5665            </td>
5666          </tr>
5667
5668          <tr class="entries_header">
5669            <th class="th_details" colspan="6">HAL Implementation Details</th>
5670          </tr>
5671          <tr class="entry_cont">
5672            <td class="entry_details" colspan="6">
5673              <p>To maintain backward compatibility,<wbr/> this list will be made available
5674in the static metadata of the camera service.<wbr/>  The camera service will
5675use these values to set <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
5676<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
5677mode other than FACE_<wbr/>PRIORITY and FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT (if supported).<wbr/></p>
5678            </td>
5679          </tr>
5680
5681          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5682           <!-- end of entry -->
5683
5684
5685          <tr class="entry" id="static_android.control.availableHighSpeedVideoConfigurations">
5686            <td class="entry_name
5687             " rowspan="5">
5688              android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations
5689            </td>
5690            <td class="entry_type">
5691                <span class="entry_type_name">int32</span>
5692                <span class="entry_type_container">x</span>
5693
5694                <span class="entry_type_array">
5695                  5 x n
5696                </span>
5697              <span class="entry_type_visibility"> [hidden as highSpeedVideoConfiguration]</span>
5698
5699
5700              <span class="entry_type_hwlevel">[limited] </span>
5701
5702
5703
5704
5705            </td> <!-- entry_type -->
5706
5707            <td class="entry_description">
5708              <p>List of available high speed video size,<wbr/> fps range and max batch size configurations
5709supported 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>
5710            </td>
5711
5712            <td class="entry_units">
5713            </td>
5714
5715            <td class="entry_range">
5716              <p>For each configuration,<wbr/> the fps_<wbr/>max &gt;= 120fps.<wbr/></p>
5717            </td>
5718
5719            <td class="entry_hal_version">
5720              <p>3.<wbr/>2</p>
5721            </td>
5722
5723            <td class="entry_tags">
5724              <ul class="entry_tags">
5725                  <li><a href="#tag_V1">V1</a></li>
5726              </ul>
5727            </td>
5728
5729          </tr>
5730          <tr class="entries_header">
5731            <th class="th_details" colspan="6">Details</th>
5732          </tr>
5733          <tr class="entry_cont">
5734            <td class="entry_details" colspan="6">
5735              <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/>
5736this metadata will list the supported high speed video size,<wbr/> fps range and max batch size
5737configurations.<wbr/> All the sizes listed in this configuration will be a subset of the sizes
5738reported by <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputSizes">StreamConfigurationMap#getOutputSizes</a>
5739for processed non-stalling formats.<wbr/></p>
5740<p>For the high speed video use case,<wbr/> the application must
5741select the video size and fps range from this metadata to configure the recording and
5742preview streams and setup the recording requests.<wbr/> For example,<wbr/> if the application intends
5743to do high speed recording,<wbr/> it can select the maximum size reported by this metadata to
5744configure output streams.<wbr/> Once the size is selected,<wbr/> application can filter this metadata
5745by selected size and get the supported fps ranges,<wbr/> and use these fps ranges to setup the
5746recording requests.<wbr/> Note that for the use case of multiple output streams,<wbr/> application
5747must select one unique size from this metadata to use (e.<wbr/>g.,<wbr/> preview and recording streams
5748must have the same size).<wbr/> Otherwise,<wbr/> the high speed capture session creation will fail.<wbr/></p>
5749<p>The min and max fps will be multiple times of 30fps.<wbr/></p>
5750<p>High speed video streaming extends significant performance pressue to camera hardware,<wbr/>
5751to achieve efficient high speed streaming,<wbr/> the camera device may have to aggregate
5752multiple frames together and send to camera device for processing where the request
5753controls are same for all the frames in this batch.<wbr/> Max batch size indicates
5754the max possible number of frames the camera device will group together for this high
5755speed stream configuration.<wbr/> This max batch size will be used to generate a high speed
5756recording request list by
5757<a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a>.<wbr/>
5758The max batch size for each configuration will satisfy below conditions:</p>
5759<ul>
5760<li>Each max batch size will be a divisor of its corresponding fps_<wbr/>max /<wbr/> 30.<wbr/> For example,<wbr/>
5761if max_<wbr/>fps is 300,<wbr/> max batch size will only be 1,<wbr/> 2,<wbr/> 5,<wbr/> or 10.<wbr/></li>
5762<li>The camera device may choose smaller internal batch size for each configuration,<wbr/> but
5763the actual batch size will be a divisor of max batch size.<wbr/> For example,<wbr/> if the max batch
5764size is 8,<wbr/> the actual batch size used by camera device will only be 1,<wbr/> 2,<wbr/> 4,<wbr/> or 8.<wbr/></li>
5765<li>The max batch size in each configuration entry must be no larger than 32.<wbr/></li>
5766</ul>
5767<p>The camera device doesn't have to support batch mode to achieve high speed video recording,<wbr/>
5768in such case,<wbr/> batch_<wbr/>size_<wbr/>max will be reported as 1 in each configuration entry.<wbr/></p>
5769<p>This fps ranges in this configuration list can only be used to create requests
5770that are submitted to a high speed camera capture session created by
5771<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>.<wbr/>
5772The fps ranges reported in this metadata must not be used to setup capture requests for
5773normal capture session,<wbr/> or it will cause request error.<wbr/></p>
5774            </td>
5775          </tr>
5776
5777          <tr class="entries_header">
5778            <th class="th_details" colspan="6">HAL Implementation Details</th>
5779          </tr>
5780          <tr class="entry_cont">
5781            <td class="entry_details" colspan="6">
5782              <p>All the sizes listed in this configuration will be a subset of the sizes reported by
5783<a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> for processed non-stalling output formats.<wbr/>
5784Note that for all high speed video configurations,<wbr/> HAL must be able to support a minimum
5785of two streams,<wbr/> though the application might choose to configure just one stream.<wbr/></p>
5786<p>The HAL may support multiple sensor modes for high speed outputs,<wbr/> for example,<wbr/> 120fps
5787sensor mode and 120fps recording,<wbr/> 240fps sensor mode for 240fps recording.<wbr/> The application
5788usually starts preview first,<wbr/> then starts recording.<wbr/> To avoid sensor mode switch caused
5789stutter when starting recording as much as possible,<wbr/> the application may want to ensure
5790the same sensor mode is used for preview and recording.<wbr/> Therefore,<wbr/> The HAL must advertise
5791the variable fps range [30,<wbr/> fps_<wbr/>max] for each fixed fps range in this configuration list.<wbr/>
5792For example,<wbr/> if the HAL advertises [120,<wbr/> 120] and [240,<wbr/> 240],<wbr/> the HAL must also advertise
5793[30,<wbr/> 120] and [30,<wbr/> 240] for each configuration.<wbr/> In doing so,<wbr/> if the application intends to
5794do 120fps recording,<wbr/> it can select [30,<wbr/> 120] to start preview,<wbr/> and [120,<wbr/> 120] to start
5795recording.<wbr/> For these variable fps ranges,<wbr/> it's up to the HAL to decide the actual fps
5796values that are suitable for smooth preview streaming.<wbr/> If the HAL sees different max_<wbr/>fps
5797values that fall into different sensor modes in a sequence of requests,<wbr/> the HAL must
5798switch the sensor mode as quick as possible to minimize the mode switch caused stutter.<wbr/></p>
5799            </td>
5800          </tr>
5801
5802          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5803           <!-- end of entry -->
5804
5805
5806          <tr class="entry" id="static_android.control.aeLockAvailable">
5807            <td class="entry_name
5808             " rowspan="3">
5809              android.<wbr/>control.<wbr/>ae<wbr/>Lock<wbr/>Available
5810            </td>
5811            <td class="entry_type">
5812                <span class="entry_type_name entry_type_name_enum">byte</span>
5813
5814              <span class="entry_type_visibility"> [public as boolean]</span>
5815
5816
5817              <span class="entry_type_hwlevel">[legacy] </span>
5818
5819
5820
5821                <ul class="entry_type_enum">
5822                  <li>
5823                    <span class="entry_type_enum_name">FALSE (v3.2)</span>
5824                  </li>
5825                  <li>
5826                    <span class="entry_type_enum_name">TRUE (v3.2)</span>
5827                  </li>
5828                </ul>
5829
5830            </td> <!-- entry_type -->
5831
5832            <td class="entry_description">
5833              <p>Whether the camera device supports <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></p>
5834            </td>
5835
5836            <td class="entry_units">
5837            </td>
5838
5839            <td class="entry_range">
5840            </td>
5841
5842            <td class="entry_hal_version">
5843              <p>3.<wbr/>2</p>
5844            </td>
5845
5846            <td class="entry_tags">
5847              <ul class="entry_tags">
5848                  <li><a href="#tag_BC">BC</a></li>
5849              </ul>
5850            </td>
5851
5852          </tr>
5853          <tr class="entries_header">
5854            <th class="th_details" colspan="6">Details</th>
5855          </tr>
5856          <tr class="entry_cont">
5857            <td class="entry_details" colspan="6">
5858              <p>Devices with MANUAL_<wbr/>SENSOR capability or BURST_<wbr/>CAPTURE capability will always
5859list <code>true</code>.<wbr/> This includes FULL devices.<wbr/></p>
5860            </td>
5861          </tr>
5862
5863
5864          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5865           <!-- end of entry -->
5866
5867
5868          <tr class="entry" id="static_android.control.awbLockAvailable">
5869            <td class="entry_name
5870             " rowspan="3">
5871              android.<wbr/>control.<wbr/>awb<wbr/>Lock<wbr/>Available
5872            </td>
5873            <td class="entry_type">
5874                <span class="entry_type_name entry_type_name_enum">byte</span>
5875
5876              <span class="entry_type_visibility"> [public as boolean]</span>
5877
5878
5879              <span class="entry_type_hwlevel">[legacy] </span>
5880
5881
5882
5883                <ul class="entry_type_enum">
5884                  <li>
5885                    <span class="entry_type_enum_name">FALSE (v3.2)</span>
5886                  </li>
5887                  <li>
5888                    <span class="entry_type_enum_name">TRUE (v3.2)</span>
5889                  </li>
5890                </ul>
5891
5892            </td> <!-- entry_type -->
5893
5894            <td class="entry_description">
5895              <p>Whether the camera device supports <a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></p>
5896            </td>
5897
5898            <td class="entry_units">
5899            </td>
5900
5901            <td class="entry_range">
5902            </td>
5903
5904            <td class="entry_hal_version">
5905              <p>3.<wbr/>2</p>
5906            </td>
5907
5908            <td class="entry_tags">
5909              <ul class="entry_tags">
5910                  <li><a href="#tag_BC">BC</a></li>
5911              </ul>
5912            </td>
5913
5914          </tr>
5915          <tr class="entries_header">
5916            <th class="th_details" colspan="6">Details</th>
5917          </tr>
5918          <tr class="entry_cont">
5919            <td class="entry_details" colspan="6">
5920              <p>Devices with MANUAL_<wbr/>POST_<wbr/>PROCESSING capability or BURST_<wbr/>CAPTURE capability will
5921always list <code>true</code>.<wbr/> This includes FULL devices.<wbr/></p>
5922            </td>
5923          </tr>
5924
5925
5926          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5927           <!-- end of entry -->
5928
5929
5930          <tr class="entry" id="static_android.control.availableModes">
5931            <td class="entry_name
5932             " rowspan="3">
5933              android.<wbr/>control.<wbr/>available<wbr/>Modes
5934            </td>
5935            <td class="entry_type">
5936                <span class="entry_type_name">byte</span>
5937                <span class="entry_type_container">x</span>
5938
5939                <span class="entry_type_array">
5940                  n
5941                </span>
5942              <span class="entry_type_visibility"> [public as enumList]</span>
5943
5944
5945              <span class="entry_type_hwlevel">[legacy] </span>
5946
5947
5948                <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>mode).<wbr/></div>
5949
5950
5951            </td> <!-- entry_type -->
5952
5953            <td class="entry_description">
5954              <p>List of control modes for <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> that are supported by this camera
5955device.<wbr/></p>
5956            </td>
5957
5958            <td class="entry_units">
5959            </td>
5960
5961            <td class="entry_range">
5962              <p>Any value listed in <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a></p>
5963            </td>
5964
5965            <td class="entry_hal_version">
5966              <p>3.<wbr/>2</p>
5967            </td>
5968
5969            <td class="entry_tags">
5970            </td>
5971
5972          </tr>
5973          <tr class="entries_header">
5974            <th class="th_details" colspan="6">Details</th>
5975          </tr>
5976          <tr class="entry_cont">
5977            <td class="entry_details" colspan="6">
5978              <p>This list contains control modes that can be set for the camera device.<wbr/>
5979LEGACY mode devices will always support AUTO mode.<wbr/> LIMITED and FULL
5980devices will always support OFF,<wbr/> AUTO modes.<wbr/></p>
5981            </td>
5982          </tr>
5983
5984
5985          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5986           <!-- end of entry -->
5987
5988
5989          <tr class="entry" id="static_android.control.postRawSensitivityBoostRange">
5990            <td class="entry_name
5991             " rowspan="5">
5992              android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost<wbr/>Range
5993            </td>
5994            <td class="entry_type">
5995                <span class="entry_type_name">int32</span>
5996                <span class="entry_type_container">x</span>
5997
5998                <span class="entry_type_array">
5999                  2
6000                </span>
6001              <span class="entry_type_visibility"> [public as rangeInt]</span>
6002
6003
6004
6005
6006                <div class="entry_type_notes">Range of supported post RAW sensitivitiy boosts</div>
6007
6008
6009            </td> <!-- entry_type -->
6010
6011            <td class="entry_description">
6012              <p>Range of boosts for <a href="#controls_android.control.postRawSensitivityBoost">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost</a> supported
6013by this camera device.<wbr/></p>
6014            </td>
6015
6016            <td class="entry_units">
6017              ISO arithmetic units,<wbr/> the same as android.<wbr/>sensor.<wbr/>sensitivity
6018            </td>
6019
6020            <td class="entry_range">
6021            </td>
6022
6023            <td class="entry_hal_version">
6024              <p>3.<wbr/>2</p>
6025            </td>
6026
6027            <td class="entry_tags">
6028            </td>
6029
6030          </tr>
6031          <tr class="entries_header">
6032            <th class="th_details" colspan="6">Details</th>
6033          </tr>
6034          <tr class="entry_cont">
6035            <td class="entry_details" colspan="6">
6036              <p>Devices support post RAW sensitivity boost  will advertise
6037<a href="#controls_android.control.postRawSensitivityBoost">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost</a> key for controling
6038post RAW sensitivity boost.<wbr/></p>
6039<p>This key will be <code>null</code> for devices that do not support any RAW format
6040outputs.<wbr/> For devices that do support RAW format outputs,<wbr/> this key will always
6041present,<wbr/> and if a device does not support post RAW sensitivity boost,<wbr/> it will
6042list <code>(100,<wbr/> 100)</code> in this key.<wbr/></p>
6043            </td>
6044          </tr>
6045
6046          <tr class="entries_header">
6047            <th class="th_details" colspan="6">HAL Implementation Details</th>
6048          </tr>
6049          <tr class="entry_cont">
6050            <td class="entry_details" colspan="6">
6051              <p>This key is added in legacy HAL3.<wbr/>4.<wbr/> For legacy HAL3.<wbr/>3 or earlier devices,<wbr/> camera
6052framework will generate this key as <code>(100,<wbr/> 100)</code> if device supports any of RAW output
6053formats.<wbr/>  All legacy HAL3.<wbr/>4 and above devices should list this key if device supports
6054any of RAW output formats.<wbr/></p>
6055            </td>
6056          </tr>
6057
6058          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6059           <!-- end of entry -->
6060
6061
6062
6063      <!-- end of kind -->
6064      </tbody>
6065      <tr><td colspan="7" class="kind">dynamic</td></tr>
6066
6067      <thead class="entries_header">
6068        <tr>
6069          <th class="th_name">Property Name</th>
6070          <th class="th_type">Type</th>
6071          <th class="th_description">Description</th>
6072          <th class="th_units">Units</th>
6073          <th class="th_range">Range</th>
6074          <th class="th_hal_version">Initial HIDL HAL version</th>
6075          <th class="th_tags">Tags</th>
6076        </tr>
6077      </thead>
6078
6079      <tbody>
6080
6081
6082
6083
6084
6085
6086
6087
6088
6089
6090          <tr class="entry" id="dynamic_android.control.aePrecaptureId">
6091            <td class="entry_name
6092                entry_name_deprecated
6093             " rowspan="3">
6094              android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Id
6095            </td>
6096            <td class="entry_type">
6097                <span class="entry_type_name">int32</span>
6098
6099              <span class="entry_type_visibility"> [system]</span>
6100
6101
6102
6103              <span class="entry_type_deprecated">[deprecated] </span>
6104
6105
6106
6107            </td> <!-- entry_type -->
6108
6109            <td class="entry_description">
6110              <p>The ID sent with the latest
6111CAMERA2_<wbr/>TRIGGER_<wbr/>PRECAPTURE_<wbr/>METERING call</p>
6112            </td>
6113
6114            <td class="entry_units">
6115            </td>
6116
6117            <td class="entry_range">
6118              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
6119            </td>
6120
6121            <td class="entry_hal_version">
6122              <p>3.<wbr/>2</p>
6123            </td>
6124
6125            <td class="entry_tags">
6126            </td>
6127
6128          </tr>
6129          <tr class="entries_header">
6130            <th class="th_details" colspan="6">Details</th>
6131          </tr>
6132          <tr class="entry_cont">
6133            <td class="entry_details" colspan="6">
6134              <p>Must be 0 if no
6135CAMERA2_<wbr/>TRIGGER_<wbr/>PRECAPTURE_<wbr/>METERING trigger received yet
6136by HAL.<wbr/> Always updated even if AE algorithm ignores the
6137trigger</p>
6138            </td>
6139          </tr>
6140
6141
6142          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6143           <!-- end of entry -->
6144
6145
6146          <tr class="entry" id="dynamic_android.control.aeAntibandingMode">
6147            <td class="entry_name
6148             " rowspan="5">
6149              android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode
6150            </td>
6151            <td class="entry_type">
6152                <span class="entry_type_name entry_type_name_enum">byte</span>
6153
6154              <span class="entry_type_visibility"> [public]</span>
6155
6156
6157              <span class="entry_type_hwlevel">[legacy] </span>
6158
6159
6160
6161                <ul class="entry_type_enum">
6162                  <li>
6163                    <span class="entry_type_enum_name">OFF (v3.2)</span>
6164                    <span class="entry_type_enum_notes"><p>The camera device will not adjust exposure duration to
6165avoid banding problems.<wbr/></p></span>
6166                  </li>
6167                  <li>
6168                    <span class="entry_type_enum_name">50HZ (v3.2)</span>
6169                    <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
6170avoid banding problems with 50Hz illumination sources.<wbr/></p></span>
6171                  </li>
6172                  <li>
6173                    <span class="entry_type_enum_name">60HZ (v3.2)</span>
6174                    <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
6175avoid banding problems with 60Hz illumination
6176sources.<wbr/></p></span>
6177                  </li>
6178                  <li>
6179                    <span class="entry_type_enum_name">AUTO (v3.2)</span>
6180                    <span class="entry_type_enum_notes"><p>The camera device will automatically adapt its
6181antibanding routine to the current illumination
6182condition.<wbr/> This is the default mode if AUTO is
6183available on given camera device.<wbr/></p></span>
6184                  </li>
6185                </ul>
6186
6187            </td> <!-- entry_type -->
6188
6189            <td class="entry_description">
6190              <p>The desired setting for the camera device's auto-exposure
6191algorithm's antibanding compensation.<wbr/></p>
6192            </td>
6193
6194            <td class="entry_units">
6195            </td>
6196
6197            <td class="entry_range">
6198              <p><a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a></p>
6199            </td>
6200
6201            <td class="entry_hal_version">
6202              <p>3.<wbr/>2</p>
6203            </td>
6204
6205            <td class="entry_tags">
6206              <ul class="entry_tags">
6207                  <li><a href="#tag_BC">BC</a></li>
6208              </ul>
6209            </td>
6210
6211          </tr>
6212          <tr class="entries_header">
6213            <th class="th_details" colspan="6">Details</th>
6214          </tr>
6215          <tr class="entry_cont">
6216            <td class="entry_details" colspan="6">
6217              <p>Some kinds of lighting fixtures,<wbr/> such as some fluorescent
6218lights,<wbr/> flicker at the rate of the power supply frequency
6219(60Hz or 50Hz,<wbr/> depending on country).<wbr/> While this is
6220typically not noticeable to a person,<wbr/> it can be visible to
6221a camera device.<wbr/> If a camera sets its exposure time to the
6222wrong value,<wbr/> the flicker may become visible in the
6223viewfinder as flicker or in a final captured image,<wbr/> as a
6224set of variable-brightness bands across the image.<wbr/></p>
6225<p>Therefore,<wbr/> the auto-exposure routines of camera devices
6226include antibanding routines that ensure that the chosen
6227exposure value will not cause such banding.<wbr/> The choice of
6228exposure time depends on the rate of flicker,<wbr/> which the
6229camera device can detect automatically,<wbr/> or the expected
6230rate can be selected by the application using this
6231control.<wbr/></p>
6232<p>A given camera device may not support all of the possible
6233options for the antibanding mode.<wbr/> The
6234<a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a> key contains
6235the available modes for a given camera device.<wbr/></p>
6236<p>AUTO mode is the default if it is available on given
6237camera device.<wbr/> When AUTO mode is not available,<wbr/> the
6238default will be either 50HZ or 60HZ,<wbr/> and both 50HZ
6239and 60HZ will be available.<wbr/></p>
6240<p>If manual exposure control is enabled (by setting
6241<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/>
6242then this setting has no effect,<wbr/> and the application must
6243ensure it selects exposure times that do not cause banding
6244issues.<wbr/> The <a href="#dynamic_android.statistics.sceneFlicker">android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker</a> key can assist
6245the application in this.<wbr/></p>
6246            </td>
6247          </tr>
6248
6249          <tr class="entries_header">
6250            <th class="th_details" colspan="6">HAL Implementation Details</th>
6251          </tr>
6252          <tr class="entry_cont">
6253            <td class="entry_details" colspan="6">
6254              <p>For all capture request templates,<wbr/> this field must be set
6255to AUTO if AUTO mode is available.<wbr/> If AUTO is not available,<wbr/>
6256the default must be either 50HZ or 60HZ,<wbr/> and both 50HZ and
625760HZ must be available.<wbr/></p>
6258<p>If manual exposure control is enabled (by setting
6259<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/>
6260then the exposure values provided by the application must not be
6261adjusted for antibanding.<wbr/></p>
6262            </td>
6263          </tr>
6264
6265          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6266           <!-- end of entry -->
6267
6268
6269          <tr class="entry" id="dynamic_android.control.aeExposureCompensation">
6270            <td class="entry_name
6271             " rowspan="3">
6272              android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation
6273            </td>
6274            <td class="entry_type">
6275                <span class="entry_type_name">int32</span>
6276
6277              <span class="entry_type_visibility"> [public]</span>
6278
6279
6280              <span class="entry_type_hwlevel">[legacy] </span>
6281
6282
6283
6284
6285            </td> <!-- entry_type -->
6286
6287            <td class="entry_description">
6288              <p>Adjustment to auto-exposure (AE) target image
6289brightness.<wbr/></p>
6290            </td>
6291
6292            <td class="entry_units">
6293              Compensation steps
6294            </td>
6295
6296            <td class="entry_range">
6297              <p><a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a></p>
6298            </td>
6299
6300            <td class="entry_hal_version">
6301              <p>3.<wbr/>2</p>
6302            </td>
6303
6304            <td class="entry_tags">
6305              <ul class="entry_tags">
6306                  <li><a href="#tag_BC">BC</a></li>
6307              </ul>
6308            </td>
6309
6310          </tr>
6311          <tr class="entries_header">
6312            <th class="th_details" colspan="6">Details</th>
6313          </tr>
6314          <tr class="entry_cont">
6315            <td class="entry_details" colspan="6">
6316              <p>The adjustment is measured as a count of steps,<wbr/> with the
6317step size defined by <a href="#static_android.control.aeCompensationStep">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step</a> and the
6318allowed range by <a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a>.<wbr/></p>
6319<p>For example,<wbr/> if the exposure value (EV) step is 0.<wbr/>333,<wbr/> '6'
6320will mean an exposure compensation of +2 EV; -3 will mean an
6321exposure compensation of -1 EV.<wbr/> One EV represents a doubling
6322of image brightness.<wbr/> Note that this control will only be
6323effective if <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>!=</code> OFF.<wbr/> This control
6324will take effect even when <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> <code>== true</code>.<wbr/></p>
6325<p>In the event of exposure compensation value being changed,<wbr/> camera device
6326may take several frames to reach the newly requested exposure target.<wbr/>
6327During that time,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> field will be in the SEARCHING
6328state.<wbr/> Once the new exposure target is reached,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> will
6329change from SEARCHING to either CONVERGED,<wbr/> LOCKED (if AE lock is enabled),<wbr/> or
6330FLASH_<wbr/>REQUIRED (if the scene is too dark for still capture).<wbr/></p>
6331            </td>
6332          </tr>
6333
6334
6335          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6336           <!-- end of entry -->
6337
6338
6339          <tr class="entry" id="dynamic_android.control.aeLock">
6340            <td class="entry_name
6341             " rowspan="3">
6342              android.<wbr/>control.<wbr/>ae<wbr/>Lock
6343            </td>
6344            <td class="entry_type">
6345                <span class="entry_type_name entry_type_name_enum">byte</span>
6346
6347              <span class="entry_type_visibility"> [public as boolean]</span>
6348
6349
6350              <span class="entry_type_hwlevel">[legacy] </span>
6351
6352
6353
6354                <ul class="entry_type_enum">
6355                  <li>
6356                    <span class="entry_type_enum_name">OFF (v3.2)</span>
6357                    <span class="entry_type_enum_notes"><p>Auto-exposure lock is disabled; the AE algorithm
6358is free to update its parameters.<wbr/></p></span>
6359                  </li>
6360                  <li>
6361                    <span class="entry_type_enum_name">ON (v3.2)</span>
6362                    <span class="entry_type_enum_notes"><p>Auto-exposure lock is enabled; the AE algorithm
6363must not update the exposure and sensitivity parameters
6364while the lock is active.<wbr/></p>
6365<p><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a> setting changes
6366will still take effect while auto-exposure is locked.<wbr/></p>
6367<p>Some rare LEGACY devices may not support
6368this,<wbr/> in which case the value will always be overridden to OFF.<wbr/></p></span>
6369                  </li>
6370                </ul>
6371
6372            </td> <!-- entry_type -->
6373
6374            <td class="entry_description">
6375              <p>Whether auto-exposure (AE) is currently locked to its latest
6376calculated values.<wbr/></p>
6377            </td>
6378
6379            <td class="entry_units">
6380            </td>
6381
6382            <td class="entry_range">
6383            </td>
6384
6385            <td class="entry_hal_version">
6386              <p>3.<wbr/>2</p>
6387            </td>
6388
6389            <td class="entry_tags">
6390              <ul class="entry_tags">
6391                  <li><a href="#tag_BC">BC</a></li>
6392              </ul>
6393            </td>
6394
6395          </tr>
6396          <tr class="entries_header">
6397            <th class="th_details" colspan="6">Details</th>
6398          </tr>
6399          <tr class="entry_cont">
6400            <td class="entry_details" colspan="6">
6401              <p>When set to <code>true</code> (ON),<wbr/> the AE algorithm is locked to its latest parameters,<wbr/>
6402and will not change exposure settings until the lock is set to <code>false</code> (OFF).<wbr/></p>
6403<p>Note that even when AE is locked,<wbr/> the flash may be fired if
6404the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is ON_<wbr/>AUTO_<wbr/>FLASH /<wbr/>
6405ON_<wbr/>ALWAYS_<wbr/>FLASH /<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE.<wbr/></p>
6406<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
6407is ON,<wbr/> the camera device will still adjust its exposure value.<wbr/></p>
6408<p>If AE precapture is triggered (see <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>)
6409when AE is already locked,<wbr/> the camera device will not change the exposure time
6410(<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>)
6411parameters.<wbr/> The flash may be fired if the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>
6412is ON_<wbr/>AUTO_<wbr/>FLASH/<wbr/>ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE and the scene is too dark.<wbr/> If the
6413<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/>
6414Similarly,<wbr/> AE precapture trigger CANCEL has no effect when AE is already locked.<wbr/></p>
6415<p>When an AE precapture sequence is triggered,<wbr/> AE unlock will not be able to unlock
6416the AE if AE is locked by the camera device internally during precapture metering
6417sequence In other words,<wbr/> submitting requests with AE unlock has no effect for an
6418ongoing precapture metering sequence.<wbr/> Otherwise,<wbr/> the precapture metering sequence
6419will never succeed in a sequence of preview requests where AE lock is always set
6420to <code>false</code>.<wbr/></p>
6421<p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that
6422get locked do not necessarily correspond to the settings that were present in the
6423latest capture result received from the camera device,<wbr/> since additional captures
6424and AE updates may have occurred even before the result was sent out.<wbr/> If an
6425application is switching between automatic and manual control and wishes to eliminate
6426any flicker during the switch,<wbr/> the following procedure is recommended:</p>
6427<ol>
6428<li>Starting in auto-AE mode:</li>
6429<li>Lock AE</li>
6430<li>Wait for the first result to be output that has the AE locked</li>
6431<li>Copy exposure settings from that result into a request,<wbr/> set the request to manual AE</li>
6432<li>Submit the capture request,<wbr/> proceed to run manual AE as desired.<wbr/></li>
6433</ol>
6434<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>
6435            </td>
6436          </tr>
6437
6438
6439          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6440           <!-- end of entry -->
6441
6442
6443          <tr class="entry" id="dynamic_android.control.aeMode">
6444            <td class="entry_name
6445             " rowspan="3">
6446              android.<wbr/>control.<wbr/>ae<wbr/>Mode
6447            </td>
6448            <td class="entry_type">
6449                <span class="entry_type_name entry_type_name_enum">byte</span>
6450
6451              <span class="entry_type_visibility"> [public]</span>
6452
6453
6454              <span class="entry_type_hwlevel">[legacy] </span>
6455
6456
6457
6458                <ul class="entry_type_enum">
6459                  <li>
6460                    <span class="entry_type_enum_name">OFF (v3.2)</span>
6461                    <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is disabled.<wbr/></p>
6462<p>The application-selected <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
6463<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> and
6464<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are used by the camera
6465device,<wbr/> along with android.<wbr/>flash.<wbr/>* fields,<wbr/> if there's
6466a flash unit for this camera device.<wbr/></p>
6467<p>Note that auto-white balance (AWB) and auto-focus (AF)
6468behavior is device dependent when AE is in OFF mode.<wbr/>
6469To have consistent behavior across different devices,<wbr/>
6470it is recommended to either set AWB and AF to OFF mode
6471or lock AWB and AF before setting AE to OFF.<wbr/>
6472See <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/>
6473<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>
6474for more details.<wbr/></p>
6475<p>LEGACY devices do not support the OFF mode and will
6476override attempts to use this value to ON.<wbr/></p></span>
6477                  </li>
6478                  <li>
6479                    <span class="entry_type_enum_name">ON (v3.2)</span>
6480                    <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is active,<wbr/>
6481with no flash control.<wbr/></p>
6482<p>The application's values for
6483<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
6484<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
6485<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are ignored.<wbr/> The
6486application has control over the various
6487android.<wbr/>flash.<wbr/>* fields.<wbr/></p></span>
6488                  </li>
6489                  <li>
6490                    <span class="entry_type_enum_name">ON_AUTO_FLASH (v3.2)</span>
6491                    <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
6492the camera's flash unit,<wbr/> firing it in low-light
6493conditions.<wbr/></p>
6494<p>The flash may be fired during a precapture sequence
6495(triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and
6496may be fired for captures for which the
6497<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to
6498STILL_<wbr/>CAPTURE</p></span>
6499                  </li>
6500                  <li>
6501                    <span class="entry_type_enum_name">ON_ALWAYS_FLASH (v3.2)</span>
6502                    <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
6503the camera's flash unit,<wbr/> always firing it for still
6504captures.<wbr/></p>
6505<p>The flash may be fired during a precapture sequence
6506(triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and
6507will always be fired for captures for which the
6508<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to
6509STILL_<wbr/>CAPTURE</p></span>
6510                  </li>
6511                  <li>
6512                    <span class="entry_type_enum_name">ON_AUTO_FLASH_REDEYE (v3.2)</span>
6513                    <span class="entry_type_enum_notes"><p>Like ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> but with automatic red eye
6514reduction.<wbr/></p>
6515<p>If deemed necessary by the camera device,<wbr/> a red eye
6516reduction flash will fire during the precapture
6517sequence.<wbr/></p></span>
6518                  </li>
6519                  <li>
6520                    <span class="entry_type_enum_name">ON_EXTERNAL_FLASH (v3.3)</span>
6521                    <span class="entry_type_enum_notes"><p>An external flash has been turned on.<wbr/></p>
6522<p>It informs the camera device that an external flash has been turned on,<wbr/> and that
6523metering (and continuous focus if active) should be quickly recaculated to account
6524for the external flash.<wbr/> Otherwise,<wbr/> this mode acts like ON.<wbr/></p>
6525<p>When the external flash is turned off,<wbr/> AE mode should be changed to one of the
6526other available AE modes.<wbr/></p>
6527<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
6528be FLASH_<wbr/>REQUIRED after the camera device finishes AE scan and it's too dark without
6529flash.<wbr/></p></span>
6530                  </li>
6531                </ul>
6532
6533            </td> <!-- entry_type -->
6534
6535            <td class="entry_description">
6536              <p>The desired mode for the camera device's
6537auto-exposure routine.<wbr/></p>
6538            </td>
6539
6540            <td class="entry_units">
6541            </td>
6542
6543            <td class="entry_range">
6544              <p><a href="#static_android.control.aeAvailableModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes</a></p>
6545            </td>
6546
6547            <td class="entry_hal_version">
6548              <p>3.<wbr/>2</p>
6549            </td>
6550
6551            <td class="entry_tags">
6552              <ul class="entry_tags">
6553                  <li><a href="#tag_BC">BC</a></li>
6554              </ul>
6555            </td>
6556
6557          </tr>
6558          <tr class="entries_header">
6559            <th class="th_details" colspan="6">Details</th>
6560          </tr>
6561          <tr class="entry_cont">
6562            <td class="entry_details" colspan="6">
6563              <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is
6564AUTO.<wbr/></p>
6565<p>When set to any of the ON modes,<wbr/> the camera device's
6566auto-exposure routine is enabled,<wbr/> overriding the
6567application's selected exposure time,<wbr/> sensor sensitivity,<wbr/>
6568and frame duration (<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
6569<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
6570<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>).<wbr/> If one of the FLASH modes
6571is selected,<wbr/> the camera device's flash unit controls are
6572also overridden.<wbr/></p>
6573<p>The FLASH modes are only available if the camera device
6574has a flash unit (<a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> is <code>true</code>).<wbr/></p>
6575<p>If flash TORCH mode is desired,<wbr/> this field must be set to
6576ON or OFF,<wbr/> and <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> set to TORCH.<wbr/></p>
6577<p>When set to any of the ON modes,<wbr/> the values chosen by the
6578camera device auto-exposure routine for the overridden
6579fields for a given capture will be available in its
6580CaptureResult.<wbr/></p>
6581            </td>
6582          </tr>
6583
6584
6585          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6586           <!-- end of entry -->
6587
6588
6589          <tr class="entry" id="dynamic_android.control.aeRegions">
6590            <td class="entry_name
6591             " rowspan="5">
6592              android.<wbr/>control.<wbr/>ae<wbr/>Regions
6593            </td>
6594            <td class="entry_type">
6595                <span class="entry_type_name">int32</span>
6596                <span class="entry_type_container">x</span>
6597
6598                <span class="entry_type_array">
6599                  5 x area_count
6600                </span>
6601              <span class="entry_type_visibility"> [public as meteringRectangle]</span>
6602
6603
6604
6605
6606
6607
6608            </td> <!-- entry_type -->
6609
6610            <td class="entry_description">
6611              <p>List of metering areas to use for auto-exposure adjustment.<wbr/></p>
6612            </td>
6613
6614            <td class="entry_units">
6615              Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size or
6616            android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size depending on
6617            distortion correction capability and mode
6618            </td>
6619
6620            <td class="entry_range">
6621              <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
6622<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>
6623depending on distortion correction capability and mode</p>
6624            </td>
6625
6626            <td class="entry_hal_version">
6627              <p>3.<wbr/>2</p>
6628            </td>
6629
6630            <td class="entry_tags">
6631              <ul class="entry_tags">
6632                  <li><a href="#tag_BC">BC</a></li>
6633              </ul>
6634            </td>
6635
6636          </tr>
6637          <tr class="entries_header">
6638            <th class="th_details" colspan="6">Details</th>
6639          </tr>
6640          <tr class="entry_cont">
6641            <td class="entry_details" colspan="6">
6642              <p>Not available if <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a> is 0.<wbr/>
6643Otherwise will always be present.<wbr/></p>
6644<p>The maximum number of regions supported by the device is determined by the value
6645of <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a>.<wbr/></p>
6646<p>For devices not supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate
6647system 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
6648the top-left pixel in the active pixel array,<wbr/> and
6649(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
6650<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
6651active pixel array.<wbr/></p>
6652<p>For devices supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate
6653system depends on the mode being set.<wbr/>
6654When the distortion correction mode is OFF,<wbr/> the coordinate system follows
6655<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
6656<code>(0,<wbr/> 0)</code> being the top-left pixel of the pre-correction active array,<wbr/> and
6657(<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/>
6658<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
6659pixel in the pre-correction active pixel array.<wbr/>
6660When the distortion correction mode is not OFF,<wbr/> the coordinate system follows
6661<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> with
6662<code>(0,<wbr/> 0)</code> being the top-left pixel of the active array,<wbr/> and
6663(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
6664<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
6665active pixel array.<wbr/></p>
6666<p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight
6667for every pixel in the area.<wbr/> This means that a large metering area
6668with the same weight as a smaller area will have more effect in
6669the metering result.<wbr/> Metering areas can partially overlap and the
6670camera device will add the weights in the overlap region.<wbr/></p>
6671<p>The weights are relative to weights of other exposure metering regions,<wbr/> so if only one
6672region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0
6673weight is ignored.<wbr/></p>
6674<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
6675camera device.<wbr/></p>
6676<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
6677capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
6678region and output only the intersection rectangle as the metering region in the result
6679metadata.<wbr/>  If the region is entirely outside the crop region,<wbr/> it will be ignored and
6680not reported in the result metadata.<wbr/></p>
6681            </td>
6682          </tr>
6683
6684          <tr class="entries_header">
6685            <th class="th_details" colspan="6">HAL Implementation Details</th>
6686          </tr>
6687          <tr class="entry_cont">
6688            <td class="entry_details" colspan="6">
6689              <p>The HAL level representation of MeteringRectangle[] is a
6690int[5 * area_<wbr/>count].<wbr/>
6691Every five elements represent a metering region of
6692(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
6693The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
6694exclusive on xmax and ymax.<wbr/>
6695HAL must always report metering regions in the coordinate system of pre-correction
6696active array.<wbr/></p>
6697            </td>
6698          </tr>
6699
6700          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6701           <!-- end of entry -->
6702
6703
6704          <tr class="entry" id="dynamic_android.control.aeTargetFpsRange">
6705            <td class="entry_name
6706             " rowspan="3">
6707              android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range
6708            </td>
6709            <td class="entry_type">
6710                <span class="entry_type_name">int32</span>
6711                <span class="entry_type_container">x</span>
6712
6713                <span class="entry_type_array">
6714                  2
6715                </span>
6716              <span class="entry_type_visibility"> [public as rangeInt]</span>
6717
6718
6719              <span class="entry_type_hwlevel">[legacy] </span>
6720
6721
6722
6723
6724            </td> <!-- entry_type -->
6725
6726            <td class="entry_description">
6727              <p>Range over which the auto-exposure routine can
6728adjust the capture frame rate to maintain good
6729exposure.<wbr/></p>
6730            </td>
6731
6732            <td class="entry_units">
6733              Frames per second (FPS)
6734            </td>
6735
6736            <td class="entry_range">
6737              <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>
6738            </td>
6739
6740            <td class="entry_hal_version">
6741              <p>3.<wbr/>2</p>
6742            </td>
6743
6744            <td class="entry_tags">
6745              <ul class="entry_tags">
6746                  <li><a href="#tag_BC">BC</a></li>
6747              </ul>
6748            </td>
6749
6750          </tr>
6751          <tr class="entries_header">
6752            <th class="th_details" colspan="6">Details</th>
6753          </tr>
6754          <tr class="entry_cont">
6755            <td class="entry_details" colspan="6">
6756              <p>Only constrains auto-exposure (AE) algorithm,<wbr/> not
6757manual control of <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> and
6758<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>.<wbr/></p>
6759            </td>
6760          </tr>
6761
6762
6763          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6764           <!-- end of entry -->
6765
6766
6767          <tr class="entry" id="dynamic_android.control.aePrecaptureTrigger">
6768            <td class="entry_name
6769             " rowspan="5">
6770              android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger
6771            </td>
6772            <td class="entry_type">
6773                <span class="entry_type_name entry_type_name_enum">byte</span>
6774
6775              <span class="entry_type_visibility"> [public]</span>
6776
6777
6778              <span class="entry_type_hwlevel">[limited] </span>
6779
6780
6781
6782                <ul class="entry_type_enum">
6783                  <li>
6784                    <span class="entry_type_enum_name">IDLE (v3.2)</span>
6785                    <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
6786                  </li>
6787                  <li>
6788                    <span class="entry_type_enum_name">START (v3.2)</span>
6789                    <span class="entry_type_enum_notes"><p>The precapture metering sequence will be started
6790by the camera device.<wbr/></p>
6791<p>The exact effect of the precapture trigger depends on
6792the current AE mode and state.<wbr/></p></span>
6793                  </li>
6794                  <li>
6795                    <span class="entry_type_enum_name">CANCEL (v3.2)</span>
6796                    <span class="entry_type_enum_notes"><p>The camera device will cancel any currently active or completed
6797precapture metering sequence,<wbr/> the auto-exposure routine will return to its
6798initial state.<wbr/></p></span>
6799                  </li>
6800                </ul>
6801
6802            </td> <!-- entry_type -->
6803
6804            <td class="entry_description">
6805              <p>Whether the camera device will trigger a precapture
6806metering sequence when it processes this request.<wbr/></p>
6807            </td>
6808
6809            <td class="entry_units">
6810            </td>
6811
6812            <td class="entry_range">
6813            </td>
6814
6815            <td class="entry_hal_version">
6816              <p>3.<wbr/>2</p>
6817            </td>
6818
6819            <td class="entry_tags">
6820              <ul class="entry_tags">
6821                  <li><a href="#tag_BC">BC</a></li>
6822              </ul>
6823            </td>
6824
6825          </tr>
6826          <tr class="entries_header">
6827            <th class="th_details" colspan="6">Details</th>
6828          </tr>
6829          <tr class="entry_cont">
6830            <td class="entry_details" colspan="6">
6831              <p>This entry is normally set to IDLE,<wbr/> or is not
6832included at all in the request settings.<wbr/> When included and
6833set to START,<wbr/> the camera device will trigger the auto-exposure (AE)
6834precapture metering sequence.<wbr/></p>
6835<p>When set to CANCEL,<wbr/> the camera device will cancel any active
6836precapture metering trigger,<wbr/> and return to its initial AE state.<wbr/>
6837If a precapture metering sequence is already completed,<wbr/> and the camera
6838device has implicitly locked the AE for subsequent still capture,<wbr/> the
6839CANCEL trigger will unlock the AE and return to its initial AE state.<wbr/></p>
6840<p>The precapture sequence should be triggered before starting a
6841high-quality still capture for final metering decisions to
6842be made,<wbr/> and for firing pre-capture flash pulses to estimate
6843scene brightness and required final capture flash power,<wbr/> when
6844the flash is enabled.<wbr/></p>
6845<p>Normally,<wbr/> this entry should be set to START for only a
6846single request,<wbr/> and the application should wait until the
6847sequence completes before starting a new one.<wbr/></p>
6848<p>When a precapture metering sequence is finished,<wbr/> the camera device
6849may lock the auto-exposure routine internally to be able to accurately expose the
6850subsequent still capture image (<code><a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE</code>).<wbr/>
6851For this case,<wbr/> the AE may not resume normal scan if no subsequent still capture is
6852submitted.<wbr/> To ensure that the AE routine restarts normal scan,<wbr/> the application should
6853submit 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
6854with <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
6855still capture request after the precapture sequence completes.<wbr/> Alternatively,<wbr/> for
6856API level 23 or newer devices,<wbr/> the CANCEL can be used to unlock the camera device
6857internally locked AE if the application doesn't submit a still capture request after
6858the AE precapture trigger.<wbr/> Note that,<wbr/> the CANCEL was added in API level 23,<wbr/> and must not
6859be used in devices that have earlier API levels.<wbr/></p>
6860<p>The exact effect of auto-exposure (AE) precapture trigger
6861depends on the current AE mode and state; see
6862<a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> for AE precapture state transition
6863details.<wbr/></p>
6864<p>On LEGACY-level devices,<wbr/> the precapture trigger is not supported;
6865capturing a high-resolution JPEG image will automatically trigger a
6866precapture sequence before the high-resolution capture,<wbr/> including
6867potentially firing a pre-capture flash.<wbr/></p>
6868<p>Using the precapture trigger and the auto-focus trigger <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>
6869simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between
6870the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a
6871focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous
6872trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and
6873changes to <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> indicating the start of the precapture sequence,<wbr/> for
6874example.<wbr/></p>
6875<p>If both the precapture and the auto-focus trigger are activated on the same request,<wbr/> then
6876the camera device will complete them in the optimal order for that device.<wbr/></p>
6877            </td>
6878          </tr>
6879
6880          <tr class="entries_header">
6881            <th class="th_details" colspan="6">HAL Implementation Details</th>
6882          </tr>
6883          <tr class="entry_cont">
6884            <td class="entry_details" colspan="6">
6885              <p>The HAL must support triggering the AE precapture trigger while an AF trigger is active
6886(and vice versa),<wbr/> or at the same time as the AF trigger.<wbr/>  It is acceptable for the HAL to
6887treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the
6888AE trigger.<wbr/>  Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/>
6889to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p>
6890            </td>
6891          </tr>
6892
6893          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6894           <!-- end of entry -->
6895
6896
6897          <tr class="entry" id="dynamic_android.control.aeState">
6898            <td class="entry_name
6899             " rowspan="3">
6900              android.<wbr/>control.<wbr/>ae<wbr/>State
6901            </td>
6902            <td class="entry_type">
6903                <span class="entry_type_name entry_type_name_enum">byte</span>
6904
6905              <span class="entry_type_visibility"> [public]</span>
6906
6907
6908              <span class="entry_type_hwlevel">[limited] </span>
6909
6910
6911
6912                <ul class="entry_type_enum">
6913                  <li>
6914                    <span class="entry_type_enum_name">INACTIVE (v3.2)</span>
6915                    <span class="entry_type_enum_notes"><p>AE is off or recently reset.<wbr/></p>
6916<p>When a camera device is opened,<wbr/> it starts in
6917this state.<wbr/> This is a transient state,<wbr/> the camera device may skip reporting
6918this state in capture result.<wbr/></p></span>
6919                  </li>
6920                  <li>
6921                    <span class="entry_type_enum_name">SEARCHING (v3.2)</span>
6922                    <span class="entry_type_enum_notes"><p>AE doesn't yet have a good set of control values
6923for the current scene.<wbr/></p>
6924<p>This is a transient state,<wbr/> the camera device may skip
6925reporting this state in capture result.<wbr/></p></span>
6926                  </li>
6927                  <li>
6928                    <span class="entry_type_enum_name">CONVERGED (v3.2)</span>
6929                    <span class="entry_type_enum_notes"><p>AE has a good set of control values for the
6930current scene.<wbr/></p></span>
6931                  </li>
6932                  <li>
6933                    <span class="entry_type_enum_name">LOCKED (v3.2)</span>
6934                    <span class="entry_type_enum_notes"><p>AE has been locked.<wbr/></p></span>
6935                  </li>
6936                  <li>
6937                    <span class="entry_type_enum_name">FLASH_REQUIRED (v3.2)</span>
6938                    <span class="entry_type_enum_notes"><p>AE has a good set of control values,<wbr/> but flash
6939needs to be fired for good quality still
6940capture.<wbr/></p></span>
6941                  </li>
6942                  <li>
6943                    <span class="entry_type_enum_name">PRECAPTURE (v3.2)</span>
6944                    <span class="entry_type_enum_notes"><p>AE has been asked to do a precapture sequence
6945and is currently executing it.<wbr/></p>
6946<p>Precapture can be triggered through setting
6947<a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> to START.<wbr/> Currently
6948active and completed (if it causes camera device internal AE lock) precapture
6949metering sequence can be canceled through setting
6950<a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> to CANCEL.<wbr/></p>
6951<p>Once PRECAPTURE completes,<wbr/> AE will transition to CONVERGED
6952or FLASH_<wbr/>REQUIRED as appropriate.<wbr/> This is a transient
6953state,<wbr/> the camera device may skip reporting this state in
6954capture result.<wbr/></p></span>
6955                  </li>
6956                </ul>
6957
6958            </td> <!-- entry_type -->
6959
6960            <td class="entry_description">
6961              <p>Current state of the auto-exposure (AE) algorithm.<wbr/></p>
6962            </td>
6963
6964            <td class="entry_units">
6965            </td>
6966
6967            <td class="entry_range">
6968            </td>
6969
6970            <td class="entry_hal_version">
6971              <p>3.<wbr/>2</p>
6972            </td>
6973
6974            <td class="entry_tags">
6975            </td>
6976
6977          </tr>
6978          <tr class="entries_header">
6979            <th class="th_details" colspan="6">Details</th>
6980          </tr>
6981          <tr class="entry_cont">
6982            <td class="entry_details" colspan="6">
6983              <p>Switching between or enabling AE modes (<a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>) always
6984resets the AE state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/>
6985or <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
6986the algorithm states to INACTIVE.<wbr/></p>
6987<p>The camera device can do several state transitions between two results,<wbr/> if it is
6988allowed by the state transition table.<wbr/> For example: INACTIVE may never actually be
6989seen in a result.<wbr/></p>
6990<p>The state in the result is the state for this image (in sync with this image): if
6991AE state becomes CONVERGED,<wbr/> then the image data associated with this result should
6992be good to use.<wbr/></p>
6993<p>Below are state transition tables for different AE modes.<wbr/></p>
6994<table>
6995<thead>
6996<tr>
6997<th align="center">State</th>
6998<th align="center">Transition Cause</th>
6999<th align="center">New State</th>
7000<th align="center">Notes</th>
7001</tr>
7002</thead>
7003<tbody>
7004<tr>
7005<td align="center">INACTIVE</td>
7006<td align="center"></td>
7007<td align="center">INACTIVE</td>
7008<td align="center">Camera device auto exposure algorithm is disabled</td>
7009</tr>
7010</tbody>
7011</table>
7012<p>When <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is AE_<wbr/>MODE_<wbr/>ON*:</p>
7013<table>
7014<thead>
7015<tr>
7016<th align="center">State</th>
7017<th align="center">Transition Cause</th>
7018<th align="center">New State</th>
7019<th align="center">Notes</th>
7020</tr>
7021</thead>
7022<tbody>
7023<tr>
7024<td align="center">INACTIVE</td>
7025<td align="center">Camera device initiates AE scan</td>
7026<td align="center">SEARCHING</td>
7027<td align="center">Values changing</td>
7028</tr>
7029<tr>
7030<td align="center">INACTIVE</td>
7031<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
7032<td align="center">LOCKED</td>
7033<td align="center">Values locked</td>
7034</tr>
7035<tr>
7036<td align="center">SEARCHING</td>
7037<td align="center">Camera device finishes AE scan</td>
7038<td align="center">CONVERGED</td>
7039<td align="center">Good values,<wbr/> not changing</td>
7040</tr>
7041<tr>
7042<td align="center">SEARCHING</td>
7043<td align="center">Camera device finishes AE scan</td>
7044<td align="center">FLASH_<wbr/>REQUIRED</td>
7045<td align="center">Converged but too dark w/<wbr/>o flash</td>
7046</tr>
7047<tr>
7048<td align="center">SEARCHING</td>
7049<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
7050<td align="center">LOCKED</td>
7051<td align="center">Values locked</td>
7052</tr>
7053<tr>
7054<td align="center">CONVERGED</td>
7055<td align="center">Camera device initiates AE scan</td>
7056<td align="center">SEARCHING</td>
7057<td align="center">Values changing</td>
7058</tr>
7059<tr>
7060<td align="center">CONVERGED</td>
7061<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
7062<td align="center">LOCKED</td>
7063<td align="center">Values locked</td>
7064</tr>
7065<tr>
7066<td align="center">FLASH_<wbr/>REQUIRED</td>
7067<td align="center">Camera device initiates AE scan</td>
7068<td align="center">SEARCHING</td>
7069<td align="center">Values changing</td>
7070</tr>
7071<tr>
7072<td align="center">FLASH_<wbr/>REQUIRED</td>
7073<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
7074<td align="center">LOCKED</td>
7075<td align="center">Values locked</td>
7076</tr>
7077<tr>
7078<td align="center">LOCKED</td>
7079<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td>
7080<td align="center">SEARCHING</td>
7081<td align="center">Values not good after unlock</td>
7082</tr>
7083<tr>
7084<td align="center">LOCKED</td>
7085<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td>
7086<td align="center">CONVERGED</td>
7087<td align="center">Values good after unlock</td>
7088</tr>
7089<tr>
7090<td align="center">LOCKED</td>
7091<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td>
7092<td align="center">FLASH_<wbr/>REQUIRED</td>
7093<td align="center">Exposure good,<wbr/> but too dark</td>
7094</tr>
7095<tr>
7096<td align="center">PRECAPTURE</td>
7097<td align="center">Sequence done.<wbr/> <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td>
7098<td align="center">CONVERGED</td>
7099<td align="center">Ready for high-quality capture</td>
7100</tr>
7101<tr>
7102<td align="center">PRECAPTURE</td>
7103<td align="center">Sequence done.<wbr/> <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
7104<td align="center">LOCKED</td>
7105<td align="center">Ready for high-quality capture</td>
7106</tr>
7107<tr>
7108<td align="center">LOCKED</td>
7109<td align="center">aeLock is ON and aePrecaptureTrigger is START</td>
7110<td align="center">LOCKED</td>
7111<td align="center">Precapture trigger is ignored when AE is already locked</td>
7112</tr>
7113<tr>
7114<td align="center">LOCKED</td>
7115<td align="center">aeLock is ON and aePrecaptureTrigger is CANCEL</td>
7116<td align="center">LOCKED</td>
7117<td align="center">Precapture trigger is ignored when AE is already locked</td>
7118</tr>
7119<tr>
7120<td align="center">Any state (excluding LOCKED)</td>
7121<td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is START</td>
7122<td align="center">PRECAPTURE</td>
7123<td align="center">Start AE precapture metering sequence</td>
7124</tr>
7125<tr>
7126<td align="center">Any state (excluding LOCKED)</td>
7127<td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL</td>
7128<td align="center">INACTIVE</td>
7129<td align="center">Currently active precapture metering sequence is canceled</td>
7130</tr>
7131</tbody>
7132</table>
7133<p>If the camera device supports AE external flash mode (ON_<wbr/>EXTERNAL_<wbr/>FLASH is included in
7134<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
7135the camera device finishes AE scan and it's too dark without flash.<wbr/></p>
7136<p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen
7137without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that
7138can be skipped in that manner is called a transient state.<wbr/></p>
7139<p>For example,<wbr/> for above AE modes (AE_<wbr/>MODE_<wbr/>ON*),<wbr/> in addition to the state transitions
7140listed in above table,<wbr/> it is also legal for the camera device to skip one or more
7141transient states between two results.<wbr/> See below table for examples:</p>
7142<table>
7143<thead>
7144<tr>
7145<th align="center">State</th>
7146<th align="center">Transition Cause</th>
7147<th align="center">New State</th>
7148<th align="center">Notes</th>
7149</tr>
7150</thead>
7151<tbody>
7152<tr>
7153<td align="center">INACTIVE</td>
7154<td align="center">Camera device finished AE scan</td>
7155<td align="center">CONVERGED</td>
7156<td align="center">Values are already good,<wbr/> transient states are skipped by camera device.<wbr/></td>
7157</tr>
7158<tr>
7159<td align="center">Any state (excluding LOCKED)</td>
7160<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>
7161<td align="center">FLASH_<wbr/>REQUIRED</td>
7162<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>
7163</tr>
7164<tr>
7165<td align="center">Any state (excluding LOCKED)</td>
7166<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>
7167<td align="center">CONVERGED</td>
7168<td align="center">Converged after a precapture sequence,<wbr/> transient states are skipped by camera device.<wbr/></td>
7169</tr>
7170<tr>
7171<td align="center">Any state (excluding LOCKED)</td>
7172<td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL,<wbr/> converged</td>
7173<td align="center">FLASH_<wbr/>REQUIRED</td>
7174<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>
7175</tr>
7176<tr>
7177<td align="center">Any state (excluding LOCKED)</td>
7178<td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL,<wbr/> converged</td>
7179<td align="center">CONVERGED</td>
7180<td align="center">Converged after a precapture sequenceis canceled,<wbr/> transient states are skipped by camera device.<wbr/></td>
7181</tr>
7182<tr>
7183<td align="center">CONVERGED</td>
7184<td align="center">Camera device finished AE scan</td>
7185<td align="center">FLASH_<wbr/>REQUIRED</td>
7186<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>
7187</tr>
7188<tr>
7189<td align="center">FLASH_<wbr/>REQUIRED</td>
7190<td align="center">Camera device finished AE scan</td>
7191<td align="center">CONVERGED</td>
7192<td align="center">Converged after a new scan,<wbr/> transient states are skipped by camera device.<wbr/></td>
7193</tr>
7194</tbody>
7195</table>
7196            </td>
7197          </tr>
7198
7199
7200          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
7201           <!-- end of entry -->
7202
7203
7204          <tr class="entry" id="dynamic_android.control.afMode">
7205            <td class="entry_name
7206             " rowspan="5">
7207              android.<wbr/>control.<wbr/>af<wbr/>Mode
7208            </td>
7209            <td class="entry_type">
7210                <span class="entry_type_name entry_type_name_enum">byte</span>
7211
7212              <span class="entry_type_visibility"> [public]</span>
7213
7214
7215              <span class="entry_type_hwlevel">[legacy] </span>
7216
7217
7218
7219                <ul class="entry_type_enum">
7220                  <li>
7221                    <span class="entry_type_enum_name">OFF (v3.2)</span>
7222                    <span class="entry_type_enum_notes"><p>The auto-focus routine does not control the lens;
7223<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> is controlled by the
7224application.<wbr/></p></span>
7225                  </li>
7226                  <li>
7227                    <span class="entry_type_enum_name">AUTO (v3.2)</span>
7228                    <span class="entry_type_enum_notes"><p>Basic automatic focus mode.<wbr/></p>
7229<p>In this mode,<wbr/> the lens does not move unless
7230the autofocus trigger action is called.<wbr/> When that trigger
7231is activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
7232the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/></p>
7233<p>Always supported if lens is not fixed focus.<wbr/></p>
7234<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
7235is fixed-focus.<wbr/></p>
7236<p>Triggering AF_<wbr/>CANCEL resets the lens position to default,<wbr/>
7237and sets the AF state to INACTIVE.<wbr/></p></span>
7238                  </li>
7239                  <li>
7240                    <span class="entry_type_enum_name">MACRO (v3.2)</span>
7241                    <span class="entry_type_enum_notes"><p>Close-up focusing mode.<wbr/></p>
7242<p>In this mode,<wbr/> the lens does not move unless the
7243autofocus trigger action is called.<wbr/> When that trigger is
7244activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
7245the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/> This
7246mode is optimized for focusing on objects very close to
7247the camera.<wbr/></p>
7248<p>When that trigger is activated,<wbr/> AF will transition to
7249ACTIVE_<wbr/>SCAN,<wbr/> then to the outcome of the scan (FOCUSED or
7250NOT_<wbr/>FOCUSED).<wbr/> Triggering cancel AF resets the lens
7251position to default,<wbr/> and sets the AF state to
7252INACTIVE.<wbr/></p></span>
7253                  </li>
7254                  <li>
7255                    <span class="entry_type_enum_name">CONTINUOUS_VIDEO (v3.2)</span>
7256                    <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
7257position continually to attempt to provide a
7258constantly-in-focus image stream.<wbr/></p>
7259<p>The focusing behavior should be suitable for good quality
7260video recording; typically this means slower focus
7261movement and no overshoots.<wbr/> When the AF trigger is not
7262involved,<wbr/> the AF algorithm should start in INACTIVE state,<wbr/>
7263and then transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED
7264states as appropriate.<wbr/> When the AF trigger is activated,<wbr/>
7265the algorithm should immediately transition into
7266AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the
7267lens position until a cancel AF trigger is received.<wbr/></p>
7268<p>Once cancel is received,<wbr/> the algorithm should transition
7269back to INACTIVE and resume passive scan.<wbr/> Note that this
7270behavior is not identical to CONTINUOUS_<wbr/>PICTURE,<wbr/> since an
7271ongoing PASSIVE_<wbr/>SCAN must immediately be
7272canceled.<wbr/></p></span>
7273                  </li>
7274                  <li>
7275                    <span class="entry_type_enum_name">CONTINUOUS_PICTURE (v3.2)</span>
7276                    <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
7277position continually to attempt to provide a
7278constantly-in-focus image stream.<wbr/></p>
7279<p>The focusing behavior should be suitable for still image
7280capture; typically this means focusing as fast as
7281possible.<wbr/> When the AF trigger is not involved,<wbr/> the AF
7282algorithm should start in INACTIVE state,<wbr/> and then
7283transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED states as
7284appropriate as it attempts to maintain focus.<wbr/> When the AF
7285trigger is activated,<wbr/> the algorithm should finish its
7286PASSIVE_<wbr/>SCAN if active,<wbr/> and then transition into
7287AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the
7288lens position until a cancel AF trigger is received.<wbr/></p>
7289<p>When the AF cancel trigger is activated,<wbr/> the algorithm
7290should transition back to INACTIVE and then act as if it
7291has just been started.<wbr/></p></span>
7292                  </li>
7293                  <li>
7294                    <span class="entry_type_enum_name">EDOF (v3.2)</span>
7295                    <span class="entry_type_enum_notes"><p>Extended depth of field (digital focus) mode.<wbr/></p>
7296<p>The camera device will produce images with an extended
7297depth of field automatically; no special focusing
7298operations need to be done before taking a picture.<wbr/></p>
7299<p>AF triggers are ignored,<wbr/> and the AF state will always be
7300INACTIVE.<wbr/></p></span>
7301                  </li>
7302                </ul>
7303
7304            </td> <!-- entry_type -->
7305
7306            <td class="entry_description">
7307              <p>Whether auto-focus (AF) is currently enabled,<wbr/> and what
7308mode it is set to.<wbr/></p>
7309            </td>
7310
7311            <td class="entry_units">
7312            </td>
7313
7314            <td class="entry_range">
7315              <p><a href="#static_android.control.afAvailableModes">android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes</a></p>
7316            </td>
7317
7318            <td class="entry_hal_version">
7319              <p>3.<wbr/>2</p>
7320            </td>
7321
7322            <td class="entry_tags">
7323              <ul class="entry_tags">
7324                  <li><a href="#tag_BC">BC</a></li>
7325              </ul>
7326            </td>
7327
7328          </tr>
7329          <tr class="entries_header">
7330            <th class="th_details" colspan="6">Details</th>
7331          </tr>
7332          <tr class="entry_cont">
7333            <td class="entry_details" colspan="6">
7334              <p>Only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> = AUTO and the lens is not fixed focus
7335(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
7336when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> the behavior of AF is device
7337dependent.<wbr/> It is recommended to lock AF by using <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a> before
7338setting <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>
7339<p>If the lens is controlled by the camera device auto-focus algorithm,<wbr/>
7340the camera device will report the current AF status in <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>
7341in result metadata.<wbr/></p>
7342            </td>
7343          </tr>
7344
7345          <tr class="entries_header">
7346            <th class="th_details" colspan="6">HAL Implementation Details</th>
7347          </tr>
7348          <tr class="entry_cont">
7349            <td class="entry_details" colspan="6">
7350              <p>When afMode is AUTO or MACRO,<wbr/> the lens must not move until an AF trigger is sent in a
7351request (<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
7352up with either FOCUSED_<wbr/>LOCKED or NOT_<wbr/>FOCUSED_<wbr/>LOCKED state (see
7353<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
7354locked and will not move.<wbr/> If camera movement (e.<wbr/>g.<wbr/> tilting camera) causes the lens to move
7355after the lens is locked,<wbr/> the HAL must compensate this movement appropriately such that
7356the same focal plane remains in focus.<wbr/></p>
7357<p>When afMode is one of the continuous auto focus modes,<wbr/> the HAL is free to start a AF
7358scan whenever it's not locked.<wbr/> When the lens is locked after an AF trigger
7359(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
7360same lock behavior as above.<wbr/></p>
7361<p>When afMode is OFF,<wbr/> the application controls focus manually.<wbr/> The accuracy of the
7362focus 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/>
7363However,<wbr/> the lens must not move regardless of the camera movement for any focus distance
7364manual control.<wbr/></p>
7365<p>To put this in concrete terms,<wbr/> if the camera has lens elements which may move based on
7366camera orientation or motion (e.<wbr/>g.<wbr/> due to gravity),<wbr/> then the HAL must drive the lens to
7367remain in a fixed position invariant to the camera's orientation or motion,<wbr/> for example,<wbr/>
7368by using accelerometer measurements in the lens control logic.<wbr/> This is a typical issue
7369that will arise on camera modules with open-loop VCMs.<wbr/></p>
7370            </td>
7371          </tr>
7372
7373          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
7374           <!-- end of entry -->
7375
7376
7377          <tr class="entry" id="dynamic_android.control.afRegions">
7378            <td class="entry_name
7379             " rowspan="5">
7380              android.<wbr/>control.<wbr/>af<wbr/>Regions
7381            </td>
7382            <td class="entry_type">
7383                <span class="entry_type_name">int32</span>
7384                <span class="entry_type_container">x</span>
7385
7386                <span class="entry_type_array">
7387                  5 x area_count
7388                </span>
7389              <span class="entry_type_visibility"> [public as meteringRectangle]</span>
7390
7391
7392
7393
7394
7395
7396            </td> <!-- entry_type -->
7397
7398            <td class="entry_description">
7399              <p>List of metering areas to use for auto-focus.<wbr/></p>
7400            </td>
7401
7402            <td class="entry_units">
7403              Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size or
7404            android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size depending on
7405            distortion correction capability and mode
7406            </td>
7407
7408            <td class="entry_range">
7409              <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
7410<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>
7411depending on distortion correction capability and mode</p>
7412            </td>
7413
7414            <td class="entry_hal_version">
7415              <p>3.<wbr/>2</p>
7416            </td>
7417
7418            <td class="entry_tags">
7419              <ul class="entry_tags">
7420                  <li><a href="#tag_BC">BC</a></li>
7421              </ul>
7422            </td>
7423
7424          </tr>
7425          <tr class="entries_header">
7426            <th class="th_details" colspan="6">Details</th>
7427          </tr>
7428          <tr class="entry_cont">
7429            <td class="entry_details" colspan="6">
7430              <p>Not available if <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a> is 0.<wbr/>
7431Otherwise will always be present.<wbr/></p>
7432<p>The maximum number of focus areas supported by the device is determined by the value
7433of <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a>.<wbr/></p>
7434<p>For devices not supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate
7435system 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
7436the top-left pixel in the active pixel array,<wbr/> and
7437(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
7438<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
7439active pixel array.<wbr/></p>
7440<p>For devices supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate
7441system depends on the mode being set.<wbr/>
7442When the distortion correction mode is OFF,<wbr/> the coordinate system follows
7443<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
7444<code>(0,<wbr/> 0)</code> being the top-left pixel of the pre-correction active array,<wbr/> and
7445(<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/>
7446<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
7447pixel in the pre-correction active pixel array.<wbr/>
7448When the distortion correction mode is not OFF,<wbr/> the coordinate system follows
7449<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> with
7450<code>(0,<wbr/> 0)</code> being the top-left pixel of the active array,<wbr/> and
7451(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
7452<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
7453active pixel array.<wbr/></p>
7454<p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight
7455for every pixel in the area.<wbr/> This means that a large metering area
7456with the same weight as a smaller area will have more effect in
7457the metering result.<wbr/> Metering areas can partially overlap and the
7458camera device will add the weights in the overlap region.<wbr/></p>
7459<p>The weights are relative to weights of other metering regions,<wbr/> so if only one region
7460is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0 weight is
7461ignored.<wbr/></p>
7462<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
7463camera device.<wbr/> The capture result will either be a zero weight region as well,<wbr/> or
7464the region selected by the camera device as the focus area of interest.<wbr/></p>
7465<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
7466capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
7467region and output only the intersection rectangle as the metering region in the result
7468metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and
7469not reported in the result metadata.<wbr/></p>
7470            </td>
7471          </tr>
7472
7473          <tr class="entries_header">
7474            <th class="th_details" colspan="6">HAL Implementation Details</th>
7475          </tr>
7476          <tr class="entry_cont">
7477            <td class="entry_details" colspan="6">
7478              <p>The HAL level representation of MeteringRectangle[] is a
7479int[5 * area_<wbr/>count].<wbr/>
7480Every five elements represent a metering region of
7481(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
7482The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
7483exclusive on xmax and ymax.<wbr/>
7484HAL must always report metering regions in the coordinate system of pre-correction
7485active array.<wbr/></p>
7486            </td>
7487          </tr>
7488
7489          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
7490           <!-- end of entry -->
7491
7492
7493          <tr class="entry" id="dynamic_android.control.afTrigger">
7494            <td class="entry_name
7495             " rowspan="5">
7496              android.<wbr/>control.<wbr/>af<wbr/>Trigger
7497            </td>
7498            <td class="entry_type">
7499                <span class="entry_type_name entry_type_name_enum">byte</span>
7500
7501              <span class="entry_type_visibility"> [public]</span>
7502
7503
7504              <span class="entry_type_hwlevel">[legacy] </span>
7505
7506
7507
7508                <ul class="entry_type_enum">
7509                  <li>
7510                    <span class="entry_type_enum_name">IDLE (v3.2)</span>
7511                    <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
7512                  </li>
7513                  <li>
7514                    <span class="entry_type_enum_name">START (v3.2)</span>
7515                    <span class="entry_type_enum_notes"><p>Autofocus will trigger now.<wbr/></p></span>
7516                  </li>
7517                  <li>
7518                    <span class="entry_type_enum_name">CANCEL (v3.2)</span>
7519                    <span class="entry_type_enum_notes"><p>Autofocus will return to its initial
7520state,<wbr/> and cancel any currently active trigger.<wbr/></p></span>
7521                  </li>
7522                </ul>
7523
7524            </td> <!-- entry_type -->
7525
7526            <td class="entry_description">
7527              <p>Whether the camera device will trigger autofocus for this request.<wbr/></p>
7528            </td>
7529
7530            <td class="entry_units">
7531            </td>
7532
7533            <td class="entry_range">
7534            </td>
7535
7536            <td class="entry_hal_version">
7537              <p>3.<wbr/>2</p>
7538            </td>
7539
7540            <td class="entry_tags">
7541              <ul class="entry_tags">
7542                  <li><a href="#tag_BC">BC</a></li>
7543              </ul>
7544            </td>
7545
7546          </tr>
7547          <tr class="entries_header">
7548            <th class="th_details" colspan="6">Details</th>
7549          </tr>
7550          <tr class="entry_cont">
7551            <td class="entry_details" colspan="6">
7552              <p>This entry is normally set to IDLE,<wbr/> or is not
7553included at all in the request settings.<wbr/></p>
7554<p>When included and set to START,<wbr/> the camera device will trigger the
7555autofocus algorithm.<wbr/> If autofocus is disabled,<wbr/> this trigger has no effect.<wbr/></p>
7556<p>When set to CANCEL,<wbr/> the camera device will cancel any active trigger,<wbr/>
7557and return to its initial AF state.<wbr/></p>
7558<p>Generally,<wbr/> applications should set this entry to START or CANCEL for only a
7559single capture,<wbr/> and then return it to IDLE (or not set at all).<wbr/> Specifying
7560START for multiple captures in a row means restarting the AF operation over
7561and over again.<wbr/></p>
7562<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>
7563<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>
7564simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between
7565the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a
7566focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous
7567trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and
7568changes to <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>,<wbr/> for example.<wbr/></p>
7569            </td>
7570          </tr>
7571
7572          <tr class="entries_header">
7573            <th class="th_details" colspan="6">HAL Implementation Details</th>
7574          </tr>
7575          <tr class="entry_cont">
7576            <td class="entry_details" colspan="6">
7577              <p>The HAL must support triggering the AF trigger while an AE precapture trigger is active
7578(and vice versa),<wbr/> or at the same time as the AE trigger.<wbr/>  It is acceptable for the HAL to
7579treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the
7580AE trigger.<wbr/>  Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/>
7581to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p>
7582            </td>
7583          </tr>
7584
7585          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
7586           <!-- end of entry -->
7587
7588
7589          <tr class="entry" id="dynamic_android.control.afState">
7590            <td class="entry_name
7591             " rowspan="3">
7592              android.<wbr/>control.<wbr/>af<wbr/>State
7593            </td>
7594            <td class="entry_type">
7595                <span class="entry_type_name entry_type_name_enum">byte</span>
7596
7597              <span class="entry_type_visibility"> [public]</span>
7598
7599
7600              <span class="entry_type_hwlevel">[legacy] </span>
7601
7602
7603
7604                <ul class="entry_type_enum">
7605                  <li>
7606                    <span class="entry_type_enum_name">INACTIVE (v3.2)</span>
7607                    <span class="entry_type_enum_notes"><p>AF is off or has not yet tried to scan/<wbr/>been asked
7608to scan.<wbr/></p>
7609<p>When a camera device is opened,<wbr/> it starts in this
7610state.<wbr/> This is a transient state,<wbr/> the camera device may
7611skip reporting this state in capture
7612result.<wbr/></p></span>
7613                  </li>
7614                  <li>
7615                    <span class="entry_type_enum_name">PASSIVE_SCAN (v3.2)</span>
7616                    <span class="entry_type_enum_notes"><p>AF is currently performing an AF scan initiated the
7617camera device in a continuous autofocus mode.<wbr/></p>
7618<p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient
7619state,<wbr/> the camera device may skip reporting this state in
7620capture result.<wbr/></p></span>
7621                  </li>
7622                  <li>
7623                    <span class="entry_type_enum_name">PASSIVE_FOCUSED (v3.2)</span>
7624                    <span class="entry_type_enum_notes"><p>AF currently believes it is in focus,<wbr/> but may
7625restart scanning at any time.<wbr/></p>
7626<p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient
7627state,<wbr/> the camera device may skip reporting this state in
7628capture result.<wbr/></p></span>
7629                  </li>
7630                  <li>
7631                    <span class="entry_type_enum_name">ACTIVE_SCAN (v3.2)</span>
7632                    <span class="entry_type_enum_notes"><p>AF is performing an AF scan because it was
7633triggered by AF trigger.<wbr/></p>
7634<p>Only used by AUTO or MACRO AF modes.<wbr/> This is a transient
7635state,<wbr/> the camera device may skip reporting this state in
7636capture result.<wbr/></p></span>
7637                  </li>
7638                  <li>
7639                    <span class="entry_type_enum_name">FOCUSED_LOCKED (v3.2)</span>
7640                    <span class="entry_type_enum_notes"><p>AF believes it is focused correctly and has locked
7641focus.<wbr/></p>
7642<p>This state is reached only after an explicit START AF trigger has been
7643sent (<a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>),<wbr/> when good focus has been obtained.<wbr/></p>
7644<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
7645a 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>
7646                  </li>
7647                  <li>
7648                    <span class="entry_type_enum_name">NOT_FOCUSED_LOCKED (v3.2)</span>
7649                    <span class="entry_type_enum_notes"><p>AF has failed to focus successfully and has locked
7650focus.<wbr/></p>
7651<p>This state is reached only after an explicit START AF trigger has been
7652sent (<a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>),<wbr/> when good focus cannot be obtained.<wbr/></p>
7653<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
7654a 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>
7655                  </li>
7656                  <li>
7657                    <span class="entry_type_enum_name">PASSIVE_UNFOCUSED (v3.2)</span>
7658                    <span class="entry_type_enum_notes"><p>AF finished a passive scan without finding focus,<wbr/>
7659and may restart scanning at any time.<wbr/></p>
7660<p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient state,<wbr/> the camera
7661device may skip reporting this state in capture result.<wbr/></p>
7662<p>LEGACY camera devices do not support this state.<wbr/> When a passive
7663scan has finished,<wbr/> it will always go to PASSIVE_<wbr/>FOCUSED.<wbr/></p></span>
7664                  </li>
7665                </ul>
7666
7667            </td> <!-- entry_type -->
7668
7669            <td class="entry_description">
7670              <p>Current state of auto-focus (AF) algorithm.<wbr/></p>
7671            </td>
7672
7673            <td class="entry_units">
7674            </td>
7675
7676            <td class="entry_range">
7677            </td>
7678
7679            <td class="entry_hal_version">
7680              <p>3.<wbr/>2</p>
7681            </td>
7682
7683            <td class="entry_tags">
7684            </td>
7685
7686          </tr>
7687          <tr class="entries_header">
7688            <th class="th_details" colspan="6">Details</th>
7689          </tr>
7690          <tr class="entry_cont">
7691            <td class="entry_details" colspan="6">
7692              <p>Switching between or enabling AF modes (<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>) always
7693resets the AF state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/>
7694or <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
7695the algorithm states to INACTIVE.<wbr/></p>
7696<p>The camera device can do several state transitions between two results,<wbr/> if it is
7697allowed by the state transition table.<wbr/> For example: INACTIVE may never actually be
7698seen in a result.<wbr/></p>
7699<p>The state in the result is the state for this image (in sync with this image): if
7700AF state becomes FOCUSED,<wbr/> then the image data associated with this result should
7701be sharp.<wbr/></p>
7702<p>Below are state transition tables for different AF modes.<wbr/></p>
7703<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>
7704<table>
7705<thead>
7706<tr>
7707<th align="center">State</th>
7708<th align="center">Transition Cause</th>
7709<th align="center">New State</th>
7710<th align="center">Notes</th>
7711</tr>
7712</thead>
7713<tbody>
7714<tr>
7715<td align="center">INACTIVE</td>
7716<td align="center"></td>
7717<td align="center">INACTIVE</td>
7718<td align="center">Never changes</td>
7719</tr>
7720</tbody>
7721</table>
7722<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>
7723<table>
7724<thead>
7725<tr>
7726<th align="center">State</th>
7727<th align="center">Transition Cause</th>
7728<th align="center">New State</th>
7729<th align="center">Notes</th>
7730</tr>
7731</thead>
7732<tbody>
7733<tr>
7734<td align="center">INACTIVE</td>
7735<td align="center">AF_<wbr/>TRIGGER</td>
7736<td align="center">ACTIVE_<wbr/>SCAN</td>
7737<td align="center">Start AF sweep,<wbr/> Lens now moving</td>
7738</tr>
7739<tr>
7740<td align="center">ACTIVE_<wbr/>SCAN</td>
7741<td align="center">AF sweep done</td>
7742<td align="center">FOCUSED_<wbr/>LOCKED</td>
7743<td align="center">Focused,<wbr/> Lens now locked</td>
7744</tr>
7745<tr>
7746<td align="center">ACTIVE_<wbr/>SCAN</td>
7747<td align="center">AF sweep done</td>
7748<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7749<td align="center">Not focused,<wbr/> Lens now locked</td>
7750</tr>
7751<tr>
7752<td align="center">ACTIVE_<wbr/>SCAN</td>
7753<td align="center">AF_<wbr/>CANCEL</td>
7754<td align="center">INACTIVE</td>
7755<td align="center">Cancel/<wbr/>reset AF,<wbr/> Lens now locked</td>
7756</tr>
7757<tr>
7758<td align="center">FOCUSED_<wbr/>LOCKED</td>
7759<td align="center">AF_<wbr/>CANCEL</td>
7760<td align="center">INACTIVE</td>
7761<td align="center">Cancel/<wbr/>reset AF</td>
7762</tr>
7763<tr>
7764<td align="center">FOCUSED_<wbr/>LOCKED</td>
7765<td align="center">AF_<wbr/>TRIGGER</td>
7766<td align="center">ACTIVE_<wbr/>SCAN</td>
7767<td align="center">Start new sweep,<wbr/> Lens now moving</td>
7768</tr>
7769<tr>
7770<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7771<td align="center">AF_<wbr/>CANCEL</td>
7772<td align="center">INACTIVE</td>
7773<td align="center">Cancel/<wbr/>reset AF</td>
7774</tr>
7775<tr>
7776<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7777<td align="center">AF_<wbr/>TRIGGER</td>
7778<td align="center">ACTIVE_<wbr/>SCAN</td>
7779<td align="center">Start new sweep,<wbr/> Lens now moving</td>
7780</tr>
7781<tr>
7782<td align="center">Any state</td>
7783<td align="center">Mode change</td>
7784<td align="center">INACTIVE</td>
7785<td align="center"></td>
7786</tr>
7787</tbody>
7788</table>
7789<p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen
7790without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that
7791can be skipped in that manner is called a transient state.<wbr/></p>
7792<p>For example,<wbr/> for these AF modes (AF_<wbr/>MODE_<wbr/>AUTO and AF_<wbr/>MODE_<wbr/>MACRO),<wbr/> in addition to the
7793state transitions listed in above table,<wbr/> it is also legal for the camera device to skip
7794one or more transient states between two results.<wbr/> See below table for examples:</p>
7795<table>
7796<thead>
7797<tr>
7798<th align="center">State</th>
7799<th align="center">Transition Cause</th>
7800<th align="center">New State</th>
7801<th align="center">Notes</th>
7802</tr>
7803</thead>
7804<tbody>
7805<tr>
7806<td align="center">INACTIVE</td>
7807<td align="center">AF_<wbr/>TRIGGER</td>
7808<td align="center">FOCUSED_<wbr/>LOCKED</td>
7809<td align="center">Focus is already good or good after a scan,<wbr/> lens is now locked.<wbr/></td>
7810</tr>
7811<tr>
7812<td align="center">INACTIVE</td>
7813<td align="center">AF_<wbr/>TRIGGER</td>
7814<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7815<td align="center">Focus failed after a scan,<wbr/> lens is now locked.<wbr/></td>
7816</tr>
7817<tr>
7818<td align="center">FOCUSED_<wbr/>LOCKED</td>
7819<td align="center">AF_<wbr/>TRIGGER</td>
7820<td align="center">FOCUSED_<wbr/>LOCKED</td>
7821<td align="center">Focus is already good or good after a scan,<wbr/> lens is now locked.<wbr/></td>
7822</tr>
7823<tr>
7824<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7825<td align="center">AF_<wbr/>TRIGGER</td>
7826<td align="center">FOCUSED_<wbr/>LOCKED</td>
7827<td align="center">Focus is good after a scan,<wbr/> lens is not locked.<wbr/></td>
7828</tr>
7829</tbody>
7830</table>
7831<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>
7832<table>
7833<thead>
7834<tr>
7835<th align="center">State</th>
7836<th align="center">Transition Cause</th>
7837<th align="center">New State</th>
7838<th align="center">Notes</th>
7839</tr>
7840</thead>
7841<tbody>
7842<tr>
7843<td align="center">INACTIVE</td>
7844<td align="center">Camera device initiates new scan</td>
7845<td align="center">PASSIVE_<wbr/>SCAN</td>
7846<td align="center">Start AF scan,<wbr/> Lens now moving</td>
7847</tr>
7848<tr>
7849<td align="center">INACTIVE</td>
7850<td align="center">AF_<wbr/>TRIGGER</td>
7851<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7852<td align="center">AF state query,<wbr/> Lens now locked</td>
7853</tr>
7854<tr>
7855<td align="center">PASSIVE_<wbr/>SCAN</td>
7856<td align="center">Camera device completes current scan</td>
7857<td align="center">PASSIVE_<wbr/>FOCUSED</td>
7858<td align="center">End AF scan,<wbr/> Lens now locked</td>
7859</tr>
7860<tr>
7861<td align="center">PASSIVE_<wbr/>SCAN</td>
7862<td align="center">Camera device fails current scan</td>
7863<td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7864<td align="center">End AF scan,<wbr/> Lens now locked</td>
7865</tr>
7866<tr>
7867<td align="center">PASSIVE_<wbr/>SCAN</td>
7868<td align="center">AF_<wbr/>TRIGGER</td>
7869<td align="center">FOCUSED_<wbr/>LOCKED</td>
7870<td align="center">Immediate transition,<wbr/> if focus is good.<wbr/> Lens now locked</td>
7871</tr>
7872<tr>
7873<td align="center">PASSIVE_<wbr/>SCAN</td>
7874<td align="center">AF_<wbr/>TRIGGER</td>
7875<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7876<td align="center">Immediate transition,<wbr/> if focus is bad.<wbr/> Lens now locked</td>
7877</tr>
7878<tr>
7879<td align="center">PASSIVE_<wbr/>SCAN</td>
7880<td align="center">AF_<wbr/>CANCEL</td>
7881<td align="center">INACTIVE</td>
7882<td align="center">Reset lens position,<wbr/> Lens now locked</td>
7883</tr>
7884<tr>
7885<td align="center">PASSIVE_<wbr/>FOCUSED</td>
7886<td align="center">Camera device initiates new scan</td>
7887<td align="center">PASSIVE_<wbr/>SCAN</td>
7888<td align="center">Start AF scan,<wbr/> Lens now moving</td>
7889</tr>
7890<tr>
7891<td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7892<td align="center">Camera device initiates new scan</td>
7893<td align="center">PASSIVE_<wbr/>SCAN</td>
7894<td align="center">Start AF scan,<wbr/> Lens now moving</td>
7895</tr>
7896<tr>
7897<td align="center">PASSIVE_<wbr/>FOCUSED</td>
7898<td align="center">AF_<wbr/>TRIGGER</td>
7899<td align="center">FOCUSED_<wbr/>LOCKED</td>
7900<td align="center">Immediate transition,<wbr/> lens now locked</td>
7901</tr>
7902<tr>
7903<td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7904<td align="center">AF_<wbr/>TRIGGER</td>
7905<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7906<td align="center">Immediate transition,<wbr/> lens now locked</td>
7907</tr>
7908<tr>
7909<td align="center">FOCUSED_<wbr/>LOCKED</td>
7910<td align="center">AF_<wbr/>TRIGGER</td>
7911<td align="center">FOCUSED_<wbr/>LOCKED</td>
7912<td align="center">No effect</td>
7913</tr>
7914<tr>
7915<td align="center">FOCUSED_<wbr/>LOCKED</td>
7916<td align="center">AF_<wbr/>CANCEL</td>
7917<td align="center">INACTIVE</td>
7918<td align="center">Restart AF scan</td>
7919</tr>
7920<tr>
7921<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7922<td align="center">AF_<wbr/>TRIGGER</td>
7923<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7924<td align="center">No effect</td>
7925</tr>
7926<tr>
7927<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7928<td align="center">AF_<wbr/>CANCEL</td>
7929<td align="center">INACTIVE</td>
7930<td align="center">Restart AF scan</td>
7931</tr>
7932</tbody>
7933</table>
7934<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>
7935<table>
7936<thead>
7937<tr>
7938<th align="center">State</th>
7939<th align="center">Transition Cause</th>
7940<th align="center">New State</th>
7941<th align="center">Notes</th>
7942</tr>
7943</thead>
7944<tbody>
7945<tr>
7946<td align="center">INACTIVE</td>
7947<td align="center">Camera device initiates new scan</td>
7948<td align="center">PASSIVE_<wbr/>SCAN</td>
7949<td align="center">Start AF scan,<wbr/> Lens now moving</td>
7950</tr>
7951<tr>
7952<td align="center">INACTIVE</td>
7953<td align="center">AF_<wbr/>TRIGGER</td>
7954<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7955<td align="center">AF state query,<wbr/> Lens now locked</td>
7956</tr>
7957<tr>
7958<td align="center">PASSIVE_<wbr/>SCAN</td>
7959<td align="center">Camera device completes current scan</td>
7960<td align="center">PASSIVE_<wbr/>FOCUSED</td>
7961<td align="center">End AF scan,<wbr/> Lens now locked</td>
7962</tr>
7963<tr>
7964<td align="center">PASSIVE_<wbr/>SCAN</td>
7965<td align="center">Camera device fails current scan</td>
7966<td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7967<td align="center">End AF scan,<wbr/> Lens now locked</td>
7968</tr>
7969<tr>
7970<td align="center">PASSIVE_<wbr/>SCAN</td>
7971<td align="center">AF_<wbr/>TRIGGER</td>
7972<td align="center">FOCUSED_<wbr/>LOCKED</td>
7973<td align="center">Eventual transition once the focus is good.<wbr/> Lens now locked</td>
7974</tr>
7975<tr>
7976<td align="center">PASSIVE_<wbr/>SCAN</td>
7977<td align="center">AF_<wbr/>TRIGGER</td>
7978<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7979<td align="center">Eventual transition if cannot find focus.<wbr/> Lens now locked</td>
7980</tr>
7981<tr>
7982<td align="center">PASSIVE_<wbr/>SCAN</td>
7983<td align="center">AF_<wbr/>CANCEL</td>
7984<td align="center">INACTIVE</td>
7985<td align="center">Reset lens position,<wbr/> Lens now locked</td>
7986</tr>
7987<tr>
7988<td align="center">PASSIVE_<wbr/>FOCUSED</td>
7989<td align="center">Camera device initiates new scan</td>
7990<td align="center">PASSIVE_<wbr/>SCAN</td>
7991<td align="center">Start AF scan,<wbr/> Lens now moving</td>
7992</tr>
7993<tr>
7994<td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7995<td align="center">Camera device initiates new scan</td>
7996<td align="center">PASSIVE_<wbr/>SCAN</td>
7997<td align="center">Start AF scan,<wbr/> Lens now moving</td>
7998</tr>
7999<tr>
8000<td align="center">PASSIVE_<wbr/>FOCUSED</td>
8001<td align="center">AF_<wbr/>TRIGGER</td>
8002<td align="center">FOCUSED_<wbr/>LOCKED</td>
8003<td align="center">Immediate trans.<wbr/> Lens now locked</td>
8004</tr>
8005<tr>
8006<td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
8007<td align="center">AF_<wbr/>TRIGGER</td>
8008<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
8009<td align="center">Immediate trans.<wbr/> Lens now locked</td>
8010</tr>
8011<tr>
8012<td align="center">FOCUSED_<wbr/>LOCKED</td>
8013<td align="center">AF_<wbr/>TRIGGER</td>
8014<td align="center">FOCUSED_<wbr/>LOCKED</td>
8015<td align="center">No effect</td>
8016</tr>
8017<tr>
8018<td align="center">FOCUSED_<wbr/>LOCKED</td>
8019<td align="center">AF_<wbr/>CANCEL</td>
8020<td align="center">INACTIVE</td>
8021<td align="center">Restart AF scan</td>
8022</tr>
8023<tr>
8024<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
8025<td align="center">AF_<wbr/>TRIGGER</td>
8026<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
8027<td align="center">No effect</td>
8028</tr>
8029<tr>
8030<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
8031<td align="center">AF_<wbr/>CANCEL</td>
8032<td align="center">INACTIVE</td>
8033<td align="center">Restart AF scan</td>
8034</tr>
8035</tbody>
8036</table>
8037<p>When switch between AF_<wbr/>MODE_<wbr/>CONTINUOUS_<wbr/>* (CAF modes) and AF_<wbr/>MODE_<wbr/>AUTO/<wbr/>AF_<wbr/>MODE_<wbr/>MACRO
8038(AUTO modes),<wbr/> the initial INACTIVE or PASSIVE_<wbr/>SCAN states may be skipped by the
8039camera device.<wbr/> When a trigger is included in a mode switch request,<wbr/> the trigger
8040will be evaluated in the context of the new mode in the request.<wbr/>
8041See below table for examples:</p>
8042<table>
8043<thead>
8044<tr>
8045<th align="center">State</th>
8046<th align="center">Transition Cause</th>
8047<th align="center">New State</th>
8048<th align="center">Notes</th>
8049</tr>
8050</thead>
8051<tbody>
8052<tr>
8053<td align="center">any state</td>
8054<td align="center">CAF--&gt;AUTO mode switch</td>
8055<td align="center">INACTIVE</td>
8056<td align="center">Mode switch without trigger,<wbr/> initial state must be INACTIVE</td>
8057</tr>
8058<tr>
8059<td align="center">any state</td>
8060<td align="center">CAF--&gt;AUTO mode switch with AF_<wbr/>TRIGGER</td>
8061<td align="center">trigger-reachable states from INACTIVE</td>
8062<td align="center">Mode switch with trigger,<wbr/> INACTIVE is skipped</td>
8063</tr>
8064<tr>
8065<td align="center">any state</td>
8066<td align="center">AUTO--&gt;CAF mode switch</td>
8067<td align="center">passively reachable states from INACTIVE</td>
8068<td align="center">Mode switch without trigger,<wbr/> passive transient state is skipped</td>
8069</tr>
8070</tbody>
8071</table>
8072            </td>
8073          </tr>
8074
8075
8076          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
8077           <!-- end of entry -->
8078
8079
8080          <tr class="entry" id="dynamic_android.control.afTriggerId">
8081            <td class="entry_name
8082                entry_name_deprecated
8083             " rowspan="3">
8084              android.<wbr/>control.<wbr/>af<wbr/>Trigger<wbr/>Id
8085            </td>
8086            <td class="entry_type">
8087                <span class="entry_type_name">int32</span>
8088
8089              <span class="entry_type_visibility"> [system]</span>
8090
8091
8092
8093              <span class="entry_type_deprecated">[deprecated] </span>
8094
8095
8096
8097            </td> <!-- entry_type -->
8098
8099            <td class="entry_description">
8100              <p>The ID sent with the latest
8101CAMERA2_<wbr/>TRIGGER_<wbr/>AUTOFOCUS call</p>
8102            </td>
8103
8104            <td class="entry_units">
8105            </td>
8106
8107            <td class="entry_range">
8108              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
8109            </td>
8110
8111            <td class="entry_hal_version">
8112              <p>3.<wbr/>2</p>
8113            </td>
8114
8115            <td class="entry_tags">
8116            </td>
8117
8118          </tr>
8119          <tr class="entries_header">
8120            <th class="th_details" colspan="6">Details</th>
8121          </tr>
8122          <tr class="entry_cont">
8123            <td class="entry_details" colspan="6">
8124              <p>Must be 0 if no CAMERA2_<wbr/>TRIGGER_<wbr/>AUTOFOCUS trigger
8125received yet by HAL.<wbr/> Always updated even if AF algorithm
8126ignores the trigger</p>
8127            </td>
8128          </tr>
8129
8130
8131          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
8132           <!-- end of entry -->
8133
8134
8135          <tr class="entry" id="dynamic_android.control.awbLock">
8136            <td class="entry_name
8137             " rowspan="3">
8138              android.<wbr/>control.<wbr/>awb<wbr/>Lock
8139            </td>
8140            <td class="entry_type">
8141                <span class="entry_type_name entry_type_name_enum">byte</span>
8142
8143              <span class="entry_type_visibility"> [public as boolean]</span>
8144
8145
8146              <span class="entry_type_hwlevel">[legacy] </span>
8147
8148
8149
8150                <ul class="entry_type_enum">
8151                  <li>
8152                    <span class="entry_type_enum_name">OFF (v3.2)</span>
8153                    <span class="entry_type_enum_notes"><p>Auto-white balance lock is disabled; the AWB
8154algorithm is free to update its parameters if in AUTO
8155mode.<wbr/></p></span>
8156                  </li>
8157                  <li>
8158                    <span class="entry_type_enum_name">ON (v3.2)</span>
8159                    <span class="entry_type_enum_notes"><p>Auto-white balance lock is enabled; the AWB
8160algorithm will not update its parameters while the lock
8161is active.<wbr/></p></span>
8162                  </li>
8163                </ul>
8164
8165            </td> <!-- entry_type -->
8166
8167            <td class="entry_description">
8168              <p>Whether auto-white balance (AWB) is currently locked to its
8169latest calculated values.<wbr/></p>
8170            </td>
8171
8172            <td class="entry_units">
8173            </td>
8174
8175            <td class="entry_range">
8176            </td>
8177
8178            <td class="entry_hal_version">
8179              <p>3.<wbr/>2</p>
8180            </td>
8181
8182            <td class="entry_tags">
8183              <ul class="entry_tags">
8184                  <li><a href="#tag_BC">BC</a></li>
8185              </ul>
8186            </td>
8187
8188          </tr>
8189          <tr class="entries_header">
8190            <th class="th_details" colspan="6">Details</th>
8191          </tr>
8192          <tr class="entry_cont">
8193            <td class="entry_details" colspan="6">
8194              <p>When set to <code>true</code> (ON),<wbr/> the AWB algorithm is locked to its latest parameters,<wbr/>
8195and will not change color balance settings until the lock is set to <code>false</code> (OFF).<wbr/></p>
8196<p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that
8197get locked do not necessarily correspond to the settings that were present in the
8198latest capture result received from the camera device,<wbr/> since additional captures
8199and AWB updates may have occurred even before the result was sent out.<wbr/> If an
8200application is switching between automatic and manual control and wishes to eliminate
8201any flicker during the switch,<wbr/> the following procedure is recommended:</p>
8202<ol>
8203<li>Starting in auto-AWB mode:</li>
8204<li>Lock AWB</li>
8205<li>Wait for the first result to be output that has the AWB locked</li>
8206<li>Copy AWB settings from that result into a request,<wbr/> set the request to manual AWB</li>
8207<li>Submit the capture request,<wbr/> proceed to run manual AWB as desired.<wbr/></li>
8208</ol>
8209<p>Note that AWB lock is only meaningful when
8210<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is in the AUTO mode; in other modes,<wbr/>
8211AWB is already fixed to a specific setting.<wbr/></p>
8212<p>Some LEGACY devices may not support ON; the value is then overridden to OFF.<wbr/></p>
8213            </td>
8214          </tr>
8215
8216
8217          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
8218           <!-- end of entry -->
8219
8220
8221          <tr class="entry" id="dynamic_android.control.awbMode">
8222            <td class="entry_name
8223             " rowspan="3">
8224              android.<wbr/>control.<wbr/>awb<wbr/>Mode
8225            </td>
8226            <td class="entry_type">
8227                <span class="entry_type_name entry_type_name_enum">byte</span>
8228
8229              <span class="entry_type_visibility"> [public]</span>
8230
8231
8232              <span class="entry_type_hwlevel">[legacy] </span>
8233
8234
8235
8236                <ul class="entry_type_enum">
8237                  <li>
8238                    <span class="entry_type_enum_name">OFF (v3.2)</span>
8239                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled.<wbr/></p>
8240<p>The application-selected color transform matrix
8241(<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>) and gains
8242(<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a>) are used by the camera
8243device for manual white balance control.<wbr/></p></span>
8244                  </li>
8245                  <li>
8246                    <span class="entry_type_enum_name">AUTO (v3.2)</span>
8247                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is active.<wbr/></p>
8248<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
8249and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
8250For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
8251values used by the camera device for the transform and gains
8252will be available in the capture result for this request.<wbr/></p></span>
8253                  </li>
8254                  <li>
8255                    <span class="entry_type_enum_name">INCANDESCENT (v3.2)</span>
8256                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
8257the camera device uses incandescent light as the assumed scene
8258illumination for white balance.<wbr/></p>
8259<p>While the exact white balance transforms are up to the
8260camera device,<wbr/> they will approximately match the CIE
8261standard illuminant A.<wbr/></p>
8262<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
8263and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
8264For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
8265values used by the camera device for the transform and gains
8266will be available in the capture result for this request.<wbr/></p></span>
8267                  </li>
8268                  <li>
8269                    <span class="entry_type_enum_name">FLUORESCENT (v3.2)</span>
8270                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
8271the camera device uses fluorescent light as the assumed scene
8272illumination for white balance.<wbr/></p>
8273<p>While the exact white balance transforms are up to the
8274camera device,<wbr/> they will approximately match the CIE
8275standard illuminant F2.<wbr/></p>
8276<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
8277and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
8278For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
8279values used by the camera device for the transform and gains
8280will be available in the capture result for this request.<wbr/></p></span>
8281                  </li>
8282                  <li>
8283                    <span class="entry_type_enum_name">WARM_FLUORESCENT (v3.2)</span>
8284                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
8285the camera device uses warm fluorescent light as the assumed scene
8286illumination for white balance.<wbr/></p>
8287<p>While the exact white balance transforms are up to the
8288camera device,<wbr/> they will approximately match the CIE
8289standard illuminant F4.<wbr/></p>
8290<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
8291and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
8292For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
8293values used by the camera device for the transform and gains
8294will be available in the capture result for this request.<wbr/></p></span>
8295                  </li>
8296                  <li>
8297                    <span class="entry_type_enum_name">DAYLIGHT (v3.2)</span>
8298                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
8299the camera device uses daylight light as the assumed scene
8300illumination for white balance.<wbr/></p>
8301<p>While the exact white balance transforms are up to the
8302camera device,<wbr/> they will approximately match the CIE
8303standard illuminant D65.<wbr/></p>
8304<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
8305and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
8306For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
8307values used by the camera device for the transform and gains
8308will be available in the capture result for this request.<wbr/></p></span>
8309                  </li>
8310                  <li>
8311                    <span class="entry_type_enum_name">CLOUDY_DAYLIGHT (v3.2)</span>
8312                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
8313the camera device uses cloudy daylight light as the assumed scene
8314illumination for white balance.<wbr/></p>
8315<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
8316and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
8317For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
8318values used by the camera device for the transform and gains
8319will be available in the capture result for this request.<wbr/></p></span>
8320                  </li>
8321                  <li>
8322                    <span class="entry_type_enum_name">TWILIGHT (v3.2)</span>
8323                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
8324the camera device uses twilight light as the assumed scene
8325illumination for white balance.<wbr/></p>
8326<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
8327and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
8328For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
8329values used by the camera device for the transform and gains
8330will be available in the capture result for this request.<wbr/></p></span>
8331                  </li>
8332                  <li>
8333                    <span class="entry_type_enum_name">SHADE (v3.2)</span>
8334                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
8335the camera device uses shade light as the assumed scene
8336illumination for white balance.<wbr/></p>
8337<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
8338and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
8339For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
8340values used by the camera device for the transform and gains
8341will be available in the capture result for this request.<wbr/></p></span>
8342                  </li>
8343                </ul>
8344
8345            </td> <!-- entry_type -->
8346
8347            <td class="entry_description">
8348              <p>Whether auto-white balance (AWB) is currently setting the color
8349transform fields,<wbr/> and what its illumination target
8350is.<wbr/></p>
8351            </td>
8352
8353            <td class="entry_units">
8354            </td>
8355
8356            <td class="entry_range">
8357              <p><a href="#static_android.control.awbAvailableModes">android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes</a></p>
8358            </td>
8359
8360            <td class="entry_hal_version">
8361              <p>3.<wbr/>2</p>
8362            </td>
8363
8364            <td class="entry_tags">
8365              <ul class="entry_tags">
8366                  <li><a href="#tag_BC">BC</a></li>
8367              </ul>
8368            </td>
8369
8370          </tr>
8371          <tr class="entries_header">
8372            <th class="th_details" colspan="6">Details</th>
8373          </tr>
8374          <tr class="entry_cont">
8375            <td class="entry_details" colspan="6">
8376              <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is AUTO.<wbr/></p>
8377<p>When set to the ON mode,<wbr/> the camera device's auto-white balance
8378routine is enabled,<wbr/> overriding the application's selected
8379<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
8380<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>
8381is OFF,<wbr/> the behavior of AWB is device dependent.<wbr/> It is recommened to
8382also 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
8383setting AE mode to OFF.<wbr/></p>
8384<p>When set to the OFF mode,<wbr/> the camera device's auto-white balance
8385routine is disabled.<wbr/> The application manually controls the white
8386balance 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>
8387and <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/></p>
8388<p>When set to any other modes,<wbr/> the camera device's auto-white
8389balance routine is disabled.<wbr/> The camera device uses each
8390particular illumination target for white balance
8391adjustment.<wbr/> The application's values for
8392<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>,<wbr/>
8393<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
8394<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> are ignored.<wbr/></p>
8395            </td>
8396          </tr>
8397
8398
8399          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
8400           <!-- end of entry -->
8401
8402
8403          <tr class="entry" id="dynamic_android.control.awbRegions">
8404            <td class="entry_name
8405             " rowspan="5">
8406              android.<wbr/>control.<wbr/>awb<wbr/>Regions
8407            </td>
8408            <td class="entry_type">
8409                <span class="entry_type_name">int32</span>
8410                <span class="entry_type_container">x</span>
8411
8412                <span class="entry_type_array">
8413                  5 x area_count
8414                </span>
8415              <span class="entry_type_visibility"> [public as meteringRectangle]</span>
8416
8417
8418
8419
8420
8421
8422            </td> <!-- entry_type -->
8423
8424            <td class="entry_description">
8425              <p>List of metering areas to use for auto-white-balance illuminant
8426estimation.<wbr/></p>
8427            </td>
8428
8429            <td class="entry_units">
8430              Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size or
8431            android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size depending on
8432            distortion correction capability and mode
8433            </td>
8434
8435            <td class="entry_range">
8436              <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
8437<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>
8438depending on distortion correction capability and mode</p>
8439            </td>
8440
8441            <td class="entry_hal_version">
8442              <p>3.<wbr/>2</p>
8443            </td>
8444
8445            <td class="entry_tags">
8446              <ul class="entry_tags">
8447                  <li><a href="#tag_BC">BC</a></li>
8448              </ul>
8449            </td>
8450
8451          </tr>
8452          <tr class="entries_header">
8453            <th class="th_details" colspan="6">Details</th>
8454          </tr>
8455          <tr class="entry_cont">
8456            <td class="entry_details" colspan="6">
8457              <p>Not available if <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a> is 0.<wbr/>
8458Otherwise will always be present.<wbr/></p>
8459<p>The maximum number of regions supported by the device is determined by the value
8460of <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a>.<wbr/></p>
8461<p>For devices not supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate
8462system 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
8463the top-left pixel in the active pixel array,<wbr/> and
8464(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
8465<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
8466active pixel array.<wbr/></p>
8467<p>For devices supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate
8468system depends on the mode being set.<wbr/>
8469When the distortion correction mode is OFF,<wbr/> the coordinate system follows
8470<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
8471<code>(0,<wbr/> 0)</code> being the top-left pixel of the pre-correction active array,<wbr/> and
8472(<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/>
8473<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
8474pixel in the pre-correction active pixel array.<wbr/>
8475When the distortion correction mode is not OFF,<wbr/> the coordinate system follows
8476<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> with
8477<code>(0,<wbr/> 0)</code> being the top-left pixel of the active array,<wbr/> and
8478(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
8479<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
8480active pixel array.<wbr/></p>
8481<p>The weight must range from 0 to 1000,<wbr/> and represents a weight
8482for every pixel in the area.<wbr/> This means that a large metering area
8483with the same weight as a smaller area will have more effect in
8484the metering result.<wbr/> Metering areas can partially overlap and the
8485camera device will add the weights in the overlap region.<wbr/></p>
8486<p>The weights are relative to weights of other white balance metering regions,<wbr/> so if
8487only one region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with
84880 weight is ignored.<wbr/></p>
8489<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
8490camera device.<wbr/></p>
8491<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
8492capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
8493region and output only the intersection rectangle as the metering region in the result
8494metadata.<wbr/>  If the region is entirely outside the crop region,<wbr/> it will be ignored and
8495not reported in the result metadata.<wbr/></p>
8496            </td>
8497          </tr>
8498
8499          <tr class="entries_header">
8500            <th class="th_details" colspan="6">HAL Implementation Details</th>
8501          </tr>
8502          <tr class="entry_cont">
8503            <td class="entry_details" colspan="6">
8504              <p>The HAL level representation of MeteringRectangle[] is a
8505int[5 * area_<wbr/>count].<wbr/>
8506Every five elements represent a metering region of
8507(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
8508The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
8509exclusive on xmax and ymax.<wbr/>
8510HAL must always report metering regions in the coordinate system of pre-correction
8511active array.<wbr/></p>
8512            </td>
8513          </tr>
8514
8515          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
8516           <!-- end of entry -->
8517
8518
8519          <tr class="entry" id="dynamic_android.control.captureIntent">
8520            <td class="entry_name
8521             " rowspan="3">
8522              android.<wbr/>control.<wbr/>capture<wbr/>Intent
8523            </td>
8524            <td class="entry_type">
8525                <span class="entry_type_name entry_type_name_enum">byte</span>
8526
8527              <span class="entry_type_visibility"> [public]</span>
8528
8529
8530              <span class="entry_type_hwlevel">[legacy] </span>
8531
8532
8533
8534                <ul class="entry_type_enum">
8535                  <li>
8536                    <span class="entry_type_enum_name">CUSTOM (v3.2)</span>
8537                    <span class="entry_type_enum_notes"><p>The goal of this request doesn't fall into the other
8538categories.<wbr/> The camera device will default to preview-like
8539behavior.<wbr/></p></span>
8540                  </li>
8541                  <li>
8542                    <span class="entry_type_enum_name">PREVIEW (v3.2)</span>
8543                    <span class="entry_type_enum_notes"><p>This request is for a preview-like use case.<wbr/></p>
8544<p>The precapture trigger may be used to start off a metering
8545w/<wbr/>flash sequence.<wbr/></p></span>
8546                  </li>
8547                  <li>
8548                    <span class="entry_type_enum_name">STILL_CAPTURE (v3.2)</span>
8549                    <span class="entry_type_enum_notes"><p>This request is for a still capture-type
8550use case.<wbr/></p>
8551<p>If the flash unit is under automatic control,<wbr/> it may fire as needed.<wbr/></p></span>
8552                  </li>
8553                  <li>
8554                    <span class="entry_type_enum_name">VIDEO_RECORD (v3.2)</span>
8555                    <span class="entry_type_enum_notes"><p>This request is for a video recording
8556use case.<wbr/></p></span>
8557                  </li>
8558                  <li>
8559                    <span class="entry_type_enum_name">VIDEO_SNAPSHOT (v3.2)</span>
8560                    <span class="entry_type_enum_notes"><p>This request is for a video snapshot (still
8561image while recording video) use case.<wbr/></p>
8562<p>The camera device should take the highest-quality image
8563possible (given the other settings) without disrupting the
8564frame rate of video recording.<wbr/>  </p></span>
8565                  </li>
8566                  <li>
8567                    <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span>
8568                    <span class="entry_type_enum_notes"><p>This request is for a ZSL usecase; the
8569application will stream full-resolution images and
8570reprocess one or several later for a final
8571capture.<wbr/></p></span>
8572                  </li>
8573                  <li>
8574                    <span class="entry_type_enum_name">MANUAL (v3.2)</span>
8575                    <span class="entry_type_enum_notes"><p>This request is for manual capture use case where
8576the applications want to directly control the capture parameters.<wbr/></p>
8577<p>For example,<wbr/> the application may wish to manually control
8578<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>
8579                  </li>
8580                  <li>
8581                    <span class="entry_type_enum_name">MOTION_TRACKING (v3.3)</span>
8582                    <span class="entry_type_enum_notes"><p>This request is for a motion tracking use case,<wbr/> where
8583the application will use camera and inertial sensor data to
8584locate and track objects in the world.<wbr/></p>
8585<p>The camera device auto-exposure routine will limit the exposure time
8586of the camera to no more than 20 milliseconds,<wbr/> to minimize motion blur.<wbr/></p></span>
8587                  </li>
8588                </ul>
8589
8590            </td> <!-- entry_type -->
8591
8592            <td class="entry_description">
8593              <p>Information to the camera device 3A (auto-exposure,<wbr/>
8594auto-focus,<wbr/> auto-white balance) routines about the purpose
8595of this capture,<wbr/> to help the camera device to decide optimal 3A
8596strategy.<wbr/></p>
8597            </td>
8598
8599            <td class="entry_units">
8600            </td>
8601
8602            <td class="entry_range">
8603            </td>
8604
8605            <td class="entry_hal_version">
8606              <p>3.<wbr/>2</p>
8607            </td>
8608
8609            <td class="entry_tags">
8610              <ul class="entry_tags">
8611                  <li><a href="#tag_BC">BC</a></li>
8612              </ul>
8613            </td>
8614
8615          </tr>
8616          <tr class="entries_header">
8617            <th class="th_details" colspan="6">Details</th>
8618          </tr>
8619          <tr class="entry_cont">
8620            <td class="entry_details" colspan="6">
8621              <p>This control (except for MANUAL) is only effective if
8622<code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF</code> and any 3A routine is active.<wbr/></p>
8623<p>All intents are supported by all devices,<wbr/> except that:
8624  * ZERO_<wbr/>SHUTTER_<wbr/>LAG will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
8625PRIVATE_<wbr/>REPROCESSING or YUV_<wbr/>REPROCESSING.<wbr/>
8626  * MANUAL will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
8627MANUAL_<wbr/>SENSOR.<wbr/>
8628  * MOTION_<wbr/>TRACKING will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
8629MOTION_<wbr/>TRACKING.<wbr/></p>
8630            </td>
8631          </tr>
8632
8633
8634          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
8635           <!-- end of entry -->
8636
8637
8638          <tr class="entry" id="dynamic_android.control.awbState">
8639            <td class="entry_name
8640             " rowspan="3">
8641              android.<wbr/>control.<wbr/>awb<wbr/>State
8642            </td>
8643            <td class="entry_type">
8644                <span class="entry_type_name entry_type_name_enum">byte</span>
8645
8646              <span class="entry_type_visibility"> [public]</span>
8647
8648
8649              <span class="entry_type_hwlevel">[limited] </span>
8650
8651
8652
8653                <ul class="entry_type_enum">
8654                  <li>
8655                    <span class="entry_type_enum_name">INACTIVE (v3.2)</span>
8656                    <span class="entry_type_enum_notes"><p>AWB is not in auto mode,<wbr/> or has not yet started metering.<wbr/></p>
8657<p>When a camera device is opened,<wbr/> it starts in this
8658state.<wbr/> This is a transient state,<wbr/> the camera device may
8659skip reporting this state in capture
8660result.<wbr/></p></span>
8661                  </li>
8662                  <li>
8663                    <span class="entry_type_enum_name">SEARCHING (v3.2)</span>
8664                    <span class="entry_type_enum_notes"><p>AWB doesn't yet have a good set of control
8665values for the current scene.<wbr/></p>
8666<p>This is a transient state,<wbr/> the camera device
8667may skip reporting this state in capture result.<wbr/></p></span>
8668                  </li>
8669                  <li>
8670                    <span class="entry_type_enum_name">CONVERGED (v3.2)</span>
8671                    <span class="entry_type_enum_notes"><p>AWB has a good set of control values for the
8672current scene.<wbr/></p></span>
8673                  </li>
8674                  <li>
8675                    <span class="entry_type_enum_name">LOCKED (v3.2)</span>
8676                    <span class="entry_type_enum_notes"><p>AWB has been locked.<wbr/></p></span>
8677                  </li>
8678                </ul>
8679
8680            </td> <!-- entry_type -->
8681
8682            <td class="entry_description">
8683              <p>Current state of auto-white balance (AWB) algorithm.<wbr/></p>
8684            </td>
8685
8686            <td class="entry_units">
8687            </td>
8688
8689            <td class="entry_range">
8690            </td>
8691
8692            <td class="entry_hal_version">
8693              <p>3.<wbr/>2</p>
8694            </td>
8695
8696            <td class="entry_tags">
8697            </td>
8698
8699          </tr>
8700          <tr class="entries_header">
8701            <th class="th_details" colspan="6">Details</th>
8702          </tr>
8703          <tr class="entry_cont">
8704            <td class="entry_details" colspan="6">
8705              <p>Switching between or enabling AWB modes (<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>) always
8706resets the AWB state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/>
8707or <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
8708the algorithm states to INACTIVE.<wbr/></p>
8709<p>The camera device can do several state transitions between two results,<wbr/> if it is
8710allowed by the state transition table.<wbr/> So INACTIVE may never actually be seen in
8711a result.<wbr/></p>
8712<p>The state in the result is the state for this image (in sync with this image): if
8713AWB state becomes CONVERGED,<wbr/> then the image data associated with this result should
8714be good to use.<wbr/></p>
8715<p>Below are state transition tables for different AWB modes.<wbr/></p>
8716<p>When <code><a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> != AWB_<wbr/>MODE_<wbr/>AUTO</code>:</p>
8717<table>
8718<thead>
8719<tr>
8720<th align="center">State</th>
8721<th align="center">Transition Cause</th>
8722<th align="center">New State</th>
8723<th align="center">Notes</th>
8724</tr>
8725</thead>
8726<tbody>
8727<tr>
8728<td align="center">INACTIVE</td>
8729<td align="center"></td>
8730<td align="center">INACTIVE</td>
8731<td align="center">Camera device auto white balance algorithm is disabled</td>
8732</tr>
8733</tbody>
8734</table>
8735<p>When <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is AWB_<wbr/>MODE_<wbr/>AUTO:</p>
8736<table>
8737<thead>
8738<tr>
8739<th align="center">State</th>
8740<th align="center">Transition Cause</th>
8741<th align="center">New State</th>
8742<th align="center">Notes</th>
8743</tr>
8744</thead>
8745<tbody>
8746<tr>
8747<td align="center">INACTIVE</td>
8748<td align="center">Camera device initiates AWB scan</td>
8749<td align="center">SEARCHING</td>
8750<td align="center">Values changing</td>
8751</tr>
8752<tr>
8753<td align="center">INACTIVE</td>
8754<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td>
8755<td align="center">LOCKED</td>
8756<td align="center">Values locked</td>
8757</tr>
8758<tr>
8759<td align="center">SEARCHING</td>
8760<td align="center">Camera device finishes AWB scan</td>
8761<td align="center">CONVERGED</td>
8762<td align="center">Good values,<wbr/> not changing</td>
8763</tr>
8764<tr>
8765<td align="center">SEARCHING</td>
8766<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td>
8767<td align="center">LOCKED</td>
8768<td align="center">Values locked</td>
8769</tr>
8770<tr>
8771<td align="center">CONVERGED</td>
8772<td align="center">Camera device initiates AWB scan</td>
8773<td align="center">SEARCHING</td>
8774<td align="center">Values changing</td>
8775</tr>
8776<tr>
8777<td align="center">CONVERGED</td>
8778<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td>
8779<td align="center">LOCKED</td>
8780<td align="center">Values locked</td>
8781</tr>
8782<tr>
8783<td align="center">LOCKED</td>
8784<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is OFF</td>
8785<td align="center">SEARCHING</td>
8786<td align="center">Values not good after unlock</td>
8787</tr>
8788</tbody>
8789</table>
8790<p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen
8791without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that
8792can be skipped in that manner is called a transient state.<wbr/></p>
8793<p>For example,<wbr/> for this AWB mode (AWB_<wbr/>MODE_<wbr/>AUTO),<wbr/> in addition to the state transitions
8794listed in above table,<wbr/> it is also legal for the camera device to skip one or more
8795transient states between two results.<wbr/> See below table for examples:</p>
8796<table>
8797<thead>
8798<tr>
8799<th align="center">State</th>
8800<th align="center">Transition Cause</th>
8801<th align="center">New State</th>
8802<th align="center">Notes</th>
8803</tr>
8804</thead>
8805<tbody>
8806<tr>
8807<td align="center">INACTIVE</td>
8808<td align="center">Camera device finished AWB scan</td>
8809<td align="center">CONVERGED</td>
8810<td align="center">Values are already good,<wbr/> transient states are skipped by camera device.<wbr/></td>
8811</tr>
8812<tr>
8813<td align="center">LOCKED</td>
8814<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is OFF</td>
8815<td align="center">CONVERGED</td>
8816<td align="center">Values good after unlock,<wbr/> transient states are skipped by camera device.<wbr/></td>
8817</tr>
8818</tbody>
8819</table>
8820            </td>
8821          </tr>
8822
8823
8824          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
8825           <!-- end of entry -->
8826
8827
8828          <tr class="entry" id="dynamic_android.control.effectMode">
8829            <td class="entry_name
8830             " rowspan="3">
8831              android.<wbr/>control.<wbr/>effect<wbr/>Mode
8832            </td>
8833            <td class="entry_type">
8834                <span class="entry_type_name entry_type_name_enum">byte</span>
8835
8836              <span class="entry_type_visibility"> [public]</span>
8837
8838
8839              <span class="entry_type_hwlevel">[legacy] </span>
8840
8841
8842
8843                <ul class="entry_type_enum">
8844                  <li>
8845                    <span class="entry_type_enum_name">OFF (v3.2)</span>
8846                    <span class="entry_type_enum_notes"><p>No color effect will be applied.<wbr/></p></span>
8847                  </li>
8848                  <li>
8849                    <span class="entry_type_enum_name">MONO (v3.2)</span>
8850                    <span class="entry_type_enum_optional">[optional]</span>
8851                    <span class="entry_type_enum_notes"><p>A "monocolor" effect where the image is mapped into
8852a single color.<wbr/></p>
8853<p>This will typically be grayscale.<wbr/></p></span>
8854                  </li>
8855                  <li>
8856                    <span class="entry_type_enum_name">NEGATIVE (v3.2)</span>
8857                    <span class="entry_type_enum_optional">[optional]</span>
8858                    <span class="entry_type_enum_notes"><p>A "photo-negative" effect where the image's colors
8859are inverted.<wbr/></p></span>
8860                  </li>
8861                  <li>
8862                    <span class="entry_type_enum_name">SOLARIZE (v3.2)</span>
8863                    <span class="entry_type_enum_optional">[optional]</span>
8864                    <span class="entry_type_enum_notes"><p>A "solarisation" effect (Sabattier effect) where the
8865image is wholly or partially reversed in
8866tone.<wbr/></p></span>
8867                  </li>
8868                  <li>
8869                    <span class="entry_type_enum_name">SEPIA (v3.2)</span>
8870                    <span class="entry_type_enum_optional">[optional]</span>
8871                    <span class="entry_type_enum_notes"><p>A "sepia" effect where the image is mapped into warm
8872gray,<wbr/> red,<wbr/> and brown tones.<wbr/></p></span>
8873                  </li>
8874                  <li>
8875                    <span class="entry_type_enum_name">POSTERIZE (v3.2)</span>
8876                    <span class="entry_type_enum_optional">[optional]</span>
8877                    <span class="entry_type_enum_notes"><p>A "posterization" effect where the image uses
8878discrete regions of tone rather than a continuous
8879gradient of tones.<wbr/></p></span>
8880                  </li>
8881                  <li>
8882                    <span class="entry_type_enum_name">WHITEBOARD (v3.2)</span>
8883                    <span class="entry_type_enum_optional">[optional]</span>
8884                    <span class="entry_type_enum_notes"><p>A "whiteboard" effect where the image is typically displayed
8885as regions of white,<wbr/> with black or grey details.<wbr/></p></span>
8886                  </li>
8887                  <li>
8888                    <span class="entry_type_enum_name">BLACKBOARD (v3.2)</span>
8889                    <span class="entry_type_enum_optional">[optional]</span>
8890                    <span class="entry_type_enum_notes"><p>A "blackboard" effect where the image is typically displayed
8891as regions of black,<wbr/> with white or grey details.<wbr/></p></span>
8892                  </li>
8893                  <li>
8894                    <span class="entry_type_enum_name">AQUA (v3.2)</span>
8895                    <span class="entry_type_enum_optional">[optional]</span>
8896                    <span class="entry_type_enum_notes"><p>An "aqua" effect where a blue hue is added to the image.<wbr/></p></span>
8897                  </li>
8898                </ul>
8899
8900            </td> <!-- entry_type -->
8901
8902            <td class="entry_description">
8903              <p>A special color effect to apply.<wbr/></p>
8904            </td>
8905
8906            <td class="entry_units">
8907            </td>
8908
8909            <td class="entry_range">
8910              <p><a href="#static_android.control.availableEffects">android.<wbr/>control.<wbr/>available<wbr/>Effects</a></p>
8911            </td>
8912
8913            <td class="entry_hal_version">
8914              <p>3.<wbr/>2</p>
8915            </td>
8916
8917            <td class="entry_tags">
8918              <ul class="entry_tags">
8919                  <li><a href="#tag_BC">BC</a></li>
8920              </ul>
8921            </td>
8922
8923          </tr>
8924          <tr class="entries_header">
8925            <th class="th_details" colspan="6">Details</th>
8926          </tr>
8927          <tr class="entry_cont">
8928            <td class="entry_details" colspan="6">
8929              <p>When this mode is set,<wbr/> a color effect will be applied
8930to images produced by the camera device.<wbr/> The interpretation
8931and implementation of these color effects is left to the
8932implementor of the camera device,<wbr/> and should not be
8933depended on to be consistent (or present) across all
8934devices.<wbr/></p>
8935            </td>
8936          </tr>
8937
8938
8939          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
8940           <!-- end of entry -->
8941
8942
8943          <tr class="entry" id="dynamic_android.control.mode">
8944            <td class="entry_name
8945             " rowspan="3">
8946              android.<wbr/>control.<wbr/>mode
8947            </td>
8948            <td class="entry_type">
8949                <span class="entry_type_name entry_type_name_enum">byte</span>
8950
8951              <span class="entry_type_visibility"> [public]</span>
8952
8953
8954              <span class="entry_type_hwlevel">[legacy] </span>
8955
8956
8957
8958                <ul class="entry_type_enum">
8959                  <li>
8960                    <span class="entry_type_enum_name">OFF (v3.2)</span>
8961                    <span class="entry_type_enum_notes"><p>Full application control of pipeline.<wbr/></p>
8962<p>All control by the device's metering and focusing (3A)
8963routines is disabled,<wbr/> and no other settings in
8964android.<wbr/>control.<wbr/>* have any effect,<wbr/> except that
8965<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> may be used by the camera
8966device to select post-processing values for processing
8967blocks that do not allow for manual control,<wbr/> or are not
8968exposed by the camera API.<wbr/></p>
8969<p>However,<wbr/> the camera device's 3A routines may continue to
8970collect statistics and update their internal state so that
8971when control is switched to AUTO mode,<wbr/> good control values
8972can be immediately applied.<wbr/></p></span>
8973                  </li>
8974                  <li>
8975                    <span class="entry_type_enum_name">AUTO (v3.2)</span>
8976                    <span class="entry_type_enum_notes"><p>Use settings for each individual 3A routine.<wbr/></p>
8977<p>Manual control of capture parameters is disabled.<wbr/> All
8978controls in android.<wbr/>control.<wbr/>* besides sceneMode take
8979effect.<wbr/></p></span>
8980                  </li>
8981                  <li>
8982                    <span class="entry_type_enum_name">USE_SCENE_MODE (v3.2)</span>
8983                    <span class="entry_type_enum_optional">[optional]</span>
8984                    <span class="entry_type_enum_notes"><p>Use a specific scene mode.<wbr/></p>
8985<p>Enabling this disables control.<wbr/>aeMode,<wbr/> control.<wbr/>awbMode and
8986control.<wbr/>afMode controls; the camera device will ignore
8987those settings while USE_<wbr/>SCENE_<wbr/>MODE is active (except for
8988FACE_<wbr/>PRIORITY scene mode).<wbr/> Other control entries are still active.<wbr/>
8989This setting can only be used if scene mode is supported (i.<wbr/>e.<wbr/>
8990<a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a>
8991contain some modes other than DISABLED).<wbr/></p></span>
8992                  </li>
8993                  <li>
8994                    <span class="entry_type_enum_name">OFF_KEEP_STATE (v3.2)</span>
8995                    <span class="entry_type_enum_optional">[optional]</span>
8996                    <span class="entry_type_enum_notes"><p>Same as OFF mode,<wbr/> except that this capture will not be
8997used by camera device background auto-exposure,<wbr/> auto-white balance and
8998auto-focus algorithms (3A) to update their statistics.<wbr/></p>
8999<p>Specifically,<wbr/> the 3A routines are locked to the last
9000values set from a request with AUTO,<wbr/> OFF,<wbr/> or
9001USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> and any statistics or state updates
9002collected from manual captures with OFF_<wbr/>KEEP_<wbr/>STATE will be
9003discarded by the camera device.<wbr/></p></span>
9004                  </li>
9005                </ul>
9006
9007            </td> <!-- entry_type -->
9008
9009            <td class="entry_description">
9010              <p>Overall mode of 3A (auto-exposure,<wbr/> auto-white-balance,<wbr/> auto-focus) control
9011routines.<wbr/></p>
9012            </td>
9013
9014            <td class="entry_units">
9015            </td>
9016
9017            <td class="entry_range">
9018              <p><a href="#static_android.control.availableModes">android.<wbr/>control.<wbr/>available<wbr/>Modes</a></p>
9019            </td>
9020
9021            <td class="entry_hal_version">
9022              <p>3.<wbr/>2</p>
9023            </td>
9024
9025            <td class="entry_tags">
9026              <ul class="entry_tags">
9027                  <li><a href="#tag_BC">BC</a></li>
9028              </ul>
9029            </td>
9030
9031          </tr>
9032          <tr class="entries_header">
9033            <th class="th_details" colspan="6">Details</th>
9034          </tr>
9035          <tr class="entry_cont">
9036            <td class="entry_details" colspan="6">
9037              <p>This is a top-level 3A control switch.<wbr/> When set to OFF,<wbr/> all 3A control
9038by the camera device is disabled.<wbr/> The application must set the fields for
9039capture parameters itself.<wbr/></p>
9040<p>When set to AUTO,<wbr/> the individual algorithm controls in
9041android.<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>
9042<p>When set to USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> the individual controls in
9043android.<wbr/>control.<wbr/>* are mostly disabled,<wbr/> and the camera device
9044implements one of the scene mode settings (such as ACTION,<wbr/>
9045SUNSET,<wbr/> or PARTY) as it wishes.<wbr/> The camera device scene mode
90463A settings are provided by <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">capture results</a>.<wbr/></p>
9047<p>When set to OFF_<wbr/>KEEP_<wbr/>STATE,<wbr/> it is similar to OFF mode,<wbr/> the only difference
9048is that this frame will not be used by camera device background 3A statistics
9049update,<wbr/> as if this frame is never captured.<wbr/> This mode can be used in the scenario
9050where the application doesn't want a 3A manual control capture to affect
9051the subsequent auto 3A capture results.<wbr/></p>
9052            </td>
9053          </tr>
9054
9055
9056          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9057           <!-- end of entry -->
9058
9059
9060          <tr class="entry" id="dynamic_android.control.sceneMode">
9061            <td class="entry_name
9062             " rowspan="5">
9063              android.<wbr/>control.<wbr/>scene<wbr/>Mode
9064            </td>
9065            <td class="entry_type">
9066                <span class="entry_type_name entry_type_name_enum">byte</span>
9067
9068              <span class="entry_type_visibility"> [public]</span>
9069
9070
9071              <span class="entry_type_hwlevel">[legacy] </span>
9072
9073
9074
9075                <ul class="entry_type_enum">
9076                  <li>
9077                    <span class="entry_type_enum_name">DISABLED (v3.2)</span>
9078                    <span class="entry_type_enum_value">0</span>
9079                    <span class="entry_type_enum_notes"><p>Indicates that no scene modes are set for a given capture request.<wbr/></p></span>
9080                  </li>
9081                  <li>
9082                    <span class="entry_type_enum_name">FACE_PRIORITY (v3.2)</span>
9083                    <span class="entry_type_enum_notes"><p>If face detection support exists,<wbr/> use face
9084detection data for auto-focus,<wbr/> auto-white balance,<wbr/> and
9085auto-exposure routines.<wbr/></p>
9086<p>If face detection statistics are disabled
9087(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/>
9088this should still operate correctly (but will not return
9089face detection statistics to the framework).<wbr/></p>
9090<p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
9091<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>
9092remain active when FACE_<wbr/>PRIORITY is set.<wbr/></p></span>
9093                  </li>
9094                  <li>
9095                    <span class="entry_type_enum_name">ACTION (v3.2)</span>
9096                    <span class="entry_type_enum_optional">[optional]</span>
9097                    <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving objects.<wbr/></p>
9098<p>Similar to SPORTS.<wbr/></p></span>
9099                  </li>
9100                  <li>
9101                    <span class="entry_type_enum_name">PORTRAIT (v3.2)</span>
9102                    <span class="entry_type_enum_optional">[optional]</span>
9103                    <span class="entry_type_enum_notes"><p>Optimized for still photos of people.<wbr/></p></span>
9104                  </li>
9105                  <li>
9106                    <span class="entry_type_enum_name">LANDSCAPE (v3.2)</span>
9107                    <span class="entry_type_enum_optional">[optional]</span>
9108                    <span class="entry_type_enum_notes"><p>Optimized for photos of distant macroscopic objects.<wbr/></p></span>
9109                  </li>
9110                  <li>
9111                    <span class="entry_type_enum_name">NIGHT (v3.2)</span>
9112                    <span class="entry_type_enum_optional">[optional]</span>
9113                    <span class="entry_type_enum_notes"><p>Optimized for low-light settings.<wbr/></p></span>
9114                  </li>
9115                  <li>
9116                    <span class="entry_type_enum_name">NIGHT_PORTRAIT (v3.2)</span>
9117                    <span class="entry_type_enum_optional">[optional]</span>
9118                    <span class="entry_type_enum_notes"><p>Optimized for still photos of people in low-light
9119settings.<wbr/></p></span>
9120                  </li>
9121                  <li>
9122                    <span class="entry_type_enum_name">THEATRE (v3.2)</span>
9123                    <span class="entry_type_enum_optional">[optional]</span>
9124                    <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings where flash must
9125remain off.<wbr/></p></span>
9126                  </li>
9127                  <li>
9128                    <span class="entry_type_enum_name">BEACH (v3.2)</span>
9129                    <span class="entry_type_enum_optional">[optional]</span>
9130                    <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor beach settings.<wbr/></p></span>
9131                  </li>
9132                  <li>
9133                    <span class="entry_type_enum_name">SNOW (v3.2)</span>
9134                    <span class="entry_type_enum_optional">[optional]</span>
9135                    <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor settings containing snow.<wbr/></p></span>
9136                  </li>
9137                  <li>
9138                    <span class="entry_type_enum_name">SUNSET (v3.2)</span>
9139                    <span class="entry_type_enum_optional">[optional]</span>
9140                    <span class="entry_type_enum_notes"><p>Optimized for scenes of the setting sun.<wbr/></p></span>
9141                  </li>
9142                  <li>
9143                    <span class="entry_type_enum_name">STEADYPHOTO (v3.2)</span>
9144                    <span class="entry_type_enum_optional">[optional]</span>
9145                    <span class="entry_type_enum_notes"><p>Optimized to avoid blurry photos due to small amounts of
9146device motion (for example: due to hand shake).<wbr/></p></span>
9147                  </li>
9148                  <li>
9149                    <span class="entry_type_enum_name">FIREWORKS (v3.2)</span>
9150                    <span class="entry_type_enum_optional">[optional]</span>
9151                    <span class="entry_type_enum_notes"><p>Optimized for nighttime photos of fireworks.<wbr/></p></span>
9152                  </li>
9153                  <li>
9154                    <span class="entry_type_enum_name">SPORTS (v3.2)</span>
9155                    <span class="entry_type_enum_optional">[optional]</span>
9156                    <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving people.<wbr/></p>
9157<p>Similar to ACTION.<wbr/></p></span>
9158                  </li>
9159                  <li>
9160                    <span class="entry_type_enum_name">PARTY (v3.2)</span>
9161                    <span class="entry_type_enum_optional">[optional]</span>
9162                    <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings with multiple moving
9163people.<wbr/></p></span>
9164                  </li>
9165                  <li>
9166                    <span class="entry_type_enum_name">CANDLELIGHT (v3.2)</span>
9167                    <span class="entry_type_enum_optional">[optional]</span>
9168                    <span class="entry_type_enum_notes"><p>Optimized for dim settings where the main light source
9169is a candle.<wbr/></p></span>
9170                  </li>
9171                  <li>
9172                    <span class="entry_type_enum_name">BARCODE (v3.2)</span>
9173                    <span class="entry_type_enum_optional">[optional]</span>
9174                    <span class="entry_type_enum_notes"><p>Optimized for accurately capturing a photo of barcode
9175for use by camera applications that wish to read the
9176barcode value.<wbr/></p></span>
9177                  </li>
9178                  <li>
9179                    <span class="entry_type_enum_name">HIGH_SPEED_VIDEO (v3.2)</span>
9180                    <span class="entry_type_enum_deprecated">[deprecated]</span>
9181                    <span class="entry_type_enum_optional">[optional]</span>
9182                    <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>
9183and <a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a>
9184for high speed video recording.<wbr/></p>
9185<p>Optimized for high speed video recording (frame rate &gt;=60fps) use case.<wbr/></p>
9186<p>The supported high speed video sizes and fps ranges are specified in
9187<a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/> To get desired
9188output frame rates,<wbr/> the application is only allowed to select video size
9189and fps range combinations listed in this static metadata.<wbr/> The fps range
9190can be control via <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a>.<wbr/></p>
9191<p>In this mode,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to
9192ON,<wbr/> ON,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode
9193controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture
9194and post-processing parameters is possible.<wbr/> All other controls operate the
9195same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other
9196android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p>
9197<ul>
9198<li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li>
9199<li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li>
9200<li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li>
9201<li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li>
9202<li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li>
9203<li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li>
9204<li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li>
9205<li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li>
9206<li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li>
9207<li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li>
9208</ul>
9209<p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p>
9210<ul>
9211<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>
9212<li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li>
9213<li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li>
9214<li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></li>
9215</ul>
9216<p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may
9217be lower than what camera can output,<wbr/> depending on the destination Surfaces for
9218the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/>
9219the application need check if the video encoder is capable of supporting the
9220high frame rate for a given video size,<wbr/> or it will end up with lower recording
9221frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the preview frame
9222rate will be bounded by the screen refresh rate.<wbr/></p>
9223<p>The camera device will only support up to 2 output high speed streams
9224(processed non-stalling format defined in <a href="#static_android.request.maxNumOutputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams</a>)
9225in this mode.<wbr/> This control will be effective only if all of below conditions are true:</p>
9226<ul>
9227<li>The application created no more than maxNumHighSpeedStreams processed non-stalling
9228format output streams,<wbr/> where maxNumHighSpeedStreams is calculated as
9229min(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>
9230<li>The stream sizes are selected from the sizes reported by
9231<a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/></li>
9232<li>No processed non-stalling or raw streams are configured.<wbr/></li>
9233</ul>
9234<p>When above conditions are NOT satistied,<wbr/> the controls of this mode and
9235<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/>
9236the camera device will fall back to <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> <code>==</code> AUTO,<wbr/>
9237and the returned capture result metadata will give the fps range choosen
9238by the camera device.<wbr/></p>
9239<p>Switching into or out of this mode may trigger some camera ISP/<wbr/>sensor
9240reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that
9241the application avoids unnecessary scene mode switch as much as possible.<wbr/></p></span>
9242                  </li>
9243                  <li>
9244                    <span class="entry_type_enum_name">HDR (v3.2)</span>
9245                    <span class="entry_type_enum_optional">[optional]</span>
9246                    <span class="entry_type_enum_notes"><p>Turn on a device-specific high dynamic range (HDR) mode.<wbr/></p>
9247<p>In this scene mode,<wbr/> the camera device captures images
9248that keep a larger range of scene illumination levels
9249visible in the final image.<wbr/> For example,<wbr/> when taking a
9250picture of a object in front of a bright window,<wbr/> both
9251the object and the scene through the window may be
9252visible when using HDR mode,<wbr/> while in normal AUTO mode,<wbr/>
9253one or the other may be poorly exposed.<wbr/> As a tradeoff,<wbr/>
9254HDR mode generally takes much longer to capture a single
9255image,<wbr/> has no user control,<wbr/> and may have other artifacts
9256depending on the HDR method used.<wbr/></p>
9257<p>Therefore,<wbr/> HDR captures operate at a much slower rate
9258than regular captures.<wbr/></p>
9259<p>In this mode,<wbr/> on LIMITED or FULL devices,<wbr/> when a request
9260is made with a <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> of
9261STILL_<wbr/>CAPTURE,<wbr/> the camera device will capture an image
9262using a high dynamic range capture technique.<wbr/>  On LEGACY
9263devices,<wbr/> captures that target a JPEG-format output will
9264be captured with HDR,<wbr/> and the capture intent is not
9265relevant.<wbr/></p>
9266<p>The HDR capture may involve the device capturing a burst
9267of images internally and combining them into one,<wbr/> or it
9268may involve the device using specialized high dynamic
9269range capture hardware.<wbr/> In all cases,<wbr/> a single image is
9270produced in response to a capture request submitted
9271while in HDR mode.<wbr/></p>
9272<p>Since substantial post-processing is generally needed to
9273produce an HDR image,<wbr/> only YUV,<wbr/> PRIVATE,<wbr/> and JPEG
9274outputs are supported for LIMITED/<wbr/>FULL device HDR
9275captures,<wbr/> and only JPEG outputs are supported for LEGACY
9276HDR captures.<wbr/> Using a RAW output for HDR capture is not
9277supported.<wbr/></p>
9278<p>Some devices may also support always-on HDR,<wbr/> which
9279applies HDR processing at full frame rate.<wbr/>  For these
9280devices,<wbr/> intents other than STILL_<wbr/>CAPTURE will also
9281produce an HDR output with no frame rate impact compared
9282to normal operation,<wbr/> though the quality may be lower
9283than for STILL_<wbr/>CAPTURE intents.<wbr/></p>
9284<p>If SCENE_<wbr/>MODE_<wbr/>HDR is used with unsupported output types
9285or capture intents,<wbr/> the images captured will be as if
9286the SCENE_<wbr/>MODE was not enabled at all.<wbr/></p></span>
9287                  </li>
9288                  <li>
9289                    <span class="entry_type_enum_name">FACE_PRIORITY_LOW_LIGHT (v3.2)</span>
9290                    <span class="entry_type_enum_optional">[optional]</span>
9291                    <span class="entry_type_enum_hidden">[hidden]</span>
9292                    <span class="entry_type_enum_notes"><p>Same as FACE_<wbr/>PRIORITY scene mode,<wbr/> except that the camera
9293device will choose higher sensitivity values (<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>)
9294under low light conditions.<wbr/></p>
9295<p>The camera device may be tuned to expose the images in a reduced
9296sensitivity range to produce the best quality images.<wbr/> For example,<wbr/>
9297if 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/>
9298the camera device auto-exposure routine tuning process may limit the actual
9299exposure sensitivity range to [100,<wbr/> 1200] to ensure that the noise level isn't
9300exessive in order to preserve the image quality.<wbr/> Under this situation,<wbr/> the image under
9301low light may be under-exposed when the sensor max exposure time (bounded by the
9302<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
9303ON_<wbr/>* modes) and effective max sensitivity are reached.<wbr/> This scene mode allows the
9304camera device auto-exposure routine to increase the sensitivity up to the max
9305sensitivity specified by <a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a> when the scene is too
9306dark and the max exposure time is reached.<wbr/> The captured images may be noisier
9307compared with the images captured in normal FACE_<wbr/>PRIORITY mode; therefore,<wbr/> it is
9308recommended that the application only use this scene mode when it is capable of
9309reducing the noise level of the captured images.<wbr/></p>
9310<p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
9311<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>
9312remain active when FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT is set.<wbr/></p></span>
9313                  </li>
9314                  <li>
9315                    <span class="entry_type_enum_name">DEVICE_CUSTOM_START (v3.2)</span>
9316                    <span class="entry_type_enum_optional">[optional]</span>
9317                    <span class="entry_type_enum_hidden">[hidden]</span>
9318                    <span class="entry_type_enum_value">100</span>
9319                    <span class="entry_type_enum_notes"><p>Scene mode values within the range of
9320<code>[DEVICE_<wbr/>CUSTOM_<wbr/>START,<wbr/> DEVICE_<wbr/>CUSTOM_<wbr/>END]</code> are reserved for device specific
9321customized scene modes.<wbr/></p></span>
9322                  </li>
9323                  <li>
9324                    <span class="entry_type_enum_name">DEVICE_CUSTOM_END (v3.2)</span>
9325                    <span class="entry_type_enum_optional">[optional]</span>
9326                    <span class="entry_type_enum_hidden">[hidden]</span>
9327                    <span class="entry_type_enum_value">127</span>
9328                    <span class="entry_type_enum_notes"><p>Scene mode values within the range of
9329<code>[DEVICE_<wbr/>CUSTOM_<wbr/>START,<wbr/> DEVICE_<wbr/>CUSTOM_<wbr/>END]</code> are reserved for device specific
9330customized scene modes.<wbr/></p></span>
9331                  </li>
9332                </ul>
9333
9334            </td> <!-- entry_type -->
9335
9336            <td class="entry_description">
9337              <p>Control for which scene mode is currently active.<wbr/></p>
9338            </td>
9339
9340            <td class="entry_units">
9341            </td>
9342
9343            <td class="entry_range">
9344              <p><a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a></p>
9345            </td>
9346
9347            <td class="entry_hal_version">
9348              <p>3.<wbr/>2</p>
9349            </td>
9350
9351            <td class="entry_tags">
9352              <ul class="entry_tags">
9353                  <li><a href="#tag_BC">BC</a></li>
9354              </ul>
9355            </td>
9356
9357          </tr>
9358          <tr class="entries_header">
9359            <th class="th_details" colspan="6">Details</th>
9360          </tr>
9361          <tr class="entry_cont">
9362            <td class="entry_details" colspan="6">
9363              <p>Scene modes are custom camera modes optimized for a certain set of conditions and
9364capture settings.<wbr/></p>
9365<p>This is the mode that that is active when
9366<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
9367disable <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>
9368while in use.<wbr/></p>
9369<p>The interpretation and implementation of these scene modes is left
9370to the implementor of the camera device.<wbr/> Their behavior will not be
9371consistent across all devices,<wbr/> and any given device may only implement
9372a subset of these modes.<wbr/></p>
9373            </td>
9374          </tr>
9375
9376          <tr class="entries_header">
9377            <th class="th_details" colspan="6">HAL Implementation Details</th>
9378          </tr>
9379          <tr class="entry_cont">
9380            <td class="entry_details" colspan="6">
9381              <p>HAL implementations that include scene modes are expected to provide
9382the per-scene settings to use for <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
9383<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
9384<a href="#static_android.control.sceneModeOverrides">android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides</a>.<wbr/></p>
9385<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
9386HAL must list supported video size and fps range in
9387<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/>
9388if the HAL has two different sensor configurations for normal streaming mode and high
9389speed streaming,<wbr/> when this scene mode is set/<wbr/>reset in a sequence of capture requests,<wbr/> the
9390HAL may have to switch between different sensor modes.<wbr/>  This mode is deprecated in legacy
9391HAL3.<wbr/>3,<wbr/> to support high speed video recording,<wbr/> please implement
9392<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
9393capbility defined in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
9394            </td>
9395          </tr>
9396
9397          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9398           <!-- end of entry -->
9399
9400
9401          <tr class="entry" id="dynamic_android.control.videoStabilizationMode">
9402            <td class="entry_name
9403             " rowspan="3">
9404              android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode
9405            </td>
9406            <td class="entry_type">
9407                <span class="entry_type_name entry_type_name_enum">byte</span>
9408
9409              <span class="entry_type_visibility"> [public]</span>
9410
9411
9412              <span class="entry_type_hwlevel">[legacy] </span>
9413
9414
9415
9416                <ul class="entry_type_enum">
9417                  <li>
9418                    <span class="entry_type_enum_name">OFF (v3.2)</span>
9419                    <span class="entry_type_enum_notes"><p>Video stabilization is disabled.<wbr/></p></span>
9420                  </li>
9421                  <li>
9422                    <span class="entry_type_enum_name">ON (v3.2)</span>
9423                    <span class="entry_type_enum_notes"><p>Video stabilization is enabled.<wbr/></p></span>
9424                  </li>
9425                </ul>
9426
9427            </td> <!-- entry_type -->
9428
9429            <td class="entry_description">
9430              <p>Whether video stabilization is
9431active.<wbr/></p>
9432            </td>
9433
9434            <td class="entry_units">
9435            </td>
9436
9437            <td class="entry_range">
9438            </td>
9439
9440            <td class="entry_hal_version">
9441              <p>3.<wbr/>2</p>
9442            </td>
9443
9444            <td class="entry_tags">
9445              <ul class="entry_tags">
9446                  <li><a href="#tag_BC">BC</a></li>
9447              </ul>
9448            </td>
9449
9450          </tr>
9451          <tr class="entries_header">
9452            <th class="th_details" colspan="6">Details</th>
9453          </tr>
9454          <tr class="entry_cont">
9455            <td class="entry_details" colspan="6">
9456              <p>Video stabilization automatically warps images from
9457the camera in order to stabilize motion between consecutive frames.<wbr/></p>
9458<p>If enabled,<wbr/> video stabilization can modify the
9459<a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> to keep the video stream stabilized.<wbr/></p>
9460<p>Switching between different video stabilization modes may take several
9461frames to initialize,<wbr/> the camera device will report the current mode
9462in capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/>
9463the video stabilization modes in the first several capture results may
9464still be "OFF",<wbr/> and it will become "ON" when the initialization is
9465done.<wbr/></p>
9466<p>In addition,<wbr/> not all recording sizes or frame rates may be supported for
9467stabilization by a device that reports stabilization support.<wbr/> It is guaranteed
9468that an output targeting a MediaRecorder or MediaCodec will be stabilized if
9469the recording resolution is less than or equal to 1920 x 1080 (width less than
9470or equal to 1920,<wbr/> height less than or equal to 1080),<wbr/> and the recording
9471frame rate is less than or equal to 30fps.<wbr/>  At other sizes,<wbr/> the CaptureResult
9472<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a> field will return
9473OFF if the recording output is not stabilized,<wbr/> or if there are no output
9474Surface types that can be stabilized.<wbr/></p>
9475<p>If a camera device supports both this mode and OIS
9476(<a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may
9477produce undesirable interaction,<wbr/> so it is recommended not to enable
9478both at the same time.<wbr/></p>
9479            </td>
9480          </tr>
9481
9482
9483          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9484           <!-- end of entry -->
9485
9486
9487          <tr class="entry" id="dynamic_android.control.postRawSensitivityBoost">
9488            <td class="entry_name
9489             " rowspan="3">
9490              android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost
9491            </td>
9492            <td class="entry_type">
9493                <span class="entry_type_name">int32</span>
9494
9495              <span class="entry_type_visibility"> [public]</span>
9496
9497
9498
9499
9500
9501
9502            </td> <!-- entry_type -->
9503
9504            <td class="entry_description">
9505              <p>The amount of additional sensitivity boost applied to output images
9506after RAW sensor data is captured.<wbr/></p>
9507            </td>
9508
9509            <td class="entry_units">
9510              ISO arithmetic units,<wbr/> the same as android.<wbr/>sensor.<wbr/>sensitivity
9511            </td>
9512
9513            <td class="entry_range">
9514              <p><a href="#static_android.control.postRawSensitivityBoostRange">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost<wbr/>Range</a></p>
9515            </td>
9516
9517            <td class="entry_hal_version">
9518              <p>3.<wbr/>2</p>
9519            </td>
9520
9521            <td class="entry_tags">
9522            </td>
9523
9524          </tr>
9525          <tr class="entries_header">
9526            <th class="th_details" colspan="6">Details</th>
9527          </tr>
9528          <tr class="entry_cont">
9529            <td class="entry_details" colspan="6">
9530              <p>Some camera devices support additional digital sensitivity boosting in the
9531camera processing pipeline after sensor RAW image is captured.<wbr/>
9532Such a boost will be applied to YUV/<wbr/>JPEG format output images but will not
9533have effect on RAW output formats like RAW_<wbr/>SENSOR,<wbr/> RAW10,<wbr/> RAW12 or RAW_<wbr/>OPAQUE.<wbr/></p>
9534<p>This key will be <code>null</code> for devices that do not support any RAW format
9535outputs.<wbr/> For devices that do support RAW format outputs,<wbr/> this key will always
9536present,<wbr/> and if a device does not support post RAW sensitivity boost,<wbr/> it will
9537list <code>100</code> in this key.<wbr/></p>
9538<p>If the camera device cannot apply the exact boost requested,<wbr/> it will reduce the
9539boost to the nearest supported value.<wbr/>
9540The final boost value used will be available in the output capture result.<wbr/></p>
9541<p>For devices that support post RAW sensitivity boost,<wbr/> the YUV/<wbr/>JPEG output images
9542of such device will have the total sensitivity of
9543<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>
9544The sensitivity of RAW format images will always be <code><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></code></p>
9545<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
9546OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
9547            </td>
9548          </tr>
9549
9550
9551          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9552           <!-- end of entry -->
9553
9554
9555          <tr class="entry" id="dynamic_android.control.enableZsl">
9556            <td class="entry_name
9557             " rowspan="5">
9558              android.<wbr/>control.<wbr/>enable<wbr/>Zsl
9559            </td>
9560            <td class="entry_type">
9561                <span class="entry_type_name entry_type_name_enum">byte</span>
9562
9563              <span class="entry_type_visibility"> [public as boolean]</span>
9564
9565
9566
9567
9568
9569                <ul class="entry_type_enum">
9570                  <li>
9571                    <span class="entry_type_enum_name">FALSE (v3.2)</span>
9572                    <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
9573after previous requests.<wbr/></p></span>
9574                  </li>
9575                  <li>
9576                    <span class="entry_type_enum_name">TRUE (v3.2)</span>
9577                    <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
9578captured before previous requests.<wbr/></p></span>
9579                  </li>
9580                </ul>
9581
9582            </td> <!-- entry_type -->
9583
9584            <td class="entry_description">
9585              <p>Allow camera device to enable zero-shutter-lag mode for requests with
9586<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE.<wbr/></p>
9587            </td>
9588
9589            <td class="entry_units">
9590            </td>
9591
9592            <td class="entry_range">
9593            </td>
9594
9595            <td class="entry_hal_version">
9596              <p>3.<wbr/>2</p>
9597            </td>
9598
9599            <td class="entry_tags">
9600            </td>
9601
9602          </tr>
9603          <tr class="entries_header">
9604            <th class="th_details" colspan="6">Details</th>
9605          </tr>
9606          <tr class="entry_cont">
9607            <td class="entry_details" colspan="6">
9608              <p>If enableZsl is <code>true</code>,<wbr/> the camera device may enable zero-shutter-lag mode for requests with
9609STILL_<wbr/>CAPTURE capture intent.<wbr/> The camera device may use images captured in the past to
9610produce output images for a zero-shutter-lag request.<wbr/> The result metadata including the
9611<a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a> reflects the source frames used to produce output images.<wbr/>
9612Therefore,<wbr/> the contents of the output images and the result metadata may be out of order
9613compared to previous regular requests.<wbr/> enableZsl does not affect requests with other
9614capture intents.<wbr/></p>
9615<p>For example,<wbr/> when requests are submitted in the following order:
9616  Request A: enableZsl is ON,<wbr/> <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> is PREVIEW
9617  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>
9618<p>The output images for request B may have contents captured before the output images for
9619request A,<wbr/> and the result metadata for request B may be older than the result metadata for
9620request A.<wbr/></p>
9621<p>Note that when enableZsl is <code>true</code>,<wbr/> it is not guaranteed to get output images captured in
9622the past for requests with STILL_<wbr/>CAPTURE capture intent.<wbr/></p>
9623<p>For applications targeting SDK versions O and newer,<wbr/> the value of enableZsl in
9624TEMPLATE_<wbr/>STILL_<wbr/>CAPTURE template may be <code>true</code>.<wbr/> The value in other templates is always
9625<code>false</code> if present.<wbr/></p>
9626<p>For applications targeting SDK versions older than O,<wbr/> the value of enableZsl in all
9627capture templates is always <code>false</code> if present.<wbr/></p>
9628<p>For application-operated ZSL,<wbr/> use CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p>
9629            </td>
9630          </tr>
9631
9632          <tr class="entries_header">
9633            <th class="th_details" colspan="6">HAL Implementation Details</th>
9634          </tr>
9635          <tr class="entry_cont">
9636            <td class="entry_details" colspan="6">
9637              <p>It is valid for HAL to produce regular output images for requests with STILL_<wbr/>CAPTURE
9638capture intent.<wbr/></p>
9639            </td>
9640          </tr>
9641
9642          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9643           <!-- end of entry -->
9644
9645
9646          <tr class="entry" id="dynamic_android.control.afSceneChange">
9647            <td class="entry_name
9648             " rowspan="3">
9649              android.<wbr/>control.<wbr/>af<wbr/>Scene<wbr/>Change
9650            </td>
9651            <td class="entry_type">
9652                <span class="entry_type_name entry_type_name_enum">byte</span>
9653
9654              <span class="entry_type_visibility"> [public]</span>
9655
9656
9657
9658
9659
9660                <ul class="entry_type_enum">
9661                  <li>
9662                    <span class="entry_type_enum_name">NOT_DETECTED (v3.3)</span>
9663                    <span class="entry_type_enum_notes"><p>Scene change is not detected within the AF region(s).<wbr/></p></span>
9664                  </li>
9665                  <li>
9666                    <span class="entry_type_enum_name">DETECTED (v3.3)</span>
9667                    <span class="entry_type_enum_notes"><p>Scene change is detected within the AF region(s).<wbr/></p></span>
9668                  </li>
9669                </ul>
9670
9671            </td> <!-- entry_type -->
9672
9673            <td class="entry_description">
9674              <p>Whether a significant scene change is detected within the currently-set AF
9675region(s).<wbr/></p>
9676            </td>
9677
9678            <td class="entry_units">
9679            </td>
9680
9681            <td class="entry_range">
9682            </td>
9683
9684            <td class="entry_hal_version">
9685              <p>3.<wbr/>3</p>
9686            </td>
9687
9688            <td class="entry_tags">
9689            </td>
9690
9691          </tr>
9692          <tr class="entries_header">
9693            <th class="th_details" colspan="6">Details</th>
9694          </tr>
9695          <tr class="entry_cont">
9696            <td class="entry_details" colspan="6">
9697              <p>When the camera focus routine detects a change in the scene it is looking at,<wbr/>
9698such as a large shift in camera viewpoint,<wbr/> significant motion in the scene,<wbr/> or a
9699significant illumination change,<wbr/> this value will be set to DETECTED for a single capture
9700result.<wbr/> Otherwise the value will be NOT_<wbr/>DETECTED.<wbr/> The threshold for detection is similar
9701to what would trigger a new passive focus scan to begin in CONTINUOUS autofocus modes.<wbr/></p>
9702<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>
9703            </td>
9704          </tr>
9705
9706
9707          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9708           <!-- end of entry -->
9709
9710
9711
9712      <!-- end of kind -->
9713      </tbody>
9714
9715  <!-- end of section -->
9716  <tr><td colspan="7" id="section_demosaic" class="section">demosaic</td></tr>
9717
9718
9719      <tr><td colspan="7" class="kind">controls</td></tr>
9720
9721      <thead class="entries_header">
9722        <tr>
9723          <th class="th_name">Property Name</th>
9724          <th class="th_type">Type</th>
9725          <th class="th_description">Description</th>
9726          <th class="th_units">Units</th>
9727          <th class="th_range">Range</th>
9728          <th class="th_hal_version">Initial HIDL HAL version</th>
9729          <th class="th_tags">Tags</th>
9730        </tr>
9731      </thead>
9732
9733      <tbody>
9734
9735
9736
9737
9738
9739
9740
9741
9742
9743
9744          <tr class="entry" id="controls_android.demosaic.mode">
9745            <td class="entry_name
9746             " rowspan="1">
9747              android.<wbr/>demosaic.<wbr/>mode
9748            </td>
9749            <td class="entry_type">
9750                <span class="entry_type_name entry_type_name_enum">byte</span>
9751
9752              <span class="entry_type_visibility"> [system]</span>
9753
9754
9755
9756
9757
9758                <ul class="entry_type_enum">
9759                  <li>
9760                    <span class="entry_type_enum_name">FAST (v3.2)</span>
9761                    <span class="entry_type_enum_notes"><p>Minimal or no slowdown of frame rate compared to
9762Bayer RAW output.<wbr/></p></span>
9763                  </li>
9764                  <li>
9765                    <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
9766                    <span class="entry_type_enum_notes"><p>Improved processing quality but the frame rate might be slowed down
9767relative to raw output.<wbr/></p></span>
9768                  </li>
9769                </ul>
9770
9771            </td> <!-- entry_type -->
9772
9773            <td class="entry_description">
9774              <p>Controls the quality of the demosaicing
9775processing.<wbr/></p>
9776            </td>
9777
9778            <td class="entry_units">
9779            </td>
9780
9781            <td class="entry_range">
9782            </td>
9783
9784            <td class="entry_hal_version">
9785              <p>3.<wbr/>2</p>
9786            </td>
9787
9788            <td class="entry_tags">
9789              <ul class="entry_tags">
9790                  <li><a href="#tag_FUTURE">FUTURE</a></li>
9791              </ul>
9792            </td>
9793
9794          </tr>
9795
9796
9797          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9798           <!-- end of entry -->
9799
9800
9801
9802      <!-- end of kind -->
9803      </tbody>
9804
9805  <!-- end of section -->
9806  <tr><td colspan="7" id="section_edge" class="section">edge</td></tr>
9807
9808
9809      <tr><td colspan="7" class="kind">controls</td></tr>
9810
9811      <thead class="entries_header">
9812        <tr>
9813          <th class="th_name">Property Name</th>
9814          <th class="th_type">Type</th>
9815          <th class="th_description">Description</th>
9816          <th class="th_units">Units</th>
9817          <th class="th_range">Range</th>
9818          <th class="th_hal_version">Initial HIDL HAL version</th>
9819          <th class="th_tags">Tags</th>
9820        </tr>
9821      </thead>
9822
9823      <tbody>
9824
9825
9826
9827
9828
9829
9830
9831
9832
9833
9834          <tr class="entry" id="controls_android.edge.mode">
9835            <td class="entry_name
9836             " rowspan="5">
9837              android.<wbr/>edge.<wbr/>mode
9838            </td>
9839            <td class="entry_type">
9840                <span class="entry_type_name entry_type_name_enum">byte</span>
9841
9842              <span class="entry_type_visibility"> [public]</span>
9843
9844
9845              <span class="entry_type_hwlevel">[full] </span>
9846
9847
9848
9849                <ul class="entry_type_enum">
9850                  <li>
9851                    <span class="entry_type_enum_name">OFF (v3.2)</span>
9852                    <span class="entry_type_enum_notes"><p>No edge enhancement is applied.<wbr/></p></span>
9853                  </li>
9854                  <li>
9855                    <span class="entry_type_enum_name">FAST (v3.2)</span>
9856                    <span class="entry_type_enum_notes"><p>Apply edge enhancement at a quality level that does not slow down frame rate
9857relative to sensor output.<wbr/> It may be the same as OFF if edge enhancement will
9858slow down frame rate relative to sensor.<wbr/></p></span>
9859                  </li>
9860                  <li>
9861                    <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
9862                    <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>
9863                  </li>
9864                  <li>
9865                    <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span>
9866                    <span class="entry_type_enum_optional">[optional]</span>
9867                    <span class="entry_type_enum_notes"><p>Edge enhancement is applied at different
9868levels for different output streams,<wbr/> based on resolution.<wbr/> Streams at maximum recording
9869resolution (see <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">CameraDevice#createCaptureSession</a>)
9870or below have edge enhancement applied,<wbr/> while higher-resolution streams have no edge
9871enhancement applied.<wbr/> The level of edge enhancement for low-resolution streams is tuned
9872so that frame rate is not impacted,<wbr/> and the quality is equal to or better than FAST
9873(since it is only applied to lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p>
9874<p>This mode is intended to be used by applications operating in a zero-shutter-lag mode
9875with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures
9876high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is
9877produced via reprocessing when a user takes a picture.<wbr/>  For such a use case,<wbr/> the
9878high-resolution buffers must not have edge enhancement applied to maximize efficiency of
9879preview and to avoid double-applying enhancement when reprocessed,<wbr/> while low-resolution
9880buffers (used for recording or preview,<wbr/> generally) need edge enhancement applied for
9881reasonable preview quality.<wbr/></p>
9882<p>This mode is guaranteed to be supported by devices that support either the
9883YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities
9884(<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will
9885be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span>
9886                  </li>
9887                </ul>
9888
9889            </td> <!-- entry_type -->
9890
9891            <td class="entry_description">
9892              <p>Operation mode for edge
9893enhancement.<wbr/></p>
9894            </td>
9895
9896            <td class="entry_units">
9897            </td>
9898
9899            <td class="entry_range">
9900              <p><a href="#static_android.edge.availableEdgeModes">android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes</a></p>
9901            </td>
9902
9903            <td class="entry_hal_version">
9904              <p>3.<wbr/>2</p>
9905            </td>
9906
9907            <td class="entry_tags">
9908              <ul class="entry_tags">
9909                  <li><a href="#tag_V1">V1</a></li>
9910                  <li><a href="#tag_REPROC">REPROC</a></li>
9911              </ul>
9912            </td>
9913
9914          </tr>
9915          <tr class="entries_header">
9916            <th class="th_details" colspan="6">Details</th>
9917          </tr>
9918          <tr class="entry_cont">
9919            <td class="entry_details" colspan="6">
9920              <p>Edge enhancement improves sharpness and details in the captured image.<wbr/> OFF means
9921no enhancement will be applied by the camera device.<wbr/></p>
9922<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined enhancement
9923will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the
9924camera device will use the highest-quality enhancement algorithms,<wbr/>
9925even if it slows down capture rate.<wbr/> FAST means the camera device will
9926not slow down capture rate when applying edge enhancement.<wbr/> FAST may be the same as OFF if
9927edge enhancement will slow down capture rate.<wbr/> Every output stream will have a similar
9928amount of enhancement applied.<wbr/></p>
9929<p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular
9930buffer of high-resolution images during preview and reprocess image(s) from that buffer
9931into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies
9932edge enhancement to low-resolution streams (below maximum recording resolution) to
9933maximize preview quality,<wbr/> but does not apply edge enhancement to high-resolution streams,<wbr/>
9934since those will be reprocessed later if necessary.<wbr/></p>
9935<p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera
9936device will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV-domain edge enhancement,<wbr/> respectively.<wbr/>
9937The camera device may adjust its internal edge enhancement parameters for best
9938image 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>
9939            </td>
9940          </tr>
9941
9942          <tr class="entries_header">
9943            <th class="th_details" colspan="6">HAL Implementation Details</th>
9944          </tr>
9945          <tr class="entry_cont">
9946            <td class="entry_details" colspan="6">
9947              <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
9948adjust the internal edge enhancement reduction parameters appropriately to get the best
9949quality images.<wbr/></p>
9950            </td>
9951          </tr>
9952
9953          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9954           <!-- end of entry -->
9955
9956
9957          <tr class="entry" id="controls_android.edge.strength">
9958            <td class="entry_name
9959             " rowspan="1">
9960              android.<wbr/>edge.<wbr/>strength
9961            </td>
9962            <td class="entry_type">
9963                <span class="entry_type_name">byte</span>
9964
9965              <span class="entry_type_visibility"> [system]</span>
9966
9967
9968
9969
9970
9971
9972            </td> <!-- entry_type -->
9973
9974            <td class="entry_description">
9975              <p>Control the amount of edge enhancement
9976applied to the images</p>
9977            </td>
9978
9979            <td class="entry_units">
9980              1-10; 10 is maximum sharpening
9981            </td>
9982
9983            <td class="entry_range">
9984            </td>
9985
9986            <td class="entry_hal_version">
9987              <p>3.<wbr/>2</p>
9988            </td>
9989
9990            <td class="entry_tags">
9991              <ul class="entry_tags">
9992                  <li><a href="#tag_FUTURE">FUTURE</a></li>
9993              </ul>
9994            </td>
9995
9996          </tr>
9997
9998
9999          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10000           <!-- end of entry -->
10001
10002
10003
10004      <!-- end of kind -->
10005      </tbody>
10006      <tr><td colspan="7" class="kind">static</td></tr>
10007
10008      <thead class="entries_header">
10009        <tr>
10010          <th class="th_name">Property Name</th>
10011          <th class="th_type">Type</th>
10012          <th class="th_description">Description</th>
10013          <th class="th_units">Units</th>
10014          <th class="th_range">Range</th>
10015          <th class="th_hal_version">Initial HIDL HAL version</th>
10016          <th class="th_tags">Tags</th>
10017        </tr>
10018      </thead>
10019
10020      <tbody>
10021
10022
10023
10024
10025
10026
10027
10028
10029
10030
10031          <tr class="entry" id="static_android.edge.availableEdgeModes">
10032            <td class="entry_name
10033             " rowspan="5">
10034              android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes
10035            </td>
10036            <td class="entry_type">
10037                <span class="entry_type_name">byte</span>
10038                <span class="entry_type_container">x</span>
10039
10040                <span class="entry_type_array">
10041                  n
10042                </span>
10043              <span class="entry_type_visibility"> [public as enumList]</span>
10044
10045
10046              <span class="entry_type_hwlevel">[full] </span>
10047
10048
10049                <div class="entry_type_notes">list of enums</div>
10050
10051
10052            </td> <!-- entry_type -->
10053
10054            <td class="entry_description">
10055              <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
10056device.<wbr/></p>
10057            </td>
10058
10059            <td class="entry_units">
10060            </td>
10061
10062            <td class="entry_range">
10063              <p>Any value listed in <a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></p>
10064            </td>
10065
10066            <td class="entry_hal_version">
10067              <p>3.<wbr/>2</p>
10068            </td>
10069
10070            <td class="entry_tags">
10071              <ul class="entry_tags">
10072                  <li><a href="#tag_V1">V1</a></li>
10073                  <li><a href="#tag_REPROC">REPROC</a></li>
10074              </ul>
10075            </td>
10076
10077          </tr>
10078          <tr class="entries_header">
10079            <th class="th_details" colspan="6">Details</th>
10080          </tr>
10081          <tr class="entry_cont">
10082            <td class="entry_details" colspan="6">
10083              <p>Full-capability camera devices must always support OFF; camera devices that support
10084YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING will list ZERO_<wbr/>SHUTTER_<wbr/>LAG; all devices will
10085list FAST.<wbr/></p>
10086            </td>
10087          </tr>
10088
10089          <tr class="entries_header">
10090            <th class="th_details" colspan="6">HAL Implementation Details</th>
10091          </tr>
10092          <tr class="entry_cont">
10093            <td class="entry_details" colspan="6">
10094              <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if edge enhancement control is available
10095on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
10096That is,<wbr/> if the highest quality implementation on the camera device does not slow down
10097capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
10098            </td>
10099          </tr>
10100
10101          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10102           <!-- end of entry -->
10103
10104
10105
10106      <!-- end of kind -->
10107      </tbody>
10108      <tr><td colspan="7" class="kind">dynamic</td></tr>
10109
10110      <thead class="entries_header">
10111        <tr>
10112          <th class="th_name">Property Name</th>
10113          <th class="th_type">Type</th>
10114          <th class="th_description">Description</th>
10115          <th class="th_units">Units</th>
10116          <th class="th_range">Range</th>
10117          <th class="th_hal_version">Initial HIDL HAL version</th>
10118          <th class="th_tags">Tags</th>
10119        </tr>
10120      </thead>
10121
10122      <tbody>
10123
10124
10125
10126
10127
10128
10129
10130
10131
10132
10133          <tr class="entry" id="dynamic_android.edge.mode">
10134            <td class="entry_name
10135             " rowspan="5">
10136              android.<wbr/>edge.<wbr/>mode
10137            </td>
10138            <td class="entry_type">
10139                <span class="entry_type_name entry_type_name_enum">byte</span>
10140
10141              <span class="entry_type_visibility"> [public]</span>
10142
10143
10144              <span class="entry_type_hwlevel">[full] </span>
10145
10146
10147
10148                <ul class="entry_type_enum">
10149                  <li>
10150                    <span class="entry_type_enum_name">OFF (v3.2)</span>
10151                    <span class="entry_type_enum_notes"><p>No edge enhancement is applied.<wbr/></p></span>
10152                  </li>
10153                  <li>
10154                    <span class="entry_type_enum_name">FAST (v3.2)</span>
10155                    <span class="entry_type_enum_notes"><p>Apply edge enhancement at a quality level that does not slow down frame rate
10156relative to sensor output.<wbr/> It may be the same as OFF if edge enhancement will
10157slow down frame rate relative to sensor.<wbr/></p></span>
10158                  </li>
10159                  <li>
10160                    <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
10161                    <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>
10162                  </li>
10163                  <li>
10164                    <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span>
10165                    <span class="entry_type_enum_optional">[optional]</span>
10166                    <span class="entry_type_enum_notes"><p>Edge enhancement is applied at different
10167levels for different output streams,<wbr/> based on resolution.<wbr/> Streams at maximum recording
10168resolution (see <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">CameraDevice#createCaptureSession</a>)
10169or below have edge enhancement applied,<wbr/> while higher-resolution streams have no edge
10170enhancement applied.<wbr/> The level of edge enhancement for low-resolution streams is tuned
10171so that frame rate is not impacted,<wbr/> and the quality is equal to or better than FAST
10172(since it is only applied to lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p>
10173<p>This mode is intended to be used by applications operating in a zero-shutter-lag mode
10174with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures
10175high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is
10176produced via reprocessing when a user takes a picture.<wbr/>  For such a use case,<wbr/> the
10177high-resolution buffers must not have edge enhancement applied to maximize efficiency of
10178preview and to avoid double-applying enhancement when reprocessed,<wbr/> while low-resolution
10179buffers (used for recording or preview,<wbr/> generally) need edge enhancement applied for
10180reasonable preview quality.<wbr/></p>
10181<p>This mode is guaranteed to be supported by devices that support either the
10182YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities
10183(<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will
10184be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span>
10185                  </li>
10186                </ul>
10187
10188            </td> <!-- entry_type -->
10189
10190            <td class="entry_description">
10191              <p>Operation mode for edge
10192enhancement.<wbr/></p>
10193            </td>
10194
10195            <td class="entry_units">
10196            </td>
10197
10198            <td class="entry_range">
10199              <p><a href="#static_android.edge.availableEdgeModes">android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes</a></p>
10200            </td>
10201
10202            <td class="entry_hal_version">
10203              <p>3.<wbr/>2</p>
10204            </td>
10205
10206            <td class="entry_tags">
10207              <ul class="entry_tags">
10208                  <li><a href="#tag_V1">V1</a></li>
10209                  <li><a href="#tag_REPROC">REPROC</a></li>
10210              </ul>
10211            </td>
10212
10213          </tr>
10214          <tr class="entries_header">
10215            <th class="th_details" colspan="6">Details</th>
10216          </tr>
10217          <tr class="entry_cont">
10218            <td class="entry_details" colspan="6">
10219              <p>Edge enhancement improves sharpness and details in the captured image.<wbr/> OFF means
10220no enhancement will be applied by the camera device.<wbr/></p>
10221<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined enhancement
10222will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the
10223camera device will use the highest-quality enhancement algorithms,<wbr/>
10224even if it slows down capture rate.<wbr/> FAST means the camera device will
10225not slow down capture rate when applying edge enhancement.<wbr/> FAST may be the same as OFF if
10226edge enhancement will slow down capture rate.<wbr/> Every output stream will have a similar
10227amount of enhancement applied.<wbr/></p>
10228<p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular
10229buffer of high-resolution images during preview and reprocess image(s) from that buffer
10230into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies
10231edge enhancement to low-resolution streams (below maximum recording resolution) to
10232maximize preview quality,<wbr/> but does not apply edge enhancement to high-resolution streams,<wbr/>
10233since those will be reprocessed later if necessary.<wbr/></p>
10234<p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera
10235device will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV-domain edge enhancement,<wbr/> respectively.<wbr/>
10236The camera device may adjust its internal edge enhancement parameters for best
10237image 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>
10238            </td>
10239          </tr>
10240
10241          <tr class="entries_header">
10242            <th class="th_details" colspan="6">HAL Implementation Details</th>
10243          </tr>
10244          <tr class="entry_cont">
10245            <td class="entry_details" colspan="6">
10246              <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
10247adjust the internal edge enhancement reduction parameters appropriately to get the best
10248quality images.<wbr/></p>
10249            </td>
10250          </tr>
10251
10252          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10253           <!-- end of entry -->
10254
10255
10256
10257      <!-- end of kind -->
10258      </tbody>
10259
10260  <!-- end of section -->
10261  <tr><td colspan="7" id="section_flash" class="section">flash</td></tr>
10262
10263
10264      <tr><td colspan="7" class="kind">controls</td></tr>
10265
10266      <thead class="entries_header">
10267        <tr>
10268          <th class="th_name">Property Name</th>
10269          <th class="th_type">Type</th>
10270          <th class="th_description">Description</th>
10271          <th class="th_units">Units</th>
10272          <th class="th_range">Range</th>
10273          <th class="th_hal_version">Initial HIDL HAL version</th>
10274          <th class="th_tags">Tags</th>
10275        </tr>
10276      </thead>
10277
10278      <tbody>
10279
10280
10281
10282
10283
10284
10285
10286
10287
10288
10289          <tr class="entry" id="controls_android.flash.firingPower">
10290            <td class="entry_name
10291             " rowspan="3">
10292              android.<wbr/>flash.<wbr/>firing<wbr/>Power
10293            </td>
10294            <td class="entry_type">
10295                <span class="entry_type_name">byte</span>
10296
10297              <span class="entry_type_visibility"> [system]</span>
10298
10299
10300
10301
10302
10303
10304            </td> <!-- entry_type -->
10305
10306            <td class="entry_description">
10307              <p>Power for flash firing/<wbr/>torch</p>
10308            </td>
10309
10310            <td class="entry_units">
10311              10 is max power; 0 is no flash.<wbr/> Linear
10312            </td>
10313
10314            <td class="entry_range">
10315              <p>0 - 10</p>
10316            </td>
10317
10318            <td class="entry_hal_version">
10319              <p>3.<wbr/>2</p>
10320            </td>
10321
10322            <td class="entry_tags">
10323              <ul class="entry_tags">
10324                  <li><a href="#tag_FUTURE">FUTURE</a></li>
10325              </ul>
10326            </td>
10327
10328          </tr>
10329          <tr class="entries_header">
10330            <th class="th_details" colspan="6">Details</th>
10331          </tr>
10332          <tr class="entry_cont">
10333            <td class="entry_details" colspan="6">
10334              <p>Power for snapshot may use a different scale than
10335for torch mode.<wbr/> Only one entry for torch mode will be
10336used</p>
10337            </td>
10338          </tr>
10339
10340
10341          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10342           <!-- end of entry -->
10343
10344
10345          <tr class="entry" id="controls_android.flash.firingTime">
10346            <td class="entry_name
10347             " rowspan="3">
10348              android.<wbr/>flash.<wbr/>firing<wbr/>Time
10349            </td>
10350            <td class="entry_type">
10351                <span class="entry_type_name">int64</span>
10352
10353              <span class="entry_type_visibility"> [system]</span>
10354
10355
10356
10357
10358
10359
10360            </td> <!-- entry_type -->
10361
10362            <td class="entry_description">
10363              <p>Firing time of flash relative to start of
10364exposure</p>
10365            </td>
10366
10367            <td class="entry_units">
10368              nanoseconds
10369            </td>
10370
10371            <td class="entry_range">
10372              <p>0-(exposure time-flash duration)</p>
10373            </td>
10374
10375            <td class="entry_hal_version">
10376              <p>3.<wbr/>2</p>
10377            </td>
10378
10379            <td class="entry_tags">
10380              <ul class="entry_tags">
10381                  <li><a href="#tag_FUTURE">FUTURE</a></li>
10382              </ul>
10383            </td>
10384
10385          </tr>
10386          <tr class="entries_header">
10387            <th class="th_details" colspan="6">Details</th>
10388          </tr>
10389          <tr class="entry_cont">
10390            <td class="entry_details" colspan="6">
10391              <p>Clamped to (0,<wbr/> exposure time - flash
10392duration).<wbr/></p>
10393            </td>
10394          </tr>
10395
10396
10397          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10398           <!-- end of entry -->
10399
10400
10401          <tr class="entry" id="controls_android.flash.mode">
10402            <td class="entry_name
10403             " rowspan="3">
10404              android.<wbr/>flash.<wbr/>mode
10405            </td>
10406            <td class="entry_type">
10407                <span class="entry_type_name entry_type_name_enum">byte</span>
10408
10409              <span class="entry_type_visibility"> [public]</span>
10410
10411
10412              <span class="entry_type_hwlevel">[legacy] </span>
10413
10414
10415
10416                <ul class="entry_type_enum">
10417                  <li>
10418                    <span class="entry_type_enum_name">OFF (v3.2)</span>
10419                    <span class="entry_type_enum_notes"><p>Do not fire the flash for this capture.<wbr/></p></span>
10420                  </li>
10421                  <li>
10422                    <span class="entry_type_enum_name">SINGLE (v3.2)</span>
10423                    <span class="entry_type_enum_notes"><p>If the flash is available and charged,<wbr/> fire flash
10424for this capture.<wbr/></p></span>
10425                  </li>
10426                  <li>
10427                    <span class="entry_type_enum_name">TORCH (v3.2)</span>
10428                    <span class="entry_type_enum_notes"><p>Transition flash to continuously on.<wbr/></p></span>
10429                  </li>
10430                </ul>
10431
10432            </td> <!-- entry_type -->
10433
10434            <td class="entry_description">
10435              <p>The desired mode for for the camera device's flash control.<wbr/></p>
10436            </td>
10437
10438            <td class="entry_units">
10439            </td>
10440
10441            <td class="entry_range">
10442            </td>
10443
10444            <td class="entry_hal_version">
10445              <p>3.<wbr/>2</p>
10446            </td>
10447
10448            <td class="entry_tags">
10449              <ul class="entry_tags">
10450                  <li><a href="#tag_BC">BC</a></li>
10451              </ul>
10452            </td>
10453
10454          </tr>
10455          <tr class="entries_header">
10456            <th class="th_details" colspan="6">Details</th>
10457          </tr>
10458          <tr class="entry_cont">
10459            <td class="entry_details" colspan="6">
10460              <p>This control is only effective when flash unit is available
10461(<code><a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> == true</code>).<wbr/></p>
10462<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/>
10463Otherwise,<wbr/> the camera device auto-exposure related flash control (ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/>
10464ON_<wbr/>ALWAYS_<wbr/>FLASH,<wbr/> or ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE) will override this control.<wbr/></p>
10465<p>When set to OFF,<wbr/> the camera device will not fire flash for this capture.<wbr/></p>
10466<p>When set to SINGLE,<wbr/> the camera device will fire flash regardless of the camera
10467device's auto-exposure routine's result.<wbr/> When used in still capture case,<wbr/> this
10468control should be used along with auto-exposure (AE) precapture metering sequence
10469(<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>
10470<p>When set to TORCH,<wbr/> the flash will be on continuously.<wbr/> This mode can be used
10471for use cases such as preview,<wbr/> auto-focus assist,<wbr/> still capture,<wbr/> or video recording.<wbr/></p>
10472<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>
10473            </td>
10474          </tr>
10475
10476
10477          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10478           <!-- end of entry -->
10479
10480
10481
10482      <!-- end of kind -->
10483      </tbody>
10484      <tr><td colspan="7" class="kind">static</td></tr>
10485
10486      <thead class="entries_header">
10487        <tr>
10488          <th class="th_name">Property Name</th>
10489          <th class="th_type">Type</th>
10490          <th class="th_description">Description</th>
10491          <th class="th_units">Units</th>
10492          <th class="th_range">Range</th>
10493          <th class="th_hal_version">Initial HIDL HAL version</th>
10494          <th class="th_tags">Tags</th>
10495        </tr>
10496      </thead>
10497
10498      <tbody>
10499
10500
10501
10502
10503
10504
10505
10506
10507
10508
10509
10510
10511          <tr class="entry" id="static_android.flash.info.available">
10512            <td class="entry_name
10513             " rowspan="3">
10514              android.<wbr/>flash.<wbr/>info.<wbr/>available
10515            </td>
10516            <td class="entry_type">
10517                <span class="entry_type_name entry_type_name_enum">byte</span>
10518
10519              <span class="entry_type_visibility"> [public as boolean]</span>
10520
10521
10522              <span class="entry_type_hwlevel">[legacy] </span>
10523
10524
10525
10526                <ul class="entry_type_enum">
10527                  <li>
10528                    <span class="entry_type_enum_name">FALSE (v3.2)</span>
10529                  </li>
10530                  <li>
10531                    <span class="entry_type_enum_name">TRUE (v3.2)</span>
10532                  </li>
10533                </ul>
10534
10535            </td> <!-- entry_type -->
10536
10537            <td class="entry_description">
10538              <p>Whether this camera device has a
10539flash unit.<wbr/></p>
10540            </td>
10541
10542            <td class="entry_units">
10543            </td>
10544
10545            <td class="entry_range">
10546            </td>
10547
10548            <td class="entry_hal_version">
10549              <p>3.<wbr/>2</p>
10550            </td>
10551
10552            <td class="entry_tags">
10553              <ul class="entry_tags">
10554                  <li><a href="#tag_BC">BC</a></li>
10555              </ul>
10556            </td>
10557
10558          </tr>
10559          <tr class="entries_header">
10560            <th class="th_details" colspan="6">Details</th>
10561          </tr>
10562          <tr class="entry_cont">
10563            <td class="entry_details" colspan="6">
10564              <p>Will be <code>false</code> if no flash is available.<wbr/></p>
10565<p>If there is no flash unit,<wbr/> none of the flash controls do
10566anything.<wbr/></p>
10567            </td>
10568          </tr>
10569
10570
10571          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10572           <!-- end of entry -->
10573
10574
10575          <tr class="entry" id="static_android.flash.info.chargeDuration">
10576            <td class="entry_name
10577             " rowspan="3">
10578              android.<wbr/>flash.<wbr/>info.<wbr/>charge<wbr/>Duration
10579            </td>
10580            <td class="entry_type">
10581                <span class="entry_type_name">int64</span>
10582
10583              <span class="entry_type_visibility"> [system]</span>
10584
10585
10586
10587
10588
10589
10590            </td> <!-- entry_type -->
10591
10592            <td class="entry_description">
10593              <p>Time taken before flash can fire
10594again</p>
10595            </td>
10596
10597            <td class="entry_units">
10598              nanoseconds
10599            </td>
10600
10601            <td class="entry_range">
10602              <p>0-1e9</p>
10603            </td>
10604
10605            <td class="entry_hal_version">
10606              <p>3.<wbr/>2</p>
10607            </td>
10608
10609            <td class="entry_tags">
10610              <ul class="entry_tags">
10611                  <li><a href="#tag_FUTURE">FUTURE</a></li>
10612              </ul>
10613            </td>
10614
10615          </tr>
10616          <tr class="entries_header">
10617            <th class="th_details" colspan="6">Details</th>
10618          </tr>
10619          <tr class="entry_cont">
10620            <td class="entry_details" colspan="6">
10621              <p>1 second too long/<wbr/>too short for recharge? Should
10622this be power-dependent?</p>
10623            </td>
10624          </tr>
10625
10626
10627          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10628           <!-- end of entry -->
10629
10630
10631
10632
10633
10634          <tr class="entry" id="static_android.flash.colorTemperature">
10635            <td class="entry_name
10636             " rowspan="1">
10637              android.<wbr/>flash.<wbr/>color<wbr/>Temperature
10638            </td>
10639            <td class="entry_type">
10640                <span class="entry_type_name">byte</span>
10641
10642              <span class="entry_type_visibility"> [system]</span>
10643
10644
10645
10646
10647
10648
10649            </td> <!-- entry_type -->
10650
10651            <td class="entry_description">
10652              <p>The x,<wbr/>y whitepoint of the
10653flash</p>
10654            </td>
10655
10656            <td class="entry_units">
10657              pair of floats
10658            </td>
10659
10660            <td class="entry_range">
10661              <p>0-1 for both</p>
10662            </td>
10663
10664            <td class="entry_hal_version">
10665              <p>3.<wbr/>2</p>
10666            </td>
10667
10668            <td class="entry_tags">
10669              <ul class="entry_tags">
10670                  <li><a href="#tag_FUTURE">FUTURE</a></li>
10671              </ul>
10672            </td>
10673
10674          </tr>
10675
10676
10677          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10678           <!-- end of entry -->
10679
10680
10681          <tr class="entry" id="static_android.flash.maxEnergy">
10682            <td class="entry_name
10683             " rowspan="1">
10684              android.<wbr/>flash.<wbr/>max<wbr/>Energy
10685            </td>
10686            <td class="entry_type">
10687                <span class="entry_type_name">byte</span>
10688
10689              <span class="entry_type_visibility"> [system]</span>
10690
10691
10692
10693
10694
10695
10696            </td> <!-- entry_type -->
10697
10698            <td class="entry_description">
10699              <p>Max energy output of the flash for a full
10700power single flash</p>
10701            </td>
10702
10703            <td class="entry_units">
10704              lumen-seconds
10705            </td>
10706
10707            <td class="entry_range">
10708              <p>&gt;= 0</p>
10709            </td>
10710
10711            <td class="entry_hal_version">
10712              <p>3.<wbr/>2</p>
10713            </td>
10714
10715            <td class="entry_tags">
10716              <ul class="entry_tags">
10717                  <li><a href="#tag_FUTURE">FUTURE</a></li>
10718              </ul>
10719            </td>
10720
10721          </tr>
10722
10723
10724          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10725           <!-- end of entry -->
10726
10727
10728
10729      <!-- end of kind -->
10730      </tbody>
10731      <tr><td colspan="7" class="kind">dynamic</td></tr>
10732
10733      <thead class="entries_header">
10734        <tr>
10735          <th class="th_name">Property Name</th>
10736          <th class="th_type">Type</th>
10737          <th class="th_description">Description</th>
10738          <th class="th_units">Units</th>
10739          <th class="th_range">Range</th>
10740          <th class="th_hal_version">Initial HIDL HAL version</th>
10741          <th class="th_tags">Tags</th>
10742        </tr>
10743      </thead>
10744
10745      <tbody>
10746
10747
10748
10749
10750
10751
10752
10753
10754
10755
10756          <tr class="entry" id="dynamic_android.flash.firingPower">
10757            <td class="entry_name
10758             " rowspan="3">
10759              android.<wbr/>flash.<wbr/>firing<wbr/>Power
10760            </td>
10761            <td class="entry_type">
10762                <span class="entry_type_name">byte</span>
10763
10764              <span class="entry_type_visibility"> [system]</span>
10765
10766
10767
10768
10769
10770
10771            </td> <!-- entry_type -->
10772
10773            <td class="entry_description">
10774              <p>Power for flash firing/<wbr/>torch</p>
10775            </td>
10776
10777            <td class="entry_units">
10778              10 is max power; 0 is no flash.<wbr/> Linear
10779            </td>
10780
10781            <td class="entry_range">
10782              <p>0 - 10</p>
10783            </td>
10784
10785            <td class="entry_hal_version">
10786              <p>3.<wbr/>2</p>
10787            </td>
10788
10789            <td class="entry_tags">
10790              <ul class="entry_tags">
10791                  <li><a href="#tag_FUTURE">FUTURE</a></li>
10792              </ul>
10793            </td>
10794
10795          </tr>
10796          <tr class="entries_header">
10797            <th class="th_details" colspan="6">Details</th>
10798          </tr>
10799          <tr class="entry_cont">
10800            <td class="entry_details" colspan="6">
10801              <p>Power for snapshot may use a different scale than
10802for torch mode.<wbr/> Only one entry for torch mode will be
10803used</p>
10804            </td>
10805          </tr>
10806
10807
10808          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10809           <!-- end of entry -->
10810
10811
10812          <tr class="entry" id="dynamic_android.flash.firingTime">
10813            <td class="entry_name
10814             " rowspan="3">
10815              android.<wbr/>flash.<wbr/>firing<wbr/>Time
10816            </td>
10817            <td class="entry_type">
10818                <span class="entry_type_name">int64</span>
10819
10820              <span class="entry_type_visibility"> [system]</span>
10821
10822
10823
10824
10825
10826
10827            </td> <!-- entry_type -->
10828
10829            <td class="entry_description">
10830              <p>Firing time of flash relative to start of
10831exposure</p>
10832            </td>
10833
10834            <td class="entry_units">
10835              nanoseconds
10836            </td>
10837
10838            <td class="entry_range">
10839              <p>0-(exposure time-flash duration)</p>
10840            </td>
10841
10842            <td class="entry_hal_version">
10843              <p>3.<wbr/>2</p>
10844            </td>
10845
10846            <td class="entry_tags">
10847              <ul class="entry_tags">
10848                  <li><a href="#tag_FUTURE">FUTURE</a></li>
10849              </ul>
10850            </td>
10851
10852          </tr>
10853          <tr class="entries_header">
10854            <th class="th_details" colspan="6">Details</th>
10855          </tr>
10856          <tr class="entry_cont">
10857            <td class="entry_details" colspan="6">
10858              <p>Clamped to (0,<wbr/> exposure time - flash
10859duration).<wbr/></p>
10860            </td>
10861          </tr>
10862
10863
10864          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10865           <!-- end of entry -->
10866
10867
10868          <tr class="entry" id="dynamic_android.flash.mode">
10869            <td class="entry_name
10870             " rowspan="3">
10871              android.<wbr/>flash.<wbr/>mode
10872            </td>
10873            <td class="entry_type">
10874                <span class="entry_type_name entry_type_name_enum">byte</span>
10875
10876              <span class="entry_type_visibility"> [public]</span>
10877
10878
10879              <span class="entry_type_hwlevel">[legacy] </span>
10880
10881
10882
10883                <ul class="entry_type_enum">
10884                  <li>
10885                    <span class="entry_type_enum_name">OFF (v3.2)</span>
10886                    <span class="entry_type_enum_notes"><p>Do not fire the flash for this capture.<wbr/></p></span>
10887                  </li>
10888                  <li>
10889                    <span class="entry_type_enum_name">SINGLE (v3.2)</span>
10890                    <span class="entry_type_enum_notes"><p>If the flash is available and charged,<wbr/> fire flash
10891for this capture.<wbr/></p></span>
10892                  </li>
10893                  <li>
10894                    <span class="entry_type_enum_name">TORCH (v3.2)</span>
10895                    <span class="entry_type_enum_notes"><p>Transition flash to continuously on.<wbr/></p></span>
10896                  </li>
10897                </ul>
10898
10899            </td> <!-- entry_type -->
10900
10901            <td class="entry_description">
10902              <p>The desired mode for for the camera device's flash control.<wbr/></p>
10903            </td>
10904
10905            <td class="entry_units">
10906            </td>
10907
10908            <td class="entry_range">
10909            </td>
10910
10911            <td class="entry_hal_version">
10912              <p>3.<wbr/>2</p>
10913            </td>
10914
10915            <td class="entry_tags">
10916              <ul class="entry_tags">
10917                  <li><a href="#tag_BC">BC</a></li>
10918              </ul>
10919            </td>
10920
10921          </tr>
10922          <tr class="entries_header">
10923            <th class="th_details" colspan="6">Details</th>
10924          </tr>
10925          <tr class="entry_cont">
10926            <td class="entry_details" colspan="6">
10927              <p>This control is only effective when flash unit is available
10928(<code><a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> == true</code>).<wbr/></p>
10929<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/>
10930Otherwise,<wbr/> the camera device auto-exposure related flash control (ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/>
10931ON_<wbr/>ALWAYS_<wbr/>FLASH,<wbr/> or ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE) will override this control.<wbr/></p>
10932<p>When set to OFF,<wbr/> the camera device will not fire flash for this capture.<wbr/></p>
10933<p>When set to SINGLE,<wbr/> the camera device will fire flash regardless of the camera
10934device's auto-exposure routine's result.<wbr/> When used in still capture case,<wbr/> this
10935control should be used along with auto-exposure (AE) precapture metering sequence
10936(<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>
10937<p>When set to TORCH,<wbr/> the flash will be on continuously.<wbr/> This mode can be used
10938for use cases such as preview,<wbr/> auto-focus assist,<wbr/> still capture,<wbr/> or video recording.<wbr/></p>
10939<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>
10940            </td>
10941          </tr>
10942
10943
10944          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10945           <!-- end of entry -->
10946
10947
10948          <tr class="entry" id="dynamic_android.flash.state">
10949            <td class="entry_name
10950             " rowspan="3">
10951              android.<wbr/>flash.<wbr/>state
10952            </td>
10953            <td class="entry_type">
10954                <span class="entry_type_name entry_type_name_enum">byte</span>
10955
10956              <span class="entry_type_visibility"> [public]</span>
10957
10958
10959              <span class="entry_type_hwlevel">[limited] </span>
10960
10961
10962
10963                <ul class="entry_type_enum">
10964                  <li>
10965                    <span class="entry_type_enum_name">UNAVAILABLE (v3.2)</span>
10966                    <span class="entry_type_enum_notes"><p>No flash on camera.<wbr/></p></span>
10967                  </li>
10968                  <li>
10969                    <span class="entry_type_enum_name">CHARGING (v3.2)</span>
10970                    <span class="entry_type_enum_notes"><p>Flash is charging and cannot be fired.<wbr/></p></span>
10971                  </li>
10972                  <li>
10973                    <span class="entry_type_enum_name">READY (v3.2)</span>
10974                    <span class="entry_type_enum_notes"><p>Flash is ready to fire.<wbr/></p></span>
10975                  </li>
10976                  <li>
10977                    <span class="entry_type_enum_name">FIRED (v3.2)</span>
10978                    <span class="entry_type_enum_notes"><p>Flash fired for this capture.<wbr/></p></span>
10979                  </li>
10980                  <li>
10981                    <span class="entry_type_enum_name">PARTIAL (v3.2)</span>
10982                    <span class="entry_type_enum_notes"><p>Flash partially illuminated this frame.<wbr/></p>
10983<p>This is usually due to the next or previous frame having
10984the flash fire,<wbr/> and the flash spilling into this capture
10985due to hardware limitations.<wbr/></p></span>
10986                  </li>
10987                </ul>
10988
10989            </td> <!-- entry_type -->
10990
10991            <td class="entry_description">
10992              <p>Current state of the flash
10993unit.<wbr/></p>
10994            </td>
10995
10996            <td class="entry_units">
10997            </td>
10998
10999            <td class="entry_range">
11000            </td>
11001
11002            <td class="entry_hal_version">
11003              <p>3.<wbr/>2</p>
11004            </td>
11005
11006            <td class="entry_tags">
11007            </td>
11008
11009          </tr>
11010          <tr class="entries_header">
11011            <th class="th_details" colspan="6">Details</th>
11012          </tr>
11013          <tr class="entry_cont">
11014            <td class="entry_details" colspan="6">
11015              <p>When the camera device doesn't have flash unit
11016(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/>
11017Other states indicate the current flash status.<wbr/></p>
11018<p>In certain conditions,<wbr/> this will be available on LEGACY devices:</p>
11019<ul>
11020<li>Flash-less cameras always return UNAVAILABLE.<wbr/></li>
11021<li>Using <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>==</code> ON_<wbr/>ALWAYS_<wbr/>FLASH
11022   will always return FIRED.<wbr/></li>
11023<li>Using <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> <code>==</code> TORCH
11024   will always return FIRED.<wbr/></li>
11025</ul>
11026<p>In all other conditions the state will not be available on
11027LEGACY devices (i.<wbr/>e.<wbr/> it will be <code>null</code>).<wbr/></p>
11028            </td>
11029          </tr>
11030
11031
11032          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11033           <!-- end of entry -->
11034
11035
11036
11037      <!-- end of kind -->
11038      </tbody>
11039
11040  <!-- end of section -->
11041  <tr><td colspan="7" id="section_hotPixel" class="section">hotPixel</td></tr>
11042
11043
11044      <tr><td colspan="7" class="kind">controls</td></tr>
11045
11046      <thead class="entries_header">
11047        <tr>
11048          <th class="th_name">Property Name</th>
11049          <th class="th_type">Type</th>
11050          <th class="th_description">Description</th>
11051          <th class="th_units">Units</th>
11052          <th class="th_range">Range</th>
11053          <th class="th_hal_version">Initial HIDL HAL version</th>
11054          <th class="th_tags">Tags</th>
11055        </tr>
11056      </thead>
11057
11058      <tbody>
11059
11060
11061
11062
11063
11064
11065
11066
11067
11068
11069          <tr class="entry" id="controls_android.hotPixel.mode">
11070            <td class="entry_name
11071             " rowspan="3">
11072              android.<wbr/>hot<wbr/>Pixel.<wbr/>mode
11073            </td>
11074            <td class="entry_type">
11075                <span class="entry_type_name entry_type_name_enum">byte</span>
11076
11077              <span class="entry_type_visibility"> [public]</span>
11078
11079
11080
11081
11082
11083                <ul class="entry_type_enum">
11084                  <li>
11085                    <span class="entry_type_enum_name">OFF (v3.2)</span>
11086                    <span class="entry_type_enum_notes"><p>No hot pixel correction is applied.<wbr/></p>
11087<p>The frame rate must not be reduced relative to sensor raw output
11088for this option.<wbr/></p>
11089<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>
11090                  </li>
11091                  <li>
11092                    <span class="entry_type_enum_name">FAST (v3.2)</span>
11093                    <span class="entry_type_enum_notes"><p>Hot pixel correction is applied,<wbr/> without reducing frame
11094rate relative to sensor raw output.<wbr/></p>
11095<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>
11096                  </li>
11097                  <li>
11098                    <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
11099                    <span class="entry_type_enum_notes"><p>High-quality hot pixel correction is applied,<wbr/> at a cost
11100of possibly reduced frame rate relative to sensor raw output.<wbr/></p>
11101<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>
11102                  </li>
11103                </ul>
11104
11105            </td> <!-- entry_type -->
11106
11107            <td class="entry_description">
11108              <p>Operational mode for hot pixel correction.<wbr/></p>
11109            </td>
11110
11111            <td class="entry_units">
11112            </td>
11113
11114            <td class="entry_range">
11115              <p><a href="#static_android.hotPixel.availableHotPixelModes">android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes</a></p>
11116            </td>
11117
11118            <td class="entry_hal_version">
11119              <p>3.<wbr/>2</p>
11120            </td>
11121
11122            <td class="entry_tags">
11123              <ul class="entry_tags">
11124                  <li><a href="#tag_V1">V1</a></li>
11125                  <li><a href="#tag_RAW">RAW</a></li>
11126              </ul>
11127            </td>
11128
11129          </tr>
11130          <tr class="entries_header">
11131            <th class="th_details" colspan="6">Details</th>
11132          </tr>
11133          <tr class="entry_cont">
11134            <td class="entry_details" colspan="6">
11135              <p>Hotpixel correction interpolates out,<wbr/> or otherwise removes,<wbr/> pixels
11136that do not accurately measure the incoming light (i.<wbr/>e.<wbr/> pixels that
11137are stuck at an arbitrary value or are oversensitive).<wbr/></p>
11138            </td>
11139          </tr>
11140
11141
11142          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11143           <!-- end of entry -->
11144
11145
11146
11147      <!-- end of kind -->
11148      </tbody>
11149      <tr><td colspan="7" class="kind">static</td></tr>
11150
11151      <thead class="entries_header">
11152        <tr>
11153          <th class="th_name">Property Name</th>
11154          <th class="th_type">Type</th>
11155          <th class="th_description">Description</th>
11156          <th class="th_units">Units</th>
11157          <th class="th_range">Range</th>
11158          <th class="th_hal_version">Initial HIDL HAL version</th>
11159          <th class="th_tags">Tags</th>
11160        </tr>
11161      </thead>
11162
11163      <tbody>
11164
11165
11166
11167
11168
11169
11170
11171
11172
11173
11174          <tr class="entry" id="static_android.hotPixel.availableHotPixelModes">
11175            <td class="entry_name
11176             " rowspan="5">
11177              android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes
11178            </td>
11179            <td class="entry_type">
11180                <span class="entry_type_name">byte</span>
11181                <span class="entry_type_container">x</span>
11182
11183                <span class="entry_type_array">
11184                  n
11185                </span>
11186              <span class="entry_type_visibility"> [public as enumList]</span>
11187
11188
11189
11190
11191                <div class="entry_type_notes">list of enums</div>
11192
11193
11194            </td> <!-- entry_type -->
11195
11196            <td class="entry_description">
11197              <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
11198camera device.<wbr/></p>
11199            </td>
11200
11201            <td class="entry_units">
11202            </td>
11203
11204            <td class="entry_range">
11205              <p>Any value listed in <a href="#controls_android.hotPixel.mode">android.<wbr/>hot<wbr/>Pixel.<wbr/>mode</a></p>
11206            </td>
11207
11208            <td class="entry_hal_version">
11209              <p>3.<wbr/>2</p>
11210            </td>
11211
11212            <td class="entry_tags">
11213              <ul class="entry_tags">
11214                  <li><a href="#tag_V1">V1</a></li>
11215                  <li><a href="#tag_RAW">RAW</a></li>
11216              </ul>
11217            </td>
11218
11219          </tr>
11220          <tr class="entries_header">
11221            <th class="th_details" colspan="6">Details</th>
11222          </tr>
11223          <tr class="entry_cont">
11224            <td class="entry_details" colspan="6">
11225              <p>FULL mode camera devices will always support FAST.<wbr/></p>
11226            </td>
11227          </tr>
11228
11229          <tr class="entries_header">
11230            <th class="th_details" colspan="6">HAL Implementation Details</th>
11231          </tr>
11232          <tr class="entry_cont">
11233            <td class="entry_details" colspan="6">
11234              <p>To avoid performance issues,<wbr/> there will be significantly fewer hot
11235pixels than actual pixels on the camera sensor.<wbr/>
11236HAL must support both FAST and HIGH_<wbr/>QUALITY if hot pixel correction control is available
11237on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
11238That is,<wbr/> if the highest quality implementation on the camera device does not slow down
11239capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
11240            </td>
11241          </tr>
11242
11243          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11244           <!-- end of entry -->
11245
11246
11247
11248      <!-- end of kind -->
11249      </tbody>
11250      <tr><td colspan="7" class="kind">dynamic</td></tr>
11251
11252      <thead class="entries_header">
11253        <tr>
11254          <th class="th_name">Property Name</th>
11255          <th class="th_type">Type</th>
11256          <th class="th_description">Description</th>
11257          <th class="th_units">Units</th>
11258          <th class="th_range">Range</th>
11259          <th class="th_hal_version">Initial HIDL HAL version</th>
11260          <th class="th_tags">Tags</th>
11261        </tr>
11262      </thead>
11263
11264      <tbody>
11265
11266
11267
11268
11269
11270
11271
11272
11273
11274
11275          <tr class="entry" id="dynamic_android.hotPixel.mode">
11276            <td class="entry_name
11277             " rowspan="3">
11278              android.<wbr/>hot<wbr/>Pixel.<wbr/>mode
11279            </td>
11280            <td class="entry_type">
11281                <span class="entry_type_name entry_type_name_enum">byte</span>
11282
11283              <span class="entry_type_visibility"> [public]</span>
11284
11285
11286
11287
11288
11289                <ul class="entry_type_enum">
11290                  <li>
11291                    <span class="entry_type_enum_name">OFF (v3.2)</span>
11292                    <span class="entry_type_enum_notes"><p>No hot pixel correction is applied.<wbr/></p>
11293<p>The frame rate must not be reduced relative to sensor raw output
11294for this option.<wbr/></p>
11295<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>
11296                  </li>
11297                  <li>
11298                    <span class="entry_type_enum_name">FAST (v3.2)</span>
11299                    <span class="entry_type_enum_notes"><p>Hot pixel correction is applied,<wbr/> without reducing frame
11300rate relative to sensor raw output.<wbr/></p>
11301<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>
11302                  </li>
11303                  <li>
11304                    <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
11305                    <span class="entry_type_enum_notes"><p>High-quality hot pixel correction is applied,<wbr/> at a cost
11306of possibly reduced frame rate relative to sensor raw output.<wbr/></p>
11307<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>
11308                  </li>
11309                </ul>
11310
11311            </td> <!-- entry_type -->
11312
11313            <td class="entry_description">
11314              <p>Operational mode for hot pixel correction.<wbr/></p>
11315            </td>
11316
11317            <td class="entry_units">
11318            </td>
11319
11320            <td class="entry_range">
11321              <p><a href="#static_android.hotPixel.availableHotPixelModes">android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes</a></p>
11322            </td>
11323
11324            <td class="entry_hal_version">
11325              <p>3.<wbr/>2</p>
11326            </td>
11327
11328            <td class="entry_tags">
11329              <ul class="entry_tags">
11330                  <li><a href="#tag_V1">V1</a></li>
11331                  <li><a href="#tag_RAW">RAW</a></li>
11332              </ul>
11333            </td>
11334
11335          </tr>
11336          <tr class="entries_header">
11337            <th class="th_details" colspan="6">Details</th>
11338          </tr>
11339          <tr class="entry_cont">
11340            <td class="entry_details" colspan="6">
11341              <p>Hotpixel correction interpolates out,<wbr/> or otherwise removes,<wbr/> pixels
11342that do not accurately measure the incoming light (i.<wbr/>e.<wbr/> pixels that
11343are stuck at an arbitrary value or are oversensitive).<wbr/></p>
11344            </td>
11345          </tr>
11346
11347
11348          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11349           <!-- end of entry -->
11350
11351
11352
11353      <!-- end of kind -->
11354      </tbody>
11355
11356  <!-- end of section -->
11357  <tr><td colspan="7" id="section_jpeg" class="section">jpeg</td></tr>
11358
11359
11360      <tr><td colspan="7" class="kind">controls</td></tr>
11361
11362      <thead class="entries_header">
11363        <tr>
11364          <th class="th_name">Property Name</th>
11365          <th class="th_type">Type</th>
11366          <th class="th_description">Description</th>
11367          <th class="th_units">Units</th>
11368          <th class="th_range">Range</th>
11369          <th class="th_hal_version">Initial HIDL HAL version</th>
11370          <th class="th_tags">Tags</th>
11371        </tr>
11372      </thead>
11373
11374      <tbody>
11375
11376
11377
11378
11379
11380
11381
11382
11383
11384
11385          <tr class="entry" id="controls_android.jpeg.gpsLocation">
11386            <td class="entry_name
11387             " rowspan="3">
11388              android.<wbr/>jpeg.<wbr/>gps<wbr/>Location
11389            </td>
11390            <td class="entry_type">
11391                <span class="entry_type_name">byte</span>
11392
11393              <span class="entry_type_visibility"> [java_public as location]</span>
11394
11395              <span class="entry_type_synthetic">[synthetic] </span>
11396
11397              <span class="entry_type_hwlevel">[legacy] </span>
11398
11399
11400
11401
11402            </td> <!-- entry_type -->
11403
11404            <td class="entry_description">
11405              <p>A location object to use when generating image GPS metadata.<wbr/></p>
11406            </td>
11407
11408            <td class="entry_units">
11409            </td>
11410
11411            <td class="entry_range">
11412            </td>
11413
11414            <td class="entry_hal_version">
11415              <p>3.<wbr/>2</p>
11416            </td>
11417
11418            <td class="entry_tags">
11419            </td>
11420
11421          </tr>
11422          <tr class="entries_header">
11423            <th class="th_details" colspan="6">Details</th>
11424          </tr>
11425          <tr class="entry_cont">
11426            <td class="entry_details" colspan="6">
11427              <p>Setting a location object in a request will include the GPS coordinates of the location
11428into any JPEG images captured based on the request.<wbr/> These coordinates can then be
11429viewed by anyone who receives the JPEG image.<wbr/></p>
11430<p>This tag is also used for HEIC image capture.<wbr/></p>
11431            </td>
11432          </tr>
11433
11434
11435          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11436           <!-- end of entry -->
11437
11438
11439          <tr class="entry" id="controls_android.jpeg.gpsCoordinates">
11440            <td class="entry_name
11441             " rowspan="3">
11442              android.<wbr/>jpeg.<wbr/>gps<wbr/>Coordinates
11443            </td>
11444            <td class="entry_type">
11445                <span class="entry_type_name">double</span>
11446                <span class="entry_type_container">x</span>
11447
11448                <span class="entry_type_array">
11449                  3
11450                </span>
11451              <span class="entry_type_visibility"> [ndk_public]</span>
11452
11453
11454              <span class="entry_type_hwlevel">[legacy] </span>
11455
11456
11457                <div class="entry_type_notes">latitude,<wbr/> longitude,<wbr/> altitude.<wbr/> First two in degrees,<wbr/> the third in meters</div>
11458
11459
11460            </td> <!-- entry_type -->
11461
11462            <td class="entry_description">
11463              <p>GPS coordinates to include in output JPEG
11464EXIF.<wbr/></p>
11465            </td>
11466
11467            <td class="entry_units">
11468            </td>
11469
11470            <td class="entry_range">
11471              <p>(-180 - 180],<wbr/> [-90,<wbr/>90],<wbr/> [-inf,<wbr/> inf]</p>
11472            </td>
11473
11474            <td class="entry_hal_version">
11475              <p>3.<wbr/>2</p>
11476            </td>
11477
11478            <td class="entry_tags">
11479              <ul class="entry_tags">
11480                  <li><a href="#tag_BC">BC</a></li>
11481              </ul>
11482            </td>
11483
11484          </tr>
11485          <tr class="entries_header">
11486            <th class="th_details" colspan="6">Details</th>
11487          </tr>
11488          <tr class="entry_cont">
11489            <td class="entry_details" colspan="6">
11490              <p>This tag is also used for HEIC image capture.<wbr/></p>
11491            </td>
11492          </tr>
11493
11494
11495          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11496           <!-- end of entry -->
11497
11498
11499          <tr class="entry" id="controls_android.jpeg.gpsProcessingMethod">
11500            <td class="entry_name
11501             " rowspan="3">
11502              android.<wbr/>jpeg.<wbr/>gps<wbr/>Processing<wbr/>Method
11503            </td>
11504            <td class="entry_type">
11505                <span class="entry_type_name">byte</span>
11506
11507              <span class="entry_type_visibility"> [ndk_public as string]</span>
11508
11509
11510              <span class="entry_type_hwlevel">[legacy] </span>
11511
11512
11513
11514
11515            </td> <!-- entry_type -->
11516
11517            <td class="entry_description">
11518              <p>32 characters describing GPS algorithm to
11519include in EXIF.<wbr/></p>
11520            </td>
11521
11522            <td class="entry_units">
11523              UTF-8 null-terminated string
11524            </td>
11525
11526            <td class="entry_range">
11527            </td>
11528
11529            <td class="entry_hal_version">
11530              <p>3.<wbr/>2</p>
11531            </td>
11532
11533            <td class="entry_tags">
11534              <ul class="entry_tags">
11535                  <li><a href="#tag_BC">BC</a></li>
11536              </ul>
11537            </td>
11538
11539          </tr>
11540          <tr class="entries_header">
11541            <th class="th_details" colspan="6">Details</th>
11542          </tr>
11543          <tr class="entry_cont">
11544            <td class="entry_details" colspan="6">
11545              <p>This tag is also used for HEIC image capture.<wbr/></p>
11546            </td>
11547          </tr>
11548
11549
11550          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11551           <!-- end of entry -->
11552
11553
11554          <tr class="entry" id="controls_android.jpeg.gpsTimestamp">
11555            <td class="entry_name
11556             " rowspan="3">
11557              android.<wbr/>jpeg.<wbr/>gps<wbr/>Timestamp
11558            </td>
11559            <td class="entry_type">
11560                <span class="entry_type_name">int64</span>
11561
11562              <span class="entry_type_visibility"> [ndk_public]</span>
11563
11564
11565              <span class="entry_type_hwlevel">[legacy] </span>
11566
11567
11568
11569
11570            </td> <!-- entry_type -->
11571
11572            <td class="entry_description">
11573              <p>Time GPS fix was made to include in
11574EXIF.<wbr/></p>
11575            </td>
11576
11577            <td class="entry_units">
11578              UTC in seconds since January 1,<wbr/> 1970
11579            </td>
11580
11581            <td class="entry_range">
11582            </td>
11583
11584            <td class="entry_hal_version">
11585              <p>3.<wbr/>2</p>
11586            </td>
11587
11588            <td class="entry_tags">
11589              <ul class="entry_tags">
11590                  <li><a href="#tag_BC">BC</a></li>
11591              </ul>
11592            </td>
11593
11594          </tr>
11595          <tr class="entries_header">
11596            <th class="th_details" colspan="6">Details</th>
11597          </tr>
11598          <tr class="entry_cont">
11599            <td class="entry_details" colspan="6">
11600              <p>This tag is also used for HEIC image capture.<wbr/></p>
11601            </td>
11602          </tr>
11603
11604
11605          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11606           <!-- end of entry -->
11607
11608
11609          <tr class="entry" id="controls_android.jpeg.orientation">
11610            <td class="entry_name
11611             " rowspan="3">
11612              android.<wbr/>jpeg.<wbr/>orientation
11613            </td>
11614            <td class="entry_type">
11615                <span class="entry_type_name">int32</span>
11616
11617              <span class="entry_type_visibility"> [public]</span>
11618
11619
11620              <span class="entry_type_hwlevel">[legacy] </span>
11621
11622
11623
11624
11625            </td> <!-- entry_type -->
11626
11627            <td class="entry_description">
11628              <p>The orientation for a JPEG image.<wbr/></p>
11629            </td>
11630
11631            <td class="entry_units">
11632              Degrees in multiples of 90
11633            </td>
11634
11635            <td class="entry_range">
11636              <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p>
11637            </td>
11638
11639            <td class="entry_hal_version">
11640              <p>3.<wbr/>2</p>
11641            </td>
11642
11643            <td class="entry_tags">
11644              <ul class="entry_tags">
11645                  <li><a href="#tag_BC">BC</a></li>
11646              </ul>
11647            </td>
11648
11649          </tr>
11650          <tr class="entries_header">
11651            <th class="th_details" colspan="6">Details</th>
11652          </tr>
11653          <tr class="entry_cont">
11654            <td class="entry_details" colspan="6">
11655              <p>The clockwise rotation angle in degrees,<wbr/> relative to the orientation
11656to the camera,<wbr/> that the JPEG picture needs to be rotated by,<wbr/> to be viewed
11657upright.<wbr/></p>
11658<p>Camera devices may either encode this value into the JPEG EXIF header,<wbr/> or
11659rotate the image data to match this orientation.<wbr/> When the image data is rotated,<wbr/>
11660the thumbnail data will also be rotated.<wbr/></p>
11661<p>Note that this orientation is relative to the orientation of the camera sensor,<wbr/> given
11662by <a href="#static_android.sensor.orientation">android.<wbr/>sensor.<wbr/>orientation</a>.<wbr/></p>
11663<p>To translate from the device orientation given by the Android sensor APIs for camera
11664sensors which are not EXTERNAL,<wbr/> the following sample code may be used:</p>
11665<pre><code>private int getJpegOrientation(CameraCharacteristics c,<wbr/> int deviceOrientation) {
11666    if (deviceOrientation == android.<wbr/>view.<wbr/>Orientation<wbr/>Event<wbr/>Listener.<wbr/>ORIENTATION_<wbr/>UNKNOWN) return 0;
11667    int sensorOrientation = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>SENSOR_<wbr/>ORIENTATION);
11668
11669    //<wbr/> Round device orientation to a multiple of 90
11670    deviceOrientation = (deviceOrientation + 45) /<wbr/> 90 * 90;
11671
11672    //<wbr/> Reverse device orientation for front-facing cameras
11673    boolean facingFront = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING) == Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING_<wbr/>FRONT;
11674    if (facingFront) deviceOrientation = -deviceOrientation;
11675
11676    //<wbr/> Calculate desired JPEG orientation relative to camera orientation to make
11677    //<wbr/> the image upright relative to the device orientation
11678    int jpegOrientation = (sensorOrientation + deviceOrientation + 360) % 360;
11679
11680    return jpegOrientation;
11681}
11682</code></pre>
11683<p>For EXTERNAL cameras the sensor orientation will always be set to 0 and the facing will
11684also be set to EXTERNAL.<wbr/> The above code is not relevant in such case.<wbr/></p>
11685<p>This tag is also used to describe the orientation of the HEIC image capture,<wbr/> in which
11686case the rotation is reflected by
11687<a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>,<wbr/> and not by
11688rotating the image data itself.<wbr/></p>
11689            </td>
11690          </tr>
11691
11692
11693          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11694           <!-- end of entry -->
11695
11696
11697          <tr class="entry" id="controls_android.jpeg.quality">
11698            <td class="entry_name
11699             " rowspan="3">
11700              android.<wbr/>jpeg.<wbr/>quality
11701            </td>
11702            <td class="entry_type">
11703                <span class="entry_type_name">byte</span>
11704
11705              <span class="entry_type_visibility"> [public]</span>
11706
11707
11708              <span class="entry_type_hwlevel">[legacy] </span>
11709
11710
11711
11712
11713            </td> <!-- entry_type -->
11714
11715            <td class="entry_description">
11716              <p>Compression quality of the final JPEG
11717image.<wbr/></p>
11718            </td>
11719
11720            <td class="entry_units">
11721            </td>
11722
11723            <td class="entry_range">
11724              <p>1-100; larger is higher quality</p>
11725            </td>
11726
11727            <td class="entry_hal_version">
11728              <p>3.<wbr/>2</p>
11729            </td>
11730
11731            <td class="entry_tags">
11732              <ul class="entry_tags">
11733                  <li><a href="#tag_BC">BC</a></li>
11734              </ul>
11735            </td>
11736
11737          </tr>
11738          <tr class="entries_header">
11739            <th class="th_details" colspan="6">Details</th>
11740          </tr>
11741          <tr class="entry_cont">
11742            <td class="entry_details" colspan="6">
11743              <p>85-95 is typical usage range.<wbr/> This tag is also used to describe the quality
11744of the HEIC image capture.<wbr/></p>
11745            </td>
11746          </tr>
11747
11748
11749          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11750           <!-- end of entry -->
11751
11752
11753          <tr class="entry" id="controls_android.jpeg.thumbnailQuality">
11754            <td class="entry_name
11755             " rowspan="3">
11756              android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Quality
11757            </td>
11758            <td class="entry_type">
11759                <span class="entry_type_name">byte</span>
11760
11761              <span class="entry_type_visibility"> [public]</span>
11762
11763
11764              <span class="entry_type_hwlevel">[legacy] </span>
11765
11766
11767
11768
11769            </td> <!-- entry_type -->
11770
11771            <td class="entry_description">
11772              <p>Compression quality of JPEG
11773thumbnail.<wbr/></p>
11774            </td>
11775
11776            <td class="entry_units">
11777            </td>
11778
11779            <td class="entry_range">
11780              <p>1-100; larger is higher quality</p>
11781            </td>
11782
11783            <td class="entry_hal_version">
11784              <p>3.<wbr/>2</p>
11785            </td>
11786
11787            <td class="entry_tags">
11788              <ul class="entry_tags">
11789                  <li><a href="#tag_BC">BC</a></li>
11790              </ul>
11791            </td>
11792
11793          </tr>
11794          <tr class="entries_header">
11795            <th class="th_details" colspan="6">Details</th>
11796          </tr>
11797          <tr class="entry_cont">
11798            <td class="entry_details" colspan="6">
11799              <p>This tag is also used to describe the quality of the HEIC image capture.<wbr/></p>
11800            </td>
11801          </tr>
11802
11803
11804          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11805           <!-- end of entry -->
11806
11807
11808          <tr class="entry" id="controls_android.jpeg.thumbnailSize">
11809            <td class="entry_name
11810             " rowspan="5">
11811              android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size
11812            </td>
11813            <td class="entry_type">
11814                <span class="entry_type_name">int32</span>
11815                <span class="entry_type_container">x</span>
11816
11817                <span class="entry_type_array">
11818                  2
11819                </span>
11820              <span class="entry_type_visibility"> [public as size]</span>
11821
11822
11823              <span class="entry_type_hwlevel">[legacy] </span>
11824
11825
11826
11827
11828            </td> <!-- entry_type -->
11829
11830            <td class="entry_description">
11831              <p>Resolution of embedded JPEG thumbnail.<wbr/></p>
11832            </td>
11833
11834            <td class="entry_units">
11835            </td>
11836
11837            <td class="entry_range">
11838              <p><a href="#static_android.jpeg.availableThumbnailSizes">android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes</a></p>
11839            </td>
11840
11841            <td class="entry_hal_version">
11842              <p>3.<wbr/>2</p>
11843            </td>
11844
11845            <td class="entry_tags">
11846              <ul class="entry_tags">
11847                  <li><a href="#tag_BC">BC</a></li>
11848              </ul>
11849            </td>
11850
11851          </tr>
11852          <tr class="entries_header">
11853            <th class="th_details" colspan="6">Details</th>
11854          </tr>
11855          <tr class="entry_cont">
11856            <td class="entry_details" colspan="6">
11857              <p>When set to (0,<wbr/> 0) value,<wbr/> the JPEG EXIF will not contain thumbnail,<wbr/>
11858but the captured JPEG will still be a valid image.<wbr/></p>
11859<p>For best results,<wbr/> when issuing a request for a JPEG image,<wbr/> the thumbnail size selected
11860should have the same aspect ratio as the main JPEG output.<wbr/></p>
11861<p>If the thumbnail image aspect ratio differs from the JPEG primary image aspect
11862ratio,<wbr/> the camera device creates the thumbnail by cropping it from the primary image.<wbr/>
11863For example,<wbr/> if the primary image has 4:3 aspect ratio,<wbr/> the thumbnail image has
1186416:9 aspect ratio,<wbr/> the primary image will be cropped vertically (letterbox) to
11865generate the thumbnail image.<wbr/> The thumbnail image will always have a smaller Field
11866Of View (FOV) than the primary image when aspect ratios differ.<wbr/></p>
11867<p>When an <a href="#controls_android.jpeg.orientation">android.<wbr/>jpeg.<wbr/>orientation</a> of non-zero degree is requested,<wbr/>
11868the camera device will handle thumbnail rotation in one of the following ways:</p>
11869<ul>
11870<li>Set the <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>
11871  and keep jpeg and thumbnail image data unrotated.<wbr/></li>
11872<li>Rotate the jpeg and thumbnail image data and not set
11873  <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>.<wbr/> In this
11874  case,<wbr/> LIMITED or FULL hardware level devices will report rotated thumnail size in
11875  capture result,<wbr/> so the width and height will be interchanged if 90 or 270 degree
11876  orientation is requested.<wbr/> LEGACY device will always report unrotated thumbnail
11877  size.<wbr/></li>
11878</ul>
11879<p>The tag is also used as thumbnail size for HEIC image format capture,<wbr/> in which case the
11880the thumbnail rotation is reflected by
11881<a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>,<wbr/> and not by
11882rotating the thumbnail data itself.<wbr/></p>
11883            </td>
11884          </tr>
11885
11886          <tr class="entries_header">
11887            <th class="th_details" colspan="6">HAL Implementation Details</th>
11888          </tr>
11889          <tr class="entry_cont">
11890            <td class="entry_details" colspan="6">
11891              <p>The HAL must not squeeze or stretch the downscaled primary image to generate thumbnail.<wbr/>
11892The cropping must be done on the primary jpeg image rather than the sensor pre-correction
11893active array.<wbr/> The stream cropping rule specified by "S5.<wbr/> Cropping" in camera3.<wbr/>h doesn't
11894apply to the thumbnail image cropping.<wbr/></p>
11895            </td>
11896          </tr>
11897
11898          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11899           <!-- end of entry -->
11900
11901
11902
11903      <!-- end of kind -->
11904      </tbody>
11905      <tr><td colspan="7" class="kind">static</td></tr>
11906
11907      <thead class="entries_header">
11908        <tr>
11909          <th class="th_name">Property Name</th>
11910          <th class="th_type">Type</th>
11911          <th class="th_description">Description</th>
11912          <th class="th_units">Units</th>
11913          <th class="th_range">Range</th>
11914          <th class="th_hal_version">Initial HIDL HAL version</th>
11915          <th class="th_tags">Tags</th>
11916        </tr>
11917      </thead>
11918
11919      <tbody>
11920
11921
11922
11923
11924
11925
11926
11927
11928
11929
11930          <tr class="entry" id="static_android.jpeg.availableThumbnailSizes">
11931            <td class="entry_name
11932             " rowspan="3">
11933              android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes
11934            </td>
11935            <td class="entry_type">
11936                <span class="entry_type_name">int32</span>
11937                <span class="entry_type_container">x</span>
11938
11939                <span class="entry_type_array">
11940                  2 x n
11941                </span>
11942              <span class="entry_type_visibility"> [public as size]</span>
11943
11944
11945              <span class="entry_type_hwlevel">[legacy] </span>
11946
11947
11948
11949
11950            </td> <!-- entry_type -->
11951
11952            <td class="entry_description">
11953              <p>List of JPEG thumbnail sizes for <a href="#controls_android.jpeg.thumbnailSize">android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size</a> supported by this
11954camera device.<wbr/></p>
11955            </td>
11956
11957            <td class="entry_units">
11958            </td>
11959
11960            <td class="entry_range">
11961            </td>
11962
11963            <td class="entry_hal_version">
11964              <p>3.<wbr/>2</p>
11965            </td>
11966
11967            <td class="entry_tags">
11968              <ul class="entry_tags">
11969                  <li><a href="#tag_BC">BC</a></li>
11970              </ul>
11971            </td>
11972
11973          </tr>
11974          <tr class="entries_header">
11975            <th class="th_details" colspan="6">Details</th>
11976          </tr>
11977          <tr class="entry_cont">
11978            <td class="entry_details" colspan="6">
11979              <p>This list will include at least one non-zero resolution,<wbr/> plus <code>(0,<wbr/>0)</code> for indicating no
11980thumbnail should be generated.<wbr/></p>
11981<p>Below condiditions will be satisfied for this size list:</p>
11982<ul>
11983<li>The sizes will be sorted by increasing pixel area (width x height).<wbr/>
11984If several resolutions have the same area,<wbr/> they will be sorted by increasing width.<wbr/></li>
11985<li>The aspect ratio of the largest thumbnail size will be same as the
11986aspect ratio of largest JPEG output size in <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a>.<wbr/>
11987The largest size is defined as the size that has the largest pixel area
11988in a given size list.<wbr/></li>
11989<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
11990one corresponding size that has the same aspect ratio in availableThumbnailSizes,<wbr/>
11991and vice versa.<wbr/></li>
11992<li>All non-<code>(0,<wbr/> 0)</code> sizes will have non-zero widths and heights.<wbr/></li>
11993</ul>
11994<p>This list is also used as supported thumbnail sizes for HEIC image format capture.<wbr/></p>
11995            </td>
11996          </tr>
11997
11998
11999          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12000           <!-- end of entry -->
12001
12002
12003          <tr class="entry" id="static_android.jpeg.maxSize">
12004            <td class="entry_name
12005             " rowspan="3">
12006              android.<wbr/>jpeg.<wbr/>max<wbr/>Size
12007            </td>
12008            <td class="entry_type">
12009                <span class="entry_type_name">int32</span>
12010
12011              <span class="entry_type_visibility"> [system]</span>
12012
12013
12014
12015
12016
12017
12018            </td> <!-- entry_type -->
12019
12020            <td class="entry_description">
12021              <p>Maximum size in bytes for the compressed
12022JPEG buffer</p>
12023            </td>
12024
12025            <td class="entry_units">
12026            </td>
12027
12028            <td class="entry_range">
12029              <p>Must be large enough to fit any JPEG produced by
12030the camera</p>
12031            </td>
12032
12033            <td class="entry_hal_version">
12034              <p>3.<wbr/>2</p>
12035            </td>
12036
12037            <td class="entry_tags">
12038            </td>
12039
12040          </tr>
12041          <tr class="entries_header">
12042            <th class="th_details" colspan="6">Details</th>
12043          </tr>
12044          <tr class="entry_cont">
12045            <td class="entry_details" colspan="6">
12046              <p>This is used for sizing the gralloc buffers for
12047JPEG</p>
12048            </td>
12049          </tr>
12050
12051
12052          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12053           <!-- end of entry -->
12054
12055
12056
12057      <!-- end of kind -->
12058      </tbody>
12059      <tr><td colspan="7" class="kind">dynamic</td></tr>
12060
12061      <thead class="entries_header">
12062        <tr>
12063          <th class="th_name">Property Name</th>
12064          <th class="th_type">Type</th>
12065          <th class="th_description">Description</th>
12066          <th class="th_units">Units</th>
12067          <th class="th_range">Range</th>
12068          <th class="th_hal_version">Initial HIDL HAL version</th>
12069          <th class="th_tags">Tags</th>
12070        </tr>
12071      </thead>
12072
12073      <tbody>
12074
12075
12076
12077
12078
12079
12080
12081
12082
12083
12084          <tr class="entry" id="dynamic_android.jpeg.gpsLocation">
12085            <td class="entry_name
12086             " rowspan="3">
12087              android.<wbr/>jpeg.<wbr/>gps<wbr/>Location
12088            </td>
12089            <td class="entry_type">
12090                <span class="entry_type_name">byte</span>
12091
12092              <span class="entry_type_visibility"> [java_public as location]</span>
12093
12094              <span class="entry_type_synthetic">[synthetic] </span>
12095
12096              <span class="entry_type_hwlevel">[legacy] </span>
12097
12098
12099
12100
12101            </td> <!-- entry_type -->
12102
12103            <td class="entry_description">
12104              <p>A location object to use when generating image GPS metadata.<wbr/></p>
12105            </td>
12106
12107            <td class="entry_units">
12108            </td>
12109
12110            <td class="entry_range">
12111            </td>
12112
12113            <td class="entry_hal_version">
12114              <p>3.<wbr/>2</p>
12115            </td>
12116
12117            <td class="entry_tags">
12118            </td>
12119
12120          </tr>
12121          <tr class="entries_header">
12122            <th class="th_details" colspan="6">Details</th>
12123          </tr>
12124          <tr class="entry_cont">
12125            <td class="entry_details" colspan="6">
12126              <p>Setting a location object in a request will include the GPS coordinates of the location
12127into any JPEG images captured based on the request.<wbr/> These coordinates can then be
12128viewed by anyone who receives the JPEG image.<wbr/></p>
12129<p>This tag is also used for HEIC image capture.<wbr/></p>
12130            </td>
12131          </tr>
12132
12133
12134          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12135           <!-- end of entry -->
12136
12137
12138          <tr class="entry" id="dynamic_android.jpeg.gpsCoordinates">
12139            <td class="entry_name
12140             " rowspan="3">
12141              android.<wbr/>jpeg.<wbr/>gps<wbr/>Coordinates
12142            </td>
12143            <td class="entry_type">
12144                <span class="entry_type_name">double</span>
12145                <span class="entry_type_container">x</span>
12146
12147                <span class="entry_type_array">
12148                  3
12149                </span>
12150              <span class="entry_type_visibility"> [ndk_public]</span>
12151
12152
12153              <span class="entry_type_hwlevel">[legacy] </span>
12154
12155
12156                <div class="entry_type_notes">latitude,<wbr/> longitude,<wbr/> altitude.<wbr/> First two in degrees,<wbr/> the third in meters</div>
12157
12158
12159            </td> <!-- entry_type -->
12160
12161            <td class="entry_description">
12162              <p>GPS coordinates to include in output JPEG
12163EXIF.<wbr/></p>
12164            </td>
12165
12166            <td class="entry_units">
12167            </td>
12168
12169            <td class="entry_range">
12170              <p>(-180 - 180],<wbr/> [-90,<wbr/>90],<wbr/> [-inf,<wbr/> inf]</p>
12171            </td>
12172
12173            <td class="entry_hal_version">
12174              <p>3.<wbr/>2</p>
12175            </td>
12176
12177            <td class="entry_tags">
12178              <ul class="entry_tags">
12179                  <li><a href="#tag_BC">BC</a></li>
12180              </ul>
12181            </td>
12182
12183          </tr>
12184          <tr class="entries_header">
12185            <th class="th_details" colspan="6">Details</th>
12186          </tr>
12187          <tr class="entry_cont">
12188            <td class="entry_details" colspan="6">
12189              <p>This tag is also used for HEIC image capture.<wbr/></p>
12190            </td>
12191          </tr>
12192
12193
12194          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12195           <!-- end of entry -->
12196
12197
12198          <tr class="entry" id="dynamic_android.jpeg.gpsProcessingMethod">
12199            <td class="entry_name
12200             " rowspan="3">
12201              android.<wbr/>jpeg.<wbr/>gps<wbr/>Processing<wbr/>Method
12202            </td>
12203            <td class="entry_type">
12204                <span class="entry_type_name">byte</span>
12205
12206              <span class="entry_type_visibility"> [ndk_public as string]</span>
12207
12208
12209              <span class="entry_type_hwlevel">[legacy] </span>
12210
12211
12212
12213
12214            </td> <!-- entry_type -->
12215
12216            <td class="entry_description">
12217              <p>32 characters describing GPS algorithm to
12218include in EXIF.<wbr/></p>
12219            </td>
12220
12221            <td class="entry_units">
12222              UTF-8 null-terminated string
12223            </td>
12224
12225            <td class="entry_range">
12226            </td>
12227
12228            <td class="entry_hal_version">
12229              <p>3.<wbr/>2</p>
12230            </td>
12231
12232            <td class="entry_tags">
12233              <ul class="entry_tags">
12234                  <li><a href="#tag_BC">BC</a></li>
12235              </ul>
12236            </td>
12237
12238          </tr>
12239          <tr class="entries_header">
12240            <th class="th_details" colspan="6">Details</th>
12241          </tr>
12242          <tr class="entry_cont">
12243            <td class="entry_details" colspan="6">
12244              <p>This tag is also used for HEIC image capture.<wbr/></p>
12245            </td>
12246          </tr>
12247
12248
12249          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12250           <!-- end of entry -->
12251
12252
12253          <tr class="entry" id="dynamic_android.jpeg.gpsTimestamp">
12254            <td class="entry_name
12255             " rowspan="3">
12256              android.<wbr/>jpeg.<wbr/>gps<wbr/>Timestamp
12257            </td>
12258            <td class="entry_type">
12259                <span class="entry_type_name">int64</span>
12260
12261              <span class="entry_type_visibility"> [ndk_public]</span>
12262
12263
12264              <span class="entry_type_hwlevel">[legacy] </span>
12265
12266
12267
12268
12269            </td> <!-- entry_type -->
12270
12271            <td class="entry_description">
12272              <p>Time GPS fix was made to include in
12273EXIF.<wbr/></p>
12274            </td>
12275
12276            <td class="entry_units">
12277              UTC in seconds since January 1,<wbr/> 1970
12278            </td>
12279
12280            <td class="entry_range">
12281            </td>
12282
12283            <td class="entry_hal_version">
12284              <p>3.<wbr/>2</p>
12285            </td>
12286
12287            <td class="entry_tags">
12288              <ul class="entry_tags">
12289                  <li><a href="#tag_BC">BC</a></li>
12290              </ul>
12291            </td>
12292
12293          </tr>
12294          <tr class="entries_header">
12295            <th class="th_details" colspan="6">Details</th>
12296          </tr>
12297          <tr class="entry_cont">
12298            <td class="entry_details" colspan="6">
12299              <p>This tag is also used for HEIC image capture.<wbr/></p>
12300            </td>
12301          </tr>
12302
12303
12304          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12305           <!-- end of entry -->
12306
12307
12308          <tr class="entry" id="dynamic_android.jpeg.orientation">
12309            <td class="entry_name
12310             " rowspan="3">
12311              android.<wbr/>jpeg.<wbr/>orientation
12312            </td>
12313            <td class="entry_type">
12314                <span class="entry_type_name">int32</span>
12315
12316              <span class="entry_type_visibility"> [public]</span>
12317
12318
12319              <span class="entry_type_hwlevel">[legacy] </span>
12320
12321
12322
12323
12324            </td> <!-- entry_type -->
12325
12326            <td class="entry_description">
12327              <p>The orientation for a JPEG image.<wbr/></p>
12328            </td>
12329
12330            <td class="entry_units">
12331              Degrees in multiples of 90
12332            </td>
12333
12334            <td class="entry_range">
12335              <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p>
12336            </td>
12337
12338            <td class="entry_hal_version">
12339              <p>3.<wbr/>2</p>
12340            </td>
12341
12342            <td class="entry_tags">
12343              <ul class="entry_tags">
12344                  <li><a href="#tag_BC">BC</a></li>
12345              </ul>
12346            </td>
12347
12348          </tr>
12349          <tr class="entries_header">
12350            <th class="th_details" colspan="6">Details</th>
12351          </tr>
12352          <tr class="entry_cont">
12353            <td class="entry_details" colspan="6">
12354              <p>The clockwise rotation angle in degrees,<wbr/> relative to the orientation
12355to the camera,<wbr/> that the JPEG picture needs to be rotated by,<wbr/> to be viewed
12356upright.<wbr/></p>
12357<p>Camera devices may either encode this value into the JPEG EXIF header,<wbr/> or
12358rotate the image data to match this orientation.<wbr/> When the image data is rotated,<wbr/>
12359the thumbnail data will also be rotated.<wbr/></p>
12360<p>Note that this orientation is relative to the orientation of the camera sensor,<wbr/> given
12361by <a href="#static_android.sensor.orientation">android.<wbr/>sensor.<wbr/>orientation</a>.<wbr/></p>
12362<p>To translate from the device orientation given by the Android sensor APIs for camera
12363sensors which are not EXTERNAL,<wbr/> the following sample code may be used:</p>
12364<pre><code>private int getJpegOrientation(CameraCharacteristics c,<wbr/> int deviceOrientation) {
12365    if (deviceOrientation == android.<wbr/>view.<wbr/>Orientation<wbr/>Event<wbr/>Listener.<wbr/>ORIENTATION_<wbr/>UNKNOWN) return 0;
12366    int sensorOrientation = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>SENSOR_<wbr/>ORIENTATION);
12367
12368    //<wbr/> Round device orientation to a multiple of 90
12369    deviceOrientation = (deviceOrientation + 45) /<wbr/> 90 * 90;
12370
12371    //<wbr/> Reverse device orientation for front-facing cameras
12372    boolean facingFront = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING) == Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING_<wbr/>FRONT;
12373    if (facingFront) deviceOrientation = -deviceOrientation;
12374
12375    //<wbr/> Calculate desired JPEG orientation relative to camera orientation to make
12376    //<wbr/> the image upright relative to the device orientation
12377    int jpegOrientation = (sensorOrientation + deviceOrientation + 360) % 360;
12378
12379    return jpegOrientation;
12380}
12381</code></pre>
12382<p>For EXTERNAL cameras the sensor orientation will always be set to 0 and the facing will
12383also be set to EXTERNAL.<wbr/> The above code is not relevant in such case.<wbr/></p>
12384<p>This tag is also used to describe the orientation of the HEIC image capture,<wbr/> in which
12385case the rotation is reflected by
12386<a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>,<wbr/> and not by
12387rotating the image data itself.<wbr/></p>
12388            </td>
12389          </tr>
12390
12391
12392          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12393           <!-- end of entry -->
12394
12395
12396          <tr class="entry" id="dynamic_android.jpeg.quality">
12397            <td class="entry_name
12398             " rowspan="3">
12399              android.<wbr/>jpeg.<wbr/>quality
12400            </td>
12401            <td class="entry_type">
12402                <span class="entry_type_name">byte</span>
12403
12404              <span class="entry_type_visibility"> [public]</span>
12405
12406
12407              <span class="entry_type_hwlevel">[legacy] </span>
12408
12409
12410
12411
12412            </td> <!-- entry_type -->
12413
12414            <td class="entry_description">
12415              <p>Compression quality of the final JPEG
12416image.<wbr/></p>
12417            </td>
12418
12419            <td class="entry_units">
12420            </td>
12421
12422            <td class="entry_range">
12423              <p>1-100; larger is higher quality</p>
12424            </td>
12425
12426            <td class="entry_hal_version">
12427              <p>3.<wbr/>2</p>
12428            </td>
12429
12430            <td class="entry_tags">
12431              <ul class="entry_tags">
12432                  <li><a href="#tag_BC">BC</a></li>
12433              </ul>
12434            </td>
12435
12436          </tr>
12437          <tr class="entries_header">
12438            <th class="th_details" colspan="6">Details</th>
12439          </tr>
12440          <tr class="entry_cont">
12441            <td class="entry_details" colspan="6">
12442              <p>85-95 is typical usage range.<wbr/> This tag is also used to describe the quality
12443of the HEIC image capture.<wbr/></p>
12444            </td>
12445          </tr>
12446
12447
12448          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12449           <!-- end of entry -->
12450
12451
12452          <tr class="entry" id="dynamic_android.jpeg.size">
12453            <td class="entry_name
12454             " rowspan="3">
12455              android.<wbr/>jpeg.<wbr/>size
12456            </td>
12457            <td class="entry_type">
12458                <span class="entry_type_name">int32</span>
12459
12460              <span class="entry_type_visibility"> [system]</span>
12461
12462
12463
12464
12465
12466
12467            </td> <!-- entry_type -->
12468
12469            <td class="entry_description">
12470              <p>The size of the compressed JPEG image,<wbr/> in
12471bytes</p>
12472            </td>
12473
12474            <td class="entry_units">
12475            </td>
12476
12477            <td class="entry_range">
12478              <p>&gt;= 0</p>
12479            </td>
12480
12481            <td class="entry_hal_version">
12482              <p>3.<wbr/>2</p>
12483            </td>
12484
12485            <td class="entry_tags">
12486              <ul class="entry_tags">
12487                  <li><a href="#tag_FUTURE">FUTURE</a></li>
12488              </ul>
12489            </td>
12490
12491          </tr>
12492          <tr class="entries_header">
12493            <th class="th_details" colspan="6">Details</th>
12494          </tr>
12495          <tr class="entry_cont">
12496            <td class="entry_details" colspan="6">
12497              <p>If no JPEG output is produced for the request,<wbr/>
12498this must be 0.<wbr/></p>
12499<p>Otherwise,<wbr/> this describes the real size of the compressed
12500JPEG image placed in the output stream.<wbr/>  More specifically,<wbr/>
12501if <a href="#static_android.jpeg.maxSize">android.<wbr/>jpeg.<wbr/>max<wbr/>Size</a> = 1000000,<wbr/> and a specific capture
12502has <a href="#dynamic_android.jpeg.size">android.<wbr/>jpeg.<wbr/>size</a> = 500000,<wbr/> then the output buffer from
12503the JPEG stream will be 1000000 bytes,<wbr/> of which the first
12504500000 make up the real data.<wbr/></p>
12505            </td>
12506          </tr>
12507
12508
12509          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12510           <!-- end of entry -->
12511
12512
12513          <tr class="entry" id="dynamic_android.jpeg.thumbnailQuality">
12514            <td class="entry_name
12515             " rowspan="3">
12516              android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Quality
12517            </td>
12518            <td class="entry_type">
12519                <span class="entry_type_name">byte</span>
12520
12521              <span class="entry_type_visibility"> [public]</span>
12522
12523
12524              <span class="entry_type_hwlevel">[legacy] </span>
12525
12526
12527
12528
12529            </td> <!-- entry_type -->
12530
12531            <td class="entry_description">
12532              <p>Compression quality of JPEG
12533thumbnail.<wbr/></p>
12534            </td>
12535
12536            <td class="entry_units">
12537            </td>
12538
12539            <td class="entry_range">
12540              <p>1-100; larger is higher quality</p>
12541            </td>
12542
12543            <td class="entry_hal_version">
12544              <p>3.<wbr/>2</p>
12545            </td>
12546
12547            <td class="entry_tags">
12548              <ul class="entry_tags">
12549                  <li><a href="#tag_BC">BC</a></li>
12550              </ul>
12551            </td>
12552
12553          </tr>
12554          <tr class="entries_header">
12555            <th class="th_details" colspan="6">Details</th>
12556          </tr>
12557          <tr class="entry_cont">
12558            <td class="entry_details" colspan="6">
12559              <p>This tag is also used to describe the quality of the HEIC image capture.<wbr/></p>
12560            </td>
12561          </tr>
12562
12563
12564          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12565           <!-- end of entry -->
12566
12567
12568          <tr class="entry" id="dynamic_android.jpeg.thumbnailSize">
12569            <td class="entry_name
12570             " rowspan="5">
12571              android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size
12572            </td>
12573            <td class="entry_type">
12574                <span class="entry_type_name">int32</span>
12575                <span class="entry_type_container">x</span>
12576
12577                <span class="entry_type_array">
12578                  2
12579                </span>
12580              <span class="entry_type_visibility"> [public as size]</span>
12581
12582
12583              <span class="entry_type_hwlevel">[legacy] </span>
12584
12585
12586
12587
12588            </td> <!-- entry_type -->
12589
12590            <td class="entry_description">
12591              <p>Resolution of embedded JPEG thumbnail.<wbr/></p>
12592            </td>
12593
12594            <td class="entry_units">
12595            </td>
12596
12597            <td class="entry_range">
12598              <p><a href="#static_android.jpeg.availableThumbnailSizes">android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes</a></p>
12599            </td>
12600
12601            <td class="entry_hal_version">
12602              <p>3.<wbr/>2</p>
12603            </td>
12604
12605            <td class="entry_tags">
12606              <ul class="entry_tags">
12607                  <li><a href="#tag_BC">BC</a></li>
12608              </ul>
12609            </td>
12610
12611          </tr>
12612          <tr class="entries_header">
12613            <th class="th_details" colspan="6">Details</th>
12614          </tr>
12615          <tr class="entry_cont">
12616            <td class="entry_details" colspan="6">
12617              <p>When set to (0,<wbr/> 0) value,<wbr/> the JPEG EXIF will not contain thumbnail,<wbr/>
12618but the captured JPEG will still be a valid image.<wbr/></p>
12619<p>For best results,<wbr/> when issuing a request for a JPEG image,<wbr/> the thumbnail size selected
12620should have the same aspect ratio as the main JPEG output.<wbr/></p>
12621<p>If the thumbnail image aspect ratio differs from the JPEG primary image aspect
12622ratio,<wbr/> the camera device creates the thumbnail by cropping it from the primary image.<wbr/>
12623For example,<wbr/> if the primary image has 4:3 aspect ratio,<wbr/> the thumbnail image has
1262416:9 aspect ratio,<wbr/> the primary image will be cropped vertically (letterbox) to
12625generate the thumbnail image.<wbr/> The thumbnail image will always have a smaller Field
12626Of View (FOV) than the primary image when aspect ratios differ.<wbr/></p>
12627<p>When an <a href="#controls_android.jpeg.orientation">android.<wbr/>jpeg.<wbr/>orientation</a> of non-zero degree is requested,<wbr/>
12628the camera device will handle thumbnail rotation in one of the following ways:</p>
12629<ul>
12630<li>Set the <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>
12631  and keep jpeg and thumbnail image data unrotated.<wbr/></li>
12632<li>Rotate the jpeg and thumbnail image data and not set
12633  <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>.<wbr/> In this
12634  case,<wbr/> LIMITED or FULL hardware level devices will report rotated thumnail size in
12635  capture result,<wbr/> so the width and height will be interchanged if 90 or 270 degree
12636  orientation is requested.<wbr/> LEGACY device will always report unrotated thumbnail
12637  size.<wbr/></li>
12638</ul>
12639<p>The tag is also used as thumbnail size for HEIC image format capture,<wbr/> in which case the
12640the thumbnail rotation is reflected by
12641<a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>,<wbr/> and not by
12642rotating the thumbnail data itself.<wbr/></p>
12643            </td>
12644          </tr>
12645
12646          <tr class="entries_header">
12647            <th class="th_details" colspan="6">HAL Implementation Details</th>
12648          </tr>
12649          <tr class="entry_cont">
12650            <td class="entry_details" colspan="6">
12651              <p>The HAL must not squeeze or stretch the downscaled primary image to generate thumbnail.<wbr/>
12652The cropping must be done on the primary jpeg image rather than the sensor pre-correction
12653active array.<wbr/> The stream cropping rule specified by "S5.<wbr/> Cropping" in camera3.<wbr/>h doesn't
12654apply to the thumbnail image cropping.<wbr/></p>
12655            </td>
12656          </tr>
12657
12658          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12659           <!-- end of entry -->
12660
12661
12662
12663      <!-- end of kind -->
12664      </tbody>
12665
12666  <!-- end of section -->
12667  <tr><td colspan="7" id="section_lens" class="section">lens</td></tr>
12668
12669
12670      <tr><td colspan="7" class="kind">controls</td></tr>
12671
12672      <thead class="entries_header">
12673        <tr>
12674          <th class="th_name">Property Name</th>
12675          <th class="th_type">Type</th>
12676          <th class="th_description">Description</th>
12677          <th class="th_units">Units</th>
12678          <th class="th_range">Range</th>
12679          <th class="th_hal_version">Initial HIDL HAL version</th>
12680          <th class="th_tags">Tags</th>
12681        </tr>
12682      </thead>
12683
12684      <tbody>
12685
12686
12687
12688
12689
12690
12691
12692
12693
12694
12695          <tr class="entry" id="controls_android.lens.aperture">
12696            <td class="entry_name
12697             " rowspan="3">
12698              android.<wbr/>lens.<wbr/>aperture
12699            </td>
12700            <td class="entry_type">
12701                <span class="entry_type_name">float</span>
12702
12703              <span class="entry_type_visibility"> [public]</span>
12704
12705
12706              <span class="entry_type_hwlevel">[full] </span>
12707
12708
12709
12710
12711            </td> <!-- entry_type -->
12712
12713            <td class="entry_description">
12714              <p>The desired lens aperture size,<wbr/> as a ratio of lens focal length to the
12715effective aperture diameter.<wbr/></p>
12716            </td>
12717
12718            <td class="entry_units">
12719              The f-number (f/<wbr/>N)
12720            </td>
12721
12722            <td class="entry_range">
12723              <p><a href="#static_android.lens.info.availableApertures">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures</a></p>
12724            </td>
12725
12726            <td class="entry_hal_version">
12727              <p>3.<wbr/>2</p>
12728            </td>
12729
12730            <td class="entry_tags">
12731              <ul class="entry_tags">
12732                  <li><a href="#tag_V1">V1</a></li>
12733              </ul>
12734            </td>
12735
12736          </tr>
12737          <tr class="entries_header">
12738            <th class="th_details" colspan="6">Details</th>
12739          </tr>
12740          <tr class="entry_cont">
12741            <td class="entry_details" colspan="6">
12742              <p>Setting this value is only supported on the camera devices that have a variable
12743aperture lens.<wbr/></p>
12744<p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/>
12745this can be set along with <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
12746<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>
12747to achieve manual exposure control.<wbr/></p>
12748<p>The requested aperture value may take several frames to reach the
12749requested value; the camera device will report the current (intermediate)
12750aperture size in capture result metadata while the aperture is changing.<wbr/>
12751While 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>
12752<p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is one of
12753the ON modes,<wbr/> this will be overridden by the camera device
12754auto-exposure algorithm,<wbr/> the overridden values are then provided
12755back to the user in the corresponding result.<wbr/></p>
12756            </td>
12757          </tr>
12758
12759
12760          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12761           <!-- end of entry -->
12762
12763
12764          <tr class="entry" id="controls_android.lens.filterDensity">
12765            <td class="entry_name
12766             " rowspan="3">
12767              android.<wbr/>lens.<wbr/>filter<wbr/>Density
12768            </td>
12769            <td class="entry_type">
12770                <span class="entry_type_name">float</span>
12771
12772              <span class="entry_type_visibility"> [public]</span>
12773
12774
12775              <span class="entry_type_hwlevel">[full] </span>
12776
12777
12778
12779
12780            </td> <!-- entry_type -->
12781
12782            <td class="entry_description">
12783              <p>The desired setting for the lens neutral density filter(s).<wbr/></p>
12784            </td>
12785
12786            <td class="entry_units">
12787              Exposure Value (EV)
12788            </td>
12789
12790            <td class="entry_range">
12791              <p><a href="#static_android.lens.info.availableFilterDensities">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities</a></p>
12792            </td>
12793
12794            <td class="entry_hal_version">
12795              <p>3.<wbr/>2</p>
12796            </td>
12797
12798            <td class="entry_tags">
12799              <ul class="entry_tags">
12800                  <li><a href="#tag_V1">V1</a></li>
12801              </ul>
12802            </td>
12803
12804          </tr>
12805          <tr class="entries_header">
12806            <th class="th_details" colspan="6">Details</th>
12807          </tr>
12808          <tr class="entry_cont">
12809            <td class="entry_details" colspan="6">
12810              <p>This control will not be supported on most camera devices.<wbr/></p>
12811<p>Lens filters are typically used to lower the amount of light the
12812sensor is exposed to (measured in steps of EV).<wbr/> As used here,<wbr/> an EV
12813step is the standard logarithmic representation,<wbr/> which are
12814non-negative,<wbr/> and inversely proportional to the amount of light
12815hitting the sensor.<wbr/>  For example,<wbr/> setting this to 0 would result
12816in no reduction of the incoming light,<wbr/> and setting this to 2 would
12817mean that the filter is set to reduce incoming light by two stops
12818(allowing 1/<wbr/>4 of the prior amount of light to the sensor).<wbr/></p>
12819<p>It may take several frames before the lens filter density changes
12820to the requested value.<wbr/> While the filter density is still changing,<wbr/>
12821<a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p>
12822            </td>
12823          </tr>
12824
12825
12826          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12827           <!-- end of entry -->
12828
12829
12830          <tr class="entry" id="controls_android.lens.focalLength">
12831            <td class="entry_name
12832             " rowspan="5">
12833              android.<wbr/>lens.<wbr/>focal<wbr/>Length
12834            </td>
12835            <td class="entry_type">
12836                <span class="entry_type_name">float</span>
12837
12838              <span class="entry_type_visibility"> [public]</span>
12839
12840
12841              <span class="entry_type_hwlevel">[legacy] </span>
12842
12843
12844
12845
12846            </td> <!-- entry_type -->
12847
12848            <td class="entry_description">
12849              <p>The desired lens focal length; used for optical zoom.<wbr/></p>
12850            </td>
12851
12852            <td class="entry_units">
12853              Millimeters
12854            </td>
12855
12856            <td class="entry_range">
12857              <p><a href="#static_android.lens.info.availableFocalLengths">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths</a></p>
12858            </td>
12859
12860            <td class="entry_hal_version">
12861              <p>3.<wbr/>2</p>
12862            </td>
12863
12864            <td class="entry_tags">
12865              <ul class="entry_tags">
12866                  <li><a href="#tag_V1">V1</a></li>
12867              </ul>
12868            </td>
12869
12870          </tr>
12871          <tr class="entries_header">
12872            <th class="th_details" colspan="6">Details</th>
12873          </tr>
12874          <tr class="entry_cont">
12875            <td class="entry_details" colspan="6">
12876              <p>This setting controls the physical focal length of the camera
12877device's lens.<wbr/> Changing the focal length changes the field of
12878view of the camera device,<wbr/> and is usually used for optical zoom.<wbr/></p>
12879<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
12880setting won't be applied instantaneously,<wbr/> and it may take several
12881frames before the lens can change to the requested focal length.<wbr/>
12882While the focal length is still changing,<wbr/> <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will
12883be set to MOVING.<wbr/></p>
12884<p>Optical zoom will not be supported on most devices.<wbr/></p>
12885            </td>
12886          </tr>
12887
12888          <tr class="entries_header">
12889            <th class="th_details" colspan="6">HAL Implementation Details</th>
12890          </tr>
12891          <tr class="entry_cont">
12892            <td class="entry_details" colspan="6">
12893              <p>For a logical camera device supporting both optical and digital zoom,<wbr/> if focalLength and
12894cropRegion change in the same request,<wbr/> the camera device must make sure that the new
12895focalLength and cropRegion take effect in the same frame.<wbr/> This is to make sure that there
12896is no visible field-of-view jump during zoom.<wbr/> For example,<wbr/> if cropRegion is applied
12897immediately,<wbr/> but focalLength takes more than 1 frame to take effect,<wbr/> the camera device
12898will delay the cropRegion so that it's synchronized with focalLength.<wbr/></p>
12899            </td>
12900          </tr>
12901
12902          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12903           <!-- end of entry -->
12904
12905
12906          <tr class="entry" id="controls_android.lens.focusDistance">
12907            <td class="entry_name
12908             " rowspan="3">
12909              android.<wbr/>lens.<wbr/>focus<wbr/>Distance
12910            </td>
12911            <td class="entry_type">
12912                <span class="entry_type_name">float</span>
12913
12914              <span class="entry_type_visibility"> [public]</span>
12915
12916
12917              <span class="entry_type_hwlevel">[full] </span>
12918
12919
12920
12921
12922            </td> <!-- entry_type -->
12923
12924            <td class="entry_description">
12925              <p>Desired distance to plane of sharpest focus,<wbr/>
12926measured from frontmost surface of the lens.<wbr/></p>
12927            </td>
12928
12929            <td class="entry_units">
12930              See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
12931            </td>
12932
12933            <td class="entry_range">
12934              <p>&gt;= 0</p>
12935            </td>
12936
12937            <td class="entry_hal_version">
12938              <p>3.<wbr/>2</p>
12939            </td>
12940
12941            <td class="entry_tags">
12942              <ul class="entry_tags">
12943                  <li><a href="#tag_BC">BC</a></li>
12944                  <li><a href="#tag_V1">V1</a></li>
12945              </ul>
12946            </td>
12947
12948          </tr>
12949          <tr class="entries_header">
12950            <th class="th_details" colspan="6">Details</th>
12951          </tr>
12952          <tr class="entry_cont">
12953            <td class="entry_details" colspan="6">
12954              <p>This control can be used for setting manual focus,<wbr/> on devices that support
12955the MANUAL_<wbr/>SENSOR capability and have a variable-focus lens (see
12956<a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a>).<wbr/></p>
12957<p>A value of <code>0.<wbr/>0f</code> means infinity focus.<wbr/> The value set will be clamped to
12958<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>
12959<p>Like <a href="#controls_android.lens.focalLength">android.<wbr/>lens.<wbr/>focal<wbr/>Length</a>,<wbr/> this setting won't be applied
12960instantaneously,<wbr/> and it may take several frames before the lens
12961can move to the requested focus distance.<wbr/> While the lens is still moving,<wbr/>
12962<a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p>
12963<p>LEGACY devices support at most setting this to <code>0.<wbr/>0f</code>
12964for infinity focus.<wbr/></p>
12965            </td>
12966          </tr>
12967
12968
12969          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12970           <!-- end of entry -->
12971
12972
12973          <tr class="entry" id="controls_android.lens.opticalStabilizationMode">
12974            <td class="entry_name
12975             " rowspan="3">
12976              android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode
12977            </td>
12978            <td class="entry_type">
12979                <span class="entry_type_name entry_type_name_enum">byte</span>
12980
12981              <span class="entry_type_visibility"> [public]</span>
12982
12983
12984              <span class="entry_type_hwlevel">[limited] </span>
12985
12986
12987
12988                <ul class="entry_type_enum">
12989                  <li>
12990                    <span class="entry_type_enum_name">OFF (v3.2)</span>
12991                    <span class="entry_type_enum_notes"><p>Optical stabilization is unavailable.<wbr/></p></span>
12992                  </li>
12993                  <li>
12994                    <span class="entry_type_enum_name">ON (v3.2)</span>
12995                    <span class="entry_type_enum_optional">[optional]</span>
12996                    <span class="entry_type_enum_notes"><p>Optical stabilization is enabled.<wbr/></p></span>
12997                  </li>
12998                </ul>
12999
13000            </td> <!-- entry_type -->
13001
13002            <td class="entry_description">
13003              <p>Sets whether the camera device uses optical image stabilization (OIS)
13004when capturing images.<wbr/></p>
13005            </td>
13006
13007            <td class="entry_units">
13008            </td>
13009
13010            <td class="entry_range">
13011              <p><a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a></p>
13012            </td>
13013
13014            <td class="entry_hal_version">
13015              <p>3.<wbr/>2</p>
13016            </td>
13017
13018            <td class="entry_tags">
13019              <ul class="entry_tags">
13020                  <li><a href="#tag_V1">V1</a></li>
13021              </ul>
13022            </td>
13023
13024          </tr>
13025          <tr class="entries_header">
13026            <th class="th_details" colspan="6">Details</th>
13027          </tr>
13028          <tr class="entry_cont">
13029            <td class="entry_details" colspan="6">
13030              <p>OIS is used to compensate for motion blur due to small
13031movements of the camera during capture.<wbr/> Unlike digital image
13032stabilization (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> OIS
13033makes use of mechanical elements to stabilize the camera
13034sensor,<wbr/> and thus allows for longer exposure times before
13035camera shake becomes apparent.<wbr/></p>
13036<p>Switching between different optical stabilization modes may take several
13037frames to initialize,<wbr/> the camera device will report the current mode in
13038capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/> the
13039optical stabilization modes in the first several capture results may still
13040be "OFF",<wbr/> and it will become "ON" when the initialization is done.<wbr/></p>
13041<p>If a camera device supports both OIS and digital image stabilization
13042(<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may produce undesirable
13043interaction,<wbr/> so it is recommended not to enable both at the same time.<wbr/></p>
13044<p>Not all devices will support OIS; see
13045<a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a> for
13046available controls.<wbr/></p>
13047            </td>
13048          </tr>
13049
13050
13051          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13052           <!-- end of entry -->
13053
13054
13055
13056      <!-- end of kind -->
13057      </tbody>
13058      <tr><td colspan="7" class="kind">static</td></tr>
13059
13060      <thead class="entries_header">
13061        <tr>
13062          <th class="th_name">Property Name</th>
13063          <th class="th_type">Type</th>
13064          <th class="th_description">Description</th>
13065          <th class="th_units">Units</th>
13066          <th class="th_range">Range</th>
13067          <th class="th_hal_version">Initial HIDL HAL version</th>
13068          <th class="th_tags">Tags</th>
13069        </tr>
13070      </thead>
13071
13072      <tbody>
13073
13074
13075
13076
13077
13078
13079
13080
13081
13082
13083
13084
13085          <tr class="entry" id="static_android.lens.info.availableApertures">
13086            <td class="entry_name
13087             " rowspan="3">
13088              android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures
13089            </td>
13090            <td class="entry_type">
13091                <span class="entry_type_name">float</span>
13092                <span class="entry_type_container">x</span>
13093
13094                <span class="entry_type_array">
13095                  n
13096                </span>
13097              <span class="entry_type_visibility"> [public]</span>
13098
13099
13100              <span class="entry_type_hwlevel">[full] </span>
13101
13102
13103
13104
13105            </td> <!-- entry_type -->
13106
13107            <td class="entry_description">
13108              <p>List of aperture size values for <a href="#controls_android.lens.aperture">android.<wbr/>lens.<wbr/>aperture</a> that are
13109supported by this camera device.<wbr/></p>
13110            </td>
13111
13112            <td class="entry_units">
13113              The aperture f-number
13114            </td>
13115
13116            <td class="entry_range">
13117            </td>
13118
13119            <td class="entry_hal_version">
13120              <p>3.<wbr/>2</p>
13121            </td>
13122
13123            <td class="entry_tags">
13124              <ul class="entry_tags">
13125                  <li><a href="#tag_V1">V1</a></li>
13126              </ul>
13127            </td>
13128
13129          </tr>
13130          <tr class="entries_header">
13131            <th class="th_details" colspan="6">Details</th>
13132          </tr>
13133          <tr class="entry_cont">
13134            <td class="entry_details" colspan="6">
13135              <p>If the camera device doesn't support a variable lens aperture,<wbr/>
13136this list will contain only one value,<wbr/> which is the fixed aperture size.<wbr/></p>
13137<p>If the camera device supports a variable aperture,<wbr/> the aperture values
13138in this list will be sorted in ascending order.<wbr/></p>
13139            </td>
13140          </tr>
13141
13142
13143          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13144           <!-- end of entry -->
13145
13146
13147          <tr class="entry" id="static_android.lens.info.availableFilterDensities">
13148            <td class="entry_name
13149             " rowspan="3">
13150              android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities
13151            </td>
13152            <td class="entry_type">
13153                <span class="entry_type_name">float</span>
13154                <span class="entry_type_container">x</span>
13155
13156                <span class="entry_type_array">
13157                  n
13158                </span>
13159              <span class="entry_type_visibility"> [public]</span>
13160
13161
13162              <span class="entry_type_hwlevel">[full] </span>
13163
13164
13165
13166
13167            </td> <!-- entry_type -->
13168
13169            <td class="entry_description">
13170              <p>List of neutral density filter values for
13171<a href="#controls_android.lens.filterDensity">android.<wbr/>lens.<wbr/>filter<wbr/>Density</a> that are supported by this camera device.<wbr/></p>
13172            </td>
13173
13174            <td class="entry_units">
13175              Exposure value (EV)
13176            </td>
13177
13178            <td class="entry_range">
13179              <p>Values are &gt;= 0</p>
13180            </td>
13181
13182            <td class="entry_hal_version">
13183              <p>3.<wbr/>2</p>
13184            </td>
13185
13186            <td class="entry_tags">
13187              <ul class="entry_tags">
13188                  <li><a href="#tag_V1">V1</a></li>
13189              </ul>
13190            </td>
13191
13192          </tr>
13193          <tr class="entries_header">
13194            <th class="th_details" colspan="6">Details</th>
13195          </tr>
13196          <tr class="entry_cont">
13197            <td class="entry_details" colspan="6">
13198              <p>If a neutral density filter is not supported by this camera device,<wbr/>
13199this list will contain only 0.<wbr/> Otherwise,<wbr/> this list will include every
13200filter density supported by the camera device,<wbr/> in ascending order.<wbr/></p>
13201            </td>
13202          </tr>
13203
13204
13205          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13206           <!-- end of entry -->
13207
13208
13209          <tr class="entry" id="static_android.lens.info.availableFocalLengths">
13210            <td class="entry_name
13211             " rowspan="3">
13212              android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths
13213            </td>
13214            <td class="entry_type">
13215                <span class="entry_type_name">float</span>
13216                <span class="entry_type_container">x</span>
13217
13218                <span class="entry_type_array">
13219                  n
13220                </span>
13221              <span class="entry_type_visibility"> [public]</span>
13222
13223
13224              <span class="entry_type_hwlevel">[legacy] </span>
13225
13226
13227                <div class="entry_type_notes">The list of available focal lengths</div>
13228
13229
13230            </td> <!-- entry_type -->
13231
13232            <td class="entry_description">
13233              <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
13234device.<wbr/></p>
13235            </td>
13236
13237            <td class="entry_units">
13238              Millimeters
13239            </td>
13240
13241            <td class="entry_range">
13242              <p>Values are &gt; 0</p>
13243            </td>
13244
13245            <td class="entry_hal_version">
13246              <p>3.<wbr/>2</p>
13247            </td>
13248
13249            <td class="entry_tags">
13250              <ul class="entry_tags">
13251                  <li><a href="#tag_BC">BC</a></li>
13252                  <li><a href="#tag_V1">V1</a></li>
13253              </ul>
13254            </td>
13255
13256          </tr>
13257          <tr class="entries_header">
13258            <th class="th_details" colspan="6">Details</th>
13259          </tr>
13260          <tr class="entry_cont">
13261            <td class="entry_details" colspan="6">
13262              <p>If optical zoom is not supported,<wbr/> this list will only contain
13263a single value corresponding to the fixed focal length of the
13264device.<wbr/> Otherwise,<wbr/> this list will include every focal length supported
13265by the camera device,<wbr/> in ascending order.<wbr/></p>
13266            </td>
13267          </tr>
13268
13269
13270          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13271           <!-- end of entry -->
13272
13273
13274          <tr class="entry" id="static_android.lens.info.availableOpticalStabilization">
13275            <td class="entry_name
13276             " rowspan="3">
13277              android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization
13278            </td>
13279            <td class="entry_type">
13280                <span class="entry_type_name">byte</span>
13281                <span class="entry_type_container">x</span>
13282
13283                <span class="entry_type_array">
13284                  n
13285                </span>
13286              <span class="entry_type_visibility"> [public as enumList]</span>
13287
13288
13289              <span class="entry_type_hwlevel">[limited] </span>
13290
13291
13292                <div class="entry_type_notes">list of enums</div>
13293
13294
13295            </td> <!-- entry_type -->
13296
13297            <td class="entry_description">
13298              <p>List of optical image stabilization (OIS) modes for
13299<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>
13300            </td>
13301
13302            <td class="entry_units">
13303            </td>
13304
13305            <td class="entry_range">
13306              <p>Any value listed in <a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a></p>
13307            </td>
13308
13309            <td class="entry_hal_version">
13310              <p>3.<wbr/>2</p>
13311            </td>
13312
13313            <td class="entry_tags">
13314              <ul class="entry_tags">
13315                  <li><a href="#tag_V1">V1</a></li>
13316              </ul>
13317            </td>
13318
13319          </tr>
13320          <tr class="entries_header">
13321            <th class="th_details" colspan="6">Details</th>
13322          </tr>
13323          <tr class="entry_cont">
13324            <td class="entry_details" colspan="6">
13325              <p>If OIS is not supported by a given camera device,<wbr/> this list will
13326contain only OFF.<wbr/></p>
13327            </td>
13328          </tr>
13329
13330
13331          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13332           <!-- end of entry -->
13333
13334
13335          <tr class="entry" id="static_android.lens.info.hyperfocalDistance">
13336            <td class="entry_name
13337             " rowspan="3">
13338              android.<wbr/>lens.<wbr/>info.<wbr/>hyperfocal<wbr/>Distance
13339            </td>
13340            <td class="entry_type">
13341                <span class="entry_type_name">float</span>
13342
13343              <span class="entry_type_visibility"> [public]</span>
13344
13345
13346              <span class="entry_type_hwlevel">[limited] </span>
13347
13348
13349
13350
13351            </td> <!-- entry_type -->
13352
13353            <td class="entry_description">
13354              <p>Hyperfocal distance for this lens.<wbr/></p>
13355            </td>
13356
13357            <td class="entry_units">
13358              See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
13359            </td>
13360
13361            <td class="entry_range">
13362              <p>If lens is fixed focus,<wbr/> &gt;= 0.<wbr/> If lens has focuser unit,<wbr/> the value is
13363within <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>
13364            </td>
13365
13366            <td class="entry_hal_version">
13367              <p>3.<wbr/>2</p>
13368            </td>
13369
13370            <td class="entry_tags">
13371            </td>
13372
13373          </tr>
13374          <tr class="entries_header">
13375            <th class="th_details" colspan="6">Details</th>
13376          </tr>
13377          <tr class="entry_cont">
13378            <td class="entry_details" colspan="6">
13379              <p>If the lens is not fixed focus,<wbr/> the camera device will report this
13380field 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>
13381            </td>
13382          </tr>
13383
13384
13385          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13386           <!-- end of entry -->
13387
13388
13389          <tr class="entry" id="static_android.lens.info.minimumFocusDistance">
13390            <td class="entry_name
13391             " rowspan="5">
13392              android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance
13393            </td>
13394            <td class="entry_type">
13395                <span class="entry_type_name">float</span>
13396
13397              <span class="entry_type_visibility"> [public]</span>
13398
13399
13400              <span class="entry_type_hwlevel">[limited] </span>
13401
13402
13403
13404
13405            </td> <!-- entry_type -->
13406
13407            <td class="entry_description">
13408              <p>Shortest distance from frontmost surface
13409of the lens that can be brought into sharp focus.<wbr/></p>
13410            </td>
13411
13412            <td class="entry_units">
13413              See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
13414            </td>
13415
13416            <td class="entry_range">
13417              <p>&gt;= 0</p>
13418            </td>
13419
13420            <td class="entry_hal_version">
13421              <p>3.<wbr/>2</p>
13422            </td>
13423
13424            <td class="entry_tags">
13425              <ul class="entry_tags">
13426                  <li><a href="#tag_V1">V1</a></li>
13427              </ul>
13428            </td>
13429
13430          </tr>
13431          <tr class="entries_header">
13432            <th class="th_details" colspan="6">Details</th>
13433          </tr>
13434          <tr class="entry_cont">
13435            <td class="entry_details" colspan="6">
13436              <p>If the lens is fixed-focus,<wbr/> this will be
134370.<wbr/></p>
13438            </td>
13439          </tr>
13440
13441          <tr class="entries_header">
13442            <th class="th_details" colspan="6">HAL Implementation Details</th>
13443          </tr>
13444          <tr class="entry_cont">
13445            <td class="entry_details" colspan="6">
13446              <p>Mandatory for FULL devices; LIMITED devices
13447must always set this value to 0 for fixed-focus; and may omit
13448the minimum focus distance otherwise.<wbr/></p>
13449<p>This field is also mandatory for all devices advertising
13450the MANUAL_<wbr/>SENSOR capability.<wbr/></p>
13451            </td>
13452          </tr>
13453
13454          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13455           <!-- end of entry -->
13456
13457
13458          <tr class="entry" id="static_android.lens.info.shadingMapSize">
13459            <td class="entry_name
13460             " rowspan="3">
13461              android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size
13462            </td>
13463            <td class="entry_type">
13464                <span class="entry_type_name">int32</span>
13465                <span class="entry_type_container">x</span>
13466
13467                <span class="entry_type_array">
13468                  2
13469                </span>
13470              <span class="entry_type_visibility"> [ndk_public as size]</span>
13471
13472
13473              <span class="entry_type_hwlevel">[full] </span>
13474
13475
13476                <div class="entry_type_notes">width and height (N,<wbr/> M) of lens shading map provided by the camera device.<wbr/></div>
13477
13478
13479            </td> <!-- entry_type -->
13480
13481            <td class="entry_description">
13482              <p>Dimensions of lens shading map.<wbr/></p>
13483            </td>
13484
13485            <td class="entry_units">
13486            </td>
13487
13488            <td class="entry_range">
13489              <p>Both values &gt;= 1</p>
13490            </td>
13491
13492            <td class="entry_hal_version">
13493              <p>3.<wbr/>2</p>
13494            </td>
13495
13496            <td class="entry_tags">
13497              <ul class="entry_tags">
13498                  <li><a href="#tag_V1">V1</a></li>
13499              </ul>
13500            </td>
13501
13502          </tr>
13503          <tr class="entries_header">
13504            <th class="th_details" colspan="6">Details</th>
13505          </tr>
13506          <tr class="entry_cont">
13507            <td class="entry_details" colspan="6">
13508              <p>The map should be on the order of 30-40 rows and columns,<wbr/> and
13509must be smaller than 64x64.<wbr/></p>
13510            </td>
13511          </tr>
13512
13513
13514          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13515           <!-- end of entry -->
13516
13517
13518          <tr class="entry" id="static_android.lens.info.focusDistanceCalibration">
13519            <td class="entry_name
13520             " rowspan="5">
13521              android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration
13522            </td>
13523            <td class="entry_type">
13524                <span class="entry_type_name entry_type_name_enum">byte</span>
13525
13526              <span class="entry_type_visibility"> [public]</span>
13527
13528
13529              <span class="entry_type_hwlevel">[limited] </span>
13530
13531
13532
13533                <ul class="entry_type_enum">
13534                  <li>
13535                    <span class="entry_type_enum_name">UNCALIBRATED (v3.2)</span>
13536                    <span class="entry_type_enum_notes"><p>The lens focus distance is not accurate,<wbr/> and the units used for
13537<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> do not correspond to any physical units.<wbr/></p>
13538<p>Setting the lens to the same focus distance on separate occasions may
13539result in a different real focus distance,<wbr/> depending on factors such
13540as the orientation of the device,<wbr/> the age of the focusing mechanism,<wbr/>
13541and the device temperature.<wbr/> The focus distance value will still be
13542in 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
13543represents the farthest focus.<wbr/></p></span>
13544                  </li>
13545                  <li>
13546                    <span class="entry_type_enum_name">APPROXIMATE (v3.2)</span>
13547                    <span class="entry_type_enum_notes"><p>The lens focus distance is measured in diopters.<wbr/></p>
13548<p>However,<wbr/> setting the lens to the same focus distance
13549on separate occasions may result in a different real
13550focus distance,<wbr/> depending on factors such as the
13551orientation of the device,<wbr/> the age of the focusing
13552mechanism,<wbr/> and the device temperature.<wbr/></p></span>
13553                  </li>
13554                  <li>
13555                    <span class="entry_type_enum_name">CALIBRATED (v3.2)</span>
13556                    <span class="entry_type_enum_notes"><p>The lens focus distance is measured in diopters,<wbr/> and
13557is calibrated.<wbr/></p>
13558<p>The lens mechanism is calibrated so that setting the
13559same focus distance is repeatable on multiple
13560occasions with good accuracy,<wbr/> and the focus distance
13561corresponds to the real physical distance to the plane
13562of best focus.<wbr/></p></span>
13563                  </li>
13564                </ul>
13565
13566            </td> <!-- entry_type -->
13567
13568            <td class="entry_description">
13569              <p>The lens focus distance calibration quality.<wbr/></p>
13570            </td>
13571
13572            <td class="entry_units">
13573            </td>
13574
13575            <td class="entry_range">
13576            </td>
13577
13578            <td class="entry_hal_version">
13579              <p>3.<wbr/>2</p>
13580            </td>
13581
13582            <td class="entry_tags">
13583              <ul class="entry_tags">
13584                  <li><a href="#tag_V1">V1</a></li>
13585              </ul>
13586            </td>
13587
13588          </tr>
13589          <tr class="entries_header">
13590            <th class="th_details" colspan="6">Details</th>
13591          </tr>
13592          <tr class="entry_cont">
13593            <td class="entry_details" colspan="6">
13594              <p>The lens focus distance calibration quality determines the reliability of
13595focus related metadata entries,<wbr/> i.<wbr/>e.<wbr/> <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a>,<wbr/>
13596<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
13597<a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a>.<wbr/></p>
13598<p>APPROXIMATE and CALIBRATED devices report the focus metadata in
13599units of diopters (1/<wbr/>meter),<wbr/> so <code>0.<wbr/>0f</code> represents focusing at infinity,<wbr/>
13600and increasing positive numbers represent focusing closer and closer
13601to the camera device.<wbr/> The focus distance control also uses diopters
13602on these devices.<wbr/></p>
13603<p>UNCALIBRATED devices do not use units that are directly comparable
13604to any real physical measurement,<wbr/> but <code>0.<wbr/>0f</code> still represents farthest
13605focus,<wbr/> and <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a> represents the
13606nearest focus the device can achieve.<wbr/></p>
13607            </td>
13608          </tr>
13609
13610          <tr class="entries_header">
13611            <th class="th_details" colspan="6">HAL Implementation Details</th>
13612          </tr>
13613          <tr class="entry_cont">
13614            <td class="entry_details" colspan="6">
13615              <p>For devices advertise APPROXIMATE quality or higher,<wbr/> diopters 0 (infinity
13616focus) must work.<wbr/> When autofocus is disabled (<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> == OFF)
13617and the lens focus distance is set to 0 diopters
13618(<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> == 0),<wbr/> the lens will move to focus at infinity
13619and is stably focused at infinity even if the device tilts.<wbr/> It may take the
13620lens some time to move; during the move the lens state should be MOVING and
13621the output diopter value should be changing toward 0.<wbr/></p>
13622            </td>
13623          </tr>
13624
13625          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13626           <!-- end of entry -->
13627
13628
13629
13630
13631
13632          <tr class="entry" id="static_android.lens.facing">
13633            <td class="entry_name
13634             " rowspan="1">
13635              android.<wbr/>lens.<wbr/>facing
13636            </td>
13637            <td class="entry_type">
13638                <span class="entry_type_name entry_type_name_enum">byte</span>
13639
13640              <span class="entry_type_visibility"> [public]</span>
13641
13642
13643              <span class="entry_type_hwlevel">[legacy] </span>
13644
13645
13646
13647                <ul class="entry_type_enum">
13648                  <li>
13649                    <span class="entry_type_enum_name">FRONT (v3.2)</span>
13650                    <span class="entry_type_enum_notes"><p>The camera device faces the same direction as the device's screen.<wbr/></p></span>
13651                  </li>
13652                  <li>
13653                    <span class="entry_type_enum_name">BACK (v3.2)</span>
13654                    <span class="entry_type_enum_notes"><p>The camera device faces the opposite direction as the device's screen.<wbr/></p></span>
13655                  </li>
13656                  <li>
13657                    <span class="entry_type_enum_name">EXTERNAL (v3.2)</span>
13658                    <span class="entry_type_enum_notes"><p>The camera device is an external camera,<wbr/> and has no fixed facing relative to the
13659device's screen.<wbr/></p></span>
13660                  </li>
13661                </ul>
13662
13663            </td> <!-- entry_type -->
13664
13665            <td class="entry_description">
13666              <p>Direction the camera faces relative to
13667device screen.<wbr/></p>
13668            </td>
13669
13670            <td class="entry_units">
13671            </td>
13672
13673            <td class="entry_range">
13674            </td>
13675
13676            <td class="entry_hal_version">
13677              <p>3.<wbr/>2</p>
13678            </td>
13679
13680            <td class="entry_tags">
13681            </td>
13682
13683          </tr>
13684
13685
13686          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13687           <!-- end of entry -->
13688
13689
13690          <tr class="entry" id="static_android.lens.poseRotation">
13691            <td class="entry_name
13692             " rowspan="3">
13693              android.<wbr/>lens.<wbr/>pose<wbr/>Rotation
13694            </td>
13695            <td class="entry_type">
13696                <span class="entry_type_name">float</span>
13697                <span class="entry_type_container">x</span>
13698
13699                <span class="entry_type_array">
13700                  4
13701                </span>
13702              <span class="entry_type_visibility"> [public]</span>
13703
13704
13705
13706
13707
13708
13709            </td> <!-- entry_type -->
13710
13711            <td class="entry_description">
13712              <p>The orientation of the camera relative to the sensor
13713coordinate system.<wbr/></p>
13714            </td>
13715
13716            <td class="entry_units">
13717
13718            Quaternion coefficients
13719
13720            </td>
13721
13722            <td class="entry_range">
13723            </td>
13724
13725            <td class="entry_hal_version">
13726              <p>3.<wbr/>2</p>
13727            </td>
13728
13729            <td class="entry_tags">
13730              <ul class="entry_tags">
13731                  <li><a href="#tag_DEPTH">DEPTH</a></li>
13732              </ul>
13733            </td>
13734
13735          </tr>
13736          <tr class="entries_header">
13737            <th class="th_details" colspan="6">Details</th>
13738          </tr>
13739          <tr class="entry_cont">
13740            <td class="entry_details" colspan="6">
13741              <p>The four coefficients that describe the quaternion
13742rotation from the Android sensor coordinate system to a
13743camera-aligned coordinate system where the X-axis is
13744aligned with the long side of the image sensor,<wbr/> the Y-axis
13745is aligned with the short side of the image sensor,<wbr/> and
13746the Z-axis is aligned with the optical axis of the sensor.<wbr/></p>
13747<p>To convert from the quaternion coefficients <code>(x,<wbr/>y,<wbr/>z,<wbr/>w)</code>
13748to the axis of rotation <code>(a_<wbr/>x,<wbr/> a_<wbr/>y,<wbr/> a_<wbr/>z)</code> and rotation
13749amount <code>theta</code>,<wbr/> the following formulas can be used:</p>
13750<pre><code> theta = 2 * acos(w)
13751a_<wbr/>x = x /<wbr/> sin(theta/<wbr/>2)
13752a_<wbr/>y = y /<wbr/> sin(theta/<wbr/>2)
13753a_<wbr/>z = z /<wbr/> sin(theta/<wbr/>2)
13754</code></pre>
13755<p>To create a 3x3 rotation matrix that applies the rotation
13756defined by this quaternion,<wbr/> the following matrix can be
13757used:</p>
13758<pre><code>R = [ 1 - 2y^2 - 2z^2,<wbr/>       2xy - 2zw,<wbr/>       2xz + 2yw,<wbr/>
13759           2xy + 2zw,<wbr/> 1 - 2x^2 - 2z^2,<wbr/>       2yz - 2xw,<wbr/>
13760           2xz - 2yw,<wbr/>       2yz + 2xw,<wbr/> 1 - 2x^2 - 2y^2 ]
13761</code></pre>
13762<p>This matrix can then be used to apply the rotation to a
13763 column vector point with</p>
13764<p><code>p' = Rp</code></p>
13765<p>where <code>p</code> is in the device sensor coordinate system,<wbr/> and
13766 <code>p'</code> is in the camera-oriented coordinate system.<wbr/></p>
13767            </td>
13768          </tr>
13769
13770
13771          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13772           <!-- end of entry -->
13773
13774
13775          <tr class="entry" id="static_android.lens.poseTranslation">
13776            <td class="entry_name
13777             " rowspan="3">
13778              android.<wbr/>lens.<wbr/>pose<wbr/>Translation
13779            </td>
13780            <td class="entry_type">
13781                <span class="entry_type_name">float</span>
13782                <span class="entry_type_container">x</span>
13783
13784                <span class="entry_type_array">
13785                  3
13786                </span>
13787              <span class="entry_type_visibility"> [public]</span>
13788
13789
13790
13791
13792
13793
13794            </td> <!-- entry_type -->
13795
13796            <td class="entry_description">
13797              <p>Position of the camera optical center.<wbr/></p>
13798            </td>
13799
13800            <td class="entry_units">
13801              Meters
13802            </td>
13803
13804            <td class="entry_range">
13805            </td>
13806
13807            <td class="entry_hal_version">
13808              <p>3.<wbr/>2</p>
13809            </td>
13810
13811            <td class="entry_tags">
13812              <ul class="entry_tags">
13813                  <li><a href="#tag_DEPTH">DEPTH</a></li>
13814              </ul>
13815            </td>
13816
13817          </tr>
13818          <tr class="entries_header">
13819            <th class="th_details" colspan="6">Details</th>
13820          </tr>
13821          <tr class="entry_cont">
13822            <td class="entry_details" colspan="6">
13823              <p>The position of the camera device's lens optical center,<wbr/>
13824as a three-dimensional vector <code>(x,<wbr/>y,<wbr/>z)</code>.<wbr/></p>
13825<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
13826is relative to the optical center of the largest camera device facing in the same
13827direction as this camera,<wbr/> in the <a href="https://developer.android.com/reference/android/hardware/SensorEvent.html">Android sensor
13828coordinate axes</a>.<wbr/> Note that only the axis definitions are shared with the sensor
13829coordinate system,<wbr/> but not the origin.<wbr/></p>
13830<p>If this device is the largest or only camera device with a given facing,<wbr/> then this
13831position will be <code>(0,<wbr/> 0,<wbr/> 0)</code>; a camera device with a lens optical center located 3 cm
13832from the main sensor along the +X axis (to the right from the user's perspective) will
13833report <code>(0.<wbr/>03,<wbr/> 0,<wbr/> 0)</code>.<wbr/>  Note that this means that,<wbr/> for many computer vision
13834applications,<wbr/> the position needs to be negated to convert it to a translation from the
13835camera to the origin.<wbr/></p>
13836<p>To transform a pixel coordinates between two cameras facing the same direction,<wbr/> first
13837the source camera <a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a> must be corrected for.<wbr/>  Then the source
13838camera <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> needs to be applied,<wbr/> followed by the
13839<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
13840relative to the destination camera,<wbr/> the <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> of the destination
13841camera,<wbr/> and finally the inverse of <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> of the destination
13842camera.<wbr/> This obtains a radial-distortion-free coordinate in the destination camera pixel
13843coordinates.<wbr/></p>
13844<p>To compare this against a real image from the destination camera,<wbr/> the destination camera
13845image then needs to be corrected for radial distortion before comparison or sampling.<wbr/></p>
13846<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
13847the center of the primary gyroscope on the device.<wbr/> The axis definitions are the same as
13848with PRIMARY_<wbr/>CAMERA.<wbr/></p>
13849            </td>
13850          </tr>
13851
13852
13853          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13854           <!-- end of entry -->
13855
13856
13857          <tr class="entry" id="static_android.lens.intrinsicCalibration">
13858            <td class="entry_name
13859             " rowspan="3">
13860              android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration
13861            </td>
13862            <td class="entry_type">
13863                <span class="entry_type_name">float</span>
13864                <span class="entry_type_container">x</span>
13865
13866                <span class="entry_type_array">
13867                  5
13868                </span>
13869              <span class="entry_type_visibility"> [public]</span>
13870
13871
13872
13873
13874
13875
13876            </td> <!-- entry_type -->
13877
13878            <td class="entry_description">
13879              <p>The parameters for this camera device's intrinsic
13880calibration.<wbr/></p>
13881            </td>
13882
13883            <td class="entry_units">
13884
13885            Pixels in the
13886            android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size
13887            coordinate system.<wbr/>
13888
13889            </td>
13890
13891            <td class="entry_range">
13892            </td>
13893
13894            <td class="entry_hal_version">
13895              <p>3.<wbr/>2</p>
13896            </td>
13897
13898            <td class="entry_tags">
13899              <ul class="entry_tags">
13900                  <li><a href="#tag_DEPTH">DEPTH</a></li>
13901              </ul>
13902            </td>
13903
13904          </tr>
13905          <tr class="entries_header">
13906            <th class="th_details" colspan="6">Details</th>
13907          </tr>
13908          <tr class="entry_cont">
13909            <td class="entry_details" colspan="6">
13910              <p>The five calibration parameters that describe the
13911transform from camera-centric 3D coordinates to sensor
13912pixel coordinates:</p>
13913<pre><code>[f_<wbr/>x,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>x,<wbr/> c_<wbr/>y,<wbr/> s]
13914</code></pre>
13915<p>Where <code>f_<wbr/>x</code> and <code>f_<wbr/>y</code> are the horizontal and vertical
13916focal lengths,<wbr/> <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code> is the position of the optical
13917axis,<wbr/> and <code>s</code> is a skew parameter for the sensor plane not
13918being aligned with the lens plane.<wbr/></p>
13919<p>These are typically used within a transformation matrix K:</p>
13920<pre><code>K = [ f_<wbr/>x,<wbr/>   s,<wbr/> c_<wbr/>x,<wbr/>
13921       0,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>y,<wbr/>
13922       0    0,<wbr/>   1 ]
13923</code></pre>
13924<p>which can then be combined with the camera pose rotation
13925<code>R</code> and translation <code>t</code> (<a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> and
13926<a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a>,<wbr/> respectively) to calculate the
13927complete transform from world coordinates to pixel
13928coordinates:</p>
13929<pre><code>P = [ K 0   * [ R -Rt
13930     0 1 ]      0 1 ]
13931</code></pre>
13932<p>(Note the negation of poseTranslation when mapping from camera
13933to world coordinates,<wbr/> and multiplication by the rotation).<wbr/></p>
13934<p>With <code>p_<wbr/>w</code> being a point in the world coordinate system
13935and <code>p_<wbr/>s</code> being a point in the camera active pixel array
13936coordinate system,<wbr/> and with the mapping including the
13937homogeneous division by z:</p>
13938<pre><code> p_<wbr/>h = (x_<wbr/>h,<wbr/> y_<wbr/>h,<wbr/> z_<wbr/>h) = P p_<wbr/>w
13939p_<wbr/>s = p_<wbr/>h /<wbr/> z_<wbr/>h
13940</code></pre>
13941<p>so <code>[x_<wbr/>s,<wbr/> y_<wbr/>s]</code> is the pixel coordinates of the world
13942point,<wbr/> <code>z_<wbr/>s = 1</code>,<wbr/> and <code>w_<wbr/>s</code> is a measurement of disparity
13943(depth) in pixel coordinates.<wbr/></p>
13944<p>Note that the coordinate system for this transform is the
13945<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/>
13946where <code>(0,<wbr/>0)</code> is the top-left of the
13947preCorrectionActiveArraySize rectangle.<wbr/> Once the pose and
13948intrinsic calibration transforms have been applied to a
13949world point,<wbr/> then the <a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a>
13950transform needs to be applied,<wbr/> and the result adjusted to
13951be in the <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> coordinate
13952system (where <code>(0,<wbr/> 0)</code> is the top-left of the
13953activeArraySize rectangle),<wbr/> to determine the final pixel
13954coordinate of the world point for processed (non-RAW)
13955output buffers.<wbr/></p>
13956<p>For camera devices,<wbr/> the center of pixel <code>(x,<wbr/>y)</code> is located at
13957coordinate <code>(x + 0.<wbr/>5,<wbr/> y + 0.<wbr/>5)</code>.<wbr/>  So on a device with a
13958precorrection active array of size <code>(10,<wbr/>10)</code>,<wbr/> the valid pixel
13959indices go from <code>(0,<wbr/>0)-(9,<wbr/>9)</code>,<wbr/> and an perfectly-built camera would
13960have an optical center at the exact center of the pixel grid,<wbr/> at
13961coordinates <code>(5.<wbr/>0,<wbr/> 5.<wbr/>0)</code>,<wbr/> which is the top-left corner of pixel
13962<code>(5,<wbr/>5)</code>.<wbr/></p>
13963            </td>
13964          </tr>
13965
13966
13967          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13968           <!-- end of entry -->
13969
13970
13971          <tr class="entry" id="static_android.lens.radialDistortion">
13972            <td class="entry_name
13973                entry_name_deprecated
13974             " rowspan="3">
13975              android.<wbr/>lens.<wbr/>radial<wbr/>Distortion
13976            </td>
13977            <td class="entry_type">
13978                <span class="entry_type_name">float</span>
13979                <span class="entry_type_container">x</span>
13980
13981                <span class="entry_type_array">
13982                  6
13983                </span>
13984              <span class="entry_type_visibility"> [public]</span>
13985
13986
13987
13988              <span class="entry_type_deprecated">[deprecated] </span>
13989
13990
13991
13992            </td> <!-- entry_type -->
13993
13994            <td class="entry_description">
13995              <p>The correction coefficients to correct for this camera device's
13996radial and tangential lens distortion.<wbr/></p>
13997            </td>
13998
13999            <td class="entry_units">
14000
14001            Unitless coefficients.<wbr/>
14002
14003            </td>
14004
14005            <td class="entry_range">
14006              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
14007            </td>
14008
14009            <td class="entry_hal_version">
14010              <p>3.<wbr/>2</p>
14011            </td>
14012
14013            <td class="entry_tags">
14014              <ul class="entry_tags">
14015                  <li><a href="#tag_DEPTH">DEPTH</a></li>
14016              </ul>
14017            </td>
14018
14019          </tr>
14020          <tr class="entries_header">
14021            <th class="th_details" colspan="6">Details</th>
14022          </tr>
14023          <tr class="entry_cont">
14024            <td class="entry_details" colspan="6">
14025              <p>Four radial distortion coefficients <code>[kappa_<wbr/>0,<wbr/> kappa_<wbr/>1,<wbr/> kappa_<wbr/>2,<wbr/>
14026kappa_<wbr/>3]</code> and two tangential distortion coefficients
14027<code>[kappa_<wbr/>4,<wbr/> kappa_<wbr/>5]</code> that can be used to correct the
14028lens's geometric distortion with the mapping equations:</p>
14029<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 ) +
14030       kappa_<wbr/>4 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>5 * ( r^2 + 2 * x_<wbr/>i^2 )
14031 y_<wbr/>c = y_<wbr/>i * ( kappa_<wbr/>0 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) +
14032       kappa_<wbr/>5 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>4 * ( r^2 + 2 * y_<wbr/>i^2 )
14033</code></pre>
14034<p>Here,<wbr/> <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> are the coordinates to sample in the
14035input image that correspond to the pixel values in the
14036corrected image at the coordinate <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code>:</p>
14037<pre><code> correctedImage(x_<wbr/>i,<wbr/> y_<wbr/>i) = sample_<wbr/>at(x_<wbr/>c,<wbr/> y_<wbr/>c,<wbr/> inputImage)
14038</code></pre>
14039<p>The pixel coordinates are defined in a normalized
14040coordinate system related to the
14041<a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> calibration fields.<wbr/>
14042Both <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
14043lens optical center <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code>.<wbr/> The maximum magnitudes
14044of both x and y coordinates are normalized to be 1 at the
14045edge further from the optical center,<wbr/> so the range
14046for both dimensions is <code>-1 &lt;= x &lt;= 1</code>.<wbr/></p>
14047<p>Finally,<wbr/> <code>r</code> represents the radial distance from the
14048optical center,<wbr/> <code>r^2 = x_<wbr/>i^2 + y_<wbr/>i^2</code>,<wbr/> and its magnitude
14049is therefore no larger than <code>|<wbr/>r|<wbr/> &lt;= sqrt(2)</code>.<wbr/></p>
14050<p>The distortion model used is the Brown-Conrady model.<wbr/></p>
14051            </td>
14052          </tr>
14053
14054
14055          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14056           <!-- end of entry -->
14057
14058
14059          <tr class="entry" id="static_android.lens.poseReference">
14060            <td class="entry_name
14061             " rowspan="3">
14062              android.<wbr/>lens.<wbr/>pose<wbr/>Reference
14063            </td>
14064            <td class="entry_type">
14065                <span class="entry_type_name entry_type_name_enum">byte</span>
14066
14067              <span class="entry_type_visibility"> [public]</span>
14068
14069
14070
14071
14072
14073                <ul class="entry_type_enum">
14074                  <li>
14075                    <span class="entry_type_enum_name">PRIMARY_CAMERA (v3.3)</span>
14076                    <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
14077the largest camera device facing the same direction as this camera.<wbr/></p>
14078<p>This is the default value for API levels before Android P.<wbr/></p></span>
14079                  </li>
14080                  <li>
14081                    <span class="entry_type_enum_name">GYROSCOPE (v3.3)</span>
14082                    <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
14083primary gyroscope of this Android device.<wbr/></p></span>
14084                  </li>
14085                </ul>
14086
14087            </td> <!-- entry_type -->
14088
14089            <td class="entry_description">
14090              <p>The origin for <a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a>.<wbr/></p>
14091            </td>
14092
14093            <td class="entry_units">
14094            </td>
14095
14096            <td class="entry_range">
14097            </td>
14098
14099            <td class="entry_hal_version">
14100              <p>3.<wbr/>3</p>
14101            </td>
14102
14103            <td class="entry_tags">
14104            </td>
14105
14106          </tr>
14107          <tr class="entries_header">
14108            <th class="th_details" colspan="6">Details</th>
14109          </tr>
14110          <tr class="entry_cont">
14111            <td class="entry_details" colspan="6">
14112              <p>Different calibration methods and use cases can produce better or worse results
14113depending on the selected coordinate origin.<wbr/></p>
14114            </td>
14115          </tr>
14116
14117
14118          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14119           <!-- end of entry -->
14120
14121
14122          <tr class="entry" id="static_android.lens.distortion">
14123            <td class="entry_name
14124             " rowspan="3">
14125              android.<wbr/>lens.<wbr/>distortion
14126            </td>
14127            <td class="entry_type">
14128                <span class="entry_type_name">float</span>
14129                <span class="entry_type_container">x</span>
14130
14131                <span class="entry_type_array">
14132                  5
14133                </span>
14134              <span class="entry_type_visibility"> [public]</span>
14135
14136
14137
14138
14139
14140
14141            </td> <!-- entry_type -->
14142
14143            <td class="entry_description">
14144              <p>The correction coefficients to correct for this camera device's
14145radial and tangential lens distortion.<wbr/></p>
14146<p>Replaces the deprecated <a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a> field,<wbr/> which was
14147inconsistently defined.<wbr/></p>
14148            </td>
14149
14150            <td class="entry_units">
14151
14152            Unitless coefficients.<wbr/>
14153
14154            </td>
14155
14156            <td class="entry_range">
14157            </td>
14158
14159            <td class="entry_hal_version">
14160              <p>3.<wbr/>3</p>
14161            </td>
14162
14163            <td class="entry_tags">
14164              <ul class="entry_tags">
14165                  <li><a href="#tag_DEPTH">DEPTH</a></li>
14166              </ul>
14167            </td>
14168
14169          </tr>
14170          <tr class="entries_header">
14171            <th class="th_details" colspan="6">Details</th>
14172          </tr>
14173          <tr class="entry_cont">
14174            <td class="entry_details" colspan="6">
14175              <p>Three radial distortion coefficients <code>[kappa_<wbr/>1,<wbr/> kappa_<wbr/>2,<wbr/>
14176kappa_<wbr/>3]</code> and two tangential distortion coefficients
14177<code>[kappa_<wbr/>4,<wbr/> kappa_<wbr/>5]</code> that can be used to correct the
14178lens's geometric distortion with the mapping equations:</p>
14179<pre><code> x_<wbr/>c = x_<wbr/>i * ( 1 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) +
14180       kappa_<wbr/>4 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>5 * ( r^2 + 2 * x_<wbr/>i^2 )
14181 y_<wbr/>c = y_<wbr/>i * ( 1 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) +
14182       kappa_<wbr/>5 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>4 * ( r^2 + 2 * y_<wbr/>i^2 )
14183</code></pre>
14184<p>Here,<wbr/> <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> are the coordinates to sample in the
14185input image that correspond to the pixel values in the
14186corrected image at the coordinate <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code>:</p>
14187<pre><code> correctedImage(x_<wbr/>i,<wbr/> y_<wbr/>i) = sample_<wbr/>at(x_<wbr/>c,<wbr/> y_<wbr/>c,<wbr/> inputImage)
14188</code></pre>
14189<p>The pixel coordinates are defined in a coordinate system
14190related to the <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a>
14191calibration fields; see that entry for details of the mapping stages.<wbr/>
14192Both <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code> and <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code>
14193have <code>(0,<wbr/>0)</code> at the lens optical center <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code>,<wbr/> and
14194the range of the coordinates depends on the focal length
14195terms of the intrinsic calibration.<wbr/></p>
14196<p>Finally,<wbr/> <code>r</code> represents the radial distance from the
14197optical center,<wbr/> <code>r^2 = x_<wbr/>i^2 + y_<wbr/>i^2</code>.<wbr/></p>
14198<p>The distortion model used is the Brown-Conrady model.<wbr/></p>
14199            </td>
14200          </tr>
14201
14202
14203          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14204           <!-- end of entry -->
14205
14206
14207
14208      <!-- end of kind -->
14209      </tbody>
14210      <tr><td colspan="7" class="kind">dynamic</td></tr>
14211
14212      <thead class="entries_header">
14213        <tr>
14214          <th class="th_name">Property Name</th>
14215          <th class="th_type">Type</th>
14216          <th class="th_description">Description</th>
14217          <th class="th_units">Units</th>
14218          <th class="th_range">Range</th>
14219          <th class="th_hal_version">Initial HIDL HAL version</th>
14220          <th class="th_tags">Tags</th>
14221        </tr>
14222      </thead>
14223
14224      <tbody>
14225
14226
14227
14228
14229
14230
14231
14232
14233
14234
14235          <tr class="entry" id="dynamic_android.lens.aperture">
14236            <td class="entry_name
14237             " rowspan="3">
14238              android.<wbr/>lens.<wbr/>aperture
14239            </td>
14240            <td class="entry_type">
14241                <span class="entry_type_name">float</span>
14242
14243              <span class="entry_type_visibility"> [public]</span>
14244
14245
14246              <span class="entry_type_hwlevel">[full] </span>
14247
14248
14249
14250
14251            </td> <!-- entry_type -->
14252
14253            <td class="entry_description">
14254              <p>The desired lens aperture size,<wbr/> as a ratio of lens focal length to the
14255effective aperture diameter.<wbr/></p>
14256            </td>
14257
14258            <td class="entry_units">
14259              The f-number (f/<wbr/>N)
14260            </td>
14261
14262            <td class="entry_range">
14263              <p><a href="#static_android.lens.info.availableApertures">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures</a></p>
14264            </td>
14265
14266            <td class="entry_hal_version">
14267              <p>3.<wbr/>2</p>
14268            </td>
14269
14270            <td class="entry_tags">
14271              <ul class="entry_tags">
14272                  <li><a href="#tag_V1">V1</a></li>
14273              </ul>
14274            </td>
14275
14276          </tr>
14277          <tr class="entries_header">
14278            <th class="th_details" colspan="6">Details</th>
14279          </tr>
14280          <tr class="entry_cont">
14281            <td class="entry_details" colspan="6">
14282              <p>Setting this value is only supported on the camera devices that have a variable
14283aperture lens.<wbr/></p>
14284<p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/>
14285this can be set along with <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
14286<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>
14287to achieve manual exposure control.<wbr/></p>
14288<p>The requested aperture value may take several frames to reach the
14289requested value; the camera device will report the current (intermediate)
14290aperture size in capture result metadata while the aperture is changing.<wbr/>
14291While 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>
14292<p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is one of
14293the ON modes,<wbr/> this will be overridden by the camera device
14294auto-exposure algorithm,<wbr/> the overridden values are then provided
14295back to the user in the corresponding result.<wbr/></p>
14296            </td>
14297          </tr>
14298
14299
14300          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14301           <!-- end of entry -->
14302
14303
14304          <tr class="entry" id="dynamic_android.lens.filterDensity">
14305            <td class="entry_name
14306             " rowspan="3">
14307              android.<wbr/>lens.<wbr/>filter<wbr/>Density
14308            </td>
14309            <td class="entry_type">
14310                <span class="entry_type_name">float</span>
14311
14312              <span class="entry_type_visibility"> [public]</span>
14313
14314
14315              <span class="entry_type_hwlevel">[full] </span>
14316
14317
14318
14319
14320            </td> <!-- entry_type -->
14321
14322            <td class="entry_description">
14323              <p>The desired setting for the lens neutral density filter(s).<wbr/></p>
14324            </td>
14325
14326            <td class="entry_units">
14327              Exposure Value (EV)
14328            </td>
14329
14330            <td class="entry_range">
14331              <p><a href="#static_android.lens.info.availableFilterDensities">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities</a></p>
14332            </td>
14333
14334            <td class="entry_hal_version">
14335              <p>3.<wbr/>2</p>
14336            </td>
14337
14338            <td class="entry_tags">
14339              <ul class="entry_tags">
14340                  <li><a href="#tag_V1">V1</a></li>
14341              </ul>
14342            </td>
14343
14344          </tr>
14345          <tr class="entries_header">
14346            <th class="th_details" colspan="6">Details</th>
14347          </tr>
14348          <tr class="entry_cont">
14349            <td class="entry_details" colspan="6">
14350              <p>This control will not be supported on most camera devices.<wbr/></p>
14351<p>Lens filters are typically used to lower the amount of light the
14352sensor is exposed to (measured in steps of EV).<wbr/> As used here,<wbr/> an EV
14353step is the standard logarithmic representation,<wbr/> which are
14354non-negative,<wbr/> and inversely proportional to the amount of light
14355hitting the sensor.<wbr/>  For example,<wbr/> setting this to 0 would result
14356in no reduction of the incoming light,<wbr/> and setting this to 2 would
14357mean that the filter is set to reduce incoming light by two stops
14358(allowing 1/<wbr/>4 of the prior amount of light to the sensor).<wbr/></p>
14359<p>It may take several frames before the lens filter density changes
14360to the requested value.<wbr/> While the filter density is still changing,<wbr/>
14361<a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p>
14362            </td>
14363          </tr>
14364
14365
14366          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14367           <!-- end of entry -->
14368
14369
14370          <tr class="entry" id="dynamic_android.lens.focalLength">
14371            <td class="entry_name
14372             " rowspan="5">
14373              android.<wbr/>lens.<wbr/>focal<wbr/>Length
14374            </td>
14375            <td class="entry_type">
14376                <span class="entry_type_name">float</span>
14377
14378              <span class="entry_type_visibility"> [public]</span>
14379
14380
14381              <span class="entry_type_hwlevel">[legacy] </span>
14382
14383
14384
14385
14386            </td> <!-- entry_type -->
14387
14388            <td class="entry_description">
14389              <p>The desired lens focal length; used for optical zoom.<wbr/></p>
14390            </td>
14391
14392            <td class="entry_units">
14393              Millimeters
14394            </td>
14395
14396            <td class="entry_range">
14397              <p><a href="#static_android.lens.info.availableFocalLengths">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths</a></p>
14398            </td>
14399
14400            <td class="entry_hal_version">
14401              <p>3.<wbr/>2</p>
14402            </td>
14403
14404            <td class="entry_tags">
14405              <ul class="entry_tags">
14406                  <li><a href="#tag_BC">BC</a></li>
14407              </ul>
14408            </td>
14409
14410          </tr>
14411          <tr class="entries_header">
14412            <th class="th_details" colspan="6">Details</th>
14413          </tr>
14414          <tr class="entry_cont">
14415            <td class="entry_details" colspan="6">
14416              <p>This setting controls the physical focal length of the camera
14417device's lens.<wbr/> Changing the focal length changes the field of
14418view of the camera device,<wbr/> and is usually used for optical zoom.<wbr/></p>
14419<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
14420setting won't be applied instantaneously,<wbr/> and it may take several
14421frames before the lens can change to the requested focal length.<wbr/>
14422While the focal length is still changing,<wbr/> <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will
14423be set to MOVING.<wbr/></p>
14424<p>Optical zoom will not be supported on most devices.<wbr/></p>
14425            </td>
14426          </tr>
14427
14428          <tr class="entries_header">
14429            <th class="th_details" colspan="6">HAL Implementation Details</th>
14430          </tr>
14431          <tr class="entry_cont">
14432            <td class="entry_details" colspan="6">
14433              <p>For a logical camera device supporting both optical and digital zoom,<wbr/> if focalLength and
14434cropRegion change in the same request,<wbr/> the camera device must make sure that the new
14435focalLength and cropRegion take effect in the same frame.<wbr/> This is to make sure that there
14436is no visible field-of-view jump during zoom.<wbr/> For example,<wbr/> if cropRegion is applied
14437immediately,<wbr/> but focalLength takes more than 1 frame to take effect,<wbr/> the camera device
14438will delay the cropRegion so that it's synchronized with focalLength.<wbr/></p>
14439            </td>
14440          </tr>
14441
14442          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14443           <!-- end of entry -->
14444
14445
14446          <tr class="entry" id="dynamic_android.lens.focusDistance">
14447            <td class="entry_name
14448             " rowspan="3">
14449              android.<wbr/>lens.<wbr/>focus<wbr/>Distance
14450            </td>
14451            <td class="entry_type">
14452                <span class="entry_type_name">float</span>
14453
14454              <span class="entry_type_visibility"> [public]</span>
14455
14456
14457              <span class="entry_type_hwlevel">[full] </span>
14458
14459
14460
14461
14462            </td> <!-- entry_type -->
14463
14464            <td class="entry_description">
14465              <p>Desired distance to plane of sharpest focus,<wbr/>
14466measured from frontmost surface of the lens.<wbr/></p>
14467            </td>
14468
14469            <td class="entry_units">
14470              See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
14471            </td>
14472
14473            <td class="entry_range">
14474              <p>&gt;= 0</p>
14475            </td>
14476
14477            <td class="entry_hal_version">
14478              <p>3.<wbr/>2</p>
14479            </td>
14480
14481            <td class="entry_tags">
14482              <ul class="entry_tags">
14483                  <li><a href="#tag_BC">BC</a></li>
14484              </ul>
14485            </td>
14486
14487          </tr>
14488          <tr class="entries_header">
14489            <th class="th_details" colspan="6">Details</th>
14490          </tr>
14491          <tr class="entry_cont">
14492            <td class="entry_details" colspan="6">
14493              <p>Should be zero for fixed-focus cameras</p>
14494            </td>
14495          </tr>
14496
14497
14498          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14499           <!-- end of entry -->
14500
14501
14502          <tr class="entry" id="dynamic_android.lens.focusRange">
14503            <td class="entry_name
14504             " rowspan="3">
14505              android.<wbr/>lens.<wbr/>focus<wbr/>Range
14506            </td>
14507            <td class="entry_type">
14508                <span class="entry_type_name">float</span>
14509                <span class="entry_type_container">x</span>
14510
14511                <span class="entry_type_array">
14512                  2
14513                </span>
14514              <span class="entry_type_visibility"> [public as pairFloatFloat]</span>
14515
14516
14517              <span class="entry_type_hwlevel">[limited] </span>
14518
14519
14520                <div class="entry_type_notes">Range of scene distances that are in focus</div>
14521
14522
14523            </td> <!-- entry_type -->
14524
14525            <td class="entry_description">
14526              <p>The range of scene distances that are in
14527sharp focus (depth of field).<wbr/></p>
14528            </td>
14529
14530            <td class="entry_units">
14531              A pair of focus distances in diopters: (near,<wbr/>
14532          far); see android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details.<wbr/>
14533            </td>
14534
14535            <td class="entry_range">
14536              <p>&gt;=0</p>
14537            </td>
14538
14539            <td class="entry_hal_version">
14540              <p>3.<wbr/>2</p>
14541            </td>
14542
14543            <td class="entry_tags">
14544              <ul class="entry_tags">
14545                  <li><a href="#tag_BC">BC</a></li>
14546              </ul>
14547            </td>
14548
14549          </tr>
14550          <tr class="entries_header">
14551            <th class="th_details" colspan="6">Details</th>
14552          </tr>
14553          <tr class="entry_cont">
14554            <td class="entry_details" colspan="6">
14555              <p>If variable focus not supported,<wbr/> can still report
14556fixed depth of field range</p>
14557            </td>
14558          </tr>
14559
14560
14561          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14562           <!-- end of entry -->
14563
14564
14565          <tr class="entry" id="dynamic_android.lens.opticalStabilizationMode">
14566            <td class="entry_name
14567             " rowspan="3">
14568              android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode
14569            </td>
14570            <td class="entry_type">
14571                <span class="entry_type_name entry_type_name_enum">byte</span>
14572
14573              <span class="entry_type_visibility"> [public]</span>
14574
14575
14576              <span class="entry_type_hwlevel">[limited] </span>
14577
14578
14579
14580                <ul class="entry_type_enum">
14581                  <li>
14582                    <span class="entry_type_enum_name">OFF (v3.2)</span>
14583                    <span class="entry_type_enum_notes"><p>Optical stabilization is unavailable.<wbr/></p></span>
14584                  </li>
14585                  <li>
14586                    <span class="entry_type_enum_name">ON (v3.2)</span>
14587                    <span class="entry_type_enum_optional">[optional]</span>
14588                    <span class="entry_type_enum_notes"><p>Optical stabilization is enabled.<wbr/></p></span>
14589                  </li>
14590                </ul>
14591
14592            </td> <!-- entry_type -->
14593
14594            <td class="entry_description">
14595              <p>Sets whether the camera device uses optical image stabilization (OIS)
14596when capturing images.<wbr/></p>
14597            </td>
14598
14599            <td class="entry_units">
14600            </td>
14601
14602            <td class="entry_range">
14603              <p><a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a></p>
14604            </td>
14605
14606            <td class="entry_hal_version">
14607              <p>3.<wbr/>2</p>
14608            </td>
14609
14610            <td class="entry_tags">
14611              <ul class="entry_tags">
14612                  <li><a href="#tag_V1">V1</a></li>
14613              </ul>
14614            </td>
14615
14616          </tr>
14617          <tr class="entries_header">
14618            <th class="th_details" colspan="6">Details</th>
14619          </tr>
14620          <tr class="entry_cont">
14621            <td class="entry_details" colspan="6">
14622              <p>OIS is used to compensate for motion blur due to small
14623movements of the camera during capture.<wbr/> Unlike digital image
14624stabilization (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> OIS
14625makes use of mechanical elements to stabilize the camera
14626sensor,<wbr/> and thus allows for longer exposure times before
14627camera shake becomes apparent.<wbr/></p>
14628<p>Switching between different optical stabilization modes may take several
14629frames to initialize,<wbr/> the camera device will report the current mode in
14630capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/> the
14631optical stabilization modes in the first several capture results may still
14632be "OFF",<wbr/> and it will become "ON" when the initialization is done.<wbr/></p>
14633<p>If a camera device supports both OIS and digital image stabilization
14634(<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may produce undesirable
14635interaction,<wbr/> so it is recommended not to enable both at the same time.<wbr/></p>
14636<p>Not all devices will support OIS; see
14637<a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a> for
14638available controls.<wbr/></p>
14639            </td>
14640          </tr>
14641
14642
14643          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14644           <!-- end of entry -->
14645
14646
14647          <tr class="entry" id="dynamic_android.lens.state">
14648            <td class="entry_name
14649             " rowspan="3">
14650              android.<wbr/>lens.<wbr/>state
14651            </td>
14652            <td class="entry_type">
14653                <span class="entry_type_name entry_type_name_enum">byte</span>
14654
14655              <span class="entry_type_visibility"> [public]</span>
14656
14657
14658              <span class="entry_type_hwlevel">[limited] </span>
14659
14660
14661
14662                <ul class="entry_type_enum">
14663                  <li>
14664                    <span class="entry_type_enum_name">STATIONARY (v3.2)</span>
14665                    <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/>
14666<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>
14667                  </li>
14668                  <li>
14669                    <span class="entry_type_enum_name">MOVING (v3.2)</span>
14670                    <span class="entry_type_enum_notes"><p>One or several of the lens parameters
14671(<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/>
14672<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
14673currently changing.<wbr/></p></span>
14674                  </li>
14675                </ul>
14676
14677            </td> <!-- entry_type -->
14678
14679            <td class="entry_description">
14680              <p>Current lens status.<wbr/></p>
14681            </td>
14682
14683            <td class="entry_units">
14684            </td>
14685
14686            <td class="entry_range">
14687            </td>
14688
14689            <td class="entry_hal_version">
14690              <p>3.<wbr/>2</p>
14691            </td>
14692
14693            <td class="entry_tags">
14694              <ul class="entry_tags">
14695                  <li><a href="#tag_V1">V1</a></li>
14696              </ul>
14697            </td>
14698
14699          </tr>
14700          <tr class="entries_header">
14701            <th class="th_details" colspan="6">Details</th>
14702          </tr>
14703          <tr class="entry_cont">
14704            <td class="entry_details" colspan="6">
14705              <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/>
14706<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/>
14707they may take several frames to reach the requested values.<wbr/> This state indicates
14708the current status of the lens parameters.<wbr/></p>
14709<p>When the state is STATIONARY,<wbr/> the lens parameters are not changing.<wbr/> This could be
14710either because the parameters are all fixed,<wbr/> or because the lens has had enough
14711time to reach the most recently-requested values.<wbr/>
14712If all these lens parameters are not changable for a camera device,<wbr/> as listed below:</p>
14713<ul>
14714<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
14715<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> parameter will always be 0.<wbr/></li>
14716<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/>
14717which means the optical zoom is not supported.<wbr/></li>
14718<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>
14719<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>
14720</ul>
14721<p>Then this state will always be STATIONARY.<wbr/></p>
14722<p>When the state is MOVING,<wbr/> it indicates that at least one of the lens parameters
14723is changing.<wbr/></p>
14724            </td>
14725          </tr>
14726
14727
14728          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14729           <!-- end of entry -->
14730
14731
14732          <tr class="entry" id="dynamic_android.lens.poseRotation">
14733            <td class="entry_name
14734             " rowspan="3">
14735              android.<wbr/>lens.<wbr/>pose<wbr/>Rotation
14736            </td>
14737            <td class="entry_type">
14738                <span class="entry_type_name">float</span>
14739                <span class="entry_type_container">x</span>
14740
14741                <span class="entry_type_array">
14742                  4
14743                </span>
14744              <span class="entry_type_visibility"> [public]</span>
14745
14746
14747
14748
14749
14750
14751            </td> <!-- entry_type -->
14752
14753            <td class="entry_description">
14754              <p>The orientation of the camera relative to the sensor
14755coordinate system.<wbr/></p>
14756            </td>
14757
14758            <td class="entry_units">
14759
14760            Quaternion coefficients
14761
14762            </td>
14763
14764            <td class="entry_range">
14765            </td>
14766
14767            <td class="entry_hal_version">
14768              <p>3.<wbr/>2</p>
14769            </td>
14770
14771            <td class="entry_tags">
14772              <ul class="entry_tags">
14773                  <li><a href="#tag_DEPTH">DEPTH</a></li>
14774              </ul>
14775            </td>
14776
14777          </tr>
14778          <tr class="entries_header">
14779            <th class="th_details" colspan="6">Details</th>
14780          </tr>
14781          <tr class="entry_cont">
14782            <td class="entry_details" colspan="6">
14783              <p>The four coefficients that describe the quaternion
14784rotation from the Android sensor coordinate system to a
14785camera-aligned coordinate system where the X-axis is
14786aligned with the long side of the image sensor,<wbr/> the Y-axis
14787is aligned with the short side of the image sensor,<wbr/> and
14788the Z-axis is aligned with the optical axis of the sensor.<wbr/></p>
14789<p>To convert from the quaternion coefficients <code>(x,<wbr/>y,<wbr/>z,<wbr/>w)</code>
14790to the axis of rotation <code>(a_<wbr/>x,<wbr/> a_<wbr/>y,<wbr/> a_<wbr/>z)</code> and rotation
14791amount <code>theta</code>,<wbr/> the following formulas can be used:</p>
14792<pre><code> theta = 2 * acos(w)
14793a_<wbr/>x = x /<wbr/> sin(theta/<wbr/>2)
14794a_<wbr/>y = y /<wbr/> sin(theta/<wbr/>2)
14795a_<wbr/>z = z /<wbr/> sin(theta/<wbr/>2)
14796</code></pre>
14797<p>To create a 3x3 rotation matrix that applies the rotation
14798defined by this quaternion,<wbr/> the following matrix can be
14799used:</p>
14800<pre><code>R = [ 1 - 2y^2 - 2z^2,<wbr/>       2xy - 2zw,<wbr/>       2xz + 2yw,<wbr/>
14801           2xy + 2zw,<wbr/> 1 - 2x^2 - 2z^2,<wbr/>       2yz - 2xw,<wbr/>
14802           2xz - 2yw,<wbr/>       2yz + 2xw,<wbr/> 1 - 2x^2 - 2y^2 ]
14803</code></pre>
14804<p>This matrix can then be used to apply the rotation to a
14805 column vector point with</p>
14806<p><code>p' = Rp</code></p>
14807<p>where <code>p</code> is in the device sensor coordinate system,<wbr/> and
14808 <code>p'</code> is in the camera-oriented coordinate system.<wbr/></p>
14809            </td>
14810          </tr>
14811
14812
14813          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14814           <!-- end of entry -->
14815
14816
14817          <tr class="entry" id="dynamic_android.lens.poseTranslation">
14818            <td class="entry_name
14819             " rowspan="3">
14820              android.<wbr/>lens.<wbr/>pose<wbr/>Translation
14821            </td>
14822            <td class="entry_type">
14823                <span class="entry_type_name">float</span>
14824                <span class="entry_type_container">x</span>
14825
14826                <span class="entry_type_array">
14827                  3
14828                </span>
14829              <span class="entry_type_visibility"> [public]</span>
14830
14831
14832
14833
14834
14835
14836            </td> <!-- entry_type -->
14837
14838            <td class="entry_description">
14839              <p>Position of the camera optical center.<wbr/></p>
14840            </td>
14841
14842            <td class="entry_units">
14843              Meters
14844            </td>
14845
14846            <td class="entry_range">
14847            </td>
14848
14849            <td class="entry_hal_version">
14850              <p>3.<wbr/>2</p>
14851            </td>
14852
14853            <td class="entry_tags">
14854              <ul class="entry_tags">
14855                  <li><a href="#tag_DEPTH">DEPTH</a></li>
14856              </ul>
14857            </td>
14858
14859          </tr>
14860          <tr class="entries_header">
14861            <th class="th_details" colspan="6">Details</th>
14862          </tr>
14863          <tr class="entry_cont">
14864            <td class="entry_details" colspan="6">
14865              <p>The position of the camera device's lens optical center,<wbr/>
14866as a three-dimensional vector <code>(x,<wbr/>y,<wbr/>z)</code>.<wbr/></p>
14867<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
14868is relative to the optical center of the largest camera device facing in the same
14869direction as this camera,<wbr/> in the <a href="https://developer.android.com/reference/android/hardware/SensorEvent.html">Android sensor
14870coordinate axes</a>.<wbr/> Note that only the axis definitions are shared with the sensor
14871coordinate system,<wbr/> but not the origin.<wbr/></p>
14872<p>If this device is the largest or only camera device with a given facing,<wbr/> then this
14873position will be <code>(0,<wbr/> 0,<wbr/> 0)</code>; a camera device with a lens optical center located 3 cm
14874from the main sensor along the +X axis (to the right from the user's perspective) will
14875report <code>(0.<wbr/>03,<wbr/> 0,<wbr/> 0)</code>.<wbr/>  Note that this means that,<wbr/> for many computer vision
14876applications,<wbr/> the position needs to be negated to convert it to a translation from the
14877camera to the origin.<wbr/></p>
14878<p>To transform a pixel coordinates between two cameras facing the same direction,<wbr/> first
14879the source camera <a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a> must be corrected for.<wbr/>  Then the source
14880camera <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> needs to be applied,<wbr/> followed by the
14881<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
14882relative to the destination camera,<wbr/> the <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> of the destination
14883camera,<wbr/> and finally the inverse of <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> of the destination
14884camera.<wbr/> This obtains a radial-distortion-free coordinate in the destination camera pixel
14885coordinates.<wbr/></p>
14886<p>To compare this against a real image from the destination camera,<wbr/> the destination camera
14887image then needs to be corrected for radial distortion before comparison or sampling.<wbr/></p>
14888<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
14889the center of the primary gyroscope on the device.<wbr/> The axis definitions are the same as
14890with PRIMARY_<wbr/>CAMERA.<wbr/></p>
14891            </td>
14892          </tr>
14893
14894
14895          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14896           <!-- end of entry -->
14897
14898
14899          <tr class="entry" id="dynamic_android.lens.intrinsicCalibration">
14900            <td class="entry_name
14901             " rowspan="3">
14902              android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration
14903            </td>
14904            <td class="entry_type">
14905                <span class="entry_type_name">float</span>
14906                <span class="entry_type_container">x</span>
14907
14908                <span class="entry_type_array">
14909                  5
14910                </span>
14911              <span class="entry_type_visibility"> [public]</span>
14912
14913
14914
14915
14916
14917
14918            </td> <!-- entry_type -->
14919
14920            <td class="entry_description">
14921              <p>The parameters for this camera device's intrinsic
14922calibration.<wbr/></p>
14923            </td>
14924
14925            <td class="entry_units">
14926
14927            Pixels in the
14928            android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size
14929            coordinate system.<wbr/>
14930
14931            </td>
14932
14933            <td class="entry_range">
14934            </td>
14935
14936            <td class="entry_hal_version">
14937              <p>3.<wbr/>2</p>
14938            </td>
14939
14940            <td class="entry_tags">
14941              <ul class="entry_tags">
14942                  <li><a href="#tag_DEPTH">DEPTH</a></li>
14943              </ul>
14944            </td>
14945
14946          </tr>
14947          <tr class="entries_header">
14948            <th class="th_details" colspan="6">Details</th>
14949          </tr>
14950          <tr class="entry_cont">
14951            <td class="entry_details" colspan="6">
14952              <p>The five calibration parameters that describe the
14953transform from camera-centric 3D coordinates to sensor
14954pixel coordinates:</p>
14955<pre><code>[f_<wbr/>x,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>x,<wbr/> c_<wbr/>y,<wbr/> s]
14956</code></pre>
14957<p>Where <code>f_<wbr/>x</code> and <code>f_<wbr/>y</code> are the horizontal and vertical
14958focal lengths,<wbr/> <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code> is the position of the optical
14959axis,<wbr/> and <code>s</code> is a skew parameter for the sensor plane not
14960being aligned with the lens plane.<wbr/></p>
14961<p>These are typically used within a transformation matrix K:</p>
14962<pre><code>K = [ f_<wbr/>x,<wbr/>   s,<wbr/> c_<wbr/>x,<wbr/>
14963       0,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>y,<wbr/>
14964       0    0,<wbr/>   1 ]
14965</code></pre>
14966<p>which can then be combined with the camera pose rotation
14967<code>R</code> and translation <code>t</code> (<a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> and
14968<a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a>,<wbr/> respectively) to calculate the
14969complete transform from world coordinates to pixel
14970coordinates:</p>
14971<pre><code>P = [ K 0   * [ R -Rt
14972     0 1 ]      0 1 ]
14973</code></pre>
14974<p>(Note the negation of poseTranslation when mapping from camera
14975to world coordinates,<wbr/> and multiplication by the rotation).<wbr/></p>
14976<p>With <code>p_<wbr/>w</code> being a point in the world coordinate system
14977and <code>p_<wbr/>s</code> being a point in the camera active pixel array
14978coordinate system,<wbr/> and with the mapping including the
14979homogeneous division by z:</p>
14980<pre><code> p_<wbr/>h = (x_<wbr/>h,<wbr/> y_<wbr/>h,<wbr/> z_<wbr/>h) = P p_<wbr/>w
14981p_<wbr/>s = p_<wbr/>h /<wbr/> z_<wbr/>h
14982</code></pre>
14983<p>so <code>[x_<wbr/>s,<wbr/> y_<wbr/>s]</code> is the pixel coordinates of the world
14984point,<wbr/> <code>z_<wbr/>s = 1</code>,<wbr/> and <code>w_<wbr/>s</code> is a measurement of disparity
14985(depth) in pixel coordinates.<wbr/></p>
14986<p>Note that the coordinate system for this transform is the
14987<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/>
14988where <code>(0,<wbr/>0)</code> is the top-left of the
14989preCorrectionActiveArraySize rectangle.<wbr/> Once the pose and
14990intrinsic calibration transforms have been applied to a
14991world point,<wbr/> then the <a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a>
14992transform needs to be applied,<wbr/> and the result adjusted to
14993be in the <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> coordinate
14994system (where <code>(0,<wbr/> 0)</code> is the top-left of the
14995activeArraySize rectangle),<wbr/> to determine the final pixel
14996coordinate of the world point for processed (non-RAW)
14997output buffers.<wbr/></p>
14998<p>For camera devices,<wbr/> the center of pixel <code>(x,<wbr/>y)</code> is located at
14999coordinate <code>(x + 0.<wbr/>5,<wbr/> y + 0.<wbr/>5)</code>.<wbr/>  So on a device with a
15000precorrection active array of size <code>(10,<wbr/>10)</code>,<wbr/> the valid pixel
15001indices go from <code>(0,<wbr/>0)-(9,<wbr/>9)</code>,<wbr/> and an perfectly-built camera would
15002have an optical center at the exact center of the pixel grid,<wbr/> at
15003coordinates <code>(5.<wbr/>0,<wbr/> 5.<wbr/>0)</code>,<wbr/> which is the top-left corner of pixel
15004<code>(5,<wbr/>5)</code>.<wbr/></p>
15005            </td>
15006          </tr>
15007
15008
15009          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15010           <!-- end of entry -->
15011
15012
15013          <tr class="entry" id="dynamic_android.lens.radialDistortion">
15014            <td class="entry_name
15015                entry_name_deprecated
15016             " rowspan="3">
15017              android.<wbr/>lens.<wbr/>radial<wbr/>Distortion
15018            </td>
15019            <td class="entry_type">
15020                <span class="entry_type_name">float</span>
15021                <span class="entry_type_container">x</span>
15022
15023                <span class="entry_type_array">
15024                  6
15025                </span>
15026              <span class="entry_type_visibility"> [public]</span>
15027
15028
15029
15030              <span class="entry_type_deprecated">[deprecated] </span>
15031
15032
15033
15034            </td> <!-- entry_type -->
15035
15036            <td class="entry_description">
15037              <p>The correction coefficients to correct for this camera device's
15038radial and tangential lens distortion.<wbr/></p>
15039            </td>
15040
15041            <td class="entry_units">
15042
15043            Unitless coefficients.<wbr/>
15044
15045            </td>
15046
15047            <td class="entry_range">
15048              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15049            </td>
15050
15051            <td class="entry_hal_version">
15052              <p>3.<wbr/>2</p>
15053            </td>
15054
15055            <td class="entry_tags">
15056              <ul class="entry_tags">
15057                  <li><a href="#tag_DEPTH">DEPTH</a></li>
15058              </ul>
15059            </td>
15060
15061          </tr>
15062          <tr class="entries_header">
15063            <th class="th_details" colspan="6">Details</th>
15064          </tr>
15065          <tr class="entry_cont">
15066            <td class="entry_details" colspan="6">
15067              <p>Four radial distortion coefficients <code>[kappa_<wbr/>0,<wbr/> kappa_<wbr/>1,<wbr/> kappa_<wbr/>2,<wbr/>
15068kappa_<wbr/>3]</code> and two tangential distortion coefficients
15069<code>[kappa_<wbr/>4,<wbr/> kappa_<wbr/>5]</code> that can be used to correct the
15070lens's geometric distortion with the mapping equations:</p>
15071<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 ) +
15072       kappa_<wbr/>4 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>5 * ( r^2 + 2 * x_<wbr/>i^2 )
15073 y_<wbr/>c = y_<wbr/>i * ( kappa_<wbr/>0 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) +
15074       kappa_<wbr/>5 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>4 * ( r^2 + 2 * y_<wbr/>i^2 )
15075</code></pre>
15076<p>Here,<wbr/> <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> are the coordinates to sample in the
15077input image that correspond to the pixel values in the
15078corrected image at the coordinate <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code>:</p>
15079<pre><code> correctedImage(x_<wbr/>i,<wbr/> y_<wbr/>i) = sample_<wbr/>at(x_<wbr/>c,<wbr/> y_<wbr/>c,<wbr/> inputImage)
15080</code></pre>
15081<p>The pixel coordinates are defined in a normalized
15082coordinate system related to the
15083<a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> calibration fields.<wbr/>
15084Both <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
15085lens optical center <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code>.<wbr/> The maximum magnitudes
15086of both x and y coordinates are normalized to be 1 at the
15087edge further from the optical center,<wbr/> so the range
15088for both dimensions is <code>-1 &lt;= x &lt;= 1</code>.<wbr/></p>
15089<p>Finally,<wbr/> <code>r</code> represents the radial distance from the
15090optical center,<wbr/> <code>r^2 = x_<wbr/>i^2 + y_<wbr/>i^2</code>,<wbr/> and its magnitude
15091is therefore no larger than <code>|<wbr/>r|<wbr/> &lt;= sqrt(2)</code>.<wbr/></p>
15092<p>The distortion model used is the Brown-Conrady model.<wbr/></p>
15093            </td>
15094          </tr>
15095
15096
15097          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15098           <!-- end of entry -->
15099
15100
15101          <tr class="entry" id="dynamic_android.lens.distortion">
15102            <td class="entry_name
15103             " rowspan="3">
15104              android.<wbr/>lens.<wbr/>distortion
15105            </td>
15106            <td class="entry_type">
15107                <span class="entry_type_name">float</span>
15108                <span class="entry_type_container">x</span>
15109
15110                <span class="entry_type_array">
15111                  5
15112                </span>
15113              <span class="entry_type_visibility"> [public]</span>
15114
15115
15116
15117
15118
15119
15120            </td> <!-- entry_type -->
15121
15122            <td class="entry_description">
15123              <p>The correction coefficients to correct for this camera device's
15124radial and tangential lens distortion.<wbr/></p>
15125<p>Replaces the deprecated <a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a> field,<wbr/> which was
15126inconsistently defined.<wbr/></p>
15127            </td>
15128
15129            <td class="entry_units">
15130
15131            Unitless coefficients.<wbr/>
15132
15133            </td>
15134
15135            <td class="entry_range">
15136            </td>
15137
15138            <td class="entry_hal_version">
15139              <p>3.<wbr/>3</p>
15140            </td>
15141
15142            <td class="entry_tags">
15143              <ul class="entry_tags">
15144                  <li><a href="#tag_DEPTH">DEPTH</a></li>
15145              </ul>
15146            </td>
15147
15148          </tr>
15149          <tr class="entries_header">
15150            <th class="th_details" colspan="6">Details</th>
15151          </tr>
15152          <tr class="entry_cont">
15153            <td class="entry_details" colspan="6">
15154              <p>Three radial distortion coefficients <code>[kappa_<wbr/>1,<wbr/> kappa_<wbr/>2,<wbr/>
15155kappa_<wbr/>3]</code> and two tangential distortion coefficients
15156<code>[kappa_<wbr/>4,<wbr/> kappa_<wbr/>5]</code> that can be used to correct the
15157lens's geometric distortion with the mapping equations:</p>
15158<pre><code> x_<wbr/>c = x_<wbr/>i * ( 1 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) +
15159       kappa_<wbr/>4 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>5 * ( r^2 + 2 * x_<wbr/>i^2 )
15160 y_<wbr/>c = y_<wbr/>i * ( 1 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) +
15161       kappa_<wbr/>5 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>4 * ( r^2 + 2 * y_<wbr/>i^2 )
15162</code></pre>
15163<p>Here,<wbr/> <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> are the coordinates to sample in the
15164input image that correspond to the pixel values in the
15165corrected image at the coordinate <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code>:</p>
15166<pre><code> correctedImage(x_<wbr/>i,<wbr/> y_<wbr/>i) = sample_<wbr/>at(x_<wbr/>c,<wbr/> y_<wbr/>c,<wbr/> inputImage)
15167</code></pre>
15168<p>The pixel coordinates are defined in a coordinate system
15169related to the <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a>
15170calibration fields; see that entry for details of the mapping stages.<wbr/>
15171Both <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code> and <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code>
15172have <code>(0,<wbr/>0)</code> at the lens optical center <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code>,<wbr/> and
15173the range of the coordinates depends on the focal length
15174terms of the intrinsic calibration.<wbr/></p>
15175<p>Finally,<wbr/> <code>r</code> represents the radial distance from the
15176optical center,<wbr/> <code>r^2 = x_<wbr/>i^2 + y_<wbr/>i^2</code>.<wbr/></p>
15177<p>The distortion model used is the Brown-Conrady model.<wbr/></p>
15178            </td>
15179          </tr>
15180
15181
15182          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15183           <!-- end of entry -->
15184
15185
15186
15187      <!-- end of kind -->
15188      </tbody>
15189
15190  <!-- end of section -->
15191  <tr><td colspan="7" id="section_noiseReduction" class="section">noiseReduction</td></tr>
15192
15193
15194      <tr><td colspan="7" class="kind">controls</td></tr>
15195
15196      <thead class="entries_header">
15197        <tr>
15198          <th class="th_name">Property Name</th>
15199          <th class="th_type">Type</th>
15200          <th class="th_description">Description</th>
15201          <th class="th_units">Units</th>
15202          <th class="th_range">Range</th>
15203          <th class="th_hal_version">Initial HIDL HAL version</th>
15204          <th class="th_tags">Tags</th>
15205        </tr>
15206      </thead>
15207
15208      <tbody>
15209
15210
15211
15212
15213
15214
15215
15216
15217
15218
15219          <tr class="entry" id="controls_android.noiseReduction.mode">
15220            <td class="entry_name
15221             " rowspan="5">
15222              android.<wbr/>noise<wbr/>Reduction.<wbr/>mode
15223            </td>
15224            <td class="entry_type">
15225                <span class="entry_type_name entry_type_name_enum">byte</span>
15226
15227              <span class="entry_type_visibility"> [public]</span>
15228
15229
15230              <span class="entry_type_hwlevel">[full] </span>
15231
15232
15233
15234                <ul class="entry_type_enum">
15235                  <li>
15236                    <span class="entry_type_enum_name">OFF (v3.2)</span>
15237                    <span class="entry_type_enum_notes"><p>No noise reduction is applied.<wbr/></p></span>
15238                  </li>
15239                  <li>
15240                    <span class="entry_type_enum_name">FAST (v3.2)</span>
15241                    <span class="entry_type_enum_notes"><p>Noise reduction is applied without reducing frame rate relative to sensor
15242output.<wbr/> It may be the same as OFF if noise reduction will reduce frame rate
15243relative to sensor.<wbr/></p></span>
15244                  </li>
15245                  <li>
15246                    <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
15247                    <span class="entry_type_enum_notes"><p>High-quality noise reduction is applied,<wbr/> at the cost of possibly reduced frame
15248rate relative to sensor output.<wbr/></p></span>
15249                  </li>
15250                  <li>
15251                    <span class="entry_type_enum_name">MINIMAL (v3.2)</span>
15252                    <span class="entry_type_enum_optional">[optional]</span>
15253                    <span class="entry_type_enum_notes"><p>MINIMAL noise reduction is applied without reducing frame rate relative to
15254sensor output.<wbr/> </p></span>
15255                  </li>
15256                  <li>
15257                    <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span>
15258                    <span class="entry_type_enum_optional">[optional]</span>
15259                    <span class="entry_type_enum_notes"><p>Noise reduction is applied at different levels for different output streams,<wbr/>
15260based 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>)
15261or below have noise reduction applied,<wbr/> while higher-resolution streams have MINIMAL (if
15262supported) or no noise reduction applied (if MINIMAL is not supported.<wbr/>) The degree of
15263noise reduction for low-resolution streams is tuned so that frame rate is not impacted,<wbr/>
15264and the quality is equal to or better than FAST (since it is only applied to
15265lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p>
15266<p>This mode is intended to be used by applications operating in a zero-shutter-lag mode
15267with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures
15268high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is
15269produced via reprocessing when a user takes a picture.<wbr/>  For such a use case,<wbr/> the
15270high-resolution buffers must not have noise reduction applied to maximize efficiency of
15271preview and to avoid over-applying noise filtering when reprocessing,<wbr/> while
15272low-resolution buffers (used for recording or preview,<wbr/> generally) need noise reduction
15273applied for reasonable preview quality.<wbr/></p>
15274<p>This mode is guaranteed to be supported by devices that support either the
15275YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities
15276(<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will
15277be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span>
15278                  </li>
15279                </ul>
15280
15281            </td> <!-- entry_type -->
15282
15283            <td class="entry_description">
15284              <p>Mode of operation for the noise reduction algorithm.<wbr/></p>
15285            </td>
15286
15287            <td class="entry_units">
15288            </td>
15289
15290            <td class="entry_range">
15291              <p><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a></p>
15292            </td>
15293
15294            <td class="entry_hal_version">
15295              <p>3.<wbr/>2</p>
15296            </td>
15297
15298            <td class="entry_tags">
15299              <ul class="entry_tags">
15300                  <li><a href="#tag_V1">V1</a></li>
15301                  <li><a href="#tag_REPROC">REPROC</a></li>
15302              </ul>
15303            </td>
15304
15305          </tr>
15306          <tr class="entries_header">
15307            <th class="th_details" colspan="6">Details</th>
15308          </tr>
15309          <tr class="entry_cont">
15310            <td class="entry_details" colspan="6">
15311              <p>The noise reduction algorithm attempts to improve image quality by removing
15312excessive noise added by the capture process,<wbr/> especially in dark conditions.<wbr/></p>
15313<p>OFF means no noise reduction will be applied by the camera device,<wbr/> for both raw and
15314YUV domain.<wbr/></p>
15315<p>MINIMAL means that only sensor raw domain basic noise reduction is enabled ,<wbr/>to remove
15316demosaicing or other processing artifacts.<wbr/> For YUV_<wbr/>REPROCESSING,<wbr/> MINIMAL is same as OFF.<wbr/>
15317This mode is optional,<wbr/> may not be support by all devices.<wbr/> The application should check
15318<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>
15319<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined noise filtering
15320will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device
15321will use the highest-quality noise filtering algorithms,<wbr/>
15322even if it slows down capture rate.<wbr/> FAST means the camera device will not
15323slow down capture rate when applying noise filtering.<wbr/> FAST may be the same as MINIMAL if
15324MINIMAL is listed,<wbr/> or the same as OFF if any noise filtering will slow down capture rate.<wbr/>
15325Every output stream will have a similar amount of enhancement applied.<wbr/></p>
15326<p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular
15327buffer of high-resolution images during preview and reprocess image(s) from that buffer
15328into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies
15329noise reduction to low-resolution streams (below maximum recording resolution) to maximize
15330preview quality,<wbr/> but does not apply noise reduction to high-resolution streams,<wbr/> since
15331those will be reprocessed later if necessary.<wbr/></p>
15332<p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera device
15333will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV domain noise reduction,<wbr/> respectively.<wbr/> The camera device
15334may adjust the noise reduction parameters for best image quality based on the
15335<a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a> if it is set.<wbr/></p>
15336            </td>
15337          </tr>
15338
15339          <tr class="entries_header">
15340            <th class="th_details" colspan="6">HAL Implementation Details</th>
15341          </tr>
15342          <tr class="entry_cont">
15343            <td class="entry_details" colspan="6">
15344              <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
15345adjust the internal noise reduction parameters appropriately to get the best quality
15346images.<wbr/></p>
15347            </td>
15348          </tr>
15349
15350          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15351           <!-- end of entry -->
15352
15353
15354          <tr class="entry" id="controls_android.noiseReduction.strength">
15355            <td class="entry_name
15356             " rowspan="1">
15357              android.<wbr/>noise<wbr/>Reduction.<wbr/>strength
15358            </td>
15359            <td class="entry_type">
15360                <span class="entry_type_name">byte</span>
15361
15362              <span class="entry_type_visibility"> [system]</span>
15363
15364
15365
15366
15367
15368
15369            </td> <!-- entry_type -->
15370
15371            <td class="entry_description">
15372              <p>Control the amount of noise reduction
15373applied to the images</p>
15374            </td>
15375
15376            <td class="entry_units">
15377              1-10; 10 is max noise reduction
15378            </td>
15379
15380            <td class="entry_range">
15381              <p>1 - 10</p>
15382            </td>
15383
15384            <td class="entry_hal_version">
15385              <p>3.<wbr/>2</p>
15386            </td>
15387
15388            <td class="entry_tags">
15389              <ul class="entry_tags">
15390                  <li><a href="#tag_FUTURE">FUTURE</a></li>
15391              </ul>
15392            </td>
15393
15394          </tr>
15395
15396
15397          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15398           <!-- end of entry -->
15399
15400
15401
15402      <!-- end of kind -->
15403      </tbody>
15404      <tr><td colspan="7" class="kind">static</td></tr>
15405
15406      <thead class="entries_header">
15407        <tr>
15408          <th class="th_name">Property Name</th>
15409          <th class="th_type">Type</th>
15410          <th class="th_description">Description</th>
15411          <th class="th_units">Units</th>
15412          <th class="th_range">Range</th>
15413          <th class="th_hal_version">Initial HIDL HAL version</th>
15414          <th class="th_tags">Tags</th>
15415        </tr>
15416      </thead>
15417
15418      <tbody>
15419
15420
15421
15422
15423
15424
15425
15426
15427
15428
15429          <tr class="entry" id="static_android.noiseReduction.availableNoiseReductionModes">
15430            <td class="entry_name
15431             " rowspan="5">
15432              android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes
15433            </td>
15434            <td class="entry_type">
15435                <span class="entry_type_name">byte</span>
15436                <span class="entry_type_container">x</span>
15437
15438                <span class="entry_type_array">
15439                  n
15440                </span>
15441              <span class="entry_type_visibility"> [public as enumList]</span>
15442
15443
15444              <span class="entry_type_hwlevel">[limited] </span>
15445
15446
15447                <div class="entry_type_notes">list of enums</div>
15448
15449
15450            </td> <!-- entry_type -->
15451
15452            <td class="entry_description">
15453              <p>List of noise reduction modes for <a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a> that are supported
15454by this camera device.<wbr/></p>
15455            </td>
15456
15457            <td class="entry_units">
15458            </td>
15459
15460            <td class="entry_range">
15461              <p>Any value listed in <a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></p>
15462            </td>
15463
15464            <td class="entry_hal_version">
15465              <p>3.<wbr/>2</p>
15466            </td>
15467
15468            <td class="entry_tags">
15469              <ul class="entry_tags">
15470                  <li><a href="#tag_V1">V1</a></li>
15471                  <li><a href="#tag_REPROC">REPROC</a></li>
15472              </ul>
15473            </td>
15474
15475          </tr>
15476          <tr class="entries_header">
15477            <th class="th_details" colspan="6">Details</th>
15478          </tr>
15479          <tr class="entry_cont">
15480            <td class="entry_details" colspan="6">
15481              <p>Full-capability camera devices will always support OFF and FAST.<wbr/></p>
15482<p>Camera devices that support YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING will support
15483ZERO_<wbr/>SHUTTER_<wbr/>LAG.<wbr/></p>
15484<p>Legacy-capability camera devices will only support FAST mode.<wbr/></p>
15485            </td>
15486          </tr>
15487
15488          <tr class="entries_header">
15489            <th class="th_details" colspan="6">HAL Implementation Details</th>
15490          </tr>
15491          <tr class="entry_cont">
15492            <td class="entry_details" colspan="6">
15493              <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if noise reduction control is available
15494on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
15495That is,<wbr/> if the highest quality implementation on the camera device does not slow down
15496capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
15497            </td>
15498          </tr>
15499
15500          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15501           <!-- end of entry -->
15502
15503
15504
15505      <!-- end of kind -->
15506      </tbody>
15507      <tr><td colspan="7" class="kind">dynamic</td></tr>
15508
15509      <thead class="entries_header">
15510        <tr>
15511          <th class="th_name">Property Name</th>
15512          <th class="th_type">Type</th>
15513          <th class="th_description">Description</th>
15514          <th class="th_units">Units</th>
15515          <th class="th_range">Range</th>
15516          <th class="th_hal_version">Initial HIDL HAL version</th>
15517          <th class="th_tags">Tags</th>
15518        </tr>
15519      </thead>
15520
15521      <tbody>
15522
15523
15524
15525
15526
15527
15528
15529
15530
15531
15532          <tr class="entry" id="dynamic_android.noiseReduction.mode">
15533            <td class="entry_name
15534             " rowspan="5">
15535              android.<wbr/>noise<wbr/>Reduction.<wbr/>mode
15536            </td>
15537            <td class="entry_type">
15538                <span class="entry_type_name entry_type_name_enum">byte</span>
15539
15540              <span class="entry_type_visibility"> [public]</span>
15541
15542
15543              <span class="entry_type_hwlevel">[full] </span>
15544
15545
15546
15547                <ul class="entry_type_enum">
15548                  <li>
15549                    <span class="entry_type_enum_name">OFF (v3.2)</span>
15550                    <span class="entry_type_enum_notes"><p>No noise reduction is applied.<wbr/></p></span>
15551                  </li>
15552                  <li>
15553                    <span class="entry_type_enum_name">FAST (v3.2)</span>
15554                    <span class="entry_type_enum_notes"><p>Noise reduction is applied without reducing frame rate relative to sensor
15555output.<wbr/> It may be the same as OFF if noise reduction will reduce frame rate
15556relative to sensor.<wbr/></p></span>
15557                  </li>
15558                  <li>
15559                    <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
15560                    <span class="entry_type_enum_notes"><p>High-quality noise reduction is applied,<wbr/> at the cost of possibly reduced frame
15561rate relative to sensor output.<wbr/></p></span>
15562                  </li>
15563                  <li>
15564                    <span class="entry_type_enum_name">MINIMAL (v3.2)</span>
15565                    <span class="entry_type_enum_optional">[optional]</span>
15566                    <span class="entry_type_enum_notes"><p>MINIMAL noise reduction is applied without reducing frame rate relative to
15567sensor output.<wbr/> </p></span>
15568                  </li>
15569                  <li>
15570                    <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span>
15571                    <span class="entry_type_enum_optional">[optional]</span>
15572                    <span class="entry_type_enum_notes"><p>Noise reduction is applied at different levels for different output streams,<wbr/>
15573based 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>)
15574or below have noise reduction applied,<wbr/> while higher-resolution streams have MINIMAL (if
15575supported) or no noise reduction applied (if MINIMAL is not supported.<wbr/>) The degree of
15576noise reduction for low-resolution streams is tuned so that frame rate is not impacted,<wbr/>
15577and the quality is equal to or better than FAST (since it is only applied to
15578lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p>
15579<p>This mode is intended to be used by applications operating in a zero-shutter-lag mode
15580with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures
15581high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is
15582produced via reprocessing when a user takes a picture.<wbr/>  For such a use case,<wbr/> the
15583high-resolution buffers must not have noise reduction applied to maximize efficiency of
15584preview and to avoid over-applying noise filtering when reprocessing,<wbr/> while
15585low-resolution buffers (used for recording or preview,<wbr/> generally) need noise reduction
15586applied for reasonable preview quality.<wbr/></p>
15587<p>This mode is guaranteed to be supported by devices that support either the
15588YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities
15589(<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will
15590be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span>
15591                  </li>
15592                </ul>
15593
15594            </td> <!-- entry_type -->
15595
15596            <td class="entry_description">
15597              <p>Mode of operation for the noise reduction algorithm.<wbr/></p>
15598            </td>
15599
15600            <td class="entry_units">
15601            </td>
15602
15603            <td class="entry_range">
15604              <p><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a></p>
15605            </td>
15606
15607            <td class="entry_hal_version">
15608              <p>3.<wbr/>2</p>
15609            </td>
15610
15611            <td class="entry_tags">
15612              <ul class="entry_tags">
15613                  <li><a href="#tag_V1">V1</a></li>
15614                  <li><a href="#tag_REPROC">REPROC</a></li>
15615              </ul>
15616            </td>
15617
15618          </tr>
15619          <tr class="entries_header">
15620            <th class="th_details" colspan="6">Details</th>
15621          </tr>
15622          <tr class="entry_cont">
15623            <td class="entry_details" colspan="6">
15624              <p>The noise reduction algorithm attempts to improve image quality by removing
15625excessive noise added by the capture process,<wbr/> especially in dark conditions.<wbr/></p>
15626<p>OFF means no noise reduction will be applied by the camera device,<wbr/> for both raw and
15627YUV domain.<wbr/></p>
15628<p>MINIMAL means that only sensor raw domain basic noise reduction is enabled ,<wbr/>to remove
15629demosaicing or other processing artifacts.<wbr/> For YUV_<wbr/>REPROCESSING,<wbr/> MINIMAL is same as OFF.<wbr/>
15630This mode is optional,<wbr/> may not be support by all devices.<wbr/> The application should check
15631<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>
15632<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined noise filtering
15633will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device
15634will use the highest-quality noise filtering algorithms,<wbr/>
15635even if it slows down capture rate.<wbr/> FAST means the camera device will not
15636slow down capture rate when applying noise filtering.<wbr/> FAST may be the same as MINIMAL if
15637MINIMAL is listed,<wbr/> or the same as OFF if any noise filtering will slow down capture rate.<wbr/>
15638Every output stream will have a similar amount of enhancement applied.<wbr/></p>
15639<p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular
15640buffer of high-resolution images during preview and reprocess image(s) from that buffer
15641into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies
15642noise reduction to low-resolution streams (below maximum recording resolution) to maximize
15643preview quality,<wbr/> but does not apply noise reduction to high-resolution streams,<wbr/> since
15644those will be reprocessed later if necessary.<wbr/></p>
15645<p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera device
15646will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV domain noise reduction,<wbr/> respectively.<wbr/> The camera device
15647may adjust the noise reduction parameters for best image quality based on the
15648<a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a> if it is set.<wbr/></p>
15649            </td>
15650          </tr>
15651
15652          <tr class="entries_header">
15653            <th class="th_details" colspan="6">HAL Implementation Details</th>
15654          </tr>
15655          <tr class="entry_cont">
15656            <td class="entry_details" colspan="6">
15657              <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
15658adjust the internal noise reduction parameters appropriately to get the best quality
15659images.<wbr/></p>
15660            </td>
15661          </tr>
15662
15663          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15664           <!-- end of entry -->
15665
15666
15667
15668      <!-- end of kind -->
15669      </tbody>
15670
15671  <!-- end of section -->
15672  <tr><td colspan="7" id="section_quirks" class="section">quirks</td></tr>
15673
15674
15675      <tr><td colspan="7" class="kind">static</td></tr>
15676
15677      <thead class="entries_header">
15678        <tr>
15679          <th class="th_name">Property Name</th>
15680          <th class="th_type">Type</th>
15681          <th class="th_description">Description</th>
15682          <th class="th_units">Units</th>
15683          <th class="th_range">Range</th>
15684          <th class="th_hal_version">Initial HIDL HAL version</th>
15685          <th class="th_tags">Tags</th>
15686        </tr>
15687      </thead>
15688
15689      <tbody>
15690
15691
15692
15693
15694
15695
15696
15697
15698
15699
15700          <tr class="entry" id="static_android.quirks.meteringCropRegion">
15701            <td class="entry_name
15702                entry_name_deprecated
15703             " rowspan="3">
15704              android.<wbr/>quirks.<wbr/>metering<wbr/>Crop<wbr/>Region
15705            </td>
15706            <td class="entry_type">
15707                <span class="entry_type_name">byte</span>
15708
15709              <span class="entry_type_visibility"> [system]</span>
15710
15711
15712
15713              <span class="entry_type_deprecated">[deprecated] </span>
15714
15715
15716
15717            </td> <!-- entry_type -->
15718
15719            <td class="entry_description">
15720              <p>If set to 1,<wbr/> the camera service does not
15721scale 'normalized' coordinates with respect to the crop
15722region.<wbr/> This applies to metering input (a{e,<wbr/>f,<wbr/>wb}Region
15723and output (face rectangles).<wbr/></p>
15724            </td>
15725
15726            <td class="entry_units">
15727            </td>
15728
15729            <td class="entry_range">
15730              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15731            </td>
15732
15733            <td class="entry_hal_version">
15734              <p>3.<wbr/>2</p>
15735            </td>
15736
15737            <td class="entry_tags">
15738            </td>
15739
15740          </tr>
15741          <tr class="entries_header">
15742            <th class="th_details" colspan="6">Details</th>
15743          </tr>
15744          <tr class="entry_cont">
15745            <td class="entry_details" colspan="6">
15746              <p>Normalized coordinates refer to those in the
15747(-1000,<wbr/>1000) range mentioned in the
15748android.<wbr/>hardware.<wbr/>Camera API.<wbr/></p>
15749<p>HAL implementations should instead always use and emit
15750sensor array-relative coordinates for all region data.<wbr/> Does
15751not need to be listed in static metadata.<wbr/> Support will be
15752removed in future versions of camera service.<wbr/></p>
15753            </td>
15754          </tr>
15755
15756
15757          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15758           <!-- end of entry -->
15759
15760
15761          <tr class="entry" id="static_android.quirks.triggerAfWithAuto">
15762            <td class="entry_name
15763                entry_name_deprecated
15764             " rowspan="3">
15765              android.<wbr/>quirks.<wbr/>trigger<wbr/>Af<wbr/>With<wbr/>Auto
15766            </td>
15767            <td class="entry_type">
15768                <span class="entry_type_name">byte</span>
15769
15770              <span class="entry_type_visibility"> [system]</span>
15771
15772
15773
15774              <span class="entry_type_deprecated">[deprecated] </span>
15775
15776
15777
15778            </td> <!-- entry_type -->
15779
15780            <td class="entry_description">
15781              <p>If set to 1,<wbr/> then the camera service always
15782switches to FOCUS_<wbr/>MODE_<wbr/>AUTO before issuing a AF
15783trigger.<wbr/></p>
15784            </td>
15785
15786            <td class="entry_units">
15787            </td>
15788
15789            <td class="entry_range">
15790              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15791            </td>
15792
15793            <td class="entry_hal_version">
15794              <p>3.<wbr/>2</p>
15795            </td>
15796
15797            <td class="entry_tags">
15798            </td>
15799
15800          </tr>
15801          <tr class="entries_header">
15802            <th class="th_details" colspan="6">Details</th>
15803          </tr>
15804          <tr class="entry_cont">
15805            <td class="entry_details" colspan="6">
15806              <p>HAL implementations should implement AF trigger
15807modes for AUTO,<wbr/> MACRO,<wbr/> CONTINUOUS_<wbr/>FOCUS,<wbr/> and
15808CONTINUOUS_<wbr/>PICTURE modes instead of using this flag.<wbr/> Does
15809not need to be listed in static metadata.<wbr/> Support will be
15810removed in future versions of camera service</p>
15811            </td>
15812          </tr>
15813
15814
15815          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15816           <!-- end of entry -->
15817
15818
15819          <tr class="entry" id="static_android.quirks.useZslFormat">
15820            <td class="entry_name
15821                entry_name_deprecated
15822             " rowspan="3">
15823              android.<wbr/>quirks.<wbr/>use<wbr/>Zsl<wbr/>Format
15824            </td>
15825            <td class="entry_type">
15826                <span class="entry_type_name">byte</span>
15827
15828              <span class="entry_type_visibility"> [system]</span>
15829
15830
15831
15832              <span class="entry_type_deprecated">[deprecated] </span>
15833
15834
15835
15836            </td> <!-- entry_type -->
15837
15838            <td class="entry_description">
15839              <p>If set to 1,<wbr/> the camera service uses
15840CAMERA2_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>ZSL instead of
15841HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>IMPLEMENTATION_<wbr/>DEFINED for the zero
15842shutter lag stream</p>
15843            </td>
15844
15845            <td class="entry_units">
15846            </td>
15847
15848            <td class="entry_range">
15849              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15850            </td>
15851
15852            <td class="entry_hal_version">
15853              <p>3.<wbr/>2</p>
15854            </td>
15855
15856            <td class="entry_tags">
15857            </td>
15858
15859          </tr>
15860          <tr class="entries_header">
15861            <th class="th_details" colspan="6">Details</th>
15862          </tr>
15863          <tr class="entry_cont">
15864            <td class="entry_details" colspan="6">
15865              <p>HAL implementations should use gralloc usage flags
15866to determine that a stream will be used for
15867zero-shutter-lag,<wbr/> instead of relying on an explicit
15868format setting.<wbr/> Does not need to be listed in static
15869metadata.<wbr/> Support will be removed in future versions of
15870camera service.<wbr/></p>
15871            </td>
15872          </tr>
15873
15874
15875          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15876           <!-- end of entry -->
15877
15878
15879          <tr class="entry" id="static_android.quirks.usePartialResult">
15880            <td class="entry_name
15881                entry_name_deprecated
15882             " rowspan="5">
15883              android.<wbr/>quirks.<wbr/>use<wbr/>Partial<wbr/>Result
15884            </td>
15885            <td class="entry_type">
15886                <span class="entry_type_name">byte</span>
15887
15888              <span class="entry_type_visibility"> [hidden]</span>
15889
15890
15891
15892              <span class="entry_type_deprecated">[deprecated] </span>
15893
15894
15895
15896            </td> <!-- entry_type -->
15897
15898            <td class="entry_description">
15899              <p>If set to 1,<wbr/> the HAL will always split result
15900metadata for a single capture into multiple buffers,<wbr/>
15901returned using multiple process_<wbr/>capture_<wbr/>result calls.<wbr/></p>
15902            </td>
15903
15904            <td class="entry_units">
15905            </td>
15906
15907            <td class="entry_range">
15908              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15909            </td>
15910
15911            <td class="entry_hal_version">
15912              <p>3.<wbr/>2</p>
15913            </td>
15914
15915            <td class="entry_tags">
15916            </td>
15917
15918          </tr>
15919          <tr class="entries_header">
15920            <th class="th_details" colspan="6">Details</th>
15921          </tr>
15922          <tr class="entry_cont">
15923            <td class="entry_details" colspan="6">
15924              <p>Does not need to be listed in static
15925metadata.<wbr/> Support for partial results will be reworked in
15926future versions of camera service.<wbr/> This quirk will stop
15927working at that point; DO NOT USE without careful
15928consideration of future support.<wbr/></p>
15929            </td>
15930          </tr>
15931
15932          <tr class="entries_header">
15933            <th class="th_details" colspan="6">HAL Implementation Details</th>
15934          </tr>
15935          <tr class="entry_cont">
15936            <td class="entry_details" colspan="6">
15937              <p>Refer to <code>camera3_<wbr/>capture_<wbr/>result::partial_<wbr/>result</code>
15938for information on how to implement partial results.<wbr/></p>
15939            </td>
15940          </tr>
15941
15942          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15943           <!-- end of entry -->
15944
15945
15946
15947      <!-- end of kind -->
15948      </tbody>
15949      <tr><td colspan="7" class="kind">dynamic</td></tr>
15950
15951      <thead class="entries_header">
15952        <tr>
15953          <th class="th_name">Property Name</th>
15954          <th class="th_type">Type</th>
15955          <th class="th_description">Description</th>
15956          <th class="th_units">Units</th>
15957          <th class="th_range">Range</th>
15958          <th class="th_hal_version">Initial HIDL HAL version</th>
15959          <th class="th_tags">Tags</th>
15960        </tr>
15961      </thead>
15962
15963      <tbody>
15964
15965
15966
15967
15968
15969
15970
15971
15972
15973
15974          <tr class="entry" id="dynamic_android.quirks.partialResult">
15975            <td class="entry_name
15976                entry_name_deprecated
15977             " rowspan="5">
15978              android.<wbr/>quirks.<wbr/>partial<wbr/>Result
15979            </td>
15980            <td class="entry_type">
15981                <span class="entry_type_name entry_type_name_enum">byte</span>
15982
15983              <span class="entry_type_visibility"> [hidden as boolean]</span>
15984
15985
15986
15987              <span class="entry_type_deprecated">[deprecated] </span>
15988
15989
15990                <ul class="entry_type_enum">
15991                  <li>
15992                    <span class="entry_type_enum_name">FINAL (v3.2)</span>
15993                    <span class="entry_type_enum_notes"><p>The last or only metadata result buffer
15994for this capture.<wbr/></p></span>
15995                  </li>
15996                  <li>
15997                    <span class="entry_type_enum_name">PARTIAL (v3.2)</span>
15998                    <span class="entry_type_enum_notes"><p>A partial buffer of result metadata for this
15999capture.<wbr/> More result buffers for this capture will be sent
16000by the camera device,<wbr/> the last of which will be marked
16001FINAL.<wbr/></p></span>
16002                  </li>
16003                </ul>
16004
16005            </td> <!-- entry_type -->
16006
16007            <td class="entry_description">
16008              <p>Whether a result given to the framework is the
16009final one for the capture,<wbr/> or only a partial that contains a
16010subset of the full set of dynamic metadata
16011values.<wbr/></p>
16012            </td>
16013
16014            <td class="entry_units">
16015            </td>
16016
16017            <td class="entry_range">
16018              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
16019              <p>Optional.<wbr/> Default value is FINAL.<wbr/></p>
16020            </td>
16021
16022            <td class="entry_hal_version">
16023              <p>3.<wbr/>2</p>
16024            </td>
16025
16026            <td class="entry_tags">
16027            </td>
16028
16029          </tr>
16030          <tr class="entries_header">
16031            <th class="th_details" colspan="6">Details</th>
16032          </tr>
16033          <tr class="entry_cont">
16034            <td class="entry_details" colspan="6">
16035              <p>The entries in the result metadata buffers for a
16036single capture may not overlap,<wbr/> except for this entry.<wbr/> The
16037FINAL buffers must retain FIFO ordering relative to the
16038requests that generate them,<wbr/> so the FINAL buffer for frame 3 must
16039always be sent to the framework after the FINAL buffer for frame 2,<wbr/> and
16040before the FINAL buffer for frame 4.<wbr/> PARTIAL buffers may be returned
16041in any order relative to other frames,<wbr/> but all PARTIAL buffers for a given
16042capture must arrive before the FINAL buffer for that capture.<wbr/> This entry may
16043only be used by the camera device if quirks.<wbr/>usePartialResult is set to 1.<wbr/></p>
16044            </td>
16045          </tr>
16046
16047          <tr class="entries_header">
16048            <th class="th_details" colspan="6">HAL Implementation Details</th>
16049          </tr>
16050          <tr class="entry_cont">
16051            <td class="entry_details" colspan="6">
16052              <p>Refer to <code>camera3_<wbr/>capture_<wbr/>result::partial_<wbr/>result</code>
16053for information on how to implement partial results.<wbr/></p>
16054            </td>
16055          </tr>
16056
16057          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16058           <!-- end of entry -->
16059
16060
16061
16062      <!-- end of kind -->
16063      </tbody>
16064
16065  <!-- end of section -->
16066  <tr><td colspan="7" id="section_request" class="section">request</td></tr>
16067
16068
16069      <tr><td colspan="7" class="kind">controls</td></tr>
16070
16071      <thead class="entries_header">
16072        <tr>
16073          <th class="th_name">Property Name</th>
16074          <th class="th_type">Type</th>
16075          <th class="th_description">Description</th>
16076          <th class="th_units">Units</th>
16077          <th class="th_range">Range</th>
16078          <th class="th_hal_version">Initial HIDL HAL version</th>
16079          <th class="th_tags">Tags</th>
16080        </tr>
16081      </thead>
16082
16083      <tbody>
16084
16085
16086
16087
16088
16089
16090
16091
16092
16093
16094          <tr class="entry" id="controls_android.request.frameCount">
16095            <td class="entry_name
16096                entry_name_deprecated
16097             " rowspan="1">
16098              android.<wbr/>request.<wbr/>frame<wbr/>Count
16099            </td>
16100            <td class="entry_type">
16101                <span class="entry_type_name">int32</span>
16102
16103              <span class="entry_type_visibility"> [system]</span>
16104
16105
16106
16107              <span class="entry_type_deprecated">[deprecated] </span>
16108
16109
16110
16111            </td> <!-- entry_type -->
16112
16113            <td class="entry_description">
16114              <p>A frame counter set by the framework.<wbr/> Must
16115be maintained unchanged in output frame.<wbr/> This value monotonically
16116increases with every new result (that is,<wbr/> each new result has a unique
16117frameCount value).<wbr/></p>
16118            </td>
16119
16120            <td class="entry_units">
16121              incrementing integer
16122            </td>
16123
16124            <td class="entry_range">
16125              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
16126              <p>Any int.<wbr/></p>
16127            </td>
16128
16129            <td class="entry_hal_version">
16130              <p>3.<wbr/>2</p>
16131            </td>
16132
16133            <td class="entry_tags">
16134            </td>
16135
16136          </tr>
16137
16138
16139          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16140           <!-- end of entry -->
16141
16142
16143          <tr class="entry" id="controls_android.request.id">
16144            <td class="entry_name
16145             " rowspan="1">
16146              android.<wbr/>request.<wbr/>id
16147            </td>
16148            <td class="entry_type">
16149                <span class="entry_type_name">int32</span>
16150
16151              <span class="entry_type_visibility"> [hidden]</span>
16152
16153
16154
16155
16156
16157
16158            </td> <!-- entry_type -->
16159
16160            <td class="entry_description">
16161              <p>An application-specified ID for the current
16162request.<wbr/> Must be maintained unchanged in output
16163frame</p>
16164            </td>
16165
16166            <td class="entry_units">
16167              arbitrary integer assigned by application
16168            </td>
16169
16170            <td class="entry_range">
16171              <p>Any int</p>
16172            </td>
16173
16174            <td class="entry_hal_version">
16175              <p>3.<wbr/>2</p>
16176            </td>
16177
16178            <td class="entry_tags">
16179              <ul class="entry_tags">
16180                  <li><a href="#tag_V1">V1</a></li>
16181              </ul>
16182            </td>
16183
16184          </tr>
16185
16186
16187          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16188           <!-- end of entry -->
16189
16190
16191          <tr class="entry" id="controls_android.request.inputStreams">
16192            <td class="entry_name
16193                entry_name_deprecated
16194             " rowspan="3">
16195              android.<wbr/>request.<wbr/>input<wbr/>Streams
16196            </td>
16197            <td class="entry_type">
16198                <span class="entry_type_name">int32</span>
16199                <span class="entry_type_container">x</span>
16200
16201                <span class="entry_type_array">
16202                  n
16203                </span>
16204              <span class="entry_type_visibility"> [system]</span>
16205
16206
16207
16208              <span class="entry_type_deprecated">[deprecated] </span>
16209
16210
16211
16212            </td> <!-- entry_type -->
16213
16214            <td class="entry_description">
16215              <p>List which camera reprocess stream is used
16216for the source of reprocessing data.<wbr/></p>
16217            </td>
16218
16219            <td class="entry_units">
16220              List of camera reprocess stream IDs
16221            </td>
16222
16223            <td class="entry_range">
16224              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
16225              <p>Typically,<wbr/> only one entry allowed,<wbr/> must be a valid reprocess stream ID.<wbr/></p>
16226            </td>
16227
16228            <td class="entry_hal_version">
16229              <p>3.<wbr/>2</p>
16230            </td>
16231
16232            <td class="entry_tags">
16233              <ul class="entry_tags">
16234                  <li><a href="#tag_HAL2">HAL2</a></li>
16235              </ul>
16236            </td>
16237
16238          </tr>
16239          <tr class="entries_header">
16240            <th class="th_details" colspan="6">Details</th>
16241          </tr>
16242          <tr class="entry_cont">
16243            <td class="entry_details" colspan="6">
16244              <p>Only meaningful when <a href="#controls_android.request.type">android.<wbr/>request.<wbr/>type</a> ==
16245REPROCESS.<wbr/> Ignored otherwise</p>
16246            </td>
16247          </tr>
16248
16249
16250          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16251           <!-- end of entry -->
16252
16253
16254          <tr class="entry" id="controls_android.request.metadataMode">
16255            <td class="entry_name
16256             " rowspan="1">
16257              android.<wbr/>request.<wbr/>metadata<wbr/>Mode
16258            </td>
16259            <td class="entry_type">
16260                <span class="entry_type_name entry_type_name_enum">byte</span>
16261
16262              <span class="entry_type_visibility"> [system]</span>
16263
16264
16265
16266
16267
16268                <ul class="entry_type_enum">
16269                  <li>
16270                    <span class="entry_type_enum_name">NONE (v3.2)</span>
16271                    <span class="entry_type_enum_notes"><p>No metadata should be produced on output,<wbr/> except
16272for application-bound buffer data.<wbr/> If no
16273application-bound streams exist,<wbr/> no frame should be
16274placed in the output frame queue.<wbr/> If such streams
16275exist,<wbr/> a frame should be placed on the output queue
16276with null metadata but with the necessary output buffer
16277information.<wbr/> Timestamp information should still be
16278included with any output stream buffers</p></span>
16279                  </li>
16280                  <li>
16281                    <span class="entry_type_enum_name">FULL (v3.2)</span>
16282                    <span class="entry_type_enum_notes"><p>All metadata should be produced.<wbr/> Statistics will
16283only be produced if they are separately
16284enabled</p></span>
16285                  </li>
16286                </ul>
16287
16288            </td> <!-- entry_type -->
16289
16290            <td class="entry_description">
16291              <p>How much metadata to produce on
16292output</p>
16293            </td>
16294
16295            <td class="entry_units">
16296            </td>
16297
16298            <td class="entry_range">
16299            </td>
16300
16301            <td class="entry_hal_version">
16302              <p>3.<wbr/>2</p>
16303            </td>
16304
16305            <td class="entry_tags">
16306              <ul class="entry_tags">
16307                  <li><a href="#tag_FUTURE">FUTURE</a></li>
16308              </ul>
16309            </td>
16310
16311          </tr>
16312
16313
16314          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16315           <!-- end of entry -->
16316
16317
16318          <tr class="entry" id="controls_android.request.outputStreams">
16319            <td class="entry_name
16320                entry_name_deprecated
16321             " rowspan="3">
16322              android.<wbr/>request.<wbr/>output<wbr/>Streams
16323            </td>
16324            <td class="entry_type">
16325                <span class="entry_type_name">int32</span>
16326                <span class="entry_type_container">x</span>
16327
16328                <span class="entry_type_array">
16329                  n
16330                </span>
16331              <span class="entry_type_visibility"> [system]</span>
16332
16333
16334
16335              <span class="entry_type_deprecated">[deprecated] </span>
16336
16337
16338
16339            </td> <!-- entry_type -->
16340
16341            <td class="entry_description">
16342              <p>Lists which camera output streams image data
16343from this capture must be sent to</p>
16344            </td>
16345
16346            <td class="entry_units">
16347              List of camera stream IDs
16348            </td>
16349
16350            <td class="entry_range">
16351              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
16352              <p>List must only include streams that have been
16353created</p>
16354            </td>
16355
16356            <td class="entry_hal_version">
16357              <p>3.<wbr/>2</p>
16358            </td>
16359
16360            <td class="entry_tags">
16361              <ul class="entry_tags">
16362                  <li><a href="#tag_HAL2">HAL2</a></li>
16363              </ul>
16364            </td>
16365
16366          </tr>
16367          <tr class="entries_header">
16368            <th class="th_details" colspan="6">Details</th>
16369          </tr>
16370          <tr class="entry_cont">
16371            <td class="entry_details" colspan="6">
16372              <p>If no output streams are listed,<wbr/> then the image
16373data should simply be discarded.<wbr/> The image data must
16374still be captured for metadata and statistics production,<wbr/>
16375and the lens and flash must operate as requested.<wbr/></p>
16376            </td>
16377          </tr>
16378
16379
16380          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16381           <!-- end of entry -->
16382
16383
16384          <tr class="entry" id="controls_android.request.type">
16385            <td class="entry_name
16386                entry_name_deprecated
16387             " rowspan="1">
16388              android.<wbr/>request.<wbr/>type
16389            </td>
16390            <td class="entry_type">
16391                <span class="entry_type_name entry_type_name_enum">byte</span>
16392
16393              <span class="entry_type_visibility"> [system]</span>
16394
16395
16396
16397              <span class="entry_type_deprecated">[deprecated] </span>
16398
16399
16400                <ul class="entry_type_enum">
16401                  <li>
16402                    <span class="entry_type_enum_name">CAPTURE (v3.2)</span>
16403                    <span class="entry_type_enum_notes"><p>Capture a new image from the imaging hardware,<wbr/>
16404and process it according to the
16405settings</p></span>
16406                  </li>
16407                  <li>
16408                    <span class="entry_type_enum_name">REPROCESS (v3.2)</span>
16409                    <span class="entry_type_enum_notes"><p>Process previously captured data; the
16410<a href="#controls_android.request.inputStreams">android.<wbr/>request.<wbr/>input<wbr/>Streams</a> parameter determines the
16411source reprocessing stream.<wbr/> TODO: Mark dynamic metadata
16412needed for reprocessing with [RP]</p></span>
16413                  </li>
16414                </ul>
16415
16416            </td> <!-- entry_type -->
16417
16418            <td class="entry_description">
16419              <p>The type of the request; either CAPTURE or
16420REPROCESS.<wbr/> For legacy HAL3,<wbr/> this tag is redundant.<wbr/></p>
16421            </td>
16422
16423            <td class="entry_units">
16424            </td>
16425
16426            <td class="entry_range">
16427              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
16428            </td>
16429
16430            <td class="entry_hal_version">
16431              <p>3.<wbr/>2</p>
16432            </td>
16433
16434            <td class="entry_tags">
16435              <ul class="entry_tags">
16436                  <li><a href="#tag_HAL2">HAL2</a></li>
16437              </ul>
16438            </td>
16439
16440          </tr>
16441
16442
16443          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16444           <!-- end of entry -->
16445
16446
16447
16448      <!-- end of kind -->
16449      </tbody>
16450      <tr><td colspan="7" class="kind">static</td></tr>
16451
16452      <thead class="entries_header">
16453        <tr>
16454          <th class="th_name">Property Name</th>
16455          <th class="th_type">Type</th>
16456          <th class="th_description">Description</th>
16457          <th class="th_units">Units</th>
16458          <th class="th_range">Range</th>
16459          <th class="th_hal_version">Initial HIDL HAL version</th>
16460          <th class="th_tags">Tags</th>
16461        </tr>
16462      </thead>
16463
16464      <tbody>
16465
16466
16467
16468
16469
16470
16471
16472
16473
16474
16475          <tr class="entry" id="static_android.request.maxNumOutputStreams">
16476            <td class="entry_name
16477             " rowspan="3">
16478              android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams
16479            </td>
16480            <td class="entry_type">
16481                <span class="entry_type_name">int32</span>
16482                <span class="entry_type_container">x</span>
16483
16484                <span class="entry_type_array">
16485                  3
16486                </span>
16487              <span class="entry_type_visibility"> [ndk_public]</span>
16488
16489
16490              <span class="entry_type_hwlevel">[legacy] </span>
16491
16492
16493
16494
16495            </td> <!-- entry_type -->
16496
16497            <td class="entry_description">
16498              <p>The maximum numbers of different types of output streams
16499that can be configured and used simultaneously by a camera device.<wbr/></p>
16500            </td>
16501
16502            <td class="entry_units">
16503            </td>
16504
16505            <td class="entry_range">
16506              <p>For processed (and stalling) format streams,<wbr/> &gt;= 1.<wbr/></p>
16507<p>For Raw format (either stalling or non-stalling) streams,<wbr/> &gt;= 0.<wbr/></p>
16508<p>For processed (but not stalling) format streams,<wbr/> &gt;= 3
16509for FULL mode devices (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL</code>);
16510&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>
16511            </td>
16512
16513            <td class="entry_hal_version">
16514              <p>3.<wbr/>2</p>
16515            </td>
16516
16517            <td class="entry_tags">
16518              <ul class="entry_tags">
16519                  <li><a href="#tag_BC">BC</a></li>
16520              </ul>
16521            </td>
16522
16523          </tr>
16524          <tr class="entries_header">
16525            <th class="th_details" colspan="6">Details</th>
16526          </tr>
16527          <tr class="entry_cont">
16528            <td class="entry_details" colspan="6">
16529              <p>This is a 3 element tuple that contains the max number of output simultaneous
16530streams for raw sensor,<wbr/> processed (but not stalling),<wbr/> and processed (and stalling)
16531formats respectively.<wbr/> For example,<wbr/> assuming that JPEG is typically a processed and
16532stalling stream,<wbr/> if max raw sensor format output stream number is 1,<wbr/> max YUV streams
16533number 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>
16534<p>This lists the upper bound of the number of output streams supported by
16535the camera device.<wbr/> Using more streams simultaneously may require more hardware and
16536CPU resources that will consume more power.<wbr/> The image format for an output stream can
16537be any supported format provided by <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a>.<wbr/>
16538The formats defined in <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> can be catergorized
16539into the 3 stream types as below:</p>
16540<ul>
16541<li>Processed (but stalling): any non-RAW format with a stallDurations &gt; 0.<wbr/>
16542  Typically <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">JPEG format</a>.<wbr/></li>
16543<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
16544  <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW12">RAW12</a>.<wbr/></li>
16545<li>Processed (but not-stalling): any non-RAW format without a stall duration.<wbr/>  Typically
16546  <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">YUV_<wbr/>420_<wbr/>888</a>,<wbr/>
16547  <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>
16548</ul>
16549            </td>
16550          </tr>
16551
16552
16553          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16554           <!-- end of entry -->
16555
16556
16557          <tr class="entry" id="static_android.request.maxNumOutputRaw">
16558            <td class="entry_name
16559             " rowspan="3">
16560              android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Raw
16561            </td>
16562            <td class="entry_type">
16563                <span class="entry_type_name">int32</span>
16564
16565              <span class="entry_type_visibility"> [java_public]</span>
16566
16567              <span class="entry_type_synthetic">[synthetic] </span>
16568
16569              <span class="entry_type_hwlevel">[legacy] </span>
16570
16571
16572
16573
16574            </td> <!-- entry_type -->
16575
16576            <td class="entry_description">
16577              <p>The maximum numbers of different types of output streams
16578that can be configured and used simultaneously by a camera device
16579for any <code>RAW</code> formats.<wbr/></p>
16580            </td>
16581
16582            <td class="entry_units">
16583            </td>
16584
16585            <td class="entry_range">
16586              <p>&gt;= 0</p>
16587            </td>
16588
16589            <td class="entry_hal_version">
16590              <p>3.<wbr/>2</p>
16591            </td>
16592
16593            <td class="entry_tags">
16594            </td>
16595
16596          </tr>
16597          <tr class="entries_header">
16598            <th class="th_details" colspan="6">Details</th>
16599          </tr>
16600          <tr class="entry_cont">
16601            <td class="entry_details" colspan="6">
16602              <p>This value contains the max number of output simultaneous
16603streams from the raw sensor.<wbr/></p>
16604<p>This lists the upper bound of the number of output streams supported by
16605the camera device.<wbr/> Using more streams simultaneously may require more hardware and
16606CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can
16607be 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>
16608<p>In particular,<wbr/> a <code>RAW</code> format is typically one of:</p>
16609<ul>
16610<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_SENSOR">RAW_<wbr/>SENSOR</a></li>
16611<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW10">RAW10</a></li>
16612<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW12">RAW12</a></li>
16613</ul>
16614<p>LEGACY mode devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> <code>==</code> LEGACY)
16615never support raw streams.<wbr/></p>
16616            </td>
16617          </tr>
16618
16619
16620          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16621           <!-- end of entry -->
16622
16623
16624          <tr class="entry" id="static_android.request.maxNumOutputProc">
16625            <td class="entry_name
16626             " rowspan="3">
16627              android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Proc
16628            </td>
16629            <td class="entry_type">
16630                <span class="entry_type_name">int32</span>
16631
16632              <span class="entry_type_visibility"> [java_public]</span>
16633
16634              <span class="entry_type_synthetic">[synthetic] </span>
16635
16636              <span class="entry_type_hwlevel">[legacy] </span>
16637
16638
16639
16640
16641            </td> <!-- entry_type -->
16642
16643            <td class="entry_description">
16644              <p>The maximum numbers of different types of output streams
16645that can be configured and used simultaneously by a camera device
16646for any processed (but not-stalling) formats.<wbr/></p>
16647            </td>
16648
16649            <td class="entry_units">
16650            </td>
16651
16652            <td class="entry_range">
16653              <p>&gt;= 3
16654for FULL mode devices (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL</code>);
16655&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>
16656            </td>
16657
16658            <td class="entry_hal_version">
16659              <p>3.<wbr/>2</p>
16660            </td>
16661
16662            <td class="entry_tags">
16663            </td>
16664
16665          </tr>
16666          <tr class="entries_header">
16667            <th class="th_details" colspan="6">Details</th>
16668          </tr>
16669          <tr class="entry_cont">
16670            <td class="entry_details" colspan="6">
16671              <p>This value contains the max number of output simultaneous
16672streams for any processed (but not-stalling) formats.<wbr/></p>
16673<p>This lists the upper bound of the number of output streams supported by
16674the camera device.<wbr/> Using more streams simultaneously may require more hardware and
16675CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can
16676be 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>
16677<p>Processed (but not-stalling) is defined as any non-RAW format without a stall duration.<wbr/>
16678Typically:</p>
16679<ul>
16680<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">YUV_<wbr/>420_<wbr/>888</a></li>
16681<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#NV21">NV21</a></li>
16682<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YV12">YV12</a></li>
16683<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>
16684<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#Y8">Y8</a></li>
16685</ul>
16686<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
16687processed format -- it will return 0 for a non-stalling stream.<wbr/></p>
16688<p>LEGACY devices will support at least 2 processing/<wbr/>non-stalling streams.<wbr/></p>
16689            </td>
16690          </tr>
16691
16692
16693          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16694           <!-- end of entry -->
16695
16696
16697          <tr class="entry" id="static_android.request.maxNumOutputProcStalling">
16698            <td class="entry_name
16699             " rowspan="3">
16700              android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Proc<wbr/>Stalling
16701            </td>
16702            <td class="entry_type">
16703                <span class="entry_type_name">int32</span>
16704
16705              <span class="entry_type_visibility"> [java_public]</span>
16706
16707              <span class="entry_type_synthetic">[synthetic] </span>
16708
16709              <span class="entry_type_hwlevel">[legacy] </span>
16710
16711
16712
16713
16714            </td> <!-- entry_type -->
16715
16716            <td class="entry_description">
16717              <p>The maximum numbers of different types of output streams
16718that can be configured and used simultaneously by a camera device
16719for any processed (and stalling) formats.<wbr/></p>
16720            </td>
16721
16722            <td class="entry_units">
16723            </td>
16724
16725            <td class="entry_range">
16726              <p>&gt;= 1</p>
16727            </td>
16728
16729            <td class="entry_hal_version">
16730              <p>3.<wbr/>2</p>
16731            </td>
16732
16733            <td class="entry_tags">
16734            </td>
16735
16736          </tr>
16737          <tr class="entries_header">
16738            <th class="th_details" colspan="6">Details</th>
16739          </tr>
16740          <tr class="entry_cont">
16741            <td class="entry_details" colspan="6">
16742              <p>This value contains the max number of output simultaneous
16743streams for any processed (but not-stalling) formats.<wbr/></p>
16744<p>This lists the upper bound of the number of output streams supported by
16745the camera device.<wbr/> Using more streams simultaneously may require more hardware and
16746CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can
16747be 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>
16748<p>A processed and stalling format is defined as any non-RAW format with a stallDurations
16749&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>
16750<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
16751processed format -- it will return a non-0 value for a stalling stream.<wbr/></p>
16752<p>LEGACY devices will support up to 1 processing/<wbr/>stalling stream.<wbr/></p>
16753            </td>
16754          </tr>
16755
16756
16757          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16758           <!-- end of entry -->
16759
16760
16761          <tr class="entry" id="static_android.request.maxNumReprocessStreams">
16762            <td class="entry_name
16763                entry_name_deprecated
16764             " rowspan="3">
16765              android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Reprocess<wbr/>Streams
16766            </td>
16767            <td class="entry_type">
16768                <span class="entry_type_name">int32</span>
16769                <span class="entry_type_container">x</span>
16770
16771                <span class="entry_type_array">
16772                  1
16773                </span>
16774              <span class="entry_type_visibility"> [system]</span>
16775
16776
16777
16778              <span class="entry_type_deprecated">[deprecated] </span>
16779
16780
16781
16782            </td> <!-- entry_type -->
16783
16784            <td class="entry_description">
16785              <p>How many reprocessing streams of any type
16786can be allocated at the same time.<wbr/></p>
16787            </td>
16788
16789            <td class="entry_units">
16790            </td>
16791
16792            <td class="entry_range">
16793              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
16794              <p>&gt;= 0</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_HAL2">HAL2</a></li>
16804              </ul>
16805            </td>
16806
16807          </tr>
16808          <tr class="entries_header">
16809            <th class="th_details" colspan="6">Details</th>
16810          </tr>
16811          <tr class="entry_cont">
16812            <td class="entry_details" colspan="6">
16813              <p>Only used by HAL2.<wbr/>x.<wbr/></p>
16814<p>When set to 0,<wbr/> it means no reprocess stream is supported.<wbr/></p>
16815            </td>
16816          </tr>
16817
16818
16819          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16820           <!-- end of entry -->
16821
16822
16823          <tr class="entry" id="static_android.request.maxNumInputStreams">
16824            <td class="entry_name
16825             " rowspan="5">
16826              android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Input<wbr/>Streams
16827            </td>
16828            <td class="entry_type">
16829                <span class="entry_type_name">int32</span>
16830
16831              <span class="entry_type_visibility"> [java_public]</span>
16832
16833
16834              <span class="entry_type_hwlevel">[full] </span>
16835
16836
16837
16838
16839            </td> <!-- entry_type -->
16840
16841            <td class="entry_description">
16842              <p>The maximum numbers of any type of input streams
16843that can be configured and used simultaneously by a camera device.<wbr/></p>
16844            </td>
16845
16846            <td class="entry_units">
16847            </td>
16848
16849            <td class="entry_range">
16850              <p>0 or 1.<wbr/></p>
16851            </td>
16852
16853            <td class="entry_hal_version">
16854              <p>3.<wbr/>2</p>
16855            </td>
16856
16857            <td class="entry_tags">
16858              <ul class="entry_tags">
16859                  <li><a href="#tag_REPROC">REPROC</a></li>
16860              </ul>
16861            </td>
16862
16863          </tr>
16864          <tr class="entries_header">
16865            <th class="th_details" colspan="6">Details</th>
16866          </tr>
16867          <tr class="entry_cont">
16868            <td class="entry_details" colspan="6">
16869              <p>When set to 0,<wbr/> it means no input stream is supported.<wbr/></p>
16870<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
16871input stream,<wbr/> there must be at least one output stream configured to to receive the
16872reprocessed images.<wbr/></p>
16873<p>When an input stream and some output streams are used in a reprocessing request,<wbr/>
16874only the input buffer will be used to produce these output stream buffers,<wbr/> and a
16875new sensor image will not be captured.<wbr/></p>
16876<p>For example,<wbr/> for Zero Shutter Lag (ZSL) still capture use case,<wbr/> the input
16877stream image format will be PRIVATE,<wbr/> the associated output stream image format
16878should be JPEG.<wbr/></p>
16879            </td>
16880          </tr>
16881
16882          <tr class="entries_header">
16883            <th class="th_details" colspan="6">HAL Implementation Details</th>
16884          </tr>
16885          <tr class="entry_cont">
16886            <td class="entry_details" colspan="6">
16887              <p>For the reprocessing flow and controls,<wbr/> see
16888hardware/<wbr/>libhardware/<wbr/>include/<wbr/>hardware/<wbr/>camera3.<wbr/>h Section 10 for more details.<wbr/></p>
16889            </td>
16890          </tr>
16891
16892          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16893           <!-- end of entry -->
16894
16895
16896          <tr class="entry" id="static_android.request.pipelineMaxDepth">
16897            <td class="entry_name
16898             " rowspan="5">
16899              android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth
16900            </td>
16901            <td class="entry_type">
16902                <span class="entry_type_name">byte</span>
16903
16904              <span class="entry_type_visibility"> [public]</span>
16905
16906
16907              <span class="entry_type_hwlevel">[legacy] </span>
16908
16909
16910
16911
16912            </td> <!-- entry_type -->
16913
16914            <td class="entry_description">
16915              <p>Specifies the number of maximum pipeline stages a frame
16916has to go through from when it's exposed to when it's available
16917to the framework.<wbr/></p>
16918            </td>
16919
16920            <td class="entry_units">
16921            </td>
16922
16923            <td class="entry_range">
16924            </td>
16925
16926            <td class="entry_hal_version">
16927              <p>3.<wbr/>2</p>
16928            </td>
16929
16930            <td class="entry_tags">
16931            </td>
16932
16933          </tr>
16934          <tr class="entries_header">
16935            <th class="th_details" colspan="6">Details</th>
16936          </tr>
16937          <tr class="entry_cont">
16938            <td class="entry_details" colspan="6">
16939              <p>A typical minimum value for this is 2 (one stage to expose,<wbr/>
16940one stage to readout) from the sensor.<wbr/> The ISP then usually adds
16941its own stages to do custom HW processing.<wbr/> Further stages may be
16942added by SW processing.<wbr/></p>
16943<p>Depending on what settings are used (e.<wbr/>g.<wbr/> YUV,<wbr/> JPEG) and what
16944processing is enabled (e.<wbr/>g.<wbr/> face detection),<wbr/> the actual pipeline
16945depth (specified by <a href="#dynamic_android.request.pipelineDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Depth</a>) may be less than
16946the max pipeline depth.<wbr/></p>
16947<p>A pipeline depth of X stages is equivalent to a pipeline latency of
16948X frame intervals.<wbr/></p>
16949<p>This value will normally be 8 or less,<wbr/> however,<wbr/> for high speed capture session,<wbr/>
16950the max pipeline depth will be up to 8 x size of high speed capture request list.<wbr/></p>
16951            </td>
16952          </tr>
16953
16954          <tr class="entries_header">
16955            <th class="th_details" colspan="6">HAL Implementation Details</th>
16956          </tr>
16957          <tr class="entry_cont">
16958            <td class="entry_details" colspan="6">
16959              <p>This value should be 4 or less,<wbr/> expect for the high speed recording session,<wbr/> where the
16960max batch sizes may be larger than 1.<wbr/></p>
16961            </td>
16962          </tr>
16963
16964          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16965           <!-- end of entry -->
16966
16967
16968          <tr class="entry" id="static_android.request.partialResultCount">
16969            <td class="entry_name
16970             " rowspan="3">
16971              android.<wbr/>request.<wbr/>partial<wbr/>Result<wbr/>Count
16972            </td>
16973            <td class="entry_type">
16974                <span class="entry_type_name">int32</span>
16975
16976              <span class="entry_type_visibility"> [public]</span>
16977
16978
16979
16980
16981
16982
16983            </td> <!-- entry_type -->
16984
16985            <td class="entry_description">
16986              <p>Defines how many sub-components
16987a result will be composed of.<wbr/></p>
16988            </td>
16989
16990            <td class="entry_units">
16991            </td>
16992
16993            <td class="entry_range">
16994              <p>&gt;= 1</p>
16995            </td>
16996
16997            <td class="entry_hal_version">
16998              <p>3.<wbr/>2</p>
16999            </td>
17000
17001            <td class="entry_tags">
17002            </td>
17003
17004          </tr>
17005          <tr class="entries_header">
17006            <th class="th_details" colspan="6">Details</th>
17007          </tr>
17008          <tr class="entry_cont">
17009            <td class="entry_details" colspan="6">
17010              <p>In order to combat the pipeline latency,<wbr/> partial results
17011may be delivered to the application layer from the camera device as
17012soon as they are available.<wbr/></p>
17013<p>Optional; defaults to 1.<wbr/> A value of 1 means that partial
17014results are not supported,<wbr/> and only the final TotalCaptureResult will
17015be produced by the camera device.<wbr/></p>
17016<p>A typical use case for this might be: after requesting an
17017auto-focus (AF) lock the new AF state might be available 50%
17018of the way through the pipeline.<wbr/>  The camera device could
17019then immediately dispatch this state via a partial result to
17020the application,<wbr/> and the rest of the metadata via later
17021partial results.<wbr/></p>
17022            </td>
17023          </tr>
17024
17025
17026          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17027           <!-- end of entry -->
17028
17029
17030          <tr class="entry" id="static_android.request.availableCapabilities">
17031            <td class="entry_name
17032             " rowspan="5">
17033              android.<wbr/>request.<wbr/>available<wbr/>Capabilities
17034            </td>
17035            <td class="entry_type">
17036                <span class="entry_type_name entry_type_name_enum">byte</span>
17037                <span class="entry_type_container">x</span>
17038
17039                <span class="entry_type_array">
17040                  n
17041                </span>
17042              <span class="entry_type_visibility"> [public]</span>
17043
17044
17045              <span class="entry_type_hwlevel">[legacy] </span>
17046
17047
17048
17049                <ul class="entry_type_enum">
17050                  <li>
17051                    <span class="entry_type_enum_name">BACKWARD_COMPATIBLE (v3.2)</span>
17052                    <span class="entry_type_enum_notes"><p>The minimal set of capabilities that every camera
17053device (regardless of <a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>)
17054supports.<wbr/></p>
17055<p>This capability is listed by all normal devices,<wbr/> and
17056indicates that the camera device has a feature set
17057that's comparable to the baseline requirements for the
17058older android.<wbr/>hardware.<wbr/>Camera API.<wbr/></p>
17059<p>Devices with the DEPTH_<wbr/>OUTPUT capability might not list this
17060capability,<wbr/> indicating that they support only depth measurement,<wbr/>
17061not standard color output.<wbr/></p></span>
17062                  </li>
17063                  <li>
17064                    <span class="entry_type_enum_name">MANUAL_SENSOR (v3.2)</span>
17065                    <span class="entry_type_enum_optional">[optional]</span>
17066                    <span class="entry_type_enum_notes"><p>The camera device can be manually controlled (3A algorithms such
17067as auto-exposure,<wbr/> and auto-focus can be bypassed).<wbr/>
17068The camera device supports basic manual control of the sensor image
17069acquisition related stages.<wbr/> This means the following controls are
17070guaranteed to be supported:</p>
17071<ul>
17072<li>Manual frame duration control<ul>
17073<li><a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a></li>
17074<li><a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a></li>
17075</ul>
17076</li>
17077<li>Manual exposure control<ul>
17078<li><a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a></li>
17079<li><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></li>
17080</ul>
17081</li>
17082<li>Manual sensitivity control<ul>
17083<li><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></li>
17084<li><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></li>
17085</ul>
17086</li>
17087<li>Manual lens control (if the lens is adjustable)<ul>
17088<li>android.<wbr/>lens.<wbr/>*</li>
17089</ul>
17090</li>
17091<li>Manual flash control (if a flash unit is present)<ul>
17092<li>android.<wbr/>flash.<wbr/>*</li>
17093</ul>
17094</li>
17095<li>Manual black level locking<ul>
17096<li><a href="#controls_android.blackLevel.lock">android.<wbr/>black<wbr/>Level.<wbr/>lock</a></li>
17097</ul>
17098</li>
17099<li>Auto exposure lock<ul>
17100<li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li>
17101</ul>
17102</li>
17103</ul>
17104<p>If any of the above 3A algorithms are enabled,<wbr/> then the camera
17105device will accurately report the values applied by 3A in the
17106result.<wbr/></p>
17107<p>A given camera device may also support additional manual sensor controls,<wbr/>
17108but this capability only covers the above list of controls.<wbr/></p>
17109<p>If this is supported,<wbr/> <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> will
17110additionally return a min frame duration that is greater than
17111zero for each supported size-format combination.<wbr/></p>
17112<p>For camera devices with LOGICAL_<wbr/>MULTI_<wbr/>CAMERA capability,<wbr/> when the underlying active
17113physical camera switches,<wbr/> exposureTime,<wbr/> sensitivity,<wbr/> and lens properties may change
17114even if AE/<wbr/>AF is locked.<wbr/> However,<wbr/> the overall auto exposure and auto focus experience
17115for users will be consistent.<wbr/> Refer to LOGICAL_<wbr/>MULTI_<wbr/>CAMERA capability for details.<wbr/></p></span>
17116                  </li>
17117                  <li>
17118                    <span class="entry_type_enum_name">MANUAL_POST_PROCESSING (v3.2)</span>
17119                    <span class="entry_type_enum_optional">[optional]</span>
17120                    <span class="entry_type_enum_notes"><p>The camera device post-processing stages can be manually controlled.<wbr/>
17121The camera device supports basic manual control of the image post-processing
17122stages.<wbr/> This means the following controls are guaranteed to be supported:</p>
17123<ul>
17124<li>
17125<p>Manual tonemap control</p>
17126<ul>
17127<li><a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a></li>
17128<li><a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a></li>
17129<li><a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></li>
17130<li><a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a></li>
17131<li><a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a></li>
17132</ul>
17133</li>
17134<li>
17135<p>Manual white balance control</p>
17136<ul>
17137<li><a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a></li>
17138<li><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a></li>
17139</ul>
17140</li>
17141<li>Manual lens shading map control<ul>
17142<li><a href="#controls_android.shading.mode">android.<wbr/>shading.<wbr/>mode</a></li>
17143<li><a href="#controls_android.statistics.lensShadingMapMode">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode</a></li>
17144<li><a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a></li>
17145<li><a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a></li>
17146</ul>
17147</li>
17148<li>Manual aberration correction control (if aberration correction is supported)<ul>
17149<li><a href="#controls_android.colorCorrection.aberrationMode">android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode</a></li>
17150<li><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></li>
17151</ul>
17152</li>
17153<li>Auto white balance lock<ul>
17154<li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li>
17155</ul>
17156</li>
17157</ul>
17158<p>If auto white balance is enabled,<wbr/> then the camera device
17159will accurately report the values applied by AWB in the result.<wbr/></p>
17160<p>A given camera device may also support additional post-processing
17161controls,<wbr/> but this capability only covers the above list of controls.<wbr/></p>
17162<p>For camera devices with LOGICAL_<wbr/>MULTI_<wbr/>CAMERA capability,<wbr/> when underlying active
17163physical camera switches,<wbr/> tonemap,<wbr/> white balance,<wbr/> and shading map may change even if
17164awb is locked.<wbr/> However,<wbr/> the overall post-processing experience for users will be
17165consistent.<wbr/> Refer to LOGICAL_<wbr/>MULTI_<wbr/>CAMERA capability for details.<wbr/></p></span>
17166                  </li>
17167                  <li>
17168                    <span class="entry_type_enum_name">RAW (v3.2)</span>
17169                    <span class="entry_type_enum_optional">[optional]</span>
17170                    <span class="entry_type_enum_notes"><p>The camera device supports outputting RAW buffers and
17171metadata for interpreting them.<wbr/></p>
17172<p>Devices supporting the RAW capability allow both for
17173saving DNG files,<wbr/> and for direct application processing of
17174raw sensor images.<wbr/></p>
17175<ul>
17176<li>RAW_<wbr/>SENSOR is supported as an output format.<wbr/></li>
17177<li>The maximum available resolution for RAW_<wbr/>SENSOR streams
17178  will match either the value in
17179  <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a> or
17180  <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>
17181<li>All DNG-related optional metadata entries are provided
17182  by the camera device.<wbr/></li>
17183</ul></span>
17184                  </li>
17185                  <li>
17186                    <span class="entry_type_enum_name">PRIVATE_REPROCESSING (v3.2)</span>
17187                    <span class="entry_type_enum_optional">[optional]</span>
17188                    <span class="entry_type_enum_notes"><p>The camera device supports the Zero Shutter Lag reprocessing use case.<wbr/></p>
17189<ul>
17190<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>
17191<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/>
17192  that is,<wbr/> <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> is included in the lists of
17193  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>
17194<li><a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getValidOutputFormatsForInput">StreamConfigurationMap#getValidOutputFormatsForInput</a>
17195  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>
17196<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>
17197<li>Using <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> does not cause a frame rate drop
17198  relative to the sensor's maximum capture rate (at that resolution).<wbr/></li>
17199<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> will be reprocessable into both
17200  <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a> and
17201  <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a> formats.<wbr/></li>
17202<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
17203  <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#Y8">ImageFormat#Y8</a>.<wbr/></li>
17204<li>The maximum available resolution for PRIVATE streams
17205  (both input/<wbr/>output) will match the maximum available
17206  resolution of JPEG streams.<wbr/></li>
17207<li>Static metadata <a href="#static_android.reprocess.maxCaptureStall">android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall</a>.<wbr/></li>
17208<li>Only below controls are effective for reprocessing requests and
17209  will be present in capture results,<wbr/> other controls in reprocess
17210  requests will be ignored by the camera device.<wbr/><ul>
17211<li>android.<wbr/>jpeg.<wbr/>*</li>
17212<li><a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></li>
17213<li><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></li>
17214</ul>
17215</li>
17216<li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a> and
17217  <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>
17218</ul></span>
17219                  </li>
17220                  <li>
17221                    <span class="entry_type_enum_name">READ_SENSOR_SETTINGS (v3.2)</span>
17222                    <span class="entry_type_enum_optional">[optional]</span>
17223                    <span class="entry_type_enum_notes"><p>The camera device supports accurately reporting the sensor settings for many of
17224the sensor controls while the built-in 3A algorithm is running.<wbr/>  This allows
17225reporting of sensor settings even when these settings cannot be manually changed.<wbr/></p>
17226<p>The values reported for the following controls are guaranteed to be available
17227in the CaptureResult,<wbr/> including when 3A is enabled:</p>
17228<ul>
17229<li>Exposure control<ul>
17230<li><a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a></li>
17231</ul>
17232</li>
17233<li>Sensitivity control<ul>
17234<li><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></li>
17235</ul>
17236</li>
17237<li>Lens controls (if the lens is adjustable)<ul>
17238<li><a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a></li>
17239<li><a href="#controls_android.lens.aperture">android.<wbr/>lens.<wbr/>aperture</a></li>
17240</ul>
17241</li>
17242</ul>
17243<p>This capability is a subset of the MANUAL_<wbr/>SENSOR control capability,<wbr/> and will
17244always be included if the MANUAL_<wbr/>SENSOR capability is available.<wbr/></p></span>
17245                  </li>
17246                  <li>
17247                    <span class="entry_type_enum_name">BURST_CAPTURE (v3.2)</span>
17248                    <span class="entry_type_enum_optional">[optional]</span>
17249                    <span class="entry_type_enum_notes"><p>The camera device supports capturing high-resolution images at &gt;= 20 frames per
17250second,<wbr/> in at least the uncompressed YUV format,<wbr/> when post-processing settings are
17251set to FAST.<wbr/> Additionally,<wbr/> all image resolutions less than 24 megapixels can be
17252captured at &gt;= 10 frames per second.<wbr/> Here,<wbr/> 'high resolution' means at least 8
17253megapixels,<wbr/> or the maximum resolution of the device,<wbr/> whichever is smaller.<wbr/></p></span>
17254                  </li>
17255                  <li>
17256                    <span class="entry_type_enum_name">YUV_REPROCESSING (v3.2)</span>
17257                    <span class="entry_type_enum_optional">[optional]</span>
17258                    <span class="entry_type_enum_notes"><p>The camera device supports the YUV_<wbr/>420_<wbr/>888 reprocessing use case,<wbr/> similar as
17259PRIVATE_<wbr/>REPROCESSING,<wbr/> This capability requires the camera device to support the
17260following:</p>
17261<ul>
17262<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>
17263<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
17264  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>
17265<li><a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getValidOutputFormatsForInput">StreamConfigurationMap#getValidOutputFormatsForInput</a>
17266  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>
17267<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>
17268<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
17269  drop relative to the sensor's maximum capture rate (at that resolution).<wbr/></li>
17270<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
17271  <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>
17272<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
17273  maximum available resolution of <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a> streams.<wbr/></li>
17274<li>For a MONOCHROME camera with Y8 format support,<wbr/> all the requirements mentioned
17275  above for YUV_<wbr/>420_<wbr/>888 apply for Y8 format as well.<wbr/></li>
17276<li>Static metadata <a href="#static_android.reprocess.maxCaptureStall">android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall</a>.<wbr/></li>
17277<li>Only the below controls are effective for reprocessing requests and will be present
17278  in capture results.<wbr/> The reprocess requests are from the original capture results
17279  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
17280  reprocess requests will be ignored by the camera device.<wbr/><ul>
17281<li>android.<wbr/>jpeg.<wbr/>*</li>
17282<li><a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></li>
17283<li><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></li>
17284<li><a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a></li>
17285</ul>
17286</li>
17287<li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a> and
17288  <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>
17289</ul></span>
17290                  </li>
17291                  <li>
17292                    <span class="entry_type_enum_name">DEPTH_OUTPUT (v3.2)</span>
17293                    <span class="entry_type_enum_optional">[optional]</span>
17294                    <span class="entry_type_enum_notes"><p>The camera device can produce depth measurements from its field of view.<wbr/></p>
17295<p>This capability requires the camera device to support the following:</p>
17296<ul>
17297<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#DEPTH16">ImageFormat#DEPTH16</a> is supported as
17298  an output format.<wbr/></li>
17299<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
17300  optionally supported as an output format.<wbr/></li>
17301<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
17302  list the following calibration metadata entries in both <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html">CameraCharacteristics</a>
17303  and <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">CaptureResult</a>:<ul>
17304<li><a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a></li>
17305<li><a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a></li>
17306<li><a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a></li>
17307<li><a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a></li>
17308</ul>
17309</li>
17310<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>
17311<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>
17312<li>A LIMITED camera with only the DEPTH_<wbr/>OUTPUT capability does not have to support
17313  normal YUV_<wbr/>420_<wbr/>888,<wbr/> Y8,<wbr/> JPEG,<wbr/> and PRIV-format outputs.<wbr/> It only has to support the
17314  DEPTH16 format.<wbr/></li>
17315</ul>
17316<p>Generally,<wbr/> depth output operates at a slower frame rate than standard color capture,<wbr/>
17317so the DEPTH16 and DEPTH_<wbr/>POINT_<wbr/>CLOUD formats will commonly have a stall duration that
17318should be accounted for (see <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a>).<wbr/>
17319On a device that supports both depth and color-based output,<wbr/> to enable smooth preview,<wbr/>
17320using a repeating burst is recommended,<wbr/> where a depth-output target is only included
17321once every N frames,<wbr/> where N is the ratio between preview output rate and depth output
17322rate,<wbr/> including depth stall time.<wbr/></p></span>
17323                  </li>
17324                  <li>
17325                    <span class="entry_type_enum_name">CONSTRAINED_HIGH_SPEED_VIDEO (v3.2)</span>
17326                    <span class="entry_type_enum_optional">[optional]</span>
17327                    <span class="entry_type_enum_notes"><p>The device supports constrained high speed video recording (frame rate &gt;=120fps) use
17328case.<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
17329only 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>
17330<p>A camera device can still support high speed video streaming by advertising the high
17331speed 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
17332normal capture request per frame control and synchronization requirements will apply
17333to the high speed fps ranges,<wbr/> the same as all other fps ranges.<wbr/> This capability
17334describes the capability of a specialized operating mode with many limitations (see
17335below),<wbr/> which is only targeted at high speed video recording.<wbr/></p>
17336<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/>
17337To get desired output frame rates,<wbr/> the application is only allowed to select video
17338size 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
17339fps 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>
17340<p>In this capability,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to
17341ON,<wbr/> AUTO,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode
17342controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture
17343and post-processing parameters is possible.<wbr/> All other controls operate the
17344same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other
17345android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p>
17346<ul>
17347<li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li>
17348<li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li>
17349<li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li>
17350<li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li>
17351<li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li>
17352<li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li>
17353<li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li>
17354<li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li>
17355<li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li>
17356<li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li>
17357</ul>
17358<p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p>
17359<ul>
17360<li><a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> (TORCH mode only,<wbr/> automatic flash for still capture will not
17361work since aeMode is ON)</li>
17362<li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li>
17363<li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li>
17364<li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> (if it is supported)</li>
17365</ul>
17366<p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may
17367be lower than what camera can output,<wbr/> depending on the destination Surfaces for
17368the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/>
17369the application need check if the video encoder is capable of supporting the
17370high frame rate for a given video size,<wbr/> or it will end up with lower recording
17371frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the actual preview frame
17372rate will be bounded by the screen refresh rate.<wbr/></p>
17373<p>The camera device will only support up to 2 high speed simultaneous output surfaces
17374(preview and recording surfaces) in this mode.<wbr/> Above controls will be effective only
17375if all of below conditions are true:</p>
17376<ul>
17377<li>The application creates a camera capture session with no more than 2 surfaces via
17378<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>.<wbr/> The
17379targeted 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
17380surface(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>
17381<li>The stream sizes are selected from the sizes reported by
17382<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighSpeedVideoSizes">StreamConfigurationMap#getHighSpeedVideoSizes</a>.<wbr/></li>
17383<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>
17384</ul>
17385<p>When above conditions are NOT satistied,<wbr/>
17386<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>
17387will fail.<wbr/></p>
17388<p>Switching to a FPS range that has different maximum FPS may trigger some camera device
17389reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that
17390the application avoids unnecessary maximum target FPS changes as much as possible
17391during high speed streaming.<wbr/></p></span>
17392                  </li>
17393                  <li>
17394                    <span class="entry_type_enum_name">MOTION_TRACKING (v3.3)</span>
17395                    <span class="entry_type_enum_optional">[optional]</span>
17396                    <span class="entry_type_enum_notes"><p>The camera device supports the MOTION_<wbr/>TRACKING value for
17397<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>
17398<p>This limits the motion blur of capture images,<wbr/> resulting in better image tracking
17399results for use cases such as image stabilization or augmented reality.<wbr/></p></span>
17400                  </li>
17401                  <li>
17402                    <span class="entry_type_enum_name">LOGICAL_MULTI_CAMERA (v3.3)</span>
17403                    <span class="entry_type_enum_optional">[optional]</span>
17404                    <span class="entry_type_enum_notes"><p>The camera device is a logical camera backed by two or more physical cameras.<wbr/></p>
17405<p>In API level 28,<wbr/> the physical cameras must also be exposed to the application via
17406<a href="https://developer.android.com/reference/android/hardware/camera2/CameraManager.html#getCameraIdList">CameraManager#getCameraIdList</a>.<wbr/></p>
17407<p>Starting from API level 29,<wbr/> some or all physical cameras may not be independently
17408exposed to the application,<wbr/> in which case the physical camera IDs will not be
17409available in <a href="https://developer.android.com/reference/android/hardware/camera2/CameraManager.html#getCameraIdList">CameraManager#getCameraIdList</a>.<wbr/> But the
17410application can still query the physical cameras' characteristics by calling
17411<a href="https://developer.android.com/reference/android/hardware/camera2/CameraManager.html#getCameraCharacteristics">CameraManager#getCameraCharacteristics</a>.<wbr/> Additionally,<wbr/>
17412if a physical camera is hidden from camera ID list,<wbr/> the mandatory stream combinations
17413for that physical camera must be supported through the logical camera using physical
17414streams.<wbr/></p>
17415<p>Combinations of logical and physical streams,<wbr/> or physical streams from different
17416physical cameras are not guaranteed.<wbr/> However,<wbr/> if the camera device supports
17417<a href="https://developer.android.com/reference/CameraDevice.html#isSessionConfigurationSupported">CameraDevice#isSessionConfigurationSupported</a>,<wbr/>
17418application must be able to query whether a stream combination involving physical
17419streams is supported by calling
17420<a href="https://developer.android.com/reference/CameraDevice.html#isSessionConfigurationSupported">CameraDevice#isSessionConfigurationSupported</a>.<wbr/></p>
17421<p>Camera application shouldn't assume that there are at most 1 rear camera and 1 front
17422camera in the system.<wbr/> For an application that switches between front and back cameras,<wbr/>
17423the recommendation is to switch between the first rear camera and the first front
17424camera in the list of supported camera devices.<wbr/></p>
17425<p>This capability requires the camera device to support the following:</p>
17426<ul>
17427<li>The IDs of underlying physical cameras are returned via
17428  <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getPhysicalCameraIds">CameraCharacteristics#getPhysicalCameraIds</a>.<wbr/></li>
17429<li>This camera device must list static metadata
17430  <a href="#static_android.logicalMultiCamera.sensorSyncType">android.<wbr/>logical<wbr/>Multi<wbr/>Camera.<wbr/>sensor<wbr/>Sync<wbr/>Type</a> in
17431  <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html">CameraCharacteristics</a>.<wbr/></li>
17432<li>The underlying physical cameras' static metadata must list the following entries,<wbr/>
17433  so that the application can correlate pixels from the physical streams:<ul>
17434<li><a href="#static_android.lens.poseReference">android.<wbr/>lens.<wbr/>pose<wbr/>Reference</a></li>
17435<li><a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a></li>
17436<li><a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a></li>
17437<li><a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a></li>
17438<li><a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a></li>
17439</ul>
17440</li>
17441<li>The SENSOR_<wbr/>INFO_<wbr/>TIMESTAMP_<wbr/>SOURCE of the logical device and physical devices must be
17442  the same.<wbr/></li>
17443<li>The logical camera must be LIMITED or higher device.<wbr/></li>
17444</ul>
17445<p>A logical camera device's dynamic metadata may contain
17446<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
17447active physical camera Id.<wbr/> An active physical camera is the physical camera from which
17448the logical camera's main image data outputs (YUV or RAW) and metadata come from.<wbr/>
17449In addition,<wbr/> this serves as an indication which physical camera is used to output to
17450a RAW stream,<wbr/> or in case only physical cameras support RAW,<wbr/> which physical RAW stream
17451the application should request.<wbr/></p>
17452<p>Logical camera's static metadata tags below describe the default active physical
17453camera.<wbr/> An active physical camera is default if it's used when application directly
17454uses requests built from a template.<wbr/> All templates will default to the same active
17455physical camera.<wbr/></p>
17456<ul>
17457<li><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></li>
17458<li><a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a></li>
17459<li><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></li>
17460<li><a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a></li>
17461<li><a href="#static_android.sensor.info.physicalSize">android.<wbr/>sensor.<wbr/>info.<wbr/>physical<wbr/>Size</a></li>
17462<li><a href="#static_android.sensor.info.whiteLevel">android.<wbr/>sensor.<wbr/>info.<wbr/>white<wbr/>Level</a></li>
17463<li><a href="#static_android.sensor.info.lensShadingApplied">android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied</a></li>
17464<li><a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a></li>
17465<li><a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a></li>
17466<li><a href="#static_android.sensor.calibrationTransform1">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1</a></li>
17467<li><a href="#static_android.sensor.calibrationTransform2">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2</a></li>
17468<li><a href="#static_android.sensor.colorTransform1">android.<wbr/>sensor.<wbr/>color<wbr/>Transform1</a></li>
17469<li><a href="#static_android.sensor.colorTransform2">android.<wbr/>sensor.<wbr/>color<wbr/>Transform2</a></li>
17470<li><a href="#static_android.sensor.forwardMatrix1">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1</a></li>
17471<li><a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a></li>
17472<li><a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a></li>
17473<li><a href="#static_android.sensor.maxAnalogSensitivity">android.<wbr/>sensor.<wbr/>max<wbr/>Analog<wbr/>Sensitivity</a></li>
17474<li><a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a></li>
17475<li><a href="#static_android.sensor.availableTestPatternModes">android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes</a></li>
17476<li><a href="#static_android.lens.info.hyperfocalDistance">android.<wbr/>lens.<wbr/>info.<wbr/>hyperfocal<wbr/>Distance</a></li>
17477<li><a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a></li>
17478<li><a href="#static_android.lens.info.focusDistanceCalibration">android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration</a></li>
17479<li><a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a></li>
17480<li><a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a></li>
17481<li><a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a></li>
17482<li><a href="#static_android.lens.poseReference">android.<wbr/>lens.<wbr/>pose<wbr/>Reference</a></li>
17483<li><a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a></li>
17484</ul>
17485<p>The field of view of all non-RAW physical streams must be the same or as close as
17486possible to that of non-RAW logical streams.<wbr/> If the requested FOV is outside of the
17487range supported by the physical camera,<wbr/> the physical stream for that physical camera
17488will use either the maximum or minimum scaler crop region,<wbr/> depending on which one is
17489closer to the requested FOV.<wbr/> For example,<wbr/> for a logical camera with wide-tele lens
17490configuration where the wide lens is the default,<wbr/> if the logical camera's crop region
17491is set to maximum,<wbr/> the physical stream for the tele lens will be configured to its
17492maximum crop region.<wbr/> On the other hand,<wbr/> if the logical camera has a normal-wide lens
17493configuration where the normal lens is the default,<wbr/> when the logical camera's crop
17494region is set to maximum,<wbr/> the FOV of the logical streams will be that of the normal
17495lens.<wbr/> The FOV of the physical streams for the wide lens will be the same as the
17496logical stream,<wbr/> by making the crop region smaller than its active array size to
17497compensate for the smaller focal length.<wbr/></p>
17498<p>Even if the underlying physical cameras have different RAW characteristics (such as
17499size or CFA pattern),<wbr/> a logical camera can still advertise RAW capability.<wbr/> In this
17500case,<wbr/> when the application configures a RAW stream,<wbr/> the camera device will make sure
17501the active physical camera will remain active to ensure consistent RAW output
17502behavior,<wbr/> and not switch to other physical cameras.<wbr/></p>
17503<p>The capture request and result metadata tags required for backward compatible camera
17504functionalities will be solely based on the logical camera capabiltity.<wbr/> On the other
17505hand,<wbr/> the use of manual capture controls (sensor or post-processing) with a
17506logical camera may result in unexpected behavior when the HAL decides to switch
17507between physical cameras with different characteristics under the hood.<wbr/> For example,<wbr/>
17508when the application manually sets exposure time and sensitivity while zooming in,<wbr/>
17509the brightness of the camera images may suddenly change because HAL switches from one
17510physical camera to the other.<wbr/></p></span>
17511                  </li>
17512                  <li>
17513                    <span class="entry_type_enum_name">MONOCHROME (v3.3)</span>
17514                    <span class="entry_type_enum_optional">[optional]</span>
17515                    <span class="entry_type_enum_notes"><p>The camera device is a monochrome camera that doesn't contain a color filter array,<wbr/>
17516and for YUV_<wbr/>420_<wbr/>888 stream,<wbr/> the pixel values on U and V planes are all 128.<wbr/></p>
17517<p>A MONOCHROME camera must support the guaranteed stream combinations required for
17518its device level and capabilities.<wbr/> Additionally,<wbr/> if the monochrome camera device
17519supports 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
17520to <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#Y8">Y8</a> as well.<wbr/> There are no
17521mandatory stream combination requirements with regard to
17522<a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#Y8">Y8</a> for Bayer camera devices.<wbr/></p>
17523<p>Starting from Android Q,<wbr/> the SENSOR_<wbr/>INFO_<wbr/>COLOR_<wbr/>FILTER_<wbr/>ARRANGEMENT of a MONOCHROME
17524camera will be either MONO or NIR.<wbr/></p></span>
17525                  </li>
17526                  <li>
17527                    <span class="entry_type_enum_name">SECURE_IMAGE_DATA (v3.4)</span>
17528                    <span class="entry_type_enum_optional">[optional]</span>
17529                    <span class="entry_type_enum_notes"><p>The camera device is capable of writing image data into a region of memory
17530inaccessible to Android userspace or the Android kernel,<wbr/> and only accessible to
17531trusted execution environments (TEE).<wbr/></p></span>
17532                  </li>
17533                </ul>
17534
17535            </td> <!-- entry_type -->
17536
17537            <td class="entry_description">
17538              <p>List of capabilities that this camera device
17539advertises as fully supporting.<wbr/></p>
17540            </td>
17541
17542            <td class="entry_units">
17543            </td>
17544
17545            <td class="entry_range">
17546            </td>
17547
17548            <td class="entry_hal_version">
17549              <p>3.<wbr/>2</p>
17550            </td>
17551
17552            <td class="entry_tags">
17553            </td>
17554
17555          </tr>
17556          <tr class="entries_header">
17557            <th class="th_details" colspan="6">Details</th>
17558          </tr>
17559          <tr class="entry_cont">
17560            <td class="entry_details" colspan="6">
17561              <p>A capability is a contract that the camera device makes in order
17562to be able to satisfy one or more use cases.<wbr/></p>
17563<p>Listing a capability guarantees that the whole set of features
17564required to support a common use will all be available.<wbr/></p>
17565<p>Using a subset of the functionality provided by an unsupported
17566capability may be possible on a specific camera device implementation;
17567to do this query each of <a href="#static_android.request.availableRequestKeys">android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys</a>,<wbr/>
17568<a href="#static_android.request.availableResultKeys">android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys</a>,<wbr/>
17569<a href="#static_android.request.availableCharacteristicsKeys">android.<wbr/>request.<wbr/>available<wbr/>Characteristics<wbr/>Keys</a>.<wbr/></p>
17570<p>The following capabilities are guaranteed to be available on
17571<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> <code>==</code> FULL devices:</p>
17572<ul>
17573<li>MANUAL_<wbr/>SENSOR</li>
17574<li>MANUAL_<wbr/>POST_<wbr/>PROCESSING</li>
17575</ul>
17576<p>Other capabilities may be available on either FULL or LIMITED
17577devices,<wbr/> but the application should query this key to be sure.<wbr/></p>
17578            </td>
17579          </tr>
17580
17581          <tr class="entries_header">
17582            <th class="th_details" colspan="6">HAL Implementation Details</th>
17583          </tr>
17584          <tr class="entry_cont">
17585            <td class="entry_details" colspan="6">
17586              <p>Additional constraint details per-capability will be available
17587in the Compatibility Test Suite.<wbr/></p>
17588<p>Minimum baseline requirements required for the
17589BACKWARD_<wbr/>COMPATIBLE capability are not explicitly listed.<wbr/>
17590Instead refer to "BC" tags and the camera CTS tests in the
17591android.<wbr/>hardware.<wbr/>camera2.<wbr/>cts package.<wbr/></p>
17592<p>Listed controls that can be either request or result (e.<wbr/>g.<wbr/>
17593<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>) must be available both in the
17594request and the result in order to be considered to be
17595capability-compliant.<wbr/></p>
17596<p>For example,<wbr/> if the HAL claims to support MANUAL control,<wbr/>
17597then exposure time must be configurable via the request <em>and</em>
17598the actual exposure applied must be available via
17599the result.<wbr/></p>
17600<p>If MANUAL_<wbr/>SENSOR is omitted,<wbr/> the HAL may choose to omit the
17601<a href="#static_android.scaler.availableMinFrameDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Min<wbr/>Frame<wbr/>Durations</a> static property entirely.<wbr/></p>
17602<p>For PRIVATE_<wbr/>REPROCESSING and YUV_<wbr/>REPROCESSING capabilities,<wbr/> see
17603hardware/<wbr/>libhardware/<wbr/>include/<wbr/>hardware/<wbr/>camera3.<wbr/>h Section 10 for more information.<wbr/></p>
17604<p>Devices that support the MANUAL_<wbr/>SENSOR capability must support the
17605CAMERA3_<wbr/>TEMPLATE_<wbr/>MANUAL template defined in camera3.<wbr/>h.<wbr/></p>
17606<p>Devices that support the PRIVATE_<wbr/>REPROCESSING capability or the
17607YUV_<wbr/>REPROCESSING capability must support the
17608CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template defined in camera3.<wbr/>h.<wbr/></p>
17609<p>For DEPTH_<wbr/>OUTPUT,<wbr/> the depth-format keys
17610<a href="#static_android.depth.availableDepthStreamConfigurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stream<wbr/>Configurations</a>,<wbr/>
17611<a href="#static_android.depth.availableDepthMinFrameDurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Min<wbr/>Frame<wbr/>Durations</a>,<wbr/>
17612<a href="#static_android.depth.availableDepthStallDurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stall<wbr/>Durations</a> must be available,<wbr/> in
17613addition to the other keys explicitly mentioned in the DEPTH_<wbr/>OUTPUT
17614enum notes.<wbr/> The entry <a href="#static_android.depth.maxDepthSamples">android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples</a> must be available
17615if the DEPTH_<wbr/>POINT_<wbr/>CLOUD format is supported (HAL pixel format BLOB,<wbr/> dataspace
17616DEPTH).<wbr/></p>
17617<p>For a camera device with LOGICAL_<wbr/>MULTI_<wbr/>CAMERA capability,<wbr/> it should operate in the
17618same way as a physical camera device based on its hardware level and capabilities.<wbr/>
17619It's recommended that its feature set is superset of that of individual physical cameras.<wbr/></p>
17620<ul>
17621<li>
17622<p>In camera1 API,<wbr/> to maintain application compatibility,<wbr/> for each camera facing,<wbr/> there
17623may 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/>}
17624combinations,<wbr/> where logical_<wbr/>camera_<wbr/>id is composed of physical_<wbr/>camera_<wbr/>N_<wbr/>id,<wbr/> camera
17625framework will only advertise one camera id
17626(within the combinations for the particular facing) that is frontmost in the HAL
17627published camera id list.<wbr/>
17628For example,<wbr/> if HAL advertises 6 back facing camera IDs (ID0 to ID5),<wbr/> among which ID4
17629and ID5 are logical cameras backed by ID0+ID1 and ID2+ID3 respectively.<wbr/> In this case,<wbr/>
17630only ID0 will be available for camera1 API to use.<wbr/></p>
17631</li>
17632<li>
17633<p>Camera HAL is strongly recommended to advertise camera devices with best feature,<wbr/>
17634power,<wbr/> performance,<wbr/> and latency tradeoffs at the front of the camera id list.<wbr/></p>
17635</li>
17636<li>
17637<p>Camera HAL may switch between physical cameras depending on focalLength or cropRegion.<wbr/>
17638If physical cameras have different sizes,<wbr/> HAL must maintain a single logical camera
17639active<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 mapping
17640between logical camera and underlying physical cameras for all related metadata tags,<wbr/>
17641such as crop region,<wbr/> 3A regions,<wbr/> and intrinsicCalibration.<wbr/></p>
17642</li>
17643<li>
17644<p>Starting from HIDL ICameraDevice version 3.<wbr/>5,<wbr/> camera HAL must support
17645isStreamCombinationSupported for application to query whether a particular logical and
17646physical streams combination are supported.<wbr/></p>
17647</li>
17648</ul>
17649<p>A MONOCHROME camera device must also advertise BACKWARD_<wbr/>COMPATIBLE capability,<wbr/> and must
17650not advertise MANUAL_<wbr/>POST_<wbr/>PROCESSING capability.<wbr/></p>
17651<ul>
17652<li>
17653<p>To maintain backward compatibility,<wbr/> the camera device must support all
17654BACKWARD_<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
17655AUTO,<wbr/> and <a href="#dynamic_android.control.awbState">android.<wbr/>control.<wbr/>awb<wbr/>State</a> are either CONVERGED or LOCKED depending on
17656<a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a>.<wbr/></p>
17657</li>
17658<li>
17659<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
17660<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> must not be in available request and result keys.<wbr/>
17661As a result,<wbr/> the camera device cannot be a FULL device.<wbr/> However,<wbr/> the HAL can
17662still advertise other individual capabilites.<wbr/></p>
17663</li>
17664<li>
17665<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/>
17666CurveGreen and curveBlue are no-ops.<wbr/></p>
17667</li>
17668</ul>
17669<p>In Android API level 28,<wbr/> a MONOCHROME camera device must not have RAW capability.<wbr/> From
17670API level 29,<wbr/> a camera is allowed to have both MONOCHROME and RAW capabilities.<wbr/></p>
17671            </td>
17672          </tr>
17673
17674          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17675           <!-- end of entry -->
17676
17677
17678          <tr class="entry" id="static_android.request.availableRequestKeys">
17679            <td class="entry_name
17680             " rowspan="5">
17681              android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys
17682            </td>
17683            <td class="entry_type">
17684                <span class="entry_type_name">int32</span>
17685                <span class="entry_type_container">x</span>
17686
17687                <span class="entry_type_array">
17688                  n
17689                </span>
17690              <span class="entry_type_visibility"> [ndk_public]</span>
17691
17692
17693              <span class="entry_type_hwlevel">[legacy] </span>
17694
17695
17696
17697
17698            </td> <!-- entry_type -->
17699
17700            <td class="entry_description">
17701              <p>A list of all keys that the camera device has available
17702to use with <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureRequest.html">CaptureRequest</a>.<wbr/></p>
17703            </td>
17704
17705            <td class="entry_units">
17706            </td>
17707
17708            <td class="entry_range">
17709            </td>
17710
17711            <td class="entry_hal_version">
17712              <p>3.<wbr/>2</p>
17713            </td>
17714
17715            <td class="entry_tags">
17716            </td>
17717
17718          </tr>
17719          <tr class="entries_header">
17720            <th class="th_details" colspan="6">Details</th>
17721          </tr>
17722          <tr class="entry_cont">
17723            <td class="entry_details" colspan="6">
17724              <p>Attempting to set a key into a CaptureRequest that is not
17725listed here will result in an invalid request and will be rejected
17726by the camera device.<wbr/></p>
17727<p>This field can be used to query the feature set of a camera device
17728at a more granular level than capabilities.<wbr/> This is especially
17729important for optional keys that are not listed under any capability
17730in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
17731            </td>
17732          </tr>
17733
17734          <tr class="entries_header">
17735            <th class="th_details" colspan="6">HAL Implementation Details</th>
17736          </tr>
17737          <tr class="entry_cont">
17738            <td class="entry_details" colspan="6">
17739              <p>Vendor tags can be listed here.<wbr/> Vendor tag metadata should also
17740use the extensions C api (refer to camera3.<wbr/>h for more details).<wbr/></p>
17741<p>Setting/<wbr/>getting vendor tags will be checked against the metadata
17742vendor extensions API and not against this field.<wbr/></p>
17743<p>The HAL must not consume any request tags that are not listed either
17744here or in the vendor tag list.<wbr/></p>
17745<p>The public camera2 API will always make the vendor tags visible
17746via
17747<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a>.<wbr/></p>
17748            </td>
17749          </tr>
17750
17751          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17752           <!-- end of entry -->
17753
17754
17755          <tr class="entry" id="static_android.request.availableResultKeys">
17756            <td class="entry_name
17757             " rowspan="5">
17758              android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys
17759            </td>
17760            <td class="entry_type">
17761                <span class="entry_type_name">int32</span>
17762                <span class="entry_type_container">x</span>
17763
17764                <span class="entry_type_array">
17765                  n
17766                </span>
17767              <span class="entry_type_visibility"> [ndk_public]</span>
17768
17769
17770              <span class="entry_type_hwlevel">[legacy] </span>
17771
17772
17773
17774
17775            </td> <!-- entry_type -->
17776
17777            <td class="entry_description">
17778              <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>
17779            </td>
17780
17781            <td class="entry_units">
17782            </td>
17783
17784            <td class="entry_range">
17785            </td>
17786
17787            <td class="entry_hal_version">
17788              <p>3.<wbr/>2</p>
17789            </td>
17790
17791            <td class="entry_tags">
17792            </td>
17793
17794          </tr>
17795          <tr class="entries_header">
17796            <th class="th_details" colspan="6">Details</th>
17797          </tr>
17798          <tr class="entry_cont">
17799            <td class="entry_details" colspan="6">
17800              <p>Attempting to get a key from a CaptureResult that is not
17801listed here will always return a <code>null</code> value.<wbr/> Getting a key from
17802a CaptureResult that is listed here will generally never return a <code>null</code>
17803value.<wbr/></p>
17804<p>The following keys may return <code>null</code> unless they are enabled:</p>
17805<ul>
17806<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>
17807</ul>
17808<p>(Those sometimes-null keys will nevertheless be listed here
17809if they are available.<wbr/>)</p>
17810<p>This field can be used to query the feature set of a camera device
17811at a more granular level than capabilities.<wbr/> This is especially
17812important for optional keys that are not listed under any capability
17813in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
17814            </td>
17815          </tr>
17816
17817          <tr class="entries_header">
17818            <th class="th_details" colspan="6">HAL Implementation Details</th>
17819          </tr>
17820          <tr class="entry_cont">
17821            <td class="entry_details" colspan="6">
17822              <p>Tags listed here must always have an entry in the result metadata,<wbr/>
17823even if that size is 0 elements.<wbr/> Only array-type tags (e.<wbr/>g.<wbr/> lists,<wbr/>
17824matrices,<wbr/> strings) are allowed to have 0 elements.<wbr/></p>
17825<p>Vendor tags can be listed here.<wbr/> Vendor tag metadata should also
17826use the extensions C api (refer to camera3.<wbr/>h for more details).<wbr/></p>
17827<p>Setting/<wbr/>getting vendor tags will be checked against the metadata
17828vendor extensions API and not against this field.<wbr/></p>
17829<p>The HAL must not produce any result tags that are not listed either
17830here or in the vendor tag list.<wbr/></p>
17831<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>
17832            </td>
17833          </tr>
17834
17835          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17836           <!-- end of entry -->
17837
17838
17839          <tr class="entry" id="static_android.request.availableCharacteristicsKeys">
17840            <td class="entry_name
17841             " rowspan="5">
17842              android.<wbr/>request.<wbr/>available<wbr/>Characteristics<wbr/>Keys
17843            </td>
17844            <td class="entry_type">
17845                <span class="entry_type_name">int32</span>
17846                <span class="entry_type_container">x</span>
17847
17848                <span class="entry_type_array">
17849                  n
17850                </span>
17851              <span class="entry_type_visibility"> [ndk_public]</span>
17852
17853
17854              <span class="entry_type_hwlevel">[legacy] </span>
17855
17856
17857
17858
17859            </td> <!-- entry_type -->
17860
17861            <td class="entry_description">
17862              <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>
17863            </td>
17864
17865            <td class="entry_units">
17866            </td>
17867
17868            <td class="entry_range">
17869            </td>
17870
17871            <td class="entry_hal_version">
17872              <p>3.<wbr/>2</p>
17873            </td>
17874
17875            <td class="entry_tags">
17876            </td>
17877
17878          </tr>
17879          <tr class="entries_header">
17880            <th class="th_details" colspan="6">Details</th>
17881          </tr>
17882          <tr class="entry_cont">
17883            <td class="entry_details" colspan="6">
17884              <p>This entry follows the same rules as
17885<a href="#static_android.request.availableResultKeys">android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys</a> (except that it applies for
17886CameraCharacteristics instead of CaptureResult).<wbr/> See above for more
17887details.<wbr/></p>
17888            </td>
17889          </tr>
17890
17891          <tr class="entries_header">
17892            <th class="th_details" colspan="6">HAL Implementation Details</th>
17893          </tr>
17894          <tr class="entry_cont">
17895            <td class="entry_details" colspan="6">
17896              <p>Keys listed here must always have an entry in the static info metadata,<wbr/>
17897even if that size is 0 elements.<wbr/> Only array-type tags (e.<wbr/>g.<wbr/> lists,<wbr/>
17898matrices,<wbr/> strings) are allowed to have 0 elements.<wbr/></p>
17899<p>Vendor tags can listed here.<wbr/> Vendor tag metadata should also use
17900the extensions C api (refer to camera3.<wbr/>h for more details).<wbr/></p>
17901<p>Setting/<wbr/>getting vendor tags will be checked against the metadata
17902vendor extensions API and not against this field.<wbr/></p>
17903<p>The HAL must not have any tags in its static info that are not listed
17904either here or in the vendor tag list.<wbr/></p>
17905<p>The public camera2 API will always make the vendor tags visible
17906via <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getKeys">CameraCharacteristics#getKeys</a>.<wbr/></p>
17907            </td>
17908          </tr>
17909
17910          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17911           <!-- end of entry -->
17912
17913
17914          <tr class="entry" id="static_android.request.availableSessionKeys">
17915            <td class="entry_name
17916             " rowspan="5">
17917              android.<wbr/>request.<wbr/>available<wbr/>Session<wbr/>Keys
17918            </td>
17919            <td class="entry_type">
17920                <span class="entry_type_name">int32</span>
17921                <span class="entry_type_container">x</span>
17922
17923                <span class="entry_type_array">
17924                  n
17925                </span>
17926              <span class="entry_type_visibility"> [ndk_public]</span>
17927
17928
17929              <span class="entry_type_hwlevel">[legacy] </span>
17930
17931
17932
17933
17934            </td> <!-- entry_type -->
17935
17936            <td class="entry_description">
17937              <p>A subset of the available request keys that the camera device
17938can pass as part of the capture session initialization.<wbr/></p>
17939            </td>
17940
17941            <td class="entry_units">
17942            </td>
17943
17944            <td class="entry_range">
17945            </td>
17946
17947            <td class="entry_hal_version">
17948              <p>3.<wbr/>3</p>
17949            </td>
17950
17951            <td class="entry_tags">
17952            </td>
17953
17954          </tr>
17955          <tr class="entries_header">
17956            <th class="th_details" colspan="6">Details</th>
17957          </tr>
17958          <tr class="entry_cont">
17959            <td class="entry_details" colspan="6">
17960              <p>This is a subset of <a href="#static_android.request.availableRequestKeys">android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys</a> which
17961contains a list of keys that are difficult to apply per-frame and
17962can result in unexpected delays when modified during the capture session
17963lifetime.<wbr/> Typical examples include parameters that require a
17964time-consuming hardware re-configuration or internal camera pipeline
17965change.<wbr/> For performance reasons we advise clients to pass their initial
17966values as part of
17967<a href="https://developer.android.com/reference/SessionConfiguration.html#setSessionParameters">SessionConfiguration#setSessionParameters</a>.<wbr/>
17968Once the camera capture session is enabled it is also recommended to avoid
17969changing them from their initial values set in
17970<a href="https://developer.android.com/reference/SessionConfiguration.html#setSessionParameters">SessionConfiguration#setSessionParameters</a>.<wbr/>
17971Control over session parameters can still be exerted in capture requests
17972but clients should be aware and expect delays during their application.<wbr/>
17973An example usage scenario could look like this:</p>
17974<ul>
17975<li>The camera client starts by quering the session parameter key list via
17976  <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableSessionKeys">CameraCharacteristics#getAvailableSessionKeys</a>.<wbr/></li>
17977<li>Before triggering the capture session create sequence,<wbr/> a capture request
17978  must be built via
17979  <a href="https://developer.android.com/reference/CameraDevice.html#createCaptureRequest">CameraDevice#createCaptureRequest</a>
17980  using an appropriate template matching the particular use case.<wbr/></li>
17981<li>The client should go over the list of session parameters and check
17982  whether some of the keys listed matches with the parameters that
17983  they intend to modify as part of the first capture request.<wbr/></li>
17984<li>If there is no such match,<wbr/> the capture request can be  passed
17985  unmodified to
17986  <a href="https://developer.android.com/reference/SessionConfiguration.html#setSessionParameters">SessionConfiguration#setSessionParameters</a>.<wbr/></li>
17987<li>If matches do exist,<wbr/> the client should update the respective values
17988  and pass the request to
17989  <a href="https://developer.android.com/reference/SessionConfiguration.html#setSessionParameters">SessionConfiguration#setSessionParameters</a>.<wbr/></li>
17990<li>After the capture session initialization completes the session parameter
17991  key list can continue to serve as reference when posting or updating
17992  further requests.<wbr/> As mentioned above further changes to session
17993  parameters should ideally be avoided,<wbr/> if updates are necessary
17994  however clients could expect a delay/<wbr/>glitch during the
17995  parameter switch.<wbr/></li>
17996</ul>
17997            </td>
17998          </tr>
17999
18000          <tr class="entries_header">
18001            <th class="th_details" colspan="6">HAL Implementation Details</th>
18002          </tr>
18003          <tr class="entry_cont">
18004            <td class="entry_details" colspan="6">
18005              <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
18006speed mode is enabled,<wbr/> then only modifications of the maximum framerate value will be
18007monitored by the framework and can trigger camera re-configuration.<wbr/> For more information
18008about framerate ranges during constrained high speed sessions see
18009<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>.<wbr/>
18010Vendor tags can be listed here.<wbr/> Vendor tag metadata should also
18011use the extensions C api (refer to
18012android.<wbr/>hardware.<wbr/>camera.<wbr/>device.<wbr/>V3_<wbr/>4.<wbr/>Stream<wbr/>Configuration.<wbr/>session<wbr/>Params for more details).<wbr/></p>
18013<p>Setting/<wbr/>getting vendor tags will be checked against the metadata
18014vendor extensions API and not against this field.<wbr/></p>
18015<p>The HAL must not consume any request tags in the session parameters that
18016are not listed either here or in the vendor tag list.<wbr/></p>
18017<p>The public camera2 API will always make the vendor tags visible
18018via
18019<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableSessionKeys">CameraCharacteristics#getAvailableSessionKeys</a>.<wbr/></p>
18020            </td>
18021          </tr>
18022
18023          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18024           <!-- end of entry -->
18025
18026
18027          <tr class="entry" id="static_android.request.availablePhysicalCameraRequestKeys">
18028            <td class="entry_name
18029             " rowspan="5">
18030              android.<wbr/>request.<wbr/>available<wbr/>Physical<wbr/>Camera<wbr/>Request<wbr/>Keys
18031            </td>
18032            <td class="entry_type">
18033                <span class="entry_type_name">int32</span>
18034                <span class="entry_type_container">x</span>
18035
18036                <span class="entry_type_array">
18037                  n
18038                </span>
18039              <span class="entry_type_visibility"> [ndk_public]</span>
18040
18041
18042              <span class="entry_type_hwlevel">[limited] </span>
18043
18044
18045
18046
18047            </td> <!-- entry_type -->
18048
18049            <td class="entry_description">
18050              <p>A subset of the available request keys that can be overridden for
18051physical devices backing a logical multi-camera.<wbr/></p>
18052            </td>
18053
18054            <td class="entry_units">
18055            </td>
18056
18057            <td class="entry_range">
18058            </td>
18059
18060            <td class="entry_hal_version">
18061              <p>3.<wbr/>3</p>
18062            </td>
18063
18064            <td class="entry_tags">
18065            </td>
18066
18067          </tr>
18068          <tr class="entries_header">
18069            <th class="th_details" colspan="6">Details</th>
18070          </tr>
18071          <tr class="entry_cont">
18072            <td class="entry_details" colspan="6">
18073              <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
18074of keys that can be overridden using <a href="https://developer.android.com/reference/CaptureRequest/Builder.html#setPhysicalCameraKey">Builder#setPhysicalCameraKey</a>.<wbr/>
18075The respective value of such request key can be obtained by calling
18076<a href="https://developer.android.com/reference/CaptureRequest/Builder.html#getPhysicalCameraKey">Builder#getPhysicalCameraKey</a>.<wbr/> Capture requests that contain
18077individual physical device requests must be built via
18078<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureRequest(int,">Set)</a>.<wbr/></p>
18079            </td>
18080          </tr>
18081
18082          <tr class="entries_header">
18083            <th class="th_details" colspan="6">HAL Implementation Details</th>
18084          </tr>
18085          <tr class="entry_cont">
18086            <td class="entry_details" colspan="6">
18087              <p>Vendor tags can be listed here.<wbr/> Vendor tag metadata should also
18088use the extensions C api (refer to
18089android.<wbr/>hardware.<wbr/>camera.<wbr/>device.<wbr/>V3_<wbr/>4.<wbr/>Capture<wbr/>Request.<wbr/>physical<wbr/>Camera<wbr/>Settings for more
18090details).<wbr/></p>
18091<p>Setting/<wbr/>getting vendor tags will be checked against the metadata
18092vendor extensions API and not against this field.<wbr/></p>
18093<p>The HAL must not consume any request tags in the session parameters that
18094are not listed either here or in the vendor tag list.<wbr/></p>
18095<p>There should be no overlap between this set of keys and the available session keys
18096<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableSessionKeys">CameraCharacteristics#getAvailableSessionKeys</a> along
18097with any other controls that can have impact on the dual-camera sync.<wbr/></p>
18098<p>The public camera2 API will always make the vendor tags visible
18099via
18100<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailablePhysicalCameraRequestKeys">CameraCharacteristics#getAvailablePhysicalCameraRequestKeys</a>.<wbr/></p>
18101            </td>
18102          </tr>
18103
18104          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18105           <!-- end of entry -->
18106
18107
18108          <tr class="entry" id="static_android.request.characteristicKeysNeedingPermission">
18109            <td class="entry_name
18110             " rowspan="5">
18111              android.<wbr/>request.<wbr/>characteristic<wbr/>Keys<wbr/>Needing<wbr/>Permission
18112            </td>
18113            <td class="entry_type">
18114                <span class="entry_type_name">int32</span>
18115                <span class="entry_type_container">x</span>
18116
18117                <span class="entry_type_array">
18118                  n
18119                </span>
18120              <span class="entry_type_visibility"> [hidden]</span>
18121
18122
18123              <span class="entry_type_hwlevel">[legacy] </span>
18124
18125
18126
18127
18128            </td> <!-- entry_type -->
18129
18130            <td class="entry_description">
18131              <p>A list of camera characteristics keys that are only available
18132in case the camera client has camera permission.<wbr/></p>
18133            </td>
18134
18135            <td class="entry_units">
18136            </td>
18137
18138            <td class="entry_range">
18139            </td>
18140
18141            <td class="entry_hal_version">
18142              <p>3.<wbr/>4</p>
18143            </td>
18144
18145            <td class="entry_tags">
18146            </td>
18147
18148          </tr>
18149          <tr class="entries_header">
18150            <th class="th_details" colspan="6">Details</th>
18151          </tr>
18152          <tr class="entry_cont">
18153            <td class="entry_details" colspan="6">
18154              <p>The entry contains a subset of
18155<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getKeys">CameraCharacteristics#getKeys</a> that require camera clients
18156to acquire the <a href="https://developer.android.com/reference/android/Manifest/permission.html#CAMERA">permission#CAMERA</a> permission before calling
18157<a href="https://developer.android.com/reference/android/hardware/camera2/CameraManager.html#getCameraCharacteristics">CameraManager#getCameraCharacteristics</a>.<wbr/> If the
18158permission is not held by the camera client,<wbr/> then the values of the repsective properties
18159will not be present in <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html">CameraCharacteristics</a>.<wbr/></p>
18160            </td>
18161          </tr>
18162
18163          <tr class="entries_header">
18164            <th class="th_details" colspan="6">HAL Implementation Details</th>
18165          </tr>
18166          <tr class="entry_cont">
18167            <td class="entry_details" colspan="6">
18168              <p>Do not set this property directly,<wbr/> camera service will overwrite any previous values.<wbr/></p>
18169            </td>
18170          </tr>
18171
18172          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18173           <!-- end of entry -->
18174
18175
18176
18177      <!-- end of kind -->
18178      </tbody>
18179      <tr><td colspan="7" class="kind">dynamic</td></tr>
18180
18181      <thead class="entries_header">
18182        <tr>
18183          <th class="th_name">Property Name</th>
18184          <th class="th_type">Type</th>
18185          <th class="th_description">Description</th>
18186          <th class="th_units">Units</th>
18187          <th class="th_range">Range</th>
18188          <th class="th_hal_version">Initial HIDL HAL version</th>
18189          <th class="th_tags">Tags</th>
18190        </tr>
18191      </thead>
18192
18193      <tbody>
18194
18195
18196
18197
18198
18199
18200
18201
18202
18203
18204          <tr class="entry" id="dynamic_android.request.frameCount">
18205            <td class="entry_name
18206                entry_name_deprecated
18207             " rowspan="3">
18208              android.<wbr/>request.<wbr/>frame<wbr/>Count
18209            </td>
18210            <td class="entry_type">
18211                <span class="entry_type_name">int32</span>
18212
18213              <span class="entry_type_visibility"> [hidden]</span>
18214
18215
18216
18217              <span class="entry_type_deprecated">[deprecated] </span>
18218
18219
18220
18221            </td> <!-- entry_type -->
18222
18223            <td class="entry_description">
18224              <p>A frame counter set by the framework.<wbr/> This value monotonically
18225increases with every new result (that is,<wbr/> each new result has a unique
18226frameCount value).<wbr/></p>
18227            </td>
18228
18229            <td class="entry_units">
18230              count of frames
18231            </td>
18232
18233            <td class="entry_range">
18234              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
18235              <p>&gt; 0</p>
18236            </td>
18237
18238            <td class="entry_hal_version">
18239              <p>3.<wbr/>2</p>
18240            </td>
18241
18242            <td class="entry_tags">
18243            </td>
18244
18245          </tr>
18246          <tr class="entries_header">
18247            <th class="th_details" colspan="6">Details</th>
18248          </tr>
18249          <tr class="entry_cont">
18250            <td class="entry_details" colspan="6">
18251              <p>Reset on release()</p>
18252            </td>
18253          </tr>
18254
18255
18256          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18257           <!-- end of entry -->
18258
18259
18260          <tr class="entry" id="dynamic_android.request.id">
18261            <td class="entry_name
18262             " rowspan="1">
18263              android.<wbr/>request.<wbr/>id
18264            </td>
18265            <td class="entry_type">
18266                <span class="entry_type_name">int32</span>
18267
18268              <span class="entry_type_visibility"> [hidden]</span>
18269
18270
18271
18272
18273
18274
18275            </td> <!-- entry_type -->
18276
18277            <td class="entry_description">
18278              <p>An application-specified ID for the current
18279request.<wbr/> Must be maintained unchanged in output
18280frame</p>
18281            </td>
18282
18283            <td class="entry_units">
18284              arbitrary integer assigned by application
18285            </td>
18286
18287            <td class="entry_range">
18288              <p>Any int</p>
18289            </td>
18290
18291            <td class="entry_hal_version">
18292              <p>3.<wbr/>2</p>
18293            </td>
18294
18295            <td class="entry_tags">
18296              <ul class="entry_tags">
18297                  <li><a href="#tag_V1">V1</a></li>
18298              </ul>
18299            </td>
18300
18301          </tr>
18302
18303
18304          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18305           <!-- end of entry -->
18306
18307
18308          <tr class="entry" id="dynamic_android.request.metadataMode">
18309            <td class="entry_name
18310             " rowspan="1">
18311              android.<wbr/>request.<wbr/>metadata<wbr/>Mode
18312            </td>
18313            <td class="entry_type">
18314                <span class="entry_type_name entry_type_name_enum">byte</span>
18315
18316              <span class="entry_type_visibility"> [system]</span>
18317
18318
18319
18320
18321
18322                <ul class="entry_type_enum">
18323                  <li>
18324                    <span class="entry_type_enum_name">NONE (v3.2)</span>
18325                    <span class="entry_type_enum_notes"><p>No metadata should be produced on output,<wbr/> except
18326for application-bound buffer data.<wbr/> If no
18327application-bound streams exist,<wbr/> no frame should be
18328placed in the output frame queue.<wbr/> If such streams
18329exist,<wbr/> a frame should be placed on the output queue
18330with null metadata but with the necessary output buffer
18331information.<wbr/> Timestamp information should still be
18332included with any output stream buffers</p></span>
18333                  </li>
18334                  <li>
18335                    <span class="entry_type_enum_name">FULL (v3.2)</span>
18336                    <span class="entry_type_enum_notes"><p>All metadata should be produced.<wbr/> Statistics will
18337only be produced if they are separately
18338enabled</p></span>
18339                  </li>
18340                </ul>
18341
18342            </td> <!-- entry_type -->
18343
18344            <td class="entry_description">
18345              <p>How much metadata to produce on
18346output</p>
18347            </td>
18348
18349            <td class="entry_units">
18350            </td>
18351
18352            <td class="entry_range">
18353            </td>
18354
18355            <td class="entry_hal_version">
18356              <p>3.<wbr/>2</p>
18357            </td>
18358
18359            <td class="entry_tags">
18360              <ul class="entry_tags">
18361                  <li><a href="#tag_FUTURE">FUTURE</a></li>
18362              </ul>
18363            </td>
18364
18365          </tr>
18366
18367
18368          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18369           <!-- end of entry -->
18370
18371
18372          <tr class="entry" id="dynamic_android.request.outputStreams">
18373            <td class="entry_name
18374                entry_name_deprecated
18375             " rowspan="3">
18376              android.<wbr/>request.<wbr/>output<wbr/>Streams
18377            </td>
18378            <td class="entry_type">
18379                <span class="entry_type_name">int32</span>
18380                <span class="entry_type_container">x</span>
18381
18382                <span class="entry_type_array">
18383                  n
18384                </span>
18385              <span class="entry_type_visibility"> [system]</span>
18386
18387
18388
18389              <span class="entry_type_deprecated">[deprecated] </span>
18390
18391
18392
18393            </td> <!-- entry_type -->
18394
18395            <td class="entry_description">
18396              <p>Lists which camera output streams image data
18397from this capture must be sent to</p>
18398            </td>
18399
18400            <td class="entry_units">
18401              List of camera stream IDs
18402            </td>
18403
18404            <td class="entry_range">
18405              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
18406              <p>List must only include streams that have been
18407created</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              <ul class="entry_tags">
18416                  <li><a href="#tag_HAL2">HAL2</a></li>
18417              </ul>
18418            </td>
18419
18420          </tr>
18421          <tr class="entries_header">
18422            <th class="th_details" colspan="6">Details</th>
18423          </tr>
18424          <tr class="entry_cont">
18425            <td class="entry_details" colspan="6">
18426              <p>If no output streams are listed,<wbr/> then the image
18427data should simply be discarded.<wbr/> The image data must
18428still be captured for metadata and statistics production,<wbr/>
18429and the lens and flash must operate as requested.<wbr/></p>
18430            </td>
18431          </tr>
18432
18433
18434          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18435           <!-- end of entry -->
18436
18437
18438          <tr class="entry" id="dynamic_android.request.pipelineDepth">
18439            <td class="entry_name
18440             " rowspan="5">
18441              android.<wbr/>request.<wbr/>pipeline<wbr/>Depth
18442            </td>
18443            <td class="entry_type">
18444                <span class="entry_type_name">byte</span>
18445
18446              <span class="entry_type_visibility"> [public]</span>
18447
18448
18449              <span class="entry_type_hwlevel">[legacy] </span>
18450
18451
18452
18453
18454            </td> <!-- entry_type -->
18455
18456            <td class="entry_description">
18457              <p>Specifies the number of pipeline stages the frame went
18458through from when it was exposed to when the final completed result
18459was available to the framework.<wbr/></p>
18460            </td>
18461
18462            <td class="entry_units">
18463            </td>
18464
18465            <td class="entry_range">
18466              <p>&lt;= <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a></p>
18467            </td>
18468
18469            <td class="entry_hal_version">
18470              <p>3.<wbr/>2</p>
18471            </td>
18472
18473            <td class="entry_tags">
18474            </td>
18475
18476          </tr>
18477          <tr class="entries_header">
18478            <th class="th_details" colspan="6">Details</th>
18479          </tr>
18480          <tr class="entry_cont">
18481            <td class="entry_details" colspan="6">
18482              <p>Depending on what settings are used in the request,<wbr/> and
18483what streams are configured,<wbr/> the data may undergo less processing,<wbr/>
18484and some pipeline stages skipped.<wbr/></p>
18485<p>See <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a> for more details.<wbr/></p>
18486            </td>
18487          </tr>
18488
18489          <tr class="entries_header">
18490            <th class="th_details" colspan="6">HAL Implementation Details</th>
18491          </tr>
18492          <tr class="entry_cont">
18493            <td class="entry_details" colspan="6">
18494              <p>This value must always represent the accurate count of how many
18495pipeline stages were actually used.<wbr/></p>
18496            </td>
18497          </tr>
18498
18499          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18500           <!-- end of entry -->
18501
18502
18503
18504      <!-- end of kind -->
18505      </tbody>
18506
18507  <!-- end of section -->
18508  <tr><td colspan="7" id="section_scaler" class="section">scaler</td></tr>
18509
18510
18511      <tr><td colspan="7" class="kind">controls</td></tr>
18512
18513      <thead class="entries_header">
18514        <tr>
18515          <th class="th_name">Property Name</th>
18516          <th class="th_type">Type</th>
18517          <th class="th_description">Description</th>
18518          <th class="th_units">Units</th>
18519          <th class="th_range">Range</th>
18520          <th class="th_hal_version">Initial HIDL HAL version</th>
18521          <th class="th_tags">Tags</th>
18522        </tr>
18523      </thead>
18524
18525      <tbody>
18526
18527
18528
18529
18530
18531
18532
18533
18534
18535
18536          <tr class="entry" id="controls_android.scaler.cropRegion">
18537            <td class="entry_name
18538             " rowspan="5">
18539              android.<wbr/>scaler.<wbr/>crop<wbr/>Region
18540            </td>
18541            <td class="entry_type">
18542                <span class="entry_type_name">int32</span>
18543                <span class="entry_type_container">x</span>
18544
18545                <span class="entry_type_array">
18546                  4
18547                </span>
18548              <span class="entry_type_visibility"> [public as rectangle]</span>
18549
18550
18551              <span class="entry_type_hwlevel">[legacy] </span>
18552
18553
18554
18555
18556            </td> <!-- entry_type -->
18557
18558            <td class="entry_description">
18559              <p>The desired region of the sensor to read out for this capture.<wbr/></p>
18560            </td>
18561
18562            <td class="entry_units">
18563              Pixel coordinates relative to
18564          android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size or
18565          android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size depending on distortion correction
18566          capability and mode
18567            </td>
18568
18569            <td class="entry_range">
18570            </td>
18571
18572            <td class="entry_hal_version">
18573              <p>3.<wbr/>2</p>
18574            </td>
18575
18576            <td class="entry_tags">
18577              <ul class="entry_tags">
18578                  <li><a href="#tag_BC">BC</a></li>
18579              </ul>
18580            </td>
18581
18582          </tr>
18583          <tr class="entries_header">
18584            <th class="th_details" colspan="6">Details</th>
18585          </tr>
18586          <tr class="entry_cont">
18587            <td class="entry_details" colspan="6">
18588              <p>This control can be used to implement digital zoom.<wbr/></p>
18589<p>For devices not supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate
18590system 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
18591the top-left pixel of the active array.<wbr/></p>
18592<p>For devices supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate
18593system depends on the mode being set.<wbr/>
18594When the distortion correction mode is OFF,<wbr/> the coordinate system follows
18595<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
18596<code>(0,<wbr/> 0)</code> being the top-left pixel of the pre-correction active array.<wbr/>
18597When the distortion correction mode is not OFF,<wbr/> the coordinate system follows
18598<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> with
18599<code>(0,<wbr/> 0)</code> being the top-left pixel of the active array.<wbr/></p>
18600<p>Output streams use this rectangle to produce their output,<wbr/>
18601cropping to a smaller region if necessary to maintain the
18602stream's aspect ratio,<wbr/> then scaling the sensor input to
18603match the output's configured resolution.<wbr/></p>
18604<p>The crop region is applied after the RAW to other color
18605space (e.<wbr/>g.<wbr/> YUV) conversion.<wbr/> Since raw streams
18606(e.<wbr/>g.<wbr/> RAW16) don't have the conversion stage,<wbr/> they are not
18607croppable.<wbr/> The crop region will be ignored by raw streams.<wbr/></p>
18608<p>For non-raw streams,<wbr/> any additional per-stream cropping will
18609be done to maximize the final pixel area of the stream.<wbr/></p>
18610<p>For example,<wbr/> if the crop region is set to a 4:3 aspect
18611ratio,<wbr/> then 4:3 streams will use the exact crop
18612region.<wbr/> 16:9 streams will further crop vertically
18613(letterbox).<wbr/></p>
18614<p>Conversely,<wbr/> if the crop region is set to a 16:9,<wbr/> then 4:3
18615outputs will crop horizontally (pillarbox),<wbr/> and 16:9
18616streams will match exactly.<wbr/> These additional crops will
18617be centered within the crop region.<wbr/></p>
18618<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
18619of the crop region cannot be set to be smaller than
18620<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
18621<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>
18622<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
18623and height of the crop region cannot be set to be smaller than
18624<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>
18625and
18626<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/>
18627respectively.<wbr/></p>
18628<p>The camera device may adjust the crop region to account
18629for rounding and other hardware requirements; the final
18630crop region used will be included in the output capture
18631result.<wbr/></p>
18632            </td>
18633          </tr>
18634
18635          <tr class="entries_header">
18636            <th class="th_details" colspan="6">HAL Implementation Details</th>
18637          </tr>
18638          <tr class="entry_cont">
18639            <td class="entry_details" colspan="6">
18640              <p>The output streams must maintain square pixels at all
18641times,<wbr/> no matter what the relative aspect ratios of the
18642crop region and the stream are.<wbr/>  Negative values for
18643corner are allowed for raw output if full pixel array is
18644larger than active pixel array.<wbr/> Width and height may be
18645rounded to nearest larger supportable width,<wbr/> especially
18646for raw output,<wbr/> where only a few fixed scales may be
18647possible.<wbr/></p>
18648<p>For a set of output streams configured,<wbr/> if the sensor output is cropped to a smaller
18649size than pre-correction active array size,<wbr/> the HAL need follow below cropping rules:</p>
18650<ul>
18651<li>
18652<p>The HAL need handle the cropRegion as if the sensor crop size is the effective
18653pre-correction active array size.<wbr/> More specifically,<wbr/> the HAL must transform the request
18654cropRegion from <a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a> to the sensor cropped
18655pixel area size in this way:</p>
18656<ol>
18657<li>Translate the requested cropRegion w.<wbr/>r.<wbr/>t.,<wbr/> the left top corner of the sensor
18658cropped pixel area by (tx,<wbr/> ty),<wbr/>
18659where <code>ty = sensorCrop.<wbr/>top * (sensorCrop.<wbr/>height /<wbr/> preCorrectionActiveArraySize.<wbr/>height)</code>
18660and <code>tx = sensorCrop.<wbr/>left * (sensorCrop.<wbr/>width /<wbr/> preCorrectionActiveArraySize.<wbr/>width)</code>.<wbr/>
18661The (sensorCrop.<wbr/>top,<wbr/> sensorCrop.<wbr/>left) is the coordinate based off the
18662<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></li>
18663<li>Scale the width and height of requested cropRegion with scaling factor of
18664sensor<wbr/>Crop.<wbr/>width/<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size.<wbr/>width and sensor<wbr/>Crop.<wbr/>height/<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size.<wbr/>height
18665respectively.<wbr/>
18666Once this new cropRegion is calculated,<wbr/> the HAL must use this region to crop the image
18667with regard to the sensor crop size (effective pre-correction active array size).<wbr/> The
18668HAL still need follow the general cropping rule for this new cropRegion and effective
18669pre-correction active array size.<wbr/></li>
18670</ol>
18671</li>
18672<li>
18673<p>The HAL must report the cropRegion with regard 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/>
18674The HAL need convert the new cropRegion generated above w.<wbr/>r.<wbr/>t.,<wbr/> full pre-correction
18675active array size.<wbr/> The reported cropRegion may be slightly different with the requested
18676cropRegion since the HAL may adjust the crop region to account for rounding,<wbr/> conversion
18677error,<wbr/> or other hardware limitations.<wbr/></p>
18678</li>
18679</ul>
18680<p>HAL2.<wbr/>x uses only (x,<wbr/> y,<wbr/> width)</p>
18681            </td>
18682          </tr>
18683
18684          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18685           <!-- end of entry -->
18686
18687
18688
18689      <!-- end of kind -->
18690      </tbody>
18691      <tr><td colspan="7" class="kind">static</td></tr>
18692
18693      <thead class="entries_header">
18694        <tr>
18695          <th class="th_name">Property Name</th>
18696          <th class="th_type">Type</th>
18697          <th class="th_description">Description</th>
18698          <th class="th_units">Units</th>
18699          <th class="th_range">Range</th>
18700          <th class="th_hal_version">Initial HIDL HAL version</th>
18701          <th class="th_tags">Tags</th>
18702        </tr>
18703      </thead>
18704
18705      <tbody>
18706
18707
18708
18709
18710
18711
18712
18713
18714
18715
18716          <tr class="entry" id="static_android.scaler.availableFormats">
18717            <td class="entry_name
18718                entry_name_deprecated
18719             " rowspan="5">
18720              android.<wbr/>scaler.<wbr/>available<wbr/>Formats
18721            </td>
18722            <td class="entry_type">
18723                <span class="entry_type_name entry_type_name_enum">int32</span>
18724                <span class="entry_type_container">x</span>
18725
18726                <span class="entry_type_array">
18727                  n
18728                </span>
18729              <span class="entry_type_visibility"> [hidden as imageFormat]</span>
18730
18731
18732
18733              <span class="entry_type_deprecated">[deprecated] </span>
18734
18735
18736                <ul class="entry_type_enum">
18737                  <li>
18738                    <span class="entry_type_enum_name">RAW16 (v3.2)</span>
18739                    <span class="entry_type_enum_optional">[optional]</span>
18740                    <span class="entry_type_enum_value">0x20</span>
18741                    <span class="entry_type_enum_notes"><p>RAW16 is a standard,<wbr/> cross-platform format for raw image
18742buffers with 16-bit pixels.<wbr/></p>
18743<p>Buffers of this format are typically expected to have a
18744Color Filter Array (CFA) layout,<wbr/> which is given in
18745<a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a>.<wbr/> Sensors with
18746CFAs that are not representable by a format in
18747<a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a> should not
18748use this format.<wbr/></p>
18749<p>Buffers of this format will also follow the constraints given for
18750RAW_<wbr/>OPAQUE buffers,<wbr/> but with relaxed performance constraints.<wbr/></p>
18751<p>This format is intended to give users access to the full contents
18752of the buffers coming directly from the image sensor prior to any
18753cropping or scaling operations,<wbr/> and all coordinate systems for
18754metadata used for this format are relative to the size of the
18755active region of the image sensor before any geometric distortion
18756correction has been applied (i.<wbr/>e.<wbr/>
18757<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
18758dimensions for this format are limited to the full dimensions of
18759the 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
18760<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
18761only supported output size).<wbr/></p>
18762<p>See <a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a> for
18763the full set of performance guarantees.<wbr/></p></span>
18764                  </li>
18765                  <li>
18766                    <span class="entry_type_enum_name">RAW_OPAQUE (v3.2)</span>
18767                    <span class="entry_type_enum_optional">[optional]</span>
18768                    <span class="entry_type_enum_value">0x24</span>
18769                    <span class="entry_type_enum_notes"><p>RAW_<wbr/>OPAQUE (or
18770<a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_PRIVATE">RAW_<wbr/>PRIVATE</a>
18771as referred in public API) is a format for raw image buffers
18772coming from an image sensor.<wbr/></p>
18773<p>The actual structure of buffers of this format is
18774platform-specific,<wbr/> but must follow several constraints:</p>
18775<ol>
18776<li>No image post-processing operations may have been applied to
18777buffers of this type.<wbr/> These buffers contain raw image data coming
18778directly from the image sensor.<wbr/></li>
18779<li>If a buffer of this format is passed to the camera device for
18780reprocessing,<wbr/> the resulting images will be identical to the images
18781produced if the buffer had come directly from the sensor and was
18782processed with the same settings.<wbr/></li>
18783</ol>
18784<p>The intended use for this format is to allow access to the native
18785raw format buffers coming directly from the camera sensor without
18786any additional conversions or decrease in framerate.<wbr/></p>
18787<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
18788performance guarantees.<wbr/></p></span>
18789                  </li>
18790                  <li>
18791                    <span class="entry_type_enum_name">YV12 (v3.2)</span>
18792                    <span class="entry_type_enum_optional">[optional]</span>
18793                    <span class="entry_type_enum_value">0x32315659</span>
18794                    <span class="entry_type_enum_notes"><p>YCrCb 4:2:0 Planar</p></span>
18795                  </li>
18796                  <li>
18797                    <span class="entry_type_enum_name">YCrCb_420_SP (v3.2)</span>
18798                    <span class="entry_type_enum_optional">[optional]</span>
18799                    <span class="entry_type_enum_value">0x11</span>
18800                    <span class="entry_type_enum_notes"><p>NV21</p></span>
18801                  </li>
18802                  <li>
18803                    <span class="entry_type_enum_name">IMPLEMENTATION_DEFINED (v3.2)</span>
18804                    <span class="entry_type_enum_value">0x22</span>
18805                    <span class="entry_type_enum_notes"><p>System internal format,<wbr/> not application-accessible</p></span>
18806                  </li>
18807                  <li>
18808                    <span class="entry_type_enum_name">YCbCr_420_888 (v3.2)</span>
18809                    <span class="entry_type_enum_value">0x23</span>
18810                    <span class="entry_type_enum_notes"><p>Flexible YUV420 Format</p></span>
18811                  </li>
18812                  <li>
18813                    <span class="entry_type_enum_name">BLOB (v3.2)</span>
18814                    <span class="entry_type_enum_value">0x21</span>
18815                    <span class="entry_type_enum_notes"><p>JPEG format</p></span>
18816                  </li>
18817                  <li>
18818                    <span class="entry_type_enum_name">RAW10 (v3.4)</span>
18819                    <span class="entry_type_enum_value">0x25</span>
18820                    <span class="entry_type_enum_notes"><p>RAW10</p></span>
18821                  </li>
18822                  <li>
18823                    <span class="entry_type_enum_name">RAW12 (v3.4)</span>
18824                    <span class="entry_type_enum_value">0x26</span>
18825                    <span class="entry_type_enum_notes"><p>RAW12</p></span>
18826                  </li>
18827                  <li>
18828                    <span class="entry_type_enum_name">Y8 (v3.4)</span>
18829                    <span class="entry_type_enum_value">0x20203859</span>
18830                    <span class="entry_type_enum_notes"><p>Y8</p></span>
18831                  </li>
18832                </ul>
18833
18834            </td> <!-- entry_type -->
18835
18836            <td class="entry_description">
18837              <p>The list of image formats that are supported by this
18838camera device for output streams.<wbr/></p>
18839            </td>
18840
18841            <td class="entry_units">
18842            </td>
18843
18844            <td class="entry_range">
18845              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
18846            </td>
18847
18848            <td class="entry_hal_version">
18849              <p>3.<wbr/>2</p>
18850            </td>
18851
18852            <td class="entry_tags">
18853              <ul class="entry_tags">
18854                  <li><a href="#tag_BC">BC</a></li>
18855              </ul>
18856            </td>
18857
18858          </tr>
18859          <tr class="entries_header">
18860            <th class="th_details" colspan="6">Details</th>
18861          </tr>
18862          <tr class="entry_cont">
18863            <td class="entry_details" colspan="6">
18864              <p>All camera devices will support JPEG and YUV_<wbr/>420_<wbr/>888 formats.<wbr/></p>
18865<p>When set to YUV_<wbr/>420_<wbr/>888,<wbr/> application can access the YUV420 data directly.<wbr/></p>
18866            </td>
18867          </tr>
18868
18869          <tr class="entries_header">
18870            <th class="th_details" colspan="6">HAL Implementation Details</th>
18871          </tr>
18872          <tr class="entry_cont">
18873            <td class="entry_details" colspan="6">
18874              <p>These format values are from HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>* in
18875system/<wbr/>core/<wbr/>include/<wbr/>system/<wbr/>graphics.<wbr/>h.<wbr/></p>
18876<p>When IMPLEMENTATION_<wbr/>DEFINED is used,<wbr/> the platform
18877gralloc module will select a format based on the usage flags provided
18878by the camera HAL device and the other endpoint of the stream.<wbr/> It is
18879usually used by preview and recording streams,<wbr/> where the application doesn't
18880need access the image data.<wbr/></p>
18881<p>YCb<wbr/>Cr_<wbr/>420_<wbr/>888 format must be supported by the HAL.<wbr/> When an image stream
18882needs CPU/<wbr/>application direct access,<wbr/> this format will be used.<wbr/> For a MONOCHROME
18883camera device,<wbr/> the pixel value of Cb and Cr planes is 128.<wbr/></p>
18884<p>The BLOB format must be supported by the HAL.<wbr/> This is used for the JPEG stream.<wbr/></p>
18885<p>A RAW_<wbr/>OPAQUE buffer should contain only pixel data.<wbr/> It is strongly
18886recommended that any information used by the camera device when
18887processing images is fully expressed by the result metadata
18888for that image buffer.<wbr/></p>
18889            </td>
18890          </tr>
18891
18892          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18893           <!-- end of entry -->
18894
18895
18896          <tr class="entry" id="static_android.scaler.availableJpegMinDurations">
18897            <td class="entry_name
18898                entry_name_deprecated
18899             " rowspan="3">
18900              android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Min<wbr/>Durations
18901            </td>
18902            <td class="entry_type">
18903                <span class="entry_type_name">int64</span>
18904                <span class="entry_type_container">x</span>
18905
18906                <span class="entry_type_array">
18907                  n
18908                </span>
18909              <span class="entry_type_visibility"> [hidden]</span>
18910
18911
18912
18913              <span class="entry_type_deprecated">[deprecated] </span>
18914
18915
18916
18917            </td> <!-- entry_type -->
18918
18919            <td class="entry_description">
18920              <p>The minimum frame duration that is supported
18921for each resolution in <a href="#static_android.scaler.availableJpegSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes</a>.<wbr/></p>
18922            </td>
18923
18924            <td class="entry_units">
18925              Nanoseconds
18926            </td>
18927
18928            <td class="entry_range">
18929              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
18930              <p>TODO: Remove property.<wbr/></p>
18931            </td>
18932
18933            <td class="entry_hal_version">
18934              <p>3.<wbr/>2</p>
18935            </td>
18936
18937            <td class="entry_tags">
18938              <ul class="entry_tags">
18939                  <li><a href="#tag_BC">BC</a></li>
18940              </ul>
18941            </td>
18942
18943          </tr>
18944          <tr class="entries_header">
18945            <th class="th_details" colspan="6">Details</th>
18946          </tr>
18947          <tr class="entry_cont">
18948            <td class="entry_details" colspan="6">
18949              <p>This corresponds to the minimum steady-state frame duration when only
18950that JPEG stream is active and captured in a burst,<wbr/> with all
18951processing (typically in android.<wbr/>*.<wbr/>mode) set to FAST.<wbr/></p>
18952<p>When multiple streams are configured,<wbr/> the minimum
18953frame duration will be &gt;= max(individual stream min
18954durations)</p>
18955            </td>
18956          </tr>
18957
18958
18959          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18960           <!-- end of entry -->
18961
18962
18963          <tr class="entry" id="static_android.scaler.availableJpegSizes">
18964            <td class="entry_name
18965                entry_name_deprecated
18966             " rowspan="5">
18967              android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes
18968            </td>
18969            <td class="entry_type">
18970                <span class="entry_type_name">int32</span>
18971                <span class="entry_type_container">x</span>
18972
18973                <span class="entry_type_array">
18974                  n x 2
18975                </span>
18976              <span class="entry_type_visibility"> [hidden as size]</span>
18977
18978
18979
18980              <span class="entry_type_deprecated">[deprecated] </span>
18981
18982
18983
18984            </td> <!-- entry_type -->
18985
18986            <td class="entry_description">
18987              <p>The JPEG resolutions that are supported by this camera device.<wbr/></p>
18988            </td>
18989
18990            <td class="entry_units">
18991            </td>
18992
18993            <td class="entry_range">
18994              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
18995              <p>TODO: Remove property.<wbr/></p>
18996            </td>
18997
18998            <td class="entry_hal_version">
18999              <p>3.<wbr/>2</p>
19000            </td>
19001
19002            <td class="entry_tags">
19003              <ul class="entry_tags">
19004                  <li><a href="#tag_BC">BC</a></li>
19005              </ul>
19006            </td>
19007
19008          </tr>
19009          <tr class="entries_header">
19010            <th class="th_details" colspan="6">Details</th>
19011          </tr>
19012          <tr class="entry_cont">
19013            <td class="entry_details" colspan="6">
19014              <p>The resolutions are listed as <code>(width,<wbr/> height)</code> pairs.<wbr/> All camera devices will support
19015sensor 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>
19016            </td>
19017          </tr>
19018
19019          <tr class="entries_header">
19020            <th class="th_details" colspan="6">HAL Implementation Details</th>
19021          </tr>
19022          <tr class="entry_cont">
19023            <td class="entry_details" colspan="6">
19024              <p>The HAL must include sensor maximum resolution
19025(defined by <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>),<wbr/>
19026and should include half/<wbr/>quarter of sensor maximum resolution.<wbr/></p>
19027            </td>
19028          </tr>
19029
19030          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19031           <!-- end of entry -->
19032
19033
19034          <tr class="entry" id="static_android.scaler.availableMaxDigitalZoom">
19035            <td class="entry_name
19036             " rowspan="3">
19037              android.<wbr/>scaler.<wbr/>available<wbr/>Max<wbr/>Digital<wbr/>Zoom
19038            </td>
19039            <td class="entry_type">
19040                <span class="entry_type_name">float</span>
19041
19042              <span class="entry_type_visibility"> [public]</span>
19043
19044
19045              <span class="entry_type_hwlevel">[legacy] </span>
19046
19047
19048
19049
19050            </td> <!-- entry_type -->
19051
19052            <td class="entry_description">
19053              <p>The maximum ratio between both active area width
19054and crop region width,<wbr/> and active area height and
19055crop region height,<wbr/> for <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></p>
19056            </td>
19057
19058            <td class="entry_units">
19059              Zoom scale factor
19060            </td>
19061
19062            <td class="entry_range">
19063              <p>&gt;=1</p>
19064            </td>
19065
19066            <td class="entry_hal_version">
19067              <p>3.<wbr/>2</p>
19068            </td>
19069
19070            <td class="entry_tags">
19071              <ul class="entry_tags">
19072                  <li><a href="#tag_BC">BC</a></li>
19073              </ul>
19074            </td>
19075
19076          </tr>
19077          <tr class="entries_header">
19078            <th class="th_details" colspan="6">Details</th>
19079          </tr>
19080          <tr class="entry_cont">
19081            <td class="entry_details" colspan="6">
19082              <p>This represents the maximum amount of zooming possible by
19083the camera device,<wbr/> or equivalently,<wbr/> the minimum cropping
19084window size.<wbr/></p>
19085<p>Crop regions that have a width or height that is smaller
19086than this ratio allows will be rounded up to the minimum
19087allowed size by the camera device.<wbr/></p>
19088            </td>
19089          </tr>
19090
19091
19092          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19093           <!-- end of entry -->
19094
19095
19096          <tr class="entry" id="static_android.scaler.availableProcessedMinDurations">
19097            <td class="entry_name
19098                entry_name_deprecated
19099             " rowspan="3">
19100              android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Min<wbr/>Durations
19101            </td>
19102            <td class="entry_type">
19103                <span class="entry_type_name">int64</span>
19104                <span class="entry_type_container">x</span>
19105
19106                <span class="entry_type_array">
19107                  n
19108                </span>
19109              <span class="entry_type_visibility"> [hidden]</span>
19110
19111
19112
19113              <span class="entry_type_deprecated">[deprecated] </span>
19114
19115
19116
19117            </td> <!-- entry_type -->
19118
19119            <td class="entry_description">
19120              <p>For each available processed output size (defined in
19121<a href="#static_android.scaler.availableProcessedSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Sizes</a>),<wbr/> this property lists the
19122minimum supportable frame duration for that size.<wbr/></p>
19123            </td>
19124
19125            <td class="entry_units">
19126              Nanoseconds
19127            </td>
19128
19129            <td class="entry_range">
19130              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
19131            </td>
19132
19133            <td class="entry_hal_version">
19134              <p>3.<wbr/>2</p>
19135            </td>
19136
19137            <td class="entry_tags">
19138              <ul class="entry_tags">
19139                  <li><a href="#tag_BC">BC</a></li>
19140              </ul>
19141            </td>
19142
19143          </tr>
19144          <tr class="entries_header">
19145            <th class="th_details" colspan="6">Details</th>
19146          </tr>
19147          <tr class="entry_cont">
19148            <td class="entry_details" colspan="6">
19149              <p>This should correspond to the frame duration when only that processed
19150stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode)
19151set to FAST.<wbr/></p>
19152<p>When multiple streams are configured,<wbr/> the minimum frame duration will
19153be &gt;= max(individual stream min durations).<wbr/></p>
19154            </td>
19155          </tr>
19156
19157
19158          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19159           <!-- end of entry -->
19160
19161
19162          <tr class="entry" id="static_android.scaler.availableProcessedSizes">
19163            <td class="entry_name
19164                entry_name_deprecated
19165             " rowspan="5">
19166              android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Sizes
19167            </td>
19168            <td class="entry_type">
19169                <span class="entry_type_name">int32</span>
19170                <span class="entry_type_container">x</span>
19171
19172                <span class="entry_type_array">
19173                  n x 2
19174                </span>
19175              <span class="entry_type_visibility"> [hidden as size]</span>
19176
19177
19178
19179              <span class="entry_type_deprecated">[deprecated] </span>
19180
19181
19182
19183            </td> <!-- entry_type -->
19184
19185            <td class="entry_description">
19186              <p>The resolutions available for use with
19187processed output streams,<wbr/> such as YV12,<wbr/> NV12,<wbr/> and
19188platform opaque YUV/<wbr/>RGB streams to the GPU or video
19189encoders.<wbr/></p>
19190            </td>
19191
19192            <td class="entry_units">
19193            </td>
19194
19195            <td class="entry_range">
19196              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
19197            </td>
19198
19199            <td class="entry_hal_version">
19200              <p>3.<wbr/>2</p>
19201            </td>
19202
19203            <td class="entry_tags">
19204              <ul class="entry_tags">
19205                  <li><a href="#tag_BC">BC</a></li>
19206              </ul>
19207            </td>
19208
19209          </tr>
19210          <tr class="entries_header">
19211            <th class="th_details" colspan="6">Details</th>
19212          </tr>
19213          <tr class="entry_cont">
19214            <td class="entry_details" colspan="6">
19215              <p>The resolutions are listed as <code>(width,<wbr/> height)</code> pairs.<wbr/></p>
19216<p>For a given use case,<wbr/> the actual maximum supported resolution
19217may be lower than what is listed here,<wbr/> depending on the destination
19218Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/>
19219the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p)
19220smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448)
19221can provide.<wbr/></p>
19222<p>Please reference the documentation for the image data destination to
19223check if it limits the maximum size for image data.<wbr/></p>
19224            </td>
19225          </tr>
19226
19227          <tr class="entries_header">
19228            <th class="th_details" colspan="6">HAL Implementation Details</th>
19229          </tr>
19230          <tr class="entry_cont">
19231            <td class="entry_details" colspan="6">
19232              <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/>
19233the HAL must include all JPEG sizes listed in <a href="#static_android.scaler.availableJpegSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes</a>
19234and each below resolution if it is smaller than or equal to the sensor
19235maximum resolution (if they are not listed in JPEG sizes already):</p>
19236<ul>
19237<li>240p (320 x 240)</li>
19238<li>480p (640 x 480)</li>
19239<li>720p (1280 x 720)</li>
19240<li>1080p (1920 x 1080)</li>
19241</ul>
19242<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/>
19243the HAL only has to list up to the maximum video size supported by the devices.<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.scaler.availableRawMinDurations">
19252            <td class="entry_name
19253                entry_name_deprecated
19254             " rowspan="3">
19255              android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Min<wbr/>Durations
19256            </td>
19257            <td class="entry_type">
19258                <span class="entry_type_name">int64</span>
19259                <span class="entry_type_container">x</span>
19260
19261                <span class="entry_type_array">
19262                  n
19263                </span>
19264              <span class="entry_type_visibility"> [system]</span>
19265
19266
19267
19268              <span class="entry_type_deprecated">[deprecated] </span>
19269
19270
19271
19272            </td> <!-- entry_type -->
19273
19274            <td class="entry_description">
19275              <p>For each available raw output size (defined in
19276<a href="#static_android.scaler.availableRawSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Sizes</a>),<wbr/> this property lists the minimum
19277supportable frame duration for that size.<wbr/></p>
19278            </td>
19279
19280            <td class="entry_units">
19281              Nanoseconds
19282            </td>
19283
19284            <td class="entry_range">
19285              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
19286            </td>
19287
19288            <td class="entry_hal_version">
19289              <p>3.<wbr/>2</p>
19290            </td>
19291
19292            <td class="entry_tags">
19293              <ul class="entry_tags">
19294                  <li><a href="#tag_BC">BC</a></li>
19295              </ul>
19296            </td>
19297
19298          </tr>
19299          <tr class="entries_header">
19300            <th class="th_details" colspan="6">Details</th>
19301          </tr>
19302          <tr class="entry_cont">
19303            <td class="entry_details" colspan="6">
19304              <p>Should correspond to the frame duration when only the raw stream is
19305active.<wbr/></p>
19306<p>When multiple streams are configured,<wbr/> the minimum
19307frame duration will be &gt;= max(individual stream min
19308durations)</p>
19309            </td>
19310          </tr>
19311
19312
19313          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19314           <!-- end of entry -->
19315
19316
19317          <tr class="entry" id="static_android.scaler.availableRawSizes">
19318            <td class="entry_name
19319                entry_name_deprecated
19320             " rowspan="1">
19321              android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Sizes
19322            </td>
19323            <td class="entry_type">
19324                <span class="entry_type_name">int32</span>
19325                <span class="entry_type_container">x</span>
19326
19327                <span class="entry_type_array">
19328                  n x 2
19329                </span>
19330              <span class="entry_type_visibility"> [system as size]</span>
19331
19332
19333
19334              <span class="entry_type_deprecated">[deprecated] </span>
19335
19336
19337
19338            </td> <!-- entry_type -->
19339
19340            <td class="entry_description">
19341              <p>The resolutions available for use with raw
19342sensor output streams,<wbr/> listed as width,<wbr/>
19343height</p>
19344            </td>
19345
19346            <td class="entry_units">
19347            </td>
19348
19349            <td class="entry_range">
19350              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
19351            </td>
19352
19353            <td class="entry_hal_version">
19354              <p>3.<wbr/>2</p>
19355            </td>
19356
19357            <td class="entry_tags">
19358            </td>
19359
19360          </tr>
19361
19362
19363          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19364           <!-- end of entry -->
19365
19366
19367          <tr class="entry" id="static_android.scaler.availableInputOutputFormatsMap">
19368            <td class="entry_name
19369             " rowspan="5">
19370              android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map
19371            </td>
19372            <td class="entry_type">
19373                <span class="entry_type_name">int32</span>
19374
19375              <span class="entry_type_visibility"> [hidden as reprocessFormatsMap]</span>
19376
19377
19378
19379
19380
19381
19382            </td> <!-- entry_type -->
19383
19384            <td class="entry_description">
19385              <p>The mapping of image formats that are supported by this
19386camera device for input streams,<wbr/> to their corresponding output formats.<wbr/></p>
19387            </td>
19388
19389            <td class="entry_units">
19390            </td>
19391
19392            <td class="entry_range">
19393            </td>
19394
19395            <td class="entry_hal_version">
19396              <p>3.<wbr/>2</p>
19397            </td>
19398
19399            <td class="entry_tags">
19400              <ul class="entry_tags">
19401                  <li><a href="#tag_REPROC">REPROC</a></li>
19402              </ul>
19403            </td>
19404
19405          </tr>
19406          <tr class="entries_header">
19407            <th class="th_details" colspan="6">Details</th>
19408          </tr>
19409          <tr class="entry_cont">
19410            <td class="entry_details" colspan="6">
19411              <p>All camera devices with at least 1
19412<a href="#static_android.request.maxNumInputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Input<wbr/>Streams</a> will have at least one
19413available input format.<wbr/></p>
19414<p>The camera device will support the following map of formats,<wbr/>
19415if its dependent capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>) is supported:</p>
19416<table>
19417<thead>
19418<tr>
19419<th align="left">Input Format</th>
19420<th align="left">Output Format</th>
19421<th align="left">Capability</th>
19422</tr>
19423</thead>
19424<tbody>
19425<tr>
19426<td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td>
19427<td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
19428<td align="left">PRIVATE_<wbr/>REPROCESSING</td>
19429</tr>
19430<tr>
19431<td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td>
19432<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>
19433<td align="left">PRIVATE_<wbr/>REPROCESSING</td>
19434</tr>
19435<tr>
19436<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>
19437<td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
19438<td align="left">YUV_<wbr/>REPROCESSING</td>
19439</tr>
19440<tr>
19441<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>
19442<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>
19443<td align="left">YUV_<wbr/>REPROCESSING</td>
19444</tr>
19445</tbody>
19446</table>
19447<p>PRIVATE refers to a device-internal format that is not directly application-visible.<wbr/>  A
19448PRIVATE input surface can be acquired by <a href="https://developer.android.com/reference/android/media/ImageReader.html#newInstance">ImageReader#newInstance</a>
19449with <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> as the format.<wbr/></p>
19450<p>For a PRIVATE_<wbr/>REPROCESSING-capable camera device,<wbr/> using the PRIVATE format as either input
19451or 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>
19452<p>Attempting to configure an input stream with output streams not
19453listed as available in this map is not valid.<wbr/></p>
19454<p>Additionally,<wbr/> if the camera device is MONOCHROME with Y8 support,<wbr/> it will also support
19455the following map of formats if its dependent capability
19456(<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>) is supported:</p>
19457<table>
19458<thead>
19459<tr>
19460<th align="left">Input Format</th>
19461<th align="left">Output Format</th>
19462<th align="left">Capability</th>
19463</tr>
19464</thead>
19465<tbody>
19466<tr>
19467<td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td>
19468<td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#Y8">ImageFormat#Y8</a></td>
19469<td align="left">PRIVATE_<wbr/>REPROCESSING</td>
19470</tr>
19471<tr>
19472<td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#Y8">ImageFormat#Y8</a></td>
19473<td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
19474<td align="left">YUV_<wbr/>REPROCESSING</td>
19475</tr>
19476<tr>
19477<td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#Y8">ImageFormat#Y8</a></td>
19478<td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#Y8">ImageFormat#Y8</a></td>
19479<td align="left">YUV_<wbr/>REPROCESSING</td>
19480</tr>
19481</tbody>
19482</table>
19483            </td>
19484          </tr>
19485
19486          <tr class="entries_header">
19487            <th class="th_details" colspan="6">HAL Implementation Details</th>
19488          </tr>
19489          <tr class="entry_cont">
19490            <td class="entry_details" colspan="6">
19491              <p>For the formats,<wbr/> see <code>system/<wbr/>core/<wbr/>include/<wbr/>system/<wbr/>graphics.<wbr/>h</code> for a definition
19492of the image format enumerations.<wbr/> The PRIVATE format refers to the
19493HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>IMPLEMENTATION_<wbr/>DEFINED format.<wbr/> The HAL could determine
19494the actual format by using the gralloc usage flags.<wbr/>
19495For ZSL use case in particular,<wbr/> the HAL could choose appropriate format (partially
19496processed YUV or RAW based format) by checking the format and GRALLOC_<wbr/>USAGE_<wbr/>HW_<wbr/>CAMERA_<wbr/>ZSL.<wbr/>
19497See camera3.<wbr/>h for more details.<wbr/></p>
19498<p>This value is encoded as a variable-size array-of-arrays.<wbr/>
19499The inner array always contains <code>[format,<wbr/> length,<wbr/> ...<wbr/>]</code> where
19500<code>...<wbr/></code> has <code>length</code> elements.<wbr/> An inner array is followed by another
19501inner array if the total metadata entry size hasn't yet been exceeded.<wbr/></p>
19502<p>A code sample to read/<wbr/>write this encoding (with a device that
19503supports reprocessing IMPLEMENTATION_<wbr/>DEFINED to YUV_<wbr/>420_<wbr/>888,<wbr/> and JPEG,<wbr/>
19504and reprocessing YUV_<wbr/>420_<wbr/>888 to YUV_<wbr/>420_<wbr/>888 and JPEG):</p>
19505<pre><code>//<wbr/> reading
19506int32_<wbr/>t* contents = &amp;entry.<wbr/>i32[0];
19507for (size_<wbr/>t i = 0; i &lt; entry.<wbr/>count; ) {
19508    int32_<wbr/>t format = contents[i++];
19509    int32_<wbr/>t length = contents[i++];
19510    int32_<wbr/>t output_<wbr/>formats[length];
19511    memcpy(&amp;output_<wbr/>formats[0],<wbr/> &amp;contents[i],<wbr/>
19512           length * sizeof(int32_<wbr/>t));
19513    i += length;
19514}
19515
19516//<wbr/> writing (static example,<wbr/> PRIVATE_<wbr/>REPROCESSING + YUV_<wbr/>REPROCESSING)
19517int32_<wbr/>t[] contents = {
19518  IMPLEMENTATION_<wbr/>DEFINED,<wbr/> 2,<wbr/> YUV_<wbr/>420_<wbr/>888,<wbr/> BLOB,<wbr/>
19519  YUV_<wbr/>420_<wbr/>888,<wbr/> 2,<wbr/> YUV_<wbr/>420_<wbr/>888,<wbr/> BLOB,<wbr/>
19520};
19521update_<wbr/>camera_<wbr/>metadata_<wbr/>entry(metadata,<wbr/> index,<wbr/> &amp;contents[0],<wbr/>
19522      sizeof(contents)/<wbr/>sizeof(contents[0]),<wbr/> &amp;updated_<wbr/>entry);
19523</code></pre>
19524<p>If the HAL claims to support any of the capabilities listed in the
19525above details,<wbr/> then it must also support all the input-output
19526combinations listed for that capability.<wbr/> It can optionally support
19527additional formats if it so chooses.<wbr/></p>
19528            </td>
19529          </tr>
19530
19531          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19532           <!-- end of entry -->
19533
19534
19535          <tr class="entry" id="static_android.scaler.availableStreamConfigurations">
19536            <td class="entry_name
19537             " rowspan="5">
19538              android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations
19539            </td>
19540            <td class="entry_type">
19541                <span class="entry_type_name entry_type_name_enum">int32</span>
19542                <span class="entry_type_container">x</span>
19543
19544                <span class="entry_type_array">
19545                  n x 4
19546                </span>
19547              <span class="entry_type_visibility"> [ndk_public as streamConfiguration]</span>
19548
19549
19550              <span class="entry_type_hwlevel">[legacy] </span>
19551
19552
19553
19554                <ul class="entry_type_enum">
19555                  <li>
19556                    <span class="entry_type_enum_name">OUTPUT (v3.2)</span>
19557                  </li>
19558                  <li>
19559                    <span class="entry_type_enum_name">INPUT (v3.2)</span>
19560                  </li>
19561                </ul>
19562
19563            </td> <!-- entry_type -->
19564
19565            <td class="entry_description">
19566              <p>The available stream configurations that this
19567camera device supports
19568(i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p>
19569            </td>
19570
19571            <td class="entry_units">
19572            </td>
19573
19574            <td class="entry_range">
19575            </td>
19576
19577            <td class="entry_hal_version">
19578              <p>3.<wbr/>2</p>
19579            </td>
19580
19581            <td class="entry_tags">
19582            </td>
19583
19584          </tr>
19585          <tr class="entries_header">
19586            <th class="th_details" colspan="6">Details</th>
19587          </tr>
19588          <tr class="entry_cont">
19589            <td class="entry_details" colspan="6">
19590              <p>The configurations are listed as <code>(format,<wbr/> width,<wbr/> height,<wbr/> input?)</code>
19591tuples.<wbr/></p>
19592<p>For a given use case,<wbr/> the actual maximum supported resolution
19593may be lower than what is listed here,<wbr/> depending on the destination
19594Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/>
19595the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p)
19596smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448)
19597can provide.<wbr/></p>
19598<p>Please reference the documentation for the image data destination to
19599check if it limits the maximum size for image data.<wbr/></p>
19600<p>Not all output formats may be supported in a configuration with
19601an input stream of a particular format.<wbr/> For more details,<wbr/> see
19602<a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a>.<wbr/></p>
19603<p>The following table describes the minimum required output stream
19604configurations based on the hardware level
19605(<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>):</p>
19606<table>
19607<thead>
19608<tr>
19609<th align="center">Format</th>
19610<th align="center">Size</th>
19611<th align="center">Hardware Level</th>
19612<th align="center">Notes</th>
19613</tr>
19614</thead>
19615<tbody>
19616<tr>
19617<td align="center">JPEG</td>
19618<td align="center"><a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></td>
19619<td align="center">Any</td>
19620<td align="center"></td>
19621</tr>
19622<tr>
19623<td align="center">JPEG</td>
19624<td align="center">1920x1080 (1080p)</td>
19625<td align="center">Any</td>
19626<td align="center">if 1080p &lt;= activeArraySize</td>
19627</tr>
19628<tr>
19629<td align="center">JPEG</td>
19630<td align="center">1280x720 (720)</td>
19631<td align="center">Any</td>
19632<td align="center">if 720p &lt;= activeArraySize</td>
19633</tr>
19634<tr>
19635<td align="center">JPEG</td>
19636<td align="center">640x480 (480p)</td>
19637<td align="center">Any</td>
19638<td align="center">if 480p &lt;= activeArraySize</td>
19639</tr>
19640<tr>
19641<td align="center">JPEG</td>
19642<td align="center">320x240 (240p)</td>
19643<td align="center">Any</td>
19644<td align="center">if 240p &lt;= activeArraySize</td>
19645</tr>
19646<tr>
19647<td align="center">YUV_<wbr/>420_<wbr/>888</td>
19648<td align="center">all output sizes available for JPEG</td>
19649<td align="center">FULL</td>
19650<td align="center"></td>
19651</tr>
19652<tr>
19653<td align="center">YUV_<wbr/>420_<wbr/>888</td>
19654<td align="center">all output sizes available for JPEG,<wbr/> up to the maximum video size</td>
19655<td align="center">LIMITED</td>
19656<td align="center"></td>
19657</tr>
19658<tr>
19659<td align="center">IMPLEMENTATION_<wbr/>DEFINED</td>
19660<td align="center">same as YUV_<wbr/>420_<wbr/>888</td>
19661<td align="center">Any</td>
19662<td align="center"></td>
19663</tr>
19664</tbody>
19665</table>
19666<p>Refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> for additional
19667mandatory stream configurations on a per-capability basis.<wbr/></p>
19668<p>Exception on 176x144 (QCIF) resolution: camera devices usually have a fixed capability for
19669downscaling from larger resolution to smaller,<wbr/> and the QCIF resolution sometimes is not
19670fully supported due to this limitation on devices with high-resolution image sensors.<wbr/>
19671Therefore,<wbr/> trying to configure a QCIF resolution stream together with any other
19672stream larger than 1920x1080 resolution (either width or height) might not be supported,<wbr/>
19673and capture session creation will fail if it is not.<wbr/></p>
19674            </td>
19675          </tr>
19676
19677          <tr class="entries_header">
19678            <th class="th_details" colspan="6">HAL Implementation Details</th>
19679          </tr>
19680          <tr class="entry_cont">
19681            <td class="entry_details" colspan="6">
19682              <p>It is recommended (but not mandatory) to also include half/<wbr/>quarter
19683of sensor maximum resolution for JPEG formats (regardless of hardware
19684level).<wbr/></p>
19685<p>(The following is a rewording of the above required table):</p>
19686<p>For JPEG format,<wbr/> the sizes may be restricted by below conditions:</p>
19687<ul>
19688<li>The HAL may choose the aspect ratio of each Jpeg size to be one of well known ones
19689(e.<wbr/>g.<wbr/> 4:3,<wbr/> 16:9,<wbr/> 3:2 etc.<wbr/>).<wbr/> If the sensor maximum resolution
19690(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/>
19691it does not have to be included in the supported JPEG sizes.<wbr/></li>
19692<li>Some hardware JPEG encoders may have pixel boundary alignment requirements,<wbr/> such as
19693the dimensions being a multiple of 16.<wbr/></li>
19694</ul>
19695<p>Therefore,<wbr/> the maximum JPEG size may be smaller than sensor maximum resolution.<wbr/>
19696However,<wbr/> the largest JPEG size must be as close as possible to the sensor maximum
19697resolution given above constraints.<wbr/> It is required that after aspect ratio adjustments,<wbr/>
19698additional size reduction due to other issues must be less than 3% in area.<wbr/> For example,<wbr/>
19699if the sensor maximum resolution is 3280x2464,<wbr/> if the maximum JPEG size has aspect
19700ratio 4:3,<wbr/> the JPEG encoder alignment requirement is 16,<wbr/> the maximum JPEG size will be
197013264x2448.<wbr/></p>
19702<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/>
19703the HAL must include all YUV_<wbr/>420_<wbr/>888 sizes that have JPEG sizes listed
19704here as output streams.<wbr/></p>
19705<p>It must also include each below resolution if it is smaller than or
19706equal to the sensor maximum resolution (for both YUV_<wbr/>420_<wbr/>888 and JPEG
19707formats),<wbr/> as output streams:</p>
19708<ul>
19709<li>240p (320 x 240)</li>
19710<li>480p (640 x 480)</li>
19711<li>720p (1280 x 720)</li>
19712<li>1080p (1920 x 1080)</li>
19713</ul>
19714<p>For LIMITED capability devices
19715(<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == LIMITED</code>),<wbr/>
19716the HAL only has to list up to the maximum video size
19717supported by the device.<wbr/></p>
19718<p>Regardless of hardware level,<wbr/> every output resolution available for
19719YUV_<wbr/>420_<wbr/>888 must also be available for IMPLEMENTATION_<wbr/>DEFINED.<wbr/></p>
19720<p>This supercedes the following fields,<wbr/> which are now deprecated:</p>
19721<ul>
19722<li>availableFormats</li>
19723<li>available[Processed,<wbr/>Raw,<wbr/>Jpeg]Sizes</li>
19724</ul>
19725            </td>
19726          </tr>
19727
19728          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19729           <!-- end of entry -->
19730
19731
19732          <tr class="entry" id="static_android.scaler.availableMinFrameDurations">
19733            <td class="entry_name
19734             " rowspan="3">
19735              android.<wbr/>scaler.<wbr/>available<wbr/>Min<wbr/>Frame<wbr/>Durations
19736            </td>
19737            <td class="entry_type">
19738                <span class="entry_type_name">int64</span>
19739                <span class="entry_type_container">x</span>
19740
19741                <span class="entry_type_array">
19742                  4 x n
19743                </span>
19744              <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
19745
19746
19747              <span class="entry_type_hwlevel">[legacy] </span>
19748
19749
19750
19751
19752            </td> <!-- entry_type -->
19753
19754            <td class="entry_description">
19755              <p>This lists the minimum frame duration for each
19756format/<wbr/>size combination.<wbr/></p>
19757            </td>
19758
19759            <td class="entry_units">
19760              (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
19761            </td>
19762
19763            <td class="entry_range">
19764            </td>
19765
19766            <td class="entry_hal_version">
19767              <p>3.<wbr/>2</p>
19768            </td>
19769
19770            <td class="entry_tags">
19771              <ul class="entry_tags">
19772                  <li><a href="#tag_V1">V1</a></li>
19773              </ul>
19774            </td>
19775
19776          </tr>
19777          <tr class="entries_header">
19778            <th class="th_details" colspan="6">Details</th>
19779          </tr>
19780          <tr class="entry_cont">
19781            <td class="entry_details" colspan="6">
19782              <p>This should correspond to the frame duration when only that
19783stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode)
19784set to either OFF or FAST.<wbr/></p>
19785<p>When multiple streams are used in a request,<wbr/> the minimum frame
19786duration will be max(individual stream min durations).<wbr/></p>
19787<p>The minimum frame duration of a stream (of a particular format,<wbr/> size)
19788is the same regardless of whether the stream is input or output.<wbr/></p>
19789<p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> and
19790<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for more details about
19791calculating the max frame rate.<wbr/></p>
19792            </td>
19793          </tr>
19794
19795
19796          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19797           <!-- end of entry -->
19798
19799
19800          <tr class="entry" id="static_android.scaler.availableStallDurations">
19801            <td class="entry_name
19802             " rowspan="5">
19803              android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations
19804            </td>
19805            <td class="entry_type">
19806                <span class="entry_type_name">int64</span>
19807                <span class="entry_type_container">x</span>
19808
19809                <span class="entry_type_array">
19810                  4 x n
19811                </span>
19812              <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
19813
19814
19815              <span class="entry_type_hwlevel">[legacy] </span>
19816
19817
19818
19819
19820            </td> <!-- entry_type -->
19821
19822            <td class="entry_description">
19823              <p>This lists the maximum stall duration for each
19824output format/<wbr/>size combination.<wbr/></p>
19825            </td>
19826
19827            <td class="entry_units">
19828              (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
19829            </td>
19830
19831            <td class="entry_range">
19832            </td>
19833
19834            <td class="entry_hal_version">
19835              <p>3.<wbr/>2</p>
19836            </td>
19837
19838            <td class="entry_tags">
19839              <ul class="entry_tags">
19840                  <li><a href="#tag_V1">V1</a></li>
19841              </ul>
19842            </td>
19843
19844          </tr>
19845          <tr class="entries_header">
19846            <th class="th_details" colspan="6">Details</th>
19847          </tr>
19848          <tr class="entry_cont">
19849            <td class="entry_details" colspan="6">
19850              <p>A stall duration is how much extra time would get added
19851to the normal minimum frame duration for a repeating request
19852that has streams with non-zero stall.<wbr/></p>
19853<p>For example,<wbr/> consider JPEG captures which have the following
19854characteristics:</p>
19855<ul>
19856<li>JPEG streams act like processed YUV streams in requests for which
19857they are not included; in requests in which they are directly
19858referenced,<wbr/> they act as JPEG streams.<wbr/> This is because supporting a
19859JPEG stream requires the underlying YUV data to always be ready for
19860use by a JPEG encoder,<wbr/> but the encoder will only be used (and impact
19861frame duration) on requests that actually reference a JPEG stream.<wbr/></li>
19862<li>The JPEG processor can run concurrently to the rest of the camera
19863pipeline,<wbr/> but cannot process more than 1 capture at a time.<wbr/></li>
19864</ul>
19865<p>In other words,<wbr/> using a repeating YUV request would result
19866in a steady frame rate (let's say it's 30 FPS).<wbr/> If a single
19867JPEG request is submitted periodically,<wbr/> the frame rate will stay
19868at 30 FPS (as long as we wait for the previous JPEG to return each
19869time).<wbr/> If we try to submit a repeating YUV + JPEG request,<wbr/> then
19870the frame rate will drop from 30 FPS.<wbr/></p>
19871<p>In general,<wbr/> submitting a new request with a non-0 stall time
19872stream will <em>not</em> cause a frame rate drop unless there are still
19873outstanding buffers for that stream from previous requests.<wbr/></p>
19874<p>Submitting a repeating request with streams (call this <code>S</code>)
19875is the same as setting the minimum frame duration from
19876the normal minimum frame duration corresponding to <code>S</code>,<wbr/> added with
19877the maximum stall duration for <code>S</code>.<wbr/></p>
19878<p>If interleaving requests with and without a stall duration,<wbr/>
19879a request will stall by the maximum of the remaining times
19880for each can-stall stream with outstanding buffers.<wbr/></p>
19881<p>This means that a stalling request will not have an exposure start
19882until the stall has completed.<wbr/></p>
19883<p>This should correspond to the stall duration when only that stream is
19884active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode) set to FAST
19885or OFF.<wbr/> Setting any of the processing modes to HIGH_<wbr/>QUALITY
19886effectively results in an indeterminate stall duration for all
19887streams in a request (the regular stall calculation rules are
19888ignored).<wbr/></p>
19889<p>The following formats may always have a stall duration:</p>
19890<ul>
19891<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></li>
19892<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_SENSOR">ImageFormat#RAW_<wbr/>SENSOR</a></li>
19893</ul>
19894<p>The following formats will never have a stall duration:</p>
19895<ul>
19896<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>
19897<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW10">ImageFormat#RAW10</a></li>
19898<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW12">ImageFormat#RAW12</a></li>
19899<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#Y8">ImageFormat#Y8</a></li>
19900</ul>
19901<p>All other formats may or may not have an allowed stall duration on
19902a per-capability basis; refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>
19903for more details.<wbr/></p>
19904<p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> for more information about
19905calculating the max frame rate (absent stalls).<wbr/></p>
19906            </td>
19907          </tr>
19908
19909          <tr class="entries_header">
19910            <th class="th_details" colspan="6">HAL Implementation Details</th>
19911          </tr>
19912          <tr class="entry_cont">
19913            <td class="entry_details" colspan="6">
19914              <p>If possible,<wbr/> it is recommended that all non-JPEG formats
19915(such as RAW16) should not have a stall duration.<wbr/> RAW10,<wbr/> RAW12,<wbr/> RAW_<wbr/>OPAQUE
19916and IMPLEMENTATION_<wbr/>DEFINED must not have stall durations.<wbr/></p>
19917            </td>
19918          </tr>
19919
19920          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19921           <!-- end of entry -->
19922
19923
19924          <tr class="entry" id="static_android.scaler.streamConfigurationMap">
19925            <td class="entry_name
19926             " rowspan="5">
19927              android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map
19928            </td>
19929            <td class="entry_type">
19930                <span class="entry_type_name">int32</span>
19931
19932              <span class="entry_type_visibility"> [java_public as streamConfigurationMap]</span>
19933
19934              <span class="entry_type_synthetic">[synthetic] </span>
19935
19936              <span class="entry_type_hwlevel">[legacy] </span>
19937
19938
19939
19940
19941            </td> <!-- entry_type -->
19942
19943            <td class="entry_description">
19944              <p>The available stream configurations that this
19945camera device supports; also includes the minimum frame durations
19946and the stall durations for each format/<wbr/>size combination.<wbr/></p>
19947            </td>
19948
19949            <td class="entry_units">
19950            </td>
19951
19952            <td class="entry_range">
19953            </td>
19954
19955            <td class="entry_hal_version">
19956              <p>3.<wbr/>2</p>
19957            </td>
19958
19959            <td class="entry_tags">
19960            </td>
19961
19962          </tr>
19963          <tr class="entries_header">
19964            <th class="th_details" colspan="6">Details</th>
19965          </tr>
19966          <tr class="entry_cont">
19967            <td class="entry_details" colspan="6">
19968              <p>All camera devices will support sensor maximum resolution (defined by
19969<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>
19970<p>For a given use case,<wbr/> the actual maximum supported resolution
19971may be lower than what is listed here,<wbr/> depending on the destination
19972Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/>
19973the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p)
19974smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448)
19975can provide.<wbr/></p>
19976<p>Please reference the documentation for the image data destination to
19977check if it limits the maximum size for image data.<wbr/></p>
19978<p>The following table describes the minimum required output stream
19979configurations based on the hardware level
19980(<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>):</p>
19981<table>
19982<thead>
19983<tr>
19984<th align="center">Format</th>
19985<th align="center">Size</th>
19986<th align="center">Hardware Level</th>
19987<th align="center">Notes</th>
19988</tr>
19989</thead>
19990<tbody>
19991<tr>
19992<td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
19993<td align="center"><a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> (*1)</td>
19994<td align="center">Any</td>
19995<td align="center"></td>
19996</tr>
19997<tr>
19998<td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
19999<td align="center">1920x1080 (1080p)</td>
20000<td align="center">Any</td>
20001<td align="center">if 1080p &lt;= activeArraySize</td>
20002</tr>
20003<tr>
20004<td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
20005<td align="center">1280x720 (720p)</td>
20006<td align="center">Any</td>
20007<td align="center">if 720p &lt;= activeArraySize</td>
20008</tr>
20009<tr>
20010<td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
20011<td align="center">640x480 (480p)</td>
20012<td align="center">Any</td>
20013<td align="center">if 480p &lt;= activeArraySize</td>
20014</tr>
20015<tr>
20016<td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
20017<td align="center">320x240 (240p)</td>
20018<td align="center">Any</td>
20019<td align="center">if 240p &lt;= activeArraySize</td>
20020</tr>
20021<tr>
20022<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>
20023<td align="center">all output sizes available for JPEG</td>
20024<td align="center">FULL</td>
20025<td align="center"></td>
20026</tr>
20027<tr>
20028<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>
20029<td align="center">all output sizes available for JPEG,<wbr/> up to the maximum video size</td>
20030<td align="center">LIMITED</td>
20031<td align="center"></td>
20032</tr>
20033<tr>
20034<td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td>
20035<td align="center">same as YUV_<wbr/>420_<wbr/>888</td>
20036<td align="center">Any</td>
20037<td align="center"></td>
20038</tr>
20039</tbody>
20040</table>
20041<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
20042stream configurations on a per-capability basis.<wbr/></p>
20043<p>*1: For JPEG format,<wbr/> the sizes may be restricted by below conditions:</p>
20044<ul>
20045<li>The HAL may choose the aspect ratio of each Jpeg size to be one of well known ones
20046(e.<wbr/>g.<wbr/> 4:3,<wbr/> 16:9,<wbr/> 3:2 etc.<wbr/>).<wbr/> If the sensor maximum resolution
20047(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/>
20048it does not have to be included in the supported JPEG sizes.<wbr/></li>
20049<li>Some hardware JPEG encoders may have pixel boundary alignment requirements,<wbr/> such as
20050the dimensions being a multiple of 16.<wbr/>
20051Therefore,<wbr/> the maximum JPEG size may be smaller than sensor maximum resolution.<wbr/>
20052However,<wbr/> the largest JPEG size will be as close as possible to the sensor maximum
20053resolution given above constraints.<wbr/> It is required that after aspect ratio adjustments,<wbr/>
20054additional size reduction due to other issues must be less than 3% in area.<wbr/> For example,<wbr/>
20055if the sensor maximum resolution is 3280x2464,<wbr/> if the maximum JPEG size has aspect
20056ratio 4:3,<wbr/> and the JPEG encoder alignment requirement is 16,<wbr/> the maximum JPEG size will be
200573264x2448.<wbr/></li>
20058</ul>
20059<p>Exception on 176x144 (QCIF) resolution: camera devices usually have a fixed capability on
20060downscaling from larger resolution to smaller ones,<wbr/> and the QCIF resolution can sometimes
20061not be fully supported due to this limitation on devices with high-resolution image
20062sensors.<wbr/> Therefore,<wbr/> trying to configure a QCIF resolution stream together with any other
20063stream larger than 1920x1080 resolution (either width or height) might not be supported,<wbr/>
20064and capture session creation will fail if it is not.<wbr/></p>
20065            </td>
20066          </tr>
20067
20068          <tr class="entries_header">
20069            <th class="th_details" colspan="6">HAL Implementation Details</th>
20070          </tr>
20071          <tr class="entry_cont">
20072            <td class="entry_details" colspan="6">
20073              <p>Do not set this property directly
20074(it is synthetic and will not be available at the HAL layer);
20075set the <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> instead.<wbr/></p>
20076<p>Not all output formats may be supported in a configuration with
20077an input stream of a particular format.<wbr/> For more details,<wbr/> see
20078<a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a>.<wbr/></p>
20079<p>It is recommended (but not mandatory) to also include half/<wbr/>quarter
20080of sensor maximum resolution for JPEG formats (regardless of hardware
20081level).<wbr/></p>
20082<p>(The following is a rewording of the above required table):</p>
20083<p>The HAL must include sensor maximum resolution (defined by
20084<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>).<wbr/></p>
20085<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/>
20086the HAL must include all YUV_<wbr/>420_<wbr/>888 sizes that have JPEG sizes listed
20087here as output streams.<wbr/></p>
20088<p>It must also include each below resolution if it is smaller than or
20089equal to the sensor maximum resolution (for both YUV_<wbr/>420_<wbr/>888 and JPEG
20090formats),<wbr/> as output streams:</p>
20091<ul>
20092<li>240p (320 x 240)</li>
20093<li>480p (640 x 480)</li>
20094<li>720p (1280 x 720)</li>
20095<li>1080p (1920 x 1080)</li>
20096</ul>
20097<p>For LIMITED capability devices
20098(<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == LIMITED</code>),<wbr/>
20099the HAL only has to list up to the maximum video size
20100supported by the device.<wbr/></p>
20101<p>Regardless of hardware level,<wbr/> every output resolution available for
20102YUV_<wbr/>420_<wbr/>888 must also be available for IMPLEMENTATION_<wbr/>DEFINED.<wbr/></p>
20103<p>This supercedes the following fields,<wbr/> which are now deprecated:</p>
20104<ul>
20105<li>availableFormats</li>
20106<li>available[Processed,<wbr/>Raw,<wbr/>Jpeg]Sizes</li>
20107</ul>
20108            </td>
20109          </tr>
20110
20111          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20112           <!-- end of entry -->
20113
20114
20115          <tr class="entry" id="static_android.scaler.croppingType">
20116            <td class="entry_name
20117             " rowspan="3">
20118              android.<wbr/>scaler.<wbr/>cropping<wbr/>Type
20119            </td>
20120            <td class="entry_type">
20121                <span class="entry_type_name entry_type_name_enum">byte</span>
20122
20123              <span class="entry_type_visibility"> [public]</span>
20124
20125
20126              <span class="entry_type_hwlevel">[legacy] </span>
20127
20128
20129
20130                <ul class="entry_type_enum">
20131                  <li>
20132                    <span class="entry_type_enum_name">CENTER_ONLY (v3.2)</span>
20133                    <span class="entry_type_enum_notes"><p>The camera device only supports centered crop regions.<wbr/></p></span>
20134                  </li>
20135                  <li>
20136                    <span class="entry_type_enum_name">FREEFORM (v3.2)</span>
20137                    <span class="entry_type_enum_notes"><p>The camera device supports arbitrarily chosen crop regions.<wbr/></p></span>
20138                  </li>
20139                </ul>
20140
20141            </td> <!-- entry_type -->
20142
20143            <td class="entry_description">
20144              <p>The crop type that this camera device supports.<wbr/></p>
20145            </td>
20146
20147            <td class="entry_units">
20148            </td>
20149
20150            <td class="entry_range">
20151            </td>
20152
20153            <td class="entry_hal_version">
20154              <p>3.<wbr/>2</p>
20155            </td>
20156
20157            <td class="entry_tags">
20158            </td>
20159
20160          </tr>
20161          <tr class="entries_header">
20162            <th class="th_details" colspan="6">Details</th>
20163          </tr>
20164          <tr class="entry_cont">
20165            <td class="entry_details" colspan="6">
20166              <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
20167device that only supports CENTER_<wbr/>ONLY cropping,<wbr/> the camera device will move the
20168crop 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>)
20169and keep the crop region width and height unchanged.<wbr/> The camera device will return the
20170final used crop region in metadata result <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></p>
20171<p>Camera devices that support FREEFORM cropping will support any crop region that
20172is inside of the active array.<wbr/> The camera device will apply the same crop region and
20173return 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>
20174<p>LEGACY capability devices will only support CENTER_<wbr/>ONLY cropping.<wbr/></p>
20175            </td>
20176          </tr>
20177
20178
20179          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20180           <!-- end of entry -->
20181
20182
20183          <tr class="entry" id="static_android.scaler.availableRecommendedStreamConfigurations">
20184            <td class="entry_name
20185             " rowspan="5">
20186              android.<wbr/>scaler.<wbr/>available<wbr/>Recommended<wbr/>Stream<wbr/>Configurations
20187            </td>
20188            <td class="entry_type">
20189                <span class="entry_type_name entry_type_name_enum">int32</span>
20190                <span class="entry_type_container">x</span>
20191
20192                <span class="entry_type_array">
20193                  n x 5
20194                </span>
20195              <span class="entry_type_visibility"> [ndk_public as recommendedStreamConfiguration]</span>
20196
20197
20198
20199
20200
20201                <ul class="entry_type_enum">
20202                  <li>
20203                    <span class="entry_type_enum_name">PREVIEW (v3.4)</span>
20204                    <span class="entry_type_enum_value">0x0</span>
20205                    <span class="entry_type_enum_notes"><p>Preview must only include non-stalling processed stream configurations with
20206output formats like
20207<a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a>,<wbr/>
20208<a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a>,<wbr/> etc.<wbr/></p></span>
20209                  </li>
20210                  <li>
20211                    <span class="entry_type_enum_name">RECORD (v3.4)</span>
20212                    <span class="entry_type_enum_value">0x1</span>
20213                    <span class="entry_type_enum_notes"><p>Video record must include stream configurations that match the advertised
20214supported media profiles <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a> with
20215IMPLEMENTATION_<wbr/>DEFINED format.<wbr/></p></span>
20216                  </li>
20217                  <li>
20218                    <span class="entry_type_enum_name">VIDEO_SNAPSHOT (v3.4)</span>
20219                    <span class="entry_type_enum_value">0x2</span>
20220                    <span class="entry_type_enum_notes"><p>Video snapshot must include stream configurations at least as big as
20221the maximum RECORD resolutions and only with
20222<a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">JPEG output format</a>.<wbr/>
20223Additionally the configurations shouldn't cause preview glitches and also be able to
20224run at 30 fps.<wbr/></p></span>
20225                  </li>
20226                  <li>
20227                    <span class="entry_type_enum_name">SNAPSHOT (v3.4)</span>
20228                    <span class="entry_type_enum_value">0x3</span>
20229                    <span class="entry_type_enum_notes"><p>Recommended snapshot stream configurations must include at least one with
20230size close to <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> and
20231<a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">JPEG output format</a>.<wbr/>
20232Taking into account restrictions on aspect ratio,<wbr/> alignment etc.<wbr/> the area of the
20233maximum suggested size shouldn’t be less than 97% of the sensor array size area.<wbr/></p></span>
20234                  </li>
20235                  <li>
20236                    <span class="entry_type_enum_name">ZSL (v3.4)</span>
20237                    <span class="entry_type_enum_value">0x4</span>
20238                    <span class="entry_type_enum_notes"><p>If supported,<wbr/> recommended input stream configurations must only be advertised with
20239ZSL along with other processed and/<wbr/>or stalling output formats.<wbr/></p></span>
20240                  </li>
20241                  <li>
20242                    <span class="entry_type_enum_name">RAW (v3.4)</span>
20243                    <span class="entry_type_enum_value">0x5</span>
20244                    <span class="entry_type_enum_notes"><p>If supported,<wbr/> recommended raw stream configurations must only include RAW based
20245output formats.<wbr/></p></span>
20246                  </li>
20247                  <li>
20248                    <span class="entry_type_enum_name">LOW_LATENCY_SNAPSHOT (v3.4)</span>
20249                    <span class="entry_type_enum_value">0x6</span>
20250                    <span class="entry_type_enum_notes"><p>If supported,<wbr/> the recommended low latency stream configurations must have
20251end-to-end latency that does not exceed 200 ms.<wbr/> under standard operating conditions
20252(reasonable light levels,<wbr/> not loaded system) and using template
20253TEMPLATE_<wbr/>STILL_<wbr/>CAPTURE.<wbr/> This is primarily for listing configurations for the
20254<a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">JPEG output format</a>
20255however other supported output formats can be added as well.<wbr/></p></span>
20256                  </li>
20257                  <li>
20258                    <span class="entry_type_enum_name">PUBLIC_END (v3.4)</span>
20259                    <span class="entry_type_enum_value">0x7</span>
20260                  </li>
20261                  <li>
20262                    <span class="entry_type_enum_name">VENDOR_START (v3.4)</span>
20263                    <span class="entry_type_enum_value">0x18</span>
20264                    <span class="entry_type_enum_notes"><p>Vendor defined use cases.<wbr/> These depend on the vendor implementation.<wbr/></p></span>
20265                  </li>
20266                </ul>
20267
20268            </td> <!-- entry_type -->
20269
20270            <td class="entry_description">
20271              <p>Recommended stream configurations for common client use cases.<wbr/></p>
20272            </td>
20273
20274            <td class="entry_units">
20275            </td>
20276
20277            <td class="entry_range">
20278            </td>
20279
20280            <td class="entry_hal_version">
20281              <p>3.<wbr/>4</p>
20282            </td>
20283
20284            <td class="entry_tags">
20285            </td>
20286
20287          </tr>
20288          <tr class="entries_header">
20289            <th class="th_details" colspan="6">Details</th>
20290          </tr>
20291          <tr class="entry_cont">
20292            <td class="entry_details" colspan="6">
20293              <p>Optional subset of the <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> that contains
20294similar tuples listed as
20295(i.<wbr/>e.<wbr/> width,<wbr/> height,<wbr/> format,<wbr/> output/<wbr/>input stream,<wbr/> usecase bit field).<wbr/>
20296Camera devices will be able to suggest particular stream configurations which are
20297power and performance efficient for specific use cases.<wbr/> For more information about
20298retrieving the suggestions see
20299<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getRecommendedStreamConfigurationMap">CameraCharacteristics#getRecommendedStreamConfigurationMap</a>.<wbr/></p>
20300            </td>
20301          </tr>
20302
20303          <tr class="entries_header">
20304            <th class="th_details" colspan="6">HAL Implementation Details</th>
20305          </tr>
20306          <tr class="entry_cont">
20307            <td class="entry_details" colspan="6">
20308              <p>There are some requirements that need to be considered regarding the usecases and the
20309suggested configurations:</p>
20310<ul>
20311<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
20312stream configurations must be present for all mandatory usecases PREVIEW,<wbr/>
20313SNAPSHOT,<wbr/> RECORD,<wbr/> VIDEO_<wbr/>SNAPSHOT.<wbr/> ZSL and RAW are
20314required depending on device capabilities see <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></li>
20315<li>Non-existing usecases and non-vendor usecases within the range
20316(RAW : VENDOR_<wbr/>START] are prohibited as well as stream configurations not
20317present in the exhaustive <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> list.<wbr/></li>
20318</ul>
20319<p>For example,<wbr/> in case the camera device supports only 4K and 1080p and both resolutions are
20320recommended for the mandatory usecases except preview which can run efficiently only
20321on 1080p.<wbr/> The array may look like this:</p>
20322<p>[3840,<wbr/> 2160,<wbr/> HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>IMPLEMENTATION_<wbr/>DEFINED,<wbr/>
20323 ANDROID_<wbr/>SCALER_<wbr/>AVAILABLE_<wbr/>STREAM_<wbr/>CONFIGURATIONS_<wbr/>OUTPUT,<wbr/>
20324 (1&lt;&lt; ANDROID_<wbr/>SCALER_<wbr/>AVAILABLE_<wbr/>RECOMMENDED_<wbr/>STREAM_<wbr/>CONFIGURATIONS_<wbr/>RECORD |<wbr/>
20325 1&lt;&lt; ANDROID_<wbr/>SCALER_<wbr/>AVAILABLE_<wbr/>RECOMMENDED_<wbr/>STREAM_<wbr/>CONFIGURATIONS_<wbr/>SNAPSHOT |<wbr/>
20326 1&lt;&lt; ANDROID_<wbr/>SCALER_<wbr/>AVAILABLE_<wbr/>RECOMMENDED_<wbr/>STREAM_<wbr/>CONFIGURATIONS_<wbr/>VIDEO_<wbr/>SNAPSHOT),<wbr/></p>
20327<p>1920,<wbr/> 1080,<wbr/> HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>IMPLEMENTATION_<wbr/>DEFINED,<wbr/>
20328 ANDROID_<wbr/>SCALER_<wbr/>AVAILABLE_<wbr/>STREAM_<wbr/>CONFIGURATIONS_<wbr/>OUTPUT,<wbr/>
20329 (1&lt;&lt; ANDROID_<wbr/>SCALER_<wbr/>AVAILABLE_<wbr/>RECOMMENDED_<wbr/>STREAM_<wbr/>CONFIGURATIONS_<wbr/>PREVIEW |<wbr/>
20330 1&lt;&lt; ANDROID_<wbr/>SCALER_<wbr/>AVAILABLE_<wbr/>RECOMMENDED_<wbr/>STREAM_<wbr/>CONFIGURATIONS_<wbr/>RECORD |<wbr/>
20331 1&lt;&lt; ANDROID_<wbr/>SCALER_<wbr/>AVAILABLE_<wbr/>RECOMMENDED_<wbr/>STREAM_<wbr/>CONFIGURATIONS_<wbr/>SNAPSHOT |<wbr/>
20332 1&lt;&lt; ANDROID_<wbr/>SCALER_<wbr/>AVAILABLE_<wbr/>RECOMMENDED_<wbr/>STREAM_<wbr/>CONFIGURATIONS_<wbr/>VIDEO_<wbr/>SNAPSHOT)]</p>
20333            </td>
20334          </tr>
20335
20336          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20337           <!-- end of entry -->
20338
20339
20340          <tr class="entry" id="static_android.scaler.availableRecommendedInputOutputFormatsMap">
20341            <td class="entry_name
20342             " rowspan="5">
20343              android.<wbr/>scaler.<wbr/>available<wbr/>Recommended<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map
20344            </td>
20345            <td class="entry_type">
20346                <span class="entry_type_name">int32</span>
20347
20348              <span class="entry_type_visibility"> [ndk_public as reprocessFormatsMap]</span>
20349
20350
20351
20352
20353
20354
20355            </td> <!-- entry_type -->
20356
20357            <td class="entry_description">
20358              <p>Recommended mappings of image formats that are supported by this
20359camera device for input streams,<wbr/> to their corresponding output formats.<wbr/></p>
20360            </td>
20361
20362            <td class="entry_units">
20363            </td>
20364
20365            <td class="entry_range">
20366            </td>
20367
20368            <td class="entry_hal_version">
20369              <p>3.<wbr/>4</p>
20370            </td>
20371
20372            <td class="entry_tags">
20373              <ul class="entry_tags">
20374                  <li><a href="#tag_REPROC">REPROC</a></li>
20375              </ul>
20376            </td>
20377
20378          </tr>
20379          <tr class="entries_header">
20380            <th class="th_details" colspan="6">Details</th>
20381          </tr>
20382          <tr class="entry_cont">
20383            <td class="entry_details" colspan="6">
20384              <p>This is a recommended subset of the complete list of mappings found in
20385<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/>
20386The list however doesn't need to contain all available and supported mappings.<wbr/> Instead of
20387this developers must list only recommended and efficient entries.<wbr/>
20388If set,<wbr/> the information will be available in the ZERO_<wbr/>SHUTTER_<wbr/>LAG recommended stream
20389configuration see
20390<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getRecommendedStreamConfigurationMap">CameraCharacteristics#getRecommendedStreamConfigurationMap</a>.<wbr/></p>
20391            </td>
20392          </tr>
20393
20394          <tr class="entries_header">
20395            <th class="th_details" colspan="6">HAL Implementation Details</th>
20396          </tr>
20397          <tr class="entry_cont">
20398            <td class="entry_details" colspan="6">
20399              <p>For a code sample of the required data encoding please check
20400<a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a>.<wbr/></p>
20401            </td>
20402          </tr>
20403
20404          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20405           <!-- end of entry -->
20406
20407
20408          <tr class="entry" id="static_android.scaler.mandatoryStreamCombinations">
20409            <td class="entry_name
20410             " rowspan="5">
20411              android.<wbr/>scaler.<wbr/>mandatory<wbr/>Stream<wbr/>Combinations
20412            </td>
20413            <td class="entry_type">
20414                <span class="entry_type_name">int32</span>
20415                <span class="entry_type_container">x</span>
20416
20417                <span class="entry_type_array">
20418                  n
20419                </span>
20420              <span class="entry_type_visibility"> [java_public as mandatoryStreamCombination]</span>
20421
20422              <span class="entry_type_synthetic">[synthetic] </span>
20423
20424              <span class="entry_type_hwlevel">[limited] </span>
20425
20426
20427
20428
20429            </td> <!-- entry_type -->
20430
20431            <td class="entry_description">
20432              <p>An array of mandatory stream combinations generated according to the camera device
20433<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>
20434and <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/>
20435This is an app-readable conversion of the mandatory stream combination
20436<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">tables</a>.<wbr/></p>
20437            </td>
20438
20439            <td class="entry_units">
20440            </td>
20441
20442            <td class="entry_range">
20443            </td>
20444
20445            <td class="entry_hal_version">
20446              <p>3.<wbr/>2</p>
20447            </td>
20448
20449            <td class="entry_tags">
20450            </td>
20451
20452          </tr>
20453          <tr class="entries_header">
20454            <th class="th_details" colspan="6">Details</th>
20455          </tr>
20456          <tr class="entry_cont">
20457            <td class="entry_details" colspan="6">
20458              <p>The array of
20459<a href="https://developer.android.com/reference/android/hardware/camera2/params/MandatoryStreamCombination.html">combinations</a> is
20460generated according to the documented
20461<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">guideline</a> based on
20462specific device level and capabilities.<wbr/>
20463Clients can use the array as a quick reference to find an appropriate camera stream
20464combination.<wbr/>
20465As per documentation,<wbr/> the stream combinations with given PREVIEW,<wbr/> RECORD and
20466MAXIMUM resolutions and anything smaller from the list given by
20467<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputSizes">StreamConfigurationMap#getOutputSizes</a> are
20468guaranteed to work.<wbr/>
20469For a physical camera not independently exposed in
20470<a href="https://developer.android.com/reference/android/hardware/camera2/CameraManager.html#getCameraIdList">CameraManager#getCameraIdList</a>,<wbr/> the mandatory stream
20471combinations for that physical camera Id are also generated,<wbr/> so that the application can
20472configure them as physical streams via the logical camera.<wbr/>
20473The mandatory stream combination array will be {@code null} in case the device is not
20474backward compatible.<wbr/></p>
20475            </td>
20476          </tr>
20477
20478          <tr class="entries_header">
20479            <th class="th_details" colspan="6">HAL Implementation Details</th>
20480          </tr>
20481          <tr class="entry_cont">
20482            <td class="entry_details" colspan="6">
20483              <p>Do not set this property directly
20484(it is synthetic and will not be available at the HAL layer).<wbr/></p>
20485            </td>
20486          </tr>
20487
20488          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20489           <!-- end of entry -->
20490
20491
20492
20493      <!-- end of kind -->
20494      </tbody>
20495      <tr><td colspan="7" class="kind">dynamic</td></tr>
20496
20497      <thead class="entries_header">
20498        <tr>
20499          <th class="th_name">Property Name</th>
20500          <th class="th_type">Type</th>
20501          <th class="th_description">Description</th>
20502          <th class="th_units">Units</th>
20503          <th class="th_range">Range</th>
20504          <th class="th_hal_version">Initial HIDL HAL version</th>
20505          <th class="th_tags">Tags</th>
20506        </tr>
20507      </thead>
20508
20509      <tbody>
20510
20511
20512
20513
20514
20515
20516
20517
20518
20519
20520          <tr class="entry" id="dynamic_android.scaler.cropRegion">
20521            <td class="entry_name
20522             " rowspan="5">
20523              android.<wbr/>scaler.<wbr/>crop<wbr/>Region
20524            </td>
20525            <td class="entry_type">
20526                <span class="entry_type_name">int32</span>
20527                <span class="entry_type_container">x</span>
20528
20529                <span class="entry_type_array">
20530                  4
20531                </span>
20532              <span class="entry_type_visibility"> [public as rectangle]</span>
20533
20534
20535              <span class="entry_type_hwlevel">[legacy] </span>
20536
20537
20538
20539
20540            </td> <!-- entry_type -->
20541
20542            <td class="entry_description">
20543              <p>The desired region of the sensor to read out for this capture.<wbr/></p>
20544            </td>
20545
20546            <td class="entry_units">
20547              Pixel coordinates relative to
20548          android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size or
20549          android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size depending on distortion correction
20550          capability and mode
20551            </td>
20552
20553            <td class="entry_range">
20554            </td>
20555
20556            <td class="entry_hal_version">
20557              <p>3.<wbr/>2</p>
20558            </td>
20559
20560            <td class="entry_tags">
20561              <ul class="entry_tags">
20562                  <li><a href="#tag_BC">BC</a></li>
20563              </ul>
20564            </td>
20565
20566          </tr>
20567          <tr class="entries_header">
20568            <th class="th_details" colspan="6">Details</th>
20569          </tr>
20570          <tr class="entry_cont">
20571            <td class="entry_details" colspan="6">
20572              <p>This control can be used to implement digital zoom.<wbr/></p>
20573<p>For devices not supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate
20574system 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
20575the top-left pixel of the active array.<wbr/></p>
20576<p>For devices supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate
20577system depends on the mode being set.<wbr/>
20578When the distortion correction mode is OFF,<wbr/> the coordinate system follows
20579<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
20580<code>(0,<wbr/> 0)</code> being the top-left pixel of the pre-correction active array.<wbr/>
20581When the distortion correction mode is not OFF,<wbr/> the coordinate system follows
20582<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> with
20583<code>(0,<wbr/> 0)</code> being the top-left pixel of the active array.<wbr/></p>
20584<p>Output streams use this rectangle to produce their output,<wbr/>
20585cropping to a smaller region if necessary to maintain the
20586stream's aspect ratio,<wbr/> then scaling the sensor input to
20587match the output's configured resolution.<wbr/></p>
20588<p>The crop region is applied after the RAW to other color
20589space (e.<wbr/>g.<wbr/> YUV) conversion.<wbr/> Since raw streams
20590(e.<wbr/>g.<wbr/> RAW16) don't have the conversion stage,<wbr/> they are not
20591croppable.<wbr/> The crop region will be ignored by raw streams.<wbr/></p>
20592<p>For non-raw streams,<wbr/> any additional per-stream cropping will
20593be done to maximize the final pixel area of the stream.<wbr/></p>
20594<p>For example,<wbr/> if the crop region is set to a 4:3 aspect
20595ratio,<wbr/> then 4:3 streams will use the exact crop
20596region.<wbr/> 16:9 streams will further crop vertically
20597(letterbox).<wbr/></p>
20598<p>Conversely,<wbr/> if the crop region is set to a 16:9,<wbr/> then 4:3
20599outputs will crop horizontally (pillarbox),<wbr/> and 16:9
20600streams will match exactly.<wbr/> These additional crops will
20601be centered within the crop region.<wbr/></p>
20602<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
20603of the crop region cannot be set to be smaller than
20604<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
20605<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>
20606<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
20607and height of the crop region cannot be set to be smaller than
20608<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>
20609and
20610<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/>
20611respectively.<wbr/></p>
20612<p>The camera device may adjust the crop region to account
20613for rounding and other hardware requirements; the final
20614crop region used will be included in the output capture
20615result.<wbr/></p>
20616            </td>
20617          </tr>
20618
20619          <tr class="entries_header">
20620            <th class="th_details" colspan="6">HAL Implementation Details</th>
20621          </tr>
20622          <tr class="entry_cont">
20623            <td class="entry_details" colspan="6">
20624              <p>The output streams must maintain square pixels at all
20625times,<wbr/> no matter what the relative aspect ratios of the
20626crop region and the stream are.<wbr/>  Negative values for
20627corner are allowed for raw output if full pixel array is
20628larger than active pixel array.<wbr/> Width and height may be
20629rounded to nearest larger supportable width,<wbr/> especially
20630for raw output,<wbr/> where only a few fixed scales may be
20631possible.<wbr/></p>
20632<p>For a set of output streams configured,<wbr/> if the sensor output is cropped to a smaller
20633size than pre-correction active array size,<wbr/> the HAL need follow below cropping rules:</p>
20634<ul>
20635<li>
20636<p>The HAL need handle the cropRegion as if the sensor crop size is the effective
20637pre-correction active array size.<wbr/> More specifically,<wbr/> the HAL must transform the request
20638cropRegion from <a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a> to the sensor cropped
20639pixel area size in this way:</p>
20640<ol>
20641<li>Translate the requested cropRegion w.<wbr/>r.<wbr/>t.,<wbr/> the left top corner of the sensor
20642cropped pixel area by (tx,<wbr/> ty),<wbr/>
20643where <code>ty = sensorCrop.<wbr/>top * (sensorCrop.<wbr/>height /<wbr/> preCorrectionActiveArraySize.<wbr/>height)</code>
20644and <code>tx = sensorCrop.<wbr/>left * (sensorCrop.<wbr/>width /<wbr/> preCorrectionActiveArraySize.<wbr/>width)</code>.<wbr/>
20645The (sensorCrop.<wbr/>top,<wbr/> sensorCrop.<wbr/>left) is the coordinate based off the
20646<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></li>
20647<li>Scale the width and height of requested cropRegion with scaling factor of
20648sensor<wbr/>Crop.<wbr/>width/<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size.<wbr/>width and sensor<wbr/>Crop.<wbr/>height/<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size.<wbr/>height
20649respectively.<wbr/>
20650Once this new cropRegion is calculated,<wbr/> the HAL must use this region to crop the image
20651with regard to the sensor crop size (effective pre-correction active array size).<wbr/> The
20652HAL still need follow the general cropping rule for this new cropRegion and effective
20653pre-correction active array size.<wbr/></li>
20654</ol>
20655</li>
20656<li>
20657<p>The HAL must report the cropRegion with regard 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/>
20658The HAL need convert the new cropRegion generated above w.<wbr/>r.<wbr/>t.,<wbr/> full pre-correction
20659active array size.<wbr/> The reported cropRegion may be slightly different with the requested
20660cropRegion since the HAL may adjust the crop region to account for rounding,<wbr/> conversion
20661error,<wbr/> or other hardware limitations.<wbr/></p>
20662</li>
20663</ul>
20664<p>HAL2.<wbr/>x uses only (x,<wbr/> y,<wbr/> width)</p>
20665            </td>
20666          </tr>
20667
20668          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20669           <!-- end of entry -->
20670
20671
20672
20673      <!-- end of kind -->
20674      </tbody>
20675
20676  <!-- end of section -->
20677  <tr><td colspan="7" id="section_sensor" class="section">sensor</td></tr>
20678
20679
20680      <tr><td colspan="7" class="kind">controls</td></tr>
20681
20682      <thead class="entries_header">
20683        <tr>
20684          <th class="th_name">Property Name</th>
20685          <th class="th_type">Type</th>
20686          <th class="th_description">Description</th>
20687          <th class="th_units">Units</th>
20688          <th class="th_range">Range</th>
20689          <th class="th_hal_version">Initial HIDL HAL version</th>
20690          <th class="th_tags">Tags</th>
20691        </tr>
20692      </thead>
20693
20694      <tbody>
20695
20696
20697
20698
20699
20700
20701
20702
20703
20704
20705          <tr class="entry" id="controls_android.sensor.exposureTime">
20706            <td class="entry_name
20707             " rowspan="3">
20708              android.<wbr/>sensor.<wbr/>exposure<wbr/>Time
20709            </td>
20710            <td class="entry_type">
20711                <span class="entry_type_name">int64</span>
20712
20713              <span class="entry_type_visibility"> [public]</span>
20714
20715
20716              <span class="entry_type_hwlevel">[full] </span>
20717
20718
20719
20720
20721            </td> <!-- entry_type -->
20722
20723            <td class="entry_description">
20724              <p>Duration each pixel is exposed to
20725light.<wbr/></p>
20726            </td>
20727
20728            <td class="entry_units">
20729              Nanoseconds
20730            </td>
20731
20732            <td class="entry_range">
20733              <p><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></p>
20734            </td>
20735
20736            <td class="entry_hal_version">
20737              <p>3.<wbr/>2</p>
20738            </td>
20739
20740            <td class="entry_tags">
20741              <ul class="entry_tags">
20742                  <li><a href="#tag_V1">V1</a></li>
20743              </ul>
20744            </td>
20745
20746          </tr>
20747          <tr class="entries_header">
20748            <th class="th_details" colspan="6">Details</th>
20749          </tr>
20750          <tr class="entry_cont">
20751            <td class="entry_details" colspan="6">
20752              <p>If the sensor can't expose this exact duration,<wbr/> it will shorten the
20753duration exposed to the nearest possible value (rather than expose longer).<wbr/>
20754The final exposure time used will be available in the output capture result.<wbr/></p>
20755<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
20756OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
20757            </td>
20758          </tr>
20759
20760
20761          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20762           <!-- end of entry -->
20763
20764
20765          <tr class="entry" id="controls_android.sensor.frameDuration">
20766            <td class="entry_name
20767             " rowspan="5">
20768              android.<wbr/>sensor.<wbr/>frame<wbr/>Duration
20769            </td>
20770            <td class="entry_type">
20771                <span class="entry_type_name">int64</span>
20772
20773              <span class="entry_type_visibility"> [public]</span>
20774
20775
20776              <span class="entry_type_hwlevel">[full] </span>
20777
20778
20779
20780
20781            </td> <!-- entry_type -->
20782
20783            <td class="entry_description">
20784              <p>Duration from start of frame exposure to
20785start of next frame exposure.<wbr/></p>
20786            </td>
20787
20788            <td class="entry_units">
20789              Nanoseconds
20790            </td>
20791
20792            <td class="entry_range">
20793              <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/>
20794The duration is capped to <code>max(duration,<wbr/> exposureTime + overhead)</code>.<wbr/></p>
20795            </td>
20796
20797            <td class="entry_hal_version">
20798              <p>3.<wbr/>2</p>
20799            </td>
20800
20801            <td class="entry_tags">
20802              <ul class="entry_tags">
20803                  <li><a href="#tag_V1">V1</a></li>
20804              </ul>
20805            </td>
20806
20807          </tr>
20808          <tr class="entries_header">
20809            <th class="th_details" colspan="6">Details</th>
20810          </tr>
20811          <tr class="entry_cont">
20812            <td class="entry_details" colspan="6">
20813              <p>The maximum frame rate that can be supported by a camera subsystem is
20814a function of many factors:</p>
20815<ul>
20816<li>Requested resolutions of output image streams</li>
20817<li>Availability of binning /<wbr/> skipping modes on the imager</li>
20818<li>The bandwidth of the imager interface</li>
20819<li>The bandwidth of the various ISP processing blocks</li>
20820</ul>
20821<p>Since these factors can vary greatly between different ISPs and
20822sensors,<wbr/> the camera abstraction tries to represent the bandwidth
20823restrictions with as simple a model as possible.<wbr/></p>
20824<p>The model presented has the following characteristics:</p>
20825<ul>
20826<li>The image sensor is always configured to output the smallest
20827resolution possible given the application's requested output stream
20828sizes.<wbr/>  The smallest resolution is defined as being at least as large
20829as the largest requested output stream size; the camera pipeline must
20830never digitally upsample sensor data when the crop region covers the
20831whole sensor.<wbr/> In general,<wbr/> this means that if only small output stream
20832resolutions are configured,<wbr/> the sensor can provide a higher frame
20833rate.<wbr/></li>
20834<li>Since any request may use any or all the currently configured
20835output streams,<wbr/> the sensor and ISP must be configured to support
20836scaling a single capture to all the streams at the same time.<wbr/>  This
20837means the camera pipeline must be ready to produce the largest
20838requested output size without any delay.<wbr/>  Therefore,<wbr/> the overall
20839frame rate of a given configured stream set is governed only by the
20840largest requested stream resolution.<wbr/></li>
20841<li>Using more than one output stream in a request does not affect the
20842frame duration.<wbr/></li>
20843<li>Certain format-streams may need to do additional background processing
20844before data is consumed/<wbr/>produced by that stream.<wbr/> These processors
20845can run concurrently to the rest of the camera pipeline,<wbr/> but
20846cannot process more than 1 capture at a time.<wbr/></li>
20847</ul>
20848<p>The necessary information for the application,<wbr/> given the model above,<wbr/> is provided via
20849<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/>
20850These are used to determine the maximum frame rate /<wbr/> minimum frame duration that is
20851possible for a given stream configuration.<wbr/></p>
20852<p>Specifically,<wbr/> the application can use the following rules to
20853determine the minimum frame duration it can request from the camera
20854device:</p>
20855<ol>
20856<li>Let the set of currently configured input/<wbr/>output streams be called <code>S</code>.<wbr/></li>
20857<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>
20858(with its respective size/<wbr/>format).<wbr/> Let this set of frame durations be called <code>F</code>.<wbr/></li>
20859<li>For any given request <code>R</code>,<wbr/> the minimum frame duration allowed for <code>R</code> is the maximum
20860out 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>
20861</ol>
20862<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>
20863using its respective size/<wbr/>format),<wbr/> then the frame duration in <code>F</code> determines the steady
20864state frame rate that the application will get if it uses <code>R</code> as a repeating request.<wbr/> Let
20865this special kind of request be called <code>Rsimple</code>.<wbr/></p>
20866<p>A repeating request <code>Rsimple</code> can be <em>occasionally</em> interleaved by a single capture of a
20867new request <code>Rstall</code> (which has at least one in-use stream with a non-0 stall time) and if
20868<code>Rstall</code> has the same minimum frame duration this will not cause a frame rate loss if all
20869buffers from the previous <code>Rstall</code> have already been delivered.<wbr/></p>
20870<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>
20871<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
20872OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
20873            </td>
20874          </tr>
20875
20876          <tr class="entries_header">
20877            <th class="th_details" colspan="6">HAL Implementation Details</th>
20878          </tr>
20879          <tr class="entry_cont">
20880            <td class="entry_details" colspan="6">
20881              <p>For more details about stalling,<wbr/> see
20882<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>.<wbr/></p>
20883            </td>
20884          </tr>
20885
20886          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20887           <!-- end of entry -->
20888
20889
20890          <tr class="entry" id="controls_android.sensor.sensitivity">
20891            <td class="entry_name
20892             " rowspan="5">
20893              android.<wbr/>sensor.<wbr/>sensitivity
20894            </td>
20895            <td class="entry_type">
20896                <span class="entry_type_name">int32</span>
20897
20898              <span class="entry_type_visibility"> [public]</span>
20899
20900
20901              <span class="entry_type_hwlevel">[full] </span>
20902
20903
20904
20905
20906            </td> <!-- entry_type -->
20907
20908            <td class="entry_description">
20909              <p>The amount of gain applied to sensor data
20910before processing.<wbr/></p>
20911            </td>
20912
20913            <td class="entry_units">
20914              ISO arithmetic units
20915            </td>
20916
20917            <td class="entry_range">
20918              <p><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></p>
20919            </td>
20920
20921            <td class="entry_hal_version">
20922              <p>3.<wbr/>2</p>
20923            </td>
20924
20925            <td class="entry_tags">
20926              <ul class="entry_tags">
20927                  <li><a href="#tag_V1">V1</a></li>
20928              </ul>
20929            </td>
20930
20931          </tr>
20932          <tr class="entries_header">
20933            <th class="th_details" colspan="6">Details</th>
20934          </tr>
20935          <tr class="entry_cont">
20936            <td class="entry_details" colspan="6">
20937              <p>The sensitivity is the standard ISO sensitivity value,<wbr/>
20938as defined in ISO 12232:2006.<wbr/></p>
20939<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
20940if if it less than <a href="#static_android.sensor.maxAnalogSensitivity">android.<wbr/>sensor.<wbr/>max<wbr/>Analog<wbr/>Sensitivity</a>,<wbr/> the camera device
20941is guaranteed to use only analog amplification for applying the gain.<wbr/></p>
20942<p>If the camera device cannot apply the exact sensitivity
20943requested,<wbr/> it will reduce the gain to the nearest supported
20944value.<wbr/> The final sensitivity used will be available in the
20945output capture result.<wbr/></p>
20946<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
20947OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
20948            </td>
20949          </tr>
20950
20951          <tr class="entries_header">
20952            <th class="th_details" colspan="6">HAL Implementation Details</th>
20953          </tr>
20954          <tr class="entry_cont">
20955            <td class="entry_details" colspan="6">
20956              <p>ISO 12232:2006 REI method is acceptable.<wbr/></p>
20957            </td>
20958          </tr>
20959
20960          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20961           <!-- end of entry -->
20962
20963
20964          <tr class="entry" id="controls_android.sensor.testPatternData">
20965            <td class="entry_name
20966             " rowspan="5">
20967              android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data
20968            </td>
20969            <td class="entry_type">
20970                <span class="entry_type_name">int32</span>
20971                <span class="entry_type_container">x</span>
20972
20973                <span class="entry_type_array">
20974                  4
20975                </span>
20976              <span class="entry_type_visibility"> [public]</span>
20977
20978
20979
20980
20981
20982
20983            </td> <!-- entry_type -->
20984
20985            <td class="entry_description">
20986              <p>A pixel <code>[R,<wbr/> G_<wbr/>even,<wbr/> G_<wbr/>odd,<wbr/> B]</code> that supplies the test pattern
20987when <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a> is SOLID_<wbr/>COLOR.<wbr/></p>
20988            </td>
20989
20990            <td class="entry_units">
20991            </td>
20992
20993            <td class="entry_range">
20994            </td>
20995
20996            <td class="entry_hal_version">
20997              <p>3.<wbr/>2</p>
20998            </td>
20999
21000            <td class="entry_tags">
21001            </td>
21002
21003          </tr>
21004          <tr class="entries_header">
21005            <th class="th_details" colspan="6">Details</th>
21006          </tr>
21007          <tr class="entry_cont">
21008            <td class="entry_details" colspan="6">
21009              <p>Each color channel is treated as an unsigned 32-bit integer.<wbr/>
21010The camera device then uses the most significant X bits
21011that correspond to how many bits are in its Bayer raw sensor
21012output.<wbr/></p>
21013<p>For example,<wbr/> a sensor with RAW10 Bayer output would use the
2101410 most significant bits from each color channel.<wbr/></p>
21015            </td>
21016          </tr>
21017
21018          <tr class="entries_header">
21019            <th class="th_details" colspan="6">HAL Implementation Details</th>
21020          </tr>
21021          <tr class="entry_cont">
21022            <td class="entry_details" colspan="6">
21023
21024            </td>
21025          </tr>
21026
21027          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21028           <!-- end of entry -->
21029
21030
21031          <tr class="entry" id="controls_android.sensor.testPatternMode">
21032            <td class="entry_name
21033             " rowspan="5">
21034              android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode
21035            </td>
21036            <td class="entry_type">
21037                <span class="entry_type_name entry_type_name_enum">int32</span>
21038
21039              <span class="entry_type_visibility"> [public]</span>
21040
21041
21042
21043
21044
21045                <ul class="entry_type_enum">
21046                  <li>
21047                    <span class="entry_type_enum_name">OFF (v3.2)</span>
21048                    <span class="entry_type_enum_notes"><p>No test pattern mode is used,<wbr/> and the camera
21049device returns captures from the image sensor.<wbr/></p>
21050<p>This is the default if the key is not set.<wbr/></p></span>
21051                  </li>
21052                  <li>
21053                    <span class="entry_type_enum_name">SOLID_COLOR (v3.2)</span>
21054                    <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
21055respective color channel provided in
21056<a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a>.<wbr/></p>
21057<p>For example:</p>
21058<pre><code>android.<wbr/>testPatternData = [0,<wbr/> 0xFFFFFFFF,<wbr/> 0xFFFFFFFF,<wbr/> 0]
21059</code></pre>
21060<p>All green pixels are 100% green.<wbr/> All red/<wbr/>blue pixels are black.<wbr/></p>
21061<pre><code>android.<wbr/>testPatternData = [0xFFFFFFFF,<wbr/> 0,<wbr/> 0xFFFFFFFF,<wbr/> 0]
21062</code></pre>
21063<p>All red pixels are 100% red.<wbr/> Only the odd green pixels
21064are 100% green.<wbr/> All blue pixels are 100% black.<wbr/></p></span>
21065                  </li>
21066                  <li>
21067                    <span class="entry_type_enum_name">COLOR_BARS (v3.2)</span>
21068                    <span class="entry_type_enum_notes"><p>All pixel data is replaced with an 8-bar color pattern.<wbr/></p>
21069<p>The vertical bars (left-to-right) are as follows:</p>
21070<ul>
21071<li>100% white</li>
21072<li>yellow</li>
21073<li>cyan</li>
21074<li>green</li>
21075<li>magenta</li>
21076<li>red</li>
21077<li>blue</li>
21078<li>black</li>
21079</ul>
21080<p>In general the image would look like the following:</p>
21081<pre><code>W Y C G M R B K
21082W Y C G M R B K
21083W Y C G M R B K
21084W Y C G M R B K
21085W Y C G M R B K
21086.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
21087.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
21088.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
21089
21090(B = Blue,<wbr/> K = Black)
21091</code></pre>
21092<p>Each bar should take up 1/<wbr/>8 of the sensor pixel array width.<wbr/>
21093When this is not possible,<wbr/> the bar size should be rounded
21094down to the nearest integer and the pattern can repeat
21095on the right side.<wbr/></p>
21096<p>Each bar's height must always take up the full sensor
21097pixel array height.<wbr/></p>
21098<p>Each pixel in this test pattern must be set to either
210990% intensity or 100% intensity.<wbr/></p></span>
21100                  </li>
21101                  <li>
21102                    <span class="entry_type_enum_name">COLOR_BARS_FADE_TO_GRAY (v3.2)</span>
21103                    <span class="entry_type_enum_notes"><p>The test pattern is similar to COLOR_<wbr/>BARS,<wbr/> except that
21104each bar should start at its specified color at the top,<wbr/>
21105and fade to gray at the bottom.<wbr/></p>
21106<p>Furthermore each bar is further subdivided into a left and
21107right half.<wbr/> The left half should have a smooth gradient,<wbr/>
21108and the right half should have a quantized gradient.<wbr/></p>
21109<p>In particular,<wbr/> the right half's should consist of blocks of the
21110same color for 1/<wbr/>16th active sensor pixel array width.<wbr/></p>
21111<p>The least significant bits in the quantized gradient should
21112be copied from the most significant bits of the smooth gradient.<wbr/></p>
21113<p>The height of each bar should always be a multiple of 128.<wbr/>
21114When this is not the case,<wbr/> the pattern should repeat at the bottom
21115of the image.<wbr/></p></span>
21116                  </li>
21117                  <li>
21118                    <span class="entry_type_enum_name">PN9 (v3.2)</span>
21119                    <span class="entry_type_enum_notes"><p>All pixel data is replaced by a pseudo-random sequence
21120generated from a PN9 512-bit sequence (typically implemented
21121in hardware with a linear feedback shift register).<wbr/></p>
21122<p>The generator should be reset at the beginning of each frame,<wbr/>
21123and thus each subsequent raw frame with this test pattern should
21124be exactly the same as the last.<wbr/></p></span>
21125                  </li>
21126                  <li>
21127                    <span class="entry_type_enum_name">CUSTOM1 (v3.2)</span>
21128                    <span class="entry_type_enum_value">256</span>
21129                    <span class="entry_type_enum_notes"><p>The first custom test pattern.<wbr/> All custom patterns that are
21130available only on this camera device are at least this numeric
21131value.<wbr/></p>
21132<p>All of the custom test patterns will be static
21133(that is the raw image must not vary from frame to frame).<wbr/></p></span>
21134                  </li>
21135                </ul>
21136
21137            </td> <!-- entry_type -->
21138
21139            <td class="entry_description">
21140              <p>When enabled,<wbr/> the sensor sends a test pattern instead of
21141doing a real exposure from the camera.<wbr/></p>
21142            </td>
21143
21144            <td class="entry_units">
21145            </td>
21146
21147            <td class="entry_range">
21148              <p><a href="#static_android.sensor.availableTestPatternModes">android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes</a></p>
21149            </td>
21150
21151            <td class="entry_hal_version">
21152              <p>3.<wbr/>2</p>
21153            </td>
21154
21155            <td class="entry_tags">
21156            </td>
21157
21158          </tr>
21159          <tr class="entries_header">
21160            <th class="th_details" colspan="6">Details</th>
21161          </tr>
21162          <tr class="entry_cont">
21163            <td class="entry_details" colspan="6">
21164              <p>When a test pattern is enabled,<wbr/> all manual sensor controls specified
21165by android.<wbr/>sensor.<wbr/>* will be ignored.<wbr/> All other controls should
21166work as normal.<wbr/></p>
21167<p>For example,<wbr/> if manual flash is enabled,<wbr/> flash firing should still
21168occur (and that the test pattern remain unmodified,<wbr/> since the flash
21169would not actually affect it).<wbr/></p>
21170<p>Defaults to OFF.<wbr/></p>
21171            </td>
21172          </tr>
21173
21174          <tr class="entries_header">
21175            <th class="th_details" colspan="6">HAL Implementation Details</th>
21176          </tr>
21177          <tr class="entry_cont">
21178            <td class="entry_details" colspan="6">
21179              <p>All test patterns are specified in the Bayer domain.<wbr/></p>
21180<p>The HAL may choose to substitute test patterns from the sensor
21181with test patterns from on-device memory.<wbr/> In that case,<wbr/> it should be
21182indistinguishable to the ISP whether the data came from the
21183sensor interconnect bus (such as CSI2) or memory.<wbr/></p>
21184            </td>
21185          </tr>
21186
21187          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21188           <!-- end of entry -->
21189
21190
21191
21192      <!-- end of kind -->
21193      </tbody>
21194      <tr><td colspan="7" class="kind">static</td></tr>
21195
21196      <thead class="entries_header">
21197        <tr>
21198          <th class="th_name">Property Name</th>
21199          <th class="th_type">Type</th>
21200          <th class="th_description">Description</th>
21201          <th class="th_units">Units</th>
21202          <th class="th_range">Range</th>
21203          <th class="th_hal_version">Initial HIDL HAL version</th>
21204          <th class="th_tags">Tags</th>
21205        </tr>
21206      </thead>
21207
21208      <tbody>
21209
21210
21211
21212
21213
21214
21215
21216
21217
21218
21219
21220
21221          <tr class="entry" id="static_android.sensor.info.activeArraySize">
21222            <td class="entry_name
21223             " rowspan="5">
21224              android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
21225            </td>
21226            <td class="entry_type">
21227                <span class="entry_type_name">int32</span>
21228                <span class="entry_type_container">x</span>
21229
21230                <span class="entry_type_array">
21231                  4
21232                </span>
21233              <span class="entry_type_visibility"> [public as rectangle]</span>
21234
21235
21236              <span class="entry_type_hwlevel">[legacy] </span>
21237
21238
21239                <div class="entry_type_notes">Four ints defining the active pixel rectangle</div>
21240
21241
21242            </td> <!-- entry_type -->
21243
21244            <td class="entry_description">
21245              <p>The area of the image sensor which corresponds to active pixels after any geometric
21246distortion correction has been applied.<wbr/></p>
21247            </td>
21248
21249            <td class="entry_units">
21250              Pixel coordinates on the image sensor
21251            </td>
21252
21253            <td class="entry_range">
21254            </td>
21255
21256            <td class="entry_hal_version">
21257              <p>3.<wbr/>2</p>
21258            </td>
21259
21260            <td class="entry_tags">
21261              <ul class="entry_tags">
21262                  <li><a href="#tag_RAW">RAW</a></li>
21263              </ul>
21264            </td>
21265
21266          </tr>
21267          <tr class="entries_header">
21268            <th class="th_details" colspan="6">Details</th>
21269          </tr>
21270          <tr class="entry_cont">
21271            <td class="entry_details" colspan="6">
21272              <p>This is the rectangle representing the size of the active region of the sensor (i.<wbr/>e.<wbr/>
21273the region that actually receives light from the scene) after any geometric correction
21274has been applied,<wbr/> and should be treated as the maximum size in pixels of any of the
21275image output formats aside from the raw formats.<wbr/></p>
21276<p>This rectangle is defined relative to the full pixel array; (0,<wbr/>0) is the top-left of
21277the full pixel array,<wbr/> and the size of the full pixel array is given by
21278<a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
21279<p>The coordinate system for most other keys that list pixel coordinates,<wbr/> including
21280<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
21281this field,<wbr/> with <code>(0,<wbr/> 0)</code> being the top-left of this rectangle.<wbr/></p>
21282<p>The active array may be smaller than the full pixel array,<wbr/> since the full array may
21283include black calibration pixels or other inactive regions.<wbr/></p>
21284<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
21285array 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>
21286<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
21287be 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
21288pre-correction active array and active array accounts for scaling or cropping caused
21289by lens geometric distortion correction.<wbr/></p>
21290<p>In general,<wbr/> application should always refer to active array size for controls like
21291metering regions or crop region.<wbr/> Two exceptions are when the application is dealing with
21292RAW image buffers (RAW_<wbr/>SENSOR,<wbr/> RAW10,<wbr/> RAW12 etc),<wbr/> or when application explicitly set
21293<a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> to OFF.<wbr/> In these cases,<wbr/> application should refer
21294to <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>
21295            </td>
21296          </tr>
21297
21298          <tr class="entries_header">
21299            <th class="th_details" colspan="6">HAL Implementation Details</th>
21300          </tr>
21301          <tr class="entry_cont">
21302            <td class="entry_details" colspan="6">
21303              <p>This array contains <code>(xmin,<wbr/> ymin,<wbr/> width,<wbr/> height)</code>.<wbr/> The <code>(xmin,<wbr/> ymin)</code> must be
21304&gt;= <code>(0,<wbr/>0)</code>.<wbr/>
21305The <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>
21306            </td>
21307          </tr>
21308
21309          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21310           <!-- end of entry -->
21311
21312
21313          <tr class="entry" id="static_android.sensor.info.sensitivityRange">
21314            <td class="entry_name
21315             " rowspan="3">
21316              android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range
21317            </td>
21318            <td class="entry_type">
21319                <span class="entry_type_name">int32</span>
21320                <span class="entry_type_container">x</span>
21321
21322                <span class="entry_type_array">
21323                  2
21324                </span>
21325              <span class="entry_type_visibility"> [public as rangeInt]</span>
21326
21327
21328              <span class="entry_type_hwlevel">[full] </span>
21329
21330
21331                <div class="entry_type_notes">Range of supported sensitivities</div>
21332
21333
21334            </td> <!-- entry_type -->
21335
21336            <td class="entry_description">
21337              <p>Range of sensitivities for <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> supported by this
21338camera device.<wbr/></p>
21339            </td>
21340
21341            <td class="entry_units">
21342            </td>
21343
21344            <td class="entry_range">
21345              <p>Min &lt;= 100,<wbr/> Max &gt;= 800</p>
21346            </td>
21347
21348            <td class="entry_hal_version">
21349              <p>3.<wbr/>2</p>
21350            </td>
21351
21352            <td class="entry_tags">
21353              <ul class="entry_tags">
21354                  <li><a href="#tag_BC">BC</a></li>
21355                  <li><a href="#tag_V1">V1</a></li>
21356              </ul>
21357            </td>
21358
21359          </tr>
21360          <tr class="entries_header">
21361            <th class="th_details" colspan="6">Details</th>
21362          </tr>
21363          <tr class="entry_cont">
21364            <td class="entry_details" colspan="6">
21365              <p>The values are the standard ISO sensitivity values,<wbr/>
21366as defined in ISO 12232:2006.<wbr/></p>
21367            </td>
21368          </tr>
21369
21370
21371          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21372           <!-- end of entry -->
21373
21374
21375          <tr class="entry" id="static_android.sensor.info.colorFilterArrangement">
21376            <td class="entry_name
21377             " rowspan="3">
21378              android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement
21379            </td>
21380            <td class="entry_type">
21381                <span class="entry_type_name entry_type_name_enum">byte</span>
21382
21383              <span class="entry_type_visibility"> [public]</span>
21384
21385
21386              <span class="entry_type_hwlevel">[full] </span>
21387
21388
21389
21390                <ul class="entry_type_enum">
21391                  <li>
21392                    <span class="entry_type_enum_name">RGGB (v3.2)</span>
21393                  </li>
21394                  <li>
21395                    <span class="entry_type_enum_name">GRBG (v3.2)</span>
21396                  </li>
21397                  <li>
21398                    <span class="entry_type_enum_name">GBRG (v3.2)</span>
21399                  </li>
21400                  <li>
21401                    <span class="entry_type_enum_name">BGGR (v3.2)</span>
21402                  </li>
21403                  <li>
21404                    <span class="entry_type_enum_name">RGB (v3.2)</span>
21405                    <span class="entry_type_enum_notes"><p>Sensor is not Bayer; output has 3 16-bit
21406values for each pixel,<wbr/> instead of just 1 16-bit value
21407per pixel.<wbr/></p></span>
21408                  </li>
21409                  <li>
21410                    <span class="entry_type_enum_name">MONO (v3.4)</span>
21411                    <span class="entry_type_enum_notes"><p>Sensor doesn't have any Bayer color filter.<wbr/>
21412Such sensor captures visible light in monochrome.<wbr/> The exact weighting and
21413wavelengths captured is not specified,<wbr/> but generally only includes the visible
21414frequencies.<wbr/> This value implies a MONOCHROME camera.<wbr/></p></span>
21415                  </li>
21416                  <li>
21417                    <span class="entry_type_enum_name">NIR (v3.4)</span>
21418                    <span class="entry_type_enum_notes"><p>Sensor has a near infrared filter capturing light with wavelength between
21419roughly 750nm and 1400nm,<wbr/> and the same filter covers the whole sensor array.<wbr/> This
21420value implies a MONOCHROME camera.<wbr/></p></span>
21421                  </li>
21422                </ul>
21423
21424            </td> <!-- entry_type -->
21425
21426            <td class="entry_description">
21427              <p>The arrangement of color filters on sensor;
21428represents the colors in the top-left 2x2 section of
21429the sensor,<wbr/> in reading order,<wbr/> for a Bayer camera,<wbr/> or the
21430light spectrum it captures for MONOCHROME camera.<wbr/></p>
21431            </td>
21432
21433            <td class="entry_units">
21434            </td>
21435
21436            <td class="entry_range">
21437            </td>
21438
21439            <td class="entry_hal_version">
21440              <p>3.<wbr/>2</p>
21441            </td>
21442
21443            <td class="entry_tags">
21444              <ul class="entry_tags">
21445                  <li><a href="#tag_RAW">RAW</a></li>
21446              </ul>
21447            </td>
21448
21449          </tr>
21450
21451          <tr class="entries_header">
21452            <th class="th_details" colspan="6">HAL Implementation Details</th>
21453          </tr>
21454          <tr class="entry_cont">
21455            <td class="entry_details" colspan="6">
21456              <p>Starting from Android Q,<wbr/> the colorFilterArrangement for a MONOCHROME camera must be
21457single color patterns,<wbr/> such as MONO or NIR.<wbr/></p>
21458            </td>
21459          </tr>
21460
21461          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21462           <!-- end of entry -->
21463
21464
21465          <tr class="entry" id="static_android.sensor.info.exposureTimeRange">
21466            <td class="entry_name
21467             " rowspan="3">
21468              android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range
21469            </td>
21470            <td class="entry_type">
21471                <span class="entry_type_name">int64</span>
21472                <span class="entry_type_container">x</span>
21473
21474                <span class="entry_type_array">
21475                  2
21476                </span>
21477              <span class="entry_type_visibility"> [public as rangeLong]</span>
21478
21479
21480              <span class="entry_type_hwlevel">[full] </span>
21481
21482
21483                <div class="entry_type_notes">nanoseconds</div>
21484
21485
21486            </td> <!-- entry_type -->
21487
21488            <td class="entry_description">
21489              <p>The range of image exposure times for <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> supported
21490by this camera device.<wbr/></p>
21491            </td>
21492
21493            <td class="entry_units">
21494              Nanoseconds
21495            </td>
21496
21497            <td class="entry_range">
21498              <p>The minimum exposure time will be less than 100 us.<wbr/> For FULL
21499capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/>
21500the maximum exposure time will be greater than 100ms.<wbr/></p>
21501            </td>
21502
21503            <td class="entry_hal_version">
21504              <p>3.<wbr/>2</p>
21505            </td>
21506
21507            <td class="entry_tags">
21508              <ul class="entry_tags">
21509                  <li><a href="#tag_V1">V1</a></li>
21510              </ul>
21511            </td>
21512
21513          </tr>
21514
21515          <tr class="entries_header">
21516            <th class="th_details" colspan="6">HAL Implementation Details</th>
21517          </tr>
21518          <tr class="entry_cont">
21519            <td class="entry_details" colspan="6">
21520              <p>For FULL capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/>
21521The maximum of the range SHOULD be at least 1 second (1e9),<wbr/> MUST be at least
21522100ms.<wbr/></p>
21523            </td>
21524          </tr>
21525
21526          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21527           <!-- end of entry -->
21528
21529
21530          <tr class="entry" id="static_android.sensor.info.maxFrameDuration">
21531            <td class="entry_name
21532             " rowspan="5">
21533              android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration
21534            </td>
21535            <td class="entry_type">
21536                <span class="entry_type_name">int64</span>
21537
21538              <span class="entry_type_visibility"> [public]</span>
21539
21540
21541              <span class="entry_type_hwlevel">[full] </span>
21542
21543
21544
21545
21546            </td> <!-- entry_type -->
21547
21548            <td class="entry_description">
21549              <p>The maximum possible frame duration (minimum frame rate) for
21550<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> that is supported this camera device.<wbr/></p>
21551            </td>
21552
21553            <td class="entry_units">
21554              Nanoseconds
21555            </td>
21556
21557            <td class="entry_range">
21558              <p>For FULL capability devices
21559(<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/> at least 100ms.<wbr/></p>
21560            </td>
21561
21562            <td class="entry_hal_version">
21563              <p>3.<wbr/>2</p>
21564            </td>
21565
21566            <td class="entry_tags">
21567              <ul class="entry_tags">
21568                  <li><a href="#tag_V1">V1</a></li>
21569              </ul>
21570            </td>
21571
21572          </tr>
21573          <tr class="entries_header">
21574            <th class="th_details" colspan="6">Details</th>
21575          </tr>
21576          <tr class="entry_cont">
21577            <td class="entry_details" colspan="6">
21578              <p>Attempting to use frame durations beyond the maximum will result in the frame
21579duration being clipped to the maximum.<wbr/> See that control for a full definition of frame
21580durations.<wbr/></p>
21581<p>Refer to <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>
21582for the minimum frame duration values.<wbr/></p>
21583            </td>
21584          </tr>
21585
21586          <tr class="entries_header">
21587            <th class="th_details" colspan="6">HAL Implementation Details</th>
21588          </tr>
21589          <tr class="entry_cont">
21590            <td class="entry_details" colspan="6">
21591              <p>For FULL capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/>
21592The maximum of the range SHOULD be at least
215931 second (1e9),<wbr/> MUST be at least 100ms (100e6).<wbr/></p>
21594<p><a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a> must be greater or
21595equal to the <a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a> max
21596value (since exposure time overrides frame duration).<wbr/></p>
21597<p>Available minimum frame durations for JPEG must be no greater
21598than that of the YUV_<wbr/>420_<wbr/>888/<wbr/>IMPLEMENTATION_<wbr/>DEFINED
21599minimum frame durations (for that respective size).<wbr/></p>
21600<p>Since JPEG processing is considered offline and can take longer than
21601a single uncompressed capture,<wbr/> refer to
21602<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>
21603for details about encoding this scenario.<wbr/></p>
21604            </td>
21605          </tr>
21606
21607          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21608           <!-- end of entry -->
21609
21610
21611          <tr class="entry" id="static_android.sensor.info.physicalSize">
21612            <td class="entry_name
21613             " rowspan="5">
21614              android.<wbr/>sensor.<wbr/>info.<wbr/>physical<wbr/>Size
21615            </td>
21616            <td class="entry_type">
21617                <span class="entry_type_name">float</span>
21618                <span class="entry_type_container">x</span>
21619
21620                <span class="entry_type_array">
21621                  2
21622                </span>
21623              <span class="entry_type_visibility"> [public as sizeF]</span>
21624
21625
21626              <span class="entry_type_hwlevel">[legacy] </span>
21627
21628
21629                <div class="entry_type_notes">width x height</div>
21630
21631
21632            </td> <!-- entry_type -->
21633
21634            <td class="entry_description">
21635              <p>The physical dimensions of the full pixel
21636array.<wbr/></p>
21637            </td>
21638
21639            <td class="entry_units">
21640              Millimeters
21641            </td>
21642
21643            <td class="entry_range">
21644            </td>
21645
21646            <td class="entry_hal_version">
21647              <p>3.<wbr/>2</p>
21648            </td>
21649
21650            <td class="entry_tags">
21651              <ul class="entry_tags">
21652                  <li><a href="#tag_V1">V1</a></li>
21653                  <li><a href="#tag_BC">BC</a></li>
21654              </ul>
21655            </td>
21656
21657          </tr>
21658          <tr class="entries_header">
21659            <th class="th_details" colspan="6">Details</th>
21660          </tr>
21661          <tr class="entry_cont">
21662            <td class="entry_details" colspan="6">
21663              <p>This is the physical size of the sensor pixel
21664array defined by <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
21665            </td>
21666          </tr>
21667
21668          <tr class="entries_header">
21669            <th class="th_details" colspan="6">HAL Implementation Details</th>
21670          </tr>
21671          <tr class="entry_cont">
21672            <td class="entry_details" colspan="6">
21673              <p>Needed for FOV calculation for old API</p>
21674            </td>
21675          </tr>
21676
21677          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21678           <!-- end of entry -->
21679
21680
21681          <tr class="entry" id="static_android.sensor.info.pixelArraySize">
21682            <td class="entry_name
21683             " rowspan="3">
21684              android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size
21685            </td>
21686            <td class="entry_type">
21687                <span class="entry_type_name">int32</span>
21688                <span class="entry_type_container">x</span>
21689
21690                <span class="entry_type_array">
21691                  2
21692                </span>
21693              <span class="entry_type_visibility"> [public as size]</span>
21694
21695
21696              <span class="entry_type_hwlevel">[legacy] </span>
21697
21698
21699
21700
21701            </td> <!-- entry_type -->
21702
21703            <td class="entry_description">
21704              <p>Dimensions of the full pixel array,<wbr/> possibly
21705including black calibration pixels.<wbr/></p>
21706            </td>
21707
21708            <td class="entry_units">
21709              Pixels
21710            </td>
21711
21712            <td class="entry_range">
21713            </td>
21714
21715            <td class="entry_hal_version">
21716              <p>3.<wbr/>2</p>
21717            </td>
21718
21719            <td class="entry_tags">
21720              <ul class="entry_tags">
21721                  <li><a href="#tag_RAW">RAW</a></li>
21722                  <li><a href="#tag_BC">BC</a></li>
21723              </ul>
21724            </td>
21725
21726          </tr>
21727          <tr class="entries_header">
21728            <th class="th_details" colspan="6">Details</th>
21729          </tr>
21730          <tr class="entry_cont">
21731            <td class="entry_details" colspan="6">
21732              <p>The pixel count of the full pixel array of the image sensor,<wbr/> which covers
21733<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
21734the raw buffers produced by this sensor.<wbr/></p>
21735<p>If a camera device supports raw sensor formats,<wbr/> either this or
21736<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
21737output formats listed in <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html">StreamConfigurationMap</a>
21738(this depends on whether or not the image sensor returns buffers containing pixels that
21739are not part of the active array region for blacklevel calibration or other purposes).<wbr/></p>
21740<p>Some parts of the full pixel array may not receive light from the scene,<wbr/>
21741or 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
21742defines the rectangle of active pixels that will be included in processed image
21743formats.<wbr/></p>
21744            </td>
21745          </tr>
21746
21747
21748          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21749           <!-- end of entry -->
21750
21751
21752          <tr class="entry" id="static_android.sensor.info.whiteLevel">
21753            <td class="entry_name
21754             " rowspan="5">
21755              android.<wbr/>sensor.<wbr/>info.<wbr/>white<wbr/>Level
21756            </td>
21757            <td class="entry_type">
21758                <span class="entry_type_name">int32</span>
21759
21760              <span class="entry_type_visibility"> [public]</span>
21761
21762
21763
21764
21765
21766
21767            </td> <!-- entry_type -->
21768
21769            <td class="entry_description">
21770              <p>Maximum raw value output by sensor.<wbr/></p>
21771            </td>
21772
21773            <td class="entry_units">
21774            </td>
21775
21776            <td class="entry_range">
21777              <p>&gt; 255 (8-bit output)</p>
21778            </td>
21779
21780            <td class="entry_hal_version">
21781              <p>3.<wbr/>2</p>
21782            </td>
21783
21784            <td class="entry_tags">
21785              <ul class="entry_tags">
21786                  <li><a href="#tag_RAW">RAW</a></li>
21787              </ul>
21788            </td>
21789
21790          </tr>
21791          <tr class="entries_header">
21792            <th class="th_details" colspan="6">Details</th>
21793          </tr>
21794          <tr class="entry_cont">
21795            <td class="entry_details" colspan="6">
21796              <p>This specifies the fully-saturated encoding level for the raw
21797sample values from the sensor.<wbr/>  This is typically caused by the
21798sensor becoming highly non-linear or clipping.<wbr/> The minimum for
21799each channel is specified by the offset in the
21800<a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> key.<wbr/></p>
21801<p>The white level is typically determined either by sensor bit depth
21802(8-14 bits is expected),<wbr/> or by the point where the sensor response
21803becomes too non-linear to be useful.<wbr/>  The default value for this is
21804maximum representable value for a 16-bit raw sample (2^16 - 1).<wbr/></p>
21805<p>The white level values of captured images may vary for different
21806capture settings (e.<wbr/>g.,<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>).<wbr/> This key
21807represents a coarse approximation for such case.<wbr/> It is recommended
21808to use <a href="#dynamic_android.sensor.dynamicWhiteLevel">android.<wbr/>sensor.<wbr/>dynamic<wbr/>White<wbr/>Level</a> for captures when supported
21809by the camera device,<wbr/> which provides more accurate white level values.<wbr/></p>
21810            </td>
21811          </tr>
21812
21813          <tr class="entries_header">
21814            <th class="th_details" colspan="6">HAL Implementation Details</th>
21815          </tr>
21816          <tr class="entry_cont">
21817            <td class="entry_details" colspan="6">
21818              <p>The full bit depth of the sensor must be available in the raw data,<wbr/>
21819so the value for linear sensors should not be significantly lower
21820than maximum raw value supported,<wbr/> i.<wbr/>e.<wbr/> 2^(sensor bits per pixel).<wbr/></p>
21821            </td>
21822          </tr>
21823
21824          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21825           <!-- end of entry -->
21826
21827
21828          <tr class="entry" id="static_android.sensor.info.timestampSource">
21829            <td class="entry_name
21830             " rowspan="5">
21831              android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source
21832            </td>
21833            <td class="entry_type">
21834                <span class="entry_type_name entry_type_name_enum">byte</span>
21835
21836              <span class="entry_type_visibility"> [public]</span>
21837
21838
21839              <span class="entry_type_hwlevel">[legacy] </span>
21840
21841
21842
21843                <ul class="entry_type_enum">
21844                  <li>
21845                    <span class="entry_type_enum_name">UNKNOWN (v3.2)</span>
21846                    <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/>
21847but can not be compared to timestamps from other subsystems
21848(e.<wbr/>g.<wbr/> accelerometer,<wbr/> gyro etc.<wbr/>),<wbr/> or other instances of the same or different
21849camera devices in the same system.<wbr/> Timestamps between streams and results for
21850a single camera instance are comparable,<wbr/> and the timestamps for all buffers
21851and the result metadata generated by a single capture are identical.<wbr/></p></span>
21852                  </li>
21853                  <li>
21854                    <span class="entry_type_enum_name">REALTIME (v3.2)</span>
21855                    <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
21856<a href="https://developer.android.com/reference/android/os/SystemClock.html#elapsedRealtimeNanos">SystemClock#elapsedRealtimeNanos</a>,<wbr/>
21857and they can be compared to other timestamps using that base.<wbr/></p></span>
21858                  </li>
21859                </ul>
21860
21861            </td> <!-- entry_type -->
21862
21863            <td class="entry_description">
21864              <p>The time base source for sensor capture start timestamps.<wbr/></p>
21865            </td>
21866
21867            <td class="entry_units">
21868            </td>
21869
21870            <td class="entry_range">
21871            </td>
21872
21873            <td class="entry_hal_version">
21874              <p>3.<wbr/>2</p>
21875            </td>
21876
21877            <td class="entry_tags">
21878              <ul class="entry_tags">
21879                  <li><a href="#tag_V1">V1</a></li>
21880              </ul>
21881            </td>
21882
21883          </tr>
21884          <tr class="entries_header">
21885            <th class="th_details" colspan="6">Details</th>
21886          </tr>
21887          <tr class="entry_cont">
21888            <td class="entry_details" colspan="6">
21889              <p>The timestamps provided for captures are always in nanoseconds and monotonic,<wbr/> but
21890may not based on a time source that can be compared to other system time sources.<wbr/></p>
21891<p>This characteristic defines the source for the timestamps,<wbr/> and therefore whether they
21892can be compared against other system time sources/<wbr/>timestamps.<wbr/></p>
21893            </td>
21894          </tr>
21895
21896          <tr class="entries_header">
21897            <th class="th_details" colspan="6">HAL Implementation Details</th>
21898          </tr>
21899          <tr class="entry_cont">
21900            <td class="entry_details" colspan="6">
21901              <p>For camera devices implement UNKNOWN,<wbr/> the camera framework expects that the timestamp
21902source to be SYSTEM_<wbr/>TIME_<wbr/>MONOTONIC.<wbr/> For camera devices implement REALTIME,<wbr/> the camera
21903framework expects that the timestamp source to be SYSTEM_<wbr/>TIME_<wbr/>BOOTTIME.<wbr/> See
21904system/<wbr/>core/<wbr/>include/<wbr/>utils/<wbr/>Timers.<wbr/>h for the definition of SYSTEM_<wbr/>TIME_<wbr/>MONOTONIC and
21905SYSTEM_<wbr/>TIME_<wbr/>BOOTTIME.<wbr/> Note that HAL must follow above expectation; otherwise video
21906recording might suffer unexpected behavior.<wbr/></p>
21907<p>Also,<wbr/> camera devices which implement REALTIME must pass the ITS sensor fusion test which
21908tests the alignment between camera timestamps and gyro sensor timestamps.<wbr/></p>
21909            </td>
21910          </tr>
21911
21912          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21913           <!-- end of entry -->
21914
21915
21916          <tr class="entry" id="static_android.sensor.info.lensShadingApplied">
21917            <td class="entry_name
21918             " rowspan="3">
21919              android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied
21920            </td>
21921            <td class="entry_type">
21922                <span class="entry_type_name entry_type_name_enum">byte</span>
21923
21924              <span class="entry_type_visibility"> [public as boolean]</span>
21925
21926
21927
21928
21929
21930                <ul class="entry_type_enum">
21931                  <li>
21932                    <span class="entry_type_enum_name">FALSE (v3.2)</span>
21933                  </li>
21934                  <li>
21935                    <span class="entry_type_enum_name">TRUE (v3.2)</span>
21936                  </li>
21937                </ul>
21938
21939            </td> <!-- entry_type -->
21940
21941            <td class="entry_description">
21942              <p>Whether the RAW images output from this camera device are subject to
21943lens shading correction.<wbr/></p>
21944            </td>
21945
21946            <td class="entry_units">
21947            </td>
21948
21949            <td class="entry_range">
21950            </td>
21951
21952            <td class="entry_hal_version">
21953              <p>3.<wbr/>2</p>
21954            </td>
21955
21956            <td class="entry_tags">
21957            </td>
21958
21959          </tr>
21960          <tr class="entries_header">
21961            <th class="th_details" colspan="6">Details</th>
21962          </tr>
21963          <tr class="entry_cont">
21964            <td class="entry_details" colspan="6">
21965              <p>If TRUE,<wbr/> all images produced by the camera device in the RAW image formats will
21966have lens shading correction already applied to it.<wbr/> If FALSE,<wbr/> the images will
21967not be adjusted for lens shading correction.<wbr/>
21968See <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>
21969<p>This key will be <code>null</code> for all devices do not report this information.<wbr/>
21970Devices with RAW capability will always report this information in this key.<wbr/></p>
21971            </td>
21972          </tr>
21973
21974
21975          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21976           <!-- end of entry -->
21977
21978
21979          <tr class="entry" id="static_android.sensor.info.preCorrectionActiveArraySize">
21980            <td class="entry_name
21981             " rowspan="5">
21982              android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size
21983            </td>
21984            <td class="entry_type">
21985                <span class="entry_type_name">int32</span>
21986                <span class="entry_type_container">x</span>
21987
21988                <span class="entry_type_array">
21989                  4
21990                </span>
21991              <span class="entry_type_visibility"> [public as rectangle]</span>
21992
21993
21994              <span class="entry_type_hwlevel">[legacy] </span>
21995
21996
21997                <div class="entry_type_notes">Four ints defining the active pixel rectangle</div>
21998
21999
22000            </td> <!-- entry_type -->
22001
22002            <td class="entry_description">
22003              <p>The area of the image sensor which corresponds to active pixels prior to the
22004application of any geometric distortion correction.<wbr/></p>
22005            </td>
22006
22007            <td class="entry_units">
22008              Pixel coordinates on the image sensor
22009            </td>
22010
22011            <td class="entry_range">
22012            </td>
22013
22014            <td class="entry_hal_version">
22015              <p>3.<wbr/>2</p>
22016            </td>
22017
22018            <td class="entry_tags">
22019              <ul class="entry_tags">
22020                  <li><a href="#tag_RAW">RAW</a></li>
22021              </ul>
22022            </td>
22023
22024          </tr>
22025          <tr class="entries_header">
22026            <th class="th_details" colspan="6">Details</th>
22027          </tr>
22028          <tr class="entry_cont">
22029            <td class="entry_details" colspan="6">
22030              <p>This is the rectangle representing the size of the active region of the sensor (i.<wbr/>e.<wbr/>
22031the region that actually receives light from the scene) before any geometric correction
22032has been applied,<wbr/> and should be treated as the active region rectangle for any of the
22033raw formats.<wbr/>  All metadata associated with raw processing (e.<wbr/>g.<wbr/> the lens shading
22034correction map,<wbr/> and radial distortion fields) treats the top,<wbr/> left of this rectangle as
22035the origin,<wbr/> (0,<wbr/>0).<wbr/></p>
22036<p>The size of this region determines the maximum field of view and the maximum number of
22037pixels that an image from this sensor can contain,<wbr/> prior to the application of
22038geometric distortion correction.<wbr/> The effective maximum pixel dimensions of a
22039post-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>
22040field,<wbr/> and the effective maximum field of view for a post-distortion-corrected image
22041can be calculated by applying the geometric distortion correction fields to this
22042rectangle,<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>
22043<p>E.<wbr/>g.<wbr/> to calculate position of a pixel,<wbr/> (x,<wbr/>y),<wbr/> in a processed YUV output image with the
22044dimensions 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/>
22045(x',<wbr/> y'),<wbr/> in the raw pixel array with dimensions give in
22046<a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>:</p>
22047<ol>
22048<li>Choose a pixel (x',<wbr/> y') within the active array region of the raw buffer given in
22049<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
22050to be outside of the FOV,<wbr/> and will not be shown in the processed output image.<wbr/></li>
22051<li>Apply geometric distortion correction to get the post-distortion pixel coordinate,<wbr/>
22052(x_<wbr/>i,<wbr/> y_<wbr/>i).<wbr/> When applying geometric correction metadata,<wbr/> note that metadata for raw
22053buffers is defined relative to the top,<wbr/> left of the
22054<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>
22055<li>If the resulting corrected pixel coordinate is within the region given in
22056<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
22057processed output image buffer is <code>(x_<wbr/>i - activeArray.<wbr/>left,<wbr/> y_<wbr/>i - activeArray.<wbr/>top)</code>,<wbr/>
22058when the top,<wbr/> left coordinate of that buffer is treated as (0,<wbr/> 0).<wbr/></li>
22059</ol>
22060<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>
22061is (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/>
22062<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
22063correction doesn't change the pixel coordinate,<wbr/> the resulting pixel selected in
22064pixel coordinates would be x,<wbr/>y = (25,<wbr/> 25) relative to the top,<wbr/>left of the raw buffer
22065with 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)
22066relative to the top,<wbr/>left of post-processed YUV output buffer with dimensions given in
22067<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
22068<p>The currently supported fields that correct for geometric distortion are:</p>
22069<ol>
22070<li><a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a>.<wbr/></li>
22071</ol>
22072<p>If the camera device doesn't support geometric distortion correction,<wbr/> or all of the
22073geometric distortion fields are no-ops,<wbr/> this rectangle will be the same as the
22074post-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>
22075<p>This rectangle is defined relative to the full pixel array; (0,<wbr/>0) is the top-left of
22076the full pixel array,<wbr/> and the size of the full pixel array is given by
22077<a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
22078<p>The pre-correction active array may be smaller than the full pixel array,<wbr/> since the
22079full array may include black calibration pixels or other inactive regions.<wbr/></p>
22080            </td>
22081          </tr>
22082
22083          <tr class="entries_header">
22084            <th class="th_details" colspan="6">HAL Implementation Details</th>
22085          </tr>
22086          <tr class="entry_cont">
22087            <td class="entry_details" colspan="6">
22088              <p>This array contains <code>(xmin,<wbr/> ymin,<wbr/> width,<wbr/> height)</code>.<wbr/> The <code>(xmin,<wbr/> ymin)</code> must be
22089&gt;= <code>(0,<wbr/>0)</code>.<wbr/>
22090The <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>
22091<p>If omitted by the HAL implementation,<wbr/> the camera framework will assume that this is
22092the same as the post-correction active array region given in
22093<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
22094            </td>
22095          </tr>
22096
22097          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22098           <!-- end of entry -->
22099
22100
22101
22102
22103
22104          <tr class="entry" id="static_android.sensor.referenceIlluminant1">
22105            <td class="entry_name
22106             " rowspan="5">
22107              android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1
22108            </td>
22109            <td class="entry_type">
22110                <span class="entry_type_name entry_type_name_enum">byte</span>
22111
22112              <span class="entry_type_visibility"> [public]</span>
22113
22114
22115
22116
22117
22118                <ul class="entry_type_enum">
22119                  <li>
22120                    <span class="entry_type_enum_name">DAYLIGHT (v3.2)</span>
22121                    <span class="entry_type_enum_value">1</span>
22122                  </li>
22123                  <li>
22124                    <span class="entry_type_enum_name">FLUORESCENT (v3.2)</span>
22125                    <span class="entry_type_enum_value">2</span>
22126                  </li>
22127                  <li>
22128                    <span class="entry_type_enum_name">TUNGSTEN (v3.2)</span>
22129                    <span class="entry_type_enum_value">3</span>
22130                    <span class="entry_type_enum_notes"><p>Incandescent light</p></span>
22131                  </li>
22132                  <li>
22133                    <span class="entry_type_enum_name">FLASH (v3.2)</span>
22134                    <span class="entry_type_enum_value">4</span>
22135                  </li>
22136                  <li>
22137                    <span class="entry_type_enum_name">FINE_WEATHER (v3.2)</span>
22138                    <span class="entry_type_enum_value">9</span>
22139                  </li>
22140                  <li>
22141                    <span class="entry_type_enum_name">CLOUDY_WEATHER (v3.2)</span>
22142                    <span class="entry_type_enum_value">10</span>
22143                  </li>
22144                  <li>
22145                    <span class="entry_type_enum_name">SHADE (v3.2)</span>
22146                    <span class="entry_type_enum_value">11</span>
22147                  </li>
22148                  <li>
22149                    <span class="entry_type_enum_name">DAYLIGHT_FLUORESCENT (v3.2)</span>
22150                    <span class="entry_type_enum_value">12</span>
22151                    <span class="entry_type_enum_notes"><p>D 5700 - 7100K</p></span>
22152                  </li>
22153                  <li>
22154                    <span class="entry_type_enum_name">DAY_WHITE_FLUORESCENT (v3.2)</span>
22155                    <span class="entry_type_enum_value">13</span>
22156                    <span class="entry_type_enum_notes"><p>N 4600 - 5400K</p></span>
22157                  </li>
22158                  <li>
22159                    <span class="entry_type_enum_name">COOL_WHITE_FLUORESCENT (v3.2)</span>
22160                    <span class="entry_type_enum_value">14</span>
22161                    <span class="entry_type_enum_notes"><p>W 3900 - 4500K</p></span>
22162                  </li>
22163                  <li>
22164                    <span class="entry_type_enum_name">WHITE_FLUORESCENT (v3.2)</span>
22165                    <span class="entry_type_enum_value">15</span>
22166                    <span class="entry_type_enum_notes"><p>WW 3200 - 3700K</p></span>
22167                  </li>
22168                  <li>
22169                    <span class="entry_type_enum_name">STANDARD_A (v3.2)</span>
22170                    <span class="entry_type_enum_value">17</span>
22171                  </li>
22172                  <li>
22173                    <span class="entry_type_enum_name">STANDARD_B (v3.2)</span>
22174                    <span class="entry_type_enum_value">18</span>
22175                  </li>
22176                  <li>
22177                    <span class="entry_type_enum_name">STANDARD_C (v3.2)</span>
22178                    <span class="entry_type_enum_value">19</span>
22179                  </li>
22180                  <li>
22181                    <span class="entry_type_enum_name">D55 (v3.2)</span>
22182                    <span class="entry_type_enum_value">20</span>
22183                  </li>
22184                  <li>
22185                    <span class="entry_type_enum_name">D65 (v3.2)</span>
22186                    <span class="entry_type_enum_value">21</span>
22187                  </li>
22188                  <li>
22189                    <span class="entry_type_enum_name">D75 (v3.2)</span>
22190                    <span class="entry_type_enum_value">22</span>
22191                  </li>
22192                  <li>
22193                    <span class="entry_type_enum_name">D50 (v3.2)</span>
22194                    <span class="entry_type_enum_value">23</span>
22195                  </li>
22196                  <li>
22197                    <span class="entry_type_enum_name">ISO_STUDIO_TUNGSTEN (v3.2)</span>
22198                    <span class="entry_type_enum_value">24</span>
22199                  </li>
22200                </ul>
22201
22202            </td> <!-- entry_type -->
22203
22204            <td class="entry_description">
22205              <p>The standard reference illuminant used as the scene light source when
22206calculating the <a href="#static_android.sensor.colorTransform1">android.<wbr/>sensor.<wbr/>color<wbr/>Transform1</a>,<wbr/>
22207<a href="#static_android.sensor.calibrationTransform1">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1</a>,<wbr/> and
22208<a href="#static_android.sensor.forwardMatrix1">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1</a> matrices.<wbr/></p>
22209            </td>
22210
22211            <td class="entry_units">
22212            </td>
22213
22214            <td class="entry_range">
22215            </td>
22216
22217            <td class="entry_hal_version">
22218              <p>3.<wbr/>2</p>
22219            </td>
22220
22221            <td class="entry_tags">
22222              <ul class="entry_tags">
22223                  <li><a href="#tag_RAW">RAW</a></li>
22224              </ul>
22225            </td>
22226
22227          </tr>
22228          <tr class="entries_header">
22229            <th class="th_details" colspan="6">Details</th>
22230          </tr>
22231          <tr class="entry_cont">
22232            <td class="entry_details" colspan="6">
22233              <p>The values in this key correspond to the values defined for the
22234EXIF LightSource tag.<wbr/> These illuminants are standard light sources
22235that are often used calibrating camera devices.<wbr/></p>
22236<p>If this key is present,<wbr/> then <a href="#static_android.sensor.colorTransform1">android.<wbr/>sensor.<wbr/>color<wbr/>Transform1</a>,<wbr/>
22237<a href="#static_android.sensor.calibrationTransform1">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1</a>,<wbr/> and
22238<a href="#static_android.sensor.forwardMatrix1">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1</a> will also be present.<wbr/></p>
22239<p>Some devices may choose to provide a second set of calibration
22240information for improved quality,<wbr/> including
22241<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> and its corresponding matrices.<wbr/></p>
22242<p>Starting from Android Q,<wbr/> this key will not be present for a MONOCHROME camera,<wbr/> even if
22243the camera device has RAW capability.<wbr/></p>
22244            </td>
22245          </tr>
22246
22247          <tr class="entries_header">
22248            <th class="th_details" colspan="6">HAL Implementation Details</th>
22249          </tr>
22250          <tr class="entry_cont">
22251            <td class="entry_details" colspan="6">
22252              <p>The first reference illuminant (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>)
22253and corresponding matrices must be present to support the RAW capability
22254and DNG output.<wbr/></p>
22255<p>When producing raw images with a color profile that has only been
22256calibrated against a single light source,<wbr/> it is valid to omit
22257<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> along with the
22258<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/>
22259and <a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> matrices.<wbr/></p>
22260<p>If only <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> is included,<wbr/> it should be
22261chosen so that it is representative of typical scene lighting.<wbr/>  In
22262general,<wbr/> D50 or DAYLIGHT will be chosen for this case.<wbr/></p>
22263<p>If both <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> and
22264<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> are included,<wbr/> they should be
22265chosen to represent the typical range of scene lighting conditions.<wbr/>
22266In general,<wbr/> low color temperature illuminant such as Standard-A will
22267be chosen for the first reference illuminant and a higher color
22268temperature illuminant such as D65 will be chosen for the second
22269reference illuminant.<wbr/></p>
22270            </td>
22271          </tr>
22272
22273          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22274           <!-- end of entry -->
22275
22276
22277          <tr class="entry" id="static_android.sensor.referenceIlluminant2">
22278            <td class="entry_name
22279             " rowspan="3">
22280              android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2
22281            </td>
22282            <td class="entry_type">
22283                <span class="entry_type_name">byte</span>
22284
22285              <span class="entry_type_visibility"> [public]</span>
22286
22287
22288
22289
22290
22291
22292            </td> <!-- entry_type -->
22293
22294            <td class="entry_description">
22295              <p>The standard reference illuminant used as the scene light source when
22296calculating the <a href="#static_android.sensor.colorTransform2">android.<wbr/>sensor.<wbr/>color<wbr/>Transform2</a>,<wbr/>
22297<a href="#static_android.sensor.calibrationTransform2">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2</a>,<wbr/> and
22298<a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> matrices.<wbr/></p>
22299            </td>
22300
22301            <td class="entry_units">
22302            </td>
22303
22304            <td class="entry_range">
22305              <p>Any value listed in <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a></p>
22306            </td>
22307
22308            <td class="entry_hal_version">
22309              <p>3.<wbr/>2</p>
22310            </td>
22311
22312            <td class="entry_tags">
22313              <ul class="entry_tags">
22314                  <li><a href="#tag_RAW">RAW</a></li>
22315              </ul>
22316            </td>
22317
22318          </tr>
22319          <tr class="entries_header">
22320            <th class="th_details" colspan="6">Details</th>
22321          </tr>
22322          <tr class="entry_cont">
22323            <td class="entry_details" colspan="6">
22324              <p>See <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> for more details.<wbr/></p>
22325<p>If this key is present,<wbr/> then <a href="#static_android.sensor.colorTransform2">android.<wbr/>sensor.<wbr/>color<wbr/>Transform2</a>,<wbr/>
22326<a href="#static_android.sensor.calibrationTransform2">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2</a>,<wbr/> and
22327<a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> will also be present.<wbr/></p>
22328<p>Starting from Android Q,<wbr/> this key will not be present for a MONOCHROME camera,<wbr/> even if
22329the camera device has RAW capability.<wbr/></p>
22330            </td>
22331          </tr>
22332
22333
22334          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22335           <!-- end of entry -->
22336
22337
22338          <tr class="entry" id="static_android.sensor.calibrationTransform1">
22339            <td class="entry_name
22340             " rowspan="3">
22341              android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1
22342            </td>
22343            <td class="entry_type">
22344                <span class="entry_type_name">rational</span>
22345                <span class="entry_type_container">x</span>
22346
22347                <span class="entry_type_array">
22348                  3 x 3
22349                </span>
22350              <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
22351
22352
22353
22354
22355                <div class="entry_type_notes">3x3 matrix in row-major-order</div>
22356
22357
22358            </td> <!-- entry_type -->
22359
22360            <td class="entry_description">
22361              <p>A per-device calibration transform matrix that maps from the
22362reference sensor colorspace to the actual device sensor colorspace.<wbr/></p>
22363            </td>
22364
22365            <td class="entry_units">
22366            </td>
22367
22368            <td class="entry_range">
22369            </td>
22370
22371            <td class="entry_hal_version">
22372              <p>3.<wbr/>2</p>
22373            </td>
22374
22375            <td class="entry_tags">
22376              <ul class="entry_tags">
22377                  <li><a href="#tag_RAW">RAW</a></li>
22378              </ul>
22379            </td>
22380
22381          </tr>
22382          <tr class="entries_header">
22383            <th class="th_details" colspan="6">Details</th>
22384          </tr>
22385          <tr class="entry_cont">
22386            <td class="entry_details" colspan="6">
22387              <p>This matrix is used to correct for per-device variations in the
22388sensor colorspace,<wbr/> and is used for processing raw buffer data.<wbr/></p>
22389<p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
22390contains a per-device calibration transform that maps colors
22391from reference sensor color space (i.<wbr/>e.<wbr/> the "golden module"
22392colorspace) into this camera device's native sensor color
22393space under the first reference illuminant
22394(<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>).<wbr/></p>
22395<p>Starting from Android Q,<wbr/> this key will not be present for a MONOCHROME camera,<wbr/> even if
22396the camera device has RAW capability.<wbr/></p>
22397            </td>
22398          </tr>
22399
22400
22401          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22402           <!-- end of entry -->
22403
22404
22405          <tr class="entry" id="static_android.sensor.calibrationTransform2">
22406            <td class="entry_name
22407             " rowspan="3">
22408              android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2
22409            </td>
22410            <td class="entry_type">
22411                <span class="entry_type_name">rational</span>
22412                <span class="entry_type_container">x</span>
22413
22414                <span class="entry_type_array">
22415                  3 x 3
22416                </span>
22417              <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
22418
22419
22420
22421
22422                <div class="entry_type_notes">3x3 matrix in row-major-order</div>
22423
22424
22425            </td> <!-- entry_type -->
22426
22427            <td class="entry_description">
22428              <p>A per-device calibration transform matrix that maps from the
22429reference sensor colorspace to the actual device sensor colorspace
22430(this is the colorspace of the raw buffer data).<wbr/></p>
22431            </td>
22432
22433            <td class="entry_units">
22434            </td>
22435
22436            <td class="entry_range">
22437            </td>
22438
22439            <td class="entry_hal_version">
22440              <p>3.<wbr/>2</p>
22441            </td>
22442
22443            <td class="entry_tags">
22444              <ul class="entry_tags">
22445                  <li><a href="#tag_RAW">RAW</a></li>
22446              </ul>
22447            </td>
22448
22449          </tr>
22450          <tr class="entries_header">
22451            <th class="th_details" colspan="6">Details</th>
22452          </tr>
22453          <tr class="entry_cont">
22454            <td class="entry_details" colspan="6">
22455              <p>This matrix is used to correct for per-device variations in the
22456sensor colorspace,<wbr/> and is used for processing raw buffer data.<wbr/></p>
22457<p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
22458contains a per-device calibration transform that maps colors
22459from reference sensor color space (i.<wbr/>e.<wbr/> the "golden module"
22460colorspace) into this camera device's native sensor color
22461space under the second reference illuminant
22462(<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>).<wbr/></p>
22463<p>This matrix will only be present if the second reference
22464illuminant is present.<wbr/></p>
22465<p>Starting from Android Q,<wbr/> this key will not be present for a MONOCHROME camera,<wbr/> even if
22466the camera device has RAW capability.<wbr/></p>
22467            </td>
22468          </tr>
22469
22470
22471          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22472           <!-- end of entry -->
22473
22474
22475          <tr class="entry" id="static_android.sensor.colorTransform1">
22476            <td class="entry_name
22477             " rowspan="3">
22478              android.<wbr/>sensor.<wbr/>color<wbr/>Transform1
22479            </td>
22480            <td class="entry_type">
22481                <span class="entry_type_name">rational</span>
22482                <span class="entry_type_container">x</span>
22483
22484                <span class="entry_type_array">
22485                  3 x 3
22486                </span>
22487              <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
22488
22489
22490
22491
22492                <div class="entry_type_notes">3x3 matrix in row-major-order</div>
22493
22494
22495            </td> <!-- entry_type -->
22496
22497            <td class="entry_description">
22498              <p>A matrix that transforms color values from CIE XYZ color space to
22499reference sensor color space.<wbr/></p>
22500            </td>
22501
22502            <td class="entry_units">
22503            </td>
22504
22505            <td class="entry_range">
22506            </td>
22507
22508            <td class="entry_hal_version">
22509              <p>3.<wbr/>2</p>
22510            </td>
22511
22512            <td class="entry_tags">
22513              <ul class="entry_tags">
22514                  <li><a href="#tag_RAW">RAW</a></li>
22515              </ul>
22516            </td>
22517
22518          </tr>
22519          <tr class="entries_header">
22520            <th class="th_details" colspan="6">Details</th>
22521          </tr>
22522          <tr class="entry_cont">
22523            <td class="entry_details" colspan="6">
22524              <p>This matrix is used to convert from the standard CIE XYZ color
22525space to the reference sensor colorspace,<wbr/> and is used when processing
22526raw buffer data.<wbr/></p>
22527<p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
22528contains a color transform matrix that maps colors from the CIE
22529XYZ color space to the reference sensor color space (i.<wbr/>e.<wbr/> the
22530"golden module" colorspace) under the first reference illuminant
22531(<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>).<wbr/></p>
22532<p>The white points chosen in both the reference sensor color space
22533and the CIE XYZ colorspace when calculating this transform will
22534match the standard white point for the first reference illuminant
22535(i.<wbr/>e.<wbr/> no chromatic adaptation will be applied by this transform).<wbr/></p>
22536<p>Starting from Android Q,<wbr/> this key will not be present for a MONOCHROME camera,<wbr/> even if
22537the camera device has RAW capability.<wbr/></p>
22538            </td>
22539          </tr>
22540
22541
22542          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22543           <!-- end of entry -->
22544
22545
22546          <tr class="entry" id="static_android.sensor.colorTransform2">
22547            <td class="entry_name
22548             " rowspan="3">
22549              android.<wbr/>sensor.<wbr/>color<wbr/>Transform2
22550            </td>
22551            <td class="entry_type">
22552                <span class="entry_type_name">rational</span>
22553                <span class="entry_type_container">x</span>
22554
22555                <span class="entry_type_array">
22556                  3 x 3
22557                </span>
22558              <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
22559
22560
22561
22562
22563                <div class="entry_type_notes">3x3 matrix in row-major-order</div>
22564
22565
22566            </td> <!-- entry_type -->
22567
22568            <td class="entry_description">
22569              <p>A matrix that transforms color values from CIE XYZ color space to
22570reference sensor color space.<wbr/></p>
22571            </td>
22572
22573            <td class="entry_units">
22574            </td>
22575
22576            <td class="entry_range">
22577            </td>
22578
22579            <td class="entry_hal_version">
22580              <p>3.<wbr/>2</p>
22581            </td>
22582
22583            <td class="entry_tags">
22584              <ul class="entry_tags">
22585                  <li><a href="#tag_RAW">RAW</a></li>
22586              </ul>
22587            </td>
22588
22589          </tr>
22590          <tr class="entries_header">
22591            <th class="th_details" colspan="6">Details</th>
22592          </tr>
22593          <tr class="entry_cont">
22594            <td class="entry_details" colspan="6">
22595              <p>This matrix is used to convert from the standard CIE XYZ color
22596space to the reference sensor colorspace,<wbr/> and is used when processing
22597raw buffer data.<wbr/></p>
22598<p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
22599contains a color transform matrix that maps colors from the CIE
22600XYZ color space to the reference sensor color space (i.<wbr/>e.<wbr/> the
22601"golden module" colorspace) under the second reference illuminant
22602(<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>).<wbr/></p>
22603<p>The white points chosen in both the reference sensor color space
22604and the CIE XYZ colorspace when calculating this transform will
22605match the standard white point for the second reference illuminant
22606(i.<wbr/>e.<wbr/> no chromatic adaptation will be applied by this transform).<wbr/></p>
22607<p>This matrix will only be present if the second reference
22608illuminant is present.<wbr/></p>
22609<p>Starting from Android Q,<wbr/> this key will not be present for a MONOCHROME camera,<wbr/> even if
22610the camera device has RAW capability.<wbr/></p>
22611            </td>
22612          </tr>
22613
22614
22615          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22616           <!-- end of entry -->
22617
22618
22619          <tr class="entry" id="static_android.sensor.forwardMatrix1">
22620            <td class="entry_name
22621             " rowspan="3">
22622              android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1
22623            </td>
22624            <td class="entry_type">
22625                <span class="entry_type_name">rational</span>
22626                <span class="entry_type_container">x</span>
22627
22628                <span class="entry_type_array">
22629                  3 x 3
22630                </span>
22631              <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
22632
22633
22634
22635
22636                <div class="entry_type_notes">3x3 matrix in row-major-order</div>
22637
22638
22639            </td> <!-- entry_type -->
22640
22641            <td class="entry_description">
22642              <p>A matrix that transforms white balanced camera colors from the reference
22643sensor colorspace to the CIE XYZ colorspace with a D50 whitepoint.<wbr/></p>
22644            </td>
22645
22646            <td class="entry_units">
22647            </td>
22648
22649            <td class="entry_range">
22650            </td>
22651
22652            <td class="entry_hal_version">
22653              <p>3.<wbr/>2</p>
22654            </td>
22655
22656            <td class="entry_tags">
22657              <ul class="entry_tags">
22658                  <li><a href="#tag_RAW">RAW</a></li>
22659              </ul>
22660            </td>
22661
22662          </tr>
22663          <tr class="entries_header">
22664            <th class="th_details" colspan="6">Details</th>
22665          </tr>
22666          <tr class="entry_cont">
22667            <td class="entry_details" colspan="6">
22668              <p>This matrix is used to convert to the standard CIE XYZ colorspace,<wbr/> and
22669is used when processing raw buffer data.<wbr/></p>
22670<p>This matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and contains
22671a color transform matrix that maps white balanced colors from the
22672reference sensor color space to the CIE XYZ color space with a D50 white
22673point.<wbr/></p>
22674<p>Under the first reference illuminant (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>)
22675this matrix is chosen so that the standard white point for this reference
22676illuminant in the reference sensor colorspace is mapped to D50 in the
22677CIE XYZ colorspace.<wbr/></p>
22678<p>Starting from Android Q,<wbr/> this key will not be present for a MONOCHROME camera,<wbr/> even if
22679the camera device has RAW capability.<wbr/></p>
22680            </td>
22681          </tr>
22682
22683
22684          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22685           <!-- end of entry -->
22686
22687
22688          <tr class="entry" id="static_android.sensor.forwardMatrix2">
22689            <td class="entry_name
22690             " rowspan="3">
22691              android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2
22692            </td>
22693            <td class="entry_type">
22694                <span class="entry_type_name">rational</span>
22695                <span class="entry_type_container">x</span>
22696
22697                <span class="entry_type_array">
22698                  3 x 3
22699                </span>
22700              <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
22701
22702
22703
22704
22705                <div class="entry_type_notes">3x3 matrix in row-major-order</div>
22706
22707
22708            </td> <!-- entry_type -->
22709
22710            <td class="entry_description">
22711              <p>A matrix that transforms white balanced camera colors from the reference
22712sensor colorspace to the CIE XYZ colorspace with a D50 whitepoint.<wbr/></p>
22713            </td>
22714
22715            <td class="entry_units">
22716            </td>
22717
22718            <td class="entry_range">
22719            </td>
22720
22721            <td class="entry_hal_version">
22722              <p>3.<wbr/>2</p>
22723            </td>
22724
22725            <td class="entry_tags">
22726              <ul class="entry_tags">
22727                  <li><a href="#tag_RAW">RAW</a></li>
22728              </ul>
22729            </td>
22730
22731          </tr>
22732          <tr class="entries_header">
22733            <th class="th_details" colspan="6">Details</th>
22734          </tr>
22735          <tr class="entry_cont">
22736            <td class="entry_details" colspan="6">
22737              <p>This matrix is used to convert to the standard CIE XYZ colorspace,<wbr/> and
22738is used when processing raw buffer data.<wbr/></p>
22739<p>This matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and contains
22740a color transform matrix that maps white balanced colors from the
22741reference sensor color space to the CIE XYZ color space with a D50 white
22742point.<wbr/></p>
22743<p>Under the second reference illuminant (<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>)
22744this matrix is chosen so that the standard white point for this reference
22745illuminant in the reference sensor colorspace is mapped to D50 in the
22746CIE XYZ colorspace.<wbr/></p>
22747<p>This matrix will only be present if the second reference
22748illuminant is present.<wbr/></p>
22749<p>Starting from Android Q,<wbr/> this key will not be present for a MONOCHROME camera,<wbr/> even if
22750the camera device has RAW capability.<wbr/></p>
22751            </td>
22752          </tr>
22753
22754
22755          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22756           <!-- end of entry -->
22757
22758
22759          <tr class="entry" id="static_android.sensor.baseGainFactor">
22760            <td class="entry_name
22761             " rowspan="1">
22762              android.<wbr/>sensor.<wbr/>base<wbr/>Gain<wbr/>Factor
22763            </td>
22764            <td class="entry_type">
22765                <span class="entry_type_name">rational</span>
22766
22767              <span class="entry_type_visibility"> [system]</span>
22768
22769
22770
22771
22772
22773
22774            </td> <!-- entry_type -->
22775
22776            <td class="entry_description">
22777              <p>Gain factor from electrons to raw units when
22778ISO=100</p>
22779            </td>
22780
22781            <td class="entry_units">
22782            </td>
22783
22784            <td class="entry_range">
22785            </td>
22786
22787            <td class="entry_hal_version">
22788              <p>3.<wbr/>2</p>
22789            </td>
22790
22791            <td class="entry_tags">
22792              <ul class="entry_tags">
22793                  <li><a href="#tag_FUTURE">FUTURE</a></li>
22794              </ul>
22795            </td>
22796
22797          </tr>
22798
22799
22800          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22801           <!-- end of entry -->
22802
22803
22804          <tr class="entry" id="static_android.sensor.blackLevelPattern">
22805            <td class="entry_name
22806             " rowspan="5">
22807              android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern
22808            </td>
22809            <td class="entry_type">
22810                <span class="entry_type_name">int32</span>
22811                <span class="entry_type_container">x</span>
22812
22813                <span class="entry_type_array">
22814                  4
22815                </span>
22816              <span class="entry_type_visibility"> [public as blackLevelPattern]</span>
22817
22818
22819
22820
22821                <div class="entry_type_notes">2x2 raw count block</div>
22822
22823
22824            </td> <!-- entry_type -->
22825
22826            <td class="entry_description">
22827              <p>A fixed black level offset for each of the color filter arrangement
22828(CFA) mosaic channels.<wbr/></p>
22829            </td>
22830
22831            <td class="entry_units">
22832            </td>
22833
22834            <td class="entry_range">
22835              <p>&gt;= 0 for each.<wbr/></p>
22836            </td>
22837
22838            <td class="entry_hal_version">
22839              <p>3.<wbr/>2</p>
22840            </td>
22841
22842            <td class="entry_tags">
22843              <ul class="entry_tags">
22844                  <li><a href="#tag_RAW">RAW</a></li>
22845              </ul>
22846            </td>
22847
22848          </tr>
22849          <tr class="entries_header">
22850            <th class="th_details" colspan="6">Details</th>
22851          </tr>
22852          <tr class="entry_cont">
22853            <td class="entry_details" colspan="6">
22854              <p>This key specifies the zero light value for each of the CFA mosaic
22855channels in the camera sensor.<wbr/>  The maximal value output by the
22856sensor 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>
22857<p>The values are given in the same order as channels listed for the CFA
22858layout 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
22859nth value given corresponds to the black level offset for the nth
22860color channel listed in the CFA.<wbr/></p>
22861<p>The black level values of captured images may vary for different
22862capture settings (e.<wbr/>g.,<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>).<wbr/> This key
22863represents a coarse approximation for such case.<wbr/> It is recommended to
22864use <a href="#dynamic_android.sensor.dynamicBlackLevel">android.<wbr/>sensor.<wbr/>dynamic<wbr/>Black<wbr/>Level</a> or use pixels from
22865<a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a> directly for captures when
22866supported by the camera device,<wbr/> which provides more accurate black
22867level values.<wbr/> For raw capture in particular,<wbr/> it is recommended to use
22868pixels from <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a> to calculate black
22869level values for each frame.<wbr/></p>
22870<p>For a MONOCHROME camera device,<wbr/> all of the 2x2 channels must have the same values.<wbr/></p>
22871            </td>
22872          </tr>
22873
22874          <tr class="entries_header">
22875            <th class="th_details" colspan="6">HAL Implementation Details</th>
22876          </tr>
22877          <tr class="entry_cont">
22878            <td class="entry_details" colspan="6">
22879              <p>The values are given in row-column scan order,<wbr/> with the first value
22880corresponding to the element of the CFA in row=0,<wbr/> column=0.<wbr/></p>
22881            </td>
22882          </tr>
22883
22884          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22885           <!-- end of entry -->
22886
22887
22888          <tr class="entry" id="static_android.sensor.maxAnalogSensitivity">
22889            <td class="entry_name
22890             " rowspan="3">
22891              android.<wbr/>sensor.<wbr/>max<wbr/>Analog<wbr/>Sensitivity
22892            </td>
22893            <td class="entry_type">
22894                <span class="entry_type_name">int32</span>
22895
22896              <span class="entry_type_visibility"> [public]</span>
22897
22898
22899              <span class="entry_type_hwlevel">[full] </span>
22900
22901
22902
22903
22904            </td> <!-- entry_type -->
22905
22906            <td class="entry_description">
22907              <p>Maximum sensitivity that is implemented
22908purely through analog gain.<wbr/></p>
22909            </td>
22910
22911            <td class="entry_units">
22912            </td>
22913
22914            <td class="entry_range">
22915            </td>
22916
22917            <td class="entry_hal_version">
22918              <p>3.<wbr/>2</p>
22919            </td>
22920
22921            <td class="entry_tags">
22922              <ul class="entry_tags">
22923                  <li><a href="#tag_V1">V1</a></li>
22924                  <li><a href="#tag_FULL">FULL</a></li>
22925              </ul>
22926            </td>
22927
22928          </tr>
22929          <tr class="entries_header">
22930            <th class="th_details" colspan="6">Details</th>
22931          </tr>
22932          <tr class="entry_cont">
22933            <td class="entry_details" colspan="6">
22934              <p>For <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> values less than or
22935equal to this,<wbr/> all applied gain must be analog.<wbr/> For
22936values above this,<wbr/> the gain applied can be a mix of analog and
22937digital.<wbr/></p>
22938            </td>
22939          </tr>
22940
22941
22942          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22943           <!-- end of entry -->
22944
22945
22946          <tr class="entry" id="static_android.sensor.orientation">
22947            <td class="entry_name
22948             " rowspan="3">
22949              android.<wbr/>sensor.<wbr/>orientation
22950            </td>
22951            <td class="entry_type">
22952                <span class="entry_type_name">int32</span>
22953
22954              <span class="entry_type_visibility"> [public]</span>
22955
22956
22957              <span class="entry_type_hwlevel">[legacy] </span>
22958
22959
22960
22961
22962            </td> <!-- entry_type -->
22963
22964            <td class="entry_description">
22965              <p>Clockwise angle through which the output image needs to be rotated to be
22966upright on the device screen in its native orientation.<wbr/></p>
22967            </td>
22968
22969            <td class="entry_units">
22970              Degrees of clockwise rotation; always a multiple of
22971          90
22972            </td>
22973
22974            <td class="entry_range">
22975              <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p>
22976            </td>
22977
22978            <td class="entry_hal_version">
22979              <p>3.<wbr/>2</p>
22980            </td>
22981
22982            <td class="entry_tags">
22983              <ul class="entry_tags">
22984                  <li><a href="#tag_BC">BC</a></li>
22985              </ul>
22986            </td>
22987
22988          </tr>
22989          <tr class="entries_header">
22990            <th class="th_details" colspan="6">Details</th>
22991          </tr>
22992          <tr class="entry_cont">
22993            <td class="entry_details" colspan="6">
22994              <p>Also defines the direction of rolling shutter readout,<wbr/> which is from top to bottom in
22995the sensor's coordinate system.<wbr/></p>
22996            </td>
22997          </tr>
22998
22999
23000          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23001           <!-- end of entry -->
23002
23003
23004          <tr class="entry" id="static_android.sensor.profileHueSatMapDimensions">
23005            <td class="entry_name
23006             " rowspan="3">
23007              android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map<wbr/>Dimensions
23008            </td>
23009            <td class="entry_type">
23010                <span class="entry_type_name">int32</span>
23011                <span class="entry_type_container">x</span>
23012
23013                <span class="entry_type_array">
23014                  3
23015                </span>
23016              <span class="entry_type_visibility"> [system]</span>
23017
23018
23019
23020
23021                <div class="entry_type_notes">Number of samples for hue,<wbr/> saturation,<wbr/> and value</div>
23022
23023
23024            </td> <!-- entry_type -->
23025
23026            <td class="entry_description">
23027              <p>The number of input samples for each dimension of
23028<a href="#dynamic_android.sensor.profileHueSatMap">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map</a>.<wbr/></p>
23029            </td>
23030
23031            <td class="entry_units">
23032            </td>
23033
23034            <td class="entry_range">
23035              <p>Hue &gt;= 1,<wbr/>
23036Saturation &gt;= 2,<wbr/>
23037Value &gt;= 1</p>
23038            </td>
23039
23040            <td class="entry_hal_version">
23041              <p>3.<wbr/>2</p>
23042            </td>
23043
23044            <td class="entry_tags">
23045              <ul class="entry_tags">
23046                  <li><a href="#tag_RAW">RAW</a></li>
23047              </ul>
23048            </td>
23049
23050          </tr>
23051          <tr class="entries_header">
23052            <th class="th_details" colspan="6">Details</th>
23053          </tr>
23054          <tr class="entry_cont">
23055            <td class="entry_details" colspan="6">
23056              <p>The number of input samples for the hue,<wbr/> saturation,<wbr/> and value
23057dimension of <a href="#dynamic_android.sensor.profileHueSatMap">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map</a>.<wbr/> The order of the
23058dimensions given is hue,<wbr/> saturation,<wbr/> value; where hue is the 0th
23059element.<wbr/></p>
23060            </td>
23061          </tr>
23062
23063
23064          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23065           <!-- end of entry -->
23066
23067
23068          <tr class="entry" id="static_android.sensor.availableTestPatternModes">
23069            <td class="entry_name
23070             " rowspan="5">
23071              android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes
23072            </td>
23073            <td class="entry_type">
23074                <span class="entry_type_name">int32</span>
23075                <span class="entry_type_container">x</span>
23076
23077                <span class="entry_type_array">
23078                  n
23079                </span>
23080              <span class="entry_type_visibility"> [public]</span>
23081
23082
23083
23084
23085                <div class="entry_type_notes">list of enums</div>
23086
23087
23088            </td> <!-- entry_type -->
23089
23090            <td class="entry_description">
23091              <p>List of sensor test pattern modes for <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a>
23092supported by this camera device.<wbr/></p>
23093            </td>
23094
23095            <td class="entry_units">
23096            </td>
23097
23098            <td class="entry_range">
23099              <p>Any value listed in <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a></p>
23100            </td>
23101
23102            <td class="entry_hal_version">
23103              <p>3.<wbr/>2</p>
23104            </td>
23105
23106            <td class="entry_tags">
23107            </td>
23108
23109          </tr>
23110          <tr class="entries_header">
23111            <th class="th_details" colspan="6">Details</th>
23112          </tr>
23113          <tr class="entry_cont">
23114            <td class="entry_details" colspan="6">
23115              <p>Defaults to OFF,<wbr/> and always includes OFF if defined.<wbr/></p>
23116            </td>
23117          </tr>
23118
23119          <tr class="entries_header">
23120            <th class="th_details" colspan="6">HAL Implementation Details</th>
23121          </tr>
23122          <tr class="entry_cont">
23123            <td class="entry_details" colspan="6">
23124              <p>All custom modes must be &gt;= CUSTOM1.<wbr/></p>
23125            </td>
23126          </tr>
23127
23128          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23129           <!-- end of entry -->
23130
23131
23132          <tr class="entry" id="static_android.sensor.opticalBlackRegions">
23133            <td class="entry_name
23134             " rowspan="5">
23135              android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions
23136            </td>
23137            <td class="entry_type">
23138                <span class="entry_type_name">int32</span>
23139                <span class="entry_type_container">x</span>
23140
23141                <span class="entry_type_array">
23142                  4 x num_regions
23143                </span>
23144              <span class="entry_type_visibility"> [public as rectangle]</span>
23145
23146
23147
23148
23149
23150
23151            </td> <!-- entry_type -->
23152
23153            <td class="entry_description">
23154              <p>List of disjoint rectangles indicating the sensor
23155optically shielded black pixel regions.<wbr/></p>
23156            </td>
23157
23158            <td class="entry_units">
23159            </td>
23160
23161            <td class="entry_range">
23162            </td>
23163
23164            <td class="entry_hal_version">
23165              <p>3.<wbr/>2</p>
23166            </td>
23167
23168            <td class="entry_tags">
23169            </td>
23170
23171          </tr>
23172          <tr class="entries_header">
23173            <th class="th_details" colspan="6">Details</th>
23174          </tr>
23175          <tr class="entry_cont">
23176            <td class="entry_details" colspan="6">
23177              <p>In most camera sensors,<wbr/> the active array is surrounded by some
23178optically shielded pixel areas.<wbr/> By blocking light,<wbr/> these pixels
23179provides a reliable black reference for black level compensation
23180in active array region.<wbr/></p>
23181<p>This key provides a list of disjoint rectangles specifying the
23182regions of optically shielded (with metal shield) black pixel
23183regions if the camera device is capable of reading out these black
23184pixels in the output raw images.<wbr/> In comparison to the fixed black
23185level values reported by <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a>,<wbr/> this key
23186may provide a more accurate way for the application to calculate
23187black level of each captured raw images.<wbr/></p>
23188<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
23189<a href="#dynamic_android.sensor.dynamicWhiteLevel">android.<wbr/>sensor.<wbr/>dynamic<wbr/>White<wbr/>Level</a> will also be reported.<wbr/></p>
23190            </td>
23191          </tr>
23192
23193          <tr class="entries_header">
23194            <th class="th_details" colspan="6">HAL Implementation Details</th>
23195          </tr>
23196          <tr class="entry_cont">
23197            <td class="entry_details" colspan="6">
23198              <p>This array contains (xmin,<wbr/> ymin,<wbr/> width,<wbr/> height).<wbr/> The (xmin,<wbr/> ymin)
23199must be &gt;= (0,<wbr/>0) and &lt;=
23200<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
23201&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
23202outside the region reported by
23203<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>
23204<p>The HAL must report minimal number of disjoint regions for the
23205optically shielded back pixel regions.<wbr/> For example,<wbr/> if a region can
23206be covered by one rectangle,<wbr/> the HAL must not split this region into
23207multiple rectangles.<wbr/></p>
23208            </td>
23209          </tr>
23210
23211          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23212           <!-- end of entry -->
23213
23214
23215          <tr class="entry" id="static_android.sensor.opaqueRawSize">
23216            <td class="entry_name
23217             " rowspan="5">
23218              android.<wbr/>sensor.<wbr/>opaque<wbr/>Raw<wbr/>Size
23219            </td>
23220            <td class="entry_type">
23221                <span class="entry_type_name">int32</span>
23222                <span class="entry_type_container">x</span>
23223
23224                <span class="entry_type_array">
23225                  n x 3
23226                </span>
23227              <span class="entry_type_visibility"> [system]</span>
23228
23229
23230
23231
23232
23233
23234            </td> <!-- entry_type -->
23235
23236            <td class="entry_description">
23237              <p>Size in bytes for all the listed opaque RAW buffer sizes</p>
23238            </td>
23239
23240            <td class="entry_units">
23241            </td>
23242
23243            <td class="entry_range">
23244              <p>Must be large enough to fit the opaque RAW of corresponding size produced by
23245the camera</p>
23246            </td>
23247
23248            <td class="entry_hal_version">
23249              <p>3.<wbr/>2</p>
23250            </td>
23251
23252            <td class="entry_tags">
23253            </td>
23254
23255          </tr>
23256          <tr class="entries_header">
23257            <th class="th_details" colspan="6">Details</th>
23258          </tr>
23259          <tr class="entry_cont">
23260            <td class="entry_details" colspan="6">
23261              <p>This configurations are listed as <code>(width,<wbr/> height,<wbr/> size_<wbr/>in_<wbr/>bytes)</code> tuples.<wbr/>
23262This is used for sizing the gralloc buffers for opaque RAW buffers.<wbr/>
23263All RAW_<wbr/>OPAQUE output stream configuration listed in
23264<a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> will have a corresponding tuple in
23265this key.<wbr/></p>
23266            </td>
23267          </tr>
23268
23269          <tr class="entries_header">
23270            <th class="th_details" colspan="6">HAL Implementation Details</th>
23271          </tr>
23272          <tr class="entry_cont">
23273            <td class="entry_details" colspan="6">
23274              <p>This key is added in legacy HAL3.<wbr/>4.<wbr/></p>
23275<p>For legacy HAL3.<wbr/>4 or above: devices advertising RAW_<wbr/>OPAQUE format output must list this
23276key.<wbr/>  For legacy HAL3.<wbr/>3 or earlier devices: if RAW_<wbr/>OPAQUE ouput is advertised,<wbr/> camera
23277framework will derive this key by assuming each pixel takes two bytes and no padding bytes
23278between rows.<wbr/></p>
23279            </td>
23280          </tr>
23281
23282          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23283           <!-- end of entry -->
23284
23285
23286
23287      <!-- end of kind -->
23288      </tbody>
23289      <tr><td colspan="7" class="kind">dynamic</td></tr>
23290
23291      <thead class="entries_header">
23292        <tr>
23293          <th class="th_name">Property Name</th>
23294          <th class="th_type">Type</th>
23295          <th class="th_description">Description</th>
23296          <th class="th_units">Units</th>
23297          <th class="th_range">Range</th>
23298          <th class="th_hal_version">Initial HIDL HAL version</th>
23299          <th class="th_tags">Tags</th>
23300        </tr>
23301      </thead>
23302
23303      <tbody>
23304
23305
23306
23307
23308
23309
23310
23311
23312
23313
23314          <tr class="entry" id="dynamic_android.sensor.exposureTime">
23315            <td class="entry_name
23316             " rowspan="3">
23317              android.<wbr/>sensor.<wbr/>exposure<wbr/>Time
23318            </td>
23319            <td class="entry_type">
23320                <span class="entry_type_name">int64</span>
23321
23322              <span class="entry_type_visibility"> [public]</span>
23323
23324
23325              <span class="entry_type_hwlevel">[full] </span>
23326
23327
23328
23329
23330            </td> <!-- entry_type -->
23331
23332            <td class="entry_description">
23333              <p>Duration each pixel is exposed to
23334light.<wbr/></p>
23335            </td>
23336
23337            <td class="entry_units">
23338              Nanoseconds
23339            </td>
23340
23341            <td class="entry_range">
23342              <p><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></p>
23343            </td>
23344
23345            <td class="entry_hal_version">
23346              <p>3.<wbr/>2</p>
23347            </td>
23348
23349            <td class="entry_tags">
23350              <ul class="entry_tags">
23351                  <li><a href="#tag_V1">V1</a></li>
23352              </ul>
23353            </td>
23354
23355          </tr>
23356          <tr class="entries_header">
23357            <th class="th_details" colspan="6">Details</th>
23358          </tr>
23359          <tr class="entry_cont">
23360            <td class="entry_details" colspan="6">
23361              <p>If the sensor can't expose this exact duration,<wbr/> it will shorten the
23362duration exposed to the nearest possible value (rather than expose longer).<wbr/>
23363The final exposure time used will be available in the output capture result.<wbr/></p>
23364<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
23365OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
23366            </td>
23367          </tr>
23368
23369
23370          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23371           <!-- end of entry -->
23372
23373
23374          <tr class="entry" id="dynamic_android.sensor.frameDuration">
23375            <td class="entry_name
23376             " rowspan="5">
23377              android.<wbr/>sensor.<wbr/>frame<wbr/>Duration
23378            </td>
23379            <td class="entry_type">
23380                <span class="entry_type_name">int64</span>
23381
23382              <span class="entry_type_visibility"> [public]</span>
23383
23384
23385              <span class="entry_type_hwlevel">[full] </span>
23386
23387
23388
23389
23390            </td> <!-- entry_type -->
23391
23392            <td class="entry_description">
23393              <p>Duration from start of frame exposure to
23394start of next frame exposure.<wbr/></p>
23395            </td>
23396
23397            <td class="entry_units">
23398              Nanoseconds
23399            </td>
23400
23401            <td class="entry_range">
23402              <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/>
23403The duration is capped to <code>max(duration,<wbr/> exposureTime + overhead)</code>.<wbr/></p>
23404            </td>
23405
23406            <td class="entry_hal_version">
23407              <p>3.<wbr/>2</p>
23408            </td>
23409
23410            <td class="entry_tags">
23411              <ul class="entry_tags">
23412                  <li><a href="#tag_V1">V1</a></li>
23413              </ul>
23414            </td>
23415
23416          </tr>
23417          <tr class="entries_header">
23418            <th class="th_details" colspan="6">Details</th>
23419          </tr>
23420          <tr class="entry_cont">
23421            <td class="entry_details" colspan="6">
23422              <p>The maximum frame rate that can be supported by a camera subsystem is
23423a function of many factors:</p>
23424<ul>
23425<li>Requested resolutions of output image streams</li>
23426<li>Availability of binning /<wbr/> skipping modes on the imager</li>
23427<li>The bandwidth of the imager interface</li>
23428<li>The bandwidth of the various ISP processing blocks</li>
23429</ul>
23430<p>Since these factors can vary greatly between different ISPs and
23431sensors,<wbr/> the camera abstraction tries to represent the bandwidth
23432restrictions with as simple a model as possible.<wbr/></p>
23433<p>The model presented has the following characteristics:</p>
23434<ul>
23435<li>The image sensor is always configured to output the smallest
23436resolution possible given the application's requested output stream
23437sizes.<wbr/>  The smallest resolution is defined as being at least as large
23438as the largest requested output stream size; the camera pipeline must
23439never digitally upsample sensor data when the crop region covers the
23440whole sensor.<wbr/> In general,<wbr/> this means that if only small output stream
23441resolutions are configured,<wbr/> the sensor can provide a higher frame
23442rate.<wbr/></li>
23443<li>Since any request may use any or all the currently configured
23444output streams,<wbr/> the sensor and ISP must be configured to support
23445scaling a single capture to all the streams at the same time.<wbr/>  This
23446means the camera pipeline must be ready to produce the largest
23447requested output size without any delay.<wbr/>  Therefore,<wbr/> the overall
23448frame rate of a given configured stream set is governed only by the
23449largest requested stream resolution.<wbr/></li>
23450<li>Using more than one output stream in a request does not affect the
23451frame duration.<wbr/></li>
23452<li>Certain format-streams may need to do additional background processing
23453before data is consumed/<wbr/>produced by that stream.<wbr/> These processors
23454can run concurrently to the rest of the camera pipeline,<wbr/> but
23455cannot process more than 1 capture at a time.<wbr/></li>
23456</ul>
23457<p>The necessary information for the application,<wbr/> given the model above,<wbr/> is provided via
23458<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/>
23459These are used to determine the maximum frame rate /<wbr/> minimum frame duration that is
23460possible for a given stream configuration.<wbr/></p>
23461<p>Specifically,<wbr/> the application can use the following rules to
23462determine the minimum frame duration it can request from the camera
23463device:</p>
23464<ol>
23465<li>Let the set of currently configured input/<wbr/>output streams be called <code>S</code>.<wbr/></li>
23466<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>
23467(with its respective size/<wbr/>format).<wbr/> Let this set of frame durations be called <code>F</code>.<wbr/></li>
23468<li>For any given request <code>R</code>,<wbr/> the minimum frame duration allowed for <code>R</code> is the maximum
23469out 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>
23470</ol>
23471<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>
23472using its respective size/<wbr/>format),<wbr/> then the frame duration in <code>F</code> determines the steady
23473state frame rate that the application will get if it uses <code>R</code> as a repeating request.<wbr/> Let
23474this special kind of request be called <code>Rsimple</code>.<wbr/></p>
23475<p>A repeating request <code>Rsimple</code> can be <em>occasionally</em> interleaved by a single capture of a
23476new request <code>Rstall</code> (which has at least one in-use stream with a non-0 stall time) and if
23477<code>Rstall</code> has the same minimum frame duration this will not cause a frame rate loss if all
23478buffers from the previous <code>Rstall</code> have already been delivered.<wbr/></p>
23479<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>
23480<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
23481OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
23482            </td>
23483          </tr>
23484
23485          <tr class="entries_header">
23486            <th class="th_details" colspan="6">HAL Implementation Details</th>
23487          </tr>
23488          <tr class="entry_cont">
23489            <td class="entry_details" colspan="6">
23490              <p>For more details about stalling,<wbr/> see
23491<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>.<wbr/></p>
23492            </td>
23493          </tr>
23494
23495          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23496           <!-- end of entry -->
23497
23498
23499          <tr class="entry" id="dynamic_android.sensor.sensitivity">
23500            <td class="entry_name
23501             " rowspan="5">
23502              android.<wbr/>sensor.<wbr/>sensitivity
23503            </td>
23504            <td class="entry_type">
23505                <span class="entry_type_name">int32</span>
23506
23507              <span class="entry_type_visibility"> [public]</span>
23508
23509
23510              <span class="entry_type_hwlevel">[full] </span>
23511
23512
23513
23514
23515            </td> <!-- entry_type -->
23516
23517            <td class="entry_description">
23518              <p>The amount of gain applied to sensor data
23519before processing.<wbr/></p>
23520            </td>
23521
23522            <td class="entry_units">
23523              ISO arithmetic units
23524            </td>
23525
23526            <td class="entry_range">
23527              <p><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></p>
23528            </td>
23529
23530            <td class="entry_hal_version">
23531              <p>3.<wbr/>2</p>
23532            </td>
23533
23534            <td class="entry_tags">
23535              <ul class="entry_tags">
23536                  <li><a href="#tag_V1">V1</a></li>
23537              </ul>
23538            </td>
23539
23540          </tr>
23541          <tr class="entries_header">
23542            <th class="th_details" colspan="6">Details</th>
23543          </tr>
23544          <tr class="entry_cont">
23545            <td class="entry_details" colspan="6">
23546              <p>The sensitivity is the standard ISO sensitivity value,<wbr/>
23547as defined in ISO 12232:2006.<wbr/></p>
23548<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
23549if if it less than <a href="#static_android.sensor.maxAnalogSensitivity">android.<wbr/>sensor.<wbr/>max<wbr/>Analog<wbr/>Sensitivity</a>,<wbr/> the camera device
23550is guaranteed to use only analog amplification for applying the gain.<wbr/></p>
23551<p>If the camera device cannot apply the exact sensitivity
23552requested,<wbr/> it will reduce the gain to the nearest supported
23553value.<wbr/> The final sensitivity used will be available in the
23554output capture result.<wbr/></p>
23555<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
23556OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
23557            </td>
23558          </tr>
23559
23560          <tr class="entries_header">
23561            <th class="th_details" colspan="6">HAL Implementation Details</th>
23562          </tr>
23563          <tr class="entry_cont">
23564            <td class="entry_details" colspan="6">
23565              <p>ISO 12232:2006 REI method is acceptable.<wbr/></p>
23566            </td>
23567          </tr>
23568
23569          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23570           <!-- end of entry -->
23571
23572
23573          <tr class="entry" id="dynamic_android.sensor.timestamp">
23574            <td class="entry_name
23575             " rowspan="5">
23576              android.<wbr/>sensor.<wbr/>timestamp
23577            </td>
23578            <td class="entry_type">
23579                <span class="entry_type_name">int64</span>
23580
23581              <span class="entry_type_visibility"> [public]</span>
23582
23583
23584              <span class="entry_type_hwlevel">[legacy] </span>
23585
23586
23587
23588
23589            </td> <!-- entry_type -->
23590
23591            <td class="entry_description">
23592              <p>Time at start of exposure of first
23593row of the image sensor active array,<wbr/> in nanoseconds.<wbr/></p>
23594            </td>
23595
23596            <td class="entry_units">
23597              Nanoseconds
23598            </td>
23599
23600            <td class="entry_range">
23601              <p>&gt; 0</p>
23602            </td>
23603
23604            <td class="entry_hal_version">
23605              <p>3.<wbr/>2</p>
23606            </td>
23607
23608            <td class="entry_tags">
23609              <ul class="entry_tags">
23610                  <li><a href="#tag_BC">BC</a></li>
23611              </ul>
23612            </td>
23613
23614          </tr>
23615          <tr class="entries_header">
23616            <th class="th_details" colspan="6">Details</th>
23617          </tr>
23618          <tr class="entry_cont">
23619            <td class="entry_details" colspan="6">
23620              <p>The timestamps are also included in all image
23621buffers produced for the same capture,<wbr/> and will be identical
23622on all the outputs.<wbr/></p>
23623<p>When <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> UNKNOWN,<wbr/>
23624the timestamps measure time since an unspecified starting point,<wbr/>
23625and are monotonically increasing.<wbr/> They can be compared with the
23626timestamps for other captures from the same camera device,<wbr/> but are
23627not guaranteed to be comparable to any other time source.<wbr/></p>
23628<p>When <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME,<wbr/> the
23629timestamps 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
23630be compared to other timestamps from other subsystems that
23631are using that base.<wbr/></p>
23632<p>For reprocessing,<wbr/> the timestamp will match the start of exposure of
23633the input image,<wbr/> i.<wbr/>e.<wbr/> <a href="https://developer.android.com/reference/CaptureResult.html#SENSOR_TIMESTAMP">the
23634timestamp</a> in the TotalCaptureResult that was used to create the
23635reprocess capture request.<wbr/></p>
23636            </td>
23637          </tr>
23638
23639          <tr class="entries_header">
23640            <th class="th_details" colspan="6">HAL Implementation Details</th>
23641          </tr>
23642          <tr class="entry_cont">
23643            <td class="entry_details" colspan="6">
23644              <p>All timestamps must be in reference to the kernel's
23645CLOCK_<wbr/>BOOTTIME monotonic clock,<wbr/> which properly accounts for
23646time spent asleep.<wbr/> This allows for synchronization with
23647sensors that continue to operate while the system is
23648otherwise asleep.<wbr/></p>
23649<p>If <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME,<wbr/>
23650The timestamp must be synchronized with the timestamps from other
23651sensor subsystems that are using the same timebase.<wbr/></p>
23652<p>For reprocessing,<wbr/> the input image's start of exposure can be looked up
23653with <a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a> from the metadata included in the
23654capture request.<wbr/></p>
23655            </td>
23656          </tr>
23657
23658          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23659           <!-- end of entry -->
23660
23661
23662          <tr class="entry" id="dynamic_android.sensor.temperature">
23663            <td class="entry_name
23664             " rowspan="1">
23665              android.<wbr/>sensor.<wbr/>temperature
23666            </td>
23667            <td class="entry_type">
23668                <span class="entry_type_name">float</span>
23669
23670              <span class="entry_type_visibility"> [system]</span>
23671
23672
23673
23674
23675
23676
23677            </td> <!-- entry_type -->
23678
23679            <td class="entry_description">
23680              <p>The temperature of the sensor,<wbr/> sampled at the time
23681exposure began for this frame.<wbr/></p>
23682<p>The thermal diode being queried should be inside the sensor PCB,<wbr/> or
23683somewhere close to it.<wbr/></p>
23684            </td>
23685
23686            <td class="entry_units">
23687              Celsius
23688            </td>
23689
23690            <td class="entry_range">
23691              <p>Optional.<wbr/> This value is missing if no temperature is available.<wbr/></p>
23692            </td>
23693
23694            <td class="entry_hal_version">
23695              <p>3.<wbr/>2</p>
23696            </td>
23697
23698            <td class="entry_tags">
23699              <ul class="entry_tags">
23700                  <li><a href="#tag_FUTURE">FUTURE</a></li>
23701              </ul>
23702            </td>
23703
23704          </tr>
23705
23706
23707          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23708           <!-- end of entry -->
23709
23710
23711          <tr class="entry" id="dynamic_android.sensor.neutralColorPoint">
23712            <td class="entry_name
23713             " rowspan="3">
23714              android.<wbr/>sensor.<wbr/>neutral<wbr/>Color<wbr/>Point
23715            </td>
23716            <td class="entry_type">
23717                <span class="entry_type_name">rational</span>
23718                <span class="entry_type_container">x</span>
23719
23720                <span class="entry_type_array">
23721                  3
23722                </span>
23723              <span class="entry_type_visibility"> [public]</span>
23724
23725
23726
23727
23728
23729
23730            </td> <!-- entry_type -->
23731
23732            <td class="entry_description">
23733              <p>The estimated camera neutral color in the native sensor colorspace at
23734the time of capture.<wbr/></p>
23735            </td>
23736
23737            <td class="entry_units">
23738            </td>
23739
23740            <td class="entry_range">
23741            </td>
23742
23743            <td class="entry_hal_version">
23744              <p>3.<wbr/>2</p>
23745            </td>
23746
23747            <td class="entry_tags">
23748              <ul class="entry_tags">
23749                  <li><a href="#tag_RAW">RAW</a></li>
23750              </ul>
23751            </td>
23752
23753          </tr>
23754          <tr class="entries_header">
23755            <th class="th_details" colspan="6">Details</th>
23756          </tr>
23757          <tr class="entry_cont">
23758            <td class="entry_details" colspan="6">
23759              <p>This value gives the neutral color point encoded as an RGB value in the
23760native sensor color space.<wbr/>  The neutral color point indicates the
23761currently estimated white point of the scene illumination.<wbr/>  It can be
23762used to interpolate between the provided color transforms when
23763processing raw sensor data.<wbr/></p>
23764<p>The order of the values is R,<wbr/> G,<wbr/> B; where R is in the lowest index.<wbr/></p>
23765<p>Starting from Android Q,<wbr/> this key will not be present for a MONOCHROME camera,<wbr/> even if
23766the camera device has RAW capability.<wbr/></p>
23767            </td>
23768          </tr>
23769
23770
23771          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23772           <!-- end of entry -->
23773
23774
23775          <tr class="entry" id="dynamic_android.sensor.noiseProfile">
23776            <td class="entry_name
23777             " rowspan="5">
23778              android.<wbr/>sensor.<wbr/>noise<wbr/>Profile
23779            </td>
23780            <td class="entry_type">
23781                <span class="entry_type_name">double</span>
23782                <span class="entry_type_container">x</span>
23783
23784                <span class="entry_type_array">
23785                  2 x CFA Channels
23786                </span>
23787              <span class="entry_type_visibility"> [public as pairDoubleDouble]</span>
23788
23789
23790
23791
23792                <div class="entry_type_notes">Pairs of noise model coefficients</div>
23793
23794
23795            </td> <!-- entry_type -->
23796
23797            <td class="entry_description">
23798              <p>Noise model coefficients for each CFA mosaic channel.<wbr/></p>
23799            </td>
23800
23801            <td class="entry_units">
23802            </td>
23803
23804            <td class="entry_range">
23805            </td>
23806
23807            <td class="entry_hal_version">
23808              <p>3.<wbr/>2</p>
23809            </td>
23810
23811            <td class="entry_tags">
23812              <ul class="entry_tags">
23813                  <li><a href="#tag_RAW">RAW</a></li>
23814              </ul>
23815            </td>
23816
23817          </tr>
23818          <tr class="entries_header">
23819            <th class="th_details" colspan="6">Details</th>
23820          </tr>
23821          <tr class="entry_cont">
23822            <td class="entry_details" colspan="6">
23823              <p>This key contains two noise model coefficients for each CFA channel
23824corresponding to the sensor amplification (S) and sensor readout
23825noise (O).<wbr/>  These are given as pairs of coefficients for each channel
23826in the same order as channels listed for the CFA layout key
23827(see <a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a>).<wbr/>  This is
23828represented as an array of Pair&lt;Double,<wbr/> Double&gt;,<wbr/> where
23829the first member of the Pair at index n is the S coefficient and the
23830second member is the O coefficient for the nth color channel in the CFA.<wbr/></p>
23831<p>These coefficients are used in a two parameter noise model to describe
23832the amount of noise present in the image for each CFA channel.<wbr/>  The
23833noise model used here is:</p>
23834<p>N(x) = sqrt(Sx + O)</p>
23835<p>Where x represents the recorded signal of a CFA channel normalized to
23836the range [0,<wbr/> 1],<wbr/> and S and O are the noise model coeffiecients for
23837that channel.<wbr/></p>
23838<p>A more detailed description of the noise model can be found in the
23839Adobe DNG specification for the NoiseProfile tag.<wbr/></p>
23840<p>For a MONOCHROME camera,<wbr/> there is only one color channel.<wbr/> So the noise model coefficients
23841will only contain one S and one O.<wbr/></p>
23842            </td>
23843          </tr>
23844
23845          <tr class="entries_header">
23846            <th class="th_details" colspan="6">HAL Implementation Details</th>
23847          </tr>
23848          <tr class="entry_cont">
23849            <td class="entry_details" colspan="6">
23850              <p>For a CFA layout of RGGB,<wbr/> the list of coefficients would be given as
23851an array of doubles S0,<wbr/>O0,<wbr/>S1,<wbr/>O1,...,<wbr/> where S0 and O0 are the coefficients
23852for the red channel,<wbr/> S1 and O1 are the coefficients for the first green
23853channel,<wbr/> etc.<wbr/></p>
23854            </td>
23855          </tr>
23856
23857          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23858           <!-- end of entry -->
23859
23860
23861          <tr class="entry" id="dynamic_android.sensor.profileHueSatMap">
23862            <td class="entry_name
23863             " rowspan="3">
23864              android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map
23865            </td>
23866            <td class="entry_type">
23867                <span class="entry_type_name">float</span>
23868                <span class="entry_type_container">x</span>
23869
23870                <span class="entry_type_array">
23871                  hue_samples x saturation_samples x value_samples x 3
23872                </span>
23873              <span class="entry_type_visibility"> [system]</span>
23874
23875
23876
23877
23878                <div class="entry_type_notes">Mapping for hue,<wbr/> saturation,<wbr/> and value</div>
23879
23880
23881            </td> <!-- entry_type -->
23882
23883            <td class="entry_description">
23884              <p>A mapping containing a hue shift,<wbr/> saturation scale,<wbr/> and value scale
23885for each pixel.<wbr/></p>
23886            </td>
23887
23888            <td class="entry_units">
23889
23890          The hue shift is given in degrees; saturation and value scale factors are
23891          unitless and are between 0 and 1 inclusive
23892
23893            </td>
23894
23895            <td class="entry_range">
23896            </td>
23897
23898            <td class="entry_hal_version">
23899              <p>3.<wbr/>2</p>
23900            </td>
23901
23902            <td class="entry_tags">
23903              <ul class="entry_tags">
23904                  <li><a href="#tag_RAW">RAW</a></li>
23905              </ul>
23906            </td>
23907
23908          </tr>
23909          <tr class="entries_header">
23910            <th class="th_details" colspan="6">Details</th>
23911          </tr>
23912          <tr class="entry_cont">
23913            <td class="entry_details" colspan="6">
23914              <p>hue_<wbr/>samples,<wbr/> saturation_<wbr/>samples,<wbr/> and value_<wbr/>samples are given in
23915<a href="#static_android.sensor.profileHueSatMapDimensions">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map<wbr/>Dimensions</a>.<wbr/></p>
23916<p>Each entry of this map contains three floats corresponding to the
23917hue shift,<wbr/> saturation scale,<wbr/> and value scale,<wbr/> respectively; where the
23918hue shift has the lowest index.<wbr/> The map entries are stored in the key
23919in nested loop order,<wbr/> with the value divisions in the outer loop,<wbr/> the
23920hue divisions in the middle loop,<wbr/> and the saturation divisions in the
23921inner loop.<wbr/> All zero input saturation entries are required to have a
23922value scale factor of 1.<wbr/>0.<wbr/></p>
23923            </td>
23924          </tr>
23925
23926
23927          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23928           <!-- end of entry -->
23929
23930
23931          <tr class="entry" id="dynamic_android.sensor.profileToneCurve">
23932            <td class="entry_name
23933             " rowspan="3">
23934              android.<wbr/>sensor.<wbr/>profile<wbr/>Tone<wbr/>Curve
23935            </td>
23936            <td class="entry_type">
23937                <span class="entry_type_name">float</span>
23938                <span class="entry_type_container">x</span>
23939
23940                <span class="entry_type_array">
23941                  samples x 2
23942                </span>
23943              <span class="entry_type_visibility"> [system]</span>
23944
23945
23946
23947
23948                <div class="entry_type_notes">Samples defining a spline for a tone-mapping curve</div>
23949
23950
23951            </td> <!-- entry_type -->
23952
23953            <td class="entry_description">
23954              <p>A list of x,<wbr/>y samples defining a tone-mapping curve for gamma adjustment.<wbr/></p>
23955            </td>
23956
23957            <td class="entry_units">
23958            </td>
23959
23960            <td class="entry_range">
23961              <p>Each sample has an input range of <code>[0,<wbr/> 1]</code> and an output range of
23962<code>[0,<wbr/> 1]</code>.<wbr/>  The first sample is required to be <code>(0,<wbr/> 0)</code>,<wbr/> and the last
23963sample is required to be <code>(1,<wbr/> 1)</code>.<wbr/></p>
23964            </td>
23965
23966            <td class="entry_hal_version">
23967              <p>3.<wbr/>2</p>
23968            </td>
23969
23970            <td class="entry_tags">
23971              <ul class="entry_tags">
23972                  <li><a href="#tag_RAW">RAW</a></li>
23973              </ul>
23974            </td>
23975
23976          </tr>
23977          <tr class="entries_header">
23978            <th class="th_details" colspan="6">Details</th>
23979          </tr>
23980          <tr class="entry_cont">
23981            <td class="entry_details" colspan="6">
23982              <p>This key contains a default tone curve that can be applied while
23983processing the image as a starting point for user adjustments.<wbr/>
23984The curve is specified as a list of value pairs in linear gamma.<wbr/>
23985The curve is interpolated using a cubic spline.<wbr/></p>
23986            </td>
23987          </tr>
23988
23989
23990          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23991           <!-- end of entry -->
23992
23993
23994          <tr class="entry" id="dynamic_android.sensor.greenSplit">
23995            <td class="entry_name
23996             " rowspan="5">
23997              android.<wbr/>sensor.<wbr/>green<wbr/>Split
23998            </td>
23999            <td class="entry_type">
24000                <span class="entry_type_name">float</span>
24001
24002              <span class="entry_type_visibility"> [public]</span>
24003
24004
24005
24006
24007
24008
24009            </td> <!-- entry_type -->
24010
24011            <td class="entry_description">
24012              <p>The worst-case divergence between Bayer green channels.<wbr/></p>
24013            </td>
24014
24015            <td class="entry_units">
24016            </td>
24017
24018            <td class="entry_range">
24019              <p>&gt;= 0</p>
24020            </td>
24021
24022            <td class="entry_hal_version">
24023              <p>3.<wbr/>2</p>
24024            </td>
24025
24026            <td class="entry_tags">
24027              <ul class="entry_tags">
24028                  <li><a href="#tag_RAW">RAW</a></li>
24029              </ul>
24030            </td>
24031
24032          </tr>
24033          <tr class="entries_header">
24034            <th class="th_details" colspan="6">Details</th>
24035          </tr>
24036          <tr class="entry_cont">
24037            <td class="entry_details" colspan="6">
24038              <p>This value is an estimate of the worst case split between the
24039Bayer green channels in the red and blue rows in the sensor color
24040filter array.<wbr/></p>
24041<p>The green split is calculated as follows:</p>
24042<ol>
24043<li>A 5x5 pixel (or larger) window W within the active sensor array is
24044chosen.<wbr/> The term 'pixel' here is taken to mean a group of 4 Bayer
24045mosaic channels (R,<wbr/> Gr,<wbr/> Gb,<wbr/> B).<wbr/>  The location and size of the window
24046chosen is implementation defined,<wbr/> and should be chosen to provide a
24047green split estimate that is both representative of the entire image
24048for this camera sensor,<wbr/> and can be calculated quickly.<wbr/></li>
24049<li>The arithmetic mean of the green channels from the red
24050rows (mean_<wbr/>Gr) within W is computed.<wbr/></li>
24051<li>The arithmetic mean of the green channels from the blue
24052rows (mean_<wbr/>Gb) within W is computed.<wbr/></li>
24053<li>The maximum ratio R of the two means is computed as follows:
24054<code>R = max((mean_<wbr/>Gr + 1)/<wbr/>(mean_<wbr/>Gb + 1),<wbr/> (mean_<wbr/>Gb + 1)/<wbr/>(mean_<wbr/>Gr + 1))</code></li>
24055</ol>
24056<p>The ratio R is the green split divergence reported for this property,<wbr/>
24057which represents how much the green channels differ in the mosaic
24058pattern.<wbr/>  This value is typically used to determine the treatment of
24059the green mosaic channels when demosaicing.<wbr/></p>
24060<p>The green split value can be roughly interpreted as follows:</p>
24061<ul>
24062<li>R &lt; 1.<wbr/>03 is a negligible split (&lt;3% divergence).<wbr/></li>
24063<li>1.<wbr/>20 &lt;= R &gt;= 1.<wbr/>03 will require some software
24064correction to avoid demosaic errors (3-20% divergence).<wbr/></li>
24065<li>R &gt; 1.<wbr/>20 will require strong software correction to produce
24066a usuable image (&gt;20% divergence).<wbr/></li>
24067</ul>
24068<p>Starting from Android Q,<wbr/> this key will not be present for a MONOCHROME camera,<wbr/> even if
24069the camera device has RAW capability.<wbr/></p>
24070            </td>
24071          </tr>
24072
24073          <tr class="entries_header">
24074            <th class="th_details" colspan="6">HAL Implementation Details</th>
24075          </tr>
24076          <tr class="entry_cont">
24077            <td class="entry_details" colspan="6">
24078              <p>The green split given may be a static value based on prior
24079characterization of the camera sensor using the green split
24080calculation method given here over a large,<wbr/> representative,<wbr/> sample
24081set of images.<wbr/>  Other methods of calculation that produce equivalent
24082results,<wbr/> and can be interpreted in the same manner,<wbr/> may be used.<wbr/></p>
24083            </td>
24084          </tr>
24085
24086          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24087           <!-- end of entry -->
24088
24089
24090          <tr class="entry" id="dynamic_android.sensor.testPatternData">
24091            <td class="entry_name
24092             " rowspan="5">
24093              android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data
24094            </td>
24095            <td class="entry_type">
24096                <span class="entry_type_name">int32</span>
24097                <span class="entry_type_container">x</span>
24098
24099                <span class="entry_type_array">
24100                  4
24101                </span>
24102              <span class="entry_type_visibility"> [public]</span>
24103
24104
24105
24106
24107
24108
24109            </td> <!-- entry_type -->
24110
24111            <td class="entry_description">
24112              <p>A pixel <code>[R,<wbr/> G_<wbr/>even,<wbr/> G_<wbr/>odd,<wbr/> B]</code> that supplies the test pattern
24113when <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a> is SOLID_<wbr/>COLOR.<wbr/></p>
24114            </td>
24115
24116            <td class="entry_units">
24117            </td>
24118
24119            <td class="entry_range">
24120            </td>
24121
24122            <td class="entry_hal_version">
24123              <p>3.<wbr/>2</p>
24124            </td>
24125
24126            <td class="entry_tags">
24127            </td>
24128
24129          </tr>
24130          <tr class="entries_header">
24131            <th class="th_details" colspan="6">Details</th>
24132          </tr>
24133          <tr class="entry_cont">
24134            <td class="entry_details" colspan="6">
24135              <p>Each color channel is treated as an unsigned 32-bit integer.<wbr/>
24136The camera device then uses the most significant X bits
24137that correspond to how many bits are in its Bayer raw sensor
24138output.<wbr/></p>
24139<p>For example,<wbr/> a sensor with RAW10 Bayer output would use the
2414010 most significant bits from each color channel.<wbr/></p>
24141            </td>
24142          </tr>
24143
24144          <tr class="entries_header">
24145            <th class="th_details" colspan="6">HAL Implementation Details</th>
24146          </tr>
24147          <tr class="entry_cont">
24148            <td class="entry_details" colspan="6">
24149
24150            </td>
24151          </tr>
24152
24153          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24154           <!-- end of entry -->
24155
24156
24157          <tr class="entry" id="dynamic_android.sensor.testPatternMode">
24158            <td class="entry_name
24159             " rowspan="5">
24160              android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode
24161            </td>
24162            <td class="entry_type">
24163                <span class="entry_type_name entry_type_name_enum">int32</span>
24164
24165              <span class="entry_type_visibility"> [public]</span>
24166
24167
24168
24169
24170
24171                <ul class="entry_type_enum">
24172                  <li>
24173                    <span class="entry_type_enum_name">OFF (v3.2)</span>
24174                    <span class="entry_type_enum_notes"><p>No test pattern mode is used,<wbr/> and the camera
24175device returns captures from the image sensor.<wbr/></p>
24176<p>This is the default if the key is not set.<wbr/></p></span>
24177                  </li>
24178                  <li>
24179                    <span class="entry_type_enum_name">SOLID_COLOR (v3.2)</span>
24180                    <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
24181respective color channel provided in
24182<a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a>.<wbr/></p>
24183<p>For example:</p>
24184<pre><code>android.<wbr/>testPatternData = [0,<wbr/> 0xFFFFFFFF,<wbr/> 0xFFFFFFFF,<wbr/> 0]
24185</code></pre>
24186<p>All green pixels are 100% green.<wbr/> All red/<wbr/>blue pixels are black.<wbr/></p>
24187<pre><code>android.<wbr/>testPatternData = [0xFFFFFFFF,<wbr/> 0,<wbr/> 0xFFFFFFFF,<wbr/> 0]
24188</code></pre>
24189<p>All red pixels are 100% red.<wbr/> Only the odd green pixels
24190are 100% green.<wbr/> All blue pixels are 100% black.<wbr/></p></span>
24191                  </li>
24192                  <li>
24193                    <span class="entry_type_enum_name">COLOR_BARS (v3.2)</span>
24194                    <span class="entry_type_enum_notes"><p>All pixel data is replaced with an 8-bar color pattern.<wbr/></p>
24195<p>The vertical bars (left-to-right) are as follows:</p>
24196<ul>
24197<li>100% white</li>
24198<li>yellow</li>
24199<li>cyan</li>
24200<li>green</li>
24201<li>magenta</li>
24202<li>red</li>
24203<li>blue</li>
24204<li>black</li>
24205</ul>
24206<p>In general the image would look like the following:</p>
24207<pre><code>W Y C G M R B K
24208W Y C G M R B K
24209W Y C G M R B K
24210W Y C G M R B K
24211W Y C G M R B K
24212.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
24213.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
24214.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
24215
24216(B = Blue,<wbr/> K = Black)
24217</code></pre>
24218<p>Each bar should take up 1/<wbr/>8 of the sensor pixel array width.<wbr/>
24219When this is not possible,<wbr/> the bar size should be rounded
24220down to the nearest integer and the pattern can repeat
24221on the right side.<wbr/></p>
24222<p>Each bar's height must always take up the full sensor
24223pixel array height.<wbr/></p>
24224<p>Each pixel in this test pattern must be set to either
242250% intensity or 100% intensity.<wbr/></p></span>
24226                  </li>
24227                  <li>
24228                    <span class="entry_type_enum_name">COLOR_BARS_FADE_TO_GRAY (v3.2)</span>
24229                    <span class="entry_type_enum_notes"><p>The test pattern is similar to COLOR_<wbr/>BARS,<wbr/> except that
24230each bar should start at its specified color at the top,<wbr/>
24231and fade to gray at the bottom.<wbr/></p>
24232<p>Furthermore each bar is further subdivided into a left and
24233right half.<wbr/> The left half should have a smooth gradient,<wbr/>
24234and the right half should have a quantized gradient.<wbr/></p>
24235<p>In particular,<wbr/> the right half's should consist of blocks of the
24236same color for 1/<wbr/>16th active sensor pixel array width.<wbr/></p>
24237<p>The least significant bits in the quantized gradient should
24238be copied from the most significant bits of the smooth gradient.<wbr/></p>
24239<p>The height of each bar should always be a multiple of 128.<wbr/>
24240When this is not the case,<wbr/> the pattern should repeat at the bottom
24241of the image.<wbr/></p></span>
24242                  </li>
24243                  <li>
24244                    <span class="entry_type_enum_name">PN9 (v3.2)</span>
24245                    <span class="entry_type_enum_notes"><p>All pixel data is replaced by a pseudo-random sequence
24246generated from a PN9 512-bit sequence (typically implemented
24247in hardware with a linear feedback shift register).<wbr/></p>
24248<p>The generator should be reset at the beginning of each frame,<wbr/>
24249and thus each subsequent raw frame with this test pattern should
24250be exactly the same as the last.<wbr/></p></span>
24251                  </li>
24252                  <li>
24253                    <span class="entry_type_enum_name">CUSTOM1 (v3.2)</span>
24254                    <span class="entry_type_enum_value">256</span>
24255                    <span class="entry_type_enum_notes"><p>The first custom test pattern.<wbr/> All custom patterns that are
24256available only on this camera device are at least this numeric
24257value.<wbr/></p>
24258<p>All of the custom test patterns will be static
24259(that is the raw image must not vary from frame to frame).<wbr/></p></span>
24260                  </li>
24261                </ul>
24262
24263            </td> <!-- entry_type -->
24264
24265            <td class="entry_description">
24266              <p>When enabled,<wbr/> the sensor sends a test pattern instead of
24267doing a real exposure from the camera.<wbr/></p>
24268            </td>
24269
24270            <td class="entry_units">
24271            </td>
24272
24273            <td class="entry_range">
24274              <p><a href="#static_android.sensor.availableTestPatternModes">android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes</a></p>
24275            </td>
24276
24277            <td class="entry_hal_version">
24278              <p>3.<wbr/>2</p>
24279            </td>
24280
24281            <td class="entry_tags">
24282            </td>
24283
24284          </tr>
24285          <tr class="entries_header">
24286            <th class="th_details" colspan="6">Details</th>
24287          </tr>
24288          <tr class="entry_cont">
24289            <td class="entry_details" colspan="6">
24290              <p>When a test pattern is enabled,<wbr/> all manual sensor controls specified
24291by android.<wbr/>sensor.<wbr/>* will be ignored.<wbr/> All other controls should
24292work as normal.<wbr/></p>
24293<p>For example,<wbr/> if manual flash is enabled,<wbr/> flash firing should still
24294occur (and that the test pattern remain unmodified,<wbr/> since the flash
24295would not actually affect it).<wbr/></p>
24296<p>Defaults to OFF.<wbr/></p>
24297            </td>
24298          </tr>
24299
24300          <tr class="entries_header">
24301            <th class="th_details" colspan="6">HAL Implementation Details</th>
24302          </tr>
24303          <tr class="entry_cont">
24304            <td class="entry_details" colspan="6">
24305              <p>All test patterns are specified in the Bayer domain.<wbr/></p>
24306<p>The HAL may choose to substitute test patterns from the sensor
24307with test patterns from on-device memory.<wbr/> In that case,<wbr/> it should be
24308indistinguishable to the ISP whether the data came from the
24309sensor interconnect bus (such as CSI2) or memory.<wbr/></p>
24310            </td>
24311          </tr>
24312
24313          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24314           <!-- end of entry -->
24315
24316
24317          <tr class="entry" id="dynamic_android.sensor.rollingShutterSkew">
24318            <td class="entry_name
24319             " rowspan="5">
24320              android.<wbr/>sensor.<wbr/>rolling<wbr/>Shutter<wbr/>Skew
24321            </td>
24322            <td class="entry_type">
24323                <span class="entry_type_name">int64</span>
24324
24325              <span class="entry_type_visibility"> [public]</span>
24326
24327
24328              <span class="entry_type_hwlevel">[limited] </span>
24329
24330
24331
24332
24333            </td> <!-- entry_type -->
24334
24335            <td class="entry_description">
24336              <p>Duration between the start of first row exposure
24337and the start of last row exposure.<wbr/></p>
24338            </td>
24339
24340            <td class="entry_units">
24341              Nanoseconds
24342            </td>
24343
24344            <td class="entry_range">
24345              <p>&gt;= 0 and &lt;
24346<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/></p>
24347            </td>
24348
24349            <td class="entry_hal_version">
24350              <p>3.<wbr/>2</p>
24351            </td>
24352
24353            <td class="entry_tags">
24354              <ul class="entry_tags">
24355                  <li><a href="#tag_V1">V1</a></li>
24356              </ul>
24357            </td>
24358
24359          </tr>
24360          <tr class="entries_header">
24361            <th class="th_details" colspan="6">Details</th>
24362          </tr>
24363          <tr class="entry_cont">
24364            <td class="entry_details" colspan="6">
24365              <p>This is the exposure time skew between the first and last
24366row exposure start times.<wbr/> The first row and the last row are
24367the first and last rows inside of the
24368<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
24369<p>For typical camera sensors that use rolling shutters,<wbr/> this is also equivalent
24370to the frame readout time.<wbr/></p>
24371            </td>
24372          </tr>
24373
24374          <tr class="entries_header">
24375            <th class="th_details" colspan="6">HAL Implementation Details</th>
24376          </tr>
24377          <tr class="entry_cont">
24378            <td class="entry_details" colspan="6">
24379              <p>The HAL must report <code>0</code> if the sensor is using global shutter,<wbr/> where all pixels begin
24380exposure at the same time.<wbr/></p>
24381            </td>
24382          </tr>
24383
24384          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24385           <!-- end of entry -->
24386
24387
24388          <tr class="entry" id="dynamic_android.sensor.dynamicBlackLevel">
24389            <td class="entry_name
24390             " rowspan="5">
24391              android.<wbr/>sensor.<wbr/>dynamic<wbr/>Black<wbr/>Level
24392            </td>
24393            <td class="entry_type">
24394                <span class="entry_type_name">float</span>
24395                <span class="entry_type_container">x</span>
24396
24397                <span class="entry_type_array">
24398                  4
24399                </span>
24400              <span class="entry_type_visibility"> [public]</span>
24401
24402
24403
24404
24405                <div class="entry_type_notes">2x2 raw count block</div>
24406
24407
24408            </td> <!-- entry_type -->
24409
24410            <td class="entry_description">
24411              <p>A per-frame dynamic black level offset for each of the color filter
24412arrangement (CFA) mosaic channels.<wbr/></p>
24413            </td>
24414
24415            <td class="entry_units">
24416            </td>
24417
24418            <td class="entry_range">
24419              <p>&gt;= 0 for each.<wbr/></p>
24420            </td>
24421
24422            <td class="entry_hal_version">
24423              <p>3.<wbr/>2</p>
24424            </td>
24425
24426            <td class="entry_tags">
24427              <ul class="entry_tags">
24428                  <li><a href="#tag_RAW">RAW</a></li>
24429              </ul>
24430            </td>
24431
24432          </tr>
24433          <tr class="entries_header">
24434            <th class="th_details" colspan="6">Details</th>
24435          </tr>
24436          <tr class="entry_cont">
24437            <td class="entry_details" colspan="6">
24438              <p>Camera sensor black levels may vary dramatically for different
24439capture settings (e.<wbr/>g.<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>).<wbr/> The fixed black
24440level reported by <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> may be too
24441inaccurate to represent the actual value on a per-frame basis.<wbr/> The
24442camera device internal pipeline relies on reliable black level values
24443to process the raw images appropriately.<wbr/> To get the best image
24444quality,<wbr/> the camera device may choose to estimate the per frame black
24445level values either based on optically shielded black regions
24446(<a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a>) or its internal model.<wbr/></p>
24447<p>This key reports the camera device estimated per-frame zero light
24448value for each of the CFA mosaic channels in the camera sensor.<wbr/> The
24449<a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> may only represent a coarse
24450approximation of the actual black level values.<wbr/> This value is the
24451black level used in camera device internal image processing pipeline
24452and generally more accurate than the fixed black level values.<wbr/>
24453However,<wbr/> since they are estimated values by the camera device,<wbr/> they
24454may not be as accurate as the black level values calculated from the
24455optical black pixels reported by <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a>.<wbr/></p>
24456<p>The values are given in the same order as channels listed for the CFA
24457layout 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
24458nth value given corresponds to the black level offset for the nth
24459color channel listed in the CFA.<wbr/></p>
24460<p>For a MONOCHROME camera,<wbr/> all of the 2x2 channels must have the same values.<wbr/></p>
24461<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
24462camera device advertises this key via <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureResultKeys">CameraCharacteristics#getAvailableCaptureResultKeys</a>.<wbr/></p>
24463            </td>
24464          </tr>
24465
24466          <tr class="entries_header">
24467            <th class="th_details" colspan="6">HAL Implementation Details</th>
24468          </tr>
24469          <tr class="entry_cont">
24470            <td class="entry_details" colspan="6">
24471              <p>The values are given in row-column scan order,<wbr/> with the first value
24472corresponding to the element of the CFA in row=0,<wbr/> column=0.<wbr/></p>
24473            </td>
24474          </tr>
24475
24476          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24477           <!-- end of entry -->
24478
24479
24480          <tr class="entry" id="dynamic_android.sensor.dynamicWhiteLevel">
24481            <td class="entry_name
24482             " rowspan="5">
24483              android.<wbr/>sensor.<wbr/>dynamic<wbr/>White<wbr/>Level
24484            </td>
24485            <td class="entry_type">
24486                <span class="entry_type_name">int32</span>
24487
24488              <span class="entry_type_visibility"> [public]</span>
24489
24490
24491
24492
24493
24494
24495            </td> <!-- entry_type -->
24496
24497            <td class="entry_description">
24498              <p>Maximum raw value output by sensor for this frame.<wbr/></p>
24499            </td>
24500
24501            <td class="entry_units">
24502            </td>
24503
24504            <td class="entry_range">
24505              <p>&gt;= 0</p>
24506            </td>
24507
24508            <td class="entry_hal_version">
24509              <p>3.<wbr/>2</p>
24510            </td>
24511
24512            <td class="entry_tags">
24513              <ul class="entry_tags">
24514                  <li><a href="#tag_RAW">RAW</a></li>
24515              </ul>
24516            </td>
24517
24518          </tr>
24519          <tr class="entries_header">
24520            <th class="th_details" colspan="6">Details</th>
24521          </tr>
24522          <tr class="entry_cont">
24523            <td class="entry_details" colspan="6">
24524              <p>Since the <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> may change for different
24525capture settings (e.<wbr/>g.,<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>),<wbr/> the white
24526level will change accordingly.<wbr/> This key is similar to
24527<a href="#static_android.sensor.info.whiteLevel">android.<wbr/>sensor.<wbr/>info.<wbr/>white<wbr/>Level</a>,<wbr/> but specifies the camera device
24528estimated white level for each frame.<wbr/></p>
24529<p>This key will be available if <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a> is
24530available or the camera device advertises this key via
24531<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a>.<wbr/></p>
24532            </td>
24533          </tr>
24534
24535          <tr class="entries_header">
24536            <th class="th_details" colspan="6">HAL Implementation Details</th>
24537          </tr>
24538          <tr class="entry_cont">
24539            <td class="entry_details" colspan="6">
24540              <p>The full bit depth of the sensor must be available in the raw data,<wbr/>
24541so the value for linear sensors should not be significantly lower
24542than maximum raw value supported,<wbr/> i.<wbr/>e.<wbr/> 2^(sensor bits per pixel).<wbr/></p>
24543            </td>
24544          </tr>
24545
24546          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24547           <!-- end of entry -->
24548
24549
24550
24551      <!-- end of kind -->
24552      </tbody>
24553
24554  <!-- end of section -->
24555  <tr><td colspan="7" id="section_shading" class="section">shading</td></tr>
24556
24557
24558      <tr><td colspan="7" class="kind">controls</td></tr>
24559
24560      <thead class="entries_header">
24561        <tr>
24562          <th class="th_name">Property Name</th>
24563          <th class="th_type">Type</th>
24564          <th class="th_description">Description</th>
24565          <th class="th_units">Units</th>
24566          <th class="th_range">Range</th>
24567          <th class="th_hal_version">Initial HIDL HAL version</th>
24568          <th class="th_tags">Tags</th>
24569        </tr>
24570      </thead>
24571
24572      <tbody>
24573
24574
24575
24576
24577
24578
24579
24580
24581
24582
24583          <tr class="entry" id="controls_android.shading.mode">
24584            <td class="entry_name
24585             " rowspan="3">
24586              android.<wbr/>shading.<wbr/>mode
24587            </td>
24588            <td class="entry_type">
24589                <span class="entry_type_name entry_type_name_enum">byte</span>
24590
24591              <span class="entry_type_visibility"> [public]</span>
24592
24593
24594              <span class="entry_type_hwlevel">[full] </span>
24595
24596
24597
24598                <ul class="entry_type_enum">
24599                  <li>
24600                    <span class="entry_type_enum_name">OFF (v3.2)</span>
24601                    <span class="entry_type_enum_notes"><p>No lens shading correction is applied.<wbr/></p></span>
24602                  </li>
24603                  <li>
24604                    <span class="entry_type_enum_name">FAST (v3.2)</span>
24605                    <span class="entry_type_enum_notes"><p>Apply lens shading corrections,<wbr/> without slowing
24606frame rate relative to sensor raw output</p></span>
24607                  </li>
24608                  <li>
24609                    <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
24610                    <span class="entry_type_enum_notes"><p>Apply high-quality lens shading correction,<wbr/> at the
24611cost of possibly reduced frame rate.<wbr/></p></span>
24612                  </li>
24613                </ul>
24614
24615            </td> <!-- entry_type -->
24616
24617            <td class="entry_description">
24618              <p>Quality of lens shading correction applied
24619to the image data.<wbr/></p>
24620            </td>
24621
24622            <td class="entry_units">
24623            </td>
24624
24625            <td class="entry_range">
24626              <p><a href="#static_android.shading.availableModes">android.<wbr/>shading.<wbr/>available<wbr/>Modes</a></p>
24627            </td>
24628
24629            <td class="entry_hal_version">
24630              <p>3.<wbr/>2</p>
24631            </td>
24632
24633            <td class="entry_tags">
24634            </td>
24635
24636          </tr>
24637          <tr class="entries_header">
24638            <th class="th_details" colspan="6">Details</th>
24639          </tr>
24640          <tr class="entry_cont">
24641            <td class="entry_details" colspan="6">
24642              <p>When set to OFF mode,<wbr/> no lens shading correction will be applied by the
24643camera device,<wbr/> and an identity lens shading map data will be provided
24644if <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
24645shading map with size of <code>[ 4,<wbr/> 3 ]</code>,<wbr/>
24646the 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
24647map shown below:</p>
24648<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/>
24649 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/>
24650 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/>
24651 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/>
24652 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/>
24653 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 ]
24654</code></pre>
24655<p>When set to other modes,<wbr/> lens shading correction will be applied by the camera
24656device.<wbr/> Applications can request lens shading map data by setting
24657<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
24658shading 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
24659data will be the one applied by the camera device for this capture request.<wbr/></p>
24660<p>The shading map data may depend on the auto-exposure (AE) and AWB statistics,<wbr/> therefore
24661the reliability of the map data may be affected by the AE and AWB algorithms.<wbr/> When AE and
24662AWB 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>
24663OFF),<wbr/> to get best results,<wbr/> it is recommended that the applications wait for the AE and AWB
24664to be converged before using the returned shading map data.<wbr/></p>
24665            </td>
24666          </tr>
24667
24668
24669          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24670           <!-- end of entry -->
24671
24672
24673          <tr class="entry" id="controls_android.shading.strength">
24674            <td class="entry_name
24675             " rowspan="1">
24676              android.<wbr/>shading.<wbr/>strength
24677            </td>
24678            <td class="entry_type">
24679                <span class="entry_type_name">byte</span>
24680
24681              <span class="entry_type_visibility"> [system]</span>
24682
24683
24684
24685
24686
24687
24688            </td> <!-- entry_type -->
24689
24690            <td class="entry_description">
24691              <p>Control the amount of shading correction
24692applied to the images</p>
24693            </td>
24694
24695            <td class="entry_units">
24696              unitless: 1-10; 10 is full shading
24697          compensation
24698            </td>
24699
24700            <td class="entry_range">
24701            </td>
24702
24703            <td class="entry_hal_version">
24704              <p>3.<wbr/>2</p>
24705            </td>
24706
24707            <td class="entry_tags">
24708              <ul class="entry_tags">
24709                  <li><a href="#tag_FUTURE">FUTURE</a></li>
24710              </ul>
24711            </td>
24712
24713          </tr>
24714
24715
24716          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24717           <!-- end of entry -->
24718
24719
24720
24721      <!-- end of kind -->
24722      </tbody>
24723      <tr><td colspan="7" class="kind">dynamic</td></tr>
24724
24725      <thead class="entries_header">
24726        <tr>
24727          <th class="th_name">Property Name</th>
24728          <th class="th_type">Type</th>
24729          <th class="th_description">Description</th>
24730          <th class="th_units">Units</th>
24731          <th class="th_range">Range</th>
24732          <th class="th_hal_version">Initial HIDL HAL version</th>
24733          <th class="th_tags">Tags</th>
24734        </tr>
24735      </thead>
24736
24737      <tbody>
24738
24739
24740
24741
24742
24743
24744
24745
24746
24747
24748          <tr class="entry" id="dynamic_android.shading.mode">
24749            <td class="entry_name
24750             " rowspan="3">
24751              android.<wbr/>shading.<wbr/>mode
24752            </td>
24753            <td class="entry_type">
24754                <span class="entry_type_name entry_type_name_enum">byte</span>
24755
24756              <span class="entry_type_visibility"> [public]</span>
24757
24758
24759              <span class="entry_type_hwlevel">[full] </span>
24760
24761
24762
24763                <ul class="entry_type_enum">
24764                  <li>
24765                    <span class="entry_type_enum_name">OFF (v3.2)</span>
24766                    <span class="entry_type_enum_notes"><p>No lens shading correction is applied.<wbr/></p></span>
24767                  </li>
24768                  <li>
24769                    <span class="entry_type_enum_name">FAST (v3.2)</span>
24770                    <span class="entry_type_enum_notes"><p>Apply lens shading corrections,<wbr/> without slowing
24771frame rate relative to sensor raw output</p></span>
24772                  </li>
24773                  <li>
24774                    <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
24775                    <span class="entry_type_enum_notes"><p>Apply high-quality lens shading correction,<wbr/> at the
24776cost of possibly reduced frame rate.<wbr/></p></span>
24777                  </li>
24778                </ul>
24779
24780            </td> <!-- entry_type -->
24781
24782            <td class="entry_description">
24783              <p>Quality of lens shading correction applied
24784to the image data.<wbr/></p>
24785            </td>
24786
24787            <td class="entry_units">
24788            </td>
24789
24790            <td class="entry_range">
24791              <p><a href="#static_android.shading.availableModes">android.<wbr/>shading.<wbr/>available<wbr/>Modes</a></p>
24792            </td>
24793
24794            <td class="entry_hal_version">
24795              <p>3.<wbr/>2</p>
24796            </td>
24797
24798            <td class="entry_tags">
24799            </td>
24800
24801          </tr>
24802          <tr class="entries_header">
24803            <th class="th_details" colspan="6">Details</th>
24804          </tr>
24805          <tr class="entry_cont">
24806            <td class="entry_details" colspan="6">
24807              <p>When set to OFF mode,<wbr/> no lens shading correction will be applied by the
24808camera device,<wbr/> and an identity lens shading map data will be provided
24809if <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
24810shading map with size of <code>[ 4,<wbr/> 3 ]</code>,<wbr/>
24811the 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
24812map shown below:</p>
24813<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/>
24814 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/>
24815 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/>
24816 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/>
24817 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/>
24818 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 ]
24819</code></pre>
24820<p>When set to other modes,<wbr/> lens shading correction will be applied by the camera
24821device.<wbr/> Applications can request lens shading map data by setting
24822<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
24823shading 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
24824data will be the one applied by the camera device for this capture request.<wbr/></p>
24825<p>The shading map data may depend on the auto-exposure (AE) and AWB statistics,<wbr/> therefore
24826the reliability of the map data may be affected by the AE and AWB algorithms.<wbr/> When AE and
24827AWB 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>
24828OFF),<wbr/> to get best results,<wbr/> it is recommended that the applications wait for the AE and AWB
24829to be converged before using the returned shading map data.<wbr/></p>
24830            </td>
24831          </tr>
24832
24833
24834          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24835           <!-- end of entry -->
24836
24837
24838
24839      <!-- end of kind -->
24840      </tbody>
24841      <tr><td colspan="7" class="kind">static</td></tr>
24842
24843      <thead class="entries_header">
24844        <tr>
24845          <th class="th_name">Property Name</th>
24846          <th class="th_type">Type</th>
24847          <th class="th_description">Description</th>
24848          <th class="th_units">Units</th>
24849          <th class="th_range">Range</th>
24850          <th class="th_hal_version">Initial HIDL HAL version</th>
24851          <th class="th_tags">Tags</th>
24852        </tr>
24853      </thead>
24854
24855      <tbody>
24856
24857
24858
24859
24860
24861
24862
24863
24864
24865
24866          <tr class="entry" id="static_android.shading.availableModes">
24867            <td class="entry_name
24868             " rowspan="5">
24869              android.<wbr/>shading.<wbr/>available<wbr/>Modes
24870            </td>
24871            <td class="entry_type">
24872                <span class="entry_type_name">byte</span>
24873                <span class="entry_type_container">x</span>
24874
24875                <span class="entry_type_array">
24876                  n
24877                </span>
24878              <span class="entry_type_visibility"> [public as enumList]</span>
24879
24880
24881              <span class="entry_type_hwlevel">[legacy] </span>
24882
24883
24884                <div class="entry_type_notes">List of enums (android.<wbr/>shading.<wbr/>mode).<wbr/></div>
24885
24886
24887            </td> <!-- entry_type -->
24888
24889            <td class="entry_description">
24890              <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>
24891            </td>
24892
24893            <td class="entry_units">
24894            </td>
24895
24896            <td class="entry_range">
24897              <p>Any value listed in <a href="#controls_android.shading.mode">android.<wbr/>shading.<wbr/>mode</a></p>
24898            </td>
24899
24900            <td class="entry_hal_version">
24901              <p>3.<wbr/>2</p>
24902            </td>
24903
24904            <td class="entry_tags">
24905            </td>
24906
24907          </tr>
24908          <tr class="entries_header">
24909            <th class="th_details" colspan="6">Details</th>
24910          </tr>
24911          <tr class="entry_cont">
24912            <td class="entry_details" colspan="6">
24913              <p>This list contains lens shading modes that can be set for the camera device.<wbr/>
24914Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always
24915list OFF and FAST mode.<wbr/> This includes all FULL level devices.<wbr/>
24916LEGACY devices will always only support FAST mode.<wbr/></p>
24917            </td>
24918          </tr>
24919
24920          <tr class="entries_header">
24921            <th class="th_details" colspan="6">HAL Implementation Details</th>
24922          </tr>
24923          <tr class="entry_cont">
24924            <td class="entry_details" colspan="6">
24925              <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if lens shading correction control is
24926available on the camera device,<wbr/> but the underlying implementation can be the same for
24927both modes.<wbr/> That is,<wbr/> if the highest quality implementation on the camera device does not
24928slow down capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
24929            </td>
24930          </tr>
24931
24932          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24933           <!-- end of entry -->
24934
24935
24936
24937      <!-- end of kind -->
24938      </tbody>
24939
24940  <!-- end of section -->
24941  <tr><td colspan="7" id="section_statistics" class="section">statistics</td></tr>
24942
24943
24944      <tr><td colspan="7" class="kind">controls</td></tr>
24945
24946      <thead class="entries_header">
24947        <tr>
24948          <th class="th_name">Property Name</th>
24949          <th class="th_type">Type</th>
24950          <th class="th_description">Description</th>
24951          <th class="th_units">Units</th>
24952          <th class="th_range">Range</th>
24953          <th class="th_hal_version">Initial HIDL HAL version</th>
24954          <th class="th_tags">Tags</th>
24955        </tr>
24956      </thead>
24957
24958      <tbody>
24959
24960
24961
24962
24963
24964
24965
24966
24967
24968
24969          <tr class="entry" id="controls_android.statistics.faceDetectMode">
24970            <td class="entry_name
24971             " rowspan="5">
24972              android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode
24973            </td>
24974            <td class="entry_type">
24975                <span class="entry_type_name entry_type_name_enum">byte</span>
24976
24977              <span class="entry_type_visibility"> [public]</span>
24978
24979
24980              <span class="entry_type_hwlevel">[legacy] </span>
24981
24982
24983
24984                <ul class="entry_type_enum">
24985                  <li>
24986                    <span class="entry_type_enum_name">OFF (v3.2)</span>
24987                    <span class="entry_type_enum_notes"><p>Do not include face detection statistics in capture
24988results.<wbr/></p></span>
24989                  </li>
24990                  <li>
24991                    <span class="entry_type_enum_name">SIMPLE (v3.2)</span>
24992                    <span class="entry_type_enum_optional">[optional]</span>
24993                    <span class="entry_type_enum_notes"><p>Return face rectangle and confidence values only.<wbr/></p></span>
24994                  </li>
24995                  <li>
24996                    <span class="entry_type_enum_name">FULL (v3.2)</span>
24997                    <span class="entry_type_enum_optional">[optional]</span>
24998                    <span class="entry_type_enum_notes"><p>Return all face
24999metadata.<wbr/></p>
25000<p>In this mode,<wbr/> face rectangles,<wbr/> scores,<wbr/> landmarks,<wbr/> and face IDs are all valid.<wbr/></p></span>
25001                  </li>
25002                </ul>
25003
25004            </td> <!-- entry_type -->
25005
25006            <td class="entry_description">
25007              <p>Operating mode for the face detector
25008unit.<wbr/></p>
25009            </td>
25010
25011            <td class="entry_units">
25012            </td>
25013
25014            <td class="entry_range">
25015              <p><a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a></p>
25016            </td>
25017
25018            <td class="entry_hal_version">
25019              <p>3.<wbr/>2</p>
25020            </td>
25021
25022            <td class="entry_tags">
25023              <ul class="entry_tags">
25024                  <li><a href="#tag_BC">BC</a></li>
25025              </ul>
25026            </td>
25027
25028          </tr>
25029          <tr class="entries_header">
25030            <th class="th_details" colspan="6">Details</th>
25031          </tr>
25032          <tr class="entry_cont">
25033            <td class="entry_details" colspan="6">
25034              <p>Whether face detection is enabled,<wbr/> and whether it
25035should output just the basic fields or the full set of
25036fields.<wbr/></p>
25037            </td>
25038          </tr>
25039
25040          <tr class="entries_header">
25041            <th class="th_details" colspan="6">HAL Implementation Details</th>
25042          </tr>
25043          <tr class="entry_cont">
25044            <td class="entry_details" colspan="6">
25045              <p>SIMPLE mode must fill in <a href="#dynamic_android.statistics.faceRectangles">android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles</a> and
25046<a href="#dynamic_android.statistics.faceScores">android.<wbr/>statistics.<wbr/>face<wbr/>Scores</a>.<wbr/>
25047FULL mode must also fill in <a href="#dynamic_android.statistics.faceIds">android.<wbr/>statistics.<wbr/>face<wbr/>Ids</a>,<wbr/> and
25048<a href="#dynamic_android.statistics.faceLandmarks">android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks</a>.<wbr/></p>
25049            </td>
25050          </tr>
25051
25052          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25053           <!-- end of entry -->
25054
25055
25056          <tr class="entry" id="controls_android.statistics.histogramMode">
25057            <td class="entry_name
25058             " rowspan="1">
25059              android.<wbr/>statistics.<wbr/>histogram<wbr/>Mode
25060            </td>
25061            <td class="entry_type">
25062                <span class="entry_type_name entry_type_name_enum">byte</span>
25063
25064              <span class="entry_type_visibility"> [system as boolean]</span>
25065
25066
25067
25068
25069
25070                <ul class="entry_type_enum">
25071                  <li>
25072                    <span class="entry_type_enum_name">OFF (v3.2)</span>
25073                  </li>
25074                  <li>
25075                    <span class="entry_type_enum_name">ON (v3.2)</span>
25076                  </li>
25077                </ul>
25078
25079            </td> <!-- entry_type -->
25080
25081            <td class="entry_description">
25082              <p>Operating mode for histogram
25083generation</p>
25084            </td>
25085
25086            <td class="entry_units">
25087            </td>
25088
25089            <td class="entry_range">
25090            </td>
25091
25092            <td class="entry_hal_version">
25093              <p>3.<wbr/>2</p>
25094            </td>
25095
25096            <td class="entry_tags">
25097              <ul class="entry_tags">
25098                  <li><a href="#tag_FUTURE">FUTURE</a></li>
25099              </ul>
25100            </td>
25101
25102          </tr>
25103
25104
25105          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25106           <!-- end of entry -->
25107
25108
25109          <tr class="entry" id="controls_android.statistics.sharpnessMapMode">
25110            <td class="entry_name
25111             " rowspan="1">
25112              android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map<wbr/>Mode
25113            </td>
25114            <td class="entry_type">
25115                <span class="entry_type_name entry_type_name_enum">byte</span>
25116
25117              <span class="entry_type_visibility"> [system as boolean]</span>
25118
25119
25120
25121
25122
25123                <ul class="entry_type_enum">
25124                  <li>
25125                    <span class="entry_type_enum_name">OFF (v3.2)</span>
25126                  </li>
25127                  <li>
25128                    <span class="entry_type_enum_name">ON (v3.2)</span>
25129                  </li>
25130                </ul>
25131
25132            </td> <!-- entry_type -->
25133
25134            <td class="entry_description">
25135              <p>Operating mode for sharpness map
25136generation</p>
25137            </td>
25138
25139            <td class="entry_units">
25140            </td>
25141
25142            <td class="entry_range">
25143            </td>
25144
25145            <td class="entry_hal_version">
25146              <p>3.<wbr/>2</p>
25147            </td>
25148
25149            <td class="entry_tags">
25150              <ul class="entry_tags">
25151                  <li><a href="#tag_FUTURE">FUTURE</a></li>
25152              </ul>
25153            </td>
25154
25155          </tr>
25156
25157
25158          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25159           <!-- end of entry -->
25160
25161
25162          <tr class="entry" id="controls_android.statistics.hotPixelMapMode">
25163            <td class="entry_name
25164             " rowspan="3">
25165              android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode
25166            </td>
25167            <td class="entry_type">
25168                <span class="entry_type_name entry_type_name_enum">byte</span>
25169
25170              <span class="entry_type_visibility"> [public as boolean]</span>
25171
25172
25173
25174
25175
25176                <ul class="entry_type_enum">
25177                  <li>
25178                    <span class="entry_type_enum_name">OFF (v3.2)</span>
25179                    <span class="entry_type_enum_notes"><p>Hot pixel map production is disabled.<wbr/></p></span>
25180                  </li>
25181                  <li>
25182                    <span class="entry_type_enum_name">ON (v3.2)</span>
25183                    <span class="entry_type_enum_notes"><p>Hot pixel map production is enabled.<wbr/></p></span>
25184                  </li>
25185                </ul>
25186
25187            </td> <!-- entry_type -->
25188
25189            <td class="entry_description">
25190              <p>Operating mode for hot pixel map generation.<wbr/></p>
25191            </td>
25192
25193            <td class="entry_units">
25194            </td>
25195
25196            <td class="entry_range">
25197              <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>
25198            </td>
25199
25200            <td class="entry_hal_version">
25201              <p>3.<wbr/>2</p>
25202            </td>
25203
25204            <td class="entry_tags">
25205              <ul class="entry_tags">
25206                  <li><a href="#tag_V1">V1</a></li>
25207                  <li><a href="#tag_RAW">RAW</a></li>
25208              </ul>
25209            </td>
25210
25211          </tr>
25212          <tr class="entries_header">
25213            <th class="th_details" colspan="6">Details</th>
25214          </tr>
25215          <tr class="entry_cont">
25216            <td class="entry_details" colspan="6">
25217              <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/>
25218If set to <code>false</code>,<wbr/> no hot pixel map will be returned.<wbr/></p>
25219            </td>
25220          </tr>
25221
25222
25223          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25224           <!-- end of entry -->
25225
25226
25227          <tr class="entry" id="controls_android.statistics.lensShadingMapMode">
25228            <td class="entry_name
25229             " rowspan="3">
25230              android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode
25231            </td>
25232            <td class="entry_type">
25233                <span class="entry_type_name entry_type_name_enum">byte</span>
25234
25235              <span class="entry_type_visibility"> [public]</span>
25236
25237
25238              <span class="entry_type_hwlevel">[full] </span>
25239
25240
25241
25242                <ul class="entry_type_enum">
25243                  <li>
25244                    <span class="entry_type_enum_name">OFF (v3.2)</span>
25245                    <span class="entry_type_enum_notes"><p>Do not include a lens shading map in the capture result.<wbr/></p></span>
25246                  </li>
25247                  <li>
25248                    <span class="entry_type_enum_name">ON (v3.2)</span>
25249                    <span class="entry_type_enum_notes"><p>Include a lens shading map in the capture result.<wbr/></p></span>
25250                  </li>
25251                </ul>
25252
25253            </td> <!-- entry_type -->
25254
25255            <td class="entry_description">
25256              <p>Whether the camera device will output the lens
25257shading map in output result metadata.<wbr/></p>
25258            </td>
25259
25260            <td class="entry_units">
25261            </td>
25262
25263            <td class="entry_range">
25264              <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>
25265            </td>
25266
25267            <td class="entry_hal_version">
25268              <p>3.<wbr/>2</p>
25269            </td>
25270
25271            <td class="entry_tags">
25272              <ul class="entry_tags">
25273                  <li><a href="#tag_RAW">RAW</a></li>
25274              </ul>
25275            </td>
25276
25277          </tr>
25278          <tr class="entries_header">
25279            <th class="th_details" colspan="6">Details</th>
25280          </tr>
25281          <tr class="entry_cont">
25282            <td class="entry_details" colspan="6">
25283              <p>When set to ON,<wbr/>
25284<a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> will be provided in
25285the output result metadata.<wbr/></p>
25286<p>ON is always supported on devices with the RAW capability.<wbr/></p>
25287            </td>
25288          </tr>
25289
25290
25291          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25292           <!-- end of entry -->
25293
25294
25295          <tr class="entry" id="controls_android.statistics.oisDataMode">
25296            <td class="entry_name
25297             " rowspan="3">
25298              android.<wbr/>statistics.<wbr/>ois<wbr/>Data<wbr/>Mode
25299            </td>
25300            <td class="entry_type">
25301                <span class="entry_type_name entry_type_name_enum">byte</span>
25302
25303              <span class="entry_type_visibility"> [public]</span>
25304
25305
25306
25307
25308
25309                <ul class="entry_type_enum">
25310                  <li>
25311                    <span class="entry_type_enum_name">OFF (v3.3)</span>
25312                    <span class="entry_type_enum_notes"><p>Do not include OIS data in the capture result.<wbr/></p></span>
25313                  </li>
25314                  <li>
25315                    <span class="entry_type_enum_name">ON (v3.3)</span>
25316                    <span class="entry_type_enum_notes"><p>Include OIS data in the capture result.<wbr/></p></span>
25317                  </li>
25318                </ul>
25319
25320            </td> <!-- entry_type -->
25321
25322            <td class="entry_description">
25323              <p>A control for selecting whether optical stabilization (OIS) position
25324information is included in output result metadata.<wbr/></p>
25325            </td>
25326
25327            <td class="entry_units">
25328            </td>
25329
25330            <td class="entry_range">
25331              <p><a href="#static_android.statistics.info.availableOisDataModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Ois<wbr/>Data<wbr/>Modes</a></p>
25332            </td>
25333
25334            <td class="entry_hal_version">
25335              <p>3.<wbr/>3</p>
25336            </td>
25337
25338            <td class="entry_tags">
25339            </td>
25340
25341          </tr>
25342          <tr class="entries_header">
25343            <th class="th_details" colspan="6">Details</th>
25344          </tr>
25345          <tr class="entry_cont">
25346            <td class="entry_details" colspan="6">
25347              <p>Since optical image stabilization generally involves motion much faster than the duration
25348of individualq image exposure,<wbr/> multiple OIS samples can be included for a single capture
25349result.<wbr/> For example,<wbr/> if the OIS reporting operates at 200 Hz,<wbr/> a typical camera operating
25350at 30fps may have 6-7 OIS samples per capture result.<wbr/> This information can be combined
25351with the rolling shutter skew to account for lens motion during image exposure in
25352post-processing algorithms.<wbr/></p>
25353            </td>
25354          </tr>
25355
25356
25357          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25358           <!-- end of entry -->
25359
25360
25361
25362      <!-- end of kind -->
25363      </tbody>
25364      <tr><td colspan="7" class="kind">static</td></tr>
25365
25366      <thead class="entries_header">
25367        <tr>
25368          <th class="th_name">Property Name</th>
25369          <th class="th_type">Type</th>
25370          <th class="th_description">Description</th>
25371          <th class="th_units">Units</th>
25372          <th class="th_range">Range</th>
25373          <th class="th_hal_version">Initial HIDL HAL version</th>
25374          <th class="th_tags">Tags</th>
25375        </tr>
25376      </thead>
25377
25378      <tbody>
25379
25380
25381
25382
25383
25384
25385
25386
25387
25388
25389
25390
25391          <tr class="entry" id="static_android.statistics.info.availableFaceDetectModes">
25392            <td class="entry_name
25393             " rowspan="3">
25394              android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes
25395            </td>
25396            <td class="entry_type">
25397                <span class="entry_type_name">byte</span>
25398                <span class="entry_type_container">x</span>
25399
25400                <span class="entry_type_array">
25401                  n
25402                </span>
25403              <span class="entry_type_visibility"> [public as enumList]</span>
25404
25405
25406              <span class="entry_type_hwlevel">[legacy] </span>
25407
25408
25409                <div class="entry_type_notes">List of enums from android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</div>
25410
25411
25412            </td> <!-- entry_type -->
25413
25414            <td class="entry_description">
25415              <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
25416supported by this camera device.<wbr/></p>
25417            </td>
25418
25419            <td class="entry_units">
25420            </td>
25421
25422            <td class="entry_range">
25423              <p>Any value listed in <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></p>
25424            </td>
25425
25426            <td class="entry_hal_version">
25427              <p>3.<wbr/>2</p>
25428            </td>
25429
25430            <td class="entry_tags">
25431            </td>
25432
25433          </tr>
25434          <tr class="entries_header">
25435            <th class="th_details" colspan="6">Details</th>
25436          </tr>
25437          <tr class="entry_cont">
25438            <td class="entry_details" colspan="6">
25439              <p>OFF is always supported.<wbr/></p>
25440            </td>
25441          </tr>
25442
25443
25444          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25445           <!-- end of entry -->
25446
25447
25448          <tr class="entry" id="static_android.statistics.info.histogramBucketCount">
25449            <td class="entry_name
25450             " rowspan="1">
25451              android.<wbr/>statistics.<wbr/>info.<wbr/>histogram<wbr/>Bucket<wbr/>Count
25452            </td>
25453            <td class="entry_type">
25454                <span class="entry_type_name">int32</span>
25455
25456              <span class="entry_type_visibility"> [system]</span>
25457
25458
25459
25460
25461
25462
25463            </td> <!-- entry_type -->
25464
25465            <td class="entry_description">
25466              <p>Number of histogram buckets
25467supported</p>
25468            </td>
25469
25470            <td class="entry_units">
25471            </td>
25472
25473            <td class="entry_range">
25474              <p>&gt;= 64</p>
25475            </td>
25476
25477            <td class="entry_hal_version">
25478              <p>3.<wbr/>2</p>
25479            </td>
25480
25481            <td class="entry_tags">
25482              <ul class="entry_tags">
25483                  <li><a href="#tag_FUTURE">FUTURE</a></li>
25484              </ul>
25485            </td>
25486
25487          </tr>
25488
25489
25490          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25491           <!-- end of entry -->
25492
25493
25494          <tr class="entry" id="static_android.statistics.info.maxFaceCount">
25495            <td class="entry_name
25496             " rowspan="1">
25497              android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Face<wbr/>Count
25498            </td>
25499            <td class="entry_type">
25500                <span class="entry_type_name">int32</span>
25501
25502              <span class="entry_type_visibility"> [public]</span>
25503
25504
25505              <span class="entry_type_hwlevel">[legacy] </span>
25506
25507
25508
25509
25510            </td> <!-- entry_type -->
25511
25512            <td class="entry_description">
25513              <p>The maximum number of simultaneously detectable
25514faces.<wbr/></p>
25515            </td>
25516
25517            <td class="entry_units">
25518            </td>
25519
25520            <td class="entry_range">
25521              <p>0 for cameras without available face detection; otherwise:
25522<code>&gt;=4</code> for LIMITED or FULL hwlevel devices or
25523<code>&gt;0</code> for LEGACY devices.<wbr/></p>
25524            </td>
25525
25526            <td class="entry_hal_version">
25527              <p>3.<wbr/>2</p>
25528            </td>
25529
25530            <td class="entry_tags">
25531              <ul class="entry_tags">
25532                  <li><a href="#tag_BC">BC</a></li>
25533              </ul>
25534            </td>
25535
25536          </tr>
25537
25538
25539          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25540           <!-- end of entry -->
25541
25542
25543          <tr class="entry" id="static_android.statistics.info.maxHistogramCount">
25544            <td class="entry_name
25545             " rowspan="1">
25546              android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Histogram<wbr/>Count
25547            </td>
25548            <td class="entry_type">
25549                <span class="entry_type_name">int32</span>
25550
25551              <span class="entry_type_visibility"> [system]</span>
25552
25553
25554
25555
25556
25557
25558            </td> <!-- entry_type -->
25559
25560            <td class="entry_description">
25561              <p>Maximum value possible for a histogram
25562bucket</p>
25563            </td>
25564
25565            <td class="entry_units">
25566            </td>
25567
25568            <td class="entry_range">
25569            </td>
25570
25571            <td class="entry_hal_version">
25572              <p>3.<wbr/>2</p>
25573            </td>
25574
25575            <td class="entry_tags">
25576              <ul class="entry_tags">
25577                  <li><a href="#tag_FUTURE">FUTURE</a></li>
25578              </ul>
25579            </td>
25580
25581          </tr>
25582
25583
25584          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25585           <!-- end of entry -->
25586
25587
25588          <tr class="entry" id="static_android.statistics.info.maxSharpnessMapValue">
25589            <td class="entry_name
25590             " rowspan="1">
25591              android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Sharpness<wbr/>Map<wbr/>Value
25592            </td>
25593            <td class="entry_type">
25594                <span class="entry_type_name">int32</span>
25595
25596              <span class="entry_type_visibility"> [system]</span>
25597
25598
25599
25600
25601
25602
25603            </td> <!-- entry_type -->
25604
25605            <td class="entry_description">
25606              <p>Maximum value possible for a sharpness map
25607region.<wbr/></p>
25608            </td>
25609
25610            <td class="entry_units">
25611            </td>
25612
25613            <td class="entry_range">
25614            </td>
25615
25616            <td class="entry_hal_version">
25617              <p>3.<wbr/>2</p>
25618            </td>
25619
25620            <td class="entry_tags">
25621              <ul class="entry_tags">
25622                  <li><a href="#tag_FUTURE">FUTURE</a></li>
25623              </ul>
25624            </td>
25625
25626          </tr>
25627
25628
25629          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25630           <!-- end of entry -->
25631
25632
25633          <tr class="entry" id="static_android.statistics.info.sharpnessMapSize">
25634            <td class="entry_name
25635             " rowspan="1">
25636              android.<wbr/>statistics.<wbr/>info.<wbr/>sharpness<wbr/>Map<wbr/>Size
25637            </td>
25638            <td class="entry_type">
25639                <span class="entry_type_name">int32</span>
25640                <span class="entry_type_container">x</span>
25641
25642                <span class="entry_type_array">
25643                  2
25644                </span>
25645              <span class="entry_type_visibility"> [system as size]</span>
25646
25647
25648
25649
25650                <div class="entry_type_notes">width x height</div>
25651
25652
25653            </td> <!-- entry_type -->
25654
25655            <td class="entry_description">
25656              <p>Dimensions of the sharpness
25657map</p>
25658            </td>
25659
25660            <td class="entry_units">
25661            </td>
25662
25663            <td class="entry_range">
25664              <p>Must be at least 32 x 32</p>
25665            </td>
25666
25667            <td class="entry_hal_version">
25668              <p>3.<wbr/>2</p>
25669            </td>
25670
25671            <td class="entry_tags">
25672              <ul class="entry_tags">
25673                  <li><a href="#tag_FUTURE">FUTURE</a></li>
25674              </ul>
25675            </td>
25676
25677          </tr>
25678
25679
25680          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25681           <!-- end of entry -->
25682
25683
25684          <tr class="entry" id="static_android.statistics.info.availableHotPixelMapModes">
25685            <td class="entry_name
25686             " rowspan="3">
25687              android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Map<wbr/>Modes
25688            </td>
25689            <td class="entry_type">
25690                <span class="entry_type_name">byte</span>
25691                <span class="entry_type_container">x</span>
25692
25693                <span class="entry_type_array">
25694                  n
25695                </span>
25696              <span class="entry_type_visibility"> [public as boolean]</span>
25697
25698
25699
25700
25701                <div class="entry_type_notes">list of enums</div>
25702
25703
25704            </td> <!-- entry_type -->
25705
25706            <td class="entry_description">
25707              <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
25708supported by this camera device.<wbr/></p>
25709            </td>
25710
25711            <td class="entry_units">
25712            </td>
25713
25714            <td class="entry_range">
25715              <p>Any value listed in <a href="#controls_android.statistics.hotPixelMapMode">android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode</a></p>
25716            </td>
25717
25718            <td class="entry_hal_version">
25719              <p>3.<wbr/>2</p>
25720            </td>
25721
25722            <td class="entry_tags">
25723              <ul class="entry_tags">
25724                  <li><a href="#tag_V1">V1</a></li>
25725                  <li><a href="#tag_RAW">RAW</a></li>
25726              </ul>
25727            </td>
25728
25729          </tr>
25730          <tr class="entries_header">
25731            <th class="th_details" colspan="6">Details</th>
25732          </tr>
25733          <tr class="entry_cont">
25734            <td class="entry_details" colspan="6">
25735              <p>If no hotpixel map output is available for this camera device,<wbr/> this will contain only
25736<code>false</code>.<wbr/></p>
25737<p>ON is always supported on devices with the RAW capability.<wbr/></p>
25738            </td>
25739          </tr>
25740
25741
25742          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25743           <!-- end of entry -->
25744
25745
25746          <tr class="entry" id="static_android.statistics.info.availableLensShadingMapModes">
25747            <td class="entry_name
25748             " rowspan="3">
25749              android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Lens<wbr/>Shading<wbr/>Map<wbr/>Modes
25750            </td>
25751            <td class="entry_type">
25752                <span class="entry_type_name">byte</span>
25753                <span class="entry_type_container">x</span>
25754
25755                <span class="entry_type_array">
25756                  n
25757                </span>
25758              <span class="entry_type_visibility"> [public as enumList]</span>
25759
25760
25761
25762
25763                <div class="entry_type_notes">list of enums</div>
25764
25765
25766            </td> <!-- entry_type -->
25767
25768            <td class="entry_description">
25769              <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
25770are supported by this camera device.<wbr/></p>
25771            </td>
25772
25773            <td class="entry_units">
25774            </td>
25775
25776            <td class="entry_range">
25777              <p>Any value listed in <a href="#controls_android.statistics.lensShadingMapMode">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode</a></p>
25778            </td>
25779
25780            <td class="entry_hal_version">
25781              <p>3.<wbr/>2</p>
25782            </td>
25783
25784            <td class="entry_tags">
25785            </td>
25786
25787          </tr>
25788          <tr class="entries_header">
25789            <th class="th_details" colspan="6">Details</th>
25790          </tr>
25791          <tr class="entry_cont">
25792            <td class="entry_details" colspan="6">
25793              <p>If no lens shading map output is available for this camera device,<wbr/> this key will
25794contain only OFF.<wbr/></p>
25795<p>ON is always supported on devices with the RAW capability.<wbr/>
25796LEGACY mode devices will always only support OFF.<wbr/></p>
25797            </td>
25798          </tr>
25799
25800
25801          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25802           <!-- end of entry -->
25803
25804
25805          <tr class="entry" id="static_android.statistics.info.availableOisDataModes">
25806            <td class="entry_name
25807             " rowspan="3">
25808              android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Ois<wbr/>Data<wbr/>Modes
25809            </td>
25810            <td class="entry_type">
25811                <span class="entry_type_name">byte</span>
25812                <span class="entry_type_container">x</span>
25813
25814                <span class="entry_type_array">
25815                  n
25816                </span>
25817              <span class="entry_type_visibility"> [public as enumList]</span>
25818
25819
25820
25821
25822                <div class="entry_type_notes">list of enums</div>
25823
25824
25825            </td> <!-- entry_type -->
25826
25827            <td class="entry_description">
25828              <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
25829are supported by this camera device.<wbr/></p>
25830            </td>
25831
25832            <td class="entry_units">
25833            </td>
25834
25835            <td class="entry_range">
25836              <p>Any value listed in <a href="#controls_android.statistics.oisDataMode">android.<wbr/>statistics.<wbr/>ois<wbr/>Data<wbr/>Mode</a></p>
25837            </td>
25838
25839            <td class="entry_hal_version">
25840              <p>3.<wbr/>3</p>
25841            </td>
25842
25843            <td class="entry_tags">
25844            </td>
25845
25846          </tr>
25847          <tr class="entries_header">
25848            <th class="th_details" colspan="6">Details</th>
25849          </tr>
25850          <tr class="entry_cont">
25851            <td class="entry_details" colspan="6">
25852              <p>If no OIS data output is available for this camera device,<wbr/> this key will
25853contain only OFF.<wbr/></p>
25854            </td>
25855          </tr>
25856
25857
25858          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25859           <!-- end of entry -->
25860
25861
25862
25863
25864
25865
25866      <!-- end of kind -->
25867      </tbody>
25868      <tr><td colspan="7" class="kind">dynamic</td></tr>
25869
25870      <thead class="entries_header">
25871        <tr>
25872          <th class="th_name">Property Name</th>
25873          <th class="th_type">Type</th>
25874          <th class="th_description">Description</th>
25875          <th class="th_units">Units</th>
25876          <th class="th_range">Range</th>
25877          <th class="th_hal_version">Initial HIDL HAL version</th>
25878          <th class="th_tags">Tags</th>
25879        </tr>
25880      </thead>
25881
25882      <tbody>
25883
25884
25885
25886
25887
25888
25889
25890
25891
25892
25893          <tr class="entry" id="dynamic_android.statistics.faceDetectMode">
25894            <td class="entry_name
25895             " rowspan="5">
25896              android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode
25897            </td>
25898            <td class="entry_type">
25899                <span class="entry_type_name entry_type_name_enum">byte</span>
25900
25901              <span class="entry_type_visibility"> [public]</span>
25902
25903
25904              <span class="entry_type_hwlevel">[legacy] </span>
25905
25906
25907
25908                <ul class="entry_type_enum">
25909                  <li>
25910                    <span class="entry_type_enum_name">OFF (v3.2)</span>
25911                    <span class="entry_type_enum_notes"><p>Do not include face detection statistics in capture
25912results.<wbr/></p></span>
25913                  </li>
25914                  <li>
25915                    <span class="entry_type_enum_name">SIMPLE (v3.2)</span>
25916                    <span class="entry_type_enum_optional">[optional]</span>
25917                    <span class="entry_type_enum_notes"><p>Return face rectangle and confidence values only.<wbr/></p></span>
25918                  </li>
25919                  <li>
25920                    <span class="entry_type_enum_name">FULL (v3.2)</span>
25921                    <span class="entry_type_enum_optional">[optional]</span>
25922                    <span class="entry_type_enum_notes"><p>Return all face
25923metadata.<wbr/></p>
25924<p>In this mode,<wbr/> face rectangles,<wbr/> scores,<wbr/> landmarks,<wbr/> and face IDs are all valid.<wbr/></p></span>
25925                  </li>
25926                </ul>
25927
25928            </td> <!-- entry_type -->
25929
25930            <td class="entry_description">
25931              <p>Operating mode for the face detector
25932unit.<wbr/></p>
25933            </td>
25934
25935            <td class="entry_units">
25936            </td>
25937
25938            <td class="entry_range">
25939              <p><a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a></p>
25940            </td>
25941
25942            <td class="entry_hal_version">
25943              <p>3.<wbr/>2</p>
25944            </td>
25945
25946            <td class="entry_tags">
25947              <ul class="entry_tags">
25948                  <li><a href="#tag_BC">BC</a></li>
25949              </ul>
25950            </td>
25951
25952          </tr>
25953          <tr class="entries_header">
25954            <th class="th_details" colspan="6">Details</th>
25955          </tr>
25956          <tr class="entry_cont">
25957            <td class="entry_details" colspan="6">
25958              <p>Whether face detection is enabled,<wbr/> and whether it
25959should output just the basic fields or the full set of
25960fields.<wbr/></p>
25961            </td>
25962          </tr>
25963
25964          <tr class="entries_header">
25965            <th class="th_details" colspan="6">HAL Implementation Details</th>
25966          </tr>
25967          <tr class="entry_cont">
25968            <td class="entry_details" colspan="6">
25969              <p>SIMPLE mode must fill in <a href="#dynamic_android.statistics.faceRectangles">android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles</a> and
25970<a href="#dynamic_android.statistics.faceScores">android.<wbr/>statistics.<wbr/>face<wbr/>Scores</a>.<wbr/>
25971FULL mode must also fill in <a href="#dynamic_android.statistics.faceIds">android.<wbr/>statistics.<wbr/>face<wbr/>Ids</a>,<wbr/> and
25972<a href="#dynamic_android.statistics.faceLandmarks">android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks</a>.<wbr/></p>
25973            </td>
25974          </tr>
25975
25976          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25977           <!-- end of entry -->
25978
25979
25980          <tr class="entry" id="dynamic_android.statistics.faceIds">
25981            <td class="entry_name
25982             " rowspan="3">
25983              android.<wbr/>statistics.<wbr/>face<wbr/>Ids
25984            </td>
25985            <td class="entry_type">
25986                <span class="entry_type_name">int32</span>
25987                <span class="entry_type_container">x</span>
25988
25989                <span class="entry_type_array">
25990                  n
25991                </span>
25992              <span class="entry_type_visibility"> [ndk_public]</span>
25993
25994
25995              <span class="entry_type_hwlevel">[legacy] </span>
25996
25997
25998
25999
26000            </td> <!-- entry_type -->
26001
26002            <td class="entry_description">
26003              <p>List of unique IDs for detected faces.<wbr/></p>
26004            </td>
26005
26006            <td class="entry_units">
26007            </td>
26008
26009            <td class="entry_range">
26010            </td>
26011
26012            <td class="entry_hal_version">
26013              <p>3.<wbr/>2</p>
26014            </td>
26015
26016            <td class="entry_tags">
26017              <ul class="entry_tags">
26018                  <li><a href="#tag_BC">BC</a></li>
26019              </ul>
26020            </td>
26021
26022          </tr>
26023          <tr class="entries_header">
26024            <th class="th_details" colspan="6">Details</th>
26025          </tr>
26026          <tr class="entry_cont">
26027            <td class="entry_details" colspan="6">
26028              <p>Each detected face is given a unique ID that is valid for as long as the face is visible
26029to the camera device.<wbr/>  A face that leaves the field of view and later returns may be
26030assigned a new ID.<wbr/></p>
26031<p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> == FULL</p>
26032            </td>
26033          </tr>
26034
26035
26036          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26037           <!-- end of entry -->
26038
26039
26040          <tr class="entry" id="dynamic_android.statistics.faceLandmarks">
26041            <td class="entry_name
26042             " rowspan="5">
26043              android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks
26044            </td>
26045            <td class="entry_type">
26046                <span class="entry_type_name">int32</span>
26047                <span class="entry_type_container">x</span>
26048
26049                <span class="entry_type_array">
26050                  n x 6
26051                </span>
26052              <span class="entry_type_visibility"> [ndk_public]</span>
26053
26054
26055              <span class="entry_type_hwlevel">[legacy] </span>
26056
26057
26058                <div class="entry_type_notes">(leftEyeX,<wbr/> leftEyeY,<wbr/> rightEyeX,<wbr/> rightEyeY,<wbr/> mouthX,<wbr/> mouthY)</div>
26059
26060
26061            </td> <!-- entry_type -->
26062
26063            <td class="entry_description">
26064              <p>List of landmarks for detected
26065faces.<wbr/></p>
26066            </td>
26067
26068            <td class="entry_units">
26069            </td>
26070
26071            <td class="entry_range">
26072            </td>
26073
26074            <td class="entry_hal_version">
26075              <p>3.<wbr/>2</p>
26076            </td>
26077
26078            <td class="entry_tags">
26079              <ul class="entry_tags">
26080                  <li><a href="#tag_BC">BC</a></li>
26081              </ul>
26082            </td>
26083
26084          </tr>
26085          <tr class="entries_header">
26086            <th class="th_details" colspan="6">Details</th>
26087          </tr>
26088          <tr class="entry_cont">
26089            <td class="entry_details" colspan="6">
26090              <p>For devices not supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate
26091system 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
26092the top-left pixel of the active array.<wbr/></p>
26093<p>For devices supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate
26094system depends on the mode being set.<wbr/>
26095When the distortion correction mode is OFF,<wbr/> the coordinate system follows
26096<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
26097<code>(0,<wbr/> 0)</code> being the top-left pixel of the pre-correction active array.<wbr/>
26098When the distortion correction mode is not OFF,<wbr/> the coordinate system follows
26099<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> with
26100<code>(0,<wbr/> 0)</code> being the top-left pixel of the active array.<wbr/></p>
26101<p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> == FULL</p>
26102            </td>
26103          </tr>
26104
26105          <tr class="entries_header">
26106            <th class="th_details" colspan="6">HAL Implementation Details</th>
26107          </tr>
26108          <tr class="entry_cont">
26109            <td class="entry_details" colspan="6">
26110              <p>HAL must always report face landmarks in the coordinate system of pre-correction
26111active array.<wbr/></p>
26112            </td>
26113          </tr>
26114
26115          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26116           <!-- end of entry -->
26117
26118
26119          <tr class="entry" id="dynamic_android.statistics.faceRectangles">
26120            <td class="entry_name
26121             " rowspan="5">
26122              android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles
26123            </td>
26124            <td class="entry_type">
26125                <span class="entry_type_name">int32</span>
26126                <span class="entry_type_container">x</span>
26127
26128                <span class="entry_type_array">
26129                  n x 4
26130                </span>
26131              <span class="entry_type_visibility"> [ndk_public as rectangle]</span>
26132
26133
26134              <span class="entry_type_hwlevel">[legacy] </span>
26135
26136
26137                <div class="entry_type_notes">(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax).<wbr/> (0,<wbr/>0) is top-left of active pixel area</div>
26138
26139
26140            </td> <!-- entry_type -->
26141
26142            <td class="entry_description">
26143              <p>List of the bounding rectangles for detected
26144faces.<wbr/></p>
26145            </td>
26146
26147            <td class="entry_units">
26148            </td>
26149
26150            <td class="entry_range">
26151            </td>
26152
26153            <td class="entry_hal_version">
26154              <p>3.<wbr/>2</p>
26155            </td>
26156
26157            <td class="entry_tags">
26158              <ul class="entry_tags">
26159                  <li><a href="#tag_BC">BC</a></li>
26160              </ul>
26161            </td>
26162
26163          </tr>
26164          <tr class="entries_header">
26165            <th class="th_details" colspan="6">Details</th>
26166          </tr>
26167          <tr class="entry_cont">
26168            <td class="entry_details" colspan="6">
26169              <p>For devices not supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate
26170system 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
26171the top-left pixel of the active array.<wbr/></p>
26172<p>For devices supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate
26173system depends on the mode being set.<wbr/>
26174When the distortion correction mode is OFF,<wbr/> the coordinate system follows
26175<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
26176<code>(0,<wbr/> 0)</code> being the top-left pixel of the pre-correction active array.<wbr/>
26177When the distortion correction mode is not OFF,<wbr/> the coordinate system follows
26178<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> with
26179<code>(0,<wbr/> 0)</code> being the top-left pixel of the active array.<wbr/></p>
26180<p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> != OFF</p>
26181            </td>
26182          </tr>
26183
26184          <tr class="entries_header">
26185            <th class="th_details" colspan="6">HAL Implementation Details</th>
26186          </tr>
26187          <tr class="entry_cont">
26188            <td class="entry_details" colspan="6">
26189              <p>HAL must always report face rectangles in the coordinate system of pre-correction
26190active array.<wbr/></p>
26191            </td>
26192          </tr>
26193
26194          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26195           <!-- end of entry -->
26196
26197
26198          <tr class="entry" id="dynamic_android.statistics.faceScores">
26199            <td class="entry_name
26200             " rowspan="5">
26201              android.<wbr/>statistics.<wbr/>face<wbr/>Scores
26202            </td>
26203            <td class="entry_type">
26204                <span class="entry_type_name">byte</span>
26205                <span class="entry_type_container">x</span>
26206
26207                <span class="entry_type_array">
26208                  n
26209                </span>
26210              <span class="entry_type_visibility"> [ndk_public]</span>
26211
26212
26213              <span class="entry_type_hwlevel">[legacy] </span>
26214
26215
26216
26217
26218            </td> <!-- entry_type -->
26219
26220            <td class="entry_description">
26221              <p>List of the face confidence scores for
26222detected faces</p>
26223            </td>
26224
26225            <td class="entry_units">
26226            </td>
26227
26228            <td class="entry_range">
26229              <p>1-100</p>
26230            </td>
26231
26232            <td class="entry_hal_version">
26233              <p>3.<wbr/>2</p>
26234            </td>
26235
26236            <td class="entry_tags">
26237              <ul class="entry_tags">
26238                  <li><a href="#tag_BC">BC</a></li>
26239              </ul>
26240            </td>
26241
26242          </tr>
26243          <tr class="entries_header">
26244            <th class="th_details" colspan="6">Details</th>
26245          </tr>
26246          <tr class="entry_cont">
26247            <td class="entry_details" colspan="6">
26248              <p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> != OFF.<wbr/></p>
26249            </td>
26250          </tr>
26251
26252          <tr class="entries_header">
26253            <th class="th_details" colspan="6">HAL Implementation Details</th>
26254          </tr>
26255          <tr class="entry_cont">
26256            <td class="entry_details" colspan="6">
26257              <p>The value should be meaningful (for example,<wbr/> setting 100 at
26258all times is illegal).<wbr/></p>
26259            </td>
26260          </tr>
26261
26262          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26263           <!-- end of entry -->
26264
26265
26266          <tr class="entry" id="dynamic_android.statistics.faces">
26267            <td class="entry_name
26268             " rowspan="3">
26269              android.<wbr/>statistics.<wbr/>faces
26270            </td>
26271            <td class="entry_type">
26272                <span class="entry_type_name">int32</span>
26273                <span class="entry_type_container">x</span>
26274
26275                <span class="entry_type_array">
26276                  n
26277                </span>
26278              <span class="entry_type_visibility"> [java_public as face]</span>
26279
26280              <span class="entry_type_synthetic">[synthetic] </span>
26281
26282              <span class="entry_type_hwlevel">[legacy] </span>
26283
26284
26285
26286
26287            </td> <!-- entry_type -->
26288
26289            <td class="entry_description">
26290              <p>List of the faces detected through camera face detection
26291in this capture.<wbr/></p>
26292            </td>
26293
26294            <td class="entry_units">
26295            </td>
26296
26297            <td class="entry_range">
26298            </td>
26299
26300            <td class="entry_hal_version">
26301              <p>3.<wbr/>2</p>
26302            </td>
26303
26304            <td class="entry_tags">
26305            </td>
26306
26307          </tr>
26308          <tr class="entries_header">
26309            <th class="th_details" colspan="6">Details</th>
26310          </tr>
26311          <tr class="entry_cont">
26312            <td class="entry_details" colspan="6">
26313              <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>
26314            </td>
26315          </tr>
26316
26317
26318          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26319           <!-- end of entry -->
26320
26321
26322          <tr class="entry" id="dynamic_android.statistics.histogram">
26323            <td class="entry_name
26324             " rowspan="3">
26325              android.<wbr/>statistics.<wbr/>histogram
26326            </td>
26327            <td class="entry_type">
26328                <span class="entry_type_name">int32</span>
26329                <span class="entry_type_container">x</span>
26330
26331                <span class="entry_type_array">
26332                  n x 3
26333                </span>
26334              <span class="entry_type_visibility"> [system]</span>
26335
26336
26337
26338
26339                <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>
26340
26341
26342            </td> <!-- entry_type -->
26343
26344            <td class="entry_description">
26345              <p>A 3-channel histogram based on the raw
26346sensor data</p>
26347            </td>
26348
26349            <td class="entry_units">
26350            </td>
26351
26352            <td class="entry_range">
26353            </td>
26354
26355            <td class="entry_hal_version">
26356              <p>3.<wbr/>2</p>
26357            </td>
26358
26359            <td class="entry_tags">
26360              <ul class="entry_tags">
26361                  <li><a href="#tag_FUTURE">FUTURE</a></li>
26362              </ul>
26363            </td>
26364
26365          </tr>
26366          <tr class="entries_header">
26367            <th class="th_details" colspan="6">Details</th>
26368          </tr>
26369          <tr class="entry_cont">
26370            <td class="entry_details" colspan="6">
26371              <p>The k'th bucket (0-based) covers the input range
26372(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/>
26373(k + 1) * w /<wbr/> N ).<wbr/> If only a monochrome sharpness map is
26374supported,<wbr/> all channels should have the same data</p>
26375            </td>
26376          </tr>
26377
26378
26379          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26380           <!-- end of entry -->
26381
26382
26383          <tr class="entry" id="dynamic_android.statistics.histogramMode">
26384            <td class="entry_name
26385             " rowspan="1">
26386              android.<wbr/>statistics.<wbr/>histogram<wbr/>Mode
26387            </td>
26388            <td class="entry_type">
26389                <span class="entry_type_name entry_type_name_enum">byte</span>
26390
26391              <span class="entry_type_visibility"> [system as boolean]</span>
26392
26393
26394
26395
26396
26397                <ul class="entry_type_enum">
26398                  <li>
26399                    <span class="entry_type_enum_name">OFF (v3.2)</span>
26400                  </li>
26401                  <li>
26402                    <span class="entry_type_enum_name">ON (v3.2)</span>
26403                  </li>
26404                </ul>
26405
26406            </td> <!-- entry_type -->
26407
26408            <td class="entry_description">
26409              <p>Operating mode for histogram
26410generation</p>
26411            </td>
26412
26413            <td class="entry_units">
26414            </td>
26415
26416            <td class="entry_range">
26417            </td>
26418
26419            <td class="entry_hal_version">
26420              <p>3.<wbr/>2</p>
26421            </td>
26422
26423            <td class="entry_tags">
26424              <ul class="entry_tags">
26425                  <li><a href="#tag_FUTURE">FUTURE</a></li>
26426              </ul>
26427            </td>
26428
26429          </tr>
26430
26431
26432          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26433           <!-- end of entry -->
26434
26435
26436          <tr class="entry" id="dynamic_android.statistics.sharpnessMap">
26437            <td class="entry_name
26438             " rowspan="3">
26439              android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map
26440            </td>
26441            <td class="entry_type">
26442                <span class="entry_type_name">int32</span>
26443                <span class="entry_type_container">x</span>
26444
26445                <span class="entry_type_array">
26446                  n x m x 3
26447                </span>
26448              <span class="entry_type_visibility"> [system]</span>
26449
26450
26451
26452
26453                <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>
26454
26455
26456            </td> <!-- entry_type -->
26457
26458            <td class="entry_description">
26459              <p>A 3-channel sharpness map,<wbr/> based on the raw
26460sensor data</p>
26461            </td>
26462
26463            <td class="entry_units">
26464            </td>
26465
26466            <td class="entry_range">
26467            </td>
26468
26469            <td class="entry_hal_version">
26470              <p>3.<wbr/>2</p>
26471            </td>
26472
26473            <td class="entry_tags">
26474              <ul class="entry_tags">
26475                  <li><a href="#tag_FUTURE">FUTURE</a></li>
26476              </ul>
26477            </td>
26478
26479          </tr>
26480          <tr class="entries_header">
26481            <th class="th_details" colspan="6">Details</th>
26482          </tr>
26483          <tr class="entry_cont">
26484            <td class="entry_details" colspan="6">
26485              <p>If only a monochrome sharpness map is supported,<wbr/>
26486all channels should have the same data</p>
26487            </td>
26488          </tr>
26489
26490
26491          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26492           <!-- end of entry -->
26493
26494
26495          <tr class="entry" id="dynamic_android.statistics.sharpnessMapMode">
26496            <td class="entry_name
26497             " rowspan="1">
26498              android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map<wbr/>Mode
26499            </td>
26500            <td class="entry_type">
26501                <span class="entry_type_name entry_type_name_enum">byte</span>
26502
26503              <span class="entry_type_visibility"> [system as boolean]</span>
26504
26505
26506
26507
26508
26509                <ul class="entry_type_enum">
26510                  <li>
26511                    <span class="entry_type_enum_name">OFF (v3.2)</span>
26512                  </li>
26513                  <li>
26514                    <span class="entry_type_enum_name">ON (v3.2)</span>
26515                  </li>
26516                </ul>
26517
26518            </td> <!-- entry_type -->
26519
26520            <td class="entry_description">
26521              <p>Operating mode for sharpness map
26522generation</p>
26523            </td>
26524
26525            <td class="entry_units">
26526            </td>
26527
26528            <td class="entry_range">
26529            </td>
26530
26531            <td class="entry_hal_version">
26532              <p>3.<wbr/>2</p>
26533            </td>
26534
26535            <td class="entry_tags">
26536              <ul class="entry_tags">
26537                  <li><a href="#tag_FUTURE">FUTURE</a></li>
26538              </ul>
26539            </td>
26540
26541          </tr>
26542
26543
26544          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26545           <!-- end of entry -->
26546
26547
26548          <tr class="entry" id="dynamic_android.statistics.lensShadingCorrectionMap">
26549            <td class="entry_name
26550             " rowspan="3">
26551              android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Correction<wbr/>Map
26552            </td>
26553            <td class="entry_type">
26554                <span class="entry_type_name">byte</span>
26555
26556              <span class="entry_type_visibility"> [java_public as lensShadingMap]</span>
26557
26558
26559              <span class="entry_type_hwlevel">[full] </span>
26560
26561
26562
26563
26564            </td> <!-- entry_type -->
26565
26566            <td class="entry_description">
26567              <p>The shading map is a low-resolution floating-point map
26568that lists the coefficients used to correct for vignetting,<wbr/> for each
26569Bayer color channel.<wbr/></p>
26570            </td>
26571
26572            <td class="entry_units">
26573            </td>
26574
26575            <td class="entry_range">
26576              <p>Each gain factor is &gt;= 1</p>
26577            </td>
26578
26579            <td class="entry_hal_version">
26580              <p>3.<wbr/>2</p>
26581            </td>
26582
26583            <td class="entry_tags">
26584            </td>
26585
26586          </tr>
26587          <tr class="entries_header">
26588            <th class="th_details" colspan="6">Details</th>
26589          </tr>
26590          <tr class="entry_cont">
26591            <td class="entry_details" colspan="6">
26592              <p>The map provided here is the same map that is used by the camera device to
26593correct both color shading and vignetting for output non-RAW images.<wbr/></p>
26594<p>When there is no lens shading correction applied to RAW
26595output images (<a href="#static_android.sensor.info.lensShadingApplied">android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied</a> <code>==</code>
26596false),<wbr/> this map is the complete lens shading correction
26597map; when there is some lens shading correction applied to
26598the 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
26599correction map that needs to be applied to get shading
26600corrected images that match the camera device's output for
26601non-RAW formats.<wbr/></p>
26602<p>For a complete shading correction map,<wbr/> the least shaded
26603section of the image will have a gain factor of 1; all
26604other sections will have gains above 1.<wbr/></p>
26605<p>When <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> = TRANSFORM_<wbr/>MATRIX,<wbr/> the map
26606will take into account the colorCorrection settings.<wbr/></p>
26607<p>The shading map is for the entire active pixel array,<wbr/> and is not
26608affected by the crop region specified in the request.<wbr/> Each shading map
26609entry is the value of the shading compensation map over a specific
26610pixel on the sensor.<wbr/>  Specifically,<wbr/> with a (N x M) resolution shading
26611map,<wbr/> and an active pixel array size (W x H),<wbr/> shading map entry
26612(x,<wbr/>y) ϵ (0 ...<wbr/> N-1,<wbr/> 0 ...<wbr/> M-1) is the value of the shading map at
26613pixel ( ((W-1)/<wbr/>(N-1)) * x,<wbr/> ((H-1)/<wbr/>(M-1)) * y) for the four color channels.<wbr/>
26614The map is assumed to be bilinearly interpolated between the sample points.<wbr/></p>
26615<p>The channel order is [R,<wbr/> Geven,<wbr/> Godd,<wbr/> B],<wbr/> where Geven is the green
26616channel for the even rows of a Bayer pattern,<wbr/> and Godd is the odd rows.<wbr/>
26617The shading map is stored in a fully interleaved format.<wbr/></p>
26618<p>The shading map will generally have on the order of 30-40 rows and columns,<wbr/>
26619and will be smaller than 64x64.<wbr/></p>
26620<p>As an example,<wbr/> given a very small map defined as:</p>
26621<pre><code>width,<wbr/>height = [ 4,<wbr/> 3 ]
26622values =
26623[ 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/>
26624    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/>
26625  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/>
26626    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/>
26627  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/>
26628    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 ]
26629</code></pre>
26630<p>The low-resolution scaling map images for each channel are
26631(displayed using nearest-neighbor interpolation):</p>
26632<p><img alt="Red lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/red_shading.png"/>
26633<img alt="Green (even rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_e_shading.png"/>
26634<img alt="Green (odd rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_o_shading.png"/>
26635<img alt="Blue lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/blue_shading.png"/></p>
26636<p>As a visualization only,<wbr/> inverting the full-color map to recover an
26637image of a gray wall (using bicubic interpolation for visual quality) as captured by the sensor gives:</p>
26638<p><img alt="Image of a uniform white wall (inverse shading map)" src="images/camera2/metadata/android.statistics.lensShadingMap/inv_shading.png"/></p>
26639<p>For a MONOCHROME camera,<wbr/> all of the 2x2 channels must have the same values.<wbr/> An example
26640shading map for such a camera is defined as:</p>
26641<pre><code><a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a> = [ 4,<wbr/> 3 ]
26642<a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> =
26643[ 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/>
26644    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/>
26645  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/>
26646    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/>
26647  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/>
26648    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 ]
26649</code></pre>
26650            </td>
26651          </tr>
26652
26653
26654          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26655           <!-- end of entry -->
26656
26657
26658          <tr class="entry" id="dynamic_android.statistics.lensShadingMap">
26659            <td class="entry_name
26660             " rowspan="5">
26661              android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map
26662            </td>
26663            <td class="entry_type">
26664                <span class="entry_type_name">float</span>
26665                <span class="entry_type_container">x</span>
26666
26667                <span class="entry_type_array">
26668                  4 x n x m
26669                </span>
26670              <span class="entry_type_visibility"> [ndk_public]</span>
26671
26672
26673              <span class="entry_type_hwlevel">[full] </span>
26674
26675
26676                <div class="entry_type_notes">2D array of float gain factors per channel to correct lens shading</div>
26677
26678
26679            </td> <!-- entry_type -->
26680
26681            <td class="entry_description">
26682              <p>The shading map is a low-resolution floating-point map
26683that lists the coefficients used to correct for vignetting and color shading,<wbr/>
26684for each Bayer color channel of RAW image data.<wbr/></p>
26685            </td>
26686
26687            <td class="entry_units">
26688            </td>
26689
26690            <td class="entry_range">
26691              <p>Each gain factor is &gt;= 1</p>
26692            </td>
26693
26694            <td class="entry_hal_version">
26695              <p>3.<wbr/>2</p>
26696            </td>
26697
26698            <td class="entry_tags">
26699            </td>
26700
26701          </tr>
26702          <tr class="entries_header">
26703            <th class="th_details" colspan="6">Details</th>
26704          </tr>
26705          <tr class="entry_cont">
26706            <td class="entry_details" colspan="6">
26707              <p>The map provided here is the same map that is used by the camera device to
26708correct both color shading and vignetting for output non-RAW images.<wbr/></p>
26709<p>When there is no lens shading correction applied to RAW
26710output images (<a href="#static_android.sensor.info.lensShadingApplied">android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied</a> <code>==</code>
26711false),<wbr/> this map is the complete lens shading correction
26712map; when there is some lens shading correction applied to
26713the 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
26714correction map that needs to be applied to get shading
26715corrected images that match the camera device's output for
26716non-RAW formats.<wbr/></p>
26717<p>For a complete shading correction map,<wbr/> the least shaded
26718section of the image will have a gain factor of 1; all
26719other sections will have gains above 1.<wbr/></p>
26720<p>When <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> = TRANSFORM_<wbr/>MATRIX,<wbr/> the map
26721will take into account the colorCorrection settings.<wbr/></p>
26722<p>The shading map is for the entire active pixel array,<wbr/> and is not
26723affected by the crop region specified in the request.<wbr/> Each shading map
26724entry is the value of the shading compensation map over a specific
26725pixel on the sensor.<wbr/>  Specifically,<wbr/> with a (N x M) resolution shading
26726map,<wbr/> and an active pixel array size (W x H),<wbr/> shading map entry
26727(x,<wbr/>y) ϵ (0 ...<wbr/> N-1,<wbr/> 0 ...<wbr/> M-1) is the value of the shading map at
26728pixel ( ((W-1)/<wbr/>(N-1)) * x,<wbr/> ((H-1)/<wbr/>(M-1)) * y) for the four color channels.<wbr/>
26729The map is assumed to be bilinearly interpolated between the sample points.<wbr/></p>
26730<p>For a Bayer camera,<wbr/> the channel order is [R,<wbr/> Geven,<wbr/> Godd,<wbr/> B],<wbr/> where Geven is
26731the green channel for the even rows of a Bayer pattern,<wbr/> and Godd is the odd rows.<wbr/>
26732The shading map is stored in a fully interleaved format,<wbr/> and its size
26733is 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>
26734<p>The shading map will generally have on the order of 30-40 rows and columns,<wbr/>
26735and will be smaller than 64x64.<wbr/></p>
26736<p>As an example,<wbr/> given a very small map for a Bayer camera defined as:</p>
26737<pre><code><a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a> = [ 4,<wbr/> 3 ]
26738<a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> =
26739[ 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/>
26740    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/>
26741  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/>
26742    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/>
26743  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/>
26744    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 ]
26745</code></pre>
26746<p>The low-resolution scaling map images for each channel are
26747(displayed using nearest-neighbor interpolation):</p>
26748<p><img alt="Red lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/red_shading.png"/>
26749<img alt="Green (even rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_e_shading.png"/>
26750<img alt="Green (odd rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_o_shading.png"/>
26751<img alt="Blue lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/blue_shading.png"/></p>
26752<p>As a visualization only,<wbr/> inverting the full-color map to recover an
26753image of a gray wall (using bicubic interpolation for visual quality)
26754as captured by the sensor gives:</p>
26755<p><img alt="Image of a uniform white wall (inverse shading map)" src="images/camera2/metadata/android.statistics.lensShadingMap/inv_shading.png"/></p>
26756<p>For a MONOCHROME camera,<wbr/> all of the 2x2 channels must have the same values.<wbr/> An example
26757shading map for such a camera is defined as:</p>
26758<pre><code><a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a> = [ 4,<wbr/> 3 ]
26759<a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> =
26760[ 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/>
26761    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/>
26762  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/>
26763    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/>
26764  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/>
26765    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 ]
26766</code></pre>
26767<p>Note that the RAW image data might be subject to lens shading
26768correction not reported on this map.<wbr/> Query
26769<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
26770to lens shading correction.<wbr/> If <a href="#static_android.sensor.info.lensShadingApplied">android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied</a>
26771is TRUE,<wbr/> the RAW image data is subject to partial or full lens shading
26772correction.<wbr/> In the case full lens shading correction is applied to RAW
26773images,<wbr/> the gain factor map reported in this key will contain all 1.<wbr/>0 gains.<wbr/>
26774In other words,<wbr/> the map reported in this key is the remaining lens shading
26775that needs to be applied on the RAW image to get images without lens shading
26776artifacts.<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
26777formats.<wbr/></p>
26778            </td>
26779          </tr>
26780
26781          <tr class="entries_header">
26782            <th class="th_details" colspan="6">HAL Implementation Details</th>
26783          </tr>
26784          <tr class="entry_cont">
26785            <td class="entry_details" colspan="6">
26786              <p>The lens shading map calculation may depend on exposure and white balance statistics.<wbr/>
26787When AE and AWB are in AUTO modes
26788(<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
26789may have all the information it need to generate most accurate lens shading map.<wbr/> When
26790AE or AWB are in manual mode
26791(<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
26792may be adversely impacted by manual exposure or white balance parameters.<wbr/> To avoid
26793generating unreliable shading map data,<wbr/> the HAL may choose to lock the shading map with
26794the latest known good map generated when the AE and AWB are in AUTO modes.<wbr/></p>
26795            </td>
26796          </tr>
26797
26798          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26799           <!-- end of entry -->
26800
26801
26802          <tr class="entry" id="dynamic_android.statistics.predictedColorGains">
26803            <td class="entry_name
26804                entry_name_deprecated
26805             " rowspan="3">
26806              android.<wbr/>statistics.<wbr/>predicted<wbr/>Color<wbr/>Gains
26807            </td>
26808            <td class="entry_type">
26809                <span class="entry_type_name">float</span>
26810                <span class="entry_type_container">x</span>
26811
26812                <span class="entry_type_array">
26813                  4
26814                </span>
26815              <span class="entry_type_visibility"> [hidden]</span>
26816
26817
26818
26819              <span class="entry_type_deprecated">[deprecated] </span>
26820
26821                <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div>
26822
26823
26824            </td> <!-- entry_type -->
26825
26826            <td class="entry_description">
26827              <p>The best-fit color channel gains calculated
26828by the camera device's statistics units for the current output frame.<wbr/></p>
26829            </td>
26830
26831            <td class="entry_units">
26832            </td>
26833
26834            <td class="entry_range">
26835              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
26836            </td>
26837
26838            <td class="entry_hal_version">
26839              <p>3.<wbr/>2</p>
26840            </td>
26841
26842            <td class="entry_tags">
26843            </td>
26844
26845          </tr>
26846          <tr class="entries_header">
26847            <th class="th_details" colspan="6">Details</th>
26848          </tr>
26849          <tr class="entry_cont">
26850            <td class="entry_details" colspan="6">
26851              <p>This may be different than the gains used for this frame,<wbr/>
26852since statistics processing on data from a new frame
26853typically completes after the transform has already been
26854applied to that frame.<wbr/></p>
26855<p>The 4 channel gains are defined in Bayer domain,<wbr/>
26856see <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> for details.<wbr/></p>
26857<p>This value should always be calculated by the auto-white balance (AWB) block,<wbr/>
26858regardless of the android.<wbr/>control.<wbr/>* current values.<wbr/></p>
26859            </td>
26860          </tr>
26861
26862
26863          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26864           <!-- end of entry -->
26865
26866
26867          <tr class="entry" id="dynamic_android.statistics.predictedColorTransform">
26868            <td class="entry_name
26869                entry_name_deprecated
26870             " rowspan="3">
26871              android.<wbr/>statistics.<wbr/>predicted<wbr/>Color<wbr/>Transform
26872            </td>
26873            <td class="entry_type">
26874                <span class="entry_type_name">rational</span>
26875                <span class="entry_type_container">x</span>
26876
26877                <span class="entry_type_array">
26878                  3 x 3
26879                </span>
26880              <span class="entry_type_visibility"> [hidden]</span>
26881
26882
26883
26884              <span class="entry_type_deprecated">[deprecated] </span>
26885
26886                <div class="entry_type_notes">3x3 rational matrix in row-major order</div>
26887
26888
26889            </td> <!-- entry_type -->
26890
26891            <td class="entry_description">
26892              <p>The best-fit color transform matrix estimate
26893calculated by the camera device's statistics units for the current
26894output frame.<wbr/></p>
26895            </td>
26896
26897            <td class="entry_units">
26898            </td>
26899
26900            <td class="entry_range">
26901              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
26902            </td>
26903
26904            <td class="entry_hal_version">
26905              <p>3.<wbr/>2</p>
26906            </td>
26907
26908            <td class="entry_tags">
26909            </td>
26910
26911          </tr>
26912          <tr class="entries_header">
26913            <th class="th_details" colspan="6">Details</th>
26914          </tr>
26915          <tr class="entry_cont">
26916            <td class="entry_details" colspan="6">
26917              <p>The camera device will provide the estimate from its
26918statistics unit on the white balance transforms to use
26919for the next frame.<wbr/> These are the values the camera device believes
26920are the best fit for the current output frame.<wbr/> This may
26921be different than the transform used for this frame,<wbr/> since
26922statistics processing on data from a new frame typically
26923completes after the transform has already been applied to
26924that frame.<wbr/></p>
26925<p>These estimates must be provided for all frames,<wbr/> even if
26926capture settings and color transforms are set by the application.<wbr/></p>
26927<p>This value should always be calculated by the auto-white balance (AWB) block,<wbr/>
26928regardless of the android.<wbr/>control.<wbr/>* current values.<wbr/></p>
26929            </td>
26930          </tr>
26931
26932
26933          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26934           <!-- end of entry -->
26935
26936
26937          <tr class="entry" id="dynamic_android.statistics.sceneFlicker">
26938            <td class="entry_name
26939             " rowspan="3">
26940              android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker
26941            </td>
26942            <td class="entry_type">
26943                <span class="entry_type_name entry_type_name_enum">byte</span>
26944
26945              <span class="entry_type_visibility"> [public]</span>
26946
26947
26948              <span class="entry_type_hwlevel">[full] </span>
26949
26950
26951
26952                <ul class="entry_type_enum">
26953                  <li>
26954                    <span class="entry_type_enum_name">NONE (v3.2)</span>
26955                    <span class="entry_type_enum_notes"><p>The camera device does not detect any flickering illumination
26956in the current scene.<wbr/></p></span>
26957                  </li>
26958                  <li>
26959                    <span class="entry_type_enum_name">50HZ (v3.2)</span>
26960                    <span class="entry_type_enum_notes"><p>The camera device detects illumination flickering at 50Hz
26961in the current scene.<wbr/></p></span>
26962                  </li>
26963                  <li>
26964                    <span class="entry_type_enum_name">60HZ (v3.2)</span>
26965                    <span class="entry_type_enum_notes"><p>The camera device detects illumination flickering at 60Hz
26966in the current scene.<wbr/></p></span>
26967                  </li>
26968                </ul>
26969
26970            </td> <!-- entry_type -->
26971
26972            <td class="entry_description">
26973              <p>The camera device estimated scene illumination lighting
26974frequency.<wbr/></p>
26975            </td>
26976
26977            <td class="entry_units">
26978            </td>
26979
26980            <td class="entry_range">
26981            </td>
26982
26983            <td class="entry_hal_version">
26984              <p>3.<wbr/>2</p>
26985            </td>
26986
26987            <td class="entry_tags">
26988            </td>
26989
26990          </tr>
26991          <tr class="entries_header">
26992            <th class="th_details" colspan="6">Details</th>
26993          </tr>
26994          <tr class="entry_cont">
26995            <td class="entry_details" colspan="6">
26996              <p>Many light sources,<wbr/> such as most fluorescent lights,<wbr/> flicker at a rate
26997that depends on the local utility power standards.<wbr/> This flicker must be
26998accounted for by auto-exposure routines to avoid artifacts in captured images.<wbr/>
26999The camera device uses this entry to tell the application what the scene
27000illuminant frequency is.<wbr/></p>
27001<p>When manual exposure control is enabled
27002(<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> ==
27003OFF</code>),<wbr/> the <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> doesn't perform
27004antibanding,<wbr/> and the application can ensure it selects
27005exposure times that do not cause banding issues by looking
27006into this metadata field.<wbr/> See
27007<a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> for more details.<wbr/></p>
27008<p>Reports NONE if there doesn't appear to be flickering illumination.<wbr/></p>
27009            </td>
27010          </tr>
27011
27012
27013          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27014           <!-- end of entry -->
27015
27016
27017          <tr class="entry" id="dynamic_android.statistics.hotPixelMapMode">
27018            <td class="entry_name
27019             " rowspan="3">
27020              android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode
27021            </td>
27022            <td class="entry_type">
27023                <span class="entry_type_name entry_type_name_enum">byte</span>
27024
27025              <span class="entry_type_visibility"> [public as boolean]</span>
27026
27027
27028
27029
27030
27031                <ul class="entry_type_enum">
27032                  <li>
27033                    <span class="entry_type_enum_name">OFF (v3.2)</span>
27034                    <span class="entry_type_enum_notes"><p>Hot pixel map production is disabled.<wbr/></p></span>
27035                  </li>
27036                  <li>
27037                    <span class="entry_type_enum_name">ON (v3.2)</span>
27038                    <span class="entry_type_enum_notes"><p>Hot pixel map production is enabled.<wbr/></p></span>
27039                  </li>
27040                </ul>
27041
27042            </td> <!-- entry_type -->
27043
27044            <td class="entry_description">
27045              <p>Operating mode for hot pixel map generation.<wbr/></p>
27046            </td>
27047
27048            <td class="entry_units">
27049            </td>
27050
27051            <td class="entry_range">
27052              <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>
27053            </td>
27054
27055            <td class="entry_hal_version">
27056              <p>3.<wbr/>2</p>
27057            </td>
27058
27059            <td class="entry_tags">
27060              <ul class="entry_tags">
27061                  <li><a href="#tag_V1">V1</a></li>
27062                  <li><a href="#tag_RAW">RAW</a></li>
27063              </ul>
27064            </td>
27065
27066          </tr>
27067          <tr class="entries_header">
27068            <th class="th_details" colspan="6">Details</th>
27069          </tr>
27070          <tr class="entry_cont">
27071            <td class="entry_details" colspan="6">
27072              <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/>
27073If set to <code>false</code>,<wbr/> no hot pixel map will be returned.<wbr/></p>
27074            </td>
27075          </tr>
27076
27077
27078          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27079           <!-- end of entry -->
27080
27081
27082          <tr class="entry" id="dynamic_android.statistics.hotPixelMap">
27083            <td class="entry_name
27084             " rowspan="5">
27085              android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map
27086            </td>
27087            <td class="entry_type">
27088                <span class="entry_type_name">int32</span>
27089                <span class="entry_type_container">x</span>
27090
27091                <span class="entry_type_array">
27092                  2 x n
27093                </span>
27094              <span class="entry_type_visibility"> [public as point]</span>
27095
27096
27097
27098
27099                <div class="entry_type_notes">list of coordinates based on android.<wbr/>sensor.<wbr/>pixel<wbr/>Array<wbr/>Size</div>
27100
27101
27102            </td> <!-- entry_type -->
27103
27104            <td class="entry_description">
27105              <p>List of <code>(x,<wbr/> y)</code> coordinates of hot/<wbr/>defective pixels on the sensor.<wbr/></p>
27106            </td>
27107
27108            <td class="entry_units">
27109            </td>
27110
27111            <td class="entry_range">
27112              <p>n &lt;= number of pixels on the sensor.<wbr/>
27113The <code>(x,<wbr/> y)</code> coordinates must be bounded by
27114<a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
27115            </td>
27116
27117            <td class="entry_hal_version">
27118              <p>3.<wbr/>2</p>
27119            </td>
27120
27121            <td class="entry_tags">
27122              <ul class="entry_tags">
27123                  <li><a href="#tag_V1">V1</a></li>
27124                  <li><a href="#tag_RAW">RAW</a></li>
27125              </ul>
27126            </td>
27127
27128          </tr>
27129          <tr class="entries_header">
27130            <th class="th_details" colspan="6">Details</th>
27131          </tr>
27132          <tr class="entry_cont">
27133            <td class="entry_details" colspan="6">
27134              <p>A coordinate <code>(x,<wbr/> y)</code> must lie between <code>(0,<wbr/> 0)</code>,<wbr/> and
27135<code>(width - 1,<wbr/> height - 1)</code> (inclusive),<wbr/> which are the top-left and
27136bottom-right of the pixel array,<wbr/> respectively.<wbr/> The width and
27137height dimensions are given in <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/>
27138This may include hot pixels that lie outside of the active array
27139bounds given by <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
27140            </td>
27141          </tr>
27142
27143          <tr class="entries_header">
27144            <th class="th_details" colspan="6">HAL Implementation Details</th>
27145          </tr>
27146          <tr class="entry_cont">
27147            <td class="entry_details" colspan="6">
27148              <p>A hotpixel map contains the coordinates of pixels on the camera
27149sensor that do report valid values (usually due to defects in
27150the camera sensor).<wbr/> This includes pixels that are stuck at certain
27151values,<wbr/> or have a response that does not accuractly encode the
27152incoming light from the scene.<wbr/></p>
27153<p>To avoid performance issues,<wbr/> there should be significantly fewer hot
27154pixels than actual pixels on the camera sensor.<wbr/></p>
27155            </td>
27156          </tr>
27157
27158          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27159           <!-- end of entry -->
27160
27161
27162          <tr class="entry" id="dynamic_android.statistics.lensShadingMapMode">
27163            <td class="entry_name
27164             " rowspan="3">
27165              android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode
27166            </td>
27167            <td class="entry_type">
27168                <span class="entry_type_name entry_type_name_enum">byte</span>
27169
27170              <span class="entry_type_visibility"> [public]</span>
27171
27172
27173              <span class="entry_type_hwlevel">[full] </span>
27174
27175
27176
27177                <ul class="entry_type_enum">
27178                  <li>
27179                    <span class="entry_type_enum_name">OFF (v3.2)</span>
27180                    <span class="entry_type_enum_notes"><p>Do not include a lens shading map in the capture result.<wbr/></p></span>
27181                  </li>
27182                  <li>
27183                    <span class="entry_type_enum_name">ON (v3.2)</span>
27184                    <span class="entry_type_enum_notes"><p>Include a lens shading map in the capture result.<wbr/></p></span>
27185                  </li>
27186                </ul>
27187
27188            </td> <!-- entry_type -->
27189
27190            <td class="entry_description">
27191              <p>Whether the camera device will output the lens
27192shading map in output result metadata.<wbr/></p>
27193            </td>
27194
27195            <td class="entry_units">
27196            </td>
27197
27198            <td class="entry_range">
27199              <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>
27200            </td>
27201
27202            <td class="entry_hal_version">
27203              <p>3.<wbr/>2</p>
27204            </td>
27205
27206            <td class="entry_tags">
27207              <ul class="entry_tags">
27208                  <li><a href="#tag_RAW">RAW</a></li>
27209              </ul>
27210            </td>
27211
27212          </tr>
27213          <tr class="entries_header">
27214            <th class="th_details" colspan="6">Details</th>
27215          </tr>
27216          <tr class="entry_cont">
27217            <td class="entry_details" colspan="6">
27218              <p>When set to ON,<wbr/>
27219<a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> will be provided in
27220the output result metadata.<wbr/></p>
27221<p>ON is always supported on devices with the RAW capability.<wbr/></p>
27222            </td>
27223          </tr>
27224
27225
27226          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27227           <!-- end of entry -->
27228
27229
27230          <tr class="entry" id="dynamic_android.statistics.oisDataMode">
27231            <td class="entry_name
27232             " rowspan="3">
27233              android.<wbr/>statistics.<wbr/>ois<wbr/>Data<wbr/>Mode
27234            </td>
27235            <td class="entry_type">
27236                <span class="entry_type_name entry_type_name_enum">byte</span>
27237
27238              <span class="entry_type_visibility"> [public]</span>
27239
27240
27241
27242
27243
27244                <ul class="entry_type_enum">
27245                  <li>
27246                    <span class="entry_type_enum_name">OFF (v3.3)</span>
27247                    <span class="entry_type_enum_notes"><p>Do not include OIS data in the capture result.<wbr/></p></span>
27248                  </li>
27249                  <li>
27250                    <span class="entry_type_enum_name">ON (v3.3)</span>
27251                    <span class="entry_type_enum_notes"><p>Include OIS data in the capture result.<wbr/></p></span>
27252                  </li>
27253                </ul>
27254
27255            </td> <!-- entry_type -->
27256
27257            <td class="entry_description">
27258              <p>A control for selecting whether optical stabilization (OIS) position
27259information is included in output result metadata.<wbr/></p>
27260            </td>
27261
27262            <td class="entry_units">
27263            </td>
27264
27265            <td class="entry_range">
27266              <p><a href="#static_android.statistics.info.availableOisDataModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Ois<wbr/>Data<wbr/>Modes</a></p>
27267            </td>
27268
27269            <td class="entry_hal_version">
27270              <p>3.<wbr/>3</p>
27271            </td>
27272
27273            <td class="entry_tags">
27274            </td>
27275
27276          </tr>
27277          <tr class="entries_header">
27278            <th class="th_details" colspan="6">Details</th>
27279          </tr>
27280          <tr class="entry_cont">
27281            <td class="entry_details" colspan="6">
27282              <p>Since optical image stabilization generally involves motion much faster than the duration
27283of individualq image exposure,<wbr/> multiple OIS samples can be included for a single capture
27284result.<wbr/> For example,<wbr/> if the OIS reporting operates at 200 Hz,<wbr/> a typical camera operating
27285at 30fps may have 6-7 OIS samples per capture result.<wbr/> This information can be combined
27286with the rolling shutter skew to account for lens motion during image exposure in
27287post-processing algorithms.<wbr/></p>
27288            </td>
27289          </tr>
27290
27291
27292          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27293           <!-- end of entry -->
27294
27295
27296          <tr class="entry" id="dynamic_android.statistics.oisTimestamps">
27297            <td class="entry_name
27298             " rowspan="3">
27299              android.<wbr/>statistics.<wbr/>ois<wbr/>Timestamps
27300            </td>
27301            <td class="entry_type">
27302                <span class="entry_type_name">int64</span>
27303                <span class="entry_type_container">x</span>
27304
27305                <span class="entry_type_array">
27306                  n
27307                </span>
27308              <span class="entry_type_visibility"> [ndk_public]</span>
27309
27310
27311
27312
27313
27314
27315            </td> <!-- entry_type -->
27316
27317            <td class="entry_description">
27318              <p>An array of timestamps of OIS samples,<wbr/> in nanoseconds.<wbr/></p>
27319            </td>
27320
27321            <td class="entry_units">
27322              nanoseconds
27323            </td>
27324
27325            <td class="entry_range">
27326            </td>
27327
27328            <td class="entry_hal_version">
27329              <p>3.<wbr/>3</p>
27330            </td>
27331
27332            <td class="entry_tags">
27333            </td>
27334
27335          </tr>
27336          <tr class="entries_header">
27337            <th class="th_details" colspan="6">Details</th>
27338          </tr>
27339          <tr class="entry_cont">
27340            <td class="entry_details" colspan="6">
27341              <p>The array contains the timestamps of OIS samples.<wbr/> The timestamps are in the same
27342timebase as and comparable to <a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a>.<wbr/></p>
27343            </td>
27344          </tr>
27345
27346
27347          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27348           <!-- end of entry -->
27349
27350
27351          <tr class="entry" id="dynamic_android.statistics.oisXShifts">
27352            <td class="entry_name
27353             " rowspan="3">
27354              android.<wbr/>statistics.<wbr/>ois<wbr/>XShifts
27355            </td>
27356            <td class="entry_type">
27357                <span class="entry_type_name">float</span>
27358                <span class="entry_type_container">x</span>
27359
27360                <span class="entry_type_array">
27361                  n
27362                </span>
27363              <span class="entry_type_visibility"> [ndk_public]</span>
27364
27365
27366
27367
27368
27369
27370            </td> <!-- entry_type -->
27371
27372            <td class="entry_description">
27373              <p>An array of shifts of OIS samples,<wbr/> in x direction.<wbr/></p>
27374            </td>
27375
27376            <td class="entry_units">
27377              Pixels in active array.<wbr/>
27378            </td>
27379
27380            <td class="entry_range">
27381            </td>
27382
27383            <td class="entry_hal_version">
27384              <p>3.<wbr/>3</p>
27385            </td>
27386
27387            <td class="entry_tags">
27388            </td>
27389
27390          </tr>
27391          <tr class="entries_header">
27392            <th class="th_details" colspan="6">Details</th>
27393          </tr>
27394          <tr class="entry_cont">
27395            <td class="entry_details" colspan="6">
27396              <p>The array contains the amount of shifts in x direction,<wbr/> in pixels,<wbr/> based on OIS samples.<wbr/>
27397A positive value is a shift from left to right in the pre-correction active array
27398coordinate system.<wbr/> For example,<wbr/> if the optical center is (1000,<wbr/> 500) in pre-correction
27399active array coordinates,<wbr/> a shift of (3,<wbr/> 0) puts the new optical center at (1003,<wbr/> 500).<wbr/></p>
27400<p>The number of shifts must match the number of timestamps in
27401<a href="#dynamic_android.statistics.oisTimestamps">android.<wbr/>statistics.<wbr/>ois<wbr/>Timestamps</a>.<wbr/></p>
27402<p>The OIS samples are not affected by whether lens distortion correction is enabled (on
27403supporting devices).<wbr/> They are always reported in pre-correction active array coordinates,<wbr/>
27404since the scaling of OIS shifts would depend on the specific spot on the sensor the shift
27405is needed.<wbr/></p>
27406            </td>
27407          </tr>
27408
27409
27410          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27411           <!-- end of entry -->
27412
27413
27414          <tr class="entry" id="dynamic_android.statistics.oisYShifts">
27415            <td class="entry_name
27416             " rowspan="3">
27417              android.<wbr/>statistics.<wbr/>ois<wbr/>YShifts
27418            </td>
27419            <td class="entry_type">
27420                <span class="entry_type_name">float</span>
27421                <span class="entry_type_container">x</span>
27422
27423                <span class="entry_type_array">
27424                  n
27425                </span>
27426              <span class="entry_type_visibility"> [ndk_public]</span>
27427
27428
27429
27430
27431
27432
27433            </td> <!-- entry_type -->
27434
27435            <td class="entry_description">
27436              <p>An array of shifts of OIS samples,<wbr/> in y direction.<wbr/></p>
27437            </td>
27438
27439            <td class="entry_units">
27440              Pixels in active array.<wbr/>
27441            </td>
27442
27443            <td class="entry_range">
27444            </td>
27445
27446            <td class="entry_hal_version">
27447              <p>3.<wbr/>3</p>
27448            </td>
27449
27450            <td class="entry_tags">
27451            </td>
27452
27453          </tr>
27454          <tr class="entries_header">
27455            <th class="th_details" colspan="6">Details</th>
27456          </tr>
27457          <tr class="entry_cont">
27458            <td class="entry_details" colspan="6">
27459              <p>The array contains the amount of shifts in y direction,<wbr/> in pixels,<wbr/> based on OIS samples.<wbr/>
27460A positive value is a shift from top to bottom in pre-correction active array coordinate
27461system.<wbr/> For example,<wbr/> if the optical center is (1000,<wbr/> 500) in active array coordinates,<wbr/> a
27462shift of (0,<wbr/> 5) puts the new optical center at (1000,<wbr/> 505).<wbr/></p>
27463<p>The number of shifts must match the number of timestamps in
27464<a href="#dynamic_android.statistics.oisTimestamps">android.<wbr/>statistics.<wbr/>ois<wbr/>Timestamps</a>.<wbr/></p>
27465<p>The OIS samples are not affected by whether lens distortion correction is enabled (on
27466supporting devices).<wbr/> They are always reported in pre-correction active array coordinates,<wbr/>
27467since the scaling of OIS shifts would depend on the specific spot on the sensor the shift
27468is needed.<wbr/></p>
27469            </td>
27470          </tr>
27471
27472
27473          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27474           <!-- end of entry -->
27475
27476
27477          <tr class="entry" id="dynamic_android.statistics.oisSamples">
27478            <td class="entry_name
27479             " rowspan="3">
27480              android.<wbr/>statistics.<wbr/>ois<wbr/>Samples
27481            </td>
27482            <td class="entry_type">
27483                <span class="entry_type_name">float</span>
27484                <span class="entry_type_container">x</span>
27485
27486                <span class="entry_type_array">
27487                  n
27488                </span>
27489              <span class="entry_type_visibility"> [java_public as oisSample]</span>
27490
27491              <span class="entry_type_synthetic">[synthetic] </span>
27492
27493
27494
27495
27496
27497            </td> <!-- entry_type -->
27498
27499            <td class="entry_description">
27500              <p>An array of optical stabilization (OIS) position samples.<wbr/></p>
27501            </td>
27502
27503            <td class="entry_units">
27504            </td>
27505
27506            <td class="entry_range">
27507            </td>
27508
27509            <td class="entry_hal_version">
27510              <p>3.<wbr/>3</p>
27511            </td>
27512
27513            <td class="entry_tags">
27514            </td>
27515
27516          </tr>
27517          <tr class="entries_header">
27518            <th class="th_details" colspan="6">Details</th>
27519          </tr>
27520          <tr class="entry_cont">
27521            <td class="entry_details" colspan="6">
27522              <p>Each OIS sample contains the timestamp and the amount of shifts in x and y direction,<wbr/>
27523in pixels,<wbr/> of the OIS sample.<wbr/></p>
27524<p>A positive value for a shift in x direction is a shift from left to right in the
27525pre-correction active array coordinate system.<wbr/> For example,<wbr/> if the optical center is
27526(1000,<wbr/> 500) in pre-correction active array coordinates,<wbr/> a shift of (3,<wbr/> 0) puts the new
27527optical center at (1003,<wbr/> 500).<wbr/></p>
27528<p>A positive value for a shift in y direction is a shift from top to bottom in
27529pre-correction active array coordinate system.<wbr/> For example,<wbr/> if the optical center is
27530(1000,<wbr/> 500) in active array coordinates,<wbr/> a shift of (0,<wbr/> 5) puts the new optical center at
27531(1000,<wbr/> 505).<wbr/></p>
27532<p>The OIS samples are not affected by whether lens distortion correction is enabled (on
27533supporting devices).<wbr/> They are always reported in pre-correction active array coordinates,<wbr/>
27534since the scaling of OIS shifts would depend on the specific spot on the sensor the shift
27535is needed.<wbr/></p>
27536            </td>
27537          </tr>
27538
27539
27540          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27541           <!-- end of entry -->
27542
27543
27544
27545      <!-- end of kind -->
27546      </tbody>
27547
27548  <!-- end of section -->
27549  <tr><td colspan="7" id="section_tonemap" class="section">tonemap</td></tr>
27550
27551
27552      <tr><td colspan="7" class="kind">controls</td></tr>
27553
27554      <thead class="entries_header">
27555        <tr>
27556          <th class="th_name">Property Name</th>
27557          <th class="th_type">Type</th>
27558          <th class="th_description">Description</th>
27559          <th class="th_units">Units</th>
27560          <th class="th_range">Range</th>
27561          <th class="th_hal_version">Initial HIDL HAL version</th>
27562          <th class="th_tags">Tags</th>
27563        </tr>
27564      </thead>
27565
27566      <tbody>
27567
27568
27569
27570
27571
27572
27573
27574
27575
27576
27577          <tr class="entry" id="controls_android.tonemap.curveBlue">
27578            <td class="entry_name
27579             " rowspan="3">
27580              android.<wbr/>tonemap.<wbr/>curve<wbr/>Blue
27581            </td>
27582            <td class="entry_type">
27583                <span class="entry_type_name">float</span>
27584                <span class="entry_type_container">x</span>
27585
27586                <span class="entry_type_array">
27587                  n x 2
27588                </span>
27589              <span class="entry_type_visibility"> [ndk_public]</span>
27590
27591
27592              <span class="entry_type_hwlevel">[full] </span>
27593
27594
27595                <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>
27596
27597
27598            </td> <!-- entry_type -->
27599
27600            <td class="entry_description">
27601              <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the blue
27602channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
27603CONTRAST_<wbr/>CURVE.<wbr/></p>
27604            </td>
27605
27606            <td class="entry_units">
27607            </td>
27608
27609            <td class="entry_range">
27610            </td>
27611
27612            <td class="entry_hal_version">
27613              <p>3.<wbr/>2</p>
27614            </td>
27615
27616            <td class="entry_tags">
27617            </td>
27618
27619          </tr>
27620          <tr class="entries_header">
27621            <th class="th_details" colspan="6">Details</th>
27622          </tr>
27623          <tr class="entry_cont">
27624            <td class="entry_details" colspan="6">
27625              <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
27626            </td>
27627          </tr>
27628
27629
27630          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27631           <!-- end of entry -->
27632
27633
27634          <tr class="entry" id="controls_android.tonemap.curveGreen">
27635            <td class="entry_name
27636             " rowspan="3">
27637              android.<wbr/>tonemap.<wbr/>curve<wbr/>Green
27638            </td>
27639            <td class="entry_type">
27640                <span class="entry_type_name">float</span>
27641                <span class="entry_type_container">x</span>
27642
27643                <span class="entry_type_array">
27644                  n x 2
27645                </span>
27646              <span class="entry_type_visibility"> [ndk_public]</span>
27647
27648
27649              <span class="entry_type_hwlevel">[full] </span>
27650
27651
27652                <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>
27653
27654
27655            </td> <!-- entry_type -->
27656
27657            <td class="entry_description">
27658              <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the green
27659channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
27660CONTRAST_<wbr/>CURVE.<wbr/></p>
27661            </td>
27662
27663            <td class="entry_units">
27664            </td>
27665
27666            <td class="entry_range">
27667            </td>
27668
27669            <td class="entry_hal_version">
27670              <p>3.<wbr/>2</p>
27671            </td>
27672
27673            <td class="entry_tags">
27674            </td>
27675
27676          </tr>
27677          <tr class="entries_header">
27678            <th class="th_details" colspan="6">Details</th>
27679          </tr>
27680          <tr class="entry_cont">
27681            <td class="entry_details" colspan="6">
27682              <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
27683            </td>
27684          </tr>
27685
27686
27687          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27688           <!-- end of entry -->
27689
27690
27691          <tr class="entry" id="controls_android.tonemap.curveRed">
27692            <td class="entry_name
27693             " rowspan="5">
27694              android.<wbr/>tonemap.<wbr/>curve<wbr/>Red
27695            </td>
27696            <td class="entry_type">
27697                <span class="entry_type_name">float</span>
27698                <span class="entry_type_container">x</span>
27699
27700                <span class="entry_type_array">
27701                  n x 2
27702                </span>
27703              <span class="entry_type_visibility"> [ndk_public]</span>
27704
27705
27706              <span class="entry_type_hwlevel">[full] </span>
27707
27708
27709                <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>
27710
27711
27712            </td> <!-- entry_type -->
27713
27714            <td class="entry_description">
27715              <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the red
27716channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
27717CONTRAST_<wbr/>CURVE.<wbr/></p>
27718            </td>
27719
27720            <td class="entry_units">
27721            </td>
27722
27723            <td class="entry_range">
27724              <p>0-1 on both input and output coordinates,<wbr/> normalized
27725as a floating-point value such that 0 == black and 1 == white.<wbr/></p>
27726            </td>
27727
27728            <td class="entry_hal_version">
27729              <p>3.<wbr/>2</p>
27730            </td>
27731
27732            <td class="entry_tags">
27733            </td>
27734
27735          </tr>
27736          <tr class="entries_header">
27737            <th class="th_details" colspan="6">Details</th>
27738          </tr>
27739          <tr class="entry_cont">
27740            <td class="entry_details" colspan="6">
27741              <p>Each channel's curve is defined by an array of control points:</p>
27742<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> =
27743  [ P0in,<wbr/> P0out,<wbr/> P1in,<wbr/> P1out,<wbr/> P2in,<wbr/> P2out,<wbr/> P3in,<wbr/> P3out,<wbr/> ...,<wbr/> PNin,<wbr/> PNout ]
277442 &lt;= N &lt;= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
27745<p>These are sorted in order of increasing <code>Pin</code>; it is
27746required that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
27747define a complete mapping.<wbr/> For input values between control points,<wbr/>
27748the camera device must linearly interpolate between the control
27749points.<wbr/></p>
27750<p>Each curve can have an independent number of points,<wbr/> and the number
27751of points can be less than max (that is,<wbr/> the request doesn't have to
27752always provide a curve with number of points equivalent to
27753<a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
27754<p>For devices with MONOCHROME capability,<wbr/> all three channels must have the same set of
27755control points.<wbr/></p>
27756<p>A few examples,<wbr/> and their corresponding graphical mappings; these
27757only specify the red channel and the precision is limited to 4
27758digits,<wbr/> for conciseness.<wbr/></p>
27759<p>Linear mapping:</p>
27760<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 ]
27761</code></pre>
27762<p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
27763<p>Invert mapping:</p>
27764<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 ]
27765</code></pre>
27766<p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
27767<p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
27768<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
27769  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/>
27770  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/>
27771  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/>
27772  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 ]
27773</code></pre>
27774<p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
27775<p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
27776<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
27777  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/>
27778  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/>
27779  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/>
27780  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 ]
27781</code></pre>
27782<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
27783            </td>
27784          </tr>
27785
27786          <tr class="entries_header">
27787            <th class="th_details" colspan="6">HAL Implementation Details</th>
27788          </tr>
27789          <tr class="entry_cont">
27790            <td class="entry_details" colspan="6">
27791              <p>For good quality of mapping,<wbr/> at least 128 control points are
27792preferred.<wbr/></p>
27793<p>A typical use case of this would be a gamma-1/<wbr/>2.<wbr/>2 curve,<wbr/> with as many
27794control points used as are available.<wbr/></p>
27795            </td>
27796          </tr>
27797
27798          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27799           <!-- end of entry -->
27800
27801
27802          <tr class="entry" id="controls_android.tonemap.curve">
27803            <td class="entry_name
27804             " rowspan="5">
27805              android.<wbr/>tonemap.<wbr/>curve
27806            </td>
27807            <td class="entry_type">
27808                <span class="entry_type_name">float</span>
27809
27810              <span class="entry_type_visibility"> [java_public as tonemapCurve]</span>
27811
27812              <span class="entry_type_synthetic">[synthetic] </span>
27813
27814              <span class="entry_type_hwlevel">[full] </span>
27815
27816
27817
27818
27819            </td> <!-- entry_type -->
27820
27821            <td class="entry_description">
27822              <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a>
27823is CONTRAST_<wbr/>CURVE.<wbr/></p>
27824            </td>
27825
27826            <td class="entry_units">
27827            </td>
27828
27829            <td class="entry_range">
27830            </td>
27831
27832            <td class="entry_hal_version">
27833              <p>3.<wbr/>2</p>
27834            </td>
27835
27836            <td class="entry_tags">
27837            </td>
27838
27839          </tr>
27840          <tr class="entries_header">
27841            <th class="th_details" colspan="6">Details</th>
27842          </tr>
27843          <tr class="entry_cont">
27844            <td class="entry_details" colspan="6">
27845              <p>The tonemapCurve consist of three curves for each of red,<wbr/> green,<wbr/> and blue
27846channels respectively.<wbr/> The following example uses the red channel as an
27847example.<wbr/> The same logic applies to green and blue channel.<wbr/>
27848Each channel's curve is defined by an array of control points:</p>
27849<pre><code>curveRed =
27850  [ 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) ]
278512 &lt;= N &lt;= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
27852<p>These are sorted in order of increasing <code>Pin</code>; it is always
27853guaranteed that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
27854define a complete mapping.<wbr/> For input values between control points,<wbr/>
27855the camera device must linearly interpolate between the control
27856points.<wbr/></p>
27857<p>Each curve can have an independent number of points,<wbr/> and the number
27858of points can be less than max (that is,<wbr/> the request doesn't have to
27859always provide a curve with number of points equivalent to
27860<a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
27861<p>For devices with MONOCHROME capability,<wbr/> all three channels must have the same set of
27862control points.<wbr/></p>
27863<p>A few examples,<wbr/> and their corresponding graphical mappings; these
27864only specify the red channel and the precision is limited to 4
27865digits,<wbr/> for conciseness.<wbr/></p>
27866<p>Linear mapping:</p>
27867<pre><code>curveRed = [ (0,<wbr/> 0),<wbr/> (1.<wbr/>0,<wbr/> 1.<wbr/>0) ]
27868</code></pre>
27869<p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
27870<p>Invert mapping:</p>
27871<pre><code>curveRed = [ (0,<wbr/> 1.<wbr/>0),<wbr/> (1.<wbr/>0,<wbr/> 0) ]
27872</code></pre>
27873<p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
27874<p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
27875<pre><code>curveRed = [
27876  (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/>
27877  (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/>
27878  (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/>
27879  (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) ]
27880</code></pre>
27881<p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
27882<p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
27883<pre><code>curveRed = [
27884  (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/>
27885  (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/>
27886  (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/>
27887  (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) ]
27888</code></pre>
27889<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
27890            </td>
27891          </tr>
27892
27893          <tr class="entries_header">
27894            <th class="th_details" colspan="6">HAL Implementation Details</th>
27895          </tr>
27896          <tr class="entry_cont">
27897            <td class="entry_details" colspan="6">
27898              <p>This entry is created by the framework from the curveRed,<wbr/> curveGreen and
27899curveBlue entries.<wbr/></p>
27900            </td>
27901          </tr>
27902
27903          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27904           <!-- end of entry -->
27905
27906
27907          <tr class="entry" id="controls_android.tonemap.mode">
27908            <td class="entry_name
27909             " rowspan="3">
27910              android.<wbr/>tonemap.<wbr/>mode
27911            </td>
27912            <td class="entry_type">
27913                <span class="entry_type_name entry_type_name_enum">byte</span>
27914
27915              <span class="entry_type_visibility"> [public]</span>
27916
27917
27918              <span class="entry_type_hwlevel">[full] </span>
27919
27920
27921
27922                <ul class="entry_type_enum">
27923                  <li>
27924                    <span class="entry_type_enum_name">CONTRAST_CURVE (v3.2)</span>
27925                    <span class="entry_type_enum_notes"><p>Use the tone mapping curve specified in
27926the <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>* entries.<wbr/></p>
27927<p>All color enhancement and tonemapping must be disabled,<wbr/> except
27928for applying the tonemapping curve specified by
27929<a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p>
27930<p>Must not slow down frame rate relative to raw
27931sensor output.<wbr/></p></span>
27932                  </li>
27933                  <li>
27934                    <span class="entry_type_enum_name">FAST (v3.2)</span>
27935                    <span class="entry_type_enum_notes"><p>Advanced gamma mapping and color enhancement may be applied,<wbr/> without
27936reducing frame rate compared to raw sensor output.<wbr/></p></span>
27937                  </li>
27938                  <li>
27939                    <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
27940                    <span class="entry_type_enum_notes"><p>High-quality gamma mapping and color enhancement will be applied,<wbr/> at
27941the cost of possibly reduced frame rate compared to raw sensor output.<wbr/></p></span>
27942                  </li>
27943                  <li>
27944                    <span class="entry_type_enum_name">GAMMA_VALUE (v3.2)</span>
27945                    <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
27946tonemapping.<wbr/></p>
27947<p>All color enhancement and tonemapping must be disabled,<wbr/> except
27948for applying the tonemapping curve specified by <a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a>.<wbr/></p>
27949<p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
27950                  </li>
27951                  <li>
27952                    <span class="entry_type_enum_name">PRESET_CURVE (v3.2)</span>
27953                    <span class="entry_type_enum_notes"><p>Use the preset tonemapping curve specified in
27954<a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a> to peform tonemapping.<wbr/></p>
27955<p>All color enhancement and tonemapping must be disabled,<wbr/> except
27956for applying the tonemapping curve specified by
27957<a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a>.<wbr/></p>
27958<p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
27959                  </li>
27960                </ul>
27961
27962            </td> <!-- entry_type -->
27963
27964            <td class="entry_description">
27965              <p>High-level global contrast/<wbr/>gamma/<wbr/>tonemapping control.<wbr/></p>
27966            </td>
27967
27968            <td class="entry_units">
27969            </td>
27970
27971            <td class="entry_range">
27972              <p><a href="#static_android.tonemap.availableToneMapModes">android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes</a></p>
27973            </td>
27974
27975            <td class="entry_hal_version">
27976              <p>3.<wbr/>2</p>
27977            </td>
27978
27979            <td class="entry_tags">
27980            </td>
27981
27982          </tr>
27983          <tr class="entries_header">
27984            <th class="th_details" colspan="6">Details</th>
27985          </tr>
27986          <tr class="entry_cont">
27987            <td class="entry_details" colspan="6">
27988              <p>When switching to an application-defined contrast curve by setting
27989<a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> to CONTRAST_<wbr/>CURVE,<wbr/> the curve is defined
27990per-channel with a set of <code>(in,<wbr/> out)</code> points that specify the
27991mapping from input high-bit-depth pixel value to the output
27992low-bit-depth value.<wbr/>  Since the actual pixel ranges of both input
27993and output may change depending on the camera pipeline,<wbr/> the values
27994are specified by normalized floating-point numbers.<wbr/></p>
27995<p>More-complex color mapping operations such as 3D color look-up
27996tables,<wbr/> selective chroma enhancement,<wbr/> or other non-linear color
27997transforms will be disabled when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
27998CONTRAST_<wbr/>CURVE.<wbr/></p>
27999<p>When using either FAST or HIGH_<wbr/>QUALITY,<wbr/> the camera device will
28000emit its own tonemap curve in <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/>
28001These values are always available,<wbr/> and as close as possible to the
28002actually used nonlinear/<wbr/>nonglobal transforms.<wbr/></p>
28003<p>If a request is sent with CONTRAST_<wbr/>CURVE with the camera device's
28004provided curve in FAST or HIGH_<wbr/>QUALITY,<wbr/> the image's tonemap will be
28005roughly the same.<wbr/></p>
28006            </td>
28007          </tr>
28008
28009
28010          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28011           <!-- end of entry -->
28012
28013
28014          <tr class="entry" id="controls_android.tonemap.gamma">
28015            <td class="entry_name
28016             " rowspan="3">
28017              android.<wbr/>tonemap.<wbr/>gamma
28018            </td>
28019            <td class="entry_type">
28020                <span class="entry_type_name">float</span>
28021
28022              <span class="entry_type_visibility"> [public]</span>
28023
28024
28025
28026
28027
28028
28029            </td> <!-- entry_type -->
28030
28031            <td class="entry_description">
28032              <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
28033GAMMA_<wbr/>VALUE</p>
28034            </td>
28035
28036            <td class="entry_units">
28037            </td>
28038
28039            <td class="entry_range">
28040            </td>
28041
28042            <td class="entry_hal_version">
28043              <p>3.<wbr/>2</p>
28044            </td>
28045
28046            <td class="entry_tags">
28047            </td>
28048
28049          </tr>
28050          <tr class="entries_header">
28051            <th class="th_details" colspan="6">Details</th>
28052          </tr>
28053          <tr class="entry_cont">
28054            <td class="entry_details" colspan="6">
28055              <p>The tonemap curve will be defined the following formula:
28056* OUT = pow(IN,<wbr/> 1.<wbr/>0 /<wbr/> gamma)
28057where IN and OUT is the input pixel value scaled to range [0.<wbr/>0,<wbr/> 1.<wbr/>0],<wbr/>
28058pow is the power function and gamma is the gamma value specified by this
28059key.<wbr/></p>
28060<p>The same curve will be applied to all color channels.<wbr/> The camera device
28061may clip the input gamma value to its supported range.<wbr/> The actual applied
28062value will be returned in capture result.<wbr/></p>
28063<p>The valid range of gamma value varies on different devices,<wbr/> but values
28064within [1.<wbr/>0,<wbr/> 5.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
28065            </td>
28066          </tr>
28067
28068
28069          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28070           <!-- end of entry -->
28071
28072
28073          <tr class="entry" id="controls_android.tonemap.presetCurve">
28074            <td class="entry_name
28075             " rowspan="3">
28076              android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve
28077            </td>
28078            <td class="entry_type">
28079                <span class="entry_type_name entry_type_name_enum">byte</span>
28080
28081              <span class="entry_type_visibility"> [public]</span>
28082
28083
28084
28085
28086
28087                <ul class="entry_type_enum">
28088                  <li>
28089                    <span class="entry_type_enum_name">SRGB (v3.2)</span>
28090                    <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by sRGB</p></span>
28091                  </li>
28092                  <li>
28093                    <span class="entry_type_enum_name">REC709 (v3.2)</span>
28094                    <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by ITU-R BT.<wbr/>709</p></span>
28095                  </li>
28096                </ul>
28097
28098            </td> <!-- entry_type -->
28099
28100            <td class="entry_description">
28101              <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
28102PRESET_<wbr/>CURVE</p>
28103            </td>
28104
28105            <td class="entry_units">
28106            </td>
28107
28108            <td class="entry_range">
28109            </td>
28110
28111            <td class="entry_hal_version">
28112              <p>3.<wbr/>2</p>
28113            </td>
28114
28115            <td class="entry_tags">
28116            </td>
28117
28118          </tr>
28119          <tr class="entries_header">
28120            <th class="th_details" colspan="6">Details</th>
28121          </tr>
28122          <tr class="entry_cont">
28123            <td class="entry_details" colspan="6">
28124              <p>The tonemap curve will be defined by specified standard.<wbr/></p>
28125<p>sRGB (approximated by 16 control points):</p>
28126<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
28127<p>Rec.<wbr/> 709 (approximated by 16 control points):</p>
28128<p><img alt="Rec. 709 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/rec709_tonemap.png"/></p>
28129<p>Note that above figures show a 16 control points approximation of preset
28130curves.<wbr/> Camera devices may apply a different approximation to the curve.<wbr/></p>
28131            </td>
28132          </tr>
28133
28134
28135          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28136           <!-- end of entry -->
28137
28138
28139
28140      <!-- end of kind -->
28141      </tbody>
28142      <tr><td colspan="7" class="kind">static</td></tr>
28143
28144      <thead class="entries_header">
28145        <tr>
28146          <th class="th_name">Property Name</th>
28147          <th class="th_type">Type</th>
28148          <th class="th_description">Description</th>
28149          <th class="th_units">Units</th>
28150          <th class="th_range">Range</th>
28151          <th class="th_hal_version">Initial HIDL HAL version</th>
28152          <th class="th_tags">Tags</th>
28153        </tr>
28154      </thead>
28155
28156      <tbody>
28157
28158
28159
28160
28161
28162
28163
28164
28165
28166
28167          <tr class="entry" id="static_android.tonemap.maxCurvePoints">
28168            <td class="entry_name
28169             " rowspan="5">
28170              android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points
28171            </td>
28172            <td class="entry_type">
28173                <span class="entry_type_name">int32</span>
28174
28175              <span class="entry_type_visibility"> [public]</span>
28176
28177
28178              <span class="entry_type_hwlevel">[full] </span>
28179
28180
28181
28182
28183            </td> <!-- entry_type -->
28184
28185            <td class="entry_description">
28186              <p>Maximum number of supported points in the
28187tonemap curve that can be used for <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p>
28188            </td>
28189
28190            <td class="entry_units">
28191            </td>
28192
28193            <td class="entry_range">
28194            </td>
28195
28196            <td class="entry_hal_version">
28197              <p>3.<wbr/>2</p>
28198            </td>
28199
28200            <td class="entry_tags">
28201            </td>
28202
28203          </tr>
28204          <tr class="entries_header">
28205            <th class="th_details" colspan="6">Details</th>
28206          </tr>
28207          <tr class="entry_cont">
28208            <td class="entry_details" colspan="6">
28209              <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
28210less than this maximum,<wbr/> the camera device will resample the curve to its internal
28211representation,<wbr/> using linear interpolation.<wbr/></p>
28212<p>The output curves in the result metadata may have a different number
28213of points than the input curves,<wbr/> and will represent the actual
28214hardware curves used as closely as possible when linearly interpolated.<wbr/></p>
28215            </td>
28216          </tr>
28217
28218          <tr class="entries_header">
28219            <th class="th_details" colspan="6">HAL Implementation Details</th>
28220          </tr>
28221          <tr class="entry_cont">
28222            <td class="entry_details" colspan="6">
28223              <p>This value must be at least 64.<wbr/> This should be at least 128.<wbr/></p>
28224            </td>
28225          </tr>
28226
28227          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28228           <!-- end of entry -->
28229
28230
28231          <tr class="entry" id="static_android.tonemap.availableToneMapModes">
28232            <td class="entry_name
28233             " rowspan="5">
28234              android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes
28235            </td>
28236            <td class="entry_type">
28237                <span class="entry_type_name">byte</span>
28238                <span class="entry_type_container">x</span>
28239
28240                <span class="entry_type_array">
28241                  n
28242                </span>
28243              <span class="entry_type_visibility"> [public as enumList]</span>
28244
28245
28246              <span class="entry_type_hwlevel">[full] </span>
28247
28248
28249                <div class="entry_type_notes">list of enums</div>
28250
28251
28252            </td> <!-- entry_type -->
28253
28254            <td class="entry_description">
28255              <p>List of tonemapping modes for <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> that are supported by this camera
28256device.<wbr/></p>
28257            </td>
28258
28259            <td class="entry_units">
28260            </td>
28261
28262            <td class="entry_range">
28263              <p>Any value listed in <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a></p>
28264            </td>
28265
28266            <td class="entry_hal_version">
28267              <p>3.<wbr/>2</p>
28268            </td>
28269
28270            <td class="entry_tags">
28271            </td>
28272
28273          </tr>
28274          <tr class="entries_header">
28275            <th class="th_details" colspan="6">Details</th>
28276          </tr>
28277          <tr class="entry_cont">
28278            <td class="entry_details" colspan="6">
28279              <p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always contain
28280at least one of below mode combinations:</p>
28281<ul>
28282<li>CONTRAST_<wbr/>CURVE,<wbr/> FAST and HIGH_<wbr/>QUALITY</li>
28283<li>GAMMA_<wbr/>VALUE,<wbr/> PRESET_<wbr/>CURVE,<wbr/> FAST and HIGH_<wbr/>QUALITY</li>
28284</ul>
28285<p>This includes all FULL level devices.<wbr/></p>
28286            </td>
28287          </tr>
28288
28289          <tr class="entries_header">
28290            <th class="th_details" colspan="6">HAL Implementation Details</th>
28291          </tr>
28292          <tr class="entry_cont">
28293            <td class="entry_details" colspan="6">
28294              <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if automatic tonemap control is available
28295on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
28296That is,<wbr/> if the highest quality implementation on the camera device does not slow down
28297capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
28298            </td>
28299          </tr>
28300
28301          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28302           <!-- end of entry -->
28303
28304
28305
28306      <!-- end of kind -->
28307      </tbody>
28308      <tr><td colspan="7" class="kind">dynamic</td></tr>
28309
28310      <thead class="entries_header">
28311        <tr>
28312          <th class="th_name">Property Name</th>
28313          <th class="th_type">Type</th>
28314          <th class="th_description">Description</th>
28315          <th class="th_units">Units</th>
28316          <th class="th_range">Range</th>
28317          <th class="th_hal_version">Initial HIDL HAL version</th>
28318          <th class="th_tags">Tags</th>
28319        </tr>
28320      </thead>
28321
28322      <tbody>
28323
28324
28325
28326
28327
28328
28329
28330
28331
28332
28333          <tr class="entry" id="dynamic_android.tonemap.curveBlue">
28334            <td class="entry_name
28335             " rowspan="3">
28336              android.<wbr/>tonemap.<wbr/>curve<wbr/>Blue
28337            </td>
28338            <td class="entry_type">
28339                <span class="entry_type_name">float</span>
28340                <span class="entry_type_container">x</span>
28341
28342                <span class="entry_type_array">
28343                  n x 2
28344                </span>
28345              <span class="entry_type_visibility"> [ndk_public]</span>
28346
28347
28348              <span class="entry_type_hwlevel">[full] </span>
28349
28350
28351                <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>
28352
28353
28354            </td> <!-- entry_type -->
28355
28356            <td class="entry_description">
28357              <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the blue
28358channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
28359CONTRAST_<wbr/>CURVE.<wbr/></p>
28360            </td>
28361
28362            <td class="entry_units">
28363            </td>
28364
28365            <td class="entry_range">
28366            </td>
28367
28368            <td class="entry_hal_version">
28369              <p>3.<wbr/>2</p>
28370            </td>
28371
28372            <td class="entry_tags">
28373            </td>
28374
28375          </tr>
28376          <tr class="entries_header">
28377            <th class="th_details" colspan="6">Details</th>
28378          </tr>
28379          <tr class="entry_cont">
28380            <td class="entry_details" colspan="6">
28381              <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
28382            </td>
28383          </tr>
28384
28385
28386          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28387           <!-- end of entry -->
28388
28389
28390          <tr class="entry" id="dynamic_android.tonemap.curveGreen">
28391            <td class="entry_name
28392             " rowspan="3">
28393              android.<wbr/>tonemap.<wbr/>curve<wbr/>Green
28394            </td>
28395            <td class="entry_type">
28396                <span class="entry_type_name">float</span>
28397                <span class="entry_type_container">x</span>
28398
28399                <span class="entry_type_array">
28400                  n x 2
28401                </span>
28402              <span class="entry_type_visibility"> [ndk_public]</span>
28403
28404
28405              <span class="entry_type_hwlevel">[full] </span>
28406
28407
28408                <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>
28409
28410
28411            </td> <!-- entry_type -->
28412
28413            <td class="entry_description">
28414              <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the green
28415channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
28416CONTRAST_<wbr/>CURVE.<wbr/></p>
28417            </td>
28418
28419            <td class="entry_units">
28420            </td>
28421
28422            <td class="entry_range">
28423            </td>
28424
28425            <td class="entry_hal_version">
28426              <p>3.<wbr/>2</p>
28427            </td>
28428
28429            <td class="entry_tags">
28430            </td>
28431
28432          </tr>
28433          <tr class="entries_header">
28434            <th class="th_details" colspan="6">Details</th>
28435          </tr>
28436          <tr class="entry_cont">
28437            <td class="entry_details" colspan="6">
28438              <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
28439            </td>
28440          </tr>
28441
28442
28443          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28444           <!-- end of entry -->
28445
28446
28447          <tr class="entry" id="dynamic_android.tonemap.curveRed">
28448            <td class="entry_name
28449             " rowspan="5">
28450              android.<wbr/>tonemap.<wbr/>curve<wbr/>Red
28451            </td>
28452            <td class="entry_type">
28453                <span class="entry_type_name">float</span>
28454                <span class="entry_type_container">x</span>
28455
28456                <span class="entry_type_array">
28457                  n x 2
28458                </span>
28459              <span class="entry_type_visibility"> [ndk_public]</span>
28460
28461
28462              <span class="entry_type_hwlevel">[full] </span>
28463
28464
28465                <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>
28466
28467
28468            </td> <!-- entry_type -->
28469
28470            <td class="entry_description">
28471              <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the red
28472channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
28473CONTRAST_<wbr/>CURVE.<wbr/></p>
28474            </td>
28475
28476            <td class="entry_units">
28477            </td>
28478
28479            <td class="entry_range">
28480              <p>0-1 on both input and output coordinates,<wbr/> normalized
28481as a floating-point value such that 0 == black and 1 == white.<wbr/></p>
28482            </td>
28483
28484            <td class="entry_hal_version">
28485              <p>3.<wbr/>2</p>
28486            </td>
28487
28488            <td class="entry_tags">
28489            </td>
28490
28491          </tr>
28492          <tr class="entries_header">
28493            <th class="th_details" colspan="6">Details</th>
28494          </tr>
28495          <tr class="entry_cont">
28496            <td class="entry_details" colspan="6">
28497              <p>Each channel's curve is defined by an array of control points:</p>
28498<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> =
28499  [ P0in,<wbr/> P0out,<wbr/> P1in,<wbr/> P1out,<wbr/> P2in,<wbr/> P2out,<wbr/> P3in,<wbr/> P3out,<wbr/> ...,<wbr/> PNin,<wbr/> PNout ]
285002 &lt;= N &lt;= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
28501<p>These are sorted in order of increasing <code>Pin</code>; it is
28502required that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
28503define a complete mapping.<wbr/> For input values between control points,<wbr/>
28504the camera device must linearly interpolate between the control
28505points.<wbr/></p>
28506<p>Each curve can have an independent number of points,<wbr/> and the number
28507of points can be less than max (that is,<wbr/> the request doesn't have to
28508always provide a curve with number of points equivalent to
28509<a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
28510<p>For devices with MONOCHROME capability,<wbr/> all three channels must have the same set of
28511control points.<wbr/></p>
28512<p>A few examples,<wbr/> and their corresponding graphical mappings; these
28513only specify the red channel and the precision is limited to 4
28514digits,<wbr/> for conciseness.<wbr/></p>
28515<p>Linear mapping:</p>
28516<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 ]
28517</code></pre>
28518<p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
28519<p>Invert mapping:</p>
28520<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 ]
28521</code></pre>
28522<p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
28523<p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
28524<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
28525  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/>
28526  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/>
28527  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/>
28528  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 ]
28529</code></pre>
28530<p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
28531<p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
28532<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
28533  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/>
28534  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/>
28535  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/>
28536  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 ]
28537</code></pre>
28538<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
28539            </td>
28540          </tr>
28541
28542          <tr class="entries_header">
28543            <th class="th_details" colspan="6">HAL Implementation Details</th>
28544          </tr>
28545          <tr class="entry_cont">
28546            <td class="entry_details" colspan="6">
28547              <p>For good quality of mapping,<wbr/> at least 128 control points are
28548preferred.<wbr/></p>
28549<p>A typical use case of this would be a gamma-1/<wbr/>2.<wbr/>2 curve,<wbr/> with as many
28550control points used as are available.<wbr/></p>
28551            </td>
28552          </tr>
28553
28554          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28555           <!-- end of entry -->
28556
28557
28558          <tr class="entry" id="dynamic_android.tonemap.curve">
28559            <td class="entry_name
28560             " rowspan="5">
28561              android.<wbr/>tonemap.<wbr/>curve
28562            </td>
28563            <td class="entry_type">
28564                <span class="entry_type_name">float</span>
28565
28566              <span class="entry_type_visibility"> [java_public as tonemapCurve]</span>
28567
28568              <span class="entry_type_synthetic">[synthetic] </span>
28569
28570              <span class="entry_type_hwlevel">[full] </span>
28571
28572
28573
28574
28575            </td> <!-- entry_type -->
28576
28577            <td class="entry_description">
28578              <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a>
28579is CONTRAST_<wbr/>CURVE.<wbr/></p>
28580            </td>
28581
28582            <td class="entry_units">
28583            </td>
28584
28585            <td class="entry_range">
28586            </td>
28587
28588            <td class="entry_hal_version">
28589              <p>3.<wbr/>2</p>
28590            </td>
28591
28592            <td class="entry_tags">
28593            </td>
28594
28595          </tr>
28596          <tr class="entries_header">
28597            <th class="th_details" colspan="6">Details</th>
28598          </tr>
28599          <tr class="entry_cont">
28600            <td class="entry_details" colspan="6">
28601              <p>The tonemapCurve consist of three curves for each of red,<wbr/> green,<wbr/> and blue
28602channels respectively.<wbr/> The following example uses the red channel as an
28603example.<wbr/> The same logic applies to green and blue channel.<wbr/>
28604Each channel's curve is defined by an array of control points:</p>
28605<pre><code>curveRed =
28606  [ 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) ]
286072 &lt;= N &lt;= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
28608<p>These are sorted in order of increasing <code>Pin</code>; it is always
28609guaranteed that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
28610define a complete mapping.<wbr/> For input values between control points,<wbr/>
28611the camera device must linearly interpolate between the control
28612points.<wbr/></p>
28613<p>Each curve can have an independent number of points,<wbr/> and the number
28614of points can be less than max (that is,<wbr/> the request doesn't have to
28615always provide a curve with number of points equivalent to
28616<a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
28617<p>For devices with MONOCHROME capability,<wbr/> all three channels must have the same set of
28618control points.<wbr/></p>
28619<p>A few examples,<wbr/> and their corresponding graphical mappings; these
28620only specify the red channel and the precision is limited to 4
28621digits,<wbr/> for conciseness.<wbr/></p>
28622<p>Linear mapping:</p>
28623<pre><code>curveRed = [ (0,<wbr/> 0),<wbr/> (1.<wbr/>0,<wbr/> 1.<wbr/>0) ]
28624</code></pre>
28625<p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
28626<p>Invert mapping:</p>
28627<pre><code>curveRed = [ (0,<wbr/> 1.<wbr/>0),<wbr/> (1.<wbr/>0,<wbr/> 0) ]
28628</code></pre>
28629<p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
28630<p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
28631<pre><code>curveRed = [
28632  (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/>
28633  (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/>
28634  (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/>
28635  (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) ]
28636</code></pre>
28637<p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
28638<p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
28639<pre><code>curveRed = [
28640  (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/>
28641  (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/>
28642  (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/>
28643  (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) ]
28644</code></pre>
28645<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
28646            </td>
28647          </tr>
28648
28649          <tr class="entries_header">
28650            <th class="th_details" colspan="6">HAL Implementation Details</th>
28651          </tr>
28652          <tr class="entry_cont">
28653            <td class="entry_details" colspan="6">
28654              <p>This entry is created by the framework from the curveRed,<wbr/> curveGreen and
28655curveBlue entries.<wbr/></p>
28656            </td>
28657          </tr>
28658
28659          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28660           <!-- end of entry -->
28661
28662
28663          <tr class="entry" id="dynamic_android.tonemap.mode">
28664            <td class="entry_name
28665             " rowspan="3">
28666              android.<wbr/>tonemap.<wbr/>mode
28667            </td>
28668            <td class="entry_type">
28669                <span class="entry_type_name entry_type_name_enum">byte</span>
28670
28671              <span class="entry_type_visibility"> [public]</span>
28672
28673
28674              <span class="entry_type_hwlevel">[full] </span>
28675
28676
28677
28678                <ul class="entry_type_enum">
28679                  <li>
28680                    <span class="entry_type_enum_name">CONTRAST_CURVE (v3.2)</span>
28681                    <span class="entry_type_enum_notes"><p>Use the tone mapping curve specified in
28682the <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>* entries.<wbr/></p>
28683<p>All color enhancement and tonemapping must be disabled,<wbr/> except
28684for applying the tonemapping curve specified by
28685<a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p>
28686<p>Must not slow down frame rate relative to raw
28687sensor output.<wbr/></p></span>
28688                  </li>
28689                  <li>
28690                    <span class="entry_type_enum_name">FAST (v3.2)</span>
28691                    <span class="entry_type_enum_notes"><p>Advanced gamma mapping and color enhancement may be applied,<wbr/> without
28692reducing frame rate compared to raw sensor output.<wbr/></p></span>
28693                  </li>
28694                  <li>
28695                    <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
28696                    <span class="entry_type_enum_notes"><p>High-quality gamma mapping and color enhancement will be applied,<wbr/> at
28697the cost of possibly reduced frame rate compared to raw sensor output.<wbr/></p></span>
28698                  </li>
28699                  <li>
28700                    <span class="entry_type_enum_name">GAMMA_VALUE (v3.2)</span>
28701                    <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
28702tonemapping.<wbr/></p>
28703<p>All color enhancement and tonemapping must be disabled,<wbr/> except
28704for applying the tonemapping curve specified by <a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a>.<wbr/></p>
28705<p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
28706                  </li>
28707                  <li>
28708                    <span class="entry_type_enum_name">PRESET_CURVE (v3.2)</span>
28709                    <span class="entry_type_enum_notes"><p>Use the preset tonemapping curve specified in
28710<a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a> to peform tonemapping.<wbr/></p>
28711<p>All color enhancement and tonemapping must be disabled,<wbr/> except
28712for applying the tonemapping curve specified by
28713<a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a>.<wbr/></p>
28714<p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
28715                  </li>
28716                </ul>
28717
28718            </td> <!-- entry_type -->
28719
28720            <td class="entry_description">
28721              <p>High-level global contrast/<wbr/>gamma/<wbr/>tonemapping control.<wbr/></p>
28722            </td>
28723
28724            <td class="entry_units">
28725            </td>
28726
28727            <td class="entry_range">
28728              <p><a href="#static_android.tonemap.availableToneMapModes">android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes</a></p>
28729            </td>
28730
28731            <td class="entry_hal_version">
28732              <p>3.<wbr/>2</p>
28733            </td>
28734
28735            <td class="entry_tags">
28736            </td>
28737
28738          </tr>
28739          <tr class="entries_header">
28740            <th class="th_details" colspan="6">Details</th>
28741          </tr>
28742          <tr class="entry_cont">
28743            <td class="entry_details" colspan="6">
28744              <p>When switching to an application-defined contrast curve by setting
28745<a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> to CONTRAST_<wbr/>CURVE,<wbr/> the curve is defined
28746per-channel with a set of <code>(in,<wbr/> out)</code> points that specify the
28747mapping from input high-bit-depth pixel value to the output
28748low-bit-depth value.<wbr/>  Since the actual pixel ranges of both input
28749and output may change depending on the camera pipeline,<wbr/> the values
28750are specified by normalized floating-point numbers.<wbr/></p>
28751<p>More-complex color mapping operations such as 3D color look-up
28752tables,<wbr/> selective chroma enhancement,<wbr/> or other non-linear color
28753transforms will be disabled when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
28754CONTRAST_<wbr/>CURVE.<wbr/></p>
28755<p>When using either FAST or HIGH_<wbr/>QUALITY,<wbr/> the camera device will
28756emit its own tonemap curve in <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/>
28757These values are always available,<wbr/> and as close as possible to the
28758actually used nonlinear/<wbr/>nonglobal transforms.<wbr/></p>
28759<p>If a request is sent with CONTRAST_<wbr/>CURVE with the camera device's
28760provided curve in FAST or HIGH_<wbr/>QUALITY,<wbr/> the image's tonemap will be
28761roughly the same.<wbr/></p>
28762            </td>
28763          </tr>
28764
28765
28766          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28767           <!-- end of entry -->
28768
28769
28770          <tr class="entry" id="dynamic_android.tonemap.gamma">
28771            <td class="entry_name
28772             " rowspan="3">
28773              android.<wbr/>tonemap.<wbr/>gamma
28774            </td>
28775            <td class="entry_type">
28776                <span class="entry_type_name">float</span>
28777
28778              <span class="entry_type_visibility"> [public]</span>
28779
28780
28781
28782
28783
28784
28785            </td> <!-- entry_type -->
28786
28787            <td class="entry_description">
28788              <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
28789GAMMA_<wbr/>VALUE</p>
28790            </td>
28791
28792            <td class="entry_units">
28793            </td>
28794
28795            <td class="entry_range">
28796            </td>
28797
28798            <td class="entry_hal_version">
28799              <p>3.<wbr/>2</p>
28800            </td>
28801
28802            <td class="entry_tags">
28803            </td>
28804
28805          </tr>
28806          <tr class="entries_header">
28807            <th class="th_details" colspan="6">Details</th>
28808          </tr>
28809          <tr class="entry_cont">
28810            <td class="entry_details" colspan="6">
28811              <p>The tonemap curve will be defined the following formula:
28812* OUT = pow(IN,<wbr/> 1.<wbr/>0 /<wbr/> gamma)
28813where IN and OUT is the input pixel value scaled to range [0.<wbr/>0,<wbr/> 1.<wbr/>0],<wbr/>
28814pow is the power function and gamma is the gamma value specified by this
28815key.<wbr/></p>
28816<p>The same curve will be applied to all color channels.<wbr/> The camera device
28817may clip the input gamma value to its supported range.<wbr/> The actual applied
28818value will be returned in capture result.<wbr/></p>
28819<p>The valid range of gamma value varies on different devices,<wbr/> but values
28820within [1.<wbr/>0,<wbr/> 5.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
28821            </td>
28822          </tr>
28823
28824
28825          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28826           <!-- end of entry -->
28827
28828
28829          <tr class="entry" id="dynamic_android.tonemap.presetCurve">
28830            <td class="entry_name
28831             " rowspan="3">
28832              android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve
28833            </td>
28834            <td class="entry_type">
28835                <span class="entry_type_name entry_type_name_enum">byte</span>
28836
28837              <span class="entry_type_visibility"> [public]</span>
28838
28839
28840
28841
28842
28843                <ul class="entry_type_enum">
28844                  <li>
28845                    <span class="entry_type_enum_name">SRGB (v3.2)</span>
28846                    <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by sRGB</p></span>
28847                  </li>
28848                  <li>
28849                    <span class="entry_type_enum_name">REC709 (v3.2)</span>
28850                    <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by ITU-R BT.<wbr/>709</p></span>
28851                  </li>
28852                </ul>
28853
28854            </td> <!-- entry_type -->
28855
28856            <td class="entry_description">
28857              <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
28858PRESET_<wbr/>CURVE</p>
28859            </td>
28860
28861            <td class="entry_units">
28862            </td>
28863
28864            <td class="entry_range">
28865            </td>
28866
28867            <td class="entry_hal_version">
28868              <p>3.<wbr/>2</p>
28869            </td>
28870
28871            <td class="entry_tags">
28872            </td>
28873
28874          </tr>
28875          <tr class="entries_header">
28876            <th class="th_details" colspan="6">Details</th>
28877          </tr>
28878          <tr class="entry_cont">
28879            <td class="entry_details" colspan="6">
28880              <p>The tonemap curve will be defined by specified standard.<wbr/></p>
28881<p>sRGB (approximated by 16 control points):</p>
28882<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
28883<p>Rec.<wbr/> 709 (approximated by 16 control points):</p>
28884<p><img alt="Rec. 709 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/rec709_tonemap.png"/></p>
28885<p>Note that above figures show a 16 control points approximation of preset
28886curves.<wbr/> Camera devices may apply a different approximation to the curve.<wbr/></p>
28887            </td>
28888          </tr>
28889
28890
28891          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28892           <!-- end of entry -->
28893
28894
28895
28896      <!-- end of kind -->
28897      </tbody>
28898
28899  <!-- end of section -->
28900  <tr><td colspan="7" id="section_led" class="section">led</td></tr>
28901
28902
28903      <tr><td colspan="7" class="kind">controls</td></tr>
28904
28905      <thead class="entries_header">
28906        <tr>
28907          <th class="th_name">Property Name</th>
28908          <th class="th_type">Type</th>
28909          <th class="th_description">Description</th>
28910          <th class="th_units">Units</th>
28911          <th class="th_range">Range</th>
28912          <th class="th_hal_version">Initial HIDL HAL version</th>
28913          <th class="th_tags">Tags</th>
28914        </tr>
28915      </thead>
28916
28917      <tbody>
28918
28919
28920
28921
28922
28923
28924
28925
28926
28927
28928          <tr class="entry" id="controls_android.led.transmit">
28929            <td class="entry_name
28930             " rowspan="1">
28931              android.<wbr/>led.<wbr/>transmit
28932            </td>
28933            <td class="entry_type">
28934                <span class="entry_type_name entry_type_name_enum">byte</span>
28935
28936              <span class="entry_type_visibility"> [hidden as boolean]</span>
28937
28938
28939
28940
28941
28942                <ul class="entry_type_enum">
28943                  <li>
28944                    <span class="entry_type_enum_name">OFF (v3.2)</span>
28945                  </li>
28946                  <li>
28947                    <span class="entry_type_enum_name">ON (v3.2)</span>
28948                  </li>
28949                </ul>
28950
28951            </td> <!-- entry_type -->
28952
28953            <td class="entry_description">
28954              <p>This LED is nominally used to indicate to the user
28955that the camera is powered on and may be streaming images back to the
28956Application Processor.<wbr/> In certain rare circumstances,<wbr/> the OS may
28957disable this when video is processed locally and not transmitted to
28958any untrusted applications.<wbr/></p>
28959<p>In particular,<wbr/> the LED <em>must</em> always be on when the data could be
28960transmitted off the device.<wbr/> The LED <em>should</em> always be on whenever
28961data is stored locally on the device.<wbr/></p>
28962<p>The LED <em>may</em> be off if a trusted application is using the data that
28963doesn't violate the above rules.<wbr/></p>
28964            </td>
28965
28966            <td class="entry_units">
28967            </td>
28968
28969            <td class="entry_range">
28970            </td>
28971
28972            <td class="entry_hal_version">
28973              <p>3.<wbr/>2</p>
28974            </td>
28975
28976            <td class="entry_tags">
28977            </td>
28978
28979          </tr>
28980
28981
28982          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28983           <!-- end of entry -->
28984
28985
28986
28987      <!-- end of kind -->
28988      </tbody>
28989      <tr><td colspan="7" class="kind">dynamic</td></tr>
28990
28991      <thead class="entries_header">
28992        <tr>
28993          <th class="th_name">Property Name</th>
28994          <th class="th_type">Type</th>
28995          <th class="th_description">Description</th>
28996          <th class="th_units">Units</th>
28997          <th class="th_range">Range</th>
28998          <th class="th_hal_version">Initial HIDL HAL version</th>
28999          <th class="th_tags">Tags</th>
29000        </tr>
29001      </thead>
29002
29003      <tbody>
29004
29005
29006
29007
29008
29009
29010
29011
29012
29013
29014          <tr class="entry" id="dynamic_android.led.transmit">
29015            <td class="entry_name
29016             " rowspan="1">
29017              android.<wbr/>led.<wbr/>transmit
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"> [hidden as boolean]</span>
29023
29024
29025
29026
29027
29028                <ul class="entry_type_enum">
29029                  <li>
29030                    <span class="entry_type_enum_name">OFF (v3.2)</span>
29031                  </li>
29032                  <li>
29033                    <span class="entry_type_enum_name">ON (v3.2)</span>
29034                  </li>
29035                </ul>
29036
29037            </td> <!-- entry_type -->
29038
29039            <td class="entry_description">
29040              <p>This LED is nominally used to indicate to the user
29041that the camera is powered on and may be streaming images back to the
29042Application Processor.<wbr/> In certain rare circumstances,<wbr/> the OS may
29043disable this when video is processed locally and not transmitted to
29044any untrusted applications.<wbr/></p>
29045<p>In particular,<wbr/> the LED <em>must</em> always be on when the data could be
29046transmitted off the device.<wbr/> The LED <em>should</em> always be on whenever
29047data is stored locally on the device.<wbr/></p>
29048<p>The LED <em>may</em> be off if a trusted application is using the data that
29049doesn't violate the above rules.<wbr/></p>
29050            </td>
29051
29052            <td class="entry_units">
29053            </td>
29054
29055            <td class="entry_range">
29056            </td>
29057
29058            <td class="entry_hal_version">
29059              <p>3.<wbr/>2</p>
29060            </td>
29061
29062            <td class="entry_tags">
29063            </td>
29064
29065          </tr>
29066
29067
29068          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29069           <!-- end of entry -->
29070
29071
29072
29073      <!-- end of kind -->
29074      </tbody>
29075      <tr><td colspan="7" class="kind">static</td></tr>
29076
29077      <thead class="entries_header">
29078        <tr>
29079          <th class="th_name">Property Name</th>
29080          <th class="th_type">Type</th>
29081          <th class="th_description">Description</th>
29082          <th class="th_units">Units</th>
29083          <th class="th_range">Range</th>
29084          <th class="th_hal_version">Initial HIDL HAL version</th>
29085          <th class="th_tags">Tags</th>
29086        </tr>
29087      </thead>
29088
29089      <tbody>
29090
29091
29092
29093
29094
29095
29096
29097
29098
29099
29100          <tr class="entry" id="static_android.led.availableLeds">
29101            <td class="entry_name
29102             " rowspan="1">
29103              android.<wbr/>led.<wbr/>available<wbr/>Leds
29104            </td>
29105            <td class="entry_type">
29106                <span class="entry_type_name entry_type_name_enum">byte</span>
29107                <span class="entry_type_container">x</span>
29108
29109                <span class="entry_type_array">
29110                  n
29111                </span>
29112              <span class="entry_type_visibility"> [hidden]</span>
29113
29114
29115
29116
29117
29118                <ul class="entry_type_enum">
29119                  <li>
29120                    <span class="entry_type_enum_name">TRANSMIT (v3.2)</span>
29121                    <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>
29122                  </li>
29123                </ul>
29124
29125            </td> <!-- entry_type -->
29126
29127            <td class="entry_description">
29128              <p>A list of camera LEDs that are available on this system.<wbr/></p>
29129            </td>
29130
29131            <td class="entry_units">
29132            </td>
29133
29134            <td class="entry_range">
29135            </td>
29136
29137            <td class="entry_hal_version">
29138              <p>3.<wbr/>2</p>
29139            </td>
29140
29141            <td class="entry_tags">
29142            </td>
29143
29144          </tr>
29145
29146
29147          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29148           <!-- end of entry -->
29149
29150
29151
29152      <!-- end of kind -->
29153      </tbody>
29154
29155  <!-- end of section -->
29156  <tr><td colspan="7" id="section_info" class="section">info</td></tr>
29157
29158
29159      <tr><td colspan="7" class="kind">static</td></tr>
29160
29161      <thead class="entries_header">
29162        <tr>
29163          <th class="th_name">Property Name</th>
29164          <th class="th_type">Type</th>
29165          <th class="th_description">Description</th>
29166          <th class="th_units">Units</th>
29167          <th class="th_range">Range</th>
29168          <th class="th_hal_version">Initial HIDL HAL version</th>
29169          <th class="th_tags">Tags</th>
29170        </tr>
29171      </thead>
29172
29173      <tbody>
29174
29175
29176
29177
29178
29179
29180
29181
29182
29183
29184          <tr class="entry" id="static_android.info.supportedHardwareLevel">
29185            <td class="entry_name
29186             " rowspan="5">
29187              android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level
29188            </td>
29189            <td class="entry_type">
29190                <span class="entry_type_name entry_type_name_enum">byte</span>
29191
29192              <span class="entry_type_visibility"> [public]</span>
29193
29194
29195              <span class="entry_type_hwlevel">[legacy] </span>
29196
29197
29198
29199                <ul class="entry_type_enum">
29200                  <li>
29201                    <span class="entry_type_enum_name">LIMITED (v3.2)</span>
29202                    <span class="entry_type_enum_notes"><p>This camera device does not have enough capabilities to qualify as a <code>FULL</code> device or
29203better.<wbr/></p>
29204<p>Only the stream configurations listed in the <code>LEGACY</code> and <code>LIMITED</code> tables in the
29205<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">createCaptureSession</a> documentation are guaranteed to be supported.<wbr/></p>
29206<p>All <code>LIMITED</code> devices support the <code>BACKWARDS_<wbr/>COMPATIBLE</code> capability,<wbr/> indicating basic
29207support for color image capture.<wbr/> The only exception is that the device may
29208alternatively support only the <code>DEPTH_<wbr/>OUTPUT</code> capability,<wbr/> if it can only output depth
29209measurements and not color images.<wbr/></p>
29210<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>
29211to lock exposure metering (and calculate flash power,<wbr/> for cameras with flash) before
29212capturing a high-quality still image.<wbr/></p>
29213<p>A <code>LIMITED</code> device that only lists the <code>BACKWARDS_<wbr/>COMPATIBLE</code> capability is only
29214required to support full-automatic operation and post-processing (<code>OFF</code> is not
29215supported 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
29216<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>)</p>
29217<p>Additional capabilities may optionally be supported by a <code>LIMITED</code>-level device,<wbr/> and
29218can be checked for in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p></span>
29219                  </li>
29220                  <li>
29221                    <span class="entry_type_enum_name">FULL (v3.2)</span>
29222                    <span class="entry_type_enum_notes"><p>This camera device is capable of supporting advanced imaging applications.<wbr/></p>
29223<p>The stream configurations listed in the <code>FULL</code>,<wbr/> <code>LEGACY</code> and <code>LIMITED</code> tables in the
29224<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">createCaptureSession</a> documentation are guaranteed to be supported.<wbr/></p>
29225<p>A <code>FULL</code> device will support below capabilities:</p>
29226<ul>
29227<li><code>BURST_<wbr/>CAPTURE</code> capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
29228  <code>BURST_<wbr/>CAPTURE</code>)</li>
29229<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>
29230<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>
29231<li>Manual post-processing control (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
29232  <code>MANUAL_<wbr/>POST_<wbr/>PROCESSING</code>)</li>
29233<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>
29234<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>
29235</ul>
29236<p>Note:
29237Pre-API level 23,<wbr/> FULL devices also supported arbitrary cropping region
29238(<a href="#static_android.scaler.croppingType">android.<wbr/>scaler.<wbr/>cropping<wbr/>Type</a> <code>== FREEFORM</code>); this requirement was relaxed in API level
2923923,<wbr/> and <code>FULL</code> devices may only support <code>CENTERED</code> cropping.<wbr/></p></span>
29240                  </li>
29241                  <li>
29242                    <span class="entry_type_enum_name">LEGACY (v3.2)</span>
29243                    <span class="entry_type_enum_notes"><p>This camera device is running in backward compatibility mode.<wbr/></p>
29244<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>
29245<p>A <code>LEGACY</code> device does not support per-frame control,<wbr/> manual sensor control,<wbr/> manual
29246post-processing,<wbr/> arbitrary cropping regions,<wbr/> and has relaxed performance constraints.<wbr/>
29247No additional capabilities beyond <code>BACKWARD_<wbr/>COMPATIBLE</code> will ever be listed by a
29248<code>LEGACY</code> device in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
29249<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>
29250devices.<wbr/> Instead,<wbr/> every request that includes a JPEG-format output target is treated
29251as triggering a still capture,<wbr/> internally executing a precapture trigger.<wbr/>  This may
29252fire the flash for flash power metering during precapture,<wbr/> and then fire the flash
29253for the final capture,<wbr/> if a flash is available on the device and the AE mode is set to
29254enable the flash.<wbr/></p>
29255<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>
29256                  </li>
29257                  <li>
29258                    <span class="entry_type_enum_name">3 (v3.2)</span>
29259                    <span class="entry_type_enum_notes"><p>This camera device is capable of YUV reprocessing and RAW data capture,<wbr/> in addition to
29260FULL-level capabilities.<wbr/></p>
29261<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
29262<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>
29263<p>The following additional capabilities are guaranteed to be supported:</p>
29264<ul>
29265<li><code>YUV_<wbr/>REPROCESSING</code> capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
29266  <code>YUV_<wbr/>REPROCESSING</code>)</li>
29267<li><code>RAW</code> capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
29268  <code>RAW</code>)</li>
29269</ul></span>
29270                  </li>
29271                  <li>
29272                    <span class="entry_type_enum_name">EXTERNAL (v3.3)</span>
29273                    <span class="entry_type_enum_notes"><p>This camera device is backed by an external camera connected to this Android device.<wbr/></p>
29274<p>The device has capability identical to a LIMITED level device,<wbr/> with the following
29275exceptions:</p>
29276<ul>
29277<li>The device may not report lens/<wbr/>sensor related information such as<ul>
29278<li><a href="#controls_android.lens.focalLength">android.<wbr/>lens.<wbr/>focal<wbr/>Length</a></li>
29279<li><a href="#static_android.lens.info.hyperfocalDistance">android.<wbr/>lens.<wbr/>info.<wbr/>hyperfocal<wbr/>Distance</a></li>
29280<li><a href="#static_android.sensor.info.physicalSize">android.<wbr/>sensor.<wbr/>info.<wbr/>physical<wbr/>Size</a></li>
29281<li><a href="#static_android.sensor.info.whiteLevel">android.<wbr/>sensor.<wbr/>info.<wbr/>white<wbr/>Level</a></li>
29282<li><a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a></li>
29283<li><a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a></li>
29284<li><a href="#dynamic_android.sensor.rollingShutterSkew">android.<wbr/>sensor.<wbr/>rolling<wbr/>Shutter<wbr/>Skew</a></li>
29285</ul>
29286</li>
29287<li>The device will report 0 for <a href="#static_android.sensor.orientation">android.<wbr/>sensor.<wbr/>orientation</a></li>
29288<li>The device has less guarantee on stable framerate,<wbr/> as the framerate partly depends
29289  on the external camera being used.<wbr/></li>
29290</ul></span>
29291                  </li>
29292                </ul>
29293
29294            </td> <!-- entry_type -->
29295
29296            <td class="entry_description">
29297              <p>Generally classifies the overall set of the camera device functionality.<wbr/></p>
29298            </td>
29299
29300            <td class="entry_units">
29301            </td>
29302
29303            <td class="entry_range">
29304            </td>
29305
29306            <td class="entry_hal_version">
29307              <p>3.<wbr/>2</p>
29308            </td>
29309
29310            <td class="entry_tags">
29311            </td>
29312
29313          </tr>
29314          <tr class="entries_header">
29315            <th class="th_details" colspan="6">Details</th>
29316          </tr>
29317          <tr class="entry_cont">
29318            <td class="entry_details" colspan="6">
29319              <p>The supported hardware level is a high-level description of the camera device's
29320capabilities,<wbr/> summarizing several capabilities into one field.<wbr/>  Each level adds additional
29321features to the previous one,<wbr/> and is always a strict superset of the previous level.<wbr/>
29322The ordering is <code>LEGACY &lt; LIMITED &lt; FULL &lt; LEVEL_<wbr/>3</code>.<wbr/></p>
29323<p>Starting from <code>LEVEL_<wbr/>3</code>,<wbr/> the level enumerations are guaranteed to be in increasing
29324numerical value as well.<wbr/> To check if a given device is at least at a given hardware level,<wbr/>
29325the following code snippet can be used:</p>
29326<pre><code>//<wbr/> Returns true if the device supports the required hardware level,<wbr/> or better.<wbr/>
29327boolean isHardwareLevelSupported(CameraCharacteristics c,<wbr/> int requiredLevel) {
29328    final int[] sortedHwLevels = {
29329        Camera<wbr/>Characteristics.<wbr/>INFO_<wbr/>SUPPORTED_<wbr/>HARDWARE_<wbr/>LEVEL_<wbr/>LEGACY,<wbr/>
29330        Camera<wbr/>Characteristics.<wbr/>INFO_<wbr/>SUPPORTED_<wbr/>HARDWARE_<wbr/>LEVEL_<wbr/>EXTERNAL,<wbr/>
29331        Camera<wbr/>Characteristics.<wbr/>INFO_<wbr/>SUPPORTED_<wbr/>HARDWARE_<wbr/>LEVEL_<wbr/>LIMITED,<wbr/>
29332        Camera<wbr/>Characteristics.<wbr/>INFO_<wbr/>SUPPORTED_<wbr/>HARDWARE_<wbr/>LEVEL_<wbr/>FULL,<wbr/>
29333        Camera<wbr/>Characteristics.<wbr/>INFO_<wbr/>SUPPORTED_<wbr/>HARDWARE_<wbr/>LEVEL_<wbr/>3
29334    };
29335    int deviceLevel = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>INFO_<wbr/>SUPPORTED_<wbr/>HARDWARE_<wbr/>LEVEL);
29336    if (requiredLevel == deviceLevel) {
29337        return true;
29338    }
29339
29340    for (int sortedlevel : sortedHwLevels) {
29341        if (sortedlevel == requiredLevel) {
29342            return true;
29343        } else if (sortedlevel == deviceLevel) {
29344            return false;
29345        }
29346    }
29347    return false; //<wbr/> Should never reach here
29348}
29349</code></pre>
29350<p>At a high level,<wbr/> the levels are:</p>
29351<ul>
29352<li><code>LEGACY</code> devices operate in a backwards-compatibility mode for older
29353  Android devices,<wbr/> and have very limited capabilities.<wbr/></li>
29354<li><code>LIMITED</code> devices represent the
29355  baseline feature set,<wbr/> and may also include additional capabilities that are
29356  subsets of <code>FULL</code>.<wbr/></li>
29357<li><code>FULL</code> devices additionally support per-frame manual control of sensor,<wbr/> flash,<wbr/> lens and
29358  post-processing settings,<wbr/> and image capture at a high rate.<wbr/></li>
29359<li><code>LEVEL_<wbr/>3</code> devices additionally support YUV reprocessing and RAW image capture,<wbr/> along
29360  with additional output stream configurations.<wbr/></li>
29361<li><code>EXTERNAL</code> devices are similar to <code>LIMITED</code> devices with exceptions like some sensor or
29362  lens information not reported or less stable framerates.<wbr/></li>
29363</ul>
29364<p>See the individual level enums for full descriptions of the supported capabilities.<wbr/>  The
29365<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> entry describes the device's capabilities at a
29366finer-grain level,<wbr/> if needed.<wbr/> In addition,<wbr/> many controls have their available settings or
29367ranges defined in individual entries from <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html">CameraCharacteristics</a>.<wbr/></p>
29368<p>Some features are not part of any particular hardware level or capability and must be
29369queried separately.<wbr/> These include:</p>
29370<ul>
29371<li>Calibrated timestamps (<a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME)</li>
29372<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>
29373<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>
29374<li>Optical or electrical image stabilization
29375  (<a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a>,<wbr/>
29376   <a href="#static_android.control.availableVideoStabilizationModes">android.<wbr/>control.<wbr/>available<wbr/>Video<wbr/>Stabilization<wbr/>Modes</a>)</li>
29377</ul>
29378            </td>
29379          </tr>
29380
29381          <tr class="entries_header">
29382            <th class="th_details" colspan="6">HAL Implementation Details</th>
29383          </tr>
29384          <tr class="entry_cont">
29385            <td class="entry_details" colspan="6">
29386              <p>A camera HALv3 device can implement one of three possible operational modes; LIMITED,<wbr/>
29387FULL,<wbr/> and LEVEL_<wbr/>3.<wbr/></p>
29388<p>FULL support or better is expected from new higher-end devices.<wbr/> Limited
29389mode has hardware requirements roughly in line with those for a camera HAL device v1
29390implementation,<wbr/> and is expected from older or inexpensive devices.<wbr/> Each level is a strict
29391superset of the previous level,<wbr/> and they share the same essential operational flow.<wbr/></p>
29392<p>For full details refer to "S3.<wbr/> Operational Modes" in camera3.<wbr/>h</p>
29393<p>Camera HAL3+ must not implement LEGACY mode.<wbr/> It is there for backwards compatibility in
29394the <code>android.<wbr/>hardware.<wbr/>camera2</code> user-facing API only on legacy HALv1 devices,<wbr/> and is
29395implemented by the camera framework code.<wbr/></p>
29396<p>EXTERNAL level devices have lower peformance bar in CTS since the peformance might depend
29397on the external camera being used and is not fully controlled by the device manufacturer.<wbr/>
29398The ITS test suite is exempted for the same reason.<wbr/></p>
29399            </td>
29400          </tr>
29401
29402          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29403           <!-- end of entry -->
29404
29405
29406          <tr class="entry" id="static_android.info.version">
29407            <td class="entry_name
29408             " rowspan="5">
29409              android.<wbr/>info.<wbr/>version
29410            </td>
29411            <td class="entry_type">
29412                <span class="entry_type_name">byte</span>
29413
29414              <span class="entry_type_visibility"> [public as string]</span>
29415
29416
29417
29418
29419
29420
29421            </td> <!-- entry_type -->
29422
29423            <td class="entry_description">
29424              <p>A short string for manufacturer version information about the camera device,<wbr/> such as
29425ISP hardware,<wbr/> sensors,<wbr/> etc.<wbr/></p>
29426            </td>
29427
29428            <td class="entry_units">
29429            </td>
29430
29431            <td class="entry_range">
29432            </td>
29433
29434            <td class="entry_hal_version">
29435              <p>3.<wbr/>3</p>
29436            </td>
29437
29438            <td class="entry_tags">
29439            </td>
29440
29441          </tr>
29442          <tr class="entries_header">
29443            <th class="th_details" colspan="6">Details</th>
29444          </tr>
29445          <tr class="entry_cont">
29446            <td class="entry_details" colspan="6">
29447              <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>
29448in jpeg EXIF.<wbr/> This key may be absent if no version information is available on the
29449device.<wbr/></p>
29450            </td>
29451          </tr>
29452
29453          <tr class="entries_header">
29454            <th class="th_details" colspan="6">HAL Implementation Details</th>
29455          </tr>
29456          <tr class="entry_cont">
29457            <td class="entry_details" colspan="6">
29458              <p>The string must consist of only alphanumeric characters,<wbr/> punctuation,<wbr/> and
29459whitespace,<wbr/> i.<wbr/>e.<wbr/> it must match regular expression "[\p{Alnum}\p{Punct}\p{Space}]*".<wbr/>
29460It must not exceed 256 characters.<wbr/></p>
29461            </td>
29462          </tr>
29463
29464          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29465           <!-- end of entry -->
29466
29467
29468          <tr class="entry" id="static_android.info.supportedBufferManagementVersion">
29469            <td class="entry_name
29470             " rowspan="3">
29471              android.<wbr/>info.<wbr/>supported<wbr/>Buffer<wbr/>Management<wbr/>Version
29472            </td>
29473            <td class="entry_type">
29474                <span class="entry_type_name entry_type_name_enum">byte</span>
29475
29476              <span class="entry_type_visibility"> [system]</span>
29477
29478
29479
29480
29481
29482                <ul class="entry_type_enum">
29483                  <li>
29484                    <span class="entry_type_enum_name">HIDL_DEVICE_3_5 (v3.4)</span>
29485                    <span class="entry_type_enum_notes"><p>This camera device supports and opts in to the buffer management APIs provided by
29486HIDL ICameraDevice version 3.<wbr/>5.<wbr/></p></span>
29487                  </li>
29488                </ul>
29489
29490            </td> <!-- entry_type -->
29491
29492            <td class="entry_description">
29493              <p>The version of buffer management API this camera device supports and opts into.<wbr/></p>
29494            </td>
29495
29496            <td class="entry_units">
29497            </td>
29498
29499            <td class="entry_range">
29500            </td>
29501
29502            <td class="entry_hal_version">
29503              <p>3.<wbr/>4</p>
29504            </td>
29505
29506            <td class="entry_tags">
29507            </td>
29508
29509          </tr>
29510          <tr class="entries_header">
29511            <th class="th_details" colspan="6">Details</th>
29512          </tr>
29513          <tr class="entry_cont">
29514            <td class="entry_details" colspan="6">
29515              <p>When this key is not present,<wbr/> camera framework will interact with this camera device
29516without any buffer management HAL API.<wbr/> When this key is present and camera framework
29517supports the buffer management API version,<wbr/> camera framework will interact with camera
29518HAL using such version of buffer management API.<wbr/></p>
29519            </td>
29520          </tr>
29521
29522
29523          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29524           <!-- end of entry -->
29525
29526
29527
29528      <!-- end of kind -->
29529      </tbody>
29530
29531  <!-- end of section -->
29532  <tr><td colspan="7" id="section_blackLevel" class="section">blackLevel</td></tr>
29533
29534
29535      <tr><td colspan="7" class="kind">controls</td></tr>
29536
29537      <thead class="entries_header">
29538        <tr>
29539          <th class="th_name">Property Name</th>
29540          <th class="th_type">Type</th>
29541          <th class="th_description">Description</th>
29542          <th class="th_units">Units</th>
29543          <th class="th_range">Range</th>
29544          <th class="th_hal_version">Initial HIDL HAL version</th>
29545          <th class="th_tags">Tags</th>
29546        </tr>
29547      </thead>
29548
29549      <tbody>
29550
29551
29552
29553
29554
29555
29556
29557
29558
29559
29560          <tr class="entry" id="controls_android.blackLevel.lock">
29561            <td class="entry_name
29562             " rowspan="5">
29563              android.<wbr/>black<wbr/>Level.<wbr/>lock
29564            </td>
29565            <td class="entry_type">
29566                <span class="entry_type_name entry_type_name_enum">byte</span>
29567
29568              <span class="entry_type_visibility"> [public as boolean]</span>
29569
29570
29571              <span class="entry_type_hwlevel">[full] </span>
29572
29573
29574
29575                <ul class="entry_type_enum">
29576                  <li>
29577                    <span class="entry_type_enum_name">OFF (v3.2)</span>
29578                  </li>
29579                  <li>
29580                    <span class="entry_type_enum_name">ON (v3.2)</span>
29581                  </li>
29582                </ul>
29583
29584            </td> <!-- entry_type -->
29585
29586            <td class="entry_description">
29587              <p>Whether black-level compensation is locked
29588to its current values,<wbr/> or is free to vary.<wbr/></p>
29589            </td>
29590
29591            <td class="entry_units">
29592            </td>
29593
29594            <td class="entry_range">
29595            </td>
29596
29597            <td class="entry_hal_version">
29598              <p>3.<wbr/>2</p>
29599            </td>
29600
29601            <td class="entry_tags">
29602              <ul class="entry_tags">
29603                  <li><a href="#tag_HAL2">HAL2</a></li>
29604              </ul>
29605            </td>
29606
29607          </tr>
29608          <tr class="entries_header">
29609            <th class="th_details" colspan="6">Details</th>
29610          </tr>
29611          <tr class="entry_cont">
29612            <td class="entry_details" colspan="6">
29613              <p>When set to <code>true</code> (ON),<wbr/> the values used for black-level
29614compensation will not change until the lock is set to
29615<code>false</code> (OFF).<wbr/></p>
29616<p>Since changes to certain capture parameters (such as
29617exposure time) may require resetting of black level
29618compensation,<wbr/> the camera device must report whether setting
29619the black level lock was successful in the output result
29620metadata.<wbr/></p>
29621<p>For example,<wbr/> if a sequence of requests is as follows:</p>
29622<ul>
29623<li>Request 1: Exposure = 10ms,<wbr/> Black level lock = OFF</li>
29624<li>Request 2: Exposure = 10ms,<wbr/> Black level lock = ON</li>
29625<li>Request 3: Exposure = 10ms,<wbr/> Black level lock = ON</li>
29626<li>Request 4: Exposure = 20ms,<wbr/> Black level lock = ON</li>
29627<li>Request 5: Exposure = 20ms,<wbr/> Black level lock = ON</li>
29628<li>Request 6: Exposure = 20ms,<wbr/> Black level lock = ON</li>
29629</ul>
29630<p>And the exposure change in Request 4 requires the camera
29631device to reset the black level offsets,<wbr/> then the output
29632result metadata is expected to be:</p>
29633<ul>
29634<li>Result 1: Exposure = 10ms,<wbr/> Black level lock = OFF</li>
29635<li>Result 2: Exposure = 10ms,<wbr/> Black level lock = ON</li>
29636<li>Result 3: Exposure = 10ms,<wbr/> Black level lock = ON</li>
29637<li>Result 4: Exposure = 20ms,<wbr/> Black level lock = OFF</li>
29638<li>Result 5: Exposure = 20ms,<wbr/> Black level lock = ON</li>
29639<li>Result 6: Exposure = 20ms,<wbr/> Black level lock = ON</li>
29640</ul>
29641<p>This indicates to the application that on frame 4,<wbr/> black
29642levels were reset due to exposure value changes,<wbr/> and pixel
29643values may not be consistent across captures.<wbr/></p>
29644<p>The camera device will maintain the lock to the extent
29645possible,<wbr/> only overriding the lock to OFF when changes to
29646other request parameters require a black level recalculation
29647or reset.<wbr/></p>
29648            </td>
29649          </tr>
29650
29651          <tr class="entries_header">
29652            <th class="th_details" colspan="6">HAL Implementation Details</th>
29653          </tr>
29654          <tr class="entry_cont">
29655            <td class="entry_details" colspan="6">
29656              <p>If for some reason black level locking is no longer possible
29657(for example,<wbr/> the analog gain has changed,<wbr/> which forces
29658black level offsets to be recalculated),<wbr/> then the HAL must
29659override this request (and it must report 'OFF' when this
29660does happen) until the next capture for which locking is
29661possible again.<wbr/></p>
29662            </td>
29663          </tr>
29664
29665          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29666           <!-- end of entry -->
29667
29668
29669
29670      <!-- end of kind -->
29671      </tbody>
29672      <tr><td colspan="7" class="kind">dynamic</td></tr>
29673
29674      <thead class="entries_header">
29675        <tr>
29676          <th class="th_name">Property Name</th>
29677          <th class="th_type">Type</th>
29678          <th class="th_description">Description</th>
29679          <th class="th_units">Units</th>
29680          <th class="th_range">Range</th>
29681          <th class="th_hal_version">Initial HIDL HAL version</th>
29682          <th class="th_tags">Tags</th>
29683        </tr>
29684      </thead>
29685
29686      <tbody>
29687
29688
29689
29690
29691
29692
29693
29694
29695
29696
29697          <tr class="entry" id="dynamic_android.blackLevel.lock">
29698            <td class="entry_name
29699             " rowspan="5">
29700              android.<wbr/>black<wbr/>Level.<wbr/>lock
29701            </td>
29702            <td class="entry_type">
29703                <span class="entry_type_name entry_type_name_enum">byte</span>
29704
29705              <span class="entry_type_visibility"> [public as boolean]</span>
29706
29707
29708              <span class="entry_type_hwlevel">[full] </span>
29709
29710
29711
29712                <ul class="entry_type_enum">
29713                  <li>
29714                    <span class="entry_type_enum_name">OFF (v3.2)</span>
29715                  </li>
29716                  <li>
29717                    <span class="entry_type_enum_name">ON (v3.2)</span>
29718                  </li>
29719                </ul>
29720
29721            </td> <!-- entry_type -->
29722
29723            <td class="entry_description">
29724              <p>Whether black-level compensation is locked
29725to its current values,<wbr/> or is free to vary.<wbr/></p>
29726            </td>
29727
29728            <td class="entry_units">
29729            </td>
29730
29731            <td class="entry_range">
29732            </td>
29733
29734            <td class="entry_hal_version">
29735              <p>3.<wbr/>2</p>
29736            </td>
29737
29738            <td class="entry_tags">
29739              <ul class="entry_tags">
29740                  <li><a href="#tag_HAL2">HAL2</a></li>
29741              </ul>
29742            </td>
29743
29744          </tr>
29745          <tr class="entries_header">
29746            <th class="th_details" colspan="6">Details</th>
29747          </tr>
29748          <tr class="entry_cont">
29749            <td class="entry_details" colspan="6">
29750              <p>Whether the black level offset was locked for this frame.<wbr/>  Should be
29751ON if <a href="#controls_android.blackLevel.lock">android.<wbr/>black<wbr/>Level.<wbr/>lock</a> was ON in the capture request,<wbr/> unless
29752a change in other capture settings forced the camera device to
29753perform a black level reset.<wbr/></p>
29754            </td>
29755          </tr>
29756
29757          <tr class="entries_header">
29758            <th class="th_details" colspan="6">HAL Implementation Details</th>
29759          </tr>
29760          <tr class="entry_cont">
29761            <td class="entry_details" colspan="6">
29762              <p>If for some reason black level locking is no longer possible
29763(for example,<wbr/> the analog gain has changed,<wbr/> which forces
29764black level offsets to be recalculated),<wbr/> then the HAL must
29765override this request (and it must report 'OFF' when this
29766does happen) until the next capture for which locking is
29767possible again.<wbr/></p>
29768            </td>
29769          </tr>
29770
29771          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29772           <!-- end of entry -->
29773
29774
29775
29776      <!-- end of kind -->
29777      </tbody>
29778
29779  <!-- end of section -->
29780  <tr><td colspan="7" id="section_sync" class="section">sync</td></tr>
29781
29782
29783      <tr><td colspan="7" class="kind">dynamic</td></tr>
29784
29785      <thead class="entries_header">
29786        <tr>
29787          <th class="th_name">Property Name</th>
29788          <th class="th_type">Type</th>
29789          <th class="th_description">Description</th>
29790          <th class="th_units">Units</th>
29791          <th class="th_range">Range</th>
29792          <th class="th_hal_version">Initial HIDL HAL version</th>
29793          <th class="th_tags">Tags</th>
29794        </tr>
29795      </thead>
29796
29797      <tbody>
29798
29799
29800
29801
29802
29803
29804
29805
29806
29807
29808          <tr class="entry" id="dynamic_android.sync.frameNumber">
29809            <td class="entry_name
29810             " rowspan="5">
29811              android.<wbr/>sync.<wbr/>frame<wbr/>Number
29812            </td>
29813            <td class="entry_type">
29814                <span class="entry_type_name entry_type_name_enum">int64</span>
29815
29816              <span class="entry_type_visibility"> [ndk_public]</span>
29817
29818
29819              <span class="entry_type_hwlevel">[legacy] </span>
29820
29821
29822
29823                <ul class="entry_type_enum">
29824                  <li>
29825                    <span class="entry_type_enum_name">CONVERGING (v3.2)</span>
29826                    <span class="entry_type_enum_value">-1</span>
29827                    <span class="entry_type_enum_notes"><p>The current result is not yet fully synchronized to any request.<wbr/></p>
29828<p>Synchronization is in progress,<wbr/> and reading metadata from this
29829result may include a mix of data that have taken effect since the
29830last synchronization time.<wbr/></p>
29831<p>In some future result,<wbr/> within <a href="#static_android.sync.maxLatency">android.<wbr/>sync.<wbr/>max<wbr/>Latency</a> frames,<wbr/>
29832this value will update to the actual frame number frame number
29833the result is guaranteed to be synchronized to (as long as the
29834request settings remain constant).<wbr/></p></span>
29835                  </li>
29836                  <li>
29837                    <span class="entry_type_enum_name">UNKNOWN (v3.2)</span>
29838                    <span class="entry_type_enum_value">-2</span>
29839                    <span class="entry_type_enum_notes"><p>The current result's synchronization status is unknown.<wbr/></p>
29840<p>The result may have already converged,<wbr/> or it may be in
29841progress.<wbr/>  Reading from this result may include some mix
29842of settings from past requests.<wbr/></p>
29843<p>After a settings change,<wbr/> the new settings will eventually all
29844take effect for the output buffers and results.<wbr/> However,<wbr/> this
29845value will not change when that happens.<wbr/> Altering settings
29846rapidly may provide outcomes using mixes of settings from recent
29847requests.<wbr/></p>
29848<p>This value is intended primarily for backwards compatibility with
29849the older camera implementations (for android.<wbr/>hardware.<wbr/>Camera).<wbr/></p></span>
29850                  </li>
29851                </ul>
29852
29853            </td> <!-- entry_type -->
29854
29855            <td class="entry_description">
29856              <p>The frame number corresponding to the last request
29857with which the output result (metadata + buffers) has been fully
29858synchronized.<wbr/></p>
29859            </td>
29860
29861            <td class="entry_units">
29862            </td>
29863
29864            <td class="entry_range">
29865              <p>Either a non-negative value corresponding to a
29866<code>frame_<wbr/>number</code>,<wbr/> or one of the two enums (CONVERGING /<wbr/> UNKNOWN).<wbr/></p>
29867            </td>
29868
29869            <td class="entry_hal_version">
29870              <p>3.<wbr/>2</p>
29871            </td>
29872
29873            <td class="entry_tags">
29874              <ul class="entry_tags">
29875                  <li><a href="#tag_V1">V1</a></li>
29876              </ul>
29877            </td>
29878
29879          </tr>
29880          <tr class="entries_header">
29881            <th class="th_details" colspan="6">Details</th>
29882          </tr>
29883          <tr class="entry_cont">
29884            <td class="entry_details" colspan="6">
29885              <p>When a request is submitted to the camera device,<wbr/> there is usually a
29886delay of several frames before the controls get applied.<wbr/> A camera
29887device may either choose to account for this delay by implementing a
29888pipeline and carefully submit well-timed atomic control updates,<wbr/> or
29889it may start streaming control changes that span over several frame
29890boundaries.<wbr/></p>
29891<p>In the latter case,<wbr/> whenever a request's settings change relative to
29892the previous submitted request,<wbr/> the full set of changes may take
29893multiple frame durations to fully take effect.<wbr/> Some settings may
29894take effect sooner (in less frame durations) than others.<wbr/></p>
29895<p>While a set of control changes are being propagated,<wbr/> this value
29896will be CONVERGING.<wbr/></p>
29897<p>Once it is fully known that a set of control changes have been
29898finished propagating,<wbr/> and the resulting updated control settings
29899have been read back by the camera device,<wbr/> this value will be set
29900to a non-negative frame number (corresponding to the request to
29901which the results have synchronized to).<wbr/></p>
29902<p>Older camera device implementations may not have a way to detect
29903when all camera controls have been applied,<wbr/> and will always set this
29904value to UNKNOWN.<wbr/></p>
29905<p>FULL capability devices will always have this value set to the
29906frame number of the request corresponding to this result.<wbr/></p>
29907<p><em>Further details</em>:</p>
29908<ul>
29909<li>Whenever a request differs from the last request,<wbr/> any future
29910results not yet returned may have this value set to CONVERGING (this
29911could include any in-progress captures not yet returned by the camera
29912device,<wbr/> for more details see pipeline considerations below).<wbr/></li>
29913<li>Submitting a series of multiple requests that differ from the
29914previous request (e.<wbr/>g.<wbr/> r1,<wbr/> r2,<wbr/> r3 s.<wbr/>t.<wbr/> r1 != r2 != r3)
29915moves the new synchronization frame to the last non-repeating
29916request (using the smallest frame number from the contiguous list of
29917repeating requests).<wbr/></li>
29918<li>Submitting the same request repeatedly will not change this value
29919to CONVERGING,<wbr/> if it was already a non-negative value.<wbr/></li>
29920<li>When this value changes to non-negative,<wbr/> that means that all of the
29921metadata controls from the request have been applied,<wbr/> all of the
29922metadata controls from the camera device have been read to the
29923updated values (into the result),<wbr/> and all of the graphics buffers
29924corresponding to this result are also synchronized to the request.<wbr/></li>
29925</ul>
29926<p><em>Pipeline considerations</em>:</p>
29927<p>Submitting a request with updated controls relative to the previously
29928submitted requests may also invalidate the synchronization state
29929of all the results corresponding to currently in-flight requests.<wbr/></p>
29930<p>In other words,<wbr/> results for this current request and up to
29931<a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a> prior requests may have their
29932<a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> change to CONVERGING.<wbr/></p>
29933            </td>
29934          </tr>
29935
29936          <tr class="entries_header">
29937            <th class="th_details" colspan="6">HAL Implementation Details</th>
29938          </tr>
29939          <tr class="entry_cont">
29940            <td class="entry_details" colspan="6">
29941              <p>Using UNKNOWN here is illegal unless <a href="#static_android.sync.maxLatency">android.<wbr/>sync.<wbr/>max<wbr/>Latency</a>
29942is also UNKNOWN.<wbr/></p>
29943<p>FULL capability devices should simply set this value to the
29944<code>frame_<wbr/>number</code> of the request this result corresponds to.<wbr/></p>
29945            </td>
29946          </tr>
29947
29948          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29949           <!-- end of entry -->
29950
29951
29952
29953      <!-- end of kind -->
29954      </tbody>
29955      <tr><td colspan="7" class="kind">static</td></tr>
29956
29957      <thead class="entries_header">
29958        <tr>
29959          <th class="th_name">Property Name</th>
29960          <th class="th_type">Type</th>
29961          <th class="th_description">Description</th>
29962          <th class="th_units">Units</th>
29963          <th class="th_range">Range</th>
29964          <th class="th_hal_version">Initial HIDL HAL version</th>
29965          <th class="th_tags">Tags</th>
29966        </tr>
29967      </thead>
29968
29969      <tbody>
29970
29971
29972
29973
29974
29975
29976
29977
29978
29979
29980          <tr class="entry" id="static_android.sync.maxLatency">
29981            <td class="entry_name
29982             " rowspan="5">
29983              android.<wbr/>sync.<wbr/>max<wbr/>Latency
29984            </td>
29985            <td class="entry_type">
29986                <span class="entry_type_name entry_type_name_enum">int32</span>
29987
29988              <span class="entry_type_visibility"> [public]</span>
29989
29990
29991              <span class="entry_type_hwlevel">[legacy] </span>
29992
29993
29994
29995                <ul class="entry_type_enum">
29996                  <li>
29997                    <span class="entry_type_enum_name">PER_FRAME_CONTROL (v3.2)</span>
29998                    <span class="entry_type_enum_value">0</span>
29999                    <span class="entry_type_enum_notes"><p>Every frame has the requests immediately applied.<wbr/></p>
30000<p>Changing controls over multiple requests one after another will
30001produce results that have those controls applied atomically
30002each frame.<wbr/></p>
30003<p>All FULL capability devices will have this as their maxLatency.<wbr/></p></span>
30004                  </li>
30005                  <li>
30006                    <span class="entry_type_enum_name">UNKNOWN (v3.2)</span>
30007                    <span class="entry_type_enum_value">-1</span>
30008                    <span class="entry_type_enum_notes"><p>Each new frame has some subset (potentially the entire set)
30009of the past requests applied to the camera settings.<wbr/></p>
30010<p>By submitting a series of identical requests,<wbr/> the camera device
30011will eventually have the camera settings applied,<wbr/> but it is
30012unknown when that exact point will be.<wbr/></p>
30013<p>All LEGACY capability devices will have this as their maxLatency.<wbr/></p></span>
30014                  </li>
30015                </ul>
30016
30017            </td> <!-- entry_type -->
30018
30019            <td class="entry_description">
30020              <p>The maximum number of frames that can occur after a request
30021(different than the previous) has been submitted,<wbr/> and before the
30022result's state becomes synchronized.<wbr/></p>
30023            </td>
30024
30025            <td class="entry_units">
30026              Frame counts
30027            </td>
30028
30029            <td class="entry_range">
30030              <p>A positive value,<wbr/> PER_<wbr/>FRAME_<wbr/>CONTROL,<wbr/> or UNKNOWN.<wbr/></p>
30031            </td>
30032
30033            <td class="entry_hal_version">
30034              <p>3.<wbr/>2</p>
30035            </td>
30036
30037            <td class="entry_tags">
30038              <ul class="entry_tags">
30039                  <li><a href="#tag_V1">V1</a></li>
30040              </ul>
30041            </td>
30042
30043          </tr>
30044          <tr class="entries_header">
30045            <th class="th_details" colspan="6">Details</th>
30046          </tr>
30047          <tr class="entry_cont">
30048            <td class="entry_details" colspan="6">
30049              <p>This defines the maximum distance (in number of metadata results),<wbr/>
30050between the frame number of the request that has new controls to apply
30051and the frame number of the result that has all the controls applied.<wbr/></p>
30052<p>In other words this acts as an upper boundary for how many frames
30053must occur before the camera device knows for a fact that the new
30054submitted camera settings have been applied in outgoing frames.<wbr/></p>
30055            </td>
30056          </tr>
30057
30058          <tr class="entries_header">
30059            <th class="th_details" colspan="6">HAL Implementation Details</th>
30060          </tr>
30061          <tr class="entry_cont">
30062            <td class="entry_details" colspan="6">
30063              <p>For example if maxLatency was 2,<wbr/></p>
30064<pre><code>initial request = X (repeating)
30065request1 = X
30066request2 = Y
30067request3 = Y
30068request4 = Y
30069
30070where requestN has frameNumber N,<wbr/> and the first of the repeating
30071initial request's has frameNumber F (and F &lt; 1).<wbr/>
30072
30073initial result = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == F }
30074result1 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == F }
30075result2 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == CONVERGING }
30076result3 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == CONVERGING }
30077result4 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == 2 }
30078
30079where resultN has frameNumber N.<wbr/>
30080</code></pre>
30081<p>Since <code>result4</code> has a <code>frameNumber == 4</code> and
30082<code><a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == 2</code>,<wbr/> the distance is clearly
30083<code>4 - 2 = 2</code>.<wbr/></p>
30084<p>Use <code>frame_<wbr/>count</code> from camera3_<wbr/>request_<wbr/>t instead of
30085<a href="#controls_android.request.frameCount">android.<wbr/>request.<wbr/>frame<wbr/>Count</a> or
30086<code><a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html#getFrameNumber">CaptureResult#getFrameNumber</a></code>.<wbr/></p>
30087<p>LIMITED devices are strongly encouraged to use a non-negative
30088value.<wbr/> If UNKNOWN is used here then app developers do not have a way
30089to know when sensor settings have been applied.<wbr/></p>
30090            </td>
30091          </tr>
30092
30093          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
30094           <!-- end of entry -->
30095
30096
30097
30098      <!-- end of kind -->
30099      </tbody>
30100
30101  <!-- end of section -->
30102  <tr><td colspan="7" id="section_reprocess" class="section">reprocess</td></tr>
30103
30104
30105      <tr><td colspan="7" class="kind">controls</td></tr>
30106
30107      <thead class="entries_header">
30108        <tr>
30109          <th class="th_name">Property Name</th>
30110          <th class="th_type">Type</th>
30111          <th class="th_description">Description</th>
30112          <th class="th_units">Units</th>
30113          <th class="th_range">Range</th>
30114          <th class="th_hal_version">Initial HIDL HAL version</th>
30115          <th class="th_tags">Tags</th>
30116        </tr>
30117      </thead>
30118
30119      <tbody>
30120
30121
30122
30123
30124
30125
30126
30127
30128
30129
30130          <tr class="entry" id="controls_android.reprocess.effectiveExposureFactor">
30131            <td class="entry_name
30132             " rowspan="3">
30133              android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor
30134            </td>
30135            <td class="entry_type">
30136                <span class="entry_type_name">float</span>
30137
30138              <span class="entry_type_visibility"> [java_public]</span>
30139
30140
30141              <span class="entry_type_hwlevel">[limited] </span>
30142
30143
30144
30145
30146            </td> <!-- entry_type -->
30147
30148            <td class="entry_description">
30149              <p>The amount of exposure time increase factor applied to the original output
30150frame by the application processing before sending for reprocessing.<wbr/></p>
30151            </td>
30152
30153            <td class="entry_units">
30154              Relative exposure time increase factor.<wbr/>
30155            </td>
30156
30157            <td class="entry_range">
30158              <p>&gt;= 1.<wbr/>0</p>
30159            </td>
30160
30161            <td class="entry_hal_version">
30162              <p>3.<wbr/>2</p>
30163            </td>
30164
30165            <td class="entry_tags">
30166              <ul class="entry_tags">
30167                  <li><a href="#tag_REPROC">REPROC</a></li>
30168              </ul>
30169            </td>
30170
30171          </tr>
30172          <tr class="entries_header">
30173            <th class="th_details" colspan="6">Details</th>
30174          </tr>
30175          <tr class="entry_cont">
30176            <td class="entry_details" colspan="6">
30177              <p>This is optional,<wbr/> and will be supported if the camera device supports YUV_<wbr/>REPROCESSING
30178capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains YUV_<wbr/>REPROCESSING).<wbr/></p>
30179<p>For some YUV reprocessing use cases,<wbr/> the application may choose to filter the original
30180output frames to effectively reduce the noise to the same level as a frame that was
30181captured with longer exposure time.<wbr/> To be more specific,<wbr/> assuming the original captured
30182images were captured with a sensitivity of S and an exposure time of T,<wbr/> the model in
30183the camera device is that the amount of noise in the image would be approximately what
30184would be expected if the original capture parameters had been a sensitivity of
30185S/<wbr/>effectiveExposureFactor and an exposure time of T*effectiveExposureFactor,<wbr/> rather
30186than S and T respectively.<wbr/> If the captured images were processed by the application
30187before being sent for reprocessing,<wbr/> then the application may have used image processing
30188algorithms and/<wbr/>or multi-frame image fusion to reduce the noise in the
30189application-processed images (input images).<wbr/> By using the effectiveExposureFactor
30190control,<wbr/> the application can communicate to the camera device the actual noise level
30191improvement in the application-processed image.<wbr/> With this information,<wbr/> the camera
30192device can select appropriate noise reduction and edge enhancement parameters to avoid
30193excessive noise reduction (<a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a>) and insufficient edge
30194enhancement (<a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a>) being applied to the reprocessed frames.<wbr/></p>
30195<p>For example,<wbr/> for multi-frame image fusion use case,<wbr/> the application may fuse
30196multiple output frames together to a final frame for reprocessing.<wbr/> When N image are
30197fused into 1 image for reprocessing,<wbr/> the exposure time increase factor could be up to
30198square root of N (based on a simple photon shot noise model).<wbr/> The camera device will
30199adjust the reprocessing noise reduction and edge enhancement parameters accordingly to
30200produce the best quality images.<wbr/></p>
30201<p>This is relative factor,<wbr/> 1.<wbr/>0 indicates the application hasn't processed the input
30202buffer in a way that affects its effective exposure time.<wbr/></p>
30203<p>This control is only effective for YUV reprocessing capture request.<wbr/> For noise
30204reduction 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/>
30205Similarly,<wbr/> for edge enhancement reprocessing,<wbr/> it is only effective when
30206<code><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a> != OFF</code>.<wbr/></p>
30207            </td>
30208          </tr>
30209
30210
30211          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
30212           <!-- end of entry -->
30213
30214
30215
30216      <!-- end of kind -->
30217      </tbody>
30218      <tr><td colspan="7" class="kind">dynamic</td></tr>
30219
30220      <thead class="entries_header">
30221        <tr>
30222          <th class="th_name">Property Name</th>
30223          <th class="th_type">Type</th>
30224          <th class="th_description">Description</th>
30225          <th class="th_units">Units</th>
30226          <th class="th_range">Range</th>
30227          <th class="th_hal_version">Initial HIDL HAL version</th>
30228          <th class="th_tags">Tags</th>
30229        </tr>
30230      </thead>
30231
30232      <tbody>
30233
30234
30235
30236
30237
30238
30239
30240
30241
30242
30243          <tr class="entry" id="dynamic_android.reprocess.effectiveExposureFactor">
30244            <td class="entry_name
30245             " rowspan="3">
30246              android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor
30247            </td>
30248            <td class="entry_type">
30249                <span class="entry_type_name">float</span>
30250
30251              <span class="entry_type_visibility"> [java_public]</span>
30252
30253
30254              <span class="entry_type_hwlevel">[limited] </span>
30255
30256
30257
30258
30259            </td> <!-- entry_type -->
30260
30261            <td class="entry_description">
30262              <p>The amount of exposure time increase factor applied to the original output
30263frame by the application processing before sending for reprocessing.<wbr/></p>
30264            </td>
30265
30266            <td class="entry_units">
30267              Relative exposure time increase factor.<wbr/>
30268            </td>
30269
30270            <td class="entry_range">
30271              <p>&gt;= 1.<wbr/>0</p>
30272            </td>
30273
30274            <td class="entry_hal_version">
30275              <p>3.<wbr/>2</p>
30276            </td>
30277
30278            <td class="entry_tags">
30279              <ul class="entry_tags">
30280                  <li><a href="#tag_REPROC">REPROC</a></li>
30281              </ul>
30282            </td>
30283
30284          </tr>
30285          <tr class="entries_header">
30286            <th class="th_details" colspan="6">Details</th>
30287          </tr>
30288          <tr class="entry_cont">
30289            <td class="entry_details" colspan="6">
30290              <p>This is optional,<wbr/> and will be supported if the camera device supports YUV_<wbr/>REPROCESSING
30291capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains YUV_<wbr/>REPROCESSING).<wbr/></p>
30292<p>For some YUV reprocessing use cases,<wbr/> the application may choose to filter the original
30293output frames to effectively reduce the noise to the same level as a frame that was
30294captured with longer exposure time.<wbr/> To be more specific,<wbr/> assuming the original captured
30295images were captured with a sensitivity of S and an exposure time of T,<wbr/> the model in
30296the camera device is that the amount of noise in the image would be approximately what
30297would be expected if the original capture parameters had been a sensitivity of
30298S/<wbr/>effectiveExposureFactor and an exposure time of T*effectiveExposureFactor,<wbr/> rather
30299than S and T respectively.<wbr/> If the captured images were processed by the application
30300before being sent for reprocessing,<wbr/> then the application may have used image processing
30301algorithms and/<wbr/>or multi-frame image fusion to reduce the noise in the
30302application-processed images (input images).<wbr/> By using the effectiveExposureFactor
30303control,<wbr/> the application can communicate to the camera device the actual noise level
30304improvement in the application-processed image.<wbr/> With this information,<wbr/> the camera
30305device can select appropriate noise reduction and edge enhancement parameters to avoid
30306excessive noise reduction (<a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a>) and insufficient edge
30307enhancement (<a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a>) being applied to the reprocessed frames.<wbr/></p>
30308<p>For example,<wbr/> for multi-frame image fusion use case,<wbr/> the application may fuse
30309multiple output frames together to a final frame for reprocessing.<wbr/> When N image are
30310fused into 1 image for reprocessing,<wbr/> the exposure time increase factor could be up to
30311square root of N (based on a simple photon shot noise model).<wbr/> The camera device will
30312adjust the reprocessing noise reduction and edge enhancement parameters accordingly to
30313produce the best quality images.<wbr/></p>
30314<p>This is relative factor,<wbr/> 1.<wbr/>0 indicates the application hasn't processed the input
30315buffer in a way that affects its effective exposure time.<wbr/></p>
30316<p>This control is only effective for YUV reprocessing capture request.<wbr/> For noise
30317reduction 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/>
30318Similarly,<wbr/> for edge enhancement reprocessing,<wbr/> it is only effective when
30319<code><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a> != OFF</code>.<wbr/></p>
30320            </td>
30321          </tr>
30322
30323
30324          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
30325           <!-- end of entry -->
30326
30327
30328
30329      <!-- end of kind -->
30330      </tbody>
30331      <tr><td colspan="7" class="kind">static</td></tr>
30332
30333      <thead class="entries_header">
30334        <tr>
30335          <th class="th_name">Property Name</th>
30336          <th class="th_type">Type</th>
30337          <th class="th_description">Description</th>
30338          <th class="th_units">Units</th>
30339          <th class="th_range">Range</th>
30340          <th class="th_hal_version">Initial HIDL HAL version</th>
30341          <th class="th_tags">Tags</th>
30342        </tr>
30343      </thead>
30344
30345      <tbody>
30346
30347
30348
30349
30350
30351
30352
30353
30354
30355
30356          <tr class="entry" id="static_android.reprocess.maxCaptureStall">
30357            <td class="entry_name
30358             " rowspan="3">
30359              android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall
30360            </td>
30361            <td class="entry_type">
30362                <span class="entry_type_name">int32</span>
30363
30364              <span class="entry_type_visibility"> [java_public]</span>
30365
30366
30367              <span class="entry_type_hwlevel">[limited] </span>
30368
30369
30370
30371
30372            </td> <!-- entry_type -->
30373
30374            <td class="entry_description">
30375              <p>The maximal camera capture pipeline stall (in unit of frame count) introduced by a
30376reprocess capture request.<wbr/></p>
30377            </td>
30378
30379            <td class="entry_units">
30380              Number of frames.<wbr/>
30381            </td>
30382
30383            <td class="entry_range">
30384              <p>&lt;= 4</p>
30385            </td>
30386
30387            <td class="entry_hal_version">
30388              <p>3.<wbr/>2</p>
30389            </td>
30390
30391            <td class="entry_tags">
30392              <ul class="entry_tags">
30393                  <li><a href="#tag_REPROC">REPROC</a></li>
30394              </ul>
30395            </td>
30396
30397          </tr>
30398          <tr class="entries_header">
30399            <th class="th_details" colspan="6">Details</th>
30400          </tr>
30401          <tr class="entry_cont">
30402            <td class="entry_details" colspan="6">
30403              <p>The key describes the maximal interference that one reprocess (input) request
30404can introduce to the camera simultaneous streaming of regular (output) capture
30405requests,<wbr/> including repeating requests.<wbr/></p>
30406<p>When a reprocessing capture request is submitted while a camera output repeating request
30407(e.<wbr/>g.<wbr/> preview) is being served by the camera device,<wbr/> it may preempt the camera capture
30408pipeline for at least one frame duration so that the camera device is unable to process
30409the following capture request in time for the next sensor start of exposure boundary.<wbr/>
30410When this happens,<wbr/> the application may observe a capture time gap (longer than one frame
30411duration) between adjacent capture output frames,<wbr/> which usually exhibits as preview
30412glitch if the repeating request output targets include a preview surface.<wbr/> This key gives
30413the worst-case number of frame stall introduced by one reprocess request with any kind of
30414formats/<wbr/>sizes combination.<wbr/></p>
30415<p>If this key reports 0,<wbr/> it means a reprocess request doesn't introduce any glitch to the
30416ongoing camera repeating request outputs,<wbr/> as if this reprocess request is never issued.<wbr/></p>
30417<p>This key is supported if the camera device supports PRIVATE or YUV reprocessing (
30418i.<wbr/>e.<wbr/> <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains PRIVATE_<wbr/>REPROCESSING or
30419YUV_<wbr/>REPROCESSING).<wbr/></p>
30420            </td>
30421          </tr>
30422
30423
30424          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
30425           <!-- end of entry -->
30426
30427
30428
30429      <!-- end of kind -->
30430      </tbody>
30431
30432  <!-- end of section -->
30433  <tr><td colspan="7" id="section_depth" class="section">depth</td></tr>
30434
30435
30436      <tr><td colspan="7" class="kind">static</td></tr>
30437
30438      <thead class="entries_header">
30439        <tr>
30440          <th class="th_name">Property Name</th>
30441          <th class="th_type">Type</th>
30442          <th class="th_description">Description</th>
30443          <th class="th_units">Units</th>
30444          <th class="th_range">Range</th>
30445          <th class="th_hal_version">Initial HIDL HAL version</th>
30446          <th class="th_tags">Tags</th>
30447        </tr>
30448      </thead>
30449
30450      <tbody>
30451
30452
30453
30454
30455
30456
30457
30458
30459
30460
30461          <tr class="entry" id="static_android.depth.maxDepthSamples">
30462            <td class="entry_name
30463             " rowspan="3">
30464              android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples
30465            </td>
30466            <td class="entry_type">
30467                <span class="entry_type_name">int32</span>
30468
30469              <span class="entry_type_visibility"> [system]</span>
30470
30471
30472              <span class="entry_type_hwlevel">[limited] </span>
30473
30474
30475
30476
30477            </td> <!-- entry_type -->
30478
30479            <td class="entry_description">
30480              <p>Maximum number of points that a depth point cloud may contain.<wbr/></p>
30481            </td>
30482
30483            <td class="entry_units">
30484            </td>
30485
30486            <td class="entry_range">
30487            </td>
30488
30489            <td class="entry_hal_version">
30490              <p>3.<wbr/>2</p>
30491            </td>
30492
30493            <td class="entry_tags">
30494              <ul class="entry_tags">
30495                  <li><a href="#tag_DEPTH">DEPTH</a></li>
30496              </ul>
30497            </td>
30498
30499          </tr>
30500          <tr class="entries_header">
30501            <th class="th_details" colspan="6">Details</th>
30502          </tr>
30503          <tr class="entry_cont">
30504            <td class="entry_details" colspan="6">
30505              <p>If a camera device supports outputting depth range data in the form of a depth point
30506cloud (<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
30507number of points an output buffer may contain.<wbr/></p>
30508<p>Any given buffer may contain between 0 and maxDepthSamples points,<wbr/> inclusive.<wbr/>
30509If output in the depth point cloud format is not supported,<wbr/> this entry will
30510not be defined.<wbr/></p>
30511            </td>
30512          </tr>
30513
30514
30515          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
30516           <!-- end of entry -->
30517
30518
30519          <tr class="entry" id="static_android.depth.availableDepthStreamConfigurations">
30520            <td class="entry_name
30521             " rowspan="3">
30522              android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stream<wbr/>Configurations
30523            </td>
30524            <td class="entry_type">
30525                <span class="entry_type_name entry_type_name_enum">int32</span>
30526                <span class="entry_type_container">x</span>
30527
30528                <span class="entry_type_array">
30529                  n x 4
30530                </span>
30531              <span class="entry_type_visibility"> [ndk_public as streamConfiguration]</span>
30532
30533
30534              <span class="entry_type_hwlevel">[limited] </span>
30535
30536
30537
30538                <ul class="entry_type_enum">
30539                  <li>
30540                    <span class="entry_type_enum_name">OUTPUT (v3.2)</span>
30541                  </li>
30542                  <li>
30543                    <span class="entry_type_enum_name">INPUT (v3.2)</span>
30544                  </li>
30545                </ul>
30546
30547            </td> <!-- entry_type -->
30548
30549            <td class="entry_description">
30550              <p>The available depth dataspace stream
30551configurations that this camera device supports
30552(i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p>
30553            </td>
30554
30555            <td class="entry_units">
30556            </td>
30557
30558            <td class="entry_range">
30559            </td>
30560
30561            <td class="entry_hal_version">
30562              <p>3.<wbr/>2</p>
30563            </td>
30564
30565            <td class="entry_tags">
30566              <ul class="entry_tags">
30567                  <li><a href="#tag_DEPTH">DEPTH</a></li>
30568              </ul>
30569            </td>
30570
30571          </tr>
30572          <tr class="entries_header">
30573            <th class="th_details" colspan="6">Details</th>
30574          </tr>
30575          <tr class="entry_cont">
30576            <td class="entry_details" colspan="6">
30577              <p>These are output stream configurations for use with
30578dataSpace HAL_<wbr/>DATASPACE_<wbr/>DEPTH.<wbr/> The configurations are
30579listed as <code>(format,<wbr/> width,<wbr/> height,<wbr/> input?)</code> tuples.<wbr/></p>
30580<p>Only devices that support depth output for at least
30581the HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>Y16 dense depth map may include
30582this entry.<wbr/></p>
30583<p>A device that also supports the HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>BLOB
30584sparse depth point cloud must report a single entry for
30585the format in this list as <code>(HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>BLOB,<wbr/>
30586<a href="#static_android.depth.maxDepthSamples">android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples</a>,<wbr/> 1,<wbr/> OUTPUT)</code> in addition to
30587the entries for HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>Y16.<wbr/></p>
30588            </td>
30589          </tr>
30590
30591
30592          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
30593           <!-- end of entry -->
30594
30595
30596          <tr class="entry" id="static_android.depth.availableDepthMinFrameDurations">
30597            <td class="entry_name
30598             " rowspan="3">
30599              android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Min<wbr/>Frame<wbr/>Durations
30600            </td>
30601            <td class="entry_type">
30602                <span class="entry_type_name">int64</span>
30603                <span class="entry_type_container">x</span>
30604
30605                <span class="entry_type_array">
30606                  4 x n
30607                </span>
30608              <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
30609
30610
30611              <span class="entry_type_hwlevel">[limited] </span>
30612
30613
30614
30615
30616            </td> <!-- entry_type -->
30617
30618            <td class="entry_description">
30619              <p>This lists the minimum frame duration for each
30620format/<wbr/>size combination for depth output formats.<wbr/></p>
30621            </td>
30622
30623            <td class="entry_units">
30624              (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
30625            </td>
30626
30627            <td class="entry_range">
30628            </td>
30629
30630            <td class="entry_hal_version">
30631              <p>3.<wbr/>2</p>
30632            </td>
30633
30634            <td class="entry_tags">
30635              <ul class="entry_tags">
30636                  <li><a href="#tag_DEPTH">DEPTH</a></li>
30637              </ul>
30638            </td>
30639
30640          </tr>
30641          <tr class="entries_header">
30642            <th class="th_details" colspan="6">Details</th>
30643          </tr>
30644          <tr class="entry_cont">
30645            <td class="entry_details" colspan="6">
30646              <p>This should correspond to the frame duration when only that
30647stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode)
30648set to either OFF or FAST.<wbr/></p>
30649<p>When multiple streams are used in a request,<wbr/> the minimum frame
30650duration will be max(individual stream min durations).<wbr/></p>
30651<p>The minimum frame duration of a stream (of a particular format,<wbr/> size)
30652is the same regardless of whether the stream is input or output.<wbr/></p>
30653<p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> and
30654<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for more details about
30655calculating the max frame rate.<wbr/></p>
30656            </td>
30657          </tr>
30658
30659
30660          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
30661           <!-- end of entry -->
30662
30663
30664          <tr class="entry" id="static_android.depth.availableDepthStallDurations">
30665            <td class="entry_name
30666             " rowspan="3">
30667              android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stall<wbr/>Durations
30668            </td>
30669            <td class="entry_type">
30670                <span class="entry_type_name">int64</span>
30671                <span class="entry_type_container">x</span>
30672
30673                <span class="entry_type_array">
30674                  4 x n
30675                </span>
30676              <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
30677
30678
30679              <span class="entry_type_hwlevel">[limited] </span>
30680
30681
30682
30683
30684            </td> <!-- entry_type -->
30685
30686            <td class="entry_description">
30687              <p>This lists the maximum stall duration for each
30688output format/<wbr/>size combination for depth streams.<wbr/></p>
30689            </td>
30690
30691            <td class="entry_units">
30692              (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
30693            </td>
30694
30695            <td class="entry_range">
30696            </td>
30697
30698            <td class="entry_hal_version">
30699              <p>3.<wbr/>2</p>
30700            </td>
30701
30702            <td class="entry_tags">
30703              <ul class="entry_tags">
30704                  <li><a href="#tag_DEPTH">DEPTH</a></li>
30705              </ul>
30706            </td>
30707
30708          </tr>
30709          <tr class="entries_header">
30710            <th class="th_details" colspan="6">Details</th>
30711          </tr>
30712          <tr class="entry_cont">
30713            <td class="entry_details" colspan="6">
30714              <p>A stall duration is how much extra time would get added
30715to the normal minimum frame duration for a repeating request
30716that has streams with non-zero stall.<wbr/></p>
30717<p>This functions similarly to
30718<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for depth
30719streams.<wbr/></p>
30720<p>All depth output stream formats may have a nonzero stall
30721duration.<wbr/></p>
30722            </td>
30723          </tr>
30724
30725
30726          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
30727           <!-- end of entry -->
30728
30729
30730          <tr class="entry" id="static_android.depth.depthIsExclusive">
30731            <td class="entry_name
30732             " rowspan="3">
30733              android.<wbr/>depth.<wbr/>depth<wbr/>Is<wbr/>Exclusive
30734            </td>
30735            <td class="entry_type">
30736                <span class="entry_type_name entry_type_name_enum">byte</span>
30737
30738              <span class="entry_type_visibility"> [public as boolean]</span>
30739
30740
30741              <span class="entry_type_hwlevel">[limited] </span>
30742
30743
30744
30745                <ul class="entry_type_enum">
30746                  <li>
30747                    <span class="entry_type_enum_name">FALSE (v3.2)</span>
30748                  </li>
30749                  <li>
30750                    <span class="entry_type_enum_name">TRUE (v3.2)</span>
30751                  </li>
30752                </ul>
30753
30754            </td> <!-- entry_type -->
30755
30756            <td class="entry_description">
30757              <p>Indicates whether a capture request may target both a
30758DEPTH16 /<wbr/> DEPTH_<wbr/>POINT_<wbr/>CLOUD output,<wbr/> and normal color outputs (such as
30759YUV_<wbr/>420_<wbr/>888,<wbr/> JPEG,<wbr/> or RAW) simultaneously.<wbr/></p>
30760            </td>
30761
30762            <td class="entry_units">
30763            </td>
30764
30765            <td class="entry_range">
30766            </td>
30767
30768            <td class="entry_hal_version">
30769              <p>3.<wbr/>2</p>
30770            </td>
30771
30772            <td class="entry_tags">
30773            </td>
30774
30775          </tr>
30776          <tr class="entries_header">
30777            <th class="th_details" colspan="6">Details</th>
30778          </tr>
30779          <tr class="entry_cont">
30780            <td class="entry_details" colspan="6">
30781              <p>If TRUE,<wbr/> including both depth and color outputs in a single
30782capture request is not supported.<wbr/> An application must interleave color
30783and depth requests.<wbr/>  If FALSE,<wbr/> a single request can target both types
30784of output.<wbr/></p>
30785<p>Typically,<wbr/> this restriction exists on camera devices that
30786need to emit a specific pattern or wavelength of light to
30787measure depth values,<wbr/> which causes the color image to be
30788corrupted during depth measurement.<wbr/></p>
30789            </td>
30790          </tr>
30791
30792
30793          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
30794           <!-- end of entry -->
30795
30796
30797          <tr class="entry" id="static_android.depth.availableRecommendedDepthStreamConfigurations">
30798            <td class="entry_name
30799             " rowspan="5">
30800              android.<wbr/>depth.<wbr/>available<wbr/>Recommended<wbr/>Depth<wbr/>Stream<wbr/>Configurations
30801            </td>
30802            <td class="entry_type">
30803                <span class="entry_type_name">int32</span>
30804                <span class="entry_type_container">x</span>
30805
30806                <span class="entry_type_array">
30807                  n x 5
30808                </span>
30809              <span class="entry_type_visibility"> [ndk_public as recommendedStreamConfiguration]</span>
30810
30811
30812
30813
30814
30815
30816            </td> <!-- entry_type -->
30817
30818            <td class="entry_description">
30819              <p>Recommended depth stream configurations for common client use cases.<wbr/></p>
30820            </td>
30821
30822            <td class="entry_units">
30823            </td>
30824
30825            <td class="entry_range">
30826            </td>
30827
30828            <td class="entry_hal_version">
30829              <p>3.<wbr/>4</p>
30830            </td>
30831
30832            <td class="entry_tags">
30833            </td>
30834
30835          </tr>
30836          <tr class="entries_header">
30837            <th class="th_details" colspan="6">Details</th>
30838          </tr>
30839          <tr class="entry_cont">
30840            <td class="entry_details" colspan="6">
30841              <p>Optional subset of the <a href="#static_android.depth.availableDepthStreamConfigurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stream<wbr/>Configurations</a> that
30842contains similar tuples listed as
30843(i.<wbr/>e.<wbr/> width,<wbr/> height,<wbr/> format,<wbr/> output/<wbr/>input stream,<wbr/> usecase bit field).<wbr/>
30844Camera devices will be able to suggest particular depth stream configurations which are
30845power and performance efficient for specific use cases.<wbr/> For more information about
30846retrieving the suggestions see
30847<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getRecommendedStreamConfigurationMap">CameraCharacteristics#getRecommendedStreamConfigurationMap</a>.<wbr/></p>
30848            </td>
30849          </tr>
30850
30851          <tr class="entries_header">
30852            <th class="th_details" colspan="6">HAL Implementation Details</th>
30853          </tr>
30854          <tr class="entry_cont">
30855            <td class="entry_details" colspan="6">
30856              <p>Recommended depth configurations are expected to be declared with SNAPSHOT and/<wbr/>or
30857ZSL if supported by the device.<wbr/>
30858For additional details on how to declare recommended stream configurations,<wbr/> check
30859<a href="#static_android.scaler.availableRecommendedStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Recommended<wbr/>Stream<wbr/>Configurations</a>.<wbr/>
30860For additional requirements on depth streams please consider
30861<a href="#static_android.depth.availableDepthStreamConfigurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stream<wbr/>Configurations</a>.<wbr/></p>
30862            </td>
30863          </tr>
30864
30865          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
30866           <!-- end of entry -->
30867
30868
30869          <tr class="entry" id="static_android.depth.availableDynamicDepthStreamConfigurations">
30870            <td class="entry_name
30871             " rowspan="5">
30872              android.<wbr/>depth.<wbr/>available<wbr/>Dynamic<wbr/>Depth<wbr/>Stream<wbr/>Configurations
30873            </td>
30874            <td class="entry_type">
30875                <span class="entry_type_name entry_type_name_enum">int32</span>
30876                <span class="entry_type_container">x</span>
30877
30878                <span class="entry_type_array">
30879                  n x 4
30880                </span>
30881              <span class="entry_type_visibility"> [ndk_public as streamConfiguration]</span>
30882
30883
30884
30885
30886
30887                <ul class="entry_type_enum">
30888                  <li>
30889                    <span class="entry_type_enum_name">OUTPUT (v3.4)</span>
30890                  </li>
30891                  <li>
30892                    <span class="entry_type_enum_name">INPUT (v3.4)</span>
30893                  </li>
30894                </ul>
30895
30896            </td> <!-- entry_type -->
30897
30898            <td class="entry_description">
30899              <p>The available dynamic depth dataspace stream
30900configurations that this camera device supports
30901(i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p>
30902            </td>
30903
30904            <td class="entry_units">
30905            </td>
30906
30907            <td class="entry_range">
30908            </td>
30909
30910            <td class="entry_hal_version">
30911              <p>3.<wbr/>4</p>
30912            </td>
30913
30914            <td class="entry_tags">
30915              <ul class="entry_tags">
30916                  <li><a href="#tag_DEPTH">DEPTH</a></li>
30917              </ul>
30918            </td>
30919
30920          </tr>
30921          <tr class="entries_header">
30922            <th class="th_details" colspan="6">Details</th>
30923          </tr>
30924          <tr class="entry_cont">
30925            <td class="entry_details" colspan="6">
30926              <p>These are output stream configurations for use with
30927dataSpace DYNAMIC_<wbr/>DEPTH.<wbr/> The configurations are
30928listed as <code>(format,<wbr/> width,<wbr/> height,<wbr/> input?)</code> tuples.<wbr/></p>
30929<p>Only devices that support depth output for at least
30930the HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>Y16 dense depth map along with
30931HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>BLOB with the same size or size with
30932the same aspect ratio can have dynamic depth dataspace
30933stream configuration.<wbr/> <a href="#static_android.depth.depthIsExclusive">android.<wbr/>depth.<wbr/>depth<wbr/>Is<wbr/>Exclusive</a> also
30934needs to be set to FALSE.<wbr/></p>
30935            </td>
30936          </tr>
30937
30938          <tr class="entries_header">
30939            <th class="th_details" colspan="6">HAL Implementation Details</th>
30940          </tr>
30941          <tr class="entry_cont">
30942            <td class="entry_details" colspan="6">
30943              <p>Do not set this property directly.<wbr/>
30944It is populated by camera framework and must not be set
30945at the HAL layer.<wbr/></p>
30946            </td>
30947          </tr>
30948
30949          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
30950           <!-- end of entry -->
30951
30952
30953          <tr class="entry" id="static_android.depth.availableDynamicDepthMinFrameDurations">
30954            <td class="entry_name
30955             " rowspan="5">
30956              android.<wbr/>depth.<wbr/>available<wbr/>Dynamic<wbr/>Depth<wbr/>Min<wbr/>Frame<wbr/>Durations
30957            </td>
30958            <td class="entry_type">
30959                <span class="entry_type_name">int64</span>
30960                <span class="entry_type_container">x</span>
30961
30962                <span class="entry_type_array">
30963                  4 x n
30964                </span>
30965              <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
30966
30967
30968
30969
30970
30971
30972            </td> <!-- entry_type -->
30973
30974            <td class="entry_description">
30975              <p>This lists the minimum frame duration for each
30976format/<wbr/>size combination for dynamic depth output streams.<wbr/></p>
30977            </td>
30978
30979            <td class="entry_units">
30980              (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
30981            </td>
30982
30983            <td class="entry_range">
30984            </td>
30985
30986            <td class="entry_hal_version">
30987              <p>3.<wbr/>4</p>
30988            </td>
30989
30990            <td class="entry_tags">
30991              <ul class="entry_tags">
30992                  <li><a href="#tag_DEPTH">DEPTH</a></li>
30993              </ul>
30994            </td>
30995
30996          </tr>
30997          <tr class="entries_header">
30998            <th class="th_details" colspan="6">Details</th>
30999          </tr>
31000          <tr class="entry_cont">
31001            <td class="entry_details" colspan="6">
31002              <p>This should correspond to the frame duration when only that
31003stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode)
31004set to either OFF or FAST.<wbr/></p>
31005<p>When multiple streams are used in a request,<wbr/> the minimum frame
31006duration will be max(individual stream min durations).<wbr/></p>
31007<p>The minimum frame duration of a stream (of a particular format,<wbr/> size)
31008is the same regardless of whether the stream is input or output.<wbr/></p>
31009            </td>
31010          </tr>
31011
31012          <tr class="entries_header">
31013            <th class="th_details" colspan="6">HAL Implementation Details</th>
31014          </tr>
31015          <tr class="entry_cont">
31016            <td class="entry_details" colspan="6">
31017              <p>Do not set this property directly.<wbr/>
31018It is populated by camera framework and must not be set
31019at the HAL layer.<wbr/></p>
31020            </td>
31021          </tr>
31022
31023          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
31024           <!-- end of entry -->
31025
31026
31027          <tr class="entry" id="static_android.depth.availableDynamicDepthStallDurations">
31028            <td class="entry_name
31029             " rowspan="5">
31030              android.<wbr/>depth.<wbr/>available<wbr/>Dynamic<wbr/>Depth<wbr/>Stall<wbr/>Durations
31031            </td>
31032            <td class="entry_type">
31033                <span class="entry_type_name">int64</span>
31034                <span class="entry_type_container">x</span>
31035
31036                <span class="entry_type_array">
31037                  4 x n
31038                </span>
31039              <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
31040
31041
31042
31043
31044
31045
31046            </td> <!-- entry_type -->
31047
31048            <td class="entry_description">
31049              <p>This lists the maximum stall duration for each
31050output format/<wbr/>size combination for dynamic depth streams.<wbr/></p>
31051            </td>
31052
31053            <td class="entry_units">
31054              (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
31055            </td>
31056
31057            <td class="entry_range">
31058            </td>
31059
31060            <td class="entry_hal_version">
31061              <p>3.<wbr/>4</p>
31062            </td>
31063
31064            <td class="entry_tags">
31065              <ul class="entry_tags">
31066                  <li><a href="#tag_DEPTH">DEPTH</a></li>
31067              </ul>
31068            </td>
31069
31070          </tr>
31071          <tr class="entries_header">
31072            <th class="th_details" colspan="6">Details</th>
31073          </tr>
31074          <tr class="entry_cont">
31075            <td class="entry_details" colspan="6">
31076              <p>A stall duration is how much extra time would get added
31077to the normal minimum frame duration for a repeating request
31078that has streams with non-zero stall.<wbr/></p>
31079<p>All dynamic depth output streams may have a nonzero stall
31080duration.<wbr/></p>
31081            </td>
31082          </tr>
31083
31084          <tr class="entries_header">
31085            <th class="th_details" colspan="6">HAL Implementation Details</th>
31086          </tr>
31087          <tr class="entry_cont">
31088            <td class="entry_details" colspan="6">
31089              <p>Do not set this property directly.<wbr/>
31090It is populated by camera framework and must not be set
31091at the HAL layer.<wbr/></p>
31092            </td>
31093          </tr>
31094
31095          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
31096           <!-- end of entry -->
31097
31098
31099
31100      <!-- end of kind -->
31101      </tbody>
31102
31103  <!-- end of section -->
31104  <tr><td colspan="7" id="section_logicalMultiCamera" class="section">logicalMultiCamera</td></tr>
31105
31106
31107      <tr><td colspan="7" class="kind">static</td></tr>
31108
31109      <thead class="entries_header">
31110        <tr>
31111          <th class="th_name">Property Name</th>
31112          <th class="th_type">Type</th>
31113          <th class="th_description">Description</th>
31114          <th class="th_units">Units</th>
31115          <th class="th_range">Range</th>
31116          <th class="th_hal_version">Initial HIDL HAL version</th>
31117          <th class="th_tags">Tags</th>
31118        </tr>
31119      </thead>
31120
31121      <tbody>
31122
31123
31124
31125
31126
31127
31128
31129
31130
31131
31132          <tr class="entry" id="static_android.logicalMultiCamera.physicalIds">
31133            <td class="entry_name
31134             " rowspan="3">
31135              android.<wbr/>logical<wbr/>Multi<wbr/>Camera.<wbr/>physical<wbr/>Ids
31136            </td>
31137            <td class="entry_type">
31138                <span class="entry_type_name">byte</span>
31139                <span class="entry_type_container">x</span>
31140
31141                <span class="entry_type_array">
31142                  n
31143                </span>
31144              <span class="entry_type_visibility"> [ndk_public]</span>
31145
31146
31147              <span class="entry_type_hwlevel">[limited] </span>
31148
31149
31150
31151
31152            </td> <!-- entry_type -->
31153
31154            <td class="entry_description">
31155              <p>String containing the ids of the underlying physical cameras.<wbr/></p>
31156            </td>
31157
31158            <td class="entry_units">
31159              UTF-8 null-terminated string
31160            </td>
31161
31162            <td class="entry_range">
31163            </td>
31164
31165            <td class="entry_hal_version">
31166              <p>3.<wbr/>3</p>
31167            </td>
31168
31169            <td class="entry_tags">
31170              <ul class="entry_tags">
31171                  <li><a href="#tag_LOGICALCAMERA">LOGICALCAMERA</a></li>
31172              </ul>
31173            </td>
31174
31175          </tr>
31176          <tr class="entries_header">
31177            <th class="th_details" colspan="6">Details</th>
31178          </tr>
31179          <tr class="entry_cont">
31180            <td class="entry_details" colspan="6">
31181              <p>For a logical camera,<wbr/> this is concatenation of all underlying physical camera IDs.<wbr/>
31182The null terminator for physical camera ID must be preserved so that the whole string
31183can be tokenized using '\0' to generate list of physical camera IDs.<wbr/></p>
31184<p>For example,<wbr/> if the physical camera IDs of the logical camera are "2" and "3",<wbr/> the
31185value of this tag will be ['2',<wbr/> '\0',<wbr/> '3',<wbr/> '\0'].<wbr/></p>
31186<p>The number of physical camera IDs must be no less than 2.<wbr/></p>
31187            </td>
31188          </tr>
31189
31190
31191          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
31192           <!-- end of entry -->
31193
31194
31195          <tr class="entry" id="static_android.logicalMultiCamera.sensorSyncType">
31196            <td class="entry_name
31197             " rowspan="3">
31198              android.<wbr/>logical<wbr/>Multi<wbr/>Camera.<wbr/>sensor<wbr/>Sync<wbr/>Type
31199            </td>
31200            <td class="entry_type">
31201                <span class="entry_type_name entry_type_name_enum">byte</span>
31202
31203              <span class="entry_type_visibility"> [public]</span>
31204
31205
31206              <span class="entry_type_hwlevel">[limited] </span>
31207
31208
31209
31210                <ul class="entry_type_enum">
31211                  <li>
31212                    <span class="entry_type_enum_name">APPROXIMATE (v3.3)</span>
31213                    <span class="entry_type_enum_notes"><p>A software mechanism is used to synchronize between the physical cameras.<wbr/> As a result,<wbr/>
31214the timestamp of an image from a physical stream is only an approximation of the
31215image sensor start-of-exposure time.<wbr/></p></span>
31216                  </li>
31217                  <li>
31218                    <span class="entry_type_enum_name">CALIBRATED (v3.3)</span>
31219                    <span class="entry_type_enum_notes"><p>The camera device supports frame timestamp synchronization at the hardware level,<wbr/>
31220and the timestamp of a physical stream image accurately reflects its
31221start-of-exposure time.<wbr/></p></span>
31222                  </li>
31223                </ul>
31224
31225            </td> <!-- entry_type -->
31226
31227            <td class="entry_description">
31228              <p>The accuracy of frame timestamp synchronization between physical cameras</p>
31229            </td>
31230
31231            <td class="entry_units">
31232            </td>
31233
31234            <td class="entry_range">
31235            </td>
31236
31237            <td class="entry_hal_version">
31238              <p>3.<wbr/>3</p>
31239            </td>
31240
31241            <td class="entry_tags">
31242              <ul class="entry_tags">
31243                  <li><a href="#tag_LOGICALCAMERA">LOGICALCAMERA</a></li>
31244              </ul>
31245            </td>
31246
31247          </tr>
31248          <tr class="entries_header">
31249            <th class="th_details" colspan="6">Details</th>
31250          </tr>
31251          <tr class="entry_cont">
31252            <td class="entry_details" colspan="6">
31253              <p>The accuracy of the frame timestamp synchronization determines the physical cameras'
31254ability to start exposure at the same time.<wbr/> If the sensorSyncType is CALIBRATED,<wbr/>
31255the physical camera sensors usually run in master-slave mode so that their shutter
31256time is synchronized.<wbr/> For APPROXIMATE sensorSyncType,<wbr/> the camera sensors usually run in
31257master-master mode,<wbr/> and there could be offset between their start of exposure.<wbr/></p>
31258<p>In both cases,<wbr/> all images generated for a particular capture request still carry the same
31259timestamps,<wbr/> so that they can be used to look up the matching frame number and
31260onCaptureStarted callback.<wbr/></p>
31261<p>This tag is only applicable if the logical camera device supports concurrent physical
31262streams from different physical cameras.<wbr/></p>
31263            </td>
31264          </tr>
31265
31266
31267          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
31268           <!-- end of entry -->
31269
31270
31271
31272      <!-- end of kind -->
31273      </tbody>
31274      <tr><td colspan="7" class="kind">dynamic</td></tr>
31275
31276      <thead class="entries_header">
31277        <tr>
31278          <th class="th_name">Property Name</th>
31279          <th class="th_type">Type</th>
31280          <th class="th_description">Description</th>
31281          <th class="th_units">Units</th>
31282          <th class="th_range">Range</th>
31283          <th class="th_hal_version">Initial HIDL HAL version</th>
31284          <th class="th_tags">Tags</th>
31285        </tr>
31286      </thead>
31287
31288      <tbody>
31289
31290
31291
31292
31293
31294
31295
31296
31297
31298
31299          <tr class="entry" id="dynamic_android.logicalMultiCamera.activePhysicalId">
31300            <td class="entry_name
31301             " rowspan="5">
31302              android.<wbr/>logical<wbr/>Multi<wbr/>Camera.<wbr/>active<wbr/>Physical<wbr/>Id
31303            </td>
31304            <td class="entry_type">
31305                <span class="entry_type_name">byte</span>
31306
31307              <span class="entry_type_visibility"> [public as string]</span>
31308
31309
31310
31311
31312
31313
31314            </td> <!-- entry_type -->
31315
31316            <td class="entry_description">
31317              <p>String containing the ID of the underlying active physical camera.<wbr/></p>
31318            </td>
31319
31320            <td class="entry_units">
31321              UTF-8 null-terminated string
31322            </td>
31323
31324            <td class="entry_range">
31325            </td>
31326
31327            <td class="entry_hal_version">
31328              <p>3.<wbr/>4</p>
31329            </td>
31330
31331            <td class="entry_tags">
31332              <ul class="entry_tags">
31333                  <li><a href="#tag_LOGICALCAMERA">LOGICALCAMERA</a></li>
31334              </ul>
31335            </td>
31336
31337          </tr>
31338          <tr class="entries_header">
31339            <th class="th_details" colspan="6">Details</th>
31340          </tr>
31341          <tr class="entry_cont">
31342            <td class="entry_details" colspan="6">
31343              <p>The ID of the active physical camera that's backing the logical camera.<wbr/> All camera
31344streams and metadata that are not physical camera specific will be originating from this
31345physical camera.<wbr/></p>
31346<p>For a logical camera made up of physical cameras where each camera's lenses have
31347different characteristics,<wbr/> the camera device may choose to switch between the physical
31348cameras when application changes FOCAL_<wbr/>LENGTH or SCALER_<wbr/>CROP_<wbr/>REGION.<wbr/>
31349At the time of lens switch,<wbr/> this result metadata reflects the new active physical camera
31350ID.<wbr/></p>
31351<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/>
31352When available,<wbr/> this must be one of valid physical IDs backing this logical multi-camera.<wbr/>
31353If this key is not available for a logical multi-camera,<wbr/> the camera device implementation
31354may still switch between different active physical cameras based on use case,<wbr/> but the
31355current active physical camera information won't be available to the application.<wbr/></p>
31356            </td>
31357          </tr>
31358
31359          <tr class="entries_header">
31360            <th class="th_details" colspan="6">HAL Implementation Details</th>
31361          </tr>
31362          <tr class="entry_cont">
31363            <td class="entry_details" colspan="6">
31364              <p>Staring from HIDL ICameraDevice version 3.<wbr/>5,<wbr/> the tag must be available in the capture
31365result metadata to indicate current active physical camera ID.<wbr/></p>
31366            </td>
31367          </tr>
31368
31369          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
31370           <!-- end of entry -->
31371
31372
31373
31374      <!-- end of kind -->
31375      </tbody>
31376
31377  <!-- end of section -->
31378  <tr><td colspan="7" id="section_distortionCorrection" class="section">distortionCorrection</td></tr>
31379
31380
31381      <tr><td colspan="7" class="kind">controls</td></tr>
31382
31383      <thead class="entries_header">
31384        <tr>
31385          <th class="th_name">Property Name</th>
31386          <th class="th_type">Type</th>
31387          <th class="th_description">Description</th>
31388          <th class="th_units">Units</th>
31389          <th class="th_range">Range</th>
31390          <th class="th_hal_version">Initial HIDL HAL version</th>
31391          <th class="th_tags">Tags</th>
31392        </tr>
31393      </thead>
31394
31395      <tbody>
31396
31397
31398
31399
31400
31401
31402
31403
31404
31405
31406          <tr class="entry" id="controls_android.distortionCorrection.mode">
31407            <td class="entry_name
31408             " rowspan="3">
31409              android.<wbr/>distortion<wbr/>Correction.<wbr/>mode
31410            </td>
31411            <td class="entry_type">
31412                <span class="entry_type_name entry_type_name_enum">byte</span>
31413
31414              <span class="entry_type_visibility"> [public]</span>
31415
31416
31417
31418
31419
31420                <ul class="entry_type_enum">
31421                  <li>
31422                    <span class="entry_type_enum_name">OFF (v3.3)</span>
31423                    <span class="entry_type_enum_notes"><p>No distortion correction is applied.<wbr/></p></span>
31424                  </li>
31425                  <li>
31426                    <span class="entry_type_enum_name">FAST (v3.3)</span>
31427                    <span class="entry_type_enum_notes"><p>Lens distortion correction is applied without reducing frame rate
31428relative to sensor output.<wbr/> It may be the same as OFF if distortion correction would
31429reduce frame rate relative to sensor.<wbr/></p></span>
31430                  </li>
31431                  <li>
31432                    <span class="entry_type_enum_name">HIGH_QUALITY (v3.3)</span>
31433                    <span class="entry_type_enum_notes"><p>High-quality distortion correction is applied,<wbr/> at the cost of
31434possibly reduced frame rate relative to sensor output.<wbr/></p></span>
31435                  </li>
31436                </ul>
31437
31438            </td> <!-- entry_type -->
31439
31440            <td class="entry_description">
31441              <p>Mode of operation for the lens distortion correction block.<wbr/></p>
31442            </td>
31443
31444            <td class="entry_units">
31445            </td>
31446
31447            <td class="entry_range">
31448              <p><a href="#static_android.distortionCorrection.availableModes">android.<wbr/>distortion<wbr/>Correction.<wbr/>available<wbr/>Modes</a></p>
31449            </td>
31450
31451            <td class="entry_hal_version">
31452              <p>3.<wbr/>3</p>
31453            </td>
31454
31455            <td class="entry_tags">
31456            </td>
31457
31458          </tr>
31459          <tr class="entries_header">
31460            <th class="th_details" colspan="6">Details</th>
31461          </tr>
31462          <tr class="entry_cont">
31463            <td class="entry_details" colspan="6">
31464              <p>The lens distortion correction block attempts to improve image quality by fixing
31465radial,<wbr/> tangential,<wbr/> or other geometric aberrations in the camera device's optics.<wbr/>  If
31466available,<wbr/> the <a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a> field documents the lens's distortion parameters.<wbr/></p>
31467<p>OFF means no distortion correction is done.<wbr/></p>
31468<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined distortion correction will be
31469applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device will use the highest-quality
31470correction algorithms,<wbr/> even if it slows down capture rate.<wbr/> FAST means the camera device
31471will not slow down capture rate when applying correction.<wbr/> FAST may be the same as OFF if
31472any correction at all would slow down capture rate.<wbr/>  Every output stream will have a
31473similar amount of enhancement applied.<wbr/></p>
31474<p>The correction only applies to processed outputs such as YUV,<wbr/> Y8,<wbr/> JPEG,<wbr/> or DEPTH16; it is
31475not applied to any RAW output.<wbr/></p>
31476<p>This control will be on by default on devices that support this control.<wbr/> Applications
31477disabling distortion correction need to pay extra attention with the coordinate system of
31478metering regions,<wbr/> crop region,<wbr/> and face rectangles.<wbr/> When distortion correction is OFF,<wbr/>
31479metadata coordinates follow the coordinate system of
31480<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
31481coordinates 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
31482camera device will map these metadata fields to match the corrected image produced by the
31483camera device,<wbr/> for both capture requests and results.<wbr/>  However,<wbr/> this mapping is not very
31484precise,<wbr/> since rectangles do not generally map to rectangles when corrected.<wbr/>  Only linear
31485scaling between the active array and precorrection active array coordinates is
31486performed.<wbr/> Applications that require precise correction of metadata need to undo that
31487linear scaling,<wbr/> and apply a more complete correction that takes into the account the app's
31488own requirements.<wbr/></p>
31489<p>The full list of metadata that is affected in this way by distortion correction is:</p>
31490<ul>
31491<li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li>
31492<li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li>
31493<li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li>
31494<li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li>
31495<li><a href="#dynamic_android.statistics.faces">android.<wbr/>statistics.<wbr/>faces</a></li>
31496</ul>
31497            </td>
31498          </tr>
31499
31500
31501          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
31502           <!-- end of entry -->
31503
31504
31505
31506      <!-- end of kind -->
31507      </tbody>
31508      <tr><td colspan="7" class="kind">static</td></tr>
31509
31510      <thead class="entries_header">
31511        <tr>
31512          <th class="th_name">Property Name</th>
31513          <th class="th_type">Type</th>
31514          <th class="th_description">Description</th>
31515          <th class="th_units">Units</th>
31516          <th class="th_range">Range</th>
31517          <th class="th_hal_version">Initial HIDL HAL version</th>
31518          <th class="th_tags">Tags</th>
31519        </tr>
31520      </thead>
31521
31522      <tbody>
31523
31524
31525
31526
31527
31528
31529
31530
31531
31532
31533          <tr class="entry" id="static_android.distortionCorrection.availableModes">
31534            <td class="entry_name
31535             " rowspan="5">
31536              android.<wbr/>distortion<wbr/>Correction.<wbr/>available<wbr/>Modes
31537            </td>
31538            <td class="entry_type">
31539                <span class="entry_type_name">byte</span>
31540                <span class="entry_type_container">x</span>
31541
31542                <span class="entry_type_array">
31543                  n
31544                </span>
31545              <span class="entry_type_visibility"> [public as enumList]</span>
31546
31547
31548
31549
31550                <div class="entry_type_notes">list of enums</div>
31551
31552
31553            </td> <!-- entry_type -->
31554
31555            <td class="entry_description">
31556              <p>List of distortion correction modes for <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> that are
31557supported by this camera device.<wbr/></p>
31558            </td>
31559
31560            <td class="entry_units">
31561            </td>
31562
31563            <td class="entry_range">
31564              <p>Any value listed in <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a></p>
31565            </td>
31566
31567            <td class="entry_hal_version">
31568              <p>3.<wbr/>3</p>
31569            </td>
31570
31571            <td class="entry_tags">
31572              <ul class="entry_tags">
31573                  <li><a href="#tag_V1">V1</a></li>
31574                  <li><a href="#tag_REPROC">REPROC</a></li>
31575              </ul>
31576            </td>
31577
31578          </tr>
31579          <tr class="entries_header">
31580            <th class="th_details" colspan="6">Details</th>
31581          </tr>
31582          <tr class="entry_cont">
31583            <td class="entry_details" colspan="6">
31584              <p>No device is required to support this API; such devices will always list only 'OFF'.<wbr/>
31585All devices that support this API will list both FAST and HIGH_<wbr/>QUALITY.<wbr/></p>
31586            </td>
31587          </tr>
31588
31589          <tr class="entries_header">
31590            <th class="th_details" colspan="6">HAL Implementation Details</th>
31591          </tr>
31592          <tr class="entry_cont">
31593            <td class="entry_details" colspan="6">
31594              <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if distortion correction is available
31595on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
31596That is,<wbr/> if the highest quality implementation on the camera device does not slow down
31597capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
31598            </td>
31599          </tr>
31600
31601          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
31602           <!-- end of entry -->
31603
31604
31605
31606      <!-- end of kind -->
31607      </tbody>
31608      <tr><td colspan="7" class="kind">dynamic</td></tr>
31609
31610      <thead class="entries_header">
31611        <tr>
31612          <th class="th_name">Property Name</th>
31613          <th class="th_type">Type</th>
31614          <th class="th_description">Description</th>
31615          <th class="th_units">Units</th>
31616          <th class="th_range">Range</th>
31617          <th class="th_hal_version">Initial HIDL HAL version</th>
31618          <th class="th_tags">Tags</th>
31619        </tr>
31620      </thead>
31621
31622      <tbody>
31623
31624
31625
31626
31627
31628
31629
31630
31631
31632
31633          <tr class="entry" id="dynamic_android.distortionCorrection.mode">
31634            <td class="entry_name
31635             " rowspan="3">
31636              android.<wbr/>distortion<wbr/>Correction.<wbr/>mode
31637            </td>
31638            <td class="entry_type">
31639                <span class="entry_type_name entry_type_name_enum">byte</span>
31640
31641              <span class="entry_type_visibility"> [public]</span>
31642
31643
31644
31645
31646
31647                <ul class="entry_type_enum">
31648                  <li>
31649                    <span class="entry_type_enum_name">OFF (v3.3)</span>
31650                    <span class="entry_type_enum_notes"><p>No distortion correction is applied.<wbr/></p></span>
31651                  </li>
31652                  <li>
31653                    <span class="entry_type_enum_name">FAST (v3.3)</span>
31654                    <span class="entry_type_enum_notes"><p>Lens distortion correction is applied without reducing frame rate
31655relative to sensor output.<wbr/> It may be the same as OFF if distortion correction would
31656reduce frame rate relative to sensor.<wbr/></p></span>
31657                  </li>
31658                  <li>
31659                    <span class="entry_type_enum_name">HIGH_QUALITY (v3.3)</span>
31660                    <span class="entry_type_enum_notes"><p>High-quality distortion correction is applied,<wbr/> at the cost of
31661possibly reduced frame rate relative to sensor output.<wbr/></p></span>
31662                  </li>
31663                </ul>
31664
31665            </td> <!-- entry_type -->
31666
31667            <td class="entry_description">
31668              <p>Mode of operation for the lens distortion correction block.<wbr/></p>
31669            </td>
31670
31671            <td class="entry_units">
31672            </td>
31673
31674            <td class="entry_range">
31675              <p><a href="#static_android.distortionCorrection.availableModes">android.<wbr/>distortion<wbr/>Correction.<wbr/>available<wbr/>Modes</a></p>
31676            </td>
31677
31678            <td class="entry_hal_version">
31679              <p>3.<wbr/>3</p>
31680            </td>
31681
31682            <td class="entry_tags">
31683            </td>
31684
31685          </tr>
31686          <tr class="entries_header">
31687            <th class="th_details" colspan="6">Details</th>
31688          </tr>
31689          <tr class="entry_cont">
31690            <td class="entry_details" colspan="6">
31691              <p>The lens distortion correction block attempts to improve image quality by fixing
31692radial,<wbr/> tangential,<wbr/> or other geometric aberrations in the camera device's optics.<wbr/>  If
31693available,<wbr/> the <a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a> field documents the lens's distortion parameters.<wbr/></p>
31694<p>OFF means no distortion correction is done.<wbr/></p>
31695<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined distortion correction will be
31696applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device will use the highest-quality
31697correction algorithms,<wbr/> even if it slows down capture rate.<wbr/> FAST means the camera device
31698will not slow down capture rate when applying correction.<wbr/> FAST may be the same as OFF if
31699any correction at all would slow down capture rate.<wbr/>  Every output stream will have a
31700similar amount of enhancement applied.<wbr/></p>
31701<p>The correction only applies to processed outputs such as YUV,<wbr/> Y8,<wbr/> JPEG,<wbr/> or DEPTH16; it is
31702not applied to any RAW output.<wbr/></p>
31703<p>This control will be on by default on devices that support this control.<wbr/> Applications
31704disabling distortion correction need to pay extra attention with the coordinate system of
31705metering regions,<wbr/> crop region,<wbr/> and face rectangles.<wbr/> When distortion correction is OFF,<wbr/>
31706metadata coordinates follow the coordinate system of
31707<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
31708coordinates 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
31709camera device will map these metadata fields to match the corrected image produced by the
31710camera device,<wbr/> for both capture requests and results.<wbr/>  However,<wbr/> this mapping is not very
31711precise,<wbr/> since rectangles do not generally map to rectangles when corrected.<wbr/>  Only linear
31712scaling between the active array and precorrection active array coordinates is
31713performed.<wbr/> Applications that require precise correction of metadata need to undo that
31714linear scaling,<wbr/> and apply a more complete correction that takes into the account the app's
31715own requirements.<wbr/></p>
31716<p>The full list of metadata that is affected in this way by distortion correction is:</p>
31717<ul>
31718<li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li>
31719<li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li>
31720<li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li>
31721<li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li>
31722<li><a href="#dynamic_android.statistics.faces">android.<wbr/>statistics.<wbr/>faces</a></li>
31723</ul>
31724            </td>
31725          </tr>
31726
31727
31728          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
31729           <!-- end of entry -->
31730
31731
31732
31733      <!-- end of kind -->
31734      </tbody>
31735
31736  <!-- end of section -->
31737  <tr><td colspan="7" id="section_heic" class="section">heic</td></tr>
31738
31739
31740      <tr><td colspan="7" class="kind">static</td></tr>
31741
31742      <thead class="entries_header">
31743        <tr>
31744          <th class="th_name">Property Name</th>
31745          <th class="th_type">Type</th>
31746          <th class="th_description">Description</th>
31747          <th class="th_units">Units</th>
31748          <th class="th_range">Range</th>
31749          <th class="th_hal_version">Initial HIDL HAL version</th>
31750          <th class="th_tags">Tags</th>
31751        </tr>
31752      </thead>
31753
31754      <tbody>
31755
31756
31757
31758
31759
31760
31761
31762
31763
31764
31765
31766
31767          <tr class="entry" id="static_android.heic.info.supported">
31768            <td class="entry_name
31769             " rowspan="3">
31770              android.<wbr/>heic.<wbr/>info.<wbr/>supported
31771            </td>
31772            <td class="entry_type">
31773                <span class="entry_type_name entry_type_name_enum">byte</span>
31774
31775              <span class="entry_type_visibility"> [system as boolean]</span>
31776
31777
31778              <span class="entry_type_hwlevel">[limited] </span>
31779
31780
31781
31782                <ul class="entry_type_enum">
31783                  <li>
31784                    <span class="entry_type_enum_name">FALSE (v3.4)</span>
31785                  </li>
31786                  <li>
31787                    <span class="entry_type_enum_name">TRUE (v3.4)</span>
31788                  </li>
31789                </ul>
31790
31791            </td> <!-- entry_type -->
31792
31793            <td class="entry_description">
31794              <p>Whether this camera device can support identical set of stream combinations
31795involving HEIC image format,<wbr/> compared to the
31796<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">table of combinations</a>
31797involving JPEG image format required for the device's hardware level and capabilities.<wbr/></p>
31798            </td>
31799
31800            <td class="entry_units">
31801            </td>
31802
31803            <td class="entry_range">
31804            </td>
31805
31806            <td class="entry_hal_version">
31807              <p>3.<wbr/>4</p>
31808            </td>
31809
31810            <td class="entry_tags">
31811              <ul class="entry_tags">
31812                  <li><a href="#tag_HEIC">HEIC</a></li>
31813              </ul>
31814            </td>
31815
31816          </tr>
31817          <tr class="entries_header">
31818            <th class="th_details" colspan="6">Details</th>
31819          </tr>
31820          <tr class="entry_cont">
31821            <td class="entry_details" colspan="6">
31822              <p>All the static,<wbr/> control and dynamic metadata tags related to JPEG apply to HEIC formats
31823as 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
31824used to control the orientation and quality of the HEIC image.<wbr/> Configuring JPEG and
31825HEIC streams at the same time is not supported.<wbr/></p>
31826<p>If a camera device supports HEIC format (ISO/<wbr/>IEC 23008-12),<wbr/> not only does it
31827support the existing mandatory stream
31828<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">combinations</a>
31829required for the device's hardware level and capabilities,<wbr/> it also supports swapping
31830each JPEG stream with HEIC stream in all guaranteed combinations.<wbr/></p>
31831<p>For every HEIC stream configured by the application,<wbr/> the camera framework sets up 2
31832internal streams with camera HAL:</p>
31833<ul>
31834<li>A YUV_<wbr/>420_<wbr/>888 or IMPLEMENTATION_<wbr/>DEFINED HAL stream as input to HEIC or HEVC encoder.<wbr/></li>
31835<li>A BLOB stream with JPEG_<wbr/>APPS_<wbr/>SEGMENTS dataspace to extract application markers
31836including EXIF and thumbnail to be saved in HEIF container.<wbr/></li>
31837</ul>
31838<p>A camera device can output HEIC format to the application if and only if:</p>
31839<ul>
31840<li>The system contains a HEIC or HEVC encoder with constant quality mode,<wbr/> and</li>
31841<li>This tag is set to TRUE,<wbr/> meaning that camera HAL supports replacing JPEG streams in
31842all mandatory stream combinations with a [YUV_<wbr/>420_<wbr/>888/<wbr/>IMPLEMENTATION_<wbr/>DEFINED stream +
31843JPEG_<wbr/>APPS_<wbr/>SEGMENT BLOB stream] combo.<wbr/></li>
31844</ul>
31845<p>As an example,<wbr/> if the camera device's hardware level is LIMITED,<wbr/> and it supports HEIC,<wbr/>
31846in addition to the required stream combinations,<wbr/> HAL must support below stream
31847combinations as well:</p>
31848<ul>
31849<li>IMPLEMENTATION_<wbr/>DEFINED/<wbr/>YUV_<wbr/>420_<wbr/>888 MAXIMUM + JPEG_<wbr/>SEGMENTS_<wbr/>BLOB,<wbr/></li>
31850<li>PRIV PREVIEW + IMPLEMENTATION_<wbr/>DEFINED/<wbr/>YUV_<wbr/>420_<wbr/>888 MAXIMUM + JPEG_<wbr/>SEGMENTS_<wbr/>BLOB,<wbr/></li>
31851<li>YUV PREVIEW + IMPLEMENTATION_<wbr/>DEFINED/<wbr/>YUV_<wbr/>420_<wbr/>888 MAXIMUM + JPEG_<wbr/>SEGMENTS_<wbr/>BLOB,<wbr/></li>
31852<li>PRIV PREVIEW + YUV PREVIEW + IMPLEMENTATION_<wbr/>DEFINED/<wbr/>YUV_<wbr/>420_<wbr/>888 MAXIMUM +
31853JPEG_<wbr/>SEGMENTS_<wbr/>BLOB</li>
31854</ul>
31855<p>The selection logic between YUV_<wbr/>420_<wbr/>888 and IMPLEMENTATION_<wbr/>DEFINED for HAL internal
31856stream is as follows:</p>
31857<pre><code>if (HEIC encoder exists and supports the size) {
31858    use IMPLEMENTATION_<wbr/>DEFINED with GRALLOC_<wbr/>USAGE_<wbr/>HW_<wbr/>IMAGE_<wbr/>ENCODER usage flag;
31859} else {
31860    //<wbr/> HVC encoder exists
31861    if (size is less than framework predefined tile size) {
31862        use IMPLEMENTATINO_<wbr/>DEFINED with GRALLOC_<wbr/>USAGE_<wbr/>HW_<wbr/>VIDEO_<wbr/>ENCODER usage flag;
31863    } else {
31864        use YUV_<wbr/>420_<wbr/>888;
31865    }
31866}
31867</code></pre>
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          <tr class="entry" id="static_android.heic.info.maxJpegAppSegmentsCount">
31877            <td class="entry_name
31878             " rowspan="3">
31879              android.<wbr/>heic.<wbr/>info.<wbr/>max<wbr/>Jpeg<wbr/>App<wbr/>Segments<wbr/>Count
31880            </td>
31881            <td class="entry_type">
31882                <span class="entry_type_name">byte</span>
31883
31884              <span class="entry_type_visibility"> [system]</span>
31885
31886
31887              <span class="entry_type_hwlevel">[limited] </span>
31888
31889
31890
31891
31892            </td> <!-- entry_type -->
31893
31894            <td class="entry_description">
31895              <p>The maximum number of Jpeg APP segments supported by the camera HAL device.<wbr/></p>
31896            </td>
31897
31898            <td class="entry_units">
31899            </td>
31900
31901            <td class="entry_range">
31902            </td>
31903
31904            <td class="entry_hal_version">
31905              <p>3.<wbr/>4</p>
31906            </td>
31907
31908            <td class="entry_tags">
31909              <ul class="entry_tags">
31910                  <li><a href="#tag_HEIC">HEIC</a></li>
31911              </ul>
31912            </td>
31913
31914          </tr>
31915          <tr class="entries_header">
31916            <th class="th_details" colspan="6">Details</th>
31917          </tr>
31918          <tr class="entry_cont">
31919            <td class="entry_details" colspan="6">
31920              <p>The camera framework will use this value to derive the size of the BLOB buffer with
31921JPEG_<wbr/>APP_<wbr/>SEGMENTS dataspace,<wbr/> with each APP segment occupying at most 64K bytes.<wbr/> If the
31922value of this tag is n,<wbr/> the size of the framework allocated buffer will be:</p>
31923<pre><code>n * (2 + 0xFFFF) + sizeof(struct CameraBlob)
31924</code></pre>
31925<p>where 2 is number of bytes for APP marker,<wbr/> 0xFFFF is the maximum size per APP segment
31926(including segment size).<wbr/></p>
31927<p>The value of this tag must be at least 1,<wbr/> and APP1 marker (0xFFE1) segment must be the
31928first segment stored in the JPEG_<wbr/>APPS_<wbr/>SEGMENTS BLOB buffer.<wbr/> APP1 segment stores EXIF and
31929thumbnail.<wbr/></p>
31930<p>Since media encoder embeds the orientation in the metadata of the output image,<wbr/> to be
31931consistent between main image and thumbnail,<wbr/> camera HAL must not rotate the thumbnail
31932image data based on <a href="#controls_android.jpeg.orientation">android.<wbr/>jpeg.<wbr/>orientation</a>.<wbr/> The framework will write the orientation
31933into EXIF and HEIC container.<wbr/></p>
31934<p>APP1 segment is followed immediately by one or multiple APP2 segments,<wbr/> and APPn
31935segments.<wbr/> After the HAL fills and returns the JPEG_<wbr/>APP_<wbr/>SEGMENTS buffer,<wbr/> the camera
31936framework modifies the APP1 segment by filling in the EXIF tags that are related to
31937main image bitstream and the tags that can be derived from capture result metadata,<wbr/>
31938before saving them into the HEIC container.<wbr/></p>
31939<p>The value of this tag must not be more than 16.<wbr/></p>
31940            </td>
31941          </tr>
31942
31943
31944          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
31945           <!-- end of entry -->
31946
31947
31948
31949
31950
31951          <tr class="entry" id="static_android.heic.availableHeicStreamConfigurations">
31952            <td class="entry_name
31953             " rowspan="5">
31954              android.<wbr/>heic.<wbr/>available<wbr/>Heic<wbr/>Stream<wbr/>Configurations
31955            </td>
31956            <td class="entry_type">
31957                <span class="entry_type_name entry_type_name_enum">int32</span>
31958                <span class="entry_type_container">x</span>
31959
31960                <span class="entry_type_array">
31961                  n x 4
31962                </span>
31963              <span class="entry_type_visibility"> [ndk_public as streamConfiguration]</span>
31964
31965
31966              <span class="entry_type_hwlevel">[limited] </span>
31967
31968
31969
31970                <ul class="entry_type_enum">
31971                  <li>
31972                    <span class="entry_type_enum_name">OUTPUT (v3.4)</span>
31973                  </li>
31974                  <li>
31975                    <span class="entry_type_enum_name">INPUT (v3.4)</span>
31976                  </li>
31977                </ul>
31978
31979            </td> <!-- entry_type -->
31980
31981            <td class="entry_description">
31982              <p>The available HEIC (ISO/<wbr/>IEC 23008-12) stream
31983configurations that this camera device supports
31984(i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p>
31985            </td>
31986
31987            <td class="entry_units">
31988            </td>
31989
31990            <td class="entry_range">
31991            </td>
31992
31993            <td class="entry_hal_version">
31994              <p>3.<wbr/>4</p>
31995            </td>
31996
31997            <td class="entry_tags">
31998              <ul class="entry_tags">
31999                  <li><a href="#tag_HEIC">HEIC</a></li>
32000              </ul>
32001            </td>
32002
32003          </tr>
32004          <tr class="entries_header">
32005            <th class="th_details" colspan="6">Details</th>
32006          </tr>
32007          <tr class="entry_cont">
32008            <td class="entry_details" colspan="6">
32009              <p>The configurations are listed as <code>(format,<wbr/> width,<wbr/> height,<wbr/> input?)</code> tuples.<wbr/></p>
32010<p>If the camera device supports HEIC image format,<wbr/> it will support identical set of stream
32011combinations involving HEIC image format,<wbr/> compared to the combinations involving JPEG
32012image format as required by the device's hardware level and capabilities.<wbr/></p>
32013<p>All the static,<wbr/> control,<wbr/> and dynamic metadata tags related to JPEG apply to HEIC formats.<wbr/>
32014Configuring JPEG and HEIC streams at the same time is not supported.<wbr/></p>
32015            </td>
32016          </tr>
32017
32018          <tr class="entries_header">
32019            <th class="th_details" colspan="6">HAL Implementation Details</th>
32020          </tr>
32021          <tr class="entry_cont">
32022            <td class="entry_details" colspan="6">
32023              <p>These are output stream configurations for use with dataSpace HAL_<wbr/>DATASPACE_<wbr/>HEIF.<wbr/></p>
32024<p>Do not set this property directly.<wbr/> It is populated by camera framework and must not be
32025set by the HAL layer.<wbr/></p>
32026            </td>
32027          </tr>
32028
32029          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
32030           <!-- end of entry -->
32031
32032
32033          <tr class="entry" id="static_android.heic.availableHeicMinFrameDurations">
32034            <td class="entry_name
32035             " rowspan="5">
32036              android.<wbr/>heic.<wbr/>available<wbr/>Heic<wbr/>Min<wbr/>Frame<wbr/>Durations
32037            </td>
32038            <td class="entry_type">
32039                <span class="entry_type_name">int64</span>
32040                <span class="entry_type_container">x</span>
32041
32042                <span class="entry_type_array">
32043                  4 x n
32044                </span>
32045              <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
32046
32047
32048              <span class="entry_type_hwlevel">[limited] </span>
32049
32050
32051
32052
32053            </td> <!-- entry_type -->
32054
32055            <td class="entry_description">
32056              <p>This lists the minimum frame duration for each
32057format/<wbr/>size combination for HEIC output formats.<wbr/></p>
32058            </td>
32059
32060            <td class="entry_units">
32061              (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
32062            </td>
32063
32064            <td class="entry_range">
32065            </td>
32066
32067            <td class="entry_hal_version">
32068              <p>3.<wbr/>4</p>
32069            </td>
32070
32071            <td class="entry_tags">
32072              <ul class="entry_tags">
32073                  <li><a href="#tag_HEIC">HEIC</a></li>
32074              </ul>
32075            </td>
32076
32077          </tr>
32078          <tr class="entries_header">
32079            <th class="th_details" colspan="6">Details</th>
32080          </tr>
32081          <tr class="entry_cont">
32082            <td class="entry_details" colspan="6">
32083              <p>This should correspond to the frame duration when only that
32084stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode)
32085set to either OFF or FAST.<wbr/></p>
32086<p>When multiple streams are used in a request,<wbr/> the minimum frame
32087duration will be max(individual stream min durations).<wbr/></p>
32088<p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> and
32089<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for more details about
32090calculating the max frame rate.<wbr/></p>
32091            </td>
32092          </tr>
32093
32094          <tr class="entries_header">
32095            <th class="th_details" colspan="6">HAL Implementation Details</th>
32096          </tr>
32097          <tr class="entry_cont">
32098            <td class="entry_details" colspan="6">
32099              <p>Do not set this property directly.<wbr/> It is populated by camera framework and must not be
32100set by the HAL layer.<wbr/></p>
32101            </td>
32102          </tr>
32103
32104          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
32105           <!-- end of entry -->
32106
32107
32108          <tr class="entry" id="static_android.heic.availableHeicStallDurations">
32109            <td class="entry_name
32110             " rowspan="5">
32111              android.<wbr/>heic.<wbr/>available<wbr/>Heic<wbr/>Stall<wbr/>Durations
32112            </td>
32113            <td class="entry_type">
32114                <span class="entry_type_name">int64</span>
32115                <span class="entry_type_container">x</span>
32116
32117                <span class="entry_type_array">
32118                  4 x n
32119                </span>
32120              <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
32121
32122
32123              <span class="entry_type_hwlevel">[limited] </span>
32124
32125
32126
32127
32128            </td> <!-- entry_type -->
32129
32130            <td class="entry_description">
32131              <p>This lists the maximum stall duration for each
32132output format/<wbr/>size combination for HEIC streams.<wbr/></p>
32133            </td>
32134
32135            <td class="entry_units">
32136              (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
32137            </td>
32138
32139            <td class="entry_range">
32140            </td>
32141
32142            <td class="entry_hal_version">
32143              <p>3.<wbr/>4</p>
32144            </td>
32145
32146            <td class="entry_tags">
32147              <ul class="entry_tags">
32148                  <li><a href="#tag_HEIC">HEIC</a></li>
32149              </ul>
32150            </td>
32151
32152          </tr>
32153          <tr class="entries_header">
32154            <th class="th_details" colspan="6">Details</th>
32155          </tr>
32156          <tr class="entry_cont">
32157            <td class="entry_details" colspan="6">
32158              <p>A stall duration is how much extra time would get added
32159to the normal minimum frame duration for a repeating request
32160that has streams with non-zero stall.<wbr/></p>
32161<p>This functions similarly to
32162<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for HEIC
32163streams.<wbr/></p>
32164<p>All HEIC output stream formats may have a nonzero stall
32165duration.<wbr/></p>
32166            </td>
32167          </tr>
32168
32169          <tr class="entries_header">
32170            <th class="th_details" colspan="6">HAL Implementation Details</th>
32171          </tr>
32172          <tr class="entry_cont">
32173            <td class="entry_details" colspan="6">
32174              <p>Do not set this property directly.<wbr/> It is populated by camera framework and must not be
32175set by the HAL layer.<wbr/></p>
32176            </td>
32177          </tr>
32178
32179          <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
32180           <!-- end of entry -->
32181
32182
32183
32184      <!-- end of kind -->
32185      </tbody>
32186
32187  <!-- end of section -->
32188<!-- </namespace> -->
32189  </table>
32190
32191  <div class="tags" id="tag_index">
32192    <h2>Tags</h2>
32193    <ul>
32194      <li id="tag_BC">BC -
32195        Needed for backwards compatibility with old Java API
32196
32197        <ul class="tags_entries">
32198          <li><a href="#controls_android.control.aeAntibandingMode">android.control.aeAntibandingMode</a> (controls)</li>
32199          <li><a href="#controls_android.control.aeExposureCompensation">android.control.aeExposureCompensation</a> (controls)</li>
32200          <li><a href="#controls_android.control.aeLock">android.control.aeLock</a> (controls)</li>
32201          <li><a href="#controls_android.control.aeMode">android.control.aeMode</a> (controls)</li>
32202          <li><a href="#controls_android.control.aeRegions">android.control.aeRegions</a> (controls)</li>
32203          <li><a href="#controls_android.control.aeTargetFpsRange">android.control.aeTargetFpsRange</a> (controls)</li>
32204          <li><a href="#controls_android.control.aePrecaptureTrigger">android.control.aePrecaptureTrigger</a> (controls)</li>
32205          <li><a href="#controls_android.control.afMode">android.control.afMode</a> (controls)</li>
32206          <li><a href="#controls_android.control.afRegions">android.control.afRegions</a> (controls)</li>
32207          <li><a href="#controls_android.control.afTrigger">android.control.afTrigger</a> (controls)</li>
32208          <li><a href="#controls_android.control.awbLock">android.control.awbLock</a> (controls)</li>
32209          <li><a href="#controls_android.control.awbMode">android.control.awbMode</a> (controls)</li>
32210          <li><a href="#controls_android.control.awbRegions">android.control.awbRegions</a> (controls)</li>
32211          <li><a href="#controls_android.control.captureIntent">android.control.captureIntent</a> (controls)</li>
32212          <li><a href="#controls_android.control.effectMode">android.control.effectMode</a> (controls)</li>
32213          <li><a href="#controls_android.control.mode">android.control.mode</a> (controls)</li>
32214          <li><a href="#controls_android.control.sceneMode">android.control.sceneMode</a> (controls)</li>
32215          <li><a href="#controls_android.control.videoStabilizationMode">android.control.videoStabilizationMode</a> (controls)</li>
32216          <li><a href="#static_android.control.aeAvailableAntibandingModes">android.control.aeAvailableAntibandingModes</a> (static)</li>
32217          <li><a href="#static_android.control.aeAvailableModes">android.control.aeAvailableModes</a> (static)</li>
32218          <li><a href="#static_android.control.aeAvailableTargetFpsRanges">android.control.aeAvailableTargetFpsRanges</a> (static)</li>
32219          <li><a href="#static_android.control.aeCompensationRange">android.control.aeCompensationRange</a> (static)</li>
32220          <li><a href="#static_android.control.aeCompensationStep">android.control.aeCompensationStep</a> (static)</li>
32221          <li><a href="#static_android.control.afAvailableModes">android.control.afAvailableModes</a> (static)</li>
32222          <li><a href="#static_android.control.availableEffects">android.control.availableEffects</a> (static)</li>
32223          <li><a href="#static_android.control.availableSceneModes">android.control.availableSceneModes</a> (static)</li>
32224          <li><a href="#static_android.control.availableVideoStabilizationModes">android.control.availableVideoStabilizationModes</a> (static)</li>
32225          <li><a href="#static_android.control.awbAvailableModes">android.control.awbAvailableModes</a> (static)</li>
32226          <li><a href="#static_android.control.maxRegions">android.control.maxRegions</a> (static)</li>
32227          <li><a href="#static_android.control.sceneModeOverrides">android.control.sceneModeOverrides</a> (static)</li>
32228          <li><a href="#static_android.control.aeLockAvailable">android.control.aeLockAvailable</a> (static)</li>
32229          <li><a href="#static_android.control.awbLockAvailable">android.control.awbLockAvailable</a> (static)</li>
32230          <li><a href="#controls_android.flash.mode">android.flash.mode</a> (controls)</li>
32231          <li><a href="#static_android.flash.info.available">android.flash.info.available</a> (static)</li>
32232          <li><a href="#controls_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a> (controls)</li>
32233          <li><a href="#controls_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a> (controls)</li>
32234          <li><a href="#controls_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a> (controls)</li>
32235          <li><a href="#controls_android.jpeg.orientation">android.jpeg.orientation</a> (controls)</li>
32236          <li><a href="#controls_android.jpeg.quality">android.jpeg.quality</a> (controls)</li>
32237          <li><a href="#controls_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a> (controls)</li>
32238          <li><a href="#controls_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a> (controls)</li>
32239          <li><a href="#static_android.jpeg.availableThumbnailSizes">android.jpeg.availableThumbnailSizes</a> (static)</li>
32240          <li><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a> (controls)</li>
32241          <li><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a> (static)</li>
32242          <li><a href="#dynamic_android.lens.focusRange">android.lens.focusRange</a> (dynamic)</li>
32243          <li><a href="#static_android.request.maxNumOutputStreams">android.request.maxNumOutputStreams</a> (static)</li>
32244          <li><a href="#controls_android.scaler.cropRegion">android.scaler.cropRegion</a> (controls)</li>
32245          <li><a href="#static_android.scaler.availableFormats">android.scaler.availableFormats</a> (static)</li>
32246          <li><a href="#static_android.scaler.availableJpegMinDurations">android.scaler.availableJpegMinDurations</a> (static)</li>
32247          <li><a href="#static_android.scaler.availableJpegSizes">android.scaler.availableJpegSizes</a> (static)</li>
32248          <li><a href="#static_android.scaler.availableMaxDigitalZoom">android.scaler.availableMaxDigitalZoom</a> (static)</li>
32249          <li><a href="#static_android.scaler.availableProcessedMinDurations">android.scaler.availableProcessedMinDurations</a> (static)</li>
32250          <li><a href="#static_android.scaler.availableProcessedSizes">android.scaler.availableProcessedSizes</a> (static)</li>
32251          <li><a href="#static_android.scaler.availableRawMinDurations">android.scaler.availableRawMinDurations</a> (static)</li>
32252          <li><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a> (static)</li>
32253          <li><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a> (static)</li>
32254          <li><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a> (static)</li>
32255          <li><a href="#static_android.sensor.orientation">android.sensor.orientation</a> (static)</li>
32256          <li><a href="#dynamic_android.sensor.timestamp">android.sensor.timestamp</a> (dynamic)</li>
32257          <li><a href="#controls_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a> (controls)</li>
32258          <li><a href="#static_android.statistics.info.maxFaceCount">android.statistics.info.maxFaceCount</a> (static)</li>
32259          <li><a href="#dynamic_android.statistics.faceIds">android.statistics.faceIds</a> (dynamic)</li>
32260          <li><a href="#dynamic_android.statistics.faceLandmarks">android.statistics.faceLandmarks</a> (dynamic)</li>
32261          <li><a href="#dynamic_android.statistics.faceRectangles">android.statistics.faceRectangles</a> (dynamic)</li>
32262          <li><a href="#dynamic_android.statistics.faceScores">android.statistics.faceScores</a> (dynamic)</li>
32263          <li><a href="#dynamic_android.lens.focalLength">android.lens.focalLength</a> (dynamic)</li>
32264          <li><a href="#dynamic_android.lens.focusDistance">android.lens.focusDistance</a> (dynamic)</li>
32265        </ul>
32266      </li> <!-- tag_BC -->
32267      <li id="tag_V1">V1 -
32268        New features for first camera 2 release (API1)
32269
32270        <ul class="tags_entries">
32271          <li><a href="#static_android.colorCorrection.availableAberrationModes">android.colorCorrection.availableAberrationModes</a> (static)</li>
32272          <li><a href="#static_android.control.availableHighSpeedVideoConfigurations">android.control.availableHighSpeedVideoConfigurations</a> (static)</li>
32273          <li><a href="#controls_android.edge.mode">android.edge.mode</a> (controls)</li>
32274          <li><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a> (static)</li>
32275          <li><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a> (controls)</li>
32276          <li><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a> (static)</li>
32277          <li><a href="#controls_android.lens.aperture">android.lens.aperture</a> (controls)</li>
32278          <li><a href="#controls_android.lens.filterDensity">android.lens.filterDensity</a> (controls)</li>
32279          <li><a href="#controls_android.lens.focalLength">android.lens.focalLength</a> (controls)</li>
32280          <li><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a> (controls)</li>
32281          <li><a href="#controls_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a> (controls)</li>
32282          <li><a href="#static_android.lens.info.availableApertures">android.lens.info.availableApertures</a> (static)</li>
32283          <li><a href="#static_android.lens.info.availableFilterDensities">android.lens.info.availableFilterDensities</a> (static)</li>
32284          <li><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a> (static)</li>
32285          <li><a href="#static_android.lens.info.availableOpticalStabilization">android.lens.info.availableOpticalStabilization</a> (static)</li>
32286          <li><a href="#static_android.lens.info.minimumFocusDistance">android.lens.info.minimumFocusDistance</a> (static)</li>
32287          <li><a href="#static_android.lens.info.shadingMapSize">android.lens.info.shadingMapSize</a> (static)</li>
32288          <li><a href="#static_android.lens.info.focusDistanceCalibration">android.lens.info.focusDistanceCalibration</a> (static)</li>
32289          <li><a href="#dynamic_android.lens.state">android.lens.state</a> (dynamic)</li>
32290          <li><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a> (controls)</li>
32291          <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a> (static)</li>
32292          <li><a href="#controls_android.request.id">android.request.id</a> (controls)</li>
32293          <li><a href="#static_android.scaler.availableMinFrameDurations">android.scaler.availableMinFrameDurations</a> (static)</li>
32294          <li><a href="#static_android.scaler.availableStallDurations">android.scaler.availableStallDurations</a> (static)</li>
32295          <li><a href="#controls_android.sensor.exposureTime">android.sensor.exposureTime</a> (controls)</li>
32296          <li><a href="#controls_android.sensor.frameDuration">android.sensor.frameDuration</a> (controls)</li>
32297          <li><a href="#controls_android.sensor.sensitivity">android.sensor.sensitivity</a> (controls)</li>
32298          <li><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a> (static)</li>
32299          <li><a href="#static_android.sensor.info.exposureTimeRange">android.sensor.info.exposureTimeRange</a> (static)</li>
32300          <li><a href="#static_android.sensor.info.maxFrameDuration">android.sensor.info.maxFrameDuration</a> (static)</li>
32301          <li><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a> (static)</li>
32302          <li><a href="#static_android.sensor.info.timestampSource">android.sensor.info.timestampSource</a> (static)</li>
32303          <li><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a> (static)</li>
32304          <li><a href="#dynamic_android.sensor.rollingShutterSkew">android.sensor.rollingShutterSkew</a> (dynamic)</li>
32305          <li><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a> (controls)</li>
32306          <li><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a> (static)</li>
32307          <li><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a> (dynamic)</li>
32308          <li><a href="#dynamic_android.sync.frameNumber">android.sync.frameNumber</a> (dynamic)</li>
32309          <li><a href="#static_android.sync.maxLatency">android.sync.maxLatency</a> (static)</li>
32310          <li><a href="#static_android.distortionCorrection.availableModes">android.distortionCorrection.availableModes</a> (static)</li>
32311          <li><a href="#dynamic_android.edge.mode">android.edge.mode</a> (dynamic)</li>
32312          <li><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a> (dynamic)</li>
32313          <li><a href="#dynamic_android.lens.aperture">android.lens.aperture</a> (dynamic)</li>
32314          <li><a href="#dynamic_android.lens.filterDensity">android.lens.filterDensity</a> (dynamic)</li>
32315          <li><a href="#dynamic_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a> (dynamic)</li>
32316          <li><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a> (dynamic)</li>
32317        </ul>
32318      </li> <!-- tag_V1 -->
32319      <li id="tag_RAW">RAW -
32320        Needed for useful RAW image processing and DNG file support
32321
32322        <ul class="tags_entries">
32323          <li><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a> (controls)</li>
32324          <li><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a> (static)</li>
32325          <li><a href="#static_android.sensor.info.activeArraySize">android.sensor.info.activeArraySize</a> (static)</li>
32326          <li><a href="#static_android.sensor.info.colorFilterArrangement">android.sensor.info.colorFilterArrangement</a> (static)</li>
32327          <li><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a> (static)</li>
32328          <li><a href="#static_android.sensor.info.whiteLevel">android.sensor.info.whiteLevel</a> (static)</li>
32329          <li><a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.sensor.info.preCorrectionActiveArraySize</a> (static)</li>
32330          <li><a href="#static_android.sensor.referenceIlluminant1">android.sensor.referenceIlluminant1</a> (static)</li>
32331          <li><a href="#static_android.sensor.referenceIlluminant2">android.sensor.referenceIlluminant2</a> (static)</li>
32332          <li><a href="#static_android.sensor.calibrationTransform1">android.sensor.calibrationTransform1</a> (static)</li>
32333          <li><a href="#static_android.sensor.calibrationTransform2">android.sensor.calibrationTransform2</a> (static)</li>
32334          <li><a href="#static_android.sensor.colorTransform1">android.sensor.colorTransform1</a> (static)</li>
32335          <li><a href="#static_android.sensor.colorTransform2">android.sensor.colorTransform2</a> (static)</li>
32336          <li><a href="#static_android.sensor.forwardMatrix1">android.sensor.forwardMatrix1</a> (static)</li>
32337          <li><a href="#static_android.sensor.forwardMatrix2">android.sensor.forwardMatrix2</a> (static)</li>
32338          <li><a href="#static_android.sensor.blackLevelPattern">android.sensor.blackLevelPattern</a> (static)</li>
32339          <li><a href="#static_android.sensor.profileHueSatMapDimensions">android.sensor.profileHueSatMapDimensions</a> (static)</li>
32340          <li><a href="#dynamic_android.sensor.neutralColorPoint">android.sensor.neutralColorPoint</a> (dynamic)</li>
32341          <li><a href="#dynamic_android.sensor.noiseProfile">android.sensor.noiseProfile</a> (dynamic)</li>
32342          <li><a href="#dynamic_android.sensor.profileHueSatMap">android.sensor.profileHueSatMap</a> (dynamic)</li>
32343          <li><a href="#dynamic_android.sensor.profileToneCurve">android.sensor.profileToneCurve</a> (dynamic)</li>
32344          <li><a href="#dynamic_android.sensor.greenSplit">android.sensor.greenSplit</a> (dynamic)</li>
32345          <li><a href="#dynamic_android.sensor.dynamicBlackLevel">android.sensor.dynamicBlackLevel</a> (dynamic)</li>
32346          <li><a href="#dynamic_android.sensor.dynamicWhiteLevel">android.sensor.dynamicWhiteLevel</a> (dynamic)</li>
32347          <li><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a> (controls)</li>
32348          <li><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a> (static)</li>
32349          <li><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a> (dynamic)</li>
32350          <li><a href="#controls_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a> (controls)</li>
32351          <li><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a> (dynamic)</li>
32352        </ul>
32353      </li> <!-- tag_RAW -->
32354      <li id="tag_HAL2">HAL2 -
32355        Entry is only used by camera device legacy HAL 2.x
32356
32357        <ul class="tags_entries">
32358          <li><a href="#controls_android.request.inputStreams">android.request.inputStreams</a> (controls)</li>
32359          <li><a href="#controls_android.request.outputStreams">android.request.outputStreams</a> (controls)</li>
32360          <li><a href="#controls_android.request.type">android.request.type</a> (controls)</li>
32361          <li><a href="#static_android.request.maxNumReprocessStreams">android.request.maxNumReprocessStreams</a> (static)</li>
32362          <li><a href="#controls_android.blackLevel.lock">android.blackLevel.lock</a> (controls)</li>
32363        </ul>
32364      </li> <!-- tag_HAL2 -->
32365      <li id="tag_FULL">FULL -
32366        Entry is required for full hardware level devices, and optional for other hardware levels
32367
32368        <ul class="tags_entries">
32369          <li><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a> (static)</li>
32370        </ul>
32371      </li> <!-- tag_FULL -->
32372      <li id="tag_DEPTH">DEPTH -
32373        Entry is required for the depth capability.
32374
32375        <ul class="tags_entries">
32376          <li><a href="#static_android.lens.poseRotation">android.lens.poseRotation</a> (static)</li>
32377          <li><a href="#static_android.lens.poseTranslation">android.lens.poseTranslation</a> (static)</li>
32378          <li><a href="#static_android.lens.intrinsicCalibration">android.lens.intrinsicCalibration</a> (static)</li>
32379          <li><a href="#static_android.lens.radialDistortion">android.lens.radialDistortion</a> (static)</li>
32380          <li><a href="#static_android.lens.distortion">android.lens.distortion</a> (static)</li>
32381          <li><a href="#static_android.depth.maxDepthSamples">android.depth.maxDepthSamples</a> (static)</li>
32382          <li><a href="#static_android.depth.availableDepthStreamConfigurations">android.depth.availableDepthStreamConfigurations</a> (static)</li>
32383          <li><a href="#static_android.depth.availableDepthMinFrameDurations">android.depth.availableDepthMinFrameDurations</a> (static)</li>
32384          <li><a href="#static_android.depth.availableDepthStallDurations">android.depth.availableDepthStallDurations</a> (static)</li>
32385          <li><a href="#static_android.depth.availableDynamicDepthStreamConfigurations">android.depth.availableDynamicDepthStreamConfigurations</a> (static)</li>
32386          <li><a href="#static_android.depth.availableDynamicDepthMinFrameDurations">android.depth.availableDynamicDepthMinFrameDurations</a> (static)</li>
32387          <li><a href="#static_android.depth.availableDynamicDepthStallDurations">android.depth.availableDynamicDepthStallDurations</a> (static)</li>
32388        </ul>
32389      </li> <!-- tag_DEPTH -->
32390      <li id="tag_REPROC">REPROC -
32391        Entry is required for the YUV or PRIVATE reprocessing capability.
32392
32393        <ul class="tags_entries">
32394          <li><a href="#controls_android.edge.mode">android.edge.mode</a> (controls)</li>
32395          <li><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a> (static)</li>
32396          <li><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a> (controls)</li>
32397          <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a> (static)</li>
32398          <li><a href="#static_android.request.maxNumInputStreams">android.request.maxNumInputStreams</a> (static)</li>
32399          <li><a href="#static_android.scaler.availableInputOutputFormatsMap">android.scaler.availableInputOutputFormatsMap</a> (static)</li>
32400          <li><a href="#static_android.scaler.availableRecommendedInputOutputFormatsMap">android.scaler.availableRecommendedInputOutputFormatsMap</a> (static)</li>
32401          <li><a href="#controls_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a> (controls)</li>
32402          <li><a href="#static_android.reprocess.maxCaptureStall">android.reprocess.maxCaptureStall</a> (static)</li>
32403          <li><a href="#static_android.distortionCorrection.availableModes">android.distortionCorrection.availableModes</a> (static)</li>
32404          <li><a href="#dynamic_android.edge.mode">android.edge.mode</a> (dynamic)</li>
32405          <li><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a> (dynamic)</li>
32406        </ul>
32407      </li> <!-- tag_REPROC -->
32408      <li id="tag_LOGICALCAMERA">LOGICALCAMERA -
32409        Entry is required for logical multi-camera capability.
32410
32411        <ul class="tags_entries">
32412          <li><a href="#static_android.logicalMultiCamera.physicalIds">android.logicalMultiCamera.physicalIds</a> (static)</li>
32413          <li><a href="#static_android.logicalMultiCamera.sensorSyncType">android.logicalMultiCamera.sensorSyncType</a> (static)</li>
32414          <li><a href="#dynamic_android.logicalMultiCamera.activePhysicalId">android.logicalMultiCamera.activePhysicalId</a> (dynamic)</li>
32415        </ul>
32416      </li> <!-- tag_LOGICALCAMERA -->
32417      <li id="tag_HEIC">HEIC -
32418        Entry is required for devices with HEIC (High Efficiency Image Format) support.
32419
32420        <ul class="tags_entries">
32421          <li><a href="#static_android.heic.info.supported">android.heic.info.supported</a> (static)</li>
32422          <li><a href="#static_android.heic.info.maxJpegAppSegmentsCount">android.heic.info.maxJpegAppSegmentsCount</a> (static)</li>
32423          <li><a href="#static_android.heic.availableHeicStreamConfigurations">android.heic.availableHeicStreamConfigurations</a> (static)</li>
32424          <li><a href="#static_android.heic.availableHeicMinFrameDurations">android.heic.availableHeicMinFrameDurations</a> (static)</li>
32425          <li><a href="#static_android.heic.availableHeicStallDurations">android.heic.availableHeicStallDurations</a> (static)</li>
32426        </ul>
32427      </li> <!-- tag_HEIC -->
32428      <li id="tag_FUTURE">FUTURE -
32429        Entry is  under-specified and is not required for now. This is for book-keeping purpose,
32430        do not implement or use it, it may be revised for future.
32431
32432        <ul class="tags_entries">
32433          <li><a href="#controls_android.demosaic.mode">android.demosaic.mode</a> (controls)</li>
32434          <li><a href="#controls_android.edge.strength">android.edge.strength</a> (controls)</li>
32435          <li><a href="#controls_android.flash.firingPower">android.flash.firingPower</a> (controls)</li>
32436          <li><a href="#controls_android.flash.firingTime">android.flash.firingTime</a> (controls)</li>
32437          <li><a href="#static_android.flash.info.chargeDuration">android.flash.info.chargeDuration</a> (static)</li>
32438          <li><a href="#static_android.flash.colorTemperature">android.flash.colorTemperature</a> (static)</li>
32439          <li><a href="#static_android.flash.maxEnergy">android.flash.maxEnergy</a> (static)</li>
32440          <li><a href="#dynamic_android.jpeg.size">android.jpeg.size</a> (dynamic)</li>
32441          <li><a href="#controls_android.noiseReduction.strength">android.noiseReduction.strength</a> (controls)</li>
32442          <li><a href="#controls_android.request.metadataMode">android.request.metadataMode</a> (controls)</li>
32443          <li><a href="#static_android.sensor.baseGainFactor">android.sensor.baseGainFactor</a> (static)</li>
32444          <li><a href="#dynamic_android.sensor.temperature">android.sensor.temperature</a> (dynamic)</li>
32445          <li><a href="#controls_android.shading.strength">android.shading.strength</a> (controls)</li>
32446          <li><a href="#controls_android.statistics.histogramMode">android.statistics.histogramMode</a> (controls)</li>
32447          <li><a href="#controls_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a> (controls)</li>
32448          <li><a href="#static_android.statistics.info.histogramBucketCount">android.statistics.info.histogramBucketCount</a> (static)</li>
32449          <li><a href="#static_android.statistics.info.maxHistogramCount">android.statistics.info.maxHistogramCount</a> (static)</li>
32450          <li><a href="#static_android.statistics.info.maxSharpnessMapValue">android.statistics.info.maxSharpnessMapValue</a> (static)</li>
32451          <li><a href="#static_android.statistics.info.sharpnessMapSize">android.statistics.info.sharpnessMapSize</a> (static)</li>
32452          <li><a href="#dynamic_android.statistics.histogram">android.statistics.histogram</a> (dynamic)</li>
32453          <li><a href="#dynamic_android.statistics.sharpnessMap">android.statistics.sharpnessMap</a> (dynamic)</li>
32454        </ul>
32455      </li> <!-- tag_FUTURE -->
32456    </ul>
32457  </div>
32458
32459  [ <a href="#">top</a> ]
32460
32461</body>
32462</html>
32463